Ubuntu下LAMP环境搭建 最近重新安装了Ubuntu环境,之前的LAMP环境就没了,需要重新安装,不想着每次安装都从网上找教程,所以这次把整个安装的过程记下来,一来可以记录这个过程,而来方便以后再次安装时省事些。LAMP是Linux操作系统,Apache服务器,Mysql数据库和PHP语言的一个简称。安装步骤如下所示: sudo apt-get install apache2 mysql-server mysq
swig使用介绍 swig是Simplified Wrapper and Interface Generator的简称,它是一个能将C和C++的程序与其他各种高级语言诸如Perl,Python,Ruby和Tcl进行连结的开发工具。swig的官方中文网站:http://www.swig.org/translations/chinese什么是typemaptymemap are an advanced cu...
shell下的数学运算 经常需要使用shell来进行简单的额加、减、乘、除数学运算,每次都需要现查。因此在此记录一下所有相关的shell数学运算的方法,做一个小小的总结。shell下数学运算主要以以下几种:1、[]sum=$[$a+$b]2、(())sum=$((a+b))3、exprsum=$(expr $a+$b)4、awksum=$(echo $a, $b | awk '{printf("%d", $1+$2)}'...
generator下send()的作用 我们先看一下下面这个generator,它不会被send函数所影响。它在初始化时接受数字参数,并且不被send所影响:>>> def double_number(number):... while True:... number *=2 ... yield number... >>> c = double_number(4)>>> c.s
thread中join和detach的区别 C++中的thread对象通常来说表达了执行的线程(thread of execution),这是一个OS或者平台的概念。当thread::join()函数被调用,调用它的线程会被block,直到线程的执行被完成。基本上,这是一种可以用例知道一个线程已结束的机制。当thread::join()返回时,OS的执行的线程已经完成,C++线程对象可以被销毁。当thread::detach()函数
在测试中mock的作用 一篇很好的介绍mock的文章http://stackoverflow.com/questions/3622455/what-is-the-purpose-of-mock-objects
boost interprocess_condition解析 boost中的interprocess_condition类是一个放在共享内存或内存映像文件中的条件变量。interprocess_condition主要的public成员函数有:1. void notify_one()如果有一个线程正在等待本线程(*this),改变那个线程到已准备好的状态。否则没有任何作用。2. void notify_all()改变等待本线程(*this)
C++ new placement语法 今天在学习boost的共享内存时,看网上的一段代码。主要实现的功能是一个进程写一份跟踪数据至共享内存缓存区,另一个进程一个接一个打印出来。第一个进程写跟踪数据,然后等待,直到另一个进程打印这份数据。为达到此目的,我们可以使用两个条件变量:第一个用于阻塞发送者直到第二个进程打印出此消息,第二个用于阻塞接受者直到缓存区中有数据供打印。但是,下面的代码让我感到很是困惑://Map the who
指针的引用 为什么会有指针的引用呢?我们假设这样一个问题,如果一个函数的参数是一个指针,而我在该函数中修改了该指针指向的内容,这会发生什么呢?如下所示:void my_func(int *p){ int m = 10; p = &m;}int main(int argc, char** argv){ int n = 2; int *pn = &n; std
stringstream 又是利用stringstream来将string转换到其它数字类型是很方便的。stringstream的使用和iostream的使用很类似,学习上来说并不是一个负担。stringstream既可以用来读取string,也可以用来写入string。它主要作用于string buffer,但是并没有真正的I/O渠道。stringstream类的基本函数有str(), 放回在stri
boost学习 boost::scoped_ptr: 用于确保动态分配的对象能够被正确地删除。boost::interprocess::interprocess_mutex: 一个非递归的、匿名的互斥锁,可以放在共享内存或者内存映像文件中。boost::scoped_lock: 你可以确保在任何情况下离开执行范围都会解锁mutex.注意,这不仅仅实说你可能忘记调用unlock();并且,在你的mute
C++ 11相关知识学习 std::mutexstd::mutex定义在头文件中。mutex类是一个同步原型,用来保护共享数据被多个线程同步访问的同步。mutex提供互斥,非递归拥有权语义:一个调用线程拥有一个mutex。从它成功调用lock或者try_lock,知道它调用unlock。当一个线程拥有一个mutex,所有其它的线程将如果想要尝试获得mutex的拥有权,则会接收一个false,或者被b
使用synergy实现鼠标和键盘在两台机器间的共享 随着开发工作的任务越来越重,一台电脑已远不能满足我们的日常工作。因此越来越多的企业为员工配备了两台电脑,通常为一台笔记本和一台台式机。这里我就记录一下我是如何用synergy实现两台电脑之间共享键盘和鼠标的。首先需要安装synergy,synergy是一款跨平台的软件,它支持Windows,Linux和Mac。可以去http://symless.com/download/free/下载你需要的
正负号标记法在数组相关程序中的使用 正负号标记法在一些关于数组的编程中往往能起到一些出其不意的效果,在这里我以几个示例来解释一下正负号标记法的用法。1,我们看一下LeetCode的第448题。该题告知你一个有n个元素的数组,数组的所有元素介于1到n之间(包含1与n),但是 一些元素出现了两次,其他的元素都只出现一次,找出所有没有出现的数值。要求你不用额外的空间,并且在O(n)时间复杂度下解决该问题。你可以假设返回的列表不算在额外的元...
ssh无密码登录最简单的方法 只需要一条简单的命令即可实现ssh无密码登录,执行如下命令:ssh-copy-id username@ip然后会提示你输入密码,正确输入密码后,再执行ssh username@ip后就可以直接无密码登录到另一台机器了。简单吧,仅仅一条命令而已。
C/C++基础知识 1. 指针和引用的区别一个指针可以被多次赋值,但是引用只可以在创建的时候就必须初始化,初始化完毕后就不可改变;一个指针有它自己的内存地址和栈上的大小(x86上面为4byte),但是引用与原有变量共享相同的内存地址,但是在栈上仍然占用一些内存空间。指针可以指向NULL,但是引用必须引用一个有效的对象;一个指针需要使用*来访问它指向的内存地址,但是引用可以直接使用它引用的对象。指向类或者结
Ubuntu升级gcc版本到5.2.0 工作中需要将Linux机器上现有的4.7.3的gcc升级到5.2.0。在此记录下整个升级过程。1. 首先下载gcc 5.2.0的源码,gcc的官网在这里。也可以通过命令行进行下载。wget ftp://ftp.fu-berlin.de/unix/languages/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz22. 将下载下来的.tar.bz2文件进行