记录一个BUG

重写的IOCP网络库已经应用到服务器程序上,几大服务器开始联调,网络库和应用层的BUG也随之浮现出来。这会仍在查BUG,发现其中有些BUG很巧妙,像是被精心设计出来。在GC服务器程序中就发现这么一个BUG,GC服务器在退出时做清理工作,包括关闭connection,但不幸中道崩殂,发生crash,抛出0xC0000005: Access violation异常。来看其中的几段代码。 继续阅读 »

无题

无题

杨柳拂晓岸,阳风映心湾。

吾从花前过,爱随天际流。

2012.04四月思(月总结)

五一小假过了三分之二,趁还没有结束,对四月份的工作生活做一个分段式的回顾。且倒数往回看。 继续阅读 »

Windows编程小问题汇总(持续更新)

今天再开一篇问题汇总文章,用来记录在Windows上开发碰到的各种乱七八糟奇怪的小问题,这样的小问题从编程以来有很多,奈何记忆常会丢三落四,那就写下来了,从今天开始。 继续阅读 »

IOCP服务器开发常见问题汇总(持续更新)

最近两周的时间在写IOCP网络库,由于老版本的IOCP网络库存在的一些问题(见这篇),于是打算重新写一个用于新项目的开发,新的网络库也主要基于这几点来实现。原来使用老版本IOCP库进行开发也有比较长一段时间,在重写的过程中避免了很多问题。这期间花了些时间在考虑层次架构和性能优化上,比如分层模式,I/O投递策略,内存管理模型,最后还是没有想出理想的优化方法,决定先实现,做到程序稳定健壮,以后在实践中再做优化。也只有在自己去写一个网络库的时候会需要去考虑那么多,现在把目前知道的、遇到的一些问题技巧记录下来,以后遇上新问题补充更新。 继续阅读 »

理解TCP的写操作

这周开始在写基于IOCP的网络库,很关心系统内核层的一些运作以及socket api相关的语意,主要也就是写操作和读操作(send/recv)。现在对TCP的写操作相关的semantics做些分析整理。

写操作调用和TCP/IP发送的段之间不存在一一对应的关系,它们之间的交互是系统相关的。我们从两个层面来看写操作。 继续阅读 »

理解TCP的可靠性

TCP是一个可靠的协议,这个可靠指的是什么呢?

我们先来看下数据在两台主机间传输的情形。

图1. 对等主机间的数据传输 继续阅读 »

IOCP网络库的几点思考

目前在用的IOCP网络库作为一个核心基础库已经有很长一段历史了,几乎覆盖了当前全部产品的开发。我接触它的时间算起来也有些日子,用它进行了多个产品的开发,从中受益颇多。 继续阅读 »

memcpy的性能

在高性能服务器开发当中,与内存相关的操作(alloc/free/copy)是代价昂贵的,是影响服务器性能的关键因素之一,于是引入了memory pool/pre-allocation等优化方法。今天在检查粘包问题时在IOCP库中看到投递I/O操作的几个关键时刻多次使用memcpy,于是测试了一下memcpy的性能。 继续阅读 »

TCP还是UDP?

在读《ETIP》(Effective TCP/IP Programming)Tip7时收获的一些心得,记录下来。

在开发网络程序时,我们经常需要面对的一个问题是:选择TCP还是UDP?我们的一般印象是TCP是面向连接的、可靠有序的、基于字节流的协议,而UDP是无连接的、不可靠的、面向消息的协议。通常粗略的认为在需要可靠性时,选择TCP,需要高效率时选择UDP。然而,在做出选择时,我们需要考虑的更多些。 继续阅读 »

Kui学习demo

出于兴趣爱好和项目需要,前期学习了ATL/WTL界面开发,然后尝试使用Kui仿金山卫士做了一个界面demo。 继续阅读 »

Multithreading Applications in Win32 Faqs

在《Multithreading Applications in Win32》书中旁栏附有关于主题的Faqs,这些Faqs涉及到Multithreading Programming应该引起注意的大部分,于是写下来作为笔记,希望在进行Win32 Multithreading Programming中能起到一些Effective的作用。(Effective是一类书系的名称,这类书是(C++)程序员必读书,最近在读《Effective TCP/IP Programming》) 继续阅读 »

MFC、ATL窗口消息封装机制对比分析

新产品在不紧不慢的进行中,这应该是有史以来开发比较“自由”的一个项目。在折腾完一个功能服务器的demo之后,开始折腾起PC客户端。Leader说客户端界面需用ATL来实现。这时候可以满足一下客户端界面开发的兴趣,于是开始学习ATL界面开发,有人说做界面是个累人加无趣的体力活,但也懂得君子善假于物的道理,于是使用了kui做铺垫。现在要讨论的与kui无关,只讨论MFC和ATL对窗口消息封装的实现手法。一切还是从调试源码过程中寻找答案,进入正题。

继续阅读 »

