本博客http://blog.youkuaiyun.com/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!
本 blog 定位为技术 blog ,因此,本篇年度总结,从技术上回顾自己这一年的所学、所感。
1. 本年度的主要工作内容
本年度的主要工作内容主要是根据自己的 weekly report 总结而来,有些其他的研究或工作可能不会被回顾并写入,但也能充分反映该年度所做的工作。
进一步理解 Multicast 原理和规范 (DOCSIS3.0) ,理解 DServer 整体架构及其平台模块,包括 ICC 、 RPC 、 TMM 、 LOCK 等,熟悉其他模块如 QOS 、 BVM 、 CLI 、 LDB 等,熟练掌握在 Linux 系统上编程、调试方法。
重构 MCAST 模块,增强对象的封装性,修改程序结构,使其结构更清晰、更具可扩展性和可维护性;修改代码使其更具可读性;修改代码提高程序性能,例如,使用 MibBrowser 创建 Row Object 时的性能改善;删除某些不必要的包含头文件,删除某些类中保存的其他对象或指针,降低模块间的依赖;使用 pc-lint 等静态分析工具分析代码并修改。
研究并实验本系统中各个模块使用的 MD5 算法和 HMAC 算法,如 AM , CLI 等,删除各模块自己实现的算法,统一其实现,并放入 utils 目录。了解 MD5 算法和 HMAC 算法的实现原理。
学习和使用 ACE ,掌握其设计原则、原理,掌握其使用的各种设计模式(这项目标还未达到)。
利用 ACE 写 ACE_Task 的自然退出的例子,研究涉及到的各个类及代码业务流程,如 ACE_Task, ACE_Reactor, ACE_Socket , ACE_Message_Queue 、 ACE_Message_Block , ACE_Event_Handler 等。因例子代码较多,希望能够全部自动编译、根据输入自动执行并自动保存结果,因此又研究了 Expect 和 TCL ,并写相关脚本自动编译、自动执行。并将该 ACE_Task 自然退出模型成功地应用到 AM 模块中。
研究 MCAST , BVM 中与 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