Author: David

丢丢girl 与 小王子

从某些方面来说,丢丢girl和小王子是很相似的。 小王子认为漂亮的房子是红砖墙,窗前种着天竺葵,屋顶上停着鸽子…;Girl想要以后的房子外的墙上趴着爬山虎,想要有一个大花园种着她喜欢吃的苹果,想要有小动物经常跑来光顾… 小王子很孤单,大概是从他离开他的星球,离开他的玫瑰开始。他问蛇,人们在哪里,他有一些孤单,蛇却告诉他”it’s also lonely with people.”;Girl是一个看似开心的人,其实她只是喜欢看着人们热闹,在角落看着就好。 小王子会呱啦呱啦不依不饶的问下去,只要他开始问了一个问题;Girl会用“因为花儿是绿的”来回答“为什么你比我高呢”,接着会用“因为我比你高~”来回答“为什么花儿是绿的”,然后就一直然后了… Girl喜欢大自然,喜欢的永远是大自然的亲近和随性。 。。。。。。 回想起来,开始读这本书,好像是在五一节,大家都出去玩了。丢丢girl拉着我,跑到天台,找了一个角落,吹着风,呼吸呼吸,晒晒太阳,看看书,慵懒却舒适。 饿了就去吃午饭,然后小睡了一会儿,起来发了会儿呆。下午她说外面天气很好,我们去看书吧!于是到了某课树下,阳光果然充沛, 这个是不是可以叫斑驳的树影了?挺好看的光影效果呢。 如果不是中途接到郭坨坨的电话,说服务器down掉了,让我去看看,估计那天下午就把小王子读完啦。 所以~~又是在某一天的地铁上看完的。 看完,看完当然就不想还啦 (◕ܫ◕),还书这种事情肿么可能发生!!!于是当她确定我不会还给她了以后,就这幅表情对着我了。。。 不过,,还是不还,哈哈。 睡觉,晚安。 2013-5-22 01:53:12

PHP与C++性能比较

PHP是速度很快的脚本语言,但是用了框架以后好像感觉挺慢的。于是猜测会不会PHP本身也不是很快。如果不是很快,能否采用PHP调用本地动态链接库的形式来提升速度。 于是有了下面的对比实验。 测试环境 1. 硬件环境如下图所示。 2. 软件环境 系统: Ubuntu 12.10 gcc版本: Thread model: posix gcc version 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1) php版本: PHP 5.3.22 (cli) (built: Mar 14 2013 20:37:16) Copyright (c) 1997-2013 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies php开发环境: LAMP,所有安装包均是通过源码编译安装而成,编译过程中会自动根据本机各项参数进行最优配置。性能比apt-get install命令直接安装好。 关于以源码包方式搭建LAMP请参考文章:http://keping.me/linux-php-dev-by-source-style/ 测试方法 由于冒泡排序在时间复杂度上相当稳定——O(n2),在最大程度上减少了数据可能带来的影响,故采取计算冒泡排序的运行时间的方法来进行此次实验。 对比测试分组 分组1: C++直接调用程序内的函数 分组2: C++调用打包好的动态链接库文件(.so文件,该文件也是自己写好并打包) 分组3: PHP直接调用程序内的函数 […]

Linux 常用命令

老是忘记一些命令。于是便记了下来:) SSH常用命令 1. 不带端口号的连接: $ ssh -l username ip $ ssh -l ubuntu0 192.168.123.100 2. 带端口号的链接: $ ssh -l username ip -p port $ ssh -l root 224.217.33.111 -p 8888 SCP常用命令 1. 从远端拷贝单个文件到本地,带端口号(-P 为大写): $ scp -P port root@ip:path_remote path_local $ scp -P 8888 root@224.217.33.111:/home/aku/www/weekphp/sql.txt /home/david/ 2. 从远端拷贝整个文件目录到本地,带端口号(-P 为大写): $ scp -r -p port username@ip:path_remote […]

C++调用自己的.so

