
C/C++
JGood
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
一行逻辑错误,但语法没有错误的代码
用C++调用windows API进行非阻塞TCP通信,其中一行代码被我写成了如下:if (SOCKET_ERROR == (sock, (sockaddr *)&addr, sizeof(addr))){ cout << "Bind Failed" << endl; WSACleanup(); return 0;} 这段代码编译没有任何错误与警告,但结果并不是原创 2009-08-23 09:30:00 · 1547 阅读 · 0 评论 -
Python封装IOCP
2011-07-22:源码下载:http://blog.youkuaiyun.com/jgood/article/details/6626872 Python是一门简洁而优雅的语言,她的高生产率使我们能用最少的人力、物力、时间、财力代价解决眼前的问题。但是当解决了眼前的问题,一些更长远的问题就不得不考虑。 利用Python自带的socket模块写网络服务器程序,很难能够承受上千个连接。我曾原创 2009-10-21 23:02:00 · 4948 阅读 · 11 评论 -
boost::shared_ptr的性能
在最近的项目中,使用了大量的boost::shared_ptr。在游戏服务器中,有时候同一数据块要发送给不同的连接(例如A玩家的一个行走消息包要发给所有附近的玩家),如果为每个连接都拷贝一份数据,显的代价比较大且难以维护,想想发送完数据之后还要释放这些数据块,极易出错,而且性能也不佳。使用智能指针,只需要一份数据块的拷贝,并且不需要去管理内存的释放。但这几天,我又在想,boost::shared_ptr号称是线程安全的,那么在低层维护对象的引用计数时,必定有加琐/解琐。如果频繁的对智能指针进行原创 2010-08-16 00:10:00 · 3734 阅读 · 2 评论 -
C语言复杂声明
《C专家编程》第三章介绍了如何分析复杂的声明,讲的非常不错。对于作者介绍的分析复杂声明的方法,我没有完全掌握,不过,我有我自己的一套方法来解析复杂的声明,正所谓条条大道通罗马,只要结果一样,必须在乎过程呢。今天在网上找了几个复杂的声明,练练手(声明的例子全部来自网络,原谅出处未详)。记下此文,作个标记,待日后回味。 int (*func)(int *p) 这个原创 2010-05-23 21:31:00 · 3773 阅读 · 1 评论 -
NppAStyle发布
NppAStyle是一个NotePad++的插件,用于格式化Notepad中编辑的c、c++、C#、java代码。NppAStyle在内部使用Astyle来格式化代码,是一个很简单,但很实用的Notepad++插件。可以在这里下载该插件。 下面是插件的一些截图:(1)(二)(三)(四) 注:notepad++是一个功能强原创 2010-02-17 12:12:00 · 7289 阅读 · 3 评论 -
译: Code::Blocks手册 使用篇
原手册下载:http://www.codeblocks.org/docs/manual_en.pdf 译者:JGood(http://blog.youkuaiyun.com/Jgood) 译者言:工欲善其事,必先利其器。一个好的工具能事半功倍。写程序时,特别是写C++程序,大部分人脑子里想到的第一个工具就是VisualStudio。不可否认,VS很好很强大,用户体翻译 2010-01-25 00:05:00 · 34952 阅读 · 17 评论 -
C++大师Stan Lippman:我对中国程序员的忠告
前天,我和以前公司的几个同事在一起聚餐。其中一位同事在对自己未来的打算时,说可能会回到杭州继续写代码。我听了之后,说:如果对技术不感兴趣,还是趁早离开这个行业。写代码的辛苦程度不是一般人能承受的。 下文 转自天极网 C++语言的创立者,斯坦.利普曼(Stan Lippman) 9月17日参加了在北京召开的微软技术大会Tech.Ed2004并做了"T转载 2009-11-21 13:03:00 · 2196 阅读 · 3 评论 -
再次封装IOCP的收获
以前写过一篇用python封装IOCP的文章,这几天因朋友需要,再一次封装了iocp接口。这一次我并不是简单的把原有代码拿过来简单的修修改改,基本上是推到重来。改正第一次封装时的许多缺点,同时修正了许多bug,再回首看以前的代码,感觉自己在进步。这次封装iocp,收获了以下几点知识: 1. 数据的重复投递。一般情况下,一个Socket句柄在同一时刻最多只能有一次WSASend与SWARe原创 2010-01-17 23:19:00 · 4744 阅读 · 27 评论 -
libcurl教程
原文地址:http://curl.haxx.se/libcurl/c/libcurl-tutorial.html 译者:JGood(http://blog.youkuaiyun.com/JGood ) 译者注:这是一篇介绍如何使用libcurl的入门教程。文档不是逐字逐句按原文翻译,而是根据笔者对libcurl的理解,参考原文写成。文中用到的一些例子,可能不是出自原文,而是笔者原创 2009-11-08 22:56:00 · 70561 阅读 · 38 评论 -
直观语法
今天工作过程中,一位同事对我说,MFC里怎么没有类似这样的语法: int a;a =+ 4; 我不以为然,付之一笑,有这种语法吗?你搞错了吧,应该是: int a = 20;a += 4; 谁错了?我不禁感到惭愧,向他道歉。原创 2009-11-05 21:50:00 · 1202 阅读 · 0 评论 -
Sqlite c/c++ api 学习
Sqlite是我最喜欢使用的文件数据库,它小巧、方便、速度快、支持大部分标准sql语句、开源、免费 .. .. .. 优点太多了。自从认识了她之后,我就将Access打入了冷宫,发誓以后再也不用Access了。我们可以到Sqlite的官方网站下载Sqlite的源代码,编译后的结果只有200多K,太小巧,太卡哇依了。如果嫌自己手动编译麻烦,也可以直接从官网下载二进制的可执行文件或者动态链接库原创 2009-10-07 22:49:00 · 17328 阅读 · 10 评论 -
用g++编译动态链接库
写了一个最简单的动态链接库程序,使用g++命令行编译。怕以后忘记,就把它记到blog中。动态库导出头文件:/** * file: dll.h * Powered by JGood 2009-09-22 */#ifndef __dll_h__#define __dll_h__#ifdef __MY_DLL_LIB__ #define D原创 2009-09-22 21:35:00 · 5678 阅读 · 0 评论 -
Notepad++插件NppProject发布
源文地址:http://darkbull.net/opensource/bcj/NppProject/如果运行时报错,请查检一下notepad++的安装目录是否在 "系统盘\program files\",如果是,把notepad++放到其他目录下试试。(感谢@tczzjin同学) 最近几天写了一个Notepad++的项目管理插件,暂时把它叫做NppProject。因原创 2011-10-01 22:40:07 · 9102 阅读 · 4 评论