本博客(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)-三.研究与学习篇相关推荐

  1. 我在Salira的800天(2009.5.20~2011.7.29)

     我在Salira的800天(2009.5.20~2011.7.29) 一.感谢篇 Content 零.序 一.感谢篇 1. Salira 2. L 3. J 二.工作篇 三.研究与学习篇 四.总结篇 ...

  2. 2009年报业绩预告汇总(三

    ※ 2009年报业绩预告汇总(三) ※ 2009年报业绩预告汇总(二) ※ 2009年报业绩预告汇总(一) 401 002117 东港股份   预计2009年度归属于上市公司所有者的净利润增长幅度在3 ...

  3. 英伟达新核弹GPU:4nm制程800亿晶体管,20张即可承载全球互联网流量,全新Hopper架构太炸了...

    丰色 萧箫 发自 凹非寺 量子位 | 公众号 QbitAI 他来了他来了,老黄带着英伟达的最新一代GPU来了. 之前大家猜的5nm错了,一手大惊喜,老黄直接上了台积电4nm工艺. 新卡取名H100,采 ...

  4. 推特800赞:图网络论文实现大合集,70多篇分门别类,从未如此全面 | 已过1k星...

    方栗子 发自 凹非寺 量子位 出品 | 公众号 QbitAI △ 右边是不规则的 自从科学家发现,图神经网络 (GNN) 能处理不规则数据.攻克从前难解的问题,后每每出现图网络的资源,便广受人类的喜爱 ...

  5. 代码理解(2009.11.20)

    上班一个多星期了,但是,还是让我"熟悉环境和业务",很少给我任务.于是,自己看项目代码.有很多不理解和陌生的地方,总结如下: 1.为什么不是Page_Load(),ProcessP ...

  6. 2009年20家年度失意大公司

    "竞争的本质不是比谁强壮.比谁敏捷,更不是比谁聪明,而是比谁少一些愚蠢,少犯些错误".<第一财经周刊>评出中国内地市场2009年度表现不佳的大公司,它们都遭遇到了什么样 ...

  7. 2009 11月21日李兴华老师JAVA学习技术讲座

    为推动JAVA发展,让广大JAVA爱好者了解掌握JAVA/J2EE体系并确立学习方向,在周六特别为大家准备<JAVA开发者之路>技术讲座. 主讲介绍: 李兴华:MLDN魔乐科技 -- JA ...

  8. 转载CSDN - 从程序员到HR——面试经验分享

    CSDN博客一周热文推荐,为您总结回顾过去一周的CSDN博客热门文章,推荐优质的博客作者,分享精华文章和优质博客. [1] 谭海燕:北漂之惠普H3C面试经历 上一篇讲到了<北漂之百度面试> ...

  9. 奇葩公司按代码行数算工资,员工一个月提成2.6万遭开除

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 来源丨java那些事 之前,有这么一个帖子吸引了很多 ...

最新文章

  1. 【转】AVAudioPlayer播放音乐,最清晰明了
  2. vm虚拟机中 Kali更新后 不能自动适应窗口
  3. jsp中session 和 cookies区别
  4. mysql timestamp 自动更新_mysql timestamp自动更新
  5. 个人作业Alpha项目测试
  6. 利用云功能和API监视Google表格中的Cloud Dataprep作业状态
  7. 香农信息熵之可怜的小猪
  8. html-网页基本标签
  9. Android APP开发需求文档范本
  10. 《学习之道》第十七章保持平静
  11. 无人机寻迹要两个单片机吗_单片机寻迹小车程序
  12. Navicat导入向导说明
  13. PDF与word互相转换
  14. 中国的专利申请量再度超越美国和日本,连续11年居于全球第一
  15. 前端该不该转后端 .前端的路不知道怎么走,
  16. 软件功能性测试的21种故障模型
  17. python雪人_在Python乌龟画中通过箭头键使雪人移动
  18. webservice Xfier
  19. java计算机毕业设计民宿客栈管理系统源程序+mysql+系统+lw文档+远程调试
  20. beta阶段第六次scrum meeting

热门文章

  1. android蓝牙开发简单获取android设备已经连接过(已适配)的蓝牙设备信息
  2. 《软件测试》第八章 配置测试
  3. 携程网涉嫌非法经营案宣判 携程最终胜诉
  4. Android小项目---BIM体质指数计算器
  5. 【问题思考总结】武忠祥排除法漏洞(考研数学)
  6. TCP/IP和网络相关知识
  7. deflate算法总结
  8. PMAC应用三-运动程序
  9. hyperf框架QueryList(phpQuery)
  10. Spring六:Spring AOP API 上