Python调用C/C++模块
Python作为最近要烂大街的语言,器全能型很大程度上体现在可以调用其他语言模块来对底层或者上层接口,
阅读全文…
Python作为最近要烂大街的语言,器全能型很大程度上体现在可以调用其他语言模块来对底层或者上层接口,
阅读全文…
这是很早以前已经看过的,最近无意中又把保存的文章翻出来时,想起很多朋友问过矩阵,虽对矩阵似懂非懂,但却很想弄懂它,希望这几篇文章能帮你一下,故转之:
读完黄仁宇先生的《万历十五年》已经很长时间了,纸板书和电子书各一遍,我本不常写读后感,但是却总想写点什么,思前想后,心里只觉得说不出的惆怅。
回过头来看中国的历史,不能不悲哀的发现,两千年来的治乱兴替无非是一个原地打转的怪圈。
自汉代儒家思想上升成为意识形态之后,庞大的帝国所赖以维持秩序的是孔孟之道。但孔夫子的道德是抽象的准则,真正在人与人之间起实际润滑作用的是”礼”,各种各样名目繁多的“礼”保证了整个社会的运行秩序。 “我们这个庞大的帝国,在本质上无非是数不清的农村合并成的一个集合体,礼仪和道德代替了法律,对于违法的行为作掩饰则被认为忠厚识大体。各个机构之间的联系,从来也没有可资遵守的成文条例。”
make file全部手工编写对于较大的工程来说应该是个噩梦来,还好有和我们一样的懒人开发来automake 工具进行make file的自动生成。
对于make file的原理,大家可以看下陈皓写的比较经典的《跟我一起写make file》。
本机用的实验平台为 ubuntu 11.10,对于其他linux发行版应该不会有太大区别。
阅读全文…
看书的时候偶尔发现了Shell的这么个有趣的功能,here document 就是一段特殊目的的代码块. 他使用I/O 重定向的形式来将一个命令序列传递到一个交互程序或者命令中, 比如ftp, cat, 或者ex文本编辑器.
COMMAND HERE ... HERE |
相信大家做shell脚本时,经常遇到耗费时间的问题,这时如果有一个进度指示器岂不更好,这在其他语言中很容易就实现了,在shell里也不难,看下边的几种方法:
(1)使用一系列圆点来指示进度:利用每隔几秒就打印一个点来指示,看源码:
====
注:以下结论皆基于rational agent理性人假设,切勿在生活实践中生搬硬套。否则错失mm莫怪笔者……
====
如果你在图书馆枯坐,一个美女主动搭讪,还要求和你玩个游戏。那你可要小心了,因为这个游戏里说不定就藏着一个陷阱,而这个陷阱连号称“IQ最高”的人都未必能洞察。身为死理性派,怎么可以“被人卖了还帮着数钱”呢?看看本文怎么揭穿美女的小把戏吧。
还记得玛丽莲.沃斯.莎凡特(Marilyn vos Savant)吗?她是吉尼斯世界记录认定的最高IQ人类,在杂志《Parade》上开过一个名叫“问问玛丽莲”(Ask Marilyn)的专栏,专门解决读者的各种疑难杂题,最著名的自然是 三门问题 ,她高明且不可思议的回答让无数人伤透了脑筋。不过常在河边站哪有不湿鞋,就是这样一个“IQ最高”的人,也有糊涂的时候。来看看这道连玛莉莲都回答错的题吧。
可以通过 windows API CreateProcessA()启动一个进程,函数定义如下:
BOOL WINAPI CreateProcessA(
LPCSTR lpApplicationName,
LPTSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTUPINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
CreateProcess的详细介绍参见: http://msdn.microsoft.com/en-us/library/ms682425.aspx
1、mutable
关键字mutable是C++中一个不常用的关键字,他只能用于类的非静态和非常量数据成员我们知道一个对象的状态由该对象的非静态数据成员决定,所以随着数据成员的改变,对像的状态也会随之发生变化!如果一个类的成员函数被声明为const类型,表示该函数不会改变对象的状态,也就是该函数不会修改类的非静态数据成员.但是有些时候需要在该类函数中对类的数据成员进行赋值.这个时候就需要用到mutable关键字了.
这个问题貌似已经成为各大论坛的月经贴了,很多人也一直对其困惑不解,最近查了些资料,希望大致能够把问题说明白。
《Thinking in C++》volume 2第五章有这么一句话:
Member template functions cannot be declared virtual.Current compiler technology experts to be able to determine the size of a class’s virtual function table when the class is parsed.Allowing virtual member template functions woule require knowing all calls to such member functions everywhere in the program ahead of time.This is not feasible,especially for multi-file projects.
在这段话里作者解释了为什么类的成员模板函数不能是虚函数。之前遇到费解的概念如编译时/运行时、静态/动态、内部连接/外部连接,以及很多比如“函数模板不能有默认的模板参数”这样的规则时,总是无从下手,也不知道如何解释。然而问题不可累积。有必要借助这个问题明确一些基本的概念了。
尾递归就是递归调用在函数的最后一步,这样的递归可以被编译器优化成类似于循环的形式,无须保存stack frame和局部变量,提高性能,一般可以通过一个accumulator参数将一个传统递归改造成尾递归, 一下是一个C++中的例子:
阅读全文…
检测内存泄漏的方法多种多样,有使用内存泄漏检测工具(比如BoundsChecker)检测内存泄漏;有直接看代码检测代码逻辑,看那些地方是否没有释放内存。一般地静态内存泄漏通过工具与代码检查很容易找到泄漏点;动态的内存泄漏很难查,一般通过在代码中加断点跟踪和Run-Time内存检测工具来查找。
最近一直在写DLL,遇到了一些比较难缠的问题,不过目前基本都解决了。主要是一些内存分配引起问题,既有大家经常遇到的现象也有特殊的情况,这里总结一下,做为资料。
错误现象是“其原因可能是堆被损坏,这也说明 **.exe 中或它所加载的任何 DLL 中有 bug”,我的现象还有一个,就是直接运行EXE不在程序里调试,不会报这个错误。
在一些大的工程中,可能会包含几十个基础类,免不了之间会互相引用 ( 不满足继承关系,而是组合关系 ) 。也就是需要互相声明。好了,这时候会带来一些混乱。如果处理得不好,会搞得一团糟,根据我的经验,简单谈谈自已的处理办法:
编码时,我们一般会尽量避免 include 头文件,而是采用声明 class XXX 。 但有时候还是必须用 Include 头文件,那么,两者的划分在于什么呢?应该是很明确的,但书上好像都少有提及。
以前一直在用脑残残(ncc)实验室和海事大学的合作集群熟悉hadoop,现在发现还是有必要自己搞一个,本文主要介绍hadoop基本入门概念,各实体含义及其作用。
并参考使用Hadoop 的版本r0.20.203.0,介绍简单集群部署入门,以及结合IDE开发入门实践。