第36章 开发压缩算法
新世纪网吧里,启航公司占用的包厢里,只剩下主机箱风扇嗡嗡的转动声,还有偶尔响起的几声脆咳。
白宇航把自己的黑色皮质笔记本摊开,放在键盘边,时不时看一眼,上面密密麻麻地画满了重生几个月来,他的思考和规划。
这三个月,除了挣生活费、上课、吃饭睡觉,就是不断思考,重生的他究竟能做些什么,无数次想过搜寻引擎、社交软体、电商平台、网路游戏,这些个词在脑袋里蹦过多少次了,可都不现实。
他盯著屏幕,手里没停,直接把伺服器500g的大硬碟切了一刀狠的。
“老六,400?有点偏了吧?”张健凑过来,看著屏幕上的分区操作,“你这400g全划给音乐站做缓存?万一系统服务哪天崩了,怕连个日誌空间都不够吧。”
“系统崩不了,除非硬碟物理坏道。”白宇航头也没回,手指在键盘上敲下一行指令,屏幕瞬间刷出一排绿色的字符,“而且这回咱们不用学校老师教的那套搭建web伺服器。”
“不用iis?”张庆恆正捧著本《asp动態网页设计》啃呢,闻言把书一合,“那用啥?咱们这可是正经商业网站,总不能用微软个人版pws吧?”
白宇航从光碟盒里抽出一张没有任何標籤的盘,插进光碟机,读取时的吱嘎声在安静的包厢里格外刺耳。
“用这个。”白宇航指了指屏幕上弹出的安装界面,“nginx,配php和mysql。”
三个陌生的单词把张健听愣了,他挠了挠已经好几天没洗的油头:“啥玩意?这东西我怎么都没见过?教科书上没写啊。”
“教科书上要是写了,咱们还玩什么玩?咱们那书里的东西,写在书上就已经过时了,又是审过多少次再版多少次的,老师想讲点新鲜的都难。”白宇航一边配置环境变量一边隨口解释,“nginx这是我在 icq找一俄罗斯哥们儿要的,还在测试阶段。你就把它当成是一个不怎么占內存、但是特別能抗揍的iis就行。微软那套iis加asp,那是给大户人家用的,矫情,访问的人一多,伺服器cpu直接飆到100%,搞不好还死机,就得疯狂增加伺服器资源。咱们这穷家小业的刚起步,得用这种抗造的。”
“那资料库呢?access不行吗?”张庆恆小声问了一句,他最近刚学会用access建表索引。
“access存个咱们班级通讯录还凑合。咱们这是要做全网音乐站,几万首甚至几十万首歌,要是用access,查一首歌的时间,够你吃半顿饭了。”白宇航调出mysql的黑底白字界面,“用sql server倒是行,但这玩意儿正版授权两千多块钱一个cpu核心。咱们现在有了mysql就没那个必要,哪有钱给比尔·盖茨送温暖?”
听到“两千块”一个 cpu的授权,屋里几个人都闭了嘴。现在的两千块,仍是巨款。
“这个mysql,瑞典人搞的,免费,开源。哪怕咱们以后有一千万用户,优化优化,它也能跑得动。”白宇航敲下最后一行配置代码,回车。
屏幕闪烁了一下,进入伺服器系统,原本那个熟悉的windows远程控制的窗口界面不见了,取而代之的是一行行跳动的命令行。
“这就……完事了?”张健看著那一片简陋得甚至有点寒酸的界面,有点不敢信,“连个图形界面都没有,这能行吗?”
“试试。”白宇航让张健把他和宛良皓刚测好的抓取脚本掛上去。
原本在iis环境下跑得磕磕绊绊、动不动就报错的脚本,在这个新环境下,就像是吃了泻药一样,进度条嗖嗖地往上涨。
“臥槽!”张健没忍住爆了句粗口,整个人差点贴到显示器上,“这速度?这php是个什么神仙语言?比asp快这么多?”
“不是语言快,是架构轻。”白宇航没多解释,他知道这套“黄金组合”在后世意味著什么。那是扛过光棍购物节、顶过春节抢票的钢铁长城,放在2000年对付这点流量,简直就是拿加特林打蚊子。
“行了,別在那感嘆了。老三,给你们都开了对应的管理员权限,以后歌曲排序別傻乎乎地手动排,出静態页面。我在资料库里写了个触发器,只要用户点击一次下载,热度栏位自动加一,网站初期的榜单每半小时自动刷新一次。”
张庆恆听得直点头,手里的烂笔头在本子上记得飞快。
伺服器这事儿刚顺手,白宇航眉头又皱了起来。他盯著自己机器的带宽监控图,那根红色的测试曲线已经顶到了天花板。
“个人电脑带宽管道还是太小了。”白宇航点了根烟,看著那根直线,“咱们用网吧的专线还这么慢,现在的家庭用户网速普遍都是56k猫拨號,咱们伺服器这边出口带宽独享,虽然够,但用户那边水管细。要是几千人同时下载,这400g的缓存就是个摆设,全都得卡死在传输上。”
“那咋整?咱们也不能去给用户家拉光钎,专线入户啊。”宛良皓摊手。
“拉不了光纤,就把东西变小。”白宇航把烟叼在嘴里嘟囔著,把椅子拉近了些,新建了一个c++源文件。
“变小?mp3已经是压缩格式了,再压不就成电子音了?听著跟滋哇乱叫似的。”张健是懂行的,音频压缩是有极限的。
“那是以前。”白宇航眼皮都没抬,双手放在键盘上,停顿了两秒。
脑子里,笔记本上那个直到2016年才会被谷歌发布的raisr算法逻辑,清晰地浮现出来。
当然,受限於现在的硬体水平,完全照搬肯定跑不动,得做减法,得根据实际情况自適应。
“看好了。”
“基本逻辑,我要把一个压缩文件断点成多个部分之后再压缩,这会极大减少文件大小。下载时的请求,也会同时將压缩后的多段文件同时下载,加快下载速度。”
键盘声骤然响起,密集得像暴雨打在铁皮房顶上。
白宇航没再说话,甚至连姿势都没变过。屏幕上那些复杂的数学函数,被拆解成一行行代码:双线性插值、哈希桶分类、残差学习……
张健起初还想看看逻辑,看了五分钟就放弃了,转头去看宛良皓,发现老四也是一脸“我是谁我在哪”的表情。
这已经不是在写代码了,这是在用代码解数学题。
两个小时。
包厢里谁也没敢出声,连喝水都小心翼翼。
直到白宇航敲下最后一个分號,重重地按了一下编译器的f5编译代码。
“零报错,零警告。通了!”
白宇航长出了一口气,把已经烧到过滤嘴的菸头按灭,感觉手指头都在发烫。
“拿首歌试试。”
张健赶紧找了个刚才下载的《谢谢你的爱1999》,文件大小4.5mb。
拖进程序,运行。
进度条一闪而过。
生成新文件:1.1mb。
“压了一多半还多?”张健嗓子有点发乾,“这还能听吗?”
“在线放放,指定没问题。下载转码后重新拼接,恢復原来大小,在线听也並不影响质量,只会更快。”
音箱里传出谢霆锋那標誌性的嗓音,吉他扫弦的声音清脆,鼓点沉稳,跟原版高码率相比,听不出区別。
包厢里死一般的寂静。
过了好半天,宛良皓才结结巴巴地问:“老六……你这脑子里装的到底是啥?这算法……也是那个俄罗斯哥们儿教你的?”
白宇航揉了揉发酸的脖子,站起来活动了一下筋骨,没接这个茬,只是指了指屏幕:“把这个算法封装进下载和在线播放模块。用户点击下载的时候,伺服器实时转码。这样,原本能供一个人下载的带宽,现在能供四五个人用,网站独享的带宽,可以支撑上万人同时下载和访问。”
张健看著那个只有六兆的算法核心文件,眼神像是在看个怪物,最后憋出一句:“你这哪是写代码,你这是在咱们这根细网线上,硬生生给扩成了八车道。老六,你这一手要是拿出去卖,估计比一整个京城牛逼软体公司都值钱。”
“卖什么卖,留著自己下蛋。”白宇航拿起桌上已经凉透的盒饭,扒拉了两口,“赶紧干活,有了这个,我看全网的音乐站,拿什么跟咱们拼速度。”
白宇航把自己的黑色皮质笔记本摊开,放在键盘边,时不时看一眼,上面密密麻麻地画满了重生几个月来,他的思考和规划。
这三个月,除了挣生活费、上课、吃饭睡觉,就是不断思考,重生的他究竟能做些什么,无数次想过搜寻引擎、社交软体、电商平台、网路游戏,这些个词在脑袋里蹦过多少次了,可都不现实。
他盯著屏幕,手里没停,直接把伺服器500g的大硬碟切了一刀狠的。
“老六,400?有点偏了吧?”张健凑过来,看著屏幕上的分区操作,“你这400g全划给音乐站做缓存?万一系统服务哪天崩了,怕连个日誌空间都不够吧。”
“系统崩不了,除非硬碟物理坏道。”白宇航头也没回,手指在键盘上敲下一行指令,屏幕瞬间刷出一排绿色的字符,“而且这回咱们不用学校老师教的那套搭建web伺服器。”
“不用iis?”张庆恆正捧著本《asp动態网页设计》啃呢,闻言把书一合,“那用啥?咱们这可是正经商业网站,总不能用微软个人版pws吧?”
白宇航从光碟盒里抽出一张没有任何標籤的盘,插进光碟机,读取时的吱嘎声在安静的包厢里格外刺耳。
“用这个。”白宇航指了指屏幕上弹出的安装界面,“nginx,配php和mysql。”
三个陌生的单词把张健听愣了,他挠了挠已经好几天没洗的油头:“啥玩意?这东西我怎么都没见过?教科书上没写啊。”
“教科书上要是写了,咱们还玩什么玩?咱们那书里的东西,写在书上就已经过时了,又是审过多少次再版多少次的,老师想讲点新鲜的都难。”白宇航一边配置环境变量一边隨口解释,“nginx这是我在 icq找一俄罗斯哥们儿要的,还在测试阶段。你就把它当成是一个不怎么占內存、但是特別能抗揍的iis就行。微软那套iis加asp,那是给大户人家用的,矫情,访问的人一多,伺服器cpu直接飆到100%,搞不好还死机,就得疯狂增加伺服器资源。咱们这穷家小业的刚起步,得用这种抗造的。”
“那资料库呢?access不行吗?”张庆恆小声问了一句,他最近刚学会用access建表索引。
“access存个咱们班级通讯录还凑合。咱们这是要做全网音乐站,几万首甚至几十万首歌,要是用access,查一首歌的时间,够你吃半顿饭了。”白宇航调出mysql的黑底白字界面,“用sql server倒是行,但这玩意儿正版授权两千多块钱一个cpu核心。咱们现在有了mysql就没那个必要,哪有钱给比尔·盖茨送温暖?”
听到“两千块”一个 cpu的授权,屋里几个人都闭了嘴。现在的两千块,仍是巨款。
“这个mysql,瑞典人搞的,免费,开源。哪怕咱们以后有一千万用户,优化优化,它也能跑得动。”白宇航敲下最后一行配置代码,回车。
屏幕闪烁了一下,进入伺服器系统,原本那个熟悉的windows远程控制的窗口界面不见了,取而代之的是一行行跳动的命令行。
“这就……完事了?”张健看著那一片简陋得甚至有点寒酸的界面,有点不敢信,“连个图形界面都没有,这能行吗?”
“试试。”白宇航让张健把他和宛良皓刚测好的抓取脚本掛上去。
原本在iis环境下跑得磕磕绊绊、动不动就报错的脚本,在这个新环境下,就像是吃了泻药一样,进度条嗖嗖地往上涨。
“臥槽!”张健没忍住爆了句粗口,整个人差点贴到显示器上,“这速度?这php是个什么神仙语言?比asp快这么多?”
“不是语言快,是架构轻。”白宇航没多解释,他知道这套“黄金组合”在后世意味著什么。那是扛过光棍购物节、顶过春节抢票的钢铁长城,放在2000年对付这点流量,简直就是拿加特林打蚊子。
“行了,別在那感嘆了。老三,给你们都开了对应的管理员权限,以后歌曲排序別傻乎乎地手动排,出静態页面。我在资料库里写了个触发器,只要用户点击一次下载,热度栏位自动加一,网站初期的榜单每半小时自动刷新一次。”
张庆恆听得直点头,手里的烂笔头在本子上记得飞快。
伺服器这事儿刚顺手,白宇航眉头又皱了起来。他盯著自己机器的带宽监控图,那根红色的测试曲线已经顶到了天花板。
“个人电脑带宽管道还是太小了。”白宇航点了根烟,看著那根直线,“咱们用网吧的专线还这么慢,现在的家庭用户网速普遍都是56k猫拨號,咱们伺服器这边出口带宽独享,虽然够,但用户那边水管细。要是几千人同时下载,这400g的缓存就是个摆设,全都得卡死在传输上。”
“那咋整?咱们也不能去给用户家拉光钎,专线入户啊。”宛良皓摊手。
“拉不了光纤,就把东西变小。”白宇航把烟叼在嘴里嘟囔著,把椅子拉近了些,新建了一个c++源文件。
“变小?mp3已经是压缩格式了,再压不就成电子音了?听著跟滋哇乱叫似的。”张健是懂行的,音频压缩是有极限的。
“那是以前。”白宇航眼皮都没抬,双手放在键盘上,停顿了两秒。
脑子里,笔记本上那个直到2016年才会被谷歌发布的raisr算法逻辑,清晰地浮现出来。
当然,受限於现在的硬体水平,完全照搬肯定跑不动,得做减法,得根据实际情况自適应。
“看好了。”
“基本逻辑,我要把一个压缩文件断点成多个部分之后再压缩,这会极大减少文件大小。下载时的请求,也会同时將压缩后的多段文件同时下载,加快下载速度。”
键盘声骤然响起,密集得像暴雨打在铁皮房顶上。
白宇航没再说话,甚至连姿势都没变过。屏幕上那些复杂的数学函数,被拆解成一行行代码:双线性插值、哈希桶分类、残差学习……
张健起初还想看看逻辑,看了五分钟就放弃了,转头去看宛良皓,发现老四也是一脸“我是谁我在哪”的表情。
这已经不是在写代码了,这是在用代码解数学题。
两个小时。
包厢里谁也没敢出声,连喝水都小心翼翼。
直到白宇航敲下最后一个分號,重重地按了一下编译器的f5编译代码。
“零报错,零警告。通了!”
白宇航长出了一口气,把已经烧到过滤嘴的菸头按灭,感觉手指头都在发烫。
“拿首歌试试。”
张健赶紧找了个刚才下载的《谢谢你的爱1999》,文件大小4.5mb。
拖进程序,运行。
进度条一闪而过。
生成新文件:1.1mb。
“压了一多半还多?”张健嗓子有点发乾,“这还能听吗?”
“在线放放,指定没问题。下载转码后重新拼接,恢復原来大小,在线听也並不影响质量,只会更快。”
音箱里传出谢霆锋那標誌性的嗓音,吉他扫弦的声音清脆,鼓点沉稳,跟原版高码率相比,听不出区別。
包厢里死一般的寂静。
过了好半天,宛良皓才结结巴巴地问:“老六……你这脑子里装的到底是啥?这算法……也是那个俄罗斯哥们儿教你的?”
白宇航揉了揉发酸的脖子,站起来活动了一下筋骨,没接这个茬,只是指了指屏幕:“把这个算法封装进下载和在线播放模块。用户点击下载的时候,伺服器实时转码。这样,原本能供一个人下载的带宽,现在能供四五个人用,网站独享的带宽,可以支撑上万人同时下载和访问。”
张健看著那个只有六兆的算法核心文件,眼神像是在看个怪物,最后憋出一句:“你这哪是写代码,你这是在咱们这根细网线上,硬生生给扩成了八车道。老六,你这一手要是拿出去卖,估计比一整个京城牛逼软体公司都值钱。”
“卖什么卖,留著自己下蛋。”白宇航拿起桌上已经凉透的盒饭,扒拉了两口,“赶紧干活,有了这个,我看全网的音乐站,拿什么跟咱们拼速度。”