2010年度总结

来源:互联网 发布:税收数据质量检查报告 编辑:程序博客网 时间:2024/05/16 14:14

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!

blog定位为技术blog,因此,本篇年度总结,从技术上回顾自己这一年的所学、所感。

 

1. 本年度的主要工作内容

 

本年度的主要工作内容主要是根据自己的weekly report总结而来,有些其他的研究或工作可能不会被回顾并写入,但也能充分反映该年度所做的工作。

 

进一步理解Multicast原理和规范(DOCSIS3.0),理解DServer整体架构及其平台模块,包括ICCRPCTMMLOCK等,熟悉其他模块如QOSBVMCLILDB等,熟练掌握在Linux系统上编程、调试方法。

重构MCAST模块,增强对象的封装性,修改程序结构,使其结构更清晰、更具可扩展性和可维护性;修改代码使其更具可读性;修改代码提高程序性能,例如,使用MibBrowser创建Row Object时的性能改善;删除某些不必要的包含头文件,删除某些类中保存的其他对象或指针,降低模块间的依赖;使用pc-lint等静态分析工具分析代码并修改。

 

研究并实验本系统中各个模块使用的MD5算法和HMAC算法,如AMCLI等,删除各模块自己实现的算法,统一其实现,并放入utils目录。了解MD5算法和HMAC算法的实现原理。

 

学习和使用ACE,掌握其设计原则、原理,掌握其使用的各种设计模式(这项目标还未达到)。

利用ACEACE_Task的自然退出的例子,研究涉及到的各个类及代码业务流程,如ACE_Task, ACE_Reactor, ACE_SocketACE_Message_QueueACE_Message_BlockACE_Event_Handler等。因例子代码较多,希望能够全部自动编译、根据输入自动执行并自动保存结果,因此又研究了ExpectTCL,并写相关脚本自动编译、自动执行。并将该ACE_Task自然退出模型成功地应用到AM模块中。

 

研究MCASTBVM中与ACE_Task相关的代码,并根据此模块task特点,修改代码,也使ACE_Task自然退出。

 

研究ACE的其他问题,如下。

ACE compile/install/debug on Linux/win32;

ACE trace/log system;

ACE_Select_Reactor object memory structure analysis;

Handler repository object of ACE_Select_Reactor analysis;

Handler Set object of ACE_Select_Reactor analysis;

the flow of register_handler ACE_Pipe read handler during construct ACE_Select_Reactor;

the flow of register_handler/remove_handler a new handler in the same thread on Linux/win32 platform;

the flow of register_handler/remove_handler a new handler in another thread on Linux/win32 platform;

the flow of notify of ACE_Select_Reactor;

why not call notify during ACE_Select_Reactor construction?

why not call notify when thread A registers user-defined handlers?

why not call notify when thread A removes user-defined handlers?

why does it call notify when thread B registers a new handlers?

why does it call notify when thread B removes a new handlers?

handle_events and select/poll analysis;

why not call notify when thread B registers a signal handlers?

ACE_Semaphore construction flow with name.

ACE_Semaphore construction flow without name.

why does it not succeed to register a handler with negative value?

how handle_exception will be called by handle_events using notify to send the notification with ACE_Reactor_Mask::EXCEPT_MASK?

what is the flow of calling the overrided handle_close?

what is the flow of calling the overrided handle_exception method?

what is the difference between calling notify method of user-defined handler and calling the same method of ACE_Reactor?

write code to test all these issues.

TCL introduction, compile, install, using.

an example of ftp automatical downloading by using TCL.

an example of expression automatical calculation by using TCL.

whether the destruction of resource is in ACE_Task::close() or ~ACE_Task()?

study ACE about its Local and Remote IPC mechanism, including SOCK SAP, TLI SAP, SPIPE SAP, and FIFO SAP;

 

modify the related codes of AM module using ACE_Reactor mode.

 

进一步理解IGMP原理,进一步理解SPONDePONIGMP模块实现差别,修改IGMPMCASTBVMCFM等模块bug24个,熟练掌握IGMP模块调试方法,熟悉其他模块调试方法,如TKDDDLAMICCRPCVLMSAL等,熟练掌握在vxWorks系统上编程、调试方法;进一步理解EPON架构,原理;理解OLT模块间的callback机制,例如IGMPFPDNPDTKD;理解OLT各个模块的初始化、restore流程;理解OLT上协议数据的处理过程;

 

研究OpenSAF (Service Availability Forum)相关架构,SAI(Service Availability Interface)及其服务, AIS(Aavailability Interface Spectification)规范及其服务原理;了解Lock Service, Persisent Store-Restore Service, Log Service, Event Service and Notification Service等服务原理,了解HPI(Hardware Platform Interface)接口,学习其提高软件可靠性的方法,并做workshop

重读《Effective C++》,并为同组同事讲解其中20讲,写实验程序,效果甚好。

 

阅读《POSA》的Half Sync/Half Async模式和Leader/Followers模式,理解ACE中与该模式相关的模块。

 

阅读CppUnit1.12相关文档和代码,掌握其在Linux平台和Win32平台的编译、安装、配置及其使用方法。研究CppUnit1.12源代码及其使用原理、方法,写相关单元测试代码,并在Linux平台和win32平台实验。

 

阅读Boost相关代码、文档,掌握其在Linux平台和Win32平台的编译、安装、配置及其使用方法。熟悉BoostLexicalmulti_index_container库,并掌握其设计技巧。写关于multi_index相关代码,并在win32平台和Linux平台实验。

 

