包括拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
都是转载的,而且都是没有经过测试的源代码,看看思路就行了,作为资料在这里保存一份下来。
风雷天地–技术与生活
all about software code
包括拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
都是转载的,而且都是没有经过测试的源代码,看看思路就行了,作为资料在这里保存一份下来。
很多朋友在编程的时候都会遇到要使用随机数的情况。怎样获得在一定范围内的随机数呢?
这篇文章和浅谈获得随机数的几种方法是我07年初写的了。当时发在bokee那个网址上,本来早就遗弃那里了,今天一个网友发邮件问我上面的一个问题,我好奇得回去瞧瞧,这不看不知道,一看吓一跳,那里居然还保存着,bokee官方也没有删除,还有不少网友在上面留言,浏览量已经达到了28w多了……上帝,我放弃那里都已经一年多了……随手翻了翻,觉得有两个帖子可以贴过来作为入门文章,就转移过来了。
昨天晚上在写一段代码的时候,发现有上千个字符串要处理,查找,以前搞嵌入式编程,没有这么多数据要处理,一般遇到这种情况都是直接用简单的二叉树了事。现在这玩意对性能要求挺高,数据又多,怕普通查找树到最后容易不平衡,所以决定采用平衡树来做。
除了简单的链表队列查找树以外,大多数的数据结构都还给老师了…….没办法,赶鸭子上架,找了一本“数据结构与算法分析”的书,看了看上面的AVL树介绍。介绍倒是挺清楚的,不过天杀的居然只有insert的代码示例,但我这里关键是要delete的实现。于是乎,“拿来主义”的幻想就此破灭。一看时间,只有半个小时就要交code了,估摸着自己写了一个delete出来,只试了几种情况,也不知道是不是普遍性正确的,所以贴上来,如果有朋友稍微有耐心看完发现有错误,希望指出,呵呵。
今天在Unix新闻组上看见一个帖子的讨论,破有感触。以前在编写应用程序的时候,有时候会面临一个比较头疼的问题:程序是否需要去获得有关系统当前可用内存的信息?通常,每一个观点都有正反两派,尤其是在网上的讨论,这个问题也不例外。 反对者说,“可用内存”这个概念实在太抽象,其实应用程序根本就没有必要去关心它,因为分配内存是操作系统的工作。赞成者说,有可能存在一些情况,应用程序需要合法地知道当前系统可用内存有多少。公说公有理,婆说婆有理,有些事清本来就是没有确定的答案的,因此我们也没有必要在这个问题上下一个明确的判断。不过具体针对这两种观点展开一些讨论,倒是有点意思。我以模拟辩论会的形式来一一讲出支持和反对的理由,希望各位能够适应这种方式^_^ 支持者: 感谢CCTV,感谢ChinaV,感谢Comp.Unix,感谢forwind让我有这个机会站在这个舞台上为大家陈述我的观点…….好了,切入正题,为什么我支持“允许查询”这个观点呢?,好,假定如果你是在编写一个专门用于报告可用系统资源的程序,例如Top……
提起 Qt Designer,搞linux的朋友早就非常熟悉,linux下界面编程基本都用它。但是windows下,用qt编写GUI的人却不多,西电我听说的也几乎没有。有人说,我直接用MFC不就行了?我觉得吧,MFC是一个框架,但它不应当要求使用它的人熟悉了整个框架之后才能够使用这个系统,但很显然,如果你不了解内部机制,是不太可能把它用好的,我不能解释清楚为什么会出现这种现象。而且,MFC只适用于WIN平台,Qt可以在Windows, Linux,Mac等上,MFC跨平台的特性远没有qt好。最重要的一点是,我比较懒,还不喜欢上层程序的编写,让我因为想做界面去学MFC,实在不爽,因此就选择了Qt拉。
有朋友说过,使用Qt库构建用户界面其实并不难,甚至比wxWidgets更加简单,稍加学习即可入门。它还是跨平台的,而其开源版同样是免费的,更要命的是开源版在Windows下仅支持MinGW,简直是为我们的需求订做的。——在这里需要重申,使用RAD的目的不是让你学会懒惰,去荒废 Windows或Linux的GUI SDK,而仅仅是一种快速建立demo的手段。C++下的GUI库并不少,之所以选择Qt,不为别的,只因为它提供了最好的RAD。当然这只是个小的推荐而已,C++领域图形库众多,每人都有自己的需要和喜好,并不想将“自由软件圣战”等口水引到这里^^。
很多朋友在编程的时候都会遇到要使用随机数的情况。怎样获得在一定范围内的随机数呢?如果是有特殊要求的随机数呢?下面是关于这个的详细探讨,
让我们来看看下面的代码: int i=7; printf(“%d\n”, i++ * i++); 你认为会返回什么?56?no。正确答案是返回 49?很多人会问为什么?难道不该打印出56吗?在ccfaq中有非常详尽的解释,根本原因在于c中的序列点。
如果遇到向数据文件读写结构的问题,会让很多编程人员都非常头疼。一般来说,最简单,最常用,最清晰的办法是用 fwrite() 来写一个结构 fwrite(&somestruct, sizeof somestruct, 1, fp); 对 应的 fread() 调用可以再把它读回来。但是这样写出的文件却不能移植。为什么呢?我们知道,结构中,各个成员在内存中的存放并不是紧挨着的,而是可能有一些空位,这些空 位的目的是为了填充,保持结构中后面的域的对齐,大多数情况下,这是必须的。为了高效的访问,许多处理器喜欢 (或要求) 多字节对象 (例如,结构中任何大于 char 的类型)不能处于随意的内存地址,而必须是2或4或对象大小的倍数。 正是因为这该死的原因,让我们无法很好得移植这种文件,比如如果结构包含任何指针,则只有指针值会被写入文件,当它们再次读回来的时候,很可能已经失效。 最好的解决办法,就是写一对函数,用可移植(可能甚至是人可读)的方式按域读写结构。尽管开始可能工作量稍大。 那么,我们如何确定域在结构中的字节偏移呢?ANSI C 在 中定义了offsetof() 宏,用 offsetof(struct s, f) 可以计算出域 f 在结构 s 中的偏移量。如果出于某种原因,你需要自己实现这个功能,可以使用下边这样的代码: #define offsetof(type, f) ((size_t) \ ((char *)&((type *)0)->f – (char *)(type *)0)) 当然请注意,这段代码并不是100%可移植的。
在发表之前首先声明,这篇文章是我大一时候写的,最早以“雷风”的名字发表在21ic的论坛中,现在不少人转贴根本不著名“转”,甚至自己还标一个“原创”,还有人写个“作者不详”,拜托大家转贴还是要有点专业精神好不好。 之所以产生写这个东西的想法,是因为趁着大一寒假这段时间看了看学习板的源程序,在看lcd的时候很不顺利,花了五个晚上才看完(白天偷懒了^_^!,毕竟在春节嘛)。联想起还有很多水平和我差不多甚至可能还低一点的菜鸟,就觉得有义务把五个晚上的学习心得写出来。 这个心得是针对学习板上的lcd 驱动芯片SSD181X系列写的,当然思想应该是相通的。其实是我没有用过其他系列lcd(众人呕吐ing……)。好了,接下来进入正题。
假如,你是一个linux编程方面的初学者,那么,在开始这段神奇经历之前,你一定会对这篇文章所讲的一些方面非常感兴趣。特别当你以前是一个 windows环境下的程序员的话,那就必须改变一些编程方面的想法和思维,这样当你遇到完全不同的理念和思维方式的时候,才能将这种所谓的“文化”差异带来的影响降到最低。 针对程序员,特别是一些有经验的Windows程序员在论坛上所问的关于linux编程方面的常见问题,我的建议如下: