- 博客(126)
- 资源 (11)
- 收藏
- 关注
转载 漫谈linux之文件IO篇
同事的文章,觉得写得很清晰,收藏了。在Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述。不copy内核代码。 阐述之前,要先有个大视角,让我们站在万米高空,鸟瞰我们的文件IO,它们设计是分层的,分层有2个好处,一是
2014-01-23 14:32:20 7888
原创 string.h的strcmp的性能比较
string.h基于汇编实现strcmp ,和普通strcmp,针对循环调用次数和字符串查找长度2个纬度做了一次性能对比效测试。#include #include #include #include #include #include #include #include #include #include #include #include #include
2014-01-14 15:27:20 10137 1
转载 Linux 内核的排队自旋锁(FIFO Ticket Spinlock)
转自:http://www.ibm.com/developerworks/cn/linux/l-cn-spinlock/index.html?utm_source=twitterfeed&utm_medium=twitter引言自旋锁(Spinlock)是一种 Linux 内核中广泛运用的底层同步机制。自旋锁是一种工作于多处理器环境的特殊的锁,在单处理环境中自旋锁的操作
2014-01-14 14:23:24 7043
转载 (转)理解(Memory Reordering)从JVM并发看CPU内存指令重排序
这两天,我拜读了 Dennis Byrne 写的一片博文?Memory Barriers and JVM Concurrency (中译文?内存屏障与JVM并发)。文中提到:对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存(caching)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说,程序的读写操作不一定会按照它要求处理器
2014-01-13 21:23:19 6638
原创 Impact of cpu cache lines验证
http://igoro.com/archive/gallery-of-processor-cache-effects/此文提到Example 1: Memory accesses and performanceHow much faster do you expect Loop 2 to run, compared Loop 1?int[] arr = new i
2014-01-13 16:35:33 6813
原创 怎样把 Snappy安装配置到自定义目录
1.去官网http://code.google.com/p/snappy/下载snappy-1.1.1.tar.gz安装包。2.加压到指定目录cd ~/snappytar -zxvf snappy-1.1.1.tar.gzcd snappy-1.1.1./configuremake此时打住,如果继续make install,相关的库会被安装到/usr/loc
2014-01-09 20:36:46 11288
转载 (转)从缓冲上看阻塞与非阻塞socket在发送接收上的区别
最近在网络上看到一些帖子以及回复,同时又搜索了一些网络上关于阻塞非阻塞区别的描述,发现很多人在描述两者的发送接收时操作返回以及缓冲区处理的区别时有不同程度的误解。所以我想写一篇文章来纠正错误,并作为记录方便查阅,如有转载,注明作者(jwybobo2007)以及出处即可。 首先socket在默认情况下是阻塞状态的(未指异步操作以及其它一些特殊用途下,直接默认为非阻塞),这就使得发送以及接收
2014-01-07 20:31:42 19084 2
转载 管理处理器的亲和性(affinity)
转自:http://www.ibm.com/developerworks/cn/linux/l-affinity.html简单地说,CPU 亲和性(affinity) 就是进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性。Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性(affinity) 的特性,这意味着进程通常不会在处理器之间频繁迁
2013-12-25 16:22:12 5716
转载 linux kernel中如何保证append写的原子性
转载自pagefault先来描述一下,write系统调用的大体流程,首先内核会取得对应的文件偏移,然后调用vfs的write操作,而在vfs层的write操作的时候会调用对应文件系统的write方法,而在对应文件系统的write方法中aio_write方法,最终会调用底层驱动。这里有一个需要注意的就是内核在写文件的时候会加一把锁(有些设备不会加锁,比如块设备以及裸设备).这样也
2013-12-24 13:11:01 10712
原创 (转)Linux 中的汇编语言
Linux 中的汇编语言 在阅读 Linux 源代码时,你可能碰到一些汇编语言片段,有些汇编语言出现在以.S为扩展名的汇编文件中,在这种文件中,整个程序全部由汇编语言组成。有些汇编命令出现在以.c 为扩展名的 C 文件中,在这种文件中,既有 C 语言,也有汇编语言,我们把出现在 C 代码中的汇编语言叫所“嵌入式”汇编。不管这些汇编代码出现在哪里,它在一定程度上都成为阅读源代码的
2013-12-23 20:31:23 19042 1
转载 libev 源码浅析
libev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。 libev的基本使用方法如下:123456789101112131415
2013-12-13 16:41:21 8846
转载 日志结构的kv存储——Bitcask
转自:http://blog.nosqlfan.com/html/955.htmlBitcask是一个日志型的基于hash表结构和key-value存储模型:Bitcask的一些基本特征:1. key/value以日志的形式按顺序存储,只能追加(append-only)写入key/value,每次写操作都是顺序写入。当某个key所对应的value
2013-12-06 19:55:28 10678
转载 AWK 简明教程
最近在系统的补awk,mark一篇http://coolshell.cn/articles/9070.html有一些网友看了前两天的《Linux下应该知道的技巧》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。况且,AWK是贝尔实验室1977年搞出来的文本出
2013-12-02 17:52:32 8700
转载 无锁队列的实现
本文转自:http://coolshell.cn/articles/8239.html陈大师的文章关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Comp
2013-11-22 21:08:41 20082
转载 (转)Linux进程的睡眠和唤醒, 真正搞懂了吗?
1 Linux进程的睡眠和唤醒在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux 内核的调度器会剥夺这个进程对CPU的控制权,并且从运行队列中选择一个合适的进程投入运行。当然,一个进程也可以主动释放CPU的控制权。函数schedule()是一个调度函数,它可以被一个
2013-11-22 20:42:59 14808
转载 进程、线程和协程的理解
进程、线程和协程的理解进程、线程和协程之间的关系和区别也困扰我一阵子了,最近有一些心得,写一下。进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度(标准线程是的)。协程和线程一样共享堆,不共享栈,协程由程序员在协程的代码里显示调度。进程和其他两个的区别还是很明显的。
2013-11-14 17:13:19 55925 6
转载 linux 向外TCP最大连接只能打开28232个端口限制tuning(转)
from:http://hi.baidu.com/zknehycmrobrtvd/item/12fdf54dcae951e01381da92可能牛人都知道怎么设置,只不过将解决思路记录一下。性急的人看最后3行就行了。因为想测试一下java mustang(jdk1.6)使用epoll的性能,Tim最近写了一个Java NIO的client在linux去连服务器,原理上一个cli
2013-06-25 23:37:43 7556
转载 (转)Linux下使用system()函数,谨慎使用
转自:http://my.oschina.net/renhc/blog/53580曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故抛弃不用,改用其他的方法。这里先不说我用了什么
2012-11-08 19:39:13 17252 1
转载 查看库中的符号nm
转自:http://my.opera.com/yangguangxiang/blog/show.dml/138851有时候可能需要查看一个库中到底有哪些函数,nm命令可以打印出库中的涉及到的所有符号。库既可以是静态的也可以是动态的。nm列出的符号有很多,常见的有三种,一种是在库中被调用,但并没有在库中定义(表明需要其他库支持),用U表示;一种是库中定义的函数,用T表示,这是最常见的;另外一
2012-10-17 17:16:17 7593
转载 怎样写出令人抓狂的代码——全攻略(献给那些写代码纯图省事的亲们)
这篇文章的原文在这里(http://mindprod.com/jgloss/unmain.html),我看完后我想说——什么叫“创造力”,创造力就是——就算是要干一件烂事都能干得那么漂亮那么有创意的能力。 什么叫“抓狂”,抓狂就是——以一种沉着老练的不屈不挠的一本正经的精神一点一点把你推向崩溃的边缘。 我把文章节选了一些,也并没有完全翻译,简译一下,也加入了一些自己的调侃。对于有下面这
2012-08-27 19:45:51 9322 3
转载 数学之美系列二十一 - 布隆过滤器(Bloom Filter)(转)
转自:http://www.google.com.hk/ggblog/googlechinablog/2007/07/bloom-filter_7469.html数学之美系列二十一 - 布隆过滤器(Bloom Filter)2007年7月3日 上午 09:35:00发表者:Google(谷歌)研究员 吴军 在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素
2012-03-14 18:09:30 2032
转载 正则表达式30分钟入门教程
本文转自:http://www.oicto.com/html/regex.htm#resources 目录跳过目录本文目标 如何使用本教程 正则表达式到底是什么东西? 入门 测试正则表达式 元字符 字符转义 重复 字符类 分枝条件 反义 分组 后向引用 零宽断
2011-08-11 14:55:23 1483
转载 其实Unix很简单
本文转自陈皓的博客:http://blog.csdn.net/haoel/article/details/1533720 其实Unix很简单 陈皓 很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一
2011-08-04 16:43:52 1840 2
转载 头文件不宜定义变量原因解析
转自:http://hi.baidu.com/zengzhaonong/blog/item/8c10e90366c2bf733912bbb0.html http://blog.csdn.net/wzsbll/article/details/6655919
2011-07-28 10:09:12 3670
转载 sendfile优化文件拷贝
原文地址:http://www.vpsee.com/2009/07/linux-sendfile-improve-performance/现在流行的 web 服务器里面都提供 sendfile 选项用来提高服务器性能,那到底 sendfile 是什么,怎么影响性能的呢?sendfile 实际上是 Linux 2.0+ 以后的推出的一个系统调用,web 服务器可以通过调整自身的配置来决定是否
2011-06-16 19:16:00 7614
原创 一道关于c++拷贝构造与=运算符的题目
class A{public: A() { printf(" A "); } ~A() { printf(" ~A "); }};class B{public: B(A &a):_a(a) { printf(" B "); }
2011-06-15 20:35:00 2370 2
原创 (转)迅雷C++试题及解答
1.下列程序的输出结果为:(B)#includevoid main(){ char* a[ ] = { "hello", "the", "world"}; char** pa = a; pa++; cout}A) theworld B) the C) ello D) ellotheworld 2. 已
2011-06-13 21:53:00 4148 4
转载 (转)c++操作符重载
<br />http://www.cppblog.com/shongbee2/archive/2009/04/01/78554.aspx<br /> <br />只转链接,save~!
2011-06-01 23:31:00 1485
转载 (转)Linux服务器性能评估与优化
转载:http://www.517sou.net/Article/104.aspx一、影响Linux服务器性能的因素 1. 操作系统级Ø CPU Ø 内存Ø 磁盘I/O带宽Ø 网络I/O带宽2. 程序应用级二、系统性能评估标准影响性能因素 评判标准好 坏 糟糕CPU user% + sys% user% + sys%= 85% user% + sys% >=90% 内存 Swap In(si)=0Swap Out(so)=0 Per CPU wi
2011-05-16 16:40:00 1806 2
转载 (转)PHP HipHop实战之安装篇
<br />原文链接:http://blog.liubijian.com/hiphop-php-install.html<br /> <br />觉得有用,保存。。。<br /> <br /> <br />背景:HipHop是Facebook在今年早些时候放出的一个php开源项目,主要的特征就是把php翻译成了c++执行,HipHop所带来的性能提升用Facebook官方博客上项目负责人赵海平的话说:<br />With HipHop we’ve reduced the CPU usage on our W
2011-04-29 16:53:00 3600 1
原创 一道关于字符串逆序的笔试题
<br />某同学在网上留的笔试题如下:<br />函数实现将网址进行如下操作<br />www.google.com转成com.google.www 及mail.netease.com转成com.netease.mail<br /><br />不允许用STL,空间为0(1)<br /><br />思路如下:<br />1.先对每个被'.'隔开的单词都逆序一次。<br />2.对整个串再逆序一次。<br /> <br /> <br />//对ptr从iStart开始iNum字符,进行逆转void rev
2011-04-27 21:04:00 2787 1
原创 (转)/etc/ld.so.conf和ldconfig, PKG_CONFIG_PATH
<br />http://dev.firnow.com/course/6_system/linux/Linuxjs/200874/130190.html<br /> <br />首先说下/etc/ld.so.conf: <br />这个文件记录了编译时使用的动态链接库的路径。<br />默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件<br />如果你安装了某些库,比如在安装gtk+-2.4.13时它会需要glib-2.0 >= 2.4.0,辛苦的安装好glib后<br />没有指定
2011-04-27 16:18:00 8334
转载 (转)poll, select & epoll 原理比较分析
原文地址:http://www.cnblogs.com/sharra/archive/2010/12/30/1921287.html因为需要了解底层设备访问的原理,所以惯用高层应用语言的我,需要了解一下Linux的设备访问机制,尤其是处理一组非阻塞IO的原理方法,标准的术语好像是叫多路复用。以下文章部分句子有引用之处,恕没有一一指出出处。 <br /> <br />对于接触过Linux内核或设备驱动开发的读者,一定清楚poll和select系统调用,以及从2.5版本引入的epoll机制(epoll机制包含三
2011-04-21 10:05:00 4672
原创 大数运算——加法,减法,乘法
<br />尝试实现了下大数运算的代码。<br />原理就是用int型数组模拟一个大数的每个位。<br />数组的[0]对应的大数的个位。<br /> <br /> <br />具体代码如下,主要考虑大于10的元素要进位,负数要借位。<br /> <br />#include <iostream>#include <algorithm>#include <stdio.h>#include <string.h>using namespace std;#define MAX_DIGI
2011-04-08 20:04:00 13489 4
转载 sockaddr与sockaddr_in比较
<br />struct sockaddr {<br />unsigned short int sa_family; /* address family, AF_xxx */<br />char sa_data[14]; /* address */<br />};<br />sa_family是地址家族,是“AF_xxx”的形式。常设为“AF_INET”,代表Internet(TCP/IP)地址族。<br />sa_data是协议地址,由sa_family决定。如果sa_family=AF_INET,
2011-03-25 12:27:00 4042
转载 (转)TCP状态转移图学习总结
<br />这是网络编程的基础,tcp的状态转移图说到底就是一个状态机的不同状态之间的转换关系以及触发这些状态需要的条件,一共存在11个状态,我们来逐一分析: <br /><br />1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。 <br />2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。 <br />3.SYN_SENT:客户端发起连接,发送SYN给服务器端。如果服
2011-03-03 19:26:00 2935
转载 (转)神马是UTF-8
<br />本文转自:http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html<br /> <br />今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。<br />结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。<br />下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,
2011-02-22 16:07:00 1515
原创 (转)GDB Tips
<br />http://hi.baidu.com/comcat/blog/item/c51313105b1bed05203f2ea6.html<br /> <br />1. 查看寄存器<br /><br />(gdb) i r<br />(gdb) i r a # 查看所有寄存器(包括浮点、多媒体)<br />(gdb) i r esp<br />(gdb) i r pc<br /><br /><br />2. 查看内存<br /><br />(gdb) x /wx
2011-01-31 11:08:00 3074
转载 (转)multipart form-data boundary 说明
原文链接:http://yefeng.javaeye.com/blog/315847含义 ENCTYPE="multipart/form-data" 说明: <br />通过 http 协议上传文件 rfc1867协议概述,jsp 应用举例,客户端发送内容构造 <br /><br />1、概述在最初的 http 协议中,没有上传文件方面的功能。 rfc1867 (http://www.ietf.org/rfc/rfc1867.txt) 为 http 协议添加了这个功能。客户端的浏览器,如 Microsoft
2010-12-01 15:30:00 23805 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人