技术笔记
文章平均质量分 58
寻觅神迹
专注于云计算/虚拟化技术
展开
-
c++ primer---读书笔记1
C++ 要求main返回值必须为intc 不强制要求 注意:C++多数句子以;为结束标志。如果忽略,会有莫名其妙的错误。 编译: Unix : g++ prog1.cc -o prog1 Windows : cl -GX prog1.cpp windows上return -1会怎样? endl有换行并刷新设备关联缓冲区(b原创 2010-03-01 00:06:00 · 749 阅读 · 0 评论 -
c++ primer---读书笔记2
语言的学习:语言一般有以下特征: 内置数据类型 表达式和语句 变量 控制结构 函数 c++ 静态类型语言,需要事先定义名字类型。动态语言,如python? 掌握c++第一步: 语言基本知识和标准库。 字节:寻址的最小单位字 :读写内存的最小单位 c++中unsigned 类型可以接受负值,原创 2010-03-01 00:07:00 · 809 阅读 · 0 评论 -
c++ primer---读书笔记3
抽象数据类型:重要的两种string 长度可变字符串vector 保存一组指定类型的对象bitset 进行方便的位操作 注意:通常头文件中只定义需要的东西。 using声明 声明一次只能作用于一个命名空间的成员例子:using std::cin; 1. stringstring四种初始化:string s1;string s2(s原创 2010-03-01 00:07:00 · 800 阅读 · 0 评论 -
c++ primer---读书笔记5
表达式:表达式由操作数和操作符组合而成。表达式的结果是右值,可以读取,但不允许进行赋值。除非知道操作数类型,否则无法确切的知道操作符执行什么操作及操作结果类型。用于内置对性解引用的操作符要求操作数必须是指针类型。(iterator也是指针?经测试,不能打印地址)、指针类型不能转为浮点类型。一元操作符优先级最高,其次为乘除,然后为加减。操作符优先级相同时,从左向右依次与操作数结合。注意:原创 2010-03-04 12:22:00 · 928 阅读 · 0 评论 -
c++ primer---读书笔记6
else { std::cout total = trans;}用,操作符改写为一行。 std::cout switch...case中,case标号必须是整型常量表达式。switch内部变量定义:只能在最后一个标号或default标号后面定义变量。四种调试中非常有用的常量:__FILE__ 文件名__LINE__ 当前行号__TIME__ 文件被编译的时原创 2010-03-04 12:22:00 · 833 阅读 · 0 评论 -
c++ primer---读书笔记8
标准io库标准库支持wchar_t类型。每个类都加上w前缀。如wostream,wistream,wiostream wifstream,wofstream,wfstream wistringstream,wostringstream,wstringstream IO对象不可以赋值或复制:只有支持复制的元素类型可以存储在vector和其他容器类;形参或返回类型不能为流类型。条原创 2010-03-04 12:24:00 · 965 阅读 · 0 评论 -
c++ primer---读书笔记4
数组必须用值大于等于1的常量表达式定义。非const变量或者运行期才知道值的const变量都不能用了做维数。如果没有显示提供元素初值,数组会像普通变量一样初始化。与vector不同,数组不能通过变量间赋值进行初始化。数组元素访问,通过下标(size_t).就像vector通过(size_type)一样。 指针与引用的区别:引用总是指向某个对象,定义引用时没有初始化是错误的。赋值行为原创 2010-03-04 12:21:00 · 751 阅读 · 0 评论 -
深入学习C语言知识点checklist——测试你掌握C的程度《转》
深入学习C语言知识点checklist——测试你掌握C的程度 收藏 字符串 学习时间:1.5W(“W”周,下同) 知识点checklist strlen()函数的返回值是什么类型的? 字符串strlen()的值,是否和他占据的内存空间相同? 你是否知道strcpy函数存在的潜在风险?如何避免? 如果一个字符串没有字符串结束符,而调用str开头的库函数,会发生什么? Strcpy(),原创 2009-12-24 23:08:00 · 931 阅读 · 0 评论 -
C语言声明的优先级规则《转》
2009-06-11 21:21《Expert C Programming》(《C专家编程》)中提到C语言声明的优先级规则如下: A 声明从它的名字开始读取,然后按照优先级顺序依次读取; B 优先级从高到低依次是: B.1 声明中被括号括起来的那部分; B.2 后缀操作符:括号()表示这是一个函数,而方括号[]表示这是一个数组;原创 2009-12-24 23:16:00 · 888 阅读 · 0 评论 -
Cunit的简单应用
为什么导入CUnit?需要验证我们的实现和预想是否一致。并且在实现进行改动时,重复利用测试,验证改动的正确性。 CUnit导入的意义?可以从迫使我们写出结构更好,更容易测试的代码。所谓结构更好,是指代码的层次划分清晰,可复用性强。 CUnit的注意事项?测试用例的完备性是靠人来保证的。CUnit为我们的代码重构提供了帮助,我们可以用它来防止代码腐烂~~转载 2009-12-27 11:33:00 · 1489 阅读 · 0 评论 -
链接库(一)windows系
动态链接库(Dynamic Link Library或者Dynamic-link library,缩写为DLL),又称为动态链接库,是微软公司在微软视窗操作系统中实现共享函数库概念的一种实作方式。这些库函数的扩展名是.DLL、.OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)。 优点:DLL的最初目的是节约应用程序所需的磁盘和内存空间。便于更新,替换。 缺原创 2009-12-28 23:33:00 · 1002 阅读 · 0 评论 -
转]UNIX平台的链接库知识
[转]UNIX平台的链接库知识 收藏 1. nm & lddnm - print name list of an object fileldd - list dynamic dependencies of executable files or shared objects在solaris平台上,ldd命令的执行效果为:sun250原创 2010-01-04 13:23:00 · 872 阅读 · 0 评论 -
TS延续方法
終端機Terminal Client Service License過期再延續方法: 網路服務台(NT4.0或2000)一般Terminal Client Service License只提供三個月期限,超過三個月便不能再使用Terminal Client Service,現修改Registry可再延續三個月使用,注意有兩個地方需要修改:一個是其license,另一個便是其Hardware原创 2010-09-07 11:22:00 · 1060 阅读 · 0 评论 -
c++ primer---读书笔记7
函数与操作符相同:都会生成(大多数时候)一个计算结果,可以重载。不同:函数有函数名,而且操作数没有限制。函数的调用:做了两件事,用对应的实参初始化函数的形参,然后将控制权转移给被调用函数。主调函数被挂起,被调函数开始执行。函数的运行以形参(隐式)定义和初始化为开始。函数形参与实参区别:形参在函数定的形参表中定义,是一个变量,其作用域为整个函数。而实参出现在函数调用中,是原创 2010-03-04 12:23:00 · 854 阅读 · 0 评论 -
如何调试DLL?
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 方法①: 对DLL的工程DEBUG,在DLL工程的Project Setting->Debug->Executable for debug session中加入你的.exe的路径和名字。可以在dll中设置断点,.exe程序必须要调用dll中函数。 方法②: 有个更好的方法:(我也没试过)在setting原创 2010-09-07 11:19:00 · 850 阅读 · 0 评论 -
Git基本操作
代码下载: git clone Git仓库地址代码提交:主要有5步: 1.查看代码状态 2.比较代码变化 3.暂存需要提交的代码 4.提交已经暂存的文件 5.同步到服务器[查看代码状态] 运行git status命令[比较代码变化] 运行git diff 命令 或运行git diff原创 2013-03-25 22:29:03 · 872 阅读 · 0 评论 -
Linux 开机启动脚本
两种方法实现:1.在/etc/rc.d/rc.local中增加调用2.在/etc/init.d目录下增加服务脚本适合服务程序。原创 2013-03-25 22:30:07 · 1076 阅读 · 0 评论 -
C语言的一些开源资源
liboping :c implement pingsimlist :c implement listuthash:C语言哈希表 uthashlibjc : C 语言的事件驱动开发框架LW_OOPC:面向對象C語言編程框架mongoose: light web serverOO C framework:面向對象C語言編程框架原创 2013-03-25 22:31:08 · 1223 阅读 · 0 评论 -
Git远程分支管理
1.创建本地分支git branch 分支名,例如:git branch 2.0.1.20120806注:2.0.1.20120806是分支名称,可以随便定义。2.切换本地分支git checkout 分支名,例如从master切换到分支:git checkout 2.0.1.201208063.远程分支就是本地分支push到服务器上。比如master就是一个最典型的远原创 2013-03-25 22:35:49 · 1274 阅读 · 0 评论 -
架设YUM本地源服务器
1.安装vsftp2.配置ftp根目录#vim /etc/vsftpd/vsftpd.conf直接在配置文件中添加如下:anon_root=/home/ftpanon_upload_enable=NO # chkconfig vsftpd on /* 保证 ftp 服务随机启动 */ 重新启动service vsftpd restart3原创 2013-03-25 22:15:15 · 964 阅读 · 0 评论 -
C中打印堆栈或者通过函数指针获取函数名
c语言中如果需要打印函数堆栈或者根据函数指针输出函数名。可以使用一下函数。需要注意的一点就是,需要在链接时候增加-rdynamic的设置。 #include int backtrace(void **buffer, int size); char **backtrace_symbols(void *const *buff原创 2013-03-25 22:53:00 · 3606 阅读 · 0 评论 -
Prof分析工具
Linux下性能调优、代码学习工具主要有GProf,SProf,一般系统自带。另外还有OProf,rotateright (www.rotateright.com)等商业工具。这些工具主要能进行函数调用频次,调用时间,调用关系等的分析。GProf用法:1.编译需要分析的程序。需要增加-pg编译选项和链接选项。 如make CFLAGS=-pg LDFLAGS=-pg2原创 2013-03-25 22:37:33 · 5485 阅读 · 0 评论 -
Glib
glib不是一个学院派的东西,也不是凭空想出来的,完全是在开发gtk+的过程中,慢慢总结和完善的结果。如果你是一个工作3年以上的C语言程序员,现在让你讲讲写程序的苦恼,你可能有很多话要说,但如果你有时间研究一下glib,你会发现,很多苦恼已不再成其为苦恼,glib里很多东西正是你期望已经 久的。 gobject是glib的精粹,glib是用C实现的,但在很大程序是基于面向对象原创 2013-03-25 22:41:09 · 1352 阅读 · 0 评论 -
一个好用的python代码开发工具——sublime text2
最近在网上溜达,偶然发现了这个工具。真的很棒,快速,轻量,功能强大。是我喜欢的那种类型。 另外这个工具还有无比强大的插件系统。针对Python开发,发现以下两个好用的插件:1.lint插件https://github.com/SublimeLinter/SublimeLinter2.智能代码辅助插件https://github.com/Kronuz/SublimeC原创 2013-04-22 22:57:49 · 1157 阅读 · 0 评论 -
电子书网站
http://www.ebookee.net/原创 2013-04-22 22:59:18 · 1329 阅读 · 0 评论 -
<转>理解自旋锁(spin lock)
线程被阻塞后便进入内核(Linux)调度状态,这个会导致系统在用户态与内核态之间来回切换,严重影响锁的性能。自旋锁的出现就是为了尽可能的避免线程阻塞。其原理是:当发生争用时,若Owner线程能在很短的时间内释放锁,则那些正在争用线程可以稍微等一等(自旋), 在Owner线程释放锁后,争用线程可能会立即得到锁,从而避免了系统阻塞。但Owner运行的时间可能会超出了临界值,争用线程自旋一段时间后还是无转载 2013-04-22 23:03:53 · 1469 阅读 · 0 评论 -
Linux下禁用独立显卡
NND,打算在笔记本上装个Ubuntu。安装倒是很方便,使用的时候却不停的过热关机。后来发现是独立显卡发热的问题。网上查了下,有个叫Bumblebee的开源项目可以控制双显卡切换。于是试着装了下,谁知道安装巨慢无比,还没装好,笔记本就又过热关机了。终于找到一个通过命令,禁用独立显卡的方法。世界终于安静了。。。笔记本也不那么烫了(各大厂商的散热原创 2013-04-22 23:07:31 · 10249 阅读 · 0 评论 -
协程
协程的优点:跨平台跨体系架构无需线程上下文切换的开销无需原子操作锁定及同步的开销可以按串行模型去组织原本分散在不同上下文中的代码逻辑,避免状态同步问题。相对于串行计算,并行计算可以划分成时间并行和空间并行。时间并行即流水线技术,空间并行使用多个处理器执行并发计算,当前研究的主要是空间的并行问题。以程序和算法设计人员的角度看,并行计算又可分为数据并行和任务并行。数据并行把大的原创 2013-04-22 23:01:51 · 1019 阅读 · 0 评论 -
<转>用户线程和内核线程
用户线程与内核线程 用户线程不需要内核支持,在用户程序中实现。 内核线程,需要内核参与,依赖于操作系统核心。需要在内核态和用户态切换。有利于发挥多处理器并发优势。 用户级线程和内核级线程的区别: (1)内核支持线程是OS内核可感知的,而用户级线程是OS内核不可感知的。 (2)用户级线程的创建、撤消和调度不需要OS内核的转载 2013-04-22 23:05:45 · 1072 阅读 · 0 评论 -
LXR安装过程
LXR (Linux Cross Reference)是目前比较流行的linux源代码查看工具,lxr的下载及安装可参见:http://lxr.linux.no/。为了安装 lxr,必须事先安装Apach服务器,这可以在安装linux发行套件的时候选择安装。此外,系统安装的Perl的版本需要在5.0以上。下面介绍在 Red Hat Fedora Core 4下lxr的安装过程。这里假设转载 2013-04-22 23:08:19 · 1662 阅读 · 0 评论 -
RDMA技术
1 什么是RDMA1.1 传统意义上的DMA---直接内存访问(DMA)方式,是一种完全由硬件执行I/O交换的工作方式。在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行。DMA工作时,由DMA控制器向内存发出地址和控制信号;进行地址修改;对传送字的个数计数;并且以中断方式向CPU报告传送操作的结束。DMA方式一般用于高速传送成组转载 2013-04-25 23:04:29 · 2904 阅读 · 0 评论 -
使用LD_PRELOAD调试代码
$ cat /tmp/catchexit.c#include #include void exit(int status){ const char msg[] = "*** CAUGHT EXIT, DUMPING CORE ***\n"; write(2, msg, sizeof msg); abort();}void _exit(int status)原创 2013-05-12 23:06:32 · 1691 阅读 · 0 评论 -
如何cscope查看python代码
cscope默认会查找.c,.h,.l,.y代码。对于其他代码,比如python, java则需要事先建立cscope.files, 然后再执行cscope -Rbqk举例:1.进入代码根目录2.执行命令 find ./ -name '*.py' > ./cscope.files3.执行命令cscope -Rbqk原创 2013-06-18 23:00:07 · 4146 阅读 · 0 评论 -
删除git的commit
删除commit以及commit记录:git reset --hard HEAD~1与revert不同,reset --hard后git log无法看到该提交。而revert回保留所有修改的踪迹。原创 2013-06-29 14:45:15 · 1973 阅读 · 0 评论 -
解开rpm
rpm2cpio xxx.rpm | cpio -div例如:[root@localhost oracle]# rpm2cpio oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm | cpio -div原创 2013-06-29 16:46:23 · 1306 阅读 · 0 评论 -
inotify
inotify是2.6内核加入的特性,可以用来监控文件系统上的各种事件变化,比如添加、删除,修改等。这样就避免了低效的轮询实现。Inotify机制并不局限于工具,在脚本语言中也完全可以享受Inotify的乐趣,如Python中可以使用pyinotify和inotifyx,Perl中有Filesys-Notify-Simple和Linux-Inotify2,Inotify的Ruby版有rub原创 2013-07-15 17:27:28 · 1302 阅读 · 0 评论 -
ovirt-node的log功能
最近使用ovirt-node项目,该项目关于日志基于以下两种技术实现远端存放。大致了解了下,具体如下1.rsyslog基于主机的管理一般需要收集服务器的日志信息用于及时发现错误,处理故障。搭建linux下的集中日志服务器的程序一般可以用syslog,rsyslog,syslog-ng,还有scribe和fluentd等。基本每一种方式都是服务器端和客户端的模式。原创 2013-07-17 16:55:10 · 1783 阅读 · 0 评论 -
如何修改squash文件
squashfs是Linux内核使用的压缩只读文件系统。所以squashfs是无法修改的。但是我们可以基于已有的squashfs文件重新生成squashfs文件,并在生成前修改其中的文件。方法如下:Mount the squashfs:mkdir /mnt/squishymount mfs.sqash /mnt/squishy -t squashfs -o l原创 2013-07-23 16:27:48 · 4486 阅读 · 0 评论 -
避免磁盘被multipath管理为multipath设备的方法
可以在/etc/multipath.conf中的blacklist中进行设置,防止multipath对指定磁盘操作。原创 2013-08-02 10:38:42 · 3037 阅读 · 0 评论 -
repo同步
repo同步在windows上配置ccproxy给linux提供代理在linux上设置代理,http_proxy=http://186.100.4.XX:YYYY由于softether在高数据率时容易出问题,所以最好做个限速互联网上的版本仓库地址:http://mirrors.ustc.edu.cn/# cat /etc/lftp.conf...set net:limit-rate原创 2013-07-27 14:20:00 · 1701 阅读 · 0 评论