终于有了间茅草棚

——我走时,会否有随风飘散的痕迹?

外面的风好大,雨也淅淅沥沥的。

世间种种的诱惑不惊不扰我清梦,山高路远不绝我追踪你绝美的笑容,登高一呼时才懂始终在为你心痛,俯首对花影摇动都是东风在捉弄

世间种种的迷惑都是因你而猜错,水光月光又交融描述这朗朗的夜空,生死到头的相从似狂花落叶般从容,当一切泯灭如梦就在远山被绝
随笔 - 42, 文章 - 2, 评论 - 269, 引用 - 3

导航

<2010年3月>
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

留言簿(10)

随笔档案

文章档案

收藏夹

其它的我

友情连接

网页连接

搜索

最新评论

  • 1. re: 陈刚
  • 中间件主要的好处在于便于整合,就像一个接口规范和标准。像游戏开发中3D图形技术有两套,有的游戏直接基于D3D或OenGL开发,现在更多的是基于一些图形引擎,像Ogre,Irrlicht等,在这些图形引擎下面去和具体的图形API打交道,从这个意义上来说Ogre和Irrlicht拥有一定的中间件的涵义(这些图形引擎不只是中间层,还包含有场景管理、渲染逻辑等更多内容)。加了这样一层后,当支持新的D3D10和D3D11时,中间层作出修改,原应用不需要修改就可运行,还有移植到支持OpenGLES的设备时,也是可行的。
  • --清风雨
  • 2. re: linux常见开发问题,.JPEG parameter struct mismatch
  • 你说的3.JPEG parameter struct mismatch没看明白,我现在也遇到了同样的问题,
    ”编译libjpeg的make文件里定位输出生成jpeg的地方“指的是哪啊,
    “打印出相关参数”也不明白
    “前台运行同样的./configure”什么意思?
    帮帮我了,谢谢!我邮箱litao_hao@16.com   qq;40362095
  • --haolitao
  • 3. re: linux移植建议
  • 这个学习了
  • --陈刚
  • 4. re: 软件开发模式猜测
  • 脚本在其可配置性、可扩展性上性能应该是已经超越了中间件技术。

    中间件在对其扩展、更新、配置时不知是否能做到依赖它的程序不中断运行呢
  • --陈刚
  • 5. re: 软件开发模式猜测
  • 对 “中间件模式” 还真不太了解。 

    不知 “中间件模式” 是否会影响运行、调试以及维护成本,以及如何能抽象出中间层?
  • --陈刚
  • 6. re: void *几用
  • class Sample
    {
    public:
        void draw( void *g );
    };

    我个人其实并不太认同这种做法,虽然实现了抽象但会加大维护代价
  • --陈刚
  • 7. re: 用自己的话浅谈封装
  • 封装也是一个不断完善的过程,当然再经过一段时间后随着技术的进步思想的成熟,也会推翻重来。
  • --陈刚
  • 8. re: linux常见开发问题
  • xargs不错,蛮有用的。
  • --hATEmATH的网上田园
  • 9. re: 关于“元编程”的浅思考
  • --免费打工仔
  • 10. re: 关于质数(素数)的算法

  • 是AKS方法。
    http://mathworld.wolfram.com/AKSPrimalityTest.html


  • --perry
  • 11. re: 关于质数(素数)的算法
  • 为了在数字比较小时计算得快些,可以应用一些初等数论的结论:

    1]
    仅计算6n+1和6n+5(n=1,2,3,...)形式的数。易知6n+2和6n+4是2的倍数,6n+3是3的倍数。因为2和3的倍数最多。
    2]
    根据“合数的最大的素因数都不大于它的平方根”定理,每次分解仅算到被分解的平方根为止即可。
    证明(一般的证明都不完整):
    设N=P*Q,P和Q是N的不少于1个素因数的乘积(指出这点很重要)。反证法可证P和Q都小于或等于N的平方根(否则P*Q>N)。等号当且仅当P=Q=N的平方根时成立(这时N是一个素数的平方)。

    1]可减少2/3的计算量,2]可再减少1/2的计算量。即为原计算量的1/6。

    几百位数位的数,建议采用ASK方法。





  • --perry
  • 12. re: 关于质数(素数)的算法

  • 素因数分解是一个NP问题。
  • --perry
  • 13. re: 关于质数(素数)的算法
  • 1121=19*59
  • --李圆欢
  • 14. re: void *几用
  • 方法都不错
  • --员工生日礼物
  • 15. re: void *几用
  • to oshj:
    最近才悟道这个用法,没想到你都用了很多了。

    to brent:
    不是为了玩才玩,这里每种用法在特定的情况下,都有他相应的好处。不过,我是做为自己记录的,指不定什么时候就忘记了,还可以这么用。
    1. 可以使得头文件简单,而且出于实现保密的需要,还是很有用处的。
    2. 很多时候对象本身应该简洁,但往往应对不同的需要,通常需要数据对应。举个例子,比如玩家在哪个房间,在哪个房间最好不要直接记在玩家身上,用数据注入的方式,能够很快的获得该信息。
    3. 因为是做为库暴露头文件的,使用者并不关心void *的实际意义,而且能够加快编译速度。真正要关心时,就Graphics.h这个头文件是不够的,通常会需要了解整底层个实现,才能较好的扩充。
  • --清风雨

