随笔分类 -  c++

摘要:strcp strlcp memcp的实现,又写了一遍,也不知道是第几遍了。目标串的容量,字符串重叠,宽字符,四字节优化这些东西不考虑了。 阅读全文
posted @ 2011-01-06 21:47 hjtc 阅读(411) 评论(0) 推荐(0)
摘要:一些老掉牙的知识点,就怕阴沟里翻船,全部翻出来看看。内存对齐,sizeof,strlen类问题: 这类问题都是考基本的内存方面的问题,基本类型的数据么,主要是字符串和指针的问题,字符串主要尾部的\0,指针注意32位机器上都是4字节的。复合类型就有对齐的问题,简单来说是由成员的对大对齐单位来指定的。具体看例子: 阅读全文
posted @ 2011-01-06 20:10 hjtc 阅读(473) 评论(0) 推荐(0)
摘要:为什么要用WSAAsynSelect? 服务端的IO模型,常见的是select、poll、epoll这种select模型,或是IOCP,AIO这种异步IO模型,这在服务器端无疑是合理的选择,那么客户端呢?用select或是AIO是否合理,或者是否有必要呢?考虑到客户端总是需要一个UI线程,如果需要用上面的解决方案,必然需要引入另外的线程来做这部分工作,线程之间的通信,同步资源,都是麻烦的东西。多线程的设计无疑使得程序变得复杂和难于调试,难道不能用单线程来实现整个客户端么?实际上是可以的,windows中提供的WSAAsynSelect就可以很方便的在一个线程中实现UI和异步IO的处理。WSAA 阅读全文
posted @ 2011-01-03 14:24 hjtc 阅读(1781) 评论(0) 推荐(1)
摘要:什么是signal/slot机制? 这是一种注册/回调机制,QT,libjingle中都很常用。它同时也是一种观察者模式的实现。为什么需要signal/slot机制? 表扬好同学之前,先批评下坏同学,就是MFC这个让很多IT童鞋头痛不已的框架。想象一个最常见的场景,拉一个对话框,上面放两个按钮,一个文本框,按钮按一下,文本框上数字增加或是减少一个。如果你来实现要怎么做呢?很简单么,SendMessage or PostMessage不就好了,那消息发给谁呢?爱谁谁么,直接发给文本框,要不统一发给对话框,让它转发不就行了么。无论是哪种方法都是糟糕的设计,难于扩展,难于维护,难于修改。为什么呢?先 阅读全文
posted @ 2011-01-02 21:22 hjtc 阅读(1727) 评论(0) 推荐(1)
摘要:    c++中字符串处理总是个烦人的地方,虽说std::string也还不错,但是比起pythong,lua这些总是麻烦很多。 今天发现pystring这个函数包装库,确实是很不错。它通过包装std::string实现了类似python处理string的接口。   链接在这里:https://code.google.com/p/pystring/  用法很简单,这里翻译了下它的文档: ca... 阅读全文
posted @ 2010-12-22 13:02 hjtc 阅读(1404) 评论(0) 推荐(0)
摘要:看libjingle库的过程中发现,它用了TLS机制来实现线程对象和线程的关联。这里简单记述下TLS的一些细节。 TLS(thread local sttorage), 首先看图,这是从核心编程里抠出来的。 进程会管理一个标识位组,每个标识表示一个slot(上面那个横向的框),当任意线程调用TlsAlloc时,系统都会扫描该标识位组,发现的第一个FREE标识时(可能是0),就返回该标识的索引,并将该标识设置为INUSE。这里要注意的是这个标识组是全局唯一的,也就是说如果线程1调用TlsAlloc返回3,就代表所有其他线程的索引3都被系统保留了,如果你其他线程调用TlsAlloc,你不会再或得3 阅读全文
posted @ 2010-12-14 10:12 hjtc 阅读(726) 评论(0) 推荐(0)