- 浏览: 47647 次
- 性别:
- 来自: 上海
最新评论
-
wrj913:
谢谢啊 呵呵 我也出现过这种情况,在winxp下使用Ctrl+ ...
[zz]vim下接下Ctrl+S造成程序僵死
文章列表
python中的注释
- 博客分类:
- 一点一滴学python
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库为我们提供了一种安全的方法 ...