海边沫沫

相濡以沫,不如相忘于江湖
posts - 9, comments - 113, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
我前天偶尔逛到光谷书城,看到这本书就买了。呵呵。
re: QQ 对对碰外挂[未登录] 海边沫沫 2011-03-22 22:28
这种外挂的方法不适合于连连看、对对碰等游戏,逐像素分析太慢了,而且消掉几行后你还得重新采样。

最适合的办法是抓取网络封包,抓取游戏和服务器之间的通信数据,在这些数据中,肯定会用比较简单的数字表示每一个单元格是什么图片,也会用简单的数字表示什么时候消除结束,什么时候获得道具,等等。。。然后外挂分析这些数据,向游戏窗口发送鼠标消息即可。

逐像素分析适合于找茬这样的游戏。前一段时间我刚好谢了个找茬的小外挂,欢迎交流:
http://www.cppblog.com/youxia/archive/2010/11/29/135024.html
re: 从0开始复习linux一:su命令 海边沫沫 2010-12-09 18:47
Ubuntu我也不习惯

我以前也是用RedHat AS,后来听说了CentOS,就改用CentOS了
《深入浅出MFC虽然经典》,但是已经有好多年了。另外一本MFC方面的著作《精通MFC》,电子工业大学出版社出的,相当的好,我是读了一遍又一遍,每一遍都很有启发。不知道这本书为什么推荐的不多?
哥你从事的领域太NB了
re: 一个工具、一个库和一部小说 海边沫沫 2010-06-12 22:09
@空明流转
谢谢指正!
不是我不想了解,而是有很多东西我看不懂。我文章中列出的,是我稍微看得懂一点点的,呵呵。
对于C++0x的了解,我主要是看的刘未鹏的博客,还有一些通过搜索引擎搜到的零散碎片。
你能给我一些更好的资料吗?
我发现我上面的结论错了。刚才把代码输入到VS2008,调试了一下。发现:
*p=(int)test;确实只是把test的地址放到了*p里面,而不是调用test();

而在return的时候调用了test,然后出错。

说明*p这个非法内存访问是真的改变了main函数返回后执行的下一条指令的地址。
高手好多哦。你们想得太复杂了。

我认为这一句
*p = ( int )test;
调用了test函数,只不过test函数没有返回值,且p指向非法内存,所以给*P赋值就会犯错,于是程序就会挂掉。

楼主说的特性是不是test和test()是一样的啊?
re: Confused! 总结下心情[未登录] 海边沫沫 2009-03-28 10:40
我想你的郁闷主要是因为你们项目组的人不少,每个人写代码的风格都不一样造成的吧?

其实C++非常美,非常具有诗意的,但是如果你天天看别人写的垃圾代码,那无疑是一种噩梦。MFC并不难,关键是要理解,有很多时候我们并不需要MFC中的大多数特性,只需要用设计器拖放出一个简单的界面,然后和它交互,知道在哪个事件里写代码,知道怎么画图就行了。(事实上,MFC包含的内容远不止这些)

你可以到我的博客看看,我写过一个俄罗斯方块的游戏,只用了一点点MFC的知识,但是我认为我的C++代码设计得很优美。
http://www.cppblog.com/youxia/archive/2007/12/16/38605.html

用到了STL中的deque,用到了Factory模式,用到了多线程和线程同步的知识,用到了GDI绘图,但是没用多少MFC的东西。
re: epoll相关资料整理 海边沫沫 2008-10-16 20:43


windows中的完成端口也不错。Boost中的ASIO库也不错,前段时间我就专门去看Boost的ASIO的文档了。推荐博主看一下。
老兄,真的很佩服你

一是佩服你找工作下的苦功,IBM这样的公司都被你进去了,你这么复杂的经历,真不知道你的简历是怎么填的。我曾经去华为面过试,第一关技术关都过了,但是因为我的简历上面写的是非计算机专业的工作经历,结果在第二关被一个不懂技术的面试人员给否定了。

二是觉得你老是这样跳来跳去肯定不行,你必须要在同一个领域做深做大,如果没有高薪和高职位,像你这样工作十年了,肯定超过30岁了的,又有老婆孩子的,没有积蓄会过得很凄惨。我现在只工作了四年,薪水不超过6k,技术估计也没有你强,但是我不担心失业,而且离我升下一个级别估计只有一年了,这就是熬资历吧。
re: 痛下决心苦学 TR1 和 Boost 海边沫沫 2008-09-13 18:01
楼上的,我早就说了叫你不要复制嘛,这些空格是该博客系统自己添加的。

