
C++ Gimmick
hhf
C / C plus plus
Network Server
3D
展开
-
MBCS和UNICODE
char ipport[50]={0};//inet_ntoa返回内部数组,多次调用会被覆盖sprintf(ipport,"%s:%d",inet_ntoa(addrClient.sin_addr),ntohs(addrClient.sin_port));wchar_t w_ipport[50]={0};mbstowcs(w_ipport,ipport,50);//#include原创 2010-05-26 00:23:00 · 645 阅读 · 0 评论 -
用Cpp11新template feature尝试metaprogramming
Cplusplus 11 发布大半年了, 基本上浏览了一遍wiki pedia上关于新feature的介绍, 个别feature已经迅速被大家广泛运用了, 剩下的由于编译器的支持问题未敢大肆使用。由于 新标准在core language中就提供了以前要一堆template才能实现的feature以及std lib中把boost的一些container搬字过纸,所以熟悉boost的人可能一看介绍马上原创 2012-06-06 15:59:51 · 986 阅读 · 0 评论 -
tips to include tcmalloc
vim /etc/ld.so.conf ldconfig -v-ltcmalloc原创 2012-02-02 22:53:41 · 679 阅读 · 0 评论 -
读完了the practice of programming
the practice of programming是第二本读完的英文原版技术书籍,很多内容早已了解,抱着锻炼英语阅读能力和顺便回顾一下一些技术知识的心态读吧,利用下班的空当,不到两个星期读完,发现自己在调试方面的观点跟作者非常相像,都更喜欢深入看代码并且打印信息,最后才是一步一步跟着debugger step through程序,最后关于notation的阐述还算小有得益,好吧,下一本是看雪的原创 2011-12-11 17:55:51 · 788 阅读 · 0 评论 -
日本人的技术书
最近看了两本日本人写的技术书籍,大致感受就是严谨加谦虚,第一本是debug hacks,主要讨论linux平台的调试技术,第二本是大规模web服务开发,全面讨论了一下web系统的构建,都不算太深入,但能起启迪作用,我觉得这才是最重要的,说不算太深入是没有像工具使用说明书一样一步一步介绍具体操作和各种陷阱,这真没太大必要,所以我还挺喜欢这种写法的技术书籍。原创 2011-12-03 23:06:23 · 6971 阅读 · 0 评论 -
Substitution Failure Is Not An Error
SFINAE原则初看是刺激的,写好之后是高效的,写错了就是既折磨编译器又折磨自己的。各种编译器对模板的支持程度又是不一样的,对待代码要有屈机精神,不然就只好向言不由衷的错误信息投降了。先旨声明,调试这里的代码用vc2008会顺利很多,template就是把编译器的功能发挥原创 2011-08-25 23:43:49 · 893 阅读 · 0 评论 -
模板强化RAII
RAII的应用在C++这种高危语言中尤其重要,结合模板,效果更爽。先看应用:#include "stdafx.h"using namespace Loki;void myFree(char* s){ if (s != NULL) { free(s原创 2011-08-24 17:59:13 · 632 阅读 · 0 评论 -
linux app 无 core dump 退出的处理
1,首先要淡定。2,在程序退出之后马上echo $?,获得返回数字R。3,计算信号码和退出码: R & 0x7f = signal_no (R & 0xff00) >> 8 = exit_no4,这时就知道程序何故退出了。至于我的状况,就是没有处理SIGP原创 2011-08-16 17:55:10 · 1047 阅读 · 0 评论 -
Tips to Handle Linux APPs Crack Shit
Problem 1: linux应用程序段错误挺常见,得淡定。一般处理手法:Solution:1.编译时加入标志-g。2.设置core文件大小。 struct rlimit res = { .rlim_cur = RLIM_INFINITY, .rlim_max原创 2011-08-15 11:39:05 · 693 阅读 · 0 评论 -
C++ traits两种用途
C++ traits两种用途1. 利用编译器为自己约束程序行为。//拒绝使用double的traits,完全特化templatestruct type_restrict{ enum{value};};templatestruct type_re原创 2011-08-15 09:49:03 · 852 阅读 · 0 评论 -
Weird Events
Q1: (surrendered) istream::gcount() can not work?A1: Now I apply strlen() function to the read-buffer instead of invocation to gcount() as a temporary alternative.I should overview and debug the STL a原创 2011-06-15 17:16:00 · 557 阅读 · 0 评论 -
WaitForMultipleObjects啊!
WaitForMultipleObjects等待多个线程的结束信号,无效,必须循环调用WaitForSingleObject,经过bing(最近毫无理由地支持bing)搜寻,总结了两个小细节如下: 1、_beginthread出来的线程完成后自动调用的_endthread会执行CloseHandle把线程handle干掉,而_beginthreadex不会。2、WaitForMulti原创 2011-06-09 11:02:00 · 1142 阅读 · 0 评论 -
linux connect mssqlserver
let the linux programm connect to mssqlserver, install the third library - freetds.here are the steps to make it work, don't ask why, just have a try.1,setup unixODBC./configure --prefix=/user/local/unixODBCmakemake install2,setup freetds./configure --pref原创 2011-05-17 18:46:00 · 1549 阅读 · 1 评论 -
临时对象的隐蔽性与野指针不崩之谜
C++危险众所周知,项目中写代码写得天昏地暗的时候就容易踩陷阱。不是我故意耍小聪明,是进度的紧迫性和头脑的疲惫程度导致我写了这样的代码(代码经过简单处理,隐去复杂性以及不涉密。^_^):char* tmpS=const_cast(string("hello").c_str());cout输出什么?"hello"。多悲剧的回答,答案是仅有一个换行符而已。因为临时对象string在调用流的时候析构掉了!(这个结论最后有代码验证。)所以这种情况就正常了:cout(string("hello").c_str())疑原创 2011-05-13 12:46:00 · 1263 阅读 · 1 评论 -
boost:tuple解码
tuple想必人人都会用,究之实质,其实就是模板全特化及部分特化的又一种应用而已。简要的实现如下: template struct Tuple { Tuple(){} Tuple(typename traits::type_traits::const_reference a, typename traits::type_traits::const_refer原创 2011-08-20 00:37:18 · 926 阅读 · 0 评论