我在Salira的800天(2009.5.20~2011.7.29)-三.研究与学习篇
本博客(http://blog.csdn.net/livelylittlefish )贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!
Content
零.序
一.感谢篇
二.工作篇
三.研究与学习篇
1. 研究与学习回顾
(1) glibc代码研究
(2) STL代码研究
(3) boost::lexical, boost::multi_index_container子库的研究
(4) Linux kernel代码研究
(5) Nginx-1.0.4代码分析
(6) 数学、智能、思维相关问题研究与学习
2. 研究与学习结果
3. 研究与学习心得
四.总结篇
全文在线阅读
三.研究与学习篇
1. 研究与学习回顾
(1) glibc代码研究
主要是针对<程序员的自我修养-链接、装载与库>这本书所做的研究与学习,重点关注如下问题。
- 编译、链接过程
- 目标文件格式
- 可执行文件的装载过程
- 静态链接过程,符号解析与重定位
- 动态链接步骤与实现
- Linux共享库的创建、安装、版本
- 堆与栈、堆的分配算法
- 函数调用栈分析
- 运行库如何实现C++全局构造和析构
- ...
- POSIX线程库
关于该专题,笔者已经完成的文章如下,其他文章有待继续整理。
- <Is glibc or uclibc thread-safe>
- <glibc及其与gcc的关系简介>
- <gcc, glibc, binutils间的关系>
(2) STL代码研究
研究对象是SGISTL3.3,GCC-4.1.2自带的STL这两个版本。尤其对其中的List,heap,queue,deque,vector,set, map,rbtree等数据结构设计和实现有较深入的研究,并通过例子跟踪调试,并动手实现大部分的数据结构。
笔者希望能整理出关于该专题的文章,让自己不忘这些经典数据结构的设计技巧和实现方法。
(3) boost::lexical, boost::multi_index_container子库的研究
对boost的overview及boost::multi_index_container子库的原理、使用进行了比较深入的研究,可参考如下文章,共计14篇文章,且该专题也是“重构”的一个非常好的例子。
- Boost简介
- Boost库的命名规则
- Win32平台Boost的编译方法
- Linux平台Boost的编译方法
- Win32平台如何配置才能使用Boost、ACE、CppUnit
- Boost组件multi_index_container实例(1)
- Boost组件multi_index_container实例(续2)
- Boost组件multi_index_container实例(续3)
- Boost组件multi_index_container实例(续4)
- Boost组件multi_index_container实例(续5)
- Boost组件multi_index_container实例(后续)
- Boost组件multi_index_container组合查询实例(1)
- Boost组件multi_index_container组合查询实例(续2)
- Boost组件multi_index_container组合查询实例(续3)
该专题的研究主要是为了DePON1.5系统中QoS模块重构,其中对MIBTable数据结构的修改,先采用了boost::multi_index_container,于是研究了一下该子库的使用方法;由于该设计不能很好的反映table间的关系,故后来改用链表(模板)来表示数据集本来的物理关系。
(4) Linux kernel代码研究
主要关注以下几个方面,先从其基本原理,基本设计思想入手,然后逐个深入分析,并写成文章。这是笔者的目标。
- 内核数据结构
- 中断及中断处理
- 系统调用原理及其实现
- 进程管理、进程调度、进程地址空间
- IPC通信、内核同步方法
- 虚拟文件系统
- 内存管理
- 页面缓存和页回写
- 内核调试
关于LinuxKernel方面的研究,笔者希望继续坚持研究,坚持原创。这将是笔者未来3年内学习重点。笔者坚信,对内核的深刻理解一定会让很多工作事半功倍。
(5) Nginx-1.0.4代码分析
目前还处在Nginx的数据结构分析阶段,已经完成pool,List,array,queue,hash数据结构的分析,可参考如下文章。
- nginx-1.0.4源码分析—模块及其初始化
- nginx-1.0.4源码分析—内存池结构ngx_pool_t及内存管理
- nginx-1.0.4源码分析—数组结构ngx_array_t
- nginx-1.0.4源码分析—链表结构ngx_list_t
- nginx-1.0.4源码分析—队列结构ngx_queue_t
- nginx源码分析—hash结构ngx_hash_t(v1.0.4)
笔者研究Nginx的目的是希望能该中学习其作者优秀的设计方法和实现技巧,同时也为了给自己竖立一个短期目标,充实自己的业余时间。
(6) 数学、智能、思维相关问题研究与学习
如网络上流传甚广的砝码分盐问题等思维问题的思考、解决和总结。关于该问题,笔者从数学和计算机的角度对其进行了全面的分析和解决,因太长,故分节如下。
- 砝码分盐问题——从数学和计算机的角度分析(1)
- 砝码分盐问题——从数学和计算机的角度分析(2)
- 砝码分盐问题——从数学和计算机的角度分析(3)
- 砝码分盐问题——从数学和计算机的角度分析(4)
- 砝码分盐问题——从数学和计算机的角度分析(5)
- 砝码分盐问题——从数学和计算机的角度分析(6)
- 砝码分盐问题——从数学和计算机的角度分析(7)
- 砝码分盐问题——从数学和计算机的角度分析(8)
- 砝码分盐问题——从数学和计算机的角度分析(9)
- 砝码分盐问题——从数学和计算机的角度分析(10)
- 砝码分盐问题——从数学和计算机的角度分析(11)
合集请参考<砝码分盐问题——从数学和计算机的角度分析>(提供下载)。
其他问题,如奇阶幻方,笔者从数学的角度分析其特性、解的通用性等,其他诸如中国余数定理、12球问题、13球问题、64球问题等知识、智能开发相关的问题。另外,网络上有个经典的面试题目,即阅读论文A Sorting Algorithm forPolynomial Multiplication并实现其中算法,该论文讲述多项式乘积算法及其优化,笔者为其实现了前两个算法,并完成相关文档。
笔者对这类问题的研究,目的是为了让自己能够保持活跃的思维,以养成深入思考问题本质的习惯。
2. 研究与学习结果
写这一节,我想我是可以自豪一下的。
工作和学习中使用Onenote2007做笔记,总计1600页(大约三分之一是工作笔记)。其中部分内容发到了blog上,希望能继续整理、发布。除此之外,笔者在平时的工作和学习中,养成了随身携带笔记的习惯,将自己的学习和思考、idea、工作计划、to-do-list、心得等随时记下,共计13.3本。
3. 研究与学习心得
此处记录笔者研究开源代码的方法。
读源码,有一项重要的任务,就是搞懂数据结构,包括逻辑结构和物理结构,搞懂对象间的关系,搞懂数据的流向。关于这一点,看参考Nginx-1.0.4源码分析的相关文章hash结构ngx_hash_t(v1.0.4)等。
此外,如下几个问题也应该考虑。
- 了解业务流程,设计,和软件架构
- 了解层次关系,如类层次、类关系、类依赖、类继承等
- 了解数据结构及数据流向,对象内存结构(最好的方法是debug)
- 若有日志系统,打开日志功能(日志记录执行过程,分析方便)
- 还要会compile,debug,install等
- 学习其设计模式,设计方法,实现技巧
我在Salira的800天(2009.5.20~2011.7.29)-三.研究与学习篇相关推荐
- 我在Salira的800天(2009.5.20~2011.7.29)
我在Salira的800天(2009.5.20~2011.7.29) 一.感谢篇 Content 零.序 一.感谢篇 1. Salira 2. L 3. J 二.工作篇 三.研究与学习篇 四.总结篇 ...
- 2009年报业绩预告汇总(三
※ 2009年报业绩预告汇总(三) ※ 2009年报业绩预告汇总(二) ※ 2009年报业绩预告汇总(一) 401 002117 东港股份 预计2009年度归属于上市公司所有者的净利润增长幅度在3 ...
- 英伟达新核弹GPU:4nm制程800亿晶体管,20张即可承载全球互联网流量,全新Hopper架构太炸了...
丰色 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 他来了他来了,老黄带着英伟达的最新一代GPU来了. 之前大家猜的5nm错了,一手大惊喜,老黄直接上了台积电4nm工艺. 新卡取名H100,采 ...
- 推特800赞:图网络论文实现大合集,70多篇分门别类,从未如此全面 | 已过1k星...
方栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI △ 右边是不规则的 自从科学家发现,图神经网络 (GNN) 能处理不规则数据.攻克从前难解的问题,后每每出现图网络的资源,便广受人类的喜爱 ...
- 代码理解(2009.11.20)
上班一个多星期了,但是,还是让我"熟悉环境和业务",很少给我任务.于是,自己看项目代码.有很多不理解和陌生的地方,总结如下: 1.为什么不是Page_Load(),ProcessP ...
- 2009年20家年度失意大公司
"竞争的本质不是比谁强壮.比谁敏捷,更不是比谁聪明,而是比谁少一些愚蠢,少犯些错误".<第一财经周刊>评出中国内地市场2009年度表现不佳的大公司,它们都遭遇到了什么样 ...
- 2009 11月21日李兴华老师JAVA学习技术讲座
为推动JAVA发展,让广大JAVA爱好者了解掌握JAVA/J2EE体系并确立学习方向,在周六特别为大家准备<JAVA开发者之路>技术讲座. 主讲介绍: 李兴华:MLDN魔乐科技 -- JA ...
- 转载CSDN - 从程序员到HR——面试经验分享
CSDN博客一周热文推荐,为您总结回顾过去一周的CSDN博客热门文章,推荐优质的博客作者,分享精华文章和优质博客. [1] 谭海燕:北漂之惠普H3C面试经历 上一篇讲到了<北漂之百度面试> ...
- 奇葩公司按代码行数算工资,员工一个月提成2.6万遭开除
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 来源丨java那些事 之前,有这么一个帖子吸引了很多 ...
最新文章
- 【转】AVAudioPlayer播放音乐,最清晰明了
- vm虚拟机中 Kali更新后 不能自动适应窗口
- jsp中session 和 cookies区别
- mysql timestamp 自动更新_mysql timestamp自动更新
- 个人作业Alpha项目测试
- 利用云功能和API监视Google表格中的Cloud Dataprep作业状态
- 香农信息熵之可怜的小猪
- html-网页基本标签
- Android APP开发需求文档范本
- 《学习之道》第十七章保持平静
- 无人机寻迹要两个单片机吗_单片机寻迹小车程序
- Navicat导入向导说明
- PDF与word互相转换
- 中国的专利申请量再度超越美国和日本,连续11年居于全球第一
- 前端该不该转后端 .前端的路不知道怎么走,
- 软件功能性测试的21种故障模型
- python雪人_在Python乌龟画中通过箭头键使雪人移动
- webservice Xfier
- java计算机毕业设计民宿客栈管理系统源程序+mysql+系统+lw文档+远程调试
- beta阶段第六次scrum meeting