由于一些原因,需要在C++中动态加载自己写的动态链接库(.so)文件。网络上的资源挺多,我也看了不少,参考最多的是下面这三篇 1. dlopen加载c++ 函数及类: http://blog.csdn.net/lwj1396/article/details/5204484 2. 上一篇的英文版本: http://www.isotton.com/devel/docs/C++-dlopen-mini-HOWTO/C++-dlopen-mini-HOWTO.html#theproblem 3. 动态调用动态库方法 .so: http://blog.csdn.net/lbmygf/article/details/7401862 再说一说自己的心得吧。 首先介绍一下动态库和静态库之间的区别 静态库是指编译连接时,把库文件的代码全部加入到可执行文件中,所以生成的文件较大,但运行时,就不再需要库文件了。即,程序与静态库编译链接后,即使删除静态库文件,程序也可正常执行。 动态库正好相反,在编译链接时,没有把库文件的代码加入到可执行文件中,所以生成的文件较小,但运行时,仍需要加载库文件。即,程序只在执行启动时才加载动态库,如果删除动态库文件,程序将会因为无法读取动态库而产生异常。 那么如何调用动态库?如何在C语言下,其实是很简单的(调用dlopen、dlsym和dlclose就够了),但对C++来说,情况稍微复杂。动态加载一个C++库的困 难一部分是因为C++的name mangling 然后从介绍Name Mangling开始 在每个C++程序(或库、目标文件)中,所有非静态(non-static)函数在二进制文件中都是以“符号(symbol)”形式出现的。这些符号都是唯一的字符串,从而把各个函数在程序、库、目标文件中区分开来。 在C中,符号名正是函数名:strcpy函数的符号名就是“strcpy”,等等。这可能是因为两个非静态函数的名字一定各不相同的缘故。 而C++允许重载(不同的函数有相同的名字但不同的参数),并且有很多C所没有的特性──比如类、成员函数、异常说明──几乎不可能直接用函数名作符 号名。为了解决这个问题,C++采用了所谓的name mangling。它把函数名和一些信息(如参数数量和大小)杂糅在一起,改造成奇形怪状,只有编译器才懂的符号名。例如,被mangle后的foo可能 看起来像foo@4%6^,或者,符号名里头甚至不包括“foo”。 其中一个问题是,C++标准(目前是[ISO14882])并没有定义名字必须如何被mangle,所以每个编译器都按自己的方式来进行name mangling。有些编译器甚至在不同版本间更换mangling算法(尤其是g++ 2.x和3.x)。即使您搞清楚了您的编译器到底怎么进行mangling的,从而可以用dlsym调用函数了,但可能仅仅限于您手头的这个编译器而已, 而无法在下一版编译器下工作。 解决方案 extern “C” C++有个特定的关键字用来声明采用C binding的函数:extern “C” 。 用 extern “C”声明的函数将使用函数名作符号名,就像C函数一样。因此,只有非成员函数才能被声明为extern “C”,并且不能被重载。尽管限制多多,extern “C”函数还是非常有用,因为它们可以象C函数一样被dlopen动态加载。冠以extern “C”限定符后,并不意味着函数中无法使用C++代码了,相反,它仍然是一个完全的C++函数,可以使用任何C++特性和各种类型的参数。 示例程序1. 加载简单函数 目录结构 示例程序1在test1目录下,这个例子也主要是参考第一篇博客写的。有一些修改。 main.cpp的代码如下 [cpp] //———- //main.cpp: //———- #include #include int main() { using […]

Animal Farm

🙂 一个猪变人的童话故事有木有——《Animal Farm》 这本书是大学姐陪我去买的哟!!!很有纪念意义有木有!!!其他已知出场人物动物都没有这个待遇哟有木有!!!(*^__^*) 嘻嘻…… ================================背景割==================================== 看完整本书,依然是角色的名字都记不全,甚至连Napoleon这个大大大大大反派头头的名字都是在有道词典里搜了一下“拿破仑”才拼全,实在有点不好意思。 Napoleon这头顶着男主角光环的猪,这头腹黑猪,这头盗取了革命果实的猪,这头越来越残暴的猪,这头应该已经被无数世人咒骂过的猪,早已死在了一九不知多少年(好的,如果一头猪能活过55岁,那它也可能死于二零多少年。不要纠结这里了好吗,强迫症么有)。 被盗取了革命果实,其他动物确是值得同情的。好不容易推翻了农场主的统治,好不容易击退了敌人的反扑,好不容易盼来了平等、自由,即使是在最后的最后的前一刻,在那划不清人猪界限的前一刻,动物们依然是乐观的,依然认为:至少,我们现在是在为自己劳动,不被人类所奴役,我们是自由的,这就够了。殊不知,理想已经离他们很远很远,只是逐渐麻木而不觉罢了。 逐渐麻木——我想,这或许是Napoleon采取的连它自己都不知道的一个策略。这么对比并不那么恰当,就像你觉得你大学室友4年都没变,但一个4年不见他的人觉得几乎换了一个人一样。慢慢的,总是不易察觉的。 在欲望本生会无限膨胀这个属性的作用下,Napoleon慢慢的一点一点的往集权的方向走去。动物们慢慢适应,慢得觉得生活好像就应该是这样的,慢得即使有一些觉得不对的地方也只会是短暂的不安而已。最终它终于达到了权利的巅峰,当然也伴随着残暴的统治。最初的乌托邦,最终的不知道什么汤(加了两勺铊盐的?)。 不了解那个年代的历史,也就无清楚作者在映射什么了。不过能看到猪变人这个神奇的事情也挺高兴呢。 晚安, 2013-4-28 02:21:27

认识一群技术男真好,嘎嘎

IT技术男——居家好帮手,省钱好伙伴!吼吼吼! 本文里面顶着男猪脚光环的就是楼下这个胖子啦,艺名:鲁胖子 某天,楼主发现相机没有无线遥控器,太不方便了撒,买又太贵老。遂找鲁胖子商量,答曰小菜,于是搞之。 不知道他去哪里找了两个小灯泡(还真不清楚这玩意儿叫啥)? 加上一根在他们公司垃圾桶里翻出来的报废塑料软管 还有一个不知道哪个设备又被他拆了以后,撤下来的零件 估计左焊焊,右焊焊,yeah~~音频信号转红外信号的遥控器出来了。 硬件就这么愉快的搞定了,插在iphone上就能用。软件也早就去app store下好了 好了,剩下就是测试无线遥控效果了,好使。 就这么欢乐地省下了买无线遥控器的钱,以后出门遥控器能忘,手机还能忘嘛。。。除非又被摸走了,我勒个去。 哦对,我猜,他用申通快递邮给我的费用,比原料贵

Compile and Install LAMP(Linux/Apache/MySQL/PHP) from source on Ubuntu 12.10

This blog will guide you finish the compiling and installing a LAMP Server from source on Ubuntu step by step. Of course, it will take you a little much time(Thanks for the 15 source packages ) ,so a cup of coffee will be a good choice 🙂 Zeroth. Here follows some source packages, which will […]