既然,“图一-1-5,定义决定了它的形状就是多出来的块在下面的,如果再引入多出来的块在上面的情况就会重了”,那么为什么图一 -1-6中可以出出现未定义“多出来的块在上面” 的情况呢?是否定义是应该增加2种 多出来的块在上面的情况呢?
求大神答疑。
re: 努力奋斗,自强不息 Tim 2014-05-10 17:06
先生的“以家为本,以德为重,以才为主”是我也深以为然的。不过,“做非常之事,成非常之业”一句,随着自己年龄越来越大,自觉越来越空虚茫然了。@春秋十二月
re: 关于dll加载的一些理解 Tim 2012-05-23 13:44
你可以试试上面的代码。如果user32.dll由输入表导入的,是无法卸载的。而如果没有导入,是可以卸载的。这说明user32.dll本来就是可选的,不是常驻的了。不过,是不是“由输入表导入的模块”也就成为了你说的常驻dll,那就不知道了。呵呵@Lo
re: 论优越感 Tim 2012-05-16 10:02
O(∩_∩)O哈哈~
知识面很广,分析得也精辟!文章完全可以说为很多人注射了一剂定心针、强心针!
re: 剖析eSNACC的hash函数 Tim 2012-04-26 15:55
呵呵,谢谢支持~@嵌入式培训
设计成0xFF是非常有远见的方案,不过千万不能遗忘或者后面这个80了。因为我们必须要保证要舍弃的字节后面字节的第一位与标记位完全相同!
另外,我想了想,虽然以前在外部判断了正负了,但是好像mask=0xFF80也是可以的,觉得这样是不是更容易理解呢?@周星星
re: 学习和理解设计模式 Tim 2011-07-15 12:16
学习设计模式,最好是结合已有的源代码,比如你手头上工作的项目中有用了较好的设计模式,那么结合理论和代码去看就能学得更快更深了。反正,如果只看书,只有理论,基本上无法理解;而如果只有源代码,其中还包含设计精妙的设计模式,但是对理论一点不会,那么理解这些代码同样很困难。
BTW,如果有一个人帮你,给你分析说项目中哪里采用了什么样的设计模式,那么这是最好的学习方式。@ZK
re: 学习和理解设计模式 Tim 2011-07-15 12:11
我觉得最深刻的莫过于这本《设计模式:可复用面向对象软件的基础》了。不过也正因为她的深刻,所以有些难懂。不过没关系,暂时不懂的就跳过去,等以后经验丰富了,再看就明白了。所以,也就是说:这本书不是看一遍两遍就能说学会了的,是要常看常理解的。@ZK
re: MD5算法的C++实现 Tim 2011-06-15 21:05
学习~
re: Windows安全模式全解 Tim 2011-04-15 13:24
进入安全模式有两种方法:一是自动进入。当系统在引导过程中检测到某些问题,它将自动把计算机引导至安全模式。
检查一下是不是你系统的引导出了问题?
@chuanren
我没有你用的timer类,但是我想改用GetTickCount做性能测试应该不会比额外封装的类有更大的误差吧。另外,你提供的代码中似乎存在另外一个小笔误:
memcpy(new_str, old_str, strlen(new_str) );在new_str未初始化时,是可能导致崩溃的,一并修改memcpy(new_str, old_str, strlen(old_str) );
所以我运行的测试代码是:
int str_len = 819200;
char* old_str = new char[str_len+1];
char* new_str = new char[str_len+1];
for( int i = 0; i < str_len; ++i ){
old_str[i] = 'a' + i % ('Z' - 'a');
}
old_str[str_len] = '\0';
DWORD take = GetTickCount();
std::string strcopy( "String Copy: ");
{
//timer t(strcopy);
take = GetTickCount();
for (int i = 0; i < 1000; ++i )
{
strcpy(new_str, old_str);
}
}
cout<< strcopy << GetTickCount() - take <<endl;
std::string strlen_memcpy( "Memory copy with String length: ");
{
// timer t(strlen_memcpy);
take = GetTickCount();
for (int i = 0; i < 1000; ++i ){
//memcpy(new_str, old_str, strlen(new_str) );
memcpy(new_str, old_str, strlen(old_str) );
}
}
cout << strlen_memcpy << GetTickCount() - take<< endl;
在release下,运行结果是:
String Copy: 562
Memory copy with String length:359
在只循环1000次的条件下,就有这种差别,性能的差别可见还是很明显的。
@空明流转
呵呵,当然我在文中开始就强调了两者语义的区别。不过我这里只是从性能上给予一个小比较,我想如果可以,考虑到性能上的这一点还是有帮助的。@溪流
的确,按照分析,应该第二项运行时间比第三项应该更长,似乎你的运行结果更合理。但是我在我的机器上release测试了很多次,结果都差不多是我给的图。不过无论是你给的那个数据,都至少说明了strcpy的时间比memcpy还是明显要长的。@ths
我所向往的生活(转)[未登录] Tim 2010-06-18 10:59
真美!
@forestkeeper
Dinic是单纯的最大流吧。。
SPFA是为了求最小费用的。
----------------------
还有,楼上的人自重。。。。。。。。。。。T_T
/****************************************/
有一点相反的意见,主要的核心在于这句话 --
Simon的解释是:“这就是为什么实际上所谓的构架师不存在的原因。一个更简单的东西怎么会更有价值呢?每个人都能够画出这种构架图,但不是每个人都能写出好的代码。”
首先,也许并不是简单的东西就一定没有价值,呵呵,大道至简,这个道理稍微懂点哲理的人,都不必多做解释罢;
其次,也许并不是每个人都能画出架构图,更不必说对架构做近一步的描述、分析、设计与评估了,还要具备很良好沟通能力,和多工种的同事们打交道,去影响和推动;
最后,要赞同的是,好的代码能力肯定是基础,没有这个基本功,再符合美观的架构也可能只是空中楼阁,所以如果要在架构这条道上走下去,代码的功力必须越来越深厚。想起以前读研时的一个老教师,年纪很大写的代码依然很漂亮,没有多余的东西,很实在。
中国这个环境下,架构师任重而道远,如果无法改变环境,就想办法适应环境吧!共勉
re: 上海3G体验-中国移动[未登录] Tim 2009-08-26 23:22
话说TD-SCDMA是最垃圾的。CDMA2000可以达到200KB/S的速度
re: 截获全局鼠标消息研究 Tim 2009-08-11 09:39
莫非阁下意思是“到此一游”!~~~@虚拟主机
re: 截获全局鼠标消息研究 Tim 2009-08-06 14:37
WH_MOUSE_LL也不需要DLL,而WH_MOUSE就需要,user32.dll里会做进程DLL注入操作。
----你是说截获全局的WH_MOUSE_LL消息不需要将hook写到dll中吗?好像不是的呀?能给我看看示例代码不?谢谢~@foxriver
@攀升
感谢感谢,将来肯定还来上海和你们怀旧的。
我把你博客加到我网站的链接上了,链接描述我写的”完颜阿骨打怎么也没想到他的后代居然搞了IT“,哈哈
@攀升
唉,命运弄人。
看着你和Steven我羡慕啊,公司里面有这么强大的板子让你们搞Andriod。
想想要是我们三在公司待几年,自己出来开公司肯定没问题了。
Thinking in C++ 第二卷里面也有详细阐述。Uranus同志,把我的网站加入你的圈子啊,哈哈。
@diverger
谢谢您的指正!实在对不起!可能是写的时候太投入了,脑子里想法太多了,竟然拼错了!
写完以后我还特意检查了一下全文,担心打错字。没想到标题没检查反倒出错,很对不起!请原谅。
re: 谢谢你! Tim 2009-06-06 13:52
写得真美!好感动!
re: DBus 介绍[未登录] Tim 2009-05-13 11:42
搜DBUS来着,一看怎么是Uranus的blog。在google搜索结果里面排名还蛮高的,Uranus是越来越厉害了嘛。
我最近也在看一些linux kernel方面的东西,跟你的内容有点重叠。不过你是比较深入研究代码,我只是皮毛的看了一些原理。比如我昨天的一些零散的整理:
http://timyang.net/linux/linux-process/
re: VHDL语言数字钟 Tim 2009-01-25 09:44
各位朋友,大家好!谢谢大家的关注。这是我以前大学时做的电子课程设计,现在工作了,一方面是没有从事硬件方面的;另一方面时间太忙。对不起呀!
关于打不开的问题,可能还是具体硬件不对应,我找到了以前的文档,这里附带提供,有需要的一起参考吧@无名小卒
re: VHDL语言数字钟 Tim 2007-12-29 12:41
行,一起交流!QQ:370511754
re: STL问题系列一 Tim 2007-09-16 12:25
恩,你说得对!很有道理,谢谢!
@沐枫
re: STL问题系列一 Tim 2007-09-14 09:28
沐枫,你好!非常感谢你这样详尽的回答我这么多问题。我收获很大,谢谢!这里对于第5题,“《C++STL 中文版》2-4“请描述出一种可能的编码情况,使得表达式 x.first < y.first ||
!(y.first < x.first) && x.second < y.second 并不等同于 x.first < y.first || x.first == y.first && x.second < y.second。”事实上,书中给出的C++ STL源码中在比较时大部分都是采用这种写法。其实逻辑是很明显的,例如对pair对x和y,先比较x.first < y.first ,不成立。当x.first == y.first 时,在比较x.second < y.second,但写法在判断
x.first < y.first 不成立后,STL的作者好像认为!(y.first < x.first)的作用要大于x.first == y.first ,而按题意,他还要我们给出这样的编码,我给不出来,可能是经验有限。你的观点呢?
对第8题:8、《C++STL 中文版》第四章:4-7“在那种情况下,分配器应该以与模板类allocator不一致的方式来定义成员函数construct和destroy?”
>>
allocator的construct是用placement new来实现的.construct的目的就是用于调用构造函数.在C++中,似乎只有用placement new的方式来手工调用构造函数.不一致的话,是不是指不用调用构造函数,或是有特别的调用方式?想不出来可以不用调用构造函数的实现或别的调用方式.
或者是不一致的方式另有所指?
>>我想你的分析是对的,应该是一不一样的方式来定义成员函数construct和destroy,只是我看完了《C++STL 中文版》,对分配器的认识还是很模糊。不明白其深层原理。@沐枫
re: 应届毕业生,我对你非常的不满 Tim 2007-04-16 20:54
我认为有价值,但我也同时想了解你的身份!
这是你的经验之谈吗?