进一步学习Linux,包括其命令、配置、内核、运行库等,熟练掌握Linux基本操作,熟练掌握Linux平台的C/C++编程。及其脚本编写,自动测试等。

2. 其他内容

 

花半天的时间研究了DServerstub源代码的自动生成问题,定义生成规则,并写程序,程序对按规则自动生成stub源码。

 

花半天的时间研究了DServer运行的环境,并在本地虚拟机上搭建该环境,安装需要的各种第三方库,如ACEBoostCurlOpenSSLNet-SNMP,以及Net-SNMP需要的libperl-dev。全都采用源代码安装。

 

2天的时间研究代码覆盖测试(code coverage test),并使用IBM Rational Purify工具在win32平台实验。

 

4天时间参加公司的CMMI培训,了解了什么CMMI,他能做什么,大致应该怎么做。理解CMMI对软件质量、过程的定义,了解CMMI的过程,及其general goalspecific goal

 

3. 工作方法与工具

 

进一步将PKMGTDTM等概念用于工作、学习上,逐步形成个人工作、学习风格,使个人平时工作规范化,提高个人职业能力和职业化水平。初步建立个人知识管理的原则、方式。

 

将以下工具用于工作和学习中,在很大程度上提高了自己的工作和学习效率。

onenote笔记工具,wizKnowledge知识管理,sugarSync同步,dropbox同步,scribeFire博客插件(firefox)delicious书签插件(firefox)everything文件搜索,freemind思维导图,to-do listgoogle readergoogle calendar等。

代码研究工具如w2DasmV10.0IDA5.5等。

 

2011年应该继续更新、挖掘对工作和学习大有帮助的工具,并应用到工作和学习中。

 

4. 小结

 

(1) 工作内容

 

从以上总结的工作内容可以看出,工作内容比较杂。

既涉及vxWorks平台上协议(嵌入式)开发,主要是IGMPv3开发和IGMPv1/v2维护;又涉及Linux平台C++开发,主要是DOCSIS3.0协议开发,即Multicast开发和QOS重构。

既涉及ACEopenSAF开源架构、通信中间件的研究及和使用,又涉及C++Boost库的研究和使用。

既涉及CppUnit单元测试相关研究,又涉及代码覆盖测试研究。

既涉及Linux的相关研究,例如glibcbinutilskernel等,又涉及CMMI的学习。

 

2011年应该在此基础上以工作要求和目标及个人兴趣为中心,加强相关技术的研究和积累,在其上进一步深入直至熟练掌握、精通。

 

(2) 工作重点

 

本年度工作重点仍是公司产品中偶负责的模块,如IGMPMulticast的开发、重构、维护;及QOS模块的重构。

 

(3) 对公司的贡献

 

对公司的系统,至年底,累积写代码1.2w行。

QOS重构,将原来的39859行代码改为现在的28377行,继续修改中。

修改bug24个,基本上对每个bug,都有比较完整的重现、分析、解决的文档。

 

(4) 个人研究、学习

 

完整阅读技术书籍5本,查阅技术书籍若干。

《程序员修炼之道》

《程序员的自我修养》

Linux内核修炼之道》

Effective C++(重读)

C++网络编程:卷1 运用ACE和模式消除复杂性

 

正在读的

C++模板》

《编程之美》

GDB调试的艺术》

STL源码解析》(重读)

《自己动手写操作系统》

《程序员应该知道的97件事》

《重构:改善既有代码的设计》

Boost程序库完全开发指南》

C++网络编程:卷2 基于ACE和框架的系统化复用

2011年要继续阅读并实践。

 

在网络上阅读技术文档若干,至年底,累积阅读各类文章710篇,分别使用两个工具建立。

使用CyberArticle积累文章509篇,使用wizKnowledge积累文章201篇。

 

工作中的学习,至年底,累积写代码28502行。

(代码行是通过SCounter工具严格统计的。)

 

阅读部分STLLinux kernelglibcACE代码,2011年要继续有选择性地阅读并实践、记录。

 

(5) 个人记录

 

学习、分析公司的系统,累积文档23(包括Bug分析文档)

 

使用OneNote记录学习笔记、文章,至年底,累积写学习笔记、文章311篇,共计1204页。如下,

公司产品SPON学习笔记,42

公司产品DServer学习笔记,24

公司产品DePON code analysis15

公司产品IGMP analysis11

Boost实践笔记,16

ACE研究笔记,32

C++Research笔记,18

ubuntu基础,20

Linux command23

Linux shell, expect, TCL7

Linux C/C++7

Linux 内核,6

Linux basic concpet14

Effective C++8

link, load, library8

GDB8

glibc6

Binutils5

嵌入式开发,6

重构,4

STL3

cppunit3

vxworks3

测试驱动开发,1

VBA1

per2

SAF2

软件可靠性,2

windows3

others11

 

从以上笔记篇数也可以看出,在本年度,工作和学习的绝大多数精力和时间还是放在了公司的系统、业务等上面,符合公司的要求。另外,也涉猎一些开源软件,研究其框架、设计模式等,如ACE;同时也加强了Linux的学习和使用。

 

但发到blog上的只有27篇,其中20篇还是在年底抽时间集中发布的,这个量要提高,不能只写不发,与blog的立意“学习、思考、记录、分享”不相符。2011年希望继续发布以往写过的文章或笔记。

 

(6) 年初计划

 

年初建立的个人计划,有70%的计划完成,在2011年应该适当调整个人计划。


原创粉丝点击