自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(216)
  • 资源 (1)
  • 收藏
  • 关注

转载 裘宗燕:C/C++ 语言中的表达式求值

裘宗燕:C/C++ 语言中的表达式求值经常可以在一些讨论组里看到下面的提问:“谁知道下面C语句给n赋什么值?”m = 1; n = m+++m++;最近有位不相识的朋友发email给我,问为什么在某个C++系统里,下面表达式打印出两个4,而不是4和5:a = 4; cout C++ 不是规定 要弄清这些,需要理解的一个问题是:如果程序里某处修改了一个变量(通过赋

2016-04-19 10:18:50 662

转载 spinlock剖析与改进

1, spinlock介绍spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任何时刻时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切

2016-03-25 13:06:48 727 1

转载 pause 指令与 rep;nop

rep;nop 指令是执行多个 nop 还是 1 个 nop?本来,加上 rep 前缀是一直执行 rep 后的指令直到 ECX 中的值为 0 。在内核代码中,如在 spin_lock 的实现里,会看到 rep;nop 这样的语句,很容易想到会执行多个 nop 。但事实上它不是这样。看下面的演示程序:#include #define nops(times) __asm__ __v

2016-03-25 12:54:02 3786

转载 git rebase简介(高级篇)

一、基本  对于git rebase, 你亦可以选择进行交互式的rebase。这种方法通常用于在向别处推送提交之前对它们进行重写。交互式rebase提供了一个简单易用的途径让你在和别人 分享提交之前对你的提交进行分割、合并或者重排序。在把从其他开发者处拉取的提交应用到本地时,你也可以使用交互式rebase对它们进行清理。如果你想在rebase的过程中对一部分提交进行修改,你可以

2016-03-12 23:15:48 1594

转载 Git Rebase教程: 用Git Rebase让时光倒流

https://linux.cn/article-4046-1.html想象一下你正在开发一个激进的新功能。这将是很灿烂的但它需要一段时间。您这几天也许是几个星期一直在做这个。你的功能分支已经超前master有6个提交了。你是一个优秀的开发人员并做了有意义的语义提交。但有一件事情:你开始慢慢意识到,这个疯狂的东西仍需要更多的时间才能真的做好准备被合并回主分支。

2016-03-12 23:09:53 3313

转载 非阻塞(nonblock)socket接口会否出现EINTR错误

对于socket接口(指connect/send/recv/accept..等等后面不重复,不包括不能设置非阻塞的如select),在阻塞模式下有可能因为发生信号,返回EINTR错误,由用户做重试或终止。 但是,在非阻塞模式下,是否出现这种错误呢? 对此,重温了系统调用、信号、socket相关知识,得出结论是:不会出现。 首先, 1.信号的处理是在用户态下进行的,也就是必须

2016-02-26 19:03:20 1050

转载 mktime 夏令时

我们的最终目的是把字符串格式的时间转换为内部使用的“日历时间”,即到UTC 1970年1月1日零时的秒数。这里就存在夏令时的问题。比如俄罗斯时间2008年10月26日2:30由于夏令时的跳变会经过两次,这两次所代表的“日历时间”明显不同。如果仍按照上面的程序,由mktime()函数来决定这个时间是否处于夏令时(它会根据当前时区自动判断,在没有发生时间重叠的情况下处理是正确的)就会有问题。这时我们不

2015-12-18 18:15:53 1222

转载 ubuntu13.04,64位安装mit-scheme_9.1.1

mit-scheme主页http://www.gnu.org/software/mit-scheme/资源网站:http://ftp.gnu.org/gnu/mit-scheme/stable.pkg/9.1.1/在资源网站中下载mit-scheme-9.1.1-doc-pdf.tar.gz ,里面有指导手册,mit-scheme-user.pdf安

2015-09-09 00:01:41 648

转载 SecureCRT突然卡死的问题

SecureCRT作为著名的SSH客户端,经常用于登陆远程服务器。在上面编辑文本,特别是用vi打开两个文本,并且需要切换时,很容易出现卡死的现象,不能接受任何的键盘输入。很是郁闷。以前每次遇到这个问题,我只有关掉那个session重新打开一个。这次又遇上,是在不能忍,试着解决一下。仔细观察会发现,在vi下切换文本“ctrl+w+w”时,很容易输入成”ctrl+s”。随便拿一个session

2015-08-26 20:07:42 4641 1

转载 PROC系列之---/proc/pid/stat

/proc/ /stat包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。[root@localhost ~]# cat /proc/6873/stat6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 429

2015-08-19 12:05:41 831

转载 /proc/stat 的解释

/proc/stat 的解释关于linux 系统/proc/stat的解释和应用。这段perl代码,可以提供计算cpu利用率数据采集    [~]$ cat /proc/statcpu 432661 13295 86656 422145968 171474 233 5346cpu0 123075 2462 23494 105543694 16586 0 4615

2015-08-19 12:04:11 2114

转载 C 语言中的达夫设备 Duff’s Device

在495个必须知道的C语言问题这本书中,提到了一个达夫设备另类的算法设计技巧。如下:[cpp] view plaincopyregister n = (count + 7) / 8; /* count > 0 assumed */  switch (count % 8)  {  case 0: do { *to = *from++

2015-06-25 11:08:04 616

转载 跳表SkipList的原理和实现

最近看了一种数据结构叫做skipList,redis和levelDB都是用了它。Skip List是在有序链表的基础上进行了扩展,解决了有序链表结构查找特定值困难的问题,查找特定值的时间复杂度为O(logn),他是一种可以代替平衡树的数据结构。    下面是skipList的一个介绍,转载来的,源地址:http://kenby.iteye.com/blog/1187303,为防止源地址丢失

2015-04-17 09:43:17 912

转载 linux exec与重定向

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。fork概念

2015-04-16 19:22:51 866

转载 C/C++变长参数宏(Variadic Macros)

A macro can be declared to accept a variable number of arguments much as a function can. The syntax for defining the macro is similar to that of a function. Here is an example: #define eprintf(.

2015-04-16 10:51:30 2780

转载 setjmp/longjmp非局部跳转函数分析

之前就一直好奇setjmp()/longjmp()函数是怎么实现非局部跳转的,心中猜测应该是通过保存调用setjmp()函数处的栈上下文(stack context),之后通过函数longjmp()来恢复这个栈上下文来实现的,可是心中依然有疑惑,到底需要保存哪些东西呢,还有是怎么改变setjmp函数的返回值的呢。本文就通过实际程序调试以及glibc源码来一探究竟吧(本文针对i386平台)!

2015-04-15 12:13:02 2058

转载 x86寄存器说明

x86寄存器说明ebp和esp是32位的SP,BP esp是堆栈指针 ebp是基址指针 ESP与SP的关系就象AX与AL,AH的关系.32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存

2015-04-15 12:11:54 419

转载 Sublime Text 全程指南

作者:Lucida微博:@peng_gong豆瓣:@figure9原文链接:http://lucida.me/blog/sublime-text-complete-guide/摘要(Abstract)本文系统全面的介绍了Sublime Text,旨在成为最优秀的Sublime Text中文教程。更新记录2014/09/27:完成初稿2

2015-04-02 22:03:33 684

转载 __attribute__((packed))详解

1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ char ch; int a;} sizeof(in

2015-03-29 11:01:50 570

转载 PROC系列之---/proc/stat/

包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。[work@builder ~]$ cat /proc/statcpu 432661 13295 86656 422145968 171474 233 5346cpu0 123075 2462 23494 105543694 16586 0 4615cpu1 111917 4124 23858 105

2015-03-26 18:45:09 468

转载 PROC系列之---/proc/pid/stat

/proc/ /stat包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。[root@localhost ~]# cat /proc/6873/stat6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 429

2015-03-26 18:43:53 1300

转载 字符编码笔记:ASCII,Unicode和UTF-8

作者: 阮一峰日期: 2007年10月28日今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得

2015-03-18 18:16:29 531

转载 gcov、lcov与genhtml 使用心得

gcc是linux平台下的C、C++ 编译器gcov是配合gcc产生覆盖信息报告的工具;lcov是将gcov产生的报告信息,以更直观的方式显示出来工具基本的使用方法分为4个阶段:(一)、gcc编译:产生插装后的目标文件test、gcov结点文件 test.gcno   #gcc -fprofile-arcs -ftest-coverage -o test t

2015-03-18 14:48:55 2320

转载 C,C++宏中#与##的讲解

文中__FILE__与示例1的可以参见《使用ANSI C and Microsoft C++中常用的预定义宏》宏中的#的功能是将其后面的宏参数进行字符串化操作(Stringizing operator),简单说就是在它引用的宏变量的左右各加上一个双引号。如定义好#define STRING(x) #x之后,下面二条语句就等价。       char *pChar = "he

2015-03-08 16:51:31 328

转载 代码实现WordPress归档页面模板

前几天我在自力博客看到 hzlzh 写的《WordPress归档页面模板,按日期列出所有文章》,在本地测试了一下,代码量很少,但每次访问存档页面数据库查询量太大导致打开页面很慢,于是放弃。昨天帮一朋友修改一私人模板,发现里面有个函数是生成所有文章列表,问其出处,朋友说不知道,这么好的代码为啥没共享出来呢?于是有了这篇文章。特点:1. 这个存档函数会在数据库生成一个表 SHe

2015-03-04 20:30:10 4607 1

转载 __attribute__ 你知多少?

GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。__attribute__ 书写特征是:__attribute__ 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attri

2015-02-05 14:49:39 384

转载 C标准库源码解剖(9):控制函数assert.h, setjmp.h和signal.h

控制函数用于对C语言程序的标准控制流(如if/else、switch、for等)提供扩展,在头文件assert.h、setjmp.h和signal.h中提供,分别提供表达式断言功能、非本地跳转功能、信号处理功能。    1、assert.h: 提供用于断言的assert宏。程序中若没有定义NDEBUG,则asset(exp)对表达式exp进行断言,若断言为假(即为0),则会调用__assert

2015-02-04 10:05:43 1592

转载 Mutex和内存可见性

原文链接  作者:Loïc  译者:林永听介绍POSIX线程遵守共享内存模型[1],此模型各线程可以访问一组共享对象。多个并发的线程需要协同访问共享对象。为此该模型引入了以下两个属性来简化程序设计:原子访问:避免线程在访问数据对象时,另一线程正在修改它。内存可见性:一旦线程修改数据对象,其它线程在修改行为发生之后马上能看见此对象的新状态,如图1所示。Mutex通

2015-02-01 14:56:12 453

转载 内存关卡/栅栏 ( Memory Barriers / Fences ) – 译

翻译自:Martin Thompson – Memory Barriers/Fences在这篇文章里,我将讨论并发编程里最基础的技术–以内存关卡或栅栏著称,那让进程内的内存状态对其他进程可见。CPU 使用了很多技术去尝试和适应这样的事实:CPU 执行单元的性能已远远超出主内存性能。在我的“Writing Combining”文章,我只是谈及其中一种技术。CPU 使用的用来隐

2015-02-01 14:40:01 678

转载 还是说Memory Model,gcc的__sync_synchronize要慎用。

当我们在做多线程编程的时候,会涉及到一个称为memory order的问题。例如int x(0),y(0);x=4;y=3;请问,实际执行的时候,这两条赋值语句谁先执行,谁后执行? 会不会有某个时间点,在某个CPU看来,y比x大?答案很复杂。本文的目的是从非常实践的角度来考虑这个问题。首先,它分为两个层面。在编译器看来,x和y是两个没有关联的变量,那

2015-02-01 13:20:41 4721

转载 Linux升级GCC清晰简明教程

前言: 这次我在Ubuntu 12.04 LTS 64位版上更新gcc,发现了原来的一些问题,这次没有什么时间上的压力,我比较认真地去查阅了官方文档,也参考了一些网上的帖子,对整个升级过程在依赖包的安装、不同Linux流派、32和64位下的区别和共同点有了更深的认识。现总结如下:PS:不标注出处的转载是可耻的。(如果你很忙的话,可以只把里面的shell代码复

2015-01-31 15:48:41 5164

转载 linux下升级gcc的方法

1.下载gcc最新的源码包 wget http://gcc.skazkaforyou.com/releases/gcc-4.9.1/gcc-4.9.1.tar.gz2.解压缩 tar -xf gcc-4.9.1.tar.gz3. cd gcc-4.9.14.运行download_prerequisites脚本, ./contrib/download_prerequisite

2015-01-28 15:33:17 37387 1

转载 linux 文件夹的颜色代表什么意思

蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;灰色表示其它文件;红色闪烁表示链接的文件有问题了;黄色是设备文件,包括block, char, fifo。用dircolors -p看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等定义。 在环境变量$LS_COLORS上修改就行

2015-01-28 15:23:07 1305

转载 数组/枚举 初始化最后一个逗号的问题

http://bbs.csdn.net/topics/330052999以下是从MSDN中copy出来的一段,其实就是形式语法的规定,加不加都是可以的。注:其实原来我是不加的,后来我有看Linux下的源码,然后也发现了这个问题,后来有Google到gcc下的语法,觉得其实加上更好,现在就都加了。Initializing Aggregate TypesAn “aggreg

2015-01-27 10:35:38 4606

转载 c++指针比较的含义

在c++中,一个对象可以有多个有效地地址,因此,指针比较并不是关于地址问题,而是关于类的判别 (object identity)。   class Shape {.......};   class Subject {.........};   class ObservedBlob :public shape , public Subject {.........};

2015-01-22 19:10:36 501

转载 深入了解Windows句柄到底是什么

总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解。今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么。这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下

2015-01-18 22:16:58 428

转载 Win7+vs2010下安装boost_1_46_1库

一、boost库分类:(1)不需要编译库:any、array、asio、conversion、crc、bind/mem_fn、enable_if、function、lambda、mpl、smart_ptr...(2)需要编译的库:date_time、filesystem、function_types、graph、iostreams、math、mpi、program_options、

2015-01-18 10:14:52 989

转载 Ubuntu下编译boost1.47

首先ubuntu默认没有安装g++,所以先安装g++最新版本sudo apt-get install g++下载boost的最新源代码,在boost.org上。将其解压在任意文件夹。为了更完整的编译boost,需要下载额外的软件包,比如要完整编译boost-python库需要下载python2.6-dev,正则库regex需要unicode/icu,boost.iostreams库

2015-01-18 00:53:57 848

转载 git branch

查看分支:        $ git branch    该命令会类出当先项目中的所有分支信息,其中以*开头的表示当前所在的分支。参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支。创建新分支:        $ git branch testing    创建一个名为testing的分支切换分支:        $ git checkout teting  

2015-01-17 16:00:53 362

转载 [Github] fatal: remote error: You can't push to git 解决办法

branch正确的情况下, 不知为什么,在push的时候总是出现:[plain] view plaincopyprint?fatal: remote error:  You can't push to git://github.com/user_name/user_repo.git  Use git@github.com:user_name/

2015-01-17 14:32:33 1420

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除