计协活动室的气氛还未完全散去,钱博士离开后,几个同学便围了过来。为首的是个戴眼镜的男生,镜片后的眼睛里闪着求知的光,他叫陈默,是计协里公认的学霸,尤其擅长算法。
林星石,刚才那道三数之和的题,你用的排序+双指针解法,为什么在移动指针的时候要跳过相同的元素?陈默的问题很直接,语气里带着一丝急切。
林星石笑了笑,走到黑板前,拿起粉笔在刚才的代码旁画了个简单的示意图。假设数组是[-1,-1,0,1,2],如果不跳过相同的元素,当固定-1时,左右指针可能会找到两个相同的组合[-1,0,1],他边画边解释,跳过相同元素可以确保每个组合都是唯一的,避免重复。
陈默盯着黑板上的示意图,眉头逐渐舒展,眼睛也亮了起来。原来如此!我之前总是在去重上出错,现在终于明白了。你这方法比我之前想的要简洁多了。他的声音里带着明显的佩服。
这时,一个身材高大、皮肤黝黑的男生挤了过来,他是赵阳,计协里的硬件狂人,平时最喜欢鼓捣各种电子设备。林哥,你以前是不是专门学过编程?赵阳的嗓门有点大,语气里满是好奇,我看你写代码的时候,手指在键盘上翻飞,跟弹钢琴似的,太熟练了!
林星石放下粉笔,转身看向赵阳,脸上带着温和的笑。也不算专门学过,就是平时喜欢编程,课余时间看了些相关的书籍和教程,他谦虚地说,然后自己多写多练,慢慢就熟练了。其实编程这东西,还是得多动手实践。
可你才大二啊,赵阳挠了挠头,一副不敢相信的样子,我大二的时候还在为c语言指针头疼呢,你都能解编程竞赛的压轴题了,太厉害了!
林星石拍了拍赵阳的肩膀,笑着说:其实也没什么,就是兴趣而已。你对硬件那么熟悉,要是让我去装电脑、修电路,我肯定不如你。大家只是各自擅长的领域不同罢了。
陈默在一旁点头附和:没错,赵阳可是我们计协的硬件大神,上次社团活动日,他一个人修好了五台旧电脑,厉害得很。
赵阳被夸得有点不好意思,咧嘴笑了起来:那都是小意思,比起林哥的编程技术,根本不算什么。对了林哥,以后编程上有什么问题,我能不能请教你?
当然可以,林星石爽快地答应,大家互相学习嘛。我刚来计协,还有很多东西要向你们请教呢。
陈默推了推眼镜,若有所思地说:其实我最近在研究动态规划,有几道题总是想不明白,等下能不能请你帮我看看?
没问题,林星石点头,我们可以一起讨论。
中午的食堂人声鼎沸,陈默和赵阳一人端着一份饭,林星石跟在后面,三人找了个靠窗的位置坐下。阳光透过玻璃窗洒在餐桌上,照得餐盘里的饭菜都泛着光。
林哥,你觉得以后的技术会怎么发展?赵阳咬了一口鸡腿,含糊不清地问,我总觉得现在这些网站都太死板了,点一下就要刷新一次,烦得很。
林星石把餐盘里的青菜拨到一边,夹起一块红烧肉:其实现在已经有一些新技术在酝酿了,比如web2.0和AJAx,这些技术会让互联网发生翻天覆地的变化。
web2.0?AJAx?陈默推了推眼镜,眼睛里满是好奇,这些是什么?听起来很高级的样子。
简单说,web2.0会让用户从被动的信息接收者变成主动的创造者,林星石放下筷子,用手比划着,比如现在的网站都是编辑写好内容给用户看,以后用户可以自己在网站上发布内容,就像写博客、发评论、分享照片这些。
赵阳的眼睛亮了起来:这个有意思!那以后岂不是人人都能在网上发表自己的作品了?
对,而且AJAx技术会让网页变得更流畅,林星石继续解释,就像你说的,现在点一下就要刷新整个页面,以后只需要更新需要改变的部分,页面不会整体刷新,用户体验会好很多。
这听起来像是变魔术啊!赵阳忍不住感叹,网页不刷新就能更新内容?这怎么做到的?
林星石笑了笑:原理其实不复杂,就是通过JavaScript异步请求服务器数据,然后局部更新页面内容。就像我们平时打电话,不需要挂断重拨就能继续通话一样。
陈默听得入神,连饭都忘了吃:那这种技术什么时候能普及?如果真的像你说的那样,用户体验确实会提升很多。
应该很快了,国外已经有网站开始尝试这种技术,林星石夹了一筷子米饭,我觉得最多一两年,国内就会有大动作。毕竟谁不想让自己的网站更好用呢?
下午的计协活动室比上午安静了许多,阳光斜斜地照进来,在地板上投下斑驳的光影。林星石走到角落的电脑前坐下,陈默和赵阳一左一右站在他身后,眼睛都盯着屏幕。
我昨天做了个简单的AJAx应用,林星石一边开机一边说,是一个模拟图书查询系统的原型,你们可以看看效果。
电脑启动后,林星石打开浏览器,输入本地地址,一个简洁的网页出现在屏幕上。页面中央是一个搜索框,下面是一排排图书的封面和简介。
你们试试在搜索框里输入书名,林星石把键盘往陈默那边推了推,随便输点什么。
陈默凑近屏幕,手指在键盘上敲了几个字母:《红楼梦》。几乎在他输入的同时,下面的图书列表就开始变化,相关的书籍实时显示出来,而整个页面却没有任何刷新。
这...这也太神奇了!赵阳瞪大了眼睛,忍不住伸手戳了戳屏幕,就像变魔术一样!页面都没动,内容就变了?
林星石笑着解释:这就是异步数据加载的魅力。用户在输入的时候,JavaScript会悄悄向服务器发送请求,获取匹配的数据,然后只更新需要改变的部分,页面其他内容保持不变。
陈默又试了几次,每次输入都能实时看到结果,他的眼睛越来越亮:这比传统的表单提交快太多了!用户体验简直不是一个级别的。
没错,林星石点头,而且这只是个开始。如果我们能用这种技术开发一个实用的网站,比如真正的图书管理系统,肯定能引起关注。
赵阳突然想起了什么,一拍大腿:对了!我听说钱博士最近在帮朋友找学生团队做项目,好像是给一个书店做管理系统。要是我们能拿下这个项目,既能练手又能赚点零花钱。
真的?陈默推了推眼镜,若有所思,书店管理系统确实是个不错的练手机会,如果能用上AJAx技术,肯定比传统的系统好用得多。
林星石的眼睛也亮了起来:这倒是个机会。我们可以先做个简单的原型,然后去找钱博士谈谈。要是能参与真实项目,比在教室里做题有意思多了。
就这么定了!赵阳兴奋地说,咱们三个组队,林哥负责技术,陈默负责算法,我...我可以负责硬件和测试!
陈默笑了:你负责测试?别把我们好不容易做好的系统给拆了就行。
嘿,你这是小看人!赵阳不服气地反驳,我对硬件的熟悉程度,可不比你差。
林星石看着两人斗嘴,嘴角不自觉地上扬。他知道,一个新的开始就在眼前。