- 博客(747)
- 资源 (15)
- 收藏
- 关注
转载 fork和exec的区别
1、fork() 一个程序一调用fork函数,系统就为一个新的进程准备了前述三个段,首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程,这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享任何数据了。而如
2017-08-17 22:07:49 13336
转载 C语言数组中的地址偏移问题
本文讨论在C/C++中,一维数组和二维数组中的地址偏移问题。一维数组 int a[3];二维数组 int a[3][3];1、先看一维数组的情况:[cpp] view plain copy#include using namespace std; int main() {
2017-08-17 21:25:49 7190
转载 INT_MAX和INT_MIN注意事项
INT_MIN在标准头文件limits.h中定义。#define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1)1212在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意思是对整数21473648取负,但是2147483648已经溢出了int的上限,所以定义为(-IN
2017-08-17 08:31:38 18296
转载 判定一棵二叉树是否是二叉搜索树
问题给定一棵二叉树,判定该二叉树是否是二叉搜索树(Binary Search Tree)?解法1:暴力搜索首先说明一下二叉树和二叉搜索树的区别。二叉树指这样的树结构,它的每个结点的孩子数目最多为2个;二叉搜索树是一种二叉树,但是它有附加的一些约束条件,这些约束条件必须对每个结点都成立:结点node的左子树所有结点的值都小于node的值。结点node的右子树所有结点的
2017-08-17 08:06:24 538
转载 linux性能问题(CPU,内存,磁盘I/O,网络)
一. CPU性能评估 1.vmstat [-V] [-n] [depay [count]] -V : 打印出版本信息,可选参数 -n : 在周期性循环输出时,头部信息仅显示一次 delay : 两次输出之间的时间间隔 count : 按照delay指定的时间间隔统计的次数。默认是1
2017-08-16 09:19:55 367
转载 accept与connect的超时设置
connect超时:我们都知道,connect对应与三次握手中的第一次发送SYN,而对待服务器的ACK,如果服务器没有启动服务器,有些机器会立刻返回一个RST表示服务器拒绝,从而connect失败,但又些服务器为了防止攻击,什么也不发送,直至客户端connect超时,而这一时间又75s,对于客户端来说是不能接收的。所以需要设置connect的超时时间。利用select设置conne
2017-08-13 17:49:24 1953
转载 connect()函数阻塞和非阻塞问题解决
建立socket后默认connect()函数为阻塞连接状态,在大多数实现中,connect的超时时间在75s至几分钟之间,想要缩短超时时间,可解决问题的两种方法:方法一、将socket句柄设置为非阻塞状态,方法二、采用信号处理函数设置阻塞超时控制。在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未完成
2017-08-13 12:46:16 13587 3
转载 常用算法时间空间复杂度
Hi there! This webpage covers the space and time Big-O complexities of common algorithmsused in Computer Science. When preparing for technical interviews in the past, I found myself spending hours cr
2017-08-10 21:51:31 2447
转载 C++ 线程安全的单例模式
废话不多说,常用的代码积淀下来。一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。1、静态成员实例的懒汉模式:
2017-08-09 12:15:49 327
转载 C++最简洁的单例模式
想必每一位程序员都对设计模式中的单例模式非常的熟悉吧,以往我们用C++实现一个单例模式需要写以下代码: 1 class CSingleton 2 { 3 private: 4 CSingleton() //构造函数是私有的 5 { 6 } 7 static CSingleton *m_pInstance; 8 publ
2017-08-09 10:34:29 332
转载 C++的单例模式与线程安全单例模式(懒汉/饿汉)
1 教科书里的单例模式 我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实例的动作由一个public的类方法代劳,该方法也返回单例类唯一的实例。 上代码: 123456
2017-08-09 09:43:29 207
转载 【C/C++】类中的const成员 static成员
const 数据成员const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。所以不能在类声明中初始化 const 数据成员,因为类的对象未被创建时,编译器不知道const 数据成员的值是什么。 const 数据成员的初始化只能在类的构造函数的初始化表中进行。要想建立在整个类中都恒
2017-08-08 23:04:37 467
转载 Static关键字用法总结
Static关键字用法总结static关键字是C, C++中都存在的关键字。static从字面理解,是“静态的“的 意思,与此相对应的,应该是“动态的“。static的作用主要有以下3个:1、扩展生存期;2、限制作用域;3、唯一性;1、扩展生存期这一点主要是针对普通局部变量和static局部变量来说的。声明为static的局部变量
2017-08-08 22:46:00 2084
转载 [C/C++] static在C和C++中的用法和区别
转自:http://blog.csdn.NET/skyereeee/article/details/8000512static的三个作用:(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍:一、局部静态变量在C/C++中,局部变量按照存储形式可分为三种auto,
2017-08-08 22:36:06 205
转载 Nginx-Lua模块的执行顺序及指令
Nginx-Lua模块的执行顺序一、nginx执行步骤nginx在处理每一个用户请求时,都是按照若干个不同的阶段依次处理的,与配置文件上的顺序没有关系,详细内容可以阅读《深入理解nginx:模块开发与架构解析》这本书,这里只做简单介绍;1、post-read读取请求内容阶段,nginx读取并解析完请求头之后就立即开始运行;2、server-rewriteserver
2017-08-08 08:17:17 1331
转载 nginx lua模块常用的指令
lua_code_cache语法:lua_code_cache on | off默认: on适用上下文:http、server、location、location if这个指令是指定是否开启lua的代码编译缓存,开发时可以设置为off,以便lua文件实时生效,如果是生产线上,为了性能,建议开启。lua_package_path语法:lua_package_path
2017-08-08 08:11:51 1706
转载 二叉树最近公共父节点
在二叉树中找近期公共父节点。分为两种情况,一种是有父指针,一种没有父指针。1、有父指针这样的情况比較简单。计算两个结点的深度,再把深度大的向上移。移到同一深度。在同一时候向上移动,直到两个结点同样,这样便找到了父节点。这个算法时间复杂度为O(N)。代码实现:#includestruct Node{ int data; Node* left; Nod
2017-08-07 19:18:20 576
转载 二叉树中两个节点的最近公共父节点
这个问题可以分为三种情况来考虑:情况一:root未知,但是每个节点都有parent指针此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个方法很简单,不需要详细解释的。情况二:节点只有左、右指针,没有parent指针,root已知思路:有两种情况,一是要找的这两个节点(a, b),在要遍历的节点(root)的两侧,那么这
2017-08-07 19:04:11 2136
转载 有符号的整数-负数在内存的存放形式
有符号整数,正数的表示区间为:0x00000000-0x7FFFFFFF;负数的表示区间:0x80000000-0xFFFFFFFF。负数在内存中都是以补码的形式存放,补码的规则是用0减去这个数的绝对值。也可以表示为对这个数取反加1;为什么补码是对这个数取反加1呢?因为,X+X(反)=0xFFFFFFFF,于是X+X(反)+1=0,所以可以推导出0-X=X(反)+1;计算机
2017-08-07 10:40:00 1906
转载 linux IO 内核参数调优 之 原理和参数介绍
1. page cachelinux操作系统默认情况下写都是有写缓存的,可以使用direct IO方式绕过操作系统的写缓存。当你写一串数据时,系统会开辟一块内存区域缓存这些数据,这块区域就是我们常说的page cache(操作系统的页缓存)。查看系统内存常用的命令有:vmstat、free、top等。可以使用 cat /proc/meminfo 查看详细的内存使用情况
2017-08-01 11:54:21 529
转载 Linux 性能优化之 IO 子系统 系列 图
http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一)本文介绍了对 Linux IO 子系统性能进行优化时需要考虑的因素,以及一些 IO 性能检测工具。本文的大部分内容来自 IBM Redbook - Linux Performance and Tuning G
2017-08-01 11:38:37 1322
转载 CPU绑定技术
1 概念 什么是CPU Affinity?Affinity是进程的一个属性,这个属性指明了进程调度器能够把这个进程调度到哪些CPU上。 在Linux中,我们可以利用CPU affinity 把一个或多个进程绑定到一个或多个CPU上。CPU Affinity分为2种,soft affinity和hard affinity。soft
2017-08-01 10:19:08 1319 1
转载 系统性能调优
转载自:http://coolshell.cn/articles/7490.html关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方法。本文的东西是我的一些经验和知识,并不一定全对,希望大家指正和补充。在开始这篇文章之前,大家
2017-08-01 10:11:56 418
转载 Redis 并发, 锁, 竞争锁问题
Redis并发问题Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问。Redis本身没有锁的概念,Redis对于多个客户端连接并不存在竞争,但是在Jedis客户端对Redis进行并发访问时会发生连接超时、数据转换错误、阻塞、客户端关闭连接等问题,这些问题均是由于客户端连接混乱造成。对此有2种解决方法:1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连
2017-07-31 10:42:54 901
转载 再谈互斥锁与条件变量
pthread_cond_wait总和一个互斥锁结合使用。在调用pthread_cond_wait前要先获取锁。pthread_cond_wait函数执行时先自动释放指定的锁,然后等待条件变量的变化。在函数调用返回之前,自动将指定的互斥量重新锁住。int pthread_cond_signal(pthread_cond_t * cond);pthread_cond_signal通过
2017-07-24 08:49:12 240
转载 在curl中设置自定义的HTTP头
问题:我正尝试使用curl命令获取一个URL,但除此之外我还想在传出的HTTP请求中设置一些自定义的头部字段。我如何能够在curl中使用自定义的HTTP头呢?curl是一个强大的命令行工具,它可以通过网络将信息传递给服务器或者从服务器获取数据。他支持很多的传输协议,尤其是HTTP/HTTPS以及其他诸如FTP/FTPS, RTSP, POP3/POP3S, SCP, IMAP/IMAPS协
2017-07-21 08:10:39 23555
转载 算法的时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度-总结 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。算法的时间复杂度反映了程序执行时间随输入规模增长而增长的量级,在很大程度上能很好反映出算法的优劣与否。因此,作为程序员,掌握基本的
2017-07-20 21:18:17 349
转载 C/C++中全局变量,静态局部变量,局部变量的初始化问题
转载: http://www.cnblogs.com/catch/p/4314256.html什么时候初始化根据 C++ 标准,全局变量的初始化要在 main 函数执行前完成,常识无疑,但是这个说法有点含糊,main 函数执行前到底具体是什么时候呢?是编译时还是运行时?答案是既有编译时,也可能会有运行时(seriously), 从语言的层面来说,全局变量的初始化可以划分为以下两
2017-07-20 11:36:48 12002
转载 局部静态变量是如何做到只初始化一次的?
局部静态变量是如何做到只初始化一次的?关于编译选项 -Wa,-adlhn参考http://blog.csdn.net/lanxinju/article/details/5900986 以下内容来自于内网别的高人的回复可以写个程序测试一下: 12345678910
2017-07-20 11:31:00 2310
转载 多队列网卡简介
多队列网卡是一种技术,最初是用来解决网络IO QoS (quality of service)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。常见的有Intel的82575、82576,Boardcom的57711等,下面以公司的服务器使用较多的Intel 82575网卡为例,分析
2017-07-19 21:45:37 674 1
转载 Linux Page Cache的工作原理
1 、前言 自从诞生以来,Linux 就被不断完善和普及,目前它已经成为主流通用操作系统之一,使用得非常广泛,它与Windows 、UNIX 一起占据了操作系统领域几乎所有的市场份额。特别是在高性能计算领域,Linux 已经成为一个占主导地位的操作系统,在2005年6月全球TOP500 计算机中,有 301 台部署的是 Linux 操作系统。因此,研究和使用 Linux 已经成为开发
2017-07-14 14:42:38 6568
转载 多核编程 与 单核多线程编程的区别
转载:http://blog.csdn.net/doupei2006/article/details/8066022本文是阅读周伟民的《多核计算与程序设计》书摘1、锁竞争:单核中,如果单个线程取得所,则获取CPU运行时间,其他等待获取锁的线程被阻塞。使用了锁,影响的只是枷锁和解锁的耗时,CPU始终运行。多核中,若2个(更多)线程使用同一把
2017-07-13 15:32:02 849
转载 浅析SkipList跳跃表原理及代码实现
转载:http://blog.csdn.net/ict2014/article/details/17394259SkipList在leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。我们首先看看SkipList的定义,为什么叫跳跃表?“ Skip lists are data structures that us
2017-07-11 16:17:24 359
转载 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
转载:http://blog.csdn.net/fengbingchun/article/details/24185217结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区。比起指针,用空数组有这样的优势:(1)、不需要初始化,数组名直接就是所在的偏移;(2)、不占任何空间,指针需要占用int长度空间,空数组不占任何空间。“这个数组不占用任何内存”,意味
2017-07-11 14:26:05 605
转载 跳表SkipList
跳表SkipList1.聊一聊跳表作者的其人其事2. 言归正传,跳表简介3. 跳表数据存储模型4. 跳表的代码实现分析5. 论文,代码下载及参考资料 . 聊一聊作者的其人其事 跳表是由William Pugh发明。他在 Communications of the ACM June 1990, 33(6) 668-676 发表了Skip lis
2017-07-11 10:02:51 246
转载 SkipList 跳表
转载:http://kenby.iteye.com/blog/1187303为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参
2017-07-10 09:56:45 245
转载 Skip List(跳跃表)原理详解与实现
Skip List(跳跃表)原理详解与实现 转载:http://dsqiu.iteye.com/blog/1705530本文内容框架:§1 Skip List 介绍§2 Skip List 定义以及构造步骤 §3 Skip List 完整实现§4 Skip List 概率分析§5 小结
2017-07-10 09:52:55 318
转载 文件IO - O_DIRECT和O_SYNC
一,O_DIRECT,绕过缓冲区高速缓存,直接IO直接IO:Linux允许应用程序在执行磁盘IO时绕过缓冲区高速缓存,从用户空间直接将数据传递到文件或磁盘设备,称为直接IO(direct IO)或者裸IO(raw IO)。应用场景:数据库系统,其高速缓存和IO优化机制均自成一体,无需内核消耗CPU时间和内存去完成相同的任务。使用直接IO的弊端:可能会大大降低性能,内核对
2017-07-07 16:28:02 1242
转载 read/fread write/fwrite 的实现原理
fread就是通过read来实现的,fread是C语言的库,而read是系统调用。差别在read每次读的数据是调用者要求的大小,比如调用者要求读取10个字节数据,read就会从内核缓冲区(操作系统开辟的一段空间用来存储磁盘上的数据)读10个字节数据到数组中,所以每次调用read会涉及到用户态与內核态之间的切换从而损耗一定的性能。而fread不一样,为了加快读的速度,fread每次都会从内核缓冲
2017-07-07 14:24:41 3791
转载 mmap和direct io和write和fwrite区别
看完此文,题目不言自明。转自 http://blog.chinaunix.net/uid-27105712-id-3270102.html在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。
2017-07-07 14:07:05 1603 2
Berkeley DB 资料
2010-09-21
linux c函数速查手册
2009-10-13
lcd ampire128x64 的使用 proteus
2009-05-17
autocad做的小户型平面图
2009-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人