摘要: 存储过程的错误捕捉 mysql_next_result > 0
阅读全文
1- 遇到问题,要去思考如何解决这类问题,而不是这个问题。
2- 不要因为时间紧迫而放弃代码的重构。
3- 如果觉得有必要改,就去改,不要怕混乱,它只是暂时的。坚持到底,就会云开见月明。
1- 输入和输出流,底层采用分页数据容器。
2- 可定制的流过滤器,协议分析、数据安全、以及转发逻辑都可以通过这个来完成。
3- 三种可定制的主循环:1- 单独逻辑线程 2- 主线程直接循环 3- 作为TASK在主线程池内执行。
4- UDP支持。
1- 为AGENT增加了主动模式,应用服务可以主动连接AGENT,从而让地址无法确定的APP服务可以挂接到地址固定的AGENT上提供服务。
摘要: XLIBPLUS库和XNETWORK库的源代码。
阅读全文
摘要: XSE2.0 的源代码(包含C\C++\C#示例)
XSE全名为 X Server Engine,是在IOCP基础上建立的一个网络底层库。
阅读全文
1- 保持內存地址與系統的頁面起始點對齊。
2- 減少小量內存的單獨分配,使用對象池或者內存池進行小量內存的管理。
3- 儘量用系統提供的API進行基於頁面的分配,以提高系統操作和管理內存時的效率。(VIRTUALALLOC)
經過測試,malloc的內存管理沒有直接綁定到頁面。virtualalloc才會直接按照頁面來分配。
測試方法:用Malloc分配4096和4097大小的1024塊內存,從進程管理器中查看內存消耗,並沒有太大區別。
用virtualalloc分配4096和4097大小的1024塊內存,消耗相差近一倍。
分析可知,virtualalloc按照頁面來進行分配,一般頁面大小為4096字節,4097超過1字節會令系統增加一個頁面的分配,從而導致內存使用量攀升近一倍。
同時我們可以得知,malloc的內存分配不會按頁來進行分配,也就是不會進行頁面對齊。
在IOCP應用中,很多時候系統都會鎖用戶內存,鎖內存都是以頁為單位來鎖,沒有對齊過的內存,會導致鎖跨頁面,降低操作的效率,或可造成安全問題。
1- 紧凑或者对齐模式(相当于C/C++结构体的对齐方式)
紧凑模式在持久化时,不考虑字节对齐情况,直接按值类型,按字节持久化。
对齐模式会考虑整体对齐参数,力图使字段对齐到边界。
2- 容器本地化或者远程化
本地化的容器,会共享容器父数据对象的内存。
远程化的容器,会有单独的对象内存。
在网络数据包中,必须使用紧凑模式和本地化容器,以消除所有不确定因素,确保网络传输。
3- 是否持久化索引数据。
索引数据是指对象类中的字段在整个对象类中的索引。在对象类的字段创建开始,这个索引就固定不变,一直到被删除。所有的字段的索引不可重复。
对象容器中的对象类的字段使用单独开始的索引。
PROBLEM: 如何在紧凑持久化数据中表示一个容器。(即是否保存容器边界)