re: 正则表达式——一点小插曲 Fox 2008-05-08 12:39
正要看看正则表达式,不妨写详细点,参考一下:D
还是写出来看的清楚:static unsigned int __stdcall ThreadFunc( void *p )
{
Listener *listener = (Listener*) p;
应该是
Listener *listener = (App*) p;
re: 编程之美:一摞烙饼的排序(未完成) Fox 2008-04-23 17:56
我的本意是找一种最优算法,可惜数学基础太差,对各种算法及其复杂性的计算力不从心……
re: 编程之美:一摞烙饼的排序(未完成) Fox 2008-04-22 12:38
你这个在我文中给出来了,基于冒泡排序的思想。
次数不能达到最少。
re: 编程之美:一摞烙饼的排序(未完成) Fox 2008-04-21 20:21
这个问题,如果有哪位TX实现了,给个链接我去学习一下,如果只是简单给出分析的话,就未必经得住推敲了……
老师教我、爹妈生我、朋友帮我、共产党哺育了我、全国人民感染了我……
re: 编程之美:中国象棋将帅问题 Fox 2008-04-19 15:05
re: 编程之美:中国象棋将帅问题 Fox 2008-04-18 11:15
@Xin
输出的都有啊:-),总共81-3×3×3=54种合法位置。
给的图也很清楚啊,看不清的话,直接查看原图吧:D。
re: 编程之美:中国象棋将帅问题 Fox 2008-04-18 11:01
我还是中规中矩的按照题目的要求去考虑如何只用一个变量、一个循环实现。写完了,贴上来才看到书上的几种方案,本来想写N>=3的一个统一算法,后面考虑了一下,有点麻烦,也未必能实现,就算了。
另一个就是本来想加一个宏的实现,效率又高,而且一个变量都不用。就一个OUTPUT。
#define OUTPUT CALC(3)
#define CALC(N) ....
#define ...
本质上还不如上面的代码。后面觉得有点偷奸耍滑的味道,算了。
楼上说的方法也是些“奇技淫巧”了,后来看了下书上的,居然还有用结构体变量的,我心想:成员变量就不是变量了?
re: 2008-02-15买了新车! Fox 2008-04-09 23:44
如果在成都就好了……
之所以保留诸多术语,是为了以后加到论文里方便,但仔细看的话,还是可以看得懂的,如果懂点数论知识的话,更好。
re: 网络游戏安全思考——伪随机数篇 Fox 2008-04-03 10:40
@Kevin Lynx
Xn+1 = (a*Xn+b)mod c
a, b, c通常是素数(仅仅是通常),说白了,这样一个线性同余函数其实就是所谓的Hash函数,选值不是固定不变的,ms Knuth的编程艺术(Vol. 2?)中对a, b, c的选取原则有提供。
@len
马氏回转是比较快的了,只是不是密码学安全的算法。
@杜中伟
没有考虑过遗传算法、模糊理论、神经网络能否提供真正随机的实现。不过这个倒是可以考虑,个人感觉上面几种即使实现起来,效率是个问题。
1、是指继续完成新的wsarecv。
2、我的理解是socket和wsasocet的区别只是wsasocket可以自由决定是否使用重叠I/O,和阻塞与否没有关系。
3、恩,应该是允许auto才对。
4、你让我不得不把一个本来认为理解了的问题思考再思考,的确有压力!
re: 不怕无知,但怕无畏 Fox 2008-03-27 13:40
@yafare
来这儿的每个人都是有大脑的,回复的人更是经过大脑才说过的话。
我个人感觉我这篇blog和回复没有任何恶意,而且初衷也是让自己有时间反思一下自己,可以说,主要是写给自己的。
但很多回复的朋友认为我是炫耀或者故意刁难,我实在冤枉。
re: 不怕无知,但怕无畏 Fox 2008-03-27 13:31
@yafare
没有看过crt源码
至于给出的代码没有考虑首地址对齐,是因为我看过云风的这篇blog,上面对于4B以上,没有首地址对齐的汇编。
而且VC默认结构成员对齐是8B,所以就把前面一点去掉了。
如果真看过这样源码的我还不会去问了,就像我没有看过memcpy和memmove(当然,刚才看了),我只是给出自己的理解,我自己还是偏向于问题的思考重于知识的学习。所以你提到mmx、sse、crt源码,可以展示知识面的广和深,却不能完全满足对人的考察,当然,如果对这个点能够掌握这样的知识,至少可以说明他动过脑子了。
;memcpy.asm - contains memcpy and memmove routines
;
; Copyright (c) Microsoft Corporation. All rights reserved.
;
;Purpose:
; memcpy() copies a source memory buffer to a destination buffer.
; Overlapping buffers are not treated specially, so propogation may occur.
; memmove() copies a source memory buffer to a destination buffer.
; Overlapping buffers are treated specially, to avoid propogation.
;memcpy - Copy source buffer to destination buffer
;
;Purpose:
; memcpy() copies a source memory buffer to a destination memory buffer.
; This routine does NOT recognize overlapping buffers, and thus can lead
; to propogation.
; For cases where propogation must be avoided, memmove() must be used.
;
; Algorithm:
;
; void * memcpy(void * dst, void * src, size_t count)
; {
; void * ret = dst;
;
; /*
; * copy from lower addresses to higher addresses
; */
; while (count--)
; *dst++ = *src++;
;
; return(ret);
; }
;
;memmove - Copy source buffer to destination buffer
;
;Purpose:
; memmove() copies a source memory buffer to a destination memory buffer.
; This routine recognize overlapping buffers to avoid propogation.
; For cases where propogation is not a problem, memcpy() can be used.
;
; Algorithm:
;
; void * memmove(void * dst, void * src, size_t count)
; {
; void * ret = dst;
;
; if (dst <= src || dst >= (src + count)) {
; /*
; * Non-Overlapping Buffers
; * copy from lower addresses to higher addresses
; */
; while (count--)
; *dst++ = *src++;
; }
; else {
; /*
; * Overlapping Buffers
; * copy from higher addresses to lower addresses
; */
; dst += count - 1;
; src += count - 1;
;
; while (count--)
; *dst-- = *src--;
; }
;
; return(ret);
; }
这是给出的基本的算法,都是bytecopy的,但具体的实现不是这样子的。
下面是汇编实现,考虑对齐的。
; - move x = ((4 - Dest & 3) & 3) bytes
; - move y = ((L-x) >> 2) dwords
; - move (L - x - y*4) bytes
crt源码:
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
感觉没有使用dwordcopy。
对于memcpy这个问题,看不看crt源码和汇编,相信很多人在我写过这篇文章和前面的回复之后都可以知道怎么实现了。
对于技术批评,我会虚心,尤其是和你们的讨论过程中,我还特意看了crt源码和生成的汇编,所以,非常感谢,以后如果再跟别人讲问题的时候,自己还是要把问题搞得颇为清楚才好。
但对于人身攻击和做人问题,我就恕难忍受了。
re: 不怕无知,但怕无畏 Fox 2008-03-26 10:55
一天两天怀不上,是正常的,可以接受的。
如果100天都怀不上,你是不是还有性趣?
re: 不怕无知,但怕无畏 Fox 2008-03-26 10:53
照楼上的意思,我该怎么做?
我只想找个可以干活的人,妄谈其他都是多余的。
如果找老婆只为传宗接代,是不是生育能力最重要呢?你告诉我感情可以培养、孩子可以领养,不都TM扯淡呢吗?
re: 如何反外挂? Fox 2008-03-24 09:04
其情也肯肯
其言也凿凿
re: 不怕无知,但怕无畏 Fox 2008-03-21 12:47
@yafare
不怕无知,但怕无畏,我也不是没栽过,也不是没被BS过,虽然资质愚钝,但我一直在努力,如果真愿意做技术,有人给你指出来,你应该怀着感恩的心:)
re: 不怕无知,但怕无畏 Fox 2008-03-21 09:45
@raof01
是的,所以我开始并没有想去追问一些问题。现在提出来也只是讨论一下一个程序员对于编码应该有的态度。
我个人一直认为,一个项目的成功,需要几个对C/C++(其他语言也一样)编码抱着像对女人一样的感觉,如果你不是真的爱她,就不要说爱她,如果你只是喜欢她,也不要说爱她。因为你可以喜欢很多女人,但你只会爱上一个,这一点符合编译原理上讲的局部性法则。
如果你只是把它当作一碗饭吃,我就会很不爽了。
当然,我只是一个纯粹做技术的,而且做的不纯。语言风格只是对事不对人:),请大家不要人身攻击啊,我很无辜:)
re: 不怕无知,但怕无畏 Fox 2008-03-21 09:31
@cppexplore
一语中的
如果答案写成这样,我也会很高兴了,起码是能够从不同的角度解决问题:P
#define my_memcpy memcpy
re: 不怕无知,但怕无畏 Fox 2008-03-21 08:55
@adsf:不怕无知,但怕无畏,我也不是没栽过,也不是没被BS过,虽然资质愚钝,但我一直在努力,如果真愿意做技术,有人给你指出来,你应该怀着感恩的心:)
@kacy16
主要就是字节对齐和DWORD(4B) copy。
字节对齐主要体现在首地址不是4的倍数和尾部不足4B的情况处理,这种情况下,你只能按Byte copy了。
@cppexplore
其实如果代码写多了,这个问题应该是每个人都会不自觉得去想的,或者就算不想,也该有自己的一个想法。
re: 最近接触的东西 Fox 2008-03-13 02:49
模式倒是不错,模板没感觉。你也没有给出自己的理由,只是说别人这样做的:)
我的理由:
1、语言工作者要提供面向所有coder的需求实现,而你我充其量是对着3、5个人,而这3、5个人尚且×××;
2、不用模板和高级特性能实现的很好的东西,如果没有特别的通用、高效、安全的考虑,没必要让其他coder花几个月去学习并使用它们,因为你写出那些code都是在学习了很久之后,除非你能把他们封装的像stl那样让人忘记他们,甚至不让cloudwu指出诟病;
3、在跨平台还是一个很遥远的东西的时候,没必要写一个通用库,毕竟,MS、IBM、SUN都不用一个线程库,如果真有像socket那么NB、那么perface的东西,为什么大家不要一个呢?
4、设计本身最重要。
5、over。。。
又快3点了,我日。。。。。
PS: 忘了说了,我居然第一个来了。。。荣幸之至!
re: 很久没有这种感觉了 Fox 2008-03-07 16:25
@浪迹天涯
成都的一家游戏公司;)
re: 很久没有这种感觉了 Fox 2008-03-07 02:25
不怕无知,就怕无畏。
——说给自己听的:)。
昨天主要是把BS搭起来了,顺便写了个dll,被Bugs无情的pass了,先BS一下他,然后把更多的BS留给自己。
今天起来之后主要把消息补充完整……
@kevin lynx
nonblock io >> overlapped io >> iocp
不知这样说明白没有;)
re: 再谈sizeof()的问题 Fox 2008-03-05 10:28
问题出在union的对齐上面,要按照单位最长的成员对齐。。。。
学习了
re: 再谈sizeof()的问题 Fox 2008-02-29 23:57
int 4
union 20
c 10
34
如果考虑4字节对齐,应该是36
re: 网络游戏安全思考——IPSec篇 Fox 2008-02-29 09:22
@xingd
不是;)
re: 网络游戏安全思考——反外挂篇 Fox 2008-02-27 21:10
@ood
分析的很有道理!
根据玩家情况(支付CDKey费用与否)调整爆率,这个思路更加灵活,3X!
:)
re: 网络游戏安全思考——反外挂篇 Fox 2008-02-27 10:53
@abettor
一旦客户端被逆向,分析网络协议是很简单的事情了,因为对协议的解读是在客户端也有的。
re: 网络游戏安全思考——反外挂篇 Fox 2008-02-27 08:56
@eating
ascent和脱机挂没有关系,提到这个纯粹是为了提醒自己找时间查查。
re: 网络游戏安全思考——反外挂篇 Fox 2008-02-26 21:16
听一位网友提到WOW的ascent,有时间查查资料:)。
re: 反外挂的一点牢骚 Fox 2008-02-15 09:15
只要能解包,随机的怪物客户端是可以知道的,而且太随机对玩家的体验也要差很多(老是变的话,玩家会难以适应),尤其是对韩式打钱、打怪升级的网游来说更是如此。
re: 反外挂的一点牢骚 Fox 2008-01-26 09:03
@ood
就像楼上说的,封IP是不行的。
@汪江涛
验证码技术和图像识别技术相生相克,很难根本消除外挂。至于你后面说的方法,感觉也是治标不治本,因为只是让外挂的选择空间没有那么大,还是没有办法防止外挂登入。
所以问题的关键是:如何防止外挂登入?
提个建议,不要用摘要方式发文吧?每看一篇文章都要点击链接进来,不方便。
re: 今天完成了下线通知功能 Fox 2008-01-25 09:21
这一块应该属于服务器的功能,下线通知和视野内玩家通信基本都是消息分发实现吧?
re: 异步回调的一种封装 Fox 2008-01-23 13:17
恩,其实很多都是借鉴os lib里面的思想,放在项目中具体实现以供自己使用的。
因为角色的关系,并没有过多研究这些库的源码。。。不好不好。。。
re: 门窥多线程安全 Fox 2008-01-14 14:48
@ms.gofixiao
恩,因为毕竟不是对多线程的技术要点都有一个全面的把握,所以要想好好写,也不容易。。
re: LOD地形设计(一) Fox 2008-01-14 11:21
3d地形,一般8叉树多些,关注一下。。。。。
re: 圣诞:西岭雪山行 Fox 2008-01-11 18:37
@江水兽
哈哈,我现在回过头去看当时,觉得那个时候的文笔真好……
现在是怎么都写不出来了,可能是工作了,人也俗了,GF就经常说我,现在只知道工作……
汗一个。
re: 门窥多线程安全 Fox 2008-01-11 18:17
@漂泊者
也没有多深入,只是想在年轻的时候做点事情……
今天看到几句话,很有道理,与各位辛勤工作的朋友共勉:
不能饿了才吃,不能渴了才喝,不能困了才睡,不能累了才歇,不能病了才检查。
re: 门窥多线程安全 Fox 2008-01-11 18:16
@minidxer
是啊,平时工作比较辛苦,出去玩一玩,放松一下啊 :)
re: 门窥多线程安全 Fox 2008-01-11 18:15
@mugong
现在不想在blog里写带代码的东西,精力太有限了,只想在这儿放松一下,还请原谅 :(
re: 一个快速开方的函数 Fox 2008-01-10 04:19
不仅仅是位运算的问题,还涉及到float与int的存储对位问题 :|
re: 门窥多线程安全 Fox 2008-01-10 04:11
因为今明两天要去雅安碧峰峡一游,所以,沙发留给自己了,也对到这儿的兄弟们有个交代……