程序员与网站的爱恨情仇

二十一世纪互联网的兴起,网站开发技术蓬勃发展,门槛也随之降低。 程序员在自己电脑上比划着鼠标装了几个软件, 打开IDE, 新建一个页面, 点一下运行按扭,网站跑了起来。

需求来了,程序员用自己顺手的编程语言,一行一行的敲着代码,实现具有各式各样功能的页面, 并把它们相互链接在一起组成一个完整的网站。

程序员在服务器上装了一套和自己工作的电脑上一样的软件 , 把做好的网页文件传到服务器上, 把软件开起来,网站就可以使用了。

做网站真的就这么简单? 程序员有一丝兴奋 ,但更多的是疑惑。 程序员能做出网站来, 并让网站跑起来, 但是却不知道网站是怎么跑起来的? 他写的那些代码似乎没有实现过这样的功能。 程序员是个好奇心很强的人, 决定把其中的来来龙去脉探究清楚。

程序员从网上了解到, 用户在浏览器访问网站的一个页面, 就是向服务器发送一次http请求, 服务器如需要有接受http请求的功能, 就必须装一个网站服务器,这个东西也就是程序员在开发网站前装的那些个软件中的其中一个。 网站服务器接收到请求后,拿到请求的链接地址和请求头部等信息进行解析 , 并把解析结果发送给另一个软件 , 这个软件认识程序员写的页面和代码, 因此, 它可以根据服务器给的解析结果找到程序员写的页面和程序并执行, 把执行的结果返还给服务器,服务器再把这个结果通过网络传回浏览器, 浏览器解析这个结果 ,最终转换成用户眼中的网页。

程序员了解这整个流程以后,非常开心, 因为自己的逼格又高了。 但是没过多久, 程序员的好奇心毛病又犯了。 他想知道浏览器发送请求给服务器后, 服务器是如何知道浏览器发送了请求给它? 服务器又是怎么样解析这个请求的?

这个问题很复杂, 而程序员又是个打破沙锅问到底的性格, 非查个水落石出不可。 程序员看遍网上各种博客和资料, 但最终还是似懂非懂。 本来程序员的目的很简单, 就想知道服务器接收http请求时做了一些什么事情? 然而一来二去却被程序员挖出了很多闻所未闻的概念,如传输控制协议、三次握手、长连接、监听端口、网络五层架构、http首部、http方法、同步异步、高并发、反向代理等等, 每一个都是难啃的硬骨头, 程序员的心很累,无力感袭上心头,他仰天长叹:“这特么是招谁惹谁了, 找孩子他爸却把他祖宗十八代给挖了出来” 。 但是程序员天生就有一副不服输的精神, 再难啃的骨头都能嚼碎了咽下去, 他买了各种晦涩难懂的技术书籍,一个字一个字的读, 一句话一句话的理解,在经历漫长痛苦的学习过程之后, 最终将这些概念全盘了然于胸。 那一刻, 程序员感觉到自己由犹如历劫成仙一般,对于http与服务器的本质看的如此的透彻。 程序员达到了目的, 好奇心得到了满足。

之后,程序员觉得自己每天像个机器人一样重复的做着新建页面、修改页面、发布页面这样的工作, 太过于浮于表面, 他决定自己写一个http服务器, 并把自己平时做在页面中的功能做到自己写的http服务器里面,这样才能更接近于http请求本身,写出来的程序性能也更高。 不依赖apache,不依赖tomcat、不依赖php, 所有功能都自己实现,这才是真正高逼格的体现。

说干就干, 程序员开始裸写服务器。 监听端口、解析请求,并发处理、业务实现、结果响应, 程序员实现了一个简单服务器该有的每一个细节, 最终, 在不依赖任何运行环境的情况下让一个网站跑了起来。

程序员很满足, 当初困扰他的重重迷雾都已散去, 他站在高处, 所有景色尽收眼底, 他由衷的发出感叹:“好一片大好的山河啊! ”。 然而, 此时程序员的心中却响起了一个声音, 这个声音似乎在问程序员:“为了这一刻你整整花了三年的时间啊, 你没日没夜的看书学习敲代码,一点娱乐活动也没有,除了电脑就是书本,连做梦的时候都想着这些东西, 你不觉得你的人生活的很无趣吗? 你年纪也不小了, 为了这些代码连女朋友都不找,你对的起你父母赋予你作为一个男人的骄傲吗? 就为了满足自己所谓的好奇心而付出这么多, 真的值得吗?”

程序员坦然微笑:“为自己所爱的事物而付出, 我不惜一切”

我就是这个程序员

原文发布于微信公众号 - 带你撸出一手好代码(gh_afab56b37671)

原文发表时间:2017-03-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源项目

码云周刊 | 面试之前,或许该高效率地学点干货!

一周热门资讯回顾 1、程序员多大年纪算高龄,届时该何去何从? ? 随着年龄的增长,程序员会相对难以保持技能更新。许多人宁愿留在自己的舒适区,不冒任何风险。即使...

2936
来自专栏闰土大叔

vue菜鸟从业记:没准备好的面试,那叫尬聊

最近我的朋友王小闰参加了一场面试,在他填写简历表的时候,排在他前面的应聘者正在旁边邻桌接受来自面试官的检验。

1383
来自专栏章鱼的慢慢技术路

做游戏服务器端开发时的一些收获与总结

在此我的想法是在LeetCode上刷标签为哈希表(hashtable)、排序(sort)和搜索(search)的题型,同时还可以在HankerRank和Leet...

1391
来自专栏王亚昌的专栏

如何对产品运营情况进行监控

http://groups.google.com/group/dev4server/browse_thread/thread/8a86bb49a561f312

1132
来自专栏牛客网

运维工程师养成实录:从确立目标到收获offer

作为一名渣硕,找工作陆陆续续从今年的三月份开始断断续续的刷一些题,看基础到八月份的猛攻阶段,到此,算是得到了一个不错的收获,也拿到了几个offer,算是对自己的...

87413
来自专栏贾老师の博客

《帝国时代》中的网络编程

1514
来自专栏沈唁志

总结5条对学习Linux系统有帮助的经验心得

2094
来自专栏程序员互动联盟

为什么Linux这么受欢迎?

为什么要学习Linux? 为什么学Linux,每个人都有自己的理由: Linux是免费的不用花一分钱,能够节约大笔的成本; Linux是开源的,你可以根据自已的...

3817
来自专栏SDNLAB

网络功能虚拟化系列:NFV的开源软件包

我们在之前的系列里面讨论了OPNFV(网络功能虚拟化的网络平台),主要覆盖了有关虚拟架构和相应的支持NFV(网络功能虚拟化)组织管理。本文将主要介绍组建不同虚拟...

39911
来自专栏游戏杂谈

游戏版本更新小记

先大概介绍一下项目,卡牌游戏,主要面向女性用户。前期是走IOS市场,后来又移值到Android平台上,在几家大一点的Android渠道上进行运营。Android...

1101

扫码关注云+社区