`
Davidlwq
  • 浏览: 47647 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
python中最简单的就是单行注释,以#开始到行尾结束   python中的多行注释是包含在三个"之间的,如下所示 """This is comment This is coment """   如果这个注释写在函数的第一行,就是函数的文档,如: def foo(): """comment""" return 1 print foo.__doc__  将打印"comment"
最近在网上看到一篇makefile的快速教程,感觉写得非常好,对于管理一些基本的小项目来说够用了,这里特别mark一下。 这里附加两个解释: 默认的情况下,make处理第一个不以.开头的target,并会更新它所以来的target,所以如果处理第一个target的时候不依赖与clean的话,clean不会被执行。但是,如果处理第一个target的时候不小心产生了一个clean文件,那么我们再运行make clean的时候这个命令不会做任何事。而.PHONY这个特殊的宏则表明clean是一个虚假的目标,因此make clean的时候不管有没clean文件都要执行这个。 patsubs ...
  奇数对2取模不一定是1,负数是-1,偶数一定为0,而且奇数不灌正负其末位一定为1.
Java中的位移操作符分为三种:<<,>>和>>>   首先说说这三种操作符的共同特:   它们左操作数均为int或long类型,如果是其他整型,则会升级到int型,浮点数类型不支持 对于右操作数,若左操作数为int型,则只取右操作数的末五位,若为long型,则只取六位。举个例子,1<<32这个操作,其结果是1,而不是0,这是因为32的二进制表示中末五位是0,因此其实这个操作什么都没做,结果还是0。   说完了共同点,再说不同点,其实不同点显而易见,<<是左移操作符,跟其它两个不同。需要注意的是>>& ...
运行环境:ubuntu 12.04, boost 1.50.0 由于要把boost移植到arm板上去,所以折腾了一下,后来发现其实挺简单的,这里仅记录下流程,跟上文一样,这里假设你的目标系统的工具链已设置好 boost的编译分两部:编译bjam,编译boost   编译bjam的工作比较简单,根据文档上来就可以: 进入下载下来的boost的根目录,进入tools/build/v2 运行bootstrap.sh 运行b2 install --prefix=PREFIX,PREFIX是安装bjam的目标文件夹 将PREFIX/bin 加入PATH环境变量   有了bjam, ...
运行环境:ubuntu 12.04, Eclipse C++ IDE 在Eclipse下进行交叉编译十分简单,这里假设你已经拥有了目标主机的编译工具链,我这使用的的arm-linux的交叉工具链。 新建C++ Project - Empty Project 右击Build Configurations - Manage,新建一个Configuration 在C/C++ Build - Settings 中设置GCC Compiler、G++ Compiler、G++ Linker、GCC Assenbler等,就好了 注:如果你需要第三方库,请用arm-linux工具链将其编译好 ...
最近在做一个项目,其中用到了与sqlite3中时间类型,这里把学到的结果总结下。 我们通常用到的时间通常分为两种,本地时间和UTC时间。 这两种时间的产生是按时区具体划分的,其区别可以google之,这时就不多说了,简单来说就是UTC时间是时区为0的某个地方的时间,本地时间与其相差几个小时(多或少)。   在<ctime>头文件中有一个函数 time_t time(time_t* tt)  其中time_t就是一个long int类型,它返回的是系统时间与格林治时间(1970年1月1日 00:00:00)相差的秒数。而另外两个函数 struct tm * ...
我在使用vim的时候,偶尔会碰到vim莫名其妙的僵在那里。在界面上输入什么都没有反应。甚至Ctrl+C、Ctrl+D也没有反应。 由于不是经常发生,也就没在意。每次很麻烦的关掉putty的窗口,重新再打开putty。今天发生了好几次,很是郁闷。就想看看究竟是怎么回事,结果发现每次按下Ctrl+S就会出现这个问题。 由于以前碰到过vim有些扩展有问题,这次就也怀疑是vim扩展的问题。结果删除了所有扩展和.vimrc文件,问题依旧。通过putty登录到别的系统,也是一样的问题。直接在ubuntu的命令行,按下Ctrl+S,问题也一样! 奥,原来是Linux的一个快捷键呀,干什么用的? ...
刚学了下python,准备用opencv做点东西,怕以后忘了如何配了,这里写下来做下记录 这里我用的是python 2.7.2, opencv 2.2,win7(64位) 其实配置非常简单,步骤如下:   下载并安装python 2.7.2(32位),opencv 2.2 在运行python程序之前,将%OPENCV_PATH%\Python2.7\Lib\site-packages这个目录添加到sys.path中去,然后将%OPENCV_PATH%\bin这个目录添加到os.environ[“PATH”]中去,具体代码如下,在每个文件之前只要执行LoadLibs这个方法即可 ...

zz:配置log4j

    博客分类:
  • java
转自http://www.blogjava.net/zJun/archive/2006/06/28/55511.html   Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下:  #配置根Loggerlog4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …
今天看了下java官网上关于concurrency库的教程,了解了下基本知识,在此记录下。   线程池 concurrency库中最重要的概念当然是线程池,java中线程池是封闭在Executor接口的实现中的。当我们想执行新的线程中,传统的方法是   new Thread(r).start()    但线程的创建与销毁会造成一定的资源与时间的消耗,设想一下在一个web服务器,如果对每一个新进来的请求都创建一个线程来处理,这样当线程一多,其调试、创建及其本身占用的资源会很严重,甚至有可能导致系统崩溃,利用线程池来管理线程则可以避免这种结果。   在java concurrenc ...
当我们需要在stl的库中装入多态类的对象时,通常的做法是在容器里装入父类的指针,然后手动释放,如我有以下两个类 class Light { .... } class PointLight:public Light { ... } std::vector<Light*> lights; lights.push_back(new PointLight());       上面的做法有如下几点弊端: 1.容易忘记释放掉指针,造成内存泄漏; 2不是异常安全的   boost中的Pointer Container库为我们提供了一种安全的方法 ...
Global site tag (gtag.js) - Google Analytics