至于你说不存在这个目录,那就冤枉我了,请看下面截图:

re: 痛下决心苦学 TR1 和 Boost 海边沫沫 2008-09-12 22:08
@空明流转
微软的文档我还读得懂,不过它的Reference读起来确实要费点劲,Knowledge Base要好读一些,不过Boost的更好。
Bill Gates?
re: 用至少三种方法实现1+2+...+n 海边沫沫 2008-09-05 20:48
呵呵,模板元编程其实也是递归的方式
还有宏定义也可以做到,也是递归的方式
re: 《星际争霸2》引擎技术解析 海边沫沫 2008-09-03 18:49
牛X
收藏。这也正是我关注的问题。
re: Trait和Template Mataprogram的奥秘 海边沫沫 2008-09-01 19:57
@Kevin Lynx
你说得非常对,这几个例子都是《C++ Templates》上的,原因嘛,一是因为我觉得这些例子对于我们理解这些理论非常有帮助,二是因为以我的水平,也实在是翻不出什么花样来。

刚才去你的博客看了一下,觉得你写的那个利用宏进行代码生成的文章非常好,我想,使用模板元编程干这事,应该也是一样的吧。

我也觉得你是一个知识面非常广的实战型高手,不仅懂理论,还自己写了那么多的实现,确实令人佩服。
re: 瓦格纳的排场[未登录] 海边沫沫 2008-02-14 17:15
博主真了不起,艺术造诣这么深。
使劲顶!
其实我早就想在C++中使用IoC了,可惜能力有限,怎么都想不到一个好的实现方法,眼光有限,也找不到一个可以使用的IoC框架。
博主的这篇开山之作对我很有用。

有空多交流。
re: 写个小游戏练一练手 海边沫沫 2007-12-19 19:13
我今天稍微把游戏修改了一下,不用
if(pDlg->m_GameActionQue.empty())
{
::Sleep(100);
}
了,而是在对话框类中加入了一个CEvent类的变量m_event

然后,读取队列的时候使用
if(pDlg->m_GameActionQue.empty())
{
pDlg->m_event.Lock();
}
而在其他写入队列的时候调用
m_event.SetEvent();

这样修改之后,游戏对键盘的响应就基本上没有延时了,而且占用CPU要下降不少。
re: 写个小游戏练一练手 海边沫沫 2007-12-17 13:37
@TD

你说得不错,游戏中确实需要考虑线程同步问题。首先是多个线程访问同一个变量的时候,最好能加入竞争机制。在我这个游戏中,就没有对m_GameActionQue的访问进行控制,不过两个线程在尾部写,一个线程在头部读,倒没有出现问题。

其次是这里
if(pDlg->m_GameActionQue.empty())
{
::Sleep(100);
}
我在一个循环中不断进行判断队列是否为空,这种做法虽然可行,但是不好,因为在队列为空的时候不断循环判断很占用CPU时间。正确的做法应该是调用WaitForSingleObject使线程阻塞起来,当别的线程向队列中添加消息的时候解除阻塞。
re: MMORPG中游戏世界的构建 海边沫沫 2007-12-16 12:00
又有一个超级高手横空出现在cppblog了。
希望搂主把你安装苹果主题以及美化字体的过程都写出来。

还要告诉我们到哪里可以下载这些资源。
re: gcc 中std::list 的size()成员函数 海边沫沫 2007-12-13 14:21
不错,是没有办法改变分隔符。
不过可以重载operator << 和自定义一个自己的string来实现这样的功能。

不过这样搞划不来,不如使用getline
re: gcc 中std::list 的size()成员函数 海边沫沫 2007-12-11 15:09
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <iterator>
#include <algorithm>

int main()
{
std::ifstream input_file("D:\\emails100w.txt");
std::istream_iterator<std::string> input_begin(input_file);
std::istream_iterator<std::string> input_end;

std::vector<std::string> log_vector(input_begin,input_end);

//写入到另外一个文件
std::ofstream output_file("D:\\emails100w_copy.txt");
std::ostream_iterator<std::string> output_begin(output_file,"\n");
std::copy(log_vector.begin(),log_vector.end(),output_begin);
}

上面的代码是可以编译通过的,其中的D:\\emails100w.txt是一个包含一百万条记录的文本。