两年工作掠影(总结)

年终流行写总结,也看了不少程序员的总结,多是一年到三年工作经验的年轻程序员写的多,这样的习惯很好,不断总结,反思,规划,执行,不断进步。回首想来工作也及近两年,趁着在回家过年的旅途中,把2010年3月到现在这两年的工作总结补回来。(一直都有记录总结的习惯,但却没来得及把这两年的工作经历做个总结) 继续阅读 »

nafxcwd.lib、MSVCRTD.lib、LIBCMTD.lib默认库链接冲突问题

MFC程序在将MFC的使用方式从<在共享 DLL 中使用 MFC>切换到<在静态库中使用 MFC>,构建时,经常出现如下所示的lib库冲突问题。 继续阅读 »

本站主题和插件

主题

博主喜欢简约的主题,于是找到了zbench,然后在其上做了些修改,并打算一直用下去,考虑到zbench本身可能会升级,升级之后会覆盖已修改的文件,于是采用了子主题的方式进行修改。

这是本站修改的子主题:brucesky_zbench_child
继续阅读 »

我的随行书库

对程序员来说,几乎除了看屏幕,看的最多的应该就是书了。现在各种终端智能设备提供了电子阅读的方便性,改变了人们读书的习惯,将读书的行为从书桌搬向了任何地方。但是,我还是热衷于阅读纸质书,尤其是对于喜欢的书籍类型,适合读电子版的是那些“快餐消费类”的书(用来打发时间的)。

工作两年以来,买了不少书,有些是技能提高需要,有些是项目开发学习需要。虽然部门可以购书,还是喜欢自己买。那么多书唯一带来的麻烦就是在搬家的时候,书的负担不是一般重。但不管怎样,每次搬家(来杭工作不到两年搬家4次)都要带着它们,而且一本都不能少(除了那些送人的),因为,书带来的乐趣和价值是无穷的。 继续阅读 »

调试法:UPDATE_COMMAND_UI消息的来龙去脉

晚上大部门吃年饭,期间喝了点酒,回来后想起新建的BLOG比较空白,觉得应该写点什么。那写什么呢?想起几天前Jack问的动态状态栏的问题,虽然不是一个需要大书特写的问题,但还是写下吧。(如果您是经验丰富的程序员,可以跳过此文) 继续阅读 »

brucesky.com诞生小记

brucesky.com终于上线了!

brucesky.com的由来

bruce是我现在的英文名,在读大学时请师范英语系一位可爱的姑娘给起的,起初想用姓名的每个头字母作为域名,简单易记,奈何这样的域名早已被注册,那就换个英文名,于是有了brucesky.com。目前绝大部分你能想到的域名都被注册了,所以打算建立个人BLOG又想拥有一个自己喜欢的域名的同学要尽早注册。(我这里还会定期收到godaddy的优惠码)

brucesky.com建立的历程

brucesky.com从买域名到上线经历了很长一段时间,由于各种原因总是被搁置,加上难得有闲情逸致,总是在零散的时间里准备需要的“硬件”,在年末给自己定了个deadline,必须赶在2012龙年到来时让BLOG上线,这才有了与大家见面的机会。

1. 2011.6.25 购买域名;

2. 2011.11.11 购买vps;

3. 2011.11.11 开始搭建配置lnmp环境,安装wordpress,定制主题;

4. 2012.01.01上线。
继续阅读 »

日喻说(博文发布测试)

古文观止·日喻说 苏轼

【原文】

生而眇①者不识日,问之有目者。或告之曰:“日之状如铜盘。”扣②盘而得其声。他日闻钟,以为日也。或告之曰:“日之光如烛。”扪③烛而得其形。他日揣籥 ,以为日也。日之为钟、龠亦远矣,而眇者不知其异,以其未尝见而求之人也。

道之难见也甚于日,而人之未达也无异于眇。达者告之,虽有巧譬善导,亦无以过于盘与烛也。自盘而之钟,自钟而之龠④,转而相之,岂有既乎?故世之言道者,或即其所见而名之,或莫之见意之,皆求道之过也。

然则道卒不可求欤?苏子曰:“道可致而不可求。”何谓致?孙武曰:“善战者致人,不致于人。”子夏曰:“百工居肆,以成其事;君子学,以致其道。”莫之求而自至,斯以为致也欤!

南方多没人,日与水居也。七岁而能涉,十岁而能浮,十五而能没矣。夫没者岂苟然哉?必将有得于水之道者。日与水居,则十五而得其道;生不识水,则虽壮,见舟而畏之。故北方之勇者,问于没人而求其所以没,以其言试之河,未有不溺者也。故凡不学而务求道,皆北方之学没者也。

昔者以声律取士,士杂学而不志于道;今世以经术取士,士知求道而不务学。渤海吴君彦有志于学者也,方求举于礼部,作《日喻》以告之。

【注释】:
继续阅读 »

无觅相关文章插件,快速提升流量