阅读排行榜

评论排行榜

我犯的一个很愚蠢的错误,当时还以为没错

    其实,是一个很简单的错误。只要稍微用心点,就不会发生,可是我就偏偏发生了,而且好像这是第二次。
    我是需要x和x_last不同时,doSomeThing(),直到x和x_last一致。因为觉得if看起来不舒服,结果写了以下愚蠢的代码:
    while( x < x_last-- ) doSomeThing();
    while( x > x_last++ ) doSomeThing();
初看,自己真的没觉得有什么错,可惜的就是x_last--会执行到x == x_last了,还x_last--一次,从而,我那可怜的x > x_last ++也被判断了,还doSomeThing()了一次。
    还是不喜欢if(顺便,个人不觉得这里有什么实际的效率损失),改为了以下形式:
    while( x < x_last )
    {
        x_last--;
        doSomeThing();
    }
    while( x > x_last )
    {
        x_last++;
        doSomeThing();
    }
    下次,如果有人打算把类似第二个while的方法,简写为第一个while时,要小心了哦(俺就是想把第二个简写为第一个,而且觉得加上if else 难看,所以,犯了这个错误两次,第一次找出来了,结果等了几个月后,居然又误入歧途。呵呵,俺下次就会高度重视了!)。

posted on 2005-07-31 09:50 终于有了间茅草棚 阅读(5024) 评论(14)  编辑 收藏

评论

# re: 我犯的一个很愚蠢的错误,当时还以为没错

LZ的代码也写的太晦涩了(又不是搞源码加密),BS一下,嘿嘿。

#include <stdio.h>

int x=0, x_last=5;

void doSomeThing()
{
    printf("doSomeThing: x: %d  x_last: %d\n", x, x_last);
}

void printStatus()
{
    printf("    printStatus: x: %d  x_last: %d\n", x, x_last);
}

int main(int argc, char *argv[])
{
/*  
    ///// your code
	while(printStatus(),x<x_last--) 
        doSomeThing();
     printf("main: x: %d  x_last: %d\n", x, x_last);
	while( x > x_last++ ) 
        doSomeThing();
*/
    ///// my code
    int flag = x > x_last ? 1 : -1;
    /*
    while( printStatus(), x!=x_last ) 
        x_last+=flag, doSomeThing();
    */
    while( x!=x_last ) 
        x_last+=flag, doSomeThing();
	return 0;
}
2005-07-31 10:23 | 乾坤一笑

# re: 我犯的一个很愚蠢的错误,当时还以为没错

自偶点评一下:"需要x和x_last不同时,doSomeThing(),直到x和x_last一致" 所以就要判断“x!=x_last”或者“x<x_last || x>x_last”,把这种原子判断条件分成两部分来写,一方面会产生隐讳的逻辑错误,另一方面则对别人读代码造成极为严重的障碍。(汗!最近偶好像特自恋,老搞自偶崇拜,BS自己一下!)
2005-07-31 10:26 | 乾坤一笑

# re: 乾坤一笑

我以前应该也看到过类似的做法。

你这种方式好,确实应该先设立一个方向flag,然后同意逻辑处理。

我那个逻辑上本身就不独立,不过,贴出来,主要是引以为诫,告诫自己:不要为了所谓的书写优美或循环优化等而引入了错误,就这里,就是要特别注意我喜欢简写的++/--的问题了。
2005-07-31 13:02 | 清风雨

