- 博客(40)
- 收藏
- 关注
转载 高性能服务器架构
引言本文档的目的是为了同大家分享多年来我在开发一种特定类型的应用时形成的一些观点,而“服务器”只是对这类应用程序的一个不是那么恰如其分的称谓。更准确的说,我将描述的是一大类的程序,这类程序的设计使得它们能够在每秒钟内处理数量十分巨大的离散消息或请求。网络服务器是最为常见的同此定义吻合的软件,但是,并非所有同此定义吻合的程序绝对可以称作是服务器。然而,“高性能请求处理程序”这种称
2014-10-29 00:00:48
521
转载 推荐 10 个 C 语言开源项目
1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webb
2014-10-28 23:53:49
695
转载 InnoDB与Myisam的六大区别
MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。 .frm文件存储表定义。 数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI (MYIndex)。 基于磁盘的资源是Inno
2014-10-19 16:38:08
387
转载 MySQL索引背后的数据结构及算法原理
摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分
2014-10-19 16:23:29
436
转载 无特殊需求下Innodb建议使用与业务无关的自增ID作为主键
在无特殊需求的情况下,建议使用与业务无关的自增ID作为主键(针对innodb) InnoDB引擎使用聚集索引,数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL会根据其主键将其插入适当的节点和位置,如果页面达到装载因子(InnoDB默认为15/16),则开
2014-10-19 15:48:58
2331
转载 spin_lock & mutex_lock的区别?
本文由该问题引入到内核锁的讨论,归纳如下为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v加1原子操作比普通操作效率要低,因此
2014-10-16 15:28:59
511
转载 MySQL主从复制原理以及架构
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更 新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记
2014-10-15 22:55:43
1065
转载 理解MySQL——索引与优化
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),
2014-09-26 16:48:29
340
转载 C++开源项目
入门级:Ptypes Ptypes一个开源轻量级的c++库,包括对一些I/O操作、网络通信、多线程和异常处理的封装。虽然代码有限,包括的内容不少,麻雀虽小,五脏俱全。 提高:STL Boost和STL ACE Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中
2014-09-09 22:47:20
451
转载 什么是堆和栈,它们在哪儿?
问题描述编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?它们的作用范围是什么?它们的大小由什么决定?哪个更快?
2014-08-16 15:46:41
419
原创 LeetCode_Word Ladder
原题:Given two words (start and end), and a dictionary, find the length of shortest transformation sequence from start to end, such that:Only one letter can be changed at a timeEach intermedia
2014-08-01 00:40:31
488
转载 文件描述符和文件指针
文件描述符:在linux系统中,设备也是以文件的形式存在,要对该设备进行操作就必须先打开这个文件,打开文件就会获得文件描述符,它是个很小的正整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件描述符的优点:兼容POSIX标准,许多Linux和UNIX系统调用都依赖于它。文件描述符的缺点:
2014-07-30 16:57:46
397
转载 A* Pathfinding for Beginners
Updated July 18, 2005This article has been translated into Albanian, Chinese, French, German, Portuguese, Russian, and Spanish. Other translations are welcome. See email address at the bottom
2014-07-08 16:20:05
503
原创 LeetCode__Max Points on a Line
题意:是在二维平面上给出一系列点,要求最大的共线的点的数量。首先想到平面上的点共线的定义,即穿过共同点且斜率相同。因此我们可以遍历每个点,找出其他点和这个点构成的直线的斜率,并用一个map记录下这个斜率下的点的数量。注意平面上相同的点要特殊处理。
2014-07-07 20:18:09
411
原创 LeetCode__Surrounded Regions
问题描述:Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'.A region is captured by flipping all 'O's into 'X's in that surrounded region.For example,X X X XX O O XX X
2014-05-10 20:33:00
392
转载 C++异常处理初级出门+中级进阶
概述 今天听了项目组里的C++高手讲C++的异常,受益匪浅。果然,与高手一起才能学习到更多的东西。下面我就把这位高手介绍的C++异常处理分享给园子里的博友们。什么是异常呢? 在编程语言里,按照出现错误的时机来区分,有编译期错误和运行期错误之分。编译期错误大家肯定很熟悉了,当我们build一个程序时,console里出现的那些error提示就是编译期错误。这些
2014-04-30 09:06:46
379
转载 如何得知某段代码的运行时间
之前,我的同学问了我一个算法题,由于这个题是要通过提交代码然后在线测试的,有运行时间的限制。我想应该有办法把某段代码的运行时间计算出来,当然现在某些IDE(集成开发环境)已经提供了这个功能,但是我猜它只是计算进程开始至结束的时间,如果我们需要更精确,精确到某段代码的运行时间的话,我们可以在代码中加入相应的代码就可以得到这个运行时间了。很多时候可以用于比较两(几)个算法的效率。
2014-04-16 19:54:45
982
转载 Ubuntu 13.10中安装eclipse后菜单栏下拉失效
最近安装了Ubuntu 13.10,想着安装eclipse玩玩吧,于是到eclipse官网下载页面下载所需要的安装版本。根据网上的教程安装好之后,到eclipse安装目录打开eclipse,根据习惯,对eclipse进行一些偏好设置,这时候发现菜单栏失效,不能实现下拉,通过查找发现这是Ubuntu Unity的一个bug,官方暂时还没提供解决办法,国外的论坛提供了暂时的解决办法,不直接启动ec
2014-04-07 23:37:07
434
转载 线程的共享资源和私有资源
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这许多共性的同时,还拥有自己的个性。有了这些个性,线程才能实现并发性。这些个性包括: 1.线程ID 每个线程都有自己的线程ID,这个ID在本进程中是唯一的。进程用此来标 识线程。
2014-04-07 00:44:38
1525
原创 快速排序遇到的问题
好久没有复习一些基础知识了,正好要找实习了,就想复习一下一些基础的算法。想自己把这些简单算法实现一下,没想到首先在快排这儿遇到问题了。刚开始我的快排代码是这样的:void swap(int &a, int &b){ int temp = a; a = b; b = temp;}void QuickSort(int A[], int Left, int Right){ int
2014-03-18 22:55:15
1690
转载 find——文件查找命令
转自:http://hi.baidu.com/like7419/item/bd620746cda01d0bc1161341find——文件查找命令find 命令eg:一般文件查找方法:1. find /home -name file , 在/home目录下查找文件名为file的文件2. find /home -name '*file*
2014-03-14 21:36:39
1706
转载 C++语言的15个晦涩特性
这个列表收集了 C++ 语言的一些晦涩(Obscure)特性,是我经年累月研究这门语言的各个方面收集起来的。C++非常庞大,我总是能学到一些新知识。即使你对C++已了如指掌,也希望你能从列表中学到一些东西。下面列举的特性,根据晦涩程度由浅入深进行排序。1. 方括号的真正含义2. 最烦人的解析3.替代运算标记符4. 重定义关键字5. Placement new6.在声明变量的同时进行分支7.
2013-12-30 08:40:25
516
转载 15分钟学会使用Git和远程代码库
摘要: Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git ...Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:G
2013-12-25 21:02:48
465
转载 getaddrinfo()函数详解
1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv6。getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个addrin
2013-12-25 20:59:29
703
转载 特征向量的几何含义
转自:http://fanhy298.blog.sohu.com/130363634.html长时间以来一直不了解矩阵的特征值和特征向量到底有何意义(估计很多兄弟有同样感受)。知道它的数学公式,但却找不出它的几何含义,教科书里没有真正地把这一概念从各种角度实例化地进行讲解,只是一天到晚地列公式玩理论——有个屁用啊。根据特征向量数学公式定义,矩阵乘以一个向量的结果仍是同维数的一个
2013-12-08 10:14:27
749
转载 pthread_cleanup_push/pop
void pthread_cleanup_push(void (*routine)(void*), void *arg);void pthread_cleanup_pop(int execute);//这里的int参数,0是不执行push的内容,非0是执行。原型很简单,功能跟atexit()差不多,只不过一个是线程一个是进程。用来设置在push/pop内线程退出时要做的事情。
2013-11-26 09:44:25
662
原创 ubuntu调用pthread_create()函数时Undefined reference to 'pthread_create'的问题
在ubuntu平台下调用pthread_create()函数,用gcc编译时出现Undefined reference to 'pthread_create'的问题。代码中已经将pthread.h头文件包含进去了,还是没法通过,后来通过查找资料得知pthread库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a,所以在使用pthread_create()创建线程,
2013-11-25 21:55:26
2131
原创 apue程序清单10_6中信号处理程序提早终止的问题
在apue10.10节中,sleep2函数为避免alarm和pause之间的竞争条件,使用了setjmp和longjmp,原始实现如下:#include #include static voidsig_alrm(int signo){ /* nothing to do, just return to wake up the pause */}unsigned intslee
2013-11-24 10:40:37
1023
转载 LINUX中断机制与信号(http://blog.csdn.net/lichaoandy/article/details/5543713)
在学习APUE时学习信号编程,很多地方不是理解,便查阅了网络上的相关资料,最常见的一句话就是“信号是中断机制的一种模拟”,既然提到了中断,那就首先了解了一下中断的具体分类以及实现,最后再找出中断和信号的区别。LINUX中断机制与信号中断和异常 l 中 断(也称硬件中断)定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。分类 : 可屏蔽
2013-11-23 11:27:25
713
转载 LINUX中断机制与信号(http://linux.chinaitlab.com/soft/878170.html)
LINUX中断机制与信号 中断和异常 中 断(也称硬件中断) 定义 :中断是由其他硬件设备依照CPU 时钟周期信号随机产生的。 分类 : 可屏蔽中断 非可屏蔽中断 来源: 间隔定时器和I/O 异 常(也称软件中断) 定义 :当指令执行时由 CPU控制单元 产生的,异常也称为“异步中断”是因为只有在 一条指令终止执行后CPU 才会
2013-11-22 09:42:08
1042
转载 实际用户ID,有效用户ID与保存设置用户ID(转自:http://blog.csdn.net/dlutbrucezhang/article/details/8806015)
real user ID:实际用户ID,指的是进程执行者是谁effective user ID:有效用户ID,指进程执行时对文件的访问权限saved set-user-ID:保存设置用户ID,作为effective user ID的副本,在执行exec调用时后能重新恢复原来的effectiv user ID.上面这三个ID是相对于进程而言的.set-user-ID:
2013-11-17 13:14:31
772
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人