摘要: 所谓的临时对象,就是一种无名对象(unnamed objects)。它的出现如果不在程序员的预期之下,往往造成效率上的负担。但有时刻意制造一些临时对象,却又是使程序干净清爽的技巧。刻意制造临时对象的方法是,在型别名称之后直接加一对小括号,并可指定初值,例如shape(3,5)或int(8),其意义相当于调用相应的constructor且不指定对象名称。STL最常将此技巧应用于仿函数(functor)与算法的搭配上,例如:#本例测试仿函数用于for_each()的情形#include #include #include using namespace std;template class pri 阅读全文
posted @ 2014-02-23 22:26 艾丽娅的猫 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 以下内容来自搜狗实验室技术交流文档,搜狐公司研发中心版权所有,仅供技术交流摘要---------乱序优化是现代编译器非常重要的特性,本文介绍了什么是乱序优化,以及由此引发的一个bug,希望引起各位开发者的注意。乱序优化---------乱序优化和cpu的乱序执行很类似。现代cpu都采用流水线结构,流水线的各级可以同时执行不同的指令,也只有用多条指令将流水线填满以后,cpu的能力才能得到充分发挥。乱序执行(out-of-order execution)是指cpu允许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。这样将根据各个电路单元的状态和各指令能否提前执行的具体情况分析后,将 阅读全文
posted @ 2014-02-23 13:46 艾丽娅的猫 阅读(1665) 评论(0) 推荐(0) 编辑
摘要: (一) 小满当上项目经理后不久,参与了一个大项目。当时市场签下来的时候,公司里面是欢天喜地的。项目做了一年多。到了交付的时候,用户却很不满意,当初说好的东西,好多都变了卦。 用户是上帝,最关键的是如果收不到后面的钱,那就算白干了。公司要求项目组加班加点的修改。搞得大家是怨声载道的。做市场的和做开发的相互指责,然后,大家又一起骂客户刻薄。公司里面弥漫着灰心丧气的气氛。 小满觉得郁闷的很,就跑去跟老鸟聊,看他有什么主意。 老鸟听了小满的一通抱怨,说:“很正常。以前我们也经常遇到这样的情况。很多案例说明,失败是一开始就注定了的。” (二)... 阅读全文
posted @ 2014-02-15 01:16 艾丽娅的猫 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 过年回家买了个TP-LINK,弄了无线网络,也好在大冬天的躲被窝用手机上网看电影了。于是乎对交换机和路由器什么的比较感兴趣~电脑百事网里面有篇文章介绍两者的区别,写的挺好的,那么,荡过来了啊这里是采用通俗的话语介绍:-----------------------------------交换机和路由器的使用中最大的区别莫过于路由器内部可实现拨号上网,然后通过共享给多台电脑同时上网,而交换机内部不具有拨号功能,但交换机的作用是将网络信号分流,以实现更多电脑连接共享上网。这样说吧,我们知道路由器一般有5个端口,其中一个为WAN端口,与宽带线相连接的,其他四个端口是用来连接上网电脑的,也就是说一个路由 阅读全文
posted @ 2014-02-12 15:44 艾丽娅的猫 阅读(399) 评论(0) 推荐(0) 编辑
摘要: Red Hat Package Manager(简称RPM)工具包由于其使用简单操作方便,可以实现软件的查询、安装、卸载、升级和验证等功能,为Linux使用者节省大量的时间,所以被广泛的用于Linux下安装、删除软件。RPM命令详细说明可以在Linux终端使用man命令显示出来。1)查询RPM软件包在新软件安装之前,一般都要先查看一下这个软件包里有什么内容。RPM软件包的查询使用带参数-q的rpm命令实现的,系统将会列出待查询软件包的详细资料,包括含有多少个文件、各文件名称、文件大小、创建时间、编译日期等信息。RPM软件包查询命令的格式如下:rpm {-q|--query} [select-o 阅读全文
posted @ 2014-02-03 20:30 艾丽娅的猫 阅读(685) 评论(0) 推荐(0) 编辑
摘要: 作者:陈磊NoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据。Berkeley DB作为一款优秀的Key/Value存储引擎自然也在讨论之列。最近使用BDB来发一个KV系统,并将这段时间的BDB的学习和使用经验记录如下。(项目中使用了BDB的4.8.30版本,本文所有涉及的具体问题都基于该版本)。1. Berkeley DB的简介Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库, 阅读全文
posted @ 2014-01-27 14:35 艾丽娅的猫 阅读(6171) 评论(0) 推荐(0) 编辑
摘要: 1. Berkeley DB的简介Berkeley DB(BDB)是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对(Key/Value Pair),而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据。BDB提供诸如C语言,C++,Java,Perl,Python,Tcl等多种编程语言的API,并且广泛支持大多数类Unix操作系统和Windows操作系统以及实时操作系统(如VxWorks)。1991年,Berkeley DB的第一个版发行(Linux系统也在这一年诞生),其最初的开发目的是以新的HASH访问 阅读全文
posted @ 2014-01-24 18:28 艾丽娅的猫 阅读(1916) 评论(2) 推荐(0) 编辑
摘要: Git有一个工具被称为git config,它允许你获得和设置配置变量;这些变量可以控制Git的外观和操作的各个方面。这些变量可以被存储在三个不同的位置:---------------------------------------------------------1./etc/gitconfig文件:包含了适用于系统所有用户和所有库的值。如果你传递参数选项’--system’给git config,它将明确的读和写这个文件。2.~/.gitconfig文件 :具体到你的用户。你可以通过传递--global选项使Git读或写这个特定的文件。3.位于git目录的config文件(也就是.git 阅读全文
posted @ 2014-01-23 11:28 艾丽娅的猫 阅读(262) 评论(0) 推荐(0) 编辑
摘要: Boost库文件采用的.hpp的后缀,而不是分成两个文件,也就是”.h+.cpp”,之所以这样做是有理由的,首先就是与普通的C/C++头文件区分,另外一个原因就是使Boost库不需要预先编译,直接引用程序员的工程即可编译链接,方便了库的使用。最后一个(无奈的)原因就是C++编译器的限制,许多编译器尚不支持C++标准提出的模板的分离编译模式,而Boost使用了大量的模板。Boost下次再学,先来了解hpp文件。取自:http://blog.csdn.net/akumas/article/details/1357774--------------------------------------.. 阅读全文
posted @ 2014-01-16 10:53 艾丽娅的猫 阅读(1022) 评论(0) 推荐(0) 编辑
摘要: 大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library)。这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐。那么,在LINUX系统中有无这样的函数库呢?答案是肯定的,LINUX的动态链接库不仅有,而且为数不少。在/lib目录下,就有许多以.so作后缀的文件,这就是LINUX系统应用的动态链接库,只不过与WINDOWS叫法不同,它叫so,即Shared Obje 阅读全文
posted @ 2014-01-06 18:33 艾丽娅的猫 阅读(265) 评论(0) 推荐(0) 编辑
摘要: C++标准库的所有头文件都没有扩展名。C++标准库的内容总共在50个标准头文件中定义,其中18个提供了C库的功能。形式的标准头文件【例外】其内容与ISO标准C包含的name.h头文件相同,但容纳了C++扩展的功能。在形式标准的头文件中,与宏相关的名称在全局作用域中定义,其他名称在std命名空间中声明。在C++中还可以使用name.h形式的标准C库头文件名。C++标准库的内容分为10类:C1.语言支持C2.输入/输出C3.诊断C4.一般工具C5.字符串C6.容器C7.迭代器支持C8.算法C9.数值操作C10.本地化C1标准库中与语言支持功能相关的头文件头文件描述定义宏NULL和offsetof, 阅读全文
posted @ 2014-01-06 16:53 艾丽娅的猫 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 1.介绍Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计,有关log4cxx的更多信息可以从Apache Loggin Service的网站http://logging.apache.org获得。2.获取软件包log4cxx需要两个辅助库,可以从官方网站获得合适的版本:https://apr.apache.org/download.cgi我们拿最新的软件包:apr-1.5.0.tar.gzapr-util-1.5.3.tar.gz接下来获取log 阅读全文
posted @ 2013-12-30 14:48 艾丽娅的猫 阅读(984) 评论(0) 推荐(0) 编辑
摘要: 一. 确认你的系统安装有GNU的如下软件:1. automake2. autoconf3. m44. perl5. 如果你需要产生共享库(shared library)则还需要GNU Libtool二. 用automake生成Makefile的步骤如下:1. 由源文件通过autoscan命令生成configure.scan,然后修改configure.scan并重命名为configure.in2. 由aclocal命令生成aclocal.m43. 由autoconf命令生成configure4. 编辑一个Makefile.am(基本是一系列make的宏定义,偶尔也会出现make规则),由aut 阅读全文
posted @ 2013-12-04 18:19 艾丽娅的猫 阅读(1973) 评论(0) 推荐(1) 编辑
摘要: VIRT:1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等;2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。3、VIRT = SWAP + RESRES:1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配的栈空间,但不包括swap out量;2、包含其他进程的共享;3、如果申请10MB的内存,实际使用1MB,它只增长1MB,与VIRT相反;4、关于库占用内存的情况,它只统计加载的库文件所占内存大小。5、RES = CODE + DATASHR:1 阅读全文
posted @ 2013-11-29 10:32 艾丽娅的猫 阅读(4880) 评论(0) 推荐(0) 编辑
摘要: #!/usr/bin/env python# Filename: post.pyimport sysdef send(host,port,request): import socket s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((host,port)) s.sendall("GET / HTTP/1.1\r\nContent-Length:%d\r\n\r\n%s\r\n"%(len(request),request)) while 1: ... 阅读全文
posted @ 2013-11-02 01:00 艾丽娅的猫 阅读(525) 评论(0) 推荐(0) 编辑