闲人草堂

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年9月5日

摘要: 项目中需要求解动态增长的线性方程组,方程个数会不断增加,需要使用高斯消元法来求解,每个方程添加完后,已知的变量值。代码中分了三个类,表达式expression,方程 equation, 高斯消元求解器gauss_eliminator。这段代码还是有问题,如果需要最新的,请访问我的github https://github.com/tfjiang/gauss_elimination 1 #ifndef GAUSS_ELIMINATION_H 2 #define GAUSS_ELIMINATION_H 3 4 #include <map> 5 #include <vector&g 阅读全文
posted @ 2012-09-05 10:09 闲人草堂 阅读(1882) 评论(0) 推荐(1) 编辑

2012年4月18日

摘要: 最近代码中用到很多无符号整数的二元运算,一直提心吊胆的,生怕什么时候加法运算就溢出了。所以有必要加个溢出检测。关于溢出,http://www.phrack.com/issues.html?issue=60&id=10,这篇文章讲的很清楚。检测无符号整数相加溢出的方法比较简单:首先在无符号表示中 a + 2^n = a;如果a,b两个无符号整数,都未溢出:a < 2^n, b < 2^n, 且a+b > 2^n,那么sum = a + b - 2^n , 即sum - a = b - 2^n < 0==> sum < a,同理可得 sum < b 阅读全文
posted @ 2012-04-18 19:34 闲人草堂 阅读(7172) 评论(0) 推荐(0) 编辑

2011年10月22日

摘要: parser,boost,property_tree,c++ 阅读全文
posted @ 2011-10-22 00:24 闲人草堂 阅读(3263) 评论(2) 推荐(0) 编辑

2011年9月11日

摘要: 博士第二年,其实博士生涯开始也没多久,我突然想放弃了,为此挣扎了很久,虽然挣扎的时间并不长,但是这个想法就想伊甸园的苹果,不断诱惑我,刺激我,左右着我的情绪。但是到了现在,逐渐淡了,我想我会继续坚持下去,拿到博士学位。我把我的这段心路历程记录下来,也许以后迷茫的时候,可以再翻翻。得益于发达的网络媒体,这个时代比以往任何时候都更充满诱惑:你上人人,看到以前的同学往返于国内外,周末出去游山玩水,喝酒唱... 阅读全文
posted @ 2011-09-11 18:00 闲人草堂 阅读(35239) 评论(183) 推荐(106) 编辑

2011年8月9日

摘要: 换到ubuntu,已经差不多快半年了。在emacs上,从一开始小心翼翼的摸索,到逐渐熟练,尝试了无数插件,终于搭建好了比较顺手的环境。酣畅淋漓的敲打键盘,所有的事情都在小小的黑窗口中进行,心头腾起骄傲而满足的快感,感觉编程的快乐莫过于此。但慢慢的,我又开始怀念windows上使用VS,那是另一种方便。代码间跳转是如此方便,工程结构一目了然,编译调试又是如此直观方便。我不想评价emacs,vim或者现代ide之间,孰高孰低。我只是作为一个最普通的程序员,有了些自己的心得。emacs,vim都是编辑器,或者是神的编辑器,或者是编辑器之神,都无关紧要,它们是很好的编辑器。我会想用emacs来写写脚本 阅读全文
posted @ 2011-08-09 15:52 闲人草堂 阅读(665) 评论(0) 推荐(0) 编辑

2011年8月5日

摘要: 程序运行中,最诡异的就是内存问题了。(限于个人经验问题,暂时只碰到这个程度的,如果还有诡异程度更甚的,请告诉我)内存问题仿佛天外流星,不知其何时来,不知其症状如何,飘忽不定,直到程序崩溃为止。今天就碰到了一例。void fun(){ vector<double> v1; vector<double> v2; process(); ........}在某个函数体内,申明了v1,和v2两个vector,然后balabala,直到要退出fun的作用域,析构v1的时候,程序崩溃。尝试着把v1,v2的申明顺序换了一下,症状变了,在析构v2的时候出错;接着尝试,把v1,v2设为st 阅读全文
posted @ 2011-08-05 14:30 闲人草堂 阅读(378) 评论(0) 推荐(0) 编辑

2011年6月13日

摘要: 今天发现了一个小陷阱,emacs中的eshell和其他shell在解释backticks(“`”)符号上完全不同。上网搜了一下,终于发现了答案。http://www.emacswiki.org/emacs/EshellBackticksThere are no `backticks` per se in eshell. Here is how backticks work in other shells: The commands enclosed in backticks are executed, and their output replaces the commands in back 阅读全文
posted @ 2011-06-13 23:03 闲人草堂 阅读(660) 评论(0) 推荐(0) 编辑

2011年6月10日

摘要: 在natty下搜索Windows printer via Samba,找到后无法连接上,仔细观察会发现url中有一些莫名其妙的数字,比如20。这些就是问题所在,在ubuntu 10.10中,对于url中的一些特殊符号都是用%加数字来定义的,比如空格是%20,“(”是%28,“)”是%29(没有引号)。找到了问题所在,那要fix就很简单了。在打印机属性中,把url中对应的特殊字符代表的数字前补上%,重新连接,打印成功!希望ubuntu natty尽快修复这个bug吧 阅读全文
posted @ 2011-06-10 12:58 闲人草堂 阅读(234) 评论(0) 推荐(0) 编辑

2011年6月9日

摘要: 这是我这几天倒腾wii的一点心得,贴出来晒晒,不足之处请大家批评指教啊。需求:有一个类Base,Base::fun()在不同平台下的实现不同(可能依托于第三方库),问题是,如何才能让我在调用Base的时候,不用区分平台,即达到一次coding,处处可编译通过?1 class Base2 {3 public:4 void fun();5 };解法1: 最简单的方法,就用这套接口在不同平台上写好实现,编译成静态库或者动态库,然后一个头文件,一个lib走遍天下。解法2: 稍微折腾一点,使用抽象类: 1 class Base 2 { 3 public: 4 virtual void fun(); 5 阅读全文
posted @ 2011-06-09 23:29 闲人草堂 阅读(841) 评论(2) 推荐(0) 编辑

摘要: 今天忙活了半天,结果发现罪魁祸首在使用了auto_ptr。auto_ptr本身不含有赋值语义,所以在它赋值给别人(例如传参时),实际发生的是控制权的转移。1 auto_ptr<TYPE> A,B;2 A = B;第二行执行完毕后,B的地址为0;这就是智能指针auto_ptr的缺陷。倘若遇到类似的情况,还是用boost的shared_ptr吧。另外转载一篇关于auto_ptr的文章,供自己学习。http://blog.csdn.net/normallife/archive/2011/02/23/6202930.aspx因为std::auto_ptr是转移语义,而STL容器的元素必须是 阅读全文
posted @ 2011-06-09 20:12 闲人草堂 阅读(2716) 评论(0) 推荐(0) 编辑