陈硕的 Blog

吾尝终日而思矣,不如须臾之所学也。吾尝跂而望矣,不如登高之博见也。……君子生非异也,善假于物也。

最新评论

共15页: 1 2 3 4 5 6 7 8 9 下一页 末页 
Re:C++ 工程实践(4):二进制兼容性 Todd Wei 2012-05-04 22:46  
@lzprgmr 同意你的看法。我认为文中提到的“因为新的库必然有新的头文件,但是现有的二进制可执行文件还是按旧的头文件来调用动态库”这种“工程实践”本身不值得提倡。如果头文件变了,本质上就已经是一个新版的API,为了兼容性更好的方法是类似COM的多版本接口,而不是小心翼翼地去保持二进制兼容性。如果某一个版本API的实现部分有bug,需要修复替换掉库,这是可以的,因为头文件本身没有任何变化,不存在二进制兼容性问题。
@yu_yu 随便想个办法也能把二进制数据贴上来吧?
@陈硕 还真不知道如何回答这个问题 因为是二进制数据,有多个Icon
@yu_yu 第三次问:出错的数据是什么样的?
就是你所提供的 codec里的 AppendToString ParseFromArray
@yu_yu 出错的时候,收到的数据是什么样的? 你用的是哪种分包办法?
@陈硕 proto文件是这样定义的 message Icon { required uint32 gid = 1; optional uint32 crc = 2; //图标校验值 optional bytes data = 3; //图标数据 } 在这里,如果为bytes类型数据,则时对时错,但是二进制数据必须使用bytes,即使没有data数据,一样的时对时错。如果改为string,不放数据,就没有错误了,当然是不能这样传输非utf-8的raw byte
@yu_yu 把错的数据保存下来,单步跟踪试试?
ParseFromArray返回false,怎样查看错误信息呢? 很奇怪的是对于定义的二进制数据,ParseFromArray有时候对,有时候错~
@irons 图中纵坐标的单位是微秒。
请问时间单位是多少呢?
Re:学之者生,用之者死——ACE历史与简评 Jacklondon Chen 2012-02-14 19:20  
ACE 做了 C++ 标准的事情。如果 C++ 标准库中,有 socket 库,何必这么复杂去屏蔽平台差异? 我现在能不用 C++ 决坚决不用 C++!! 用 java /c# 哪怕牺牲 60% 性能又如何?计算机技术的发展,性能过两年就追上了。
使用两台机器,VIP漂移应该就可以了吧。当然,要处理好时间可能倒转的问题,不过这个问题无论几台NTP都得考虑。
只是粗略的看了下,楼主对技术的研究和验证精神值得钦佩。
换句话说,ACE 用 30 万行 C++ 代码“封装”了不到 10 万行 C 代码(且不论 C++ 代码的信息密度比 C 大),这是不是头重脚轻呢?我理解的“封装”是把复杂的东西变简单,但 ACE 好像走向了另一个方向,把不那么复杂的东西变复杂了。 ---------------- Soket 函数没几个,但是Apache的体积却很庞大。任何框架都不仅仅是封装API.
换句话说,ACE 用 30 万行 C++ 代码“封装”了不到 10 万行 C 代码(且不论 C++ 代码的信息密度比 C 大),这是不是头重脚轻呢?我理解的“封装”是把复杂的东西变简单,但 ACE 好像走向了另一个方向,把不那么复杂的东西变复杂了。
Re:多线程服务器的常用编程模型 BufferFly 2011-11-12 21:39  
楼主辛苦了,我最近也在研究这方面的东西,我先看一下您的博文,然后希望能交流以下。
@tears1134 在生成的代码里搜 StaticDescriptorInitializer
用 DescriptorPool::generated_pool() 找到一个 DescriptorPool 对象,它[b]包含了程序编译的时候所链接的全部 protobuf Message types[/b]。 事实确实如此“包含了程序编译的时候所链接的全部 protobuf Message types”,对一个问题很好奇: DescriptorPool::generated_pool()是在运行的时候才确定的,并且是一个静态方法,它如何可以找到一个先于它的执行而编译出来的还位于其外部的Message type呢?
Re:C++ 工程实践(8):值语义 Paul Shen 2011-08-26 13:42  
太博大精深了
共15页: 1 2 3 4 5 6 7 8 9 下一页 末页 

导航

统计

公告