在2008年的上半年我在一家电子商务公司实习,
工作内容主要是web应用的开发和维护。
期间因为工作需要,学习了HTTP1.1和servlet3.0的规范
以及Java开发的编码规范和代码风格。
同时使用Ubuntu作为本地化开发环境。
2008年7月,签约现在的公司,
工作内容主要是短信的sp业务,
使用Java开发和维护短信网关。
因为工作需要,前期主要深入学习了java多线程编程和socket编程。
独立开发了一个基于TCP协议的类似于酷狗音乐盒的应用服务端。
在TCP协议的基础上实现了基于XML的应用协议,
提供音频文件信息的检索和下载功能和简单的负载均衡功能。
后期加入了在YAHOO音乐上搜集歌曲音频文件下载信息和本地文件索引检索的功能。
这两个功能主要使用HTTPClient和Lucence实现。
在工作的前两个月,发现Java的socket封装不能很好的满足我的需求
(当时自己刚刚开始学习socket编程,不知道有些socket编程的标准模式和Linux系统的网络实现)
因此购入了《TCP/IP详解》1-3卷,
把第一卷(协议)读了一遍,
经过历史一个月的调优终于拿出现在比较稳定的应用服务器。
因为发现性能优化和Linux系统本身有很大的关系。
因此购入《深入理解计算机系统》进行深入阅读,
这本书写得很精彩,把之前学过的操作系统,计算机体系结构和
汇编语言能够很好的联系起来。
同时受Joey说软件的一篇名为《Java语言学校的危害性》文章的影响,
对我当前的技术发展进行了反思,
决定以后作一个真正的程序员。
看到Ubuntu中文社区上一篇《推荐入门书籍》的文章
%E6%8E%A8%E8%8D%90%E5%85%A5%E9%97%A8%E4%B9%A6%E7%B1%8D&variant=zh-cn
并且和之前学习过Linux编程的同学取得了联系,从他那里取得了很多建议,更多的是鼓励。
10月份开始学习《C编程语言 第二版》,
(本人大一的时候曾经学过C语言,使用WinTC开发了一款DOS下的赛车游戏,
因此不是很吃力)
并且很高兴地收到了JavaEye网友的建议,把书后的习题基本上都作了一遍。
之后入手《Linux程序设计 第三版》,主要深入阅读感兴趣的章节,把里面的大多数代码都敲了一遍,熟悉了Linux的编程函数。
随即入手《Unix环境高级编程 第一版》,发现这本书讲的内容比《Linux程序设计第三版》深入很多,描述了很多为什么这样设计和实现的原理,和《深入理解计算机系统》相映成趣。
不过这本书读到一半就读不下去了。
因为自己本身的工作内容并不是Linux系统开发,因此这种学习进行下去只能是泛泛的,深入不下去。
因此我有一段时间一直感觉很苦恼。
后来,我想我就侧重Linux网络协议开发这一块吧。
我在网上下载了一些小的应用服务器的源码(源文件数不超过30个),
想看看生产环境的应用服务器是怎么设计和实现的。
不过很遗憾,自己一方面没有开发过规模比较大的c语言项目的经验,
对里面的网络协议的接口也不熟悉,因此读起来感觉头昏脑胀。
因此认为自己目前功力不够,暂时放弃。
当作拔剑茫然,心中天人相斗的时候。
我偶尔拿起了《TCP/IP详解》第三卷:TCP事务协议,HTTP,NNTP和UNIX域协议。
里面有从很简单的TCP服务器,客户端讲起,逐步实现复杂功能的例子。
不由眼前一亮,
并且《TCP/IP详解》和《Unix环境高级编程第一版》的作者都是我所尊敬的Richard Stevens先生,因此两本书很适合结合起来学习。
今天刚刚读完了《TCP/IP详解》第三卷的第一章T/TCP概述,
感觉到应该和大家一起来分享,
作为朋友和网友对我帮助的反馈,同时也向Richard Stevens先生表达我由衷的敬意。
在这里重复前人说过的一句话:兴趣是最好的老师。
阅读(2564) | 评论(1) | 转发(1) |