刚才我给出的代码通不过编译,确实是我的问题,主要是
std::istream_iterator<std::string> input_end;
这一行,最后应该没有括号。如果加上括号,编译器就不会认为这是一个iterator,就会调用vector的错误构造函数,就会出现博主所叙的错误。
re: gcc 中std::list 的size()成员函数 海边沫沫 2007-12-11 12:44
呵呵,为什么要用list?为什么不用vector?

还有,读取文件的代码写得太不C++了,像C的代码。

C++的代码,要么是
ifstream inputfile("filename);
string tmpstr;
vector<string> log_vector;
while(inputfile >> tmpstr)
{
log_vector.push_back(tmpstr);
}

要么是
ifstream inputfile("filename);
istream_iterator input_begin(inputfile);
istream_iterator input_end();
vector<string> log_vector(input_begin,input_end);
re: 从一道简单的练习题说开去 海边沫沫 2007-12-04 17:55
内存大小和寻址快慢有关系吗?vector是可以随机访问的,像数组一样,寻址任何一个元素的时间花费都是常数。list是不能随机访问的,才会出现容器越大寻址越慢的情况。

std::set和std::tr1::unordered_set是不同的,它们的底层实现不同。std::set不是hash,而是红黑树。
@heroboy

多谢指点。由此可见,我们不能在for each中修改容器的内容。
Hash table在VC++ 2005和VC++ 2008中,有hash_map、hash_set、hash_multimap、hash_multiset可用,在下一代C++标准中,它们将被更名为unordered_map和unordered_set。

用它们来去除重复项,的确很快,但是它们不能排序。
正准备学OpenMP,搂主的文章对我很有帮助。
re: 【原创】c++ server测试全攻略 海边沫沫 2007-11-16 17:39
收藏
re: 从一道简单的练习题说开去 海边沫沫 2007-11-14 16:03
按楼上的建议修改后,运行结果如下:
real 0m35.157s
user 0m26.005s
sys 0m9.219s

效率的提升并不大,由此可见,你说的并不是关键问题。
re: 高起点C++学习之路 海边沫沫 2007-11-02 15:25
<a href=http://minidx.com>minidxer</a>

不好意思,有很多东西让阁下误解了。

我的第一个回帖,同时对多个人的言论进行了辩解,即辩解了不是新东西都是高起点,又辩解了不要只局限于Windows操作系统,当然,也不要局限于Unix或者Linux系统。等等。

让阁下总认为我在标榜自己是高手,看来是我回帖时太懒惹得祸了。

“高手们都知道,GNU和开源社区的东西,都是可以跨越很多平台的”,这句话只是为了进一步说明不要局限于Windows,不要局限于COM,Windows下有COM这样的好东西,开源社区肯定也有好东西和它对应,而且开源社区的好东西,同样也可以运行于Windows。

至于阁下推论的知道啥啥啥就是高手的言论,那不是我的本意。
re: 高起点C++学习之路 海边沫沫 2007-11-02 12:26
我说过我精通C++吗?我的目标是要把自己锻炼成一个C++高手。

也不要认为我对“精通”有一个很“低格调”的理解,混迹C++世界的高手们都是不敢随便说自己精通的。C++是这样一个东西,你越学得多,越是觉得自己不够,越是想往里面钻研。C++太有吸引力了。

但Windows下那一套很显然不具有这样的特质,搞着搞着就会觉得心烦,因此,对这些技术都下过苦功,能够在自己的项目中熟练应用这些技术,就随便说个“精通”了;但也并不是全都了如指掌了,往上看要能把握整个软件系统的架构,往下看要能明白每个组件的封装细节,那在下确实是大大的不足的。
re: 高起点C++学习之路 海边沫沫 2007-11-01 18:15
我可没有说新技术就是高起点哦,是不是高起点主要还是看个人的见识是不是增长了。现在的我比读书时的我,那不知是高了多少了,不管使用的是不是C++语言。

新技术有时候也会带来挑战,如64位、多核、硬件虚拟化技术,我们不得不去面对。

对于COM,难道我不懂吗?不是我吹牛,Windows下的那套在下可精得很啦,MFC、ATL、COM+以及Windows下的多线程和网络编程本人都曾下过苦功,只不过现在兴趣已经远远超过Windows了。虽然我的文中不断出现Linux/Unix字样,也并不代表着只局限于Linux/Unix系统。我关注的,是更具通用性的东西。

高手们都知道,GNU和开源社区的东西,那都是可以跨越很多个平台的!

re: Vista初体验(上) 海边沫沫 2007-10-04 19:23
看我的计算机得分