# re: 乾坤一笑

还有一个问题就是,个人从某个时候起,习惯了范围匹配,而不是精确匹配。
比如,如果精确匹配,遇到浮点时,就要小心了哦。

另外,范围的好处就是,万一软件发生故障,根据范围还能处理。也就相当于添加了一定的自我修复能力或加强了健壮性。
2005-07-31 13:07 | 清风雨

# re:大家

++,--的东西研究得这么细致 
又想起阿荣的话:细小之处往往最能体现实力!^_^
2005-07-31 16:41 | gaoqing000

# to 清风雨 :

还有一个问题就是,个人从某个时候起,习惯了范围匹配,而不是精确匹配。
比如,如果精确匹配,遇到浮点时,就要小心了哦。
-----
杀鸡用鸡刀,杀牛用牛刀。这个理由找的可真不高明!:)
2005-07-31 17:57 | 乾坤一笑

# 读下这篇文章,你就不会犯错误了

http://www.vckbase.com/document/viewdoc/?id=1372
2005-07-31 20:21 | 老梆菜

# re: 乾坤一笑

先:呵呵,一笑以为我是在为自己找借口。哈哈!

然:“直到x和x_last一致”是后来我从while总结来的,开始的实际还是x < x_last时要如何,x > x_last时要如何。个人很多时候觉得一句话很可能影响程序当时的写法。(如果,这个也觉得是借口,哈哈,那就借口好了。:})当然,如果是另一种同样问题的更好方法已经注意,那么一般情况也是会大脑优选的,也不会出现while1和while2。

感觉有点不实在说技术了。:}不过,还好,里面有两句有意义的话。
2005-07-31 20:56 | 清风雨

# re: 老梆菜

杨老师的文章粗略阅过。不过,对我可能实质帮助不大:},所以,也没有细看,只是看了个大概。
但,不论怎么说吧,还是很高兴能看到杨老师的文章连接于此。
2005-07-31 21:01 | 清风雨

# 就精确匹配

又看了一下。

个人习惯不好,在一个问题未完时,又出另题。

不过,看到的朋友,如果有可能,可以考虑范围匹配代替精确匹配的哦,不仅仅是浮点运算。他会给你带来好多好处的,一般来说好处大于害处。
当然,凡事都要因具体问题而议了,如果你觉得有更多理由,不屑于如此,那也不必如此。
2005-07-31 21:08 | 清风雨

# re: 我犯的一个很愚蠢的错误,当时还以为没错

"范围匹配代替精确匹配"说的可是如float型和0.0比较不能直接比的问题?比如f!=0.0要写成 f<-0.0001 && f >0.0001的问题?
偶就知道你要这样讲,所以偶写了“ 所以就要判断“x!=x_last”或者“x<x_last || x>x_last”,” 而不是仅仅写了只能x!=x_last。 嘿嘿嘿嘿。
2005-07-31 21:47 | 乾坤一笑

# re: 乾坤一笑

不是的,我说范围匹配不是就你的说法说的。
是说我当时放这个错误的一个潜在原因和下意识。后来,觉得范围匹配有很多好处,相对精确匹配而言,所以,顺便强盗了一下。

范围匹配也不限于浮点,那个其实也是个“精度匹配”的问题。范围匹配的一个基本好处,是可以预防错误,防止调试时遗漏的意外,保护软件。

呵呵,你的问题,我其实本来写的也是int,还一直没注意你把我x看成float的,如果float了,呵呵,还真的不能 x != x_last(除非它觉得玩起来很happy);还有,如果float,我也不能++/--的,呵呵,没必要那么特意的。

俺向来认为凡事在神而不在形,虽然,俺喜欢比较艺术一点的文字(我觉得这个是文字的神的一种表现,不扯远了)。
2005-07-31 22:13 | 清风雨

# 我的上一贴

shit,别字真多。
是 强调 不是 强盗。
2005-07-31 22:15 | 清风雨

# re: 我犯的一个很愚蠢的错误,当时还以为没错

我还是倾向于先判断两者的大小,然后使用while循环比对
2005-07-31 23:14 | hengai
标题  
姓名  
主页
验证码 *
内容   
  登录  使用高级评论  Top
[使用Ctrl+Enter键可以直接提交]