re: 2011学习计划 zuhd 2012-01-05 14:47
@卞壮
留下邮箱吧 一句话说不清楚 互勉
和楼主分享一下:
一般遇到这种需要下内存断点的调试,我可能会先检查代码,应该会有90%的概率是越界造成的,确定该内存是在堆还是栈,然后排查该变量上下的两个变量,基本都能找到,呵呵。请问楼主是UESTC的吗?
re: 打发寒假计划 zuhd 2011-12-30 15:34
@笨笨
要不切磋一下,哈哈
@春秋十二月
15K 是刀还是RMB 说清楚啊 我要 求压力啊 @——@
我来说点实际的,借姚明一句话:你怎样对待你的身体,
身体就怎样对待你。老话:身体第一。坚持多锻炼身体,养成习惯。
学会照顾自己,哪些要吃,哪些不能吃,人生不就是吃喝拉撒吗?
人生不只是写程序,卡马克还喜欢法拉利呢,给自己找个乐子。弹弹吉他,
写写毛笔字,还是要坚持。至于程序方面,不多言了,坚持。
BTW: 2 zhou8p
不要拿自己已经很努力了去毒化自己,有时候南辕北辙的努力
还不如懒惰。这句话我喜欢,小伙,我要加你
大神,看着你的总结,我知道,又要过年了。。。
今年,我收获了啥??
re: redis如何删除过期数据 zuhd 2011-11-30 09:25
关注下 redis这么火 打算研究下
支持下 加油 acm小伙
做题是一种享受 上班也许找不到这种感觉 珍惜
re: 服务器多线程方案的选择 zuhd 2011-11-23 09:13
send是要加锁的,session是逻辑层的session,从网络库继承出去的,能被网络回调的,至于是哪种设计模式我也记不住那名
re: 服务器多线程方案的选择 zuhd 2011-11-22 09:45
正如你说的多线程对于管理网络包的顺序很麻烦,IO线程+逻辑线程做起来比较清晰,估计大家都倾向于此吧,至于粘包和切包这个就是对IO数据流的重新整理分类,自己肯定要做个包长度吧。
a.在while中检查是否有完整包,有完整包,就调用下层session的逻辑,也能清晰分层做到的。
b.即使100的前一个用户断开,新的用户来了,也不会有麻烦,底层的网络库根本不会关心这个socket是谁的,照常处理IO就是,只是逻辑层的session要自己处理了
c.Send我是倾向于第一种实时的方案,也没有一堆的锁,一个连接一个而已,总算很清晰是吧,也值了
总结:1个IO+1个逻辑+1个session池
re: 最近真的被打击了,要发奋了 zuhd 2011-11-03 09:32
楼主的独白 也让我有所触动 这不就是大学时的我吗
我记得当时就处在浮躁 总结的恶性循环中
后来谈了个对象 嘿 你别说还真的好使了
心态也好了 代码量也上去了 题目也不停的被AC了
re: mysql字符串转义函数 zuhd 2011-10-19 09:07
不用mysql的逃脱函数?
re: 详尽的Mysql安装过程 讲解 zuhd 2011-10-09 13:38
sudo apt-get install mysql-
re: 一个母亲一生的8个谎言(转) zuhd 2011-09-08 09:26
母爱最大
re: Qt那点事儿(一) zuhd 2011-08-29 09:45
哥 你的文笔太有爱了 不懂qt
我是来看小说的
re: 一道简单的面食题来自CSDN zuhd 2011-08-22 11:20
注意:对无符号数,右移时左边高位移入0;对于有符号的值,如果原来符号位为0(该数为正),则左边也是移入0。如果符号位原来为1(即负数),则左边移入0还是1,要取决于所用的计算机系统。有的系统移入0,有的系统移入1。
re: spy++和游戏修改器 zuhd 2011-08-10 10:05
改变100为150,然后再链表中搜索等于150的。
这样啊,牛!
记得云风当时的意思是把AOI单独弄出来做一个服务器进程。楼主这个demo做的很有意思
re: 谈一谈网络编程学习经验 zuhd 2011-06-07 09:55
我主张,在具备基础之后,学习任何新东西,都要抓住主线,突出重点。对于关键理论的学习,要集中精力,速战速决。而旁枝末节和非本质性的知识内容,完全可以留给实践去零敲碎打。
这点我要好好学习下
re: 我也来个俄罗斯方块 zuhd 2011-06-01 09:35
8086我一般用emu 尽管傻瓜了点 但是方便啊
re: 开源一个BT客户端:BitWave zuhd 2011-05-30 09:21
这么巧?我学习学习
template <typename T>
ByteBuffer& operator>>(ByteBuffer& b, std::vector<T>& v)
{
uint32 vsize;
b >> vsize;
v.clear();
while (vsize--)
{
T t;
b >> t;
v.push_back(t);
}
return b;
}
======================================
小伙子,怎么支持vector<vector<int> >的数据类型啊?
re: 硕士之花陨落在普华永道 zuhd 2011-04-19 09:34
嗯 写的很好 尝试下
想问下 你写这样一篇博客是如何排版的?用了哪些工具?大概需要多长时间?谢谢
re: 取反操作的细节问题 zuhd 2011-04-08 14:46
@myjfm
嗯 我理解的补码的设计就是为了方便算术运算
re: 取反操作的细节问题 zuhd 2011-04-08 13:57
我们可以按照 mod 128来理解,即
-129 与 -1的补码是相同的
-130 与-2的补码也是相同的
那么
-128与-0或是0的补码应该也是相同的
那为什么不说
11111111是-129的补码呢,
却说是-1的补码呢?
这8个bit完全能胜任-129的所有的存储信息
所以我坚持认为10000000b是-128的补码是个约定,请指教
re: 取反操作的细节问题 zuhd 2011-04-08 10:47
在8bit下存储-129,也不是不能存储,但只是高位会被截取而已,所以存储的数据可能就不是-129了,如果非得说10000000b是-128,
我顶多理解它是一个约定,因为128用除去最高位之后剩余的7bit根本无法存储,存储的也是截取后的低7位,7个0。
re: 取反操作的细节问题 zuhd 2011-04-08 08:57
@myjfm
我去 我一直以为10000000B是-0
难道-0就是-128吗?从理论上讲不对啊,但是它加上1后确实等于-127
--!
re: 取反操作的细节问题 zuhd 2011-04-07 16:23
严格的讲
对于8bit的0x80也不能说是十进制-128的补码吧,最多说是10000000B的补码,当然进行逻辑运算的结果不会有错,如果补齐后最后截取低8bit的数据是
1000000B的话,我可能会说它是0,不知道理解有错没?
re: 取反操作的细节问题 zuhd 2011-04-07 16:10
基本明白你要表达的意思了,不过我觉得你表达的不清楚,可以这样理解不:
不够32bit的数据类型,高位自动补齐,至于高位补的是0还是1,有以下的判断:
1,无符号数补0
2,有符号数看最高位标记,标记为0,存储正数,则补0,标记为1,则补1,理由是它存储的是一个负数的补码。
re: 取反操作的细节问题 zuhd 2011-04-07 09:40
只有把这个内存变量放到寄存器的时候才这么做吗?
还有,
char a = 0x80;
变成了a--->0xffffff80
这两个值也不相等啊,这么算出来的结果有啥意义呢?
re: 被delete难倒了 zuhd 2011-04-01 09:44
@flyinghearts
那个拷贝构造函数确实有点问题,以前拷贝构造函数调用=写顺手了,没发现有内存操作的这么写有这个陷阱,改了一下:
stReplayData(const stReplayData& src)
{
if (this == &src)
{
return;
}
nDelay = src.nDelay;
nLen = src.nLen;
pData = new char[nLen];
if (pData != NULL)
{
memcpy(pData, src.pData, nLen);
}
}
stReplayData& operator = (const stReplayData& src)
{
if (this == &src)
{
return *this;
}
nDelay = src.nDelay;
nLen = src.nLen;
if (pData != NULL)
{
delete[] pData;
pData = NULL;
}
pData = new char[nLen];
if (pData != NULL)
{
memcpy(pData, src.pData, nLen);
}
return *this;
}
至于你说的:
另外,要先分配新内存,再释放旧内存,保证 异常安全。
好像我一直都是先delete 再new ,可能一直懒得用个临时的指针来保存pData吧,不过你这么说的道理是??
re: 被delete难倒了 zuhd 2011-03-31 11:56
@dizhu
在exe中new,不能在dll中delete的?
exe和dll用的是同一个堆栈空间的,
re: 被delete难倒了 zuhd 2011-03-31 11:41
void CReplayManager::ClearData()
{
VECREPLAY::iterator it = m_vecReplay.begin();
for (; it != m_vecReplay.end(); it++)
{
SAFE_DELETE((*it));
}
m_vecReplay.clear();
}
re: 被delete难倒了 zuhd 2011-03-31 11:22
@dizhu
看了头文件基本就能猜到代码了吧 中规中矩的容器操作代码而已
另:我在gcc中的头文件大量的使用了自定义的类,貌似没发现过什么问题,怎么用vc上来就碰到这个,是巧合还是必然?肿么办?有没有,有没有?
re: 被delete难倒了 zuhd 2011-03-31 11:13
问题我找到了,是我以前遇到的老问题
virtual bool PushData(stReplayData* pData);
这个接口设计有问题,dll的接口应该用标准的c++类型,我只知道其然,不知道所以然,了解详情的说下
re: 被delete难倒了 zuhd 2011-03-31 10:13
我更新了帖子 贴了更多的代码 想尝试的朋友 可以自己简单修改下即可
re: 被delete难倒了 zuhd 2011-03-31 09:14
@Mensch88
1. 就这段代码本身来说,有一个错误:拷贝构造函数 stReplayData(const stReplayData& src) 里的指针pData没有初始化!
拷贝构造函数是调用operator =来着
re: 如何书写权威的程序库头文件 zuhd 2011-03-18 09:27
#define BEGIN_CORE_NAMESPACE namespace {
#define END_CORE_NAMGESPACE }
对于这样的宏 我实在是不敢苟同啊 和宏的初衷有点背离不是吗?
至少阅读代码时我要跟踪下definition 装B成分太多
喜欢楼主这种写作风格,深入浅出,感觉像是以前高中时做证明题一样,很清晰
re: 程序员的3种美德 zuhd 2011-02-15 11:43
不敢恭维
re: 我的游戏编程之路(二) zuhd 2011-02-13 09:36
游戏开发-->网管-->破解-->外包-->flash
人生的大起大落
顶你