![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术文章收藏
文章平均质量分 88
HedpatCzw
这个作者很懒,什么都没留下…
展开
-
linux I/O优化 磁盘读写参数设置
转载:http://wlservers.blog.163.com/blog/static/120622304201241715945256/关于页面缓存的信息,可以用cat /proc/meminfo看到。其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache)。随着写入缓存页,Dirty 的值会增加。一旦开始把缓存页写入硬盘,Writeback的值会增加直到写入结束。Linux 用pdflush进程把数据从缓存页写入硬盘,查看有多少个pdflush进程.转载 2020-08-07 11:50:11 · 721 阅读 · 0 评论 -
C++ 标准库的 locale 类用法
原来一篇总结了下 C 标准库的 setlocale() 用法,这篇讲解的是 C++ 标准库中 locale 类的用法。参考:cplusplus.com 上关于标准 C++ 中国际化支持的参考:Localization libraryLocale classThe C++ Standard Library(Nicolai M. Josuttis,侯捷译)第 14 章转载 2016-01-21 13:44:51 · 778 阅读 · 0 评论 -
gettimeofday优化
转载:http://www.trueeyu.com/?p=17801.介绍: 很多应用(数据库)频繁执行gettimeofday或是其它类似的函数调用,优化这此函数可以提升性能。 Virtual Dynamic Shared Object(VDSO),是一个允许应用在用户空间执行一些kernel活动(不需要通过系统调用),VDSO可以加速gettim转载 2015-12-18 20:09:05 · 916 阅读 · 0 评论 -
Linux中的线程局部存储
转载请说明出处:http://blog.csdn.net/cywosp/article/details/26469435 在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来说,我们可以使用原子操作来处理,这能对程转载 2016-01-19 15:04:52 · 349 阅读 · 0 评论 -
malloc、calloc、realloc的区别
(1)C语言跟内存分配方式从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.从堆上分配,亦称动态转载 2016-01-19 14:49:57 · 396 阅读 · 0 评论 -
sysbench安装、使用、结果解读
http://imysql.com/2014/10/17/sysbench-full-user-manual.shtmlsysbench安装、使用、结果解读4条回复sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。目前sysbench代码托管在launchpad上,项目地址:https://launc转载 2015-12-17 21:34:07 · 544 阅读 · 0 评论 -
struct linger 用法
Linux下tcp连接断开的时候调用close()函数,有优雅断开和强制断开两种方式。那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下: #include struct linger { int l_onoff; int l_linger;}; 三种断开方式:1. l_onoff =转载 2015-10-04 13:56:53 · 374 阅读 · 0 评论 -
Linux中的likely()和unlikely()
likely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢?首先明确: if (likely(value))等价于if (value) if (unlikely(value))等价于if (value)也就是说likely()和unlikely()从阅读和理解的角度是一样的。这两个宏在内核中定义如下:#define lik转载 2015-09-12 20:47:28 · 301 阅读 · 0 评论 -
shell参数替换之##%%
${var#Pattern}, ${var##Pattern} 从$var 开头删除最近或最远匹配$Pattern 的子串. 来自 Example A-7 例子的一部分. 1 # 来自"days-between.sh"例子的一个函数. 2 # 去掉传递进来的参数开头的 0. 3 4 strip_leading_zero ()转载 2013-07-22 11:23:06 · 738 阅读 · 0 评论 -
shell中出现的特殊符号
$0, $1, $2,等等...位置参数,从命令行传递给脚本,或者是传递给函数.或者赋职给一个变量.$0表示当前执行的进程名,script 本身的名字,或者在正则表达式中表示整行输出$#命令行或者是位置参数的个数$*所有的位置参数,被作为一个单词.注意:"$*"必须被""引用.@与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参转载 2013-07-15 12:09:23 · 472 阅读 · 0 评论 -
YAML 简介
本文简要介绍YAML™的理念,主要实现,特色以及一些缺憾。YAML Ain't Markup Language和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。YAML不是XML。为什么不是XML呢?因为:YAML的可读性好。 YAML和脚本语言的交互性好。 YAML使用实现语言的数据类型。 YAML有转载 2013-04-23 14:28:44 · 596 阅读 · 0 评论 -
Linux 基本编程头文件说明
socket编程中需要用到的头文件sys/types.h:数据类型定义sys/socket.h:提供socket函数及数据结构netinet/in.h:定义数据结构sockaddr_inarpa/inet.h:提供IP地址转换函数netdb.h:提供设置及获取域名的函数sys/ioctl.h:提供对I/O控制的函数sys/poll.h:提供socket等待测试机制的转载 2013-03-20 16:52:18 · 581 阅读 · 0 评论 -
如何解决VIM中打开文件里有的^M
有两种情况,会出现打开的文件都显示^M符号: 1. vim被配置为fileformat=unix,而你打开的文件都是dos格式的。unix格式的换行符为0A(ascii码)也就是,dos格式的换行符为 0D 0A(也就是),其实就显示为^M。下面是详细讲解:DOS, Mac 和Unix格式的文件回想计算机的史前史,那时的打字机使用两个字符来开始一个新行。首先是一个字符命令使转载 2013-03-01 15:55:30 · 3075 阅读 · 0 评论 -
C和C++中NULL和0的区别
1,什么是空指针常量(null pointer constant)?[6.3.2.3-3] Aninteger constant expression with the value 0, or such an expression cast totype void *, is called a null pointer constant.这里告诉我们:0、0L、'\0'、3 - 3、0 *转载 2013-02-16 17:20:33 · 470 阅读 · 0 评论 -
linux库文件头文件查找顺序
Include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()写在specs内的后来用-D -I -L指定的gcc环境变量设定(编译的时候)ld.so的环境变量(这是run time的时候)一、头文件gcc 在编译时如何去寻找所需要的头文件 :※所以head转载 2013-01-10 11:28:00 · 1186 阅读 · 0 评论 -
__gnu_cxx::hash_map使用中的一些问题
今天看《libstdc++ manual 20110201》中提到这个hash_map是为了向后兼容SGI/HP的代码,但是已经被废弃了,取而代之的是C++0x中的unordered_map/unordered_multimap,在tr1文件夹中(老版本的编译器一般不带这个文件夹)。========================================================转载 2012-12-20 16:22:30 · 948 阅读 · 0 评论 -
Java序列化的机制和原理
有关Java对象的序列化和反序列化也算是Java基础的一部分,下面对Java序列化的机制和原理进行一些介绍。Java序列化算法透析Serialization(序列化)是一种将对象以一连串的字节描述的过程;反序列化deserialization是一种将这些字节重建成一个对象的过程。Java序列化API提供一种处理对象序列化的标准机制。在这里你能学到如何序列化一个对象,什么时候需要序列转载 2013-01-04 13:09:17 · 317 阅读 · 0 评论 -
关于-fno-omit-frame-pointer与-fomit-frame-pointer
在GDB core的时候,经常去查看EBP,ESP寄存器,来查找一些有用的调用信息,但是感觉这个EBP,ESP中值的变化,并不是像书中描述的那种函数调用的标准流程。在用perf做性能分析,打印函数的调用路径时,打印调用路径也有问题。后来才清楚,原来是-fno-omit-frame-pointer这个优化导致的问题。下面以一个实例来说明:#include int ad转载 2015-12-22 15:16:33 · 6543 阅读 · 0 评论 -
rpmbuild spec 说明
update log:2010.01.08 加入SPEC文件中的宏定义和变量2010.01.08 关键字说明,如何在升级过程中不覆盖配置文件 上一篇日志写到,为什么要制作rpm包,以及如何使用.src.rpm文件生成rpm包。最后部分还看到.src.rpm的内容,实际上 就是由.tar.gz源码、补丁软件和.spec脚本组成的。由此知道,使用.spec生成rpm包是比较简转载 2016-01-26 20:11:41 · 360 阅读 · 0 评论 -
深入分析C++引用
关于引用和指针的区别的文章很多很多,但是总是找不到他们的根本区别,偶然在codeproject上看到这篇文章,觉得讲的挺好的,所以翻译了下,希望对大家有帮助。原文地址: http://www.codeproject.com/KB/cpp/References_in_c__.aspx 引言 我选择写 C++ 中的引用是因为我感觉大多数人误解了引用。而我之所以有这个感受是转载 2016-01-11 07:25:21 · 328 阅读 · 0 评论 -
GRPC 异步调用
protobuf原生的异步调用void DoneCallback(PingMessage *response) {}void async_test() { RpcClient client("127.0.0.1", 8000); PingService::Stub stub(client.Channel()); if (!client.init()) { printf(转载 2017-08-14 16:05:13 · 6626 阅读 · 0 评论 -
Linux CPU调度相关
CFS(完全公平调度器)是Linux内核2.6.23版本开始采用的进程调度器,它的基本原理是这样的:设定一个调度周期(sched_latency_ns),目标是让每个进程在这个周期内至少有机会运行一次,换一种说法就是每个进程等待CPU的时间最长不超过这个调度周期;然后根据进程的数量,大家平分这个调度周期内的CPU使用权,由于进程的优先级即nice值不同,分割调度周期的时候要加权;每个进程的累计运行转载 2016-05-21 20:03:57 · 689 阅读 · 0 评论 -
TCP拥塞控制慢启动窗口设置
拥塞控制及慢启动通塞控制:Congestion Control简单的说,就是TCP传输过程中,为了避免一下子将网络冲爆,引入的机制。而慢启动,顾名思义,一开始慢慢传,发现没有问题,再增加传输速度。而一旦发现传输有超时,协议会认为网络拥堵,又降低传输速度。起始的传输速度,就是由初始拥塞窗口,initial congestion window,简称initcwnd参数控制的。ali转载 2016-05-21 19:52:48 · 4396 阅读 · 0 评论 -
Linux cpuinfo
判断依据:1.具有相同core id的cpu是同一个core的超线程。2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。英文版:1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same cor转载 2016-05-30 18:24:30 · 403 阅读 · 0 评论 -
磁盘相关装载记录
fdisk可以通过fdisk -l列出所有的块设备及分区表#fdisk -l 2>/dev/null |grep "Disk"Disk /dev/sda: 4000.7 GB, 4000787030016 bytesDisk /dev/sdb: 4000.7 GB, 4000787030016 bytesDisk /dev/sdc: 4000.7 GB, 400078703001转载 2016-04-21 15:59:29 · 894 阅读 · 0 评论 -
RPM打包详细说明
转 https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cnHow to create an RPM package/zh-cnHow to create an RPM packageIn other languages: العربية (ar) Deutsch (de) En转载 2016-05-29 19:57:39 · 1645 阅读 · 0 评论 -
JDBC useLocalSessionState
1.useLocalSessionState作用默认情况下,我们的连接串信息没有包含useLocalSessionState参数的设置,这个值默认为false。这个值的作用是驱动程序是否使用autocommit,read_only和transaction isolation的内部值(jdbc端的本地值)。如果设置为false,则需要这个判断这三个参数的场景,都需要发语句到远端请求,转载 2016-05-16 10:06:06 · 7608 阅读 · 0 评论 -
How To Add Breakpad To Your Linux Application
How To Add Breakpad To Your Linux ApplicationThis document is an overview of using the Breakpad client libraries on Linux.Building the Breakpad librariesBreakpad provides an Autotools bu转载 2016-04-11 16:56:53 · 316 阅读 · 0 评论 -
crash-reporting/debugging-a-minidump
Table of Contents目录1 Table of Contents2 Use minidump_stackwalk to show a stack trace3 Use gdb to show a backtrace3.1 Generate core file3.2 Calculate address for sym转载 2016-04-11 16:54:31 · 678 阅读 · 0 评论 -
Linux TCP队列相关参数的总结
在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲、队列有关的参数。网上搜到的文章会告诉你需要修改哪些参数,但我们经常是知其然而不知其所以然,每次照抄过来后,可能很快就忘记或混淆了它们的含义。本文尝试总结TCP队列缓冲相关的内核参数,从协议栈的角度梳理它们,希望可以更容易的理解和记忆。注意,本文内容均来源于参考文档,没有去读相关的内核源码做验证,不能转载 2016-02-19 09:56:33 · 917 阅读 · 0 评论 -
解决ntp的错误 no server suitable for synchronization found
错误1.Server dropped: Strata too high在ntp客户端运行ntpdate serverIP,出现no server suitable for synchronization found的错误。在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratu转载 2016-02-01 15:17:25 · 964 阅读 · 0 评论 -
exit()与_exit()函数的区别
注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相似到什么程度,我们可以从Linux的源码中找到答案:#def转载 2016-02-01 11:58:36 · 390 阅读 · 0 评论 -
linux中的网络地址结构记录
通用的地址结构sockaddr123456struct sockaddr{ sa_family_t sa_familiy; /* address family */ char sa_data[];转载 2016-03-02 11:05:48 · 497 阅读 · 0 评论 -
Built-in functions for atomic memory access
The following builtins are intended to be compatible with those described in the Intel Itanium Processor-specific Application Binary Interface, section 7.4. As such, they depart from the normal GCC转载 2016-01-11 12:18:06 · 295 阅读 · 0 评论 -
Multithreaded simple data type access and atomic variables
ntroductionBACK TO TOCIn this article I would like to continue subject I started in my previous two posts (post 1 and post2). Question I am trying to answer is what is the most efficient, yet sa转载 2016-01-11 12:11:54 · 789 阅读 · 0 评论 -
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)先分析一下这个 宏的运行机理:一共4步 1. ( (TYPE *)0 ) 将零转型为TYPE类型指针; 2. ((TYPE *)0)->MEMBER 访问结构中的数据成员; 3. &( ( (TYPE *)0 )->MEMBER )取出数据成员的地址; 这转载 2016-01-11 11:59:15 · 749 阅读 · 0 评论 -
ptmalloc
ptmallocphenix*2006-06-07目录 1 前言 2 x86平台Linux程序的内存分布 3 Allocator 4 chuck的组织 4.1 chuck 4.2 chunk中的空间复用 5 空闲 chu转载 2012-12-05 16:20:12 · 500 阅读 · 0 评论 -
标准Linux文件系统层次标准(Filesystem Hierarchy Standard)/usr篇
/usr层次结构 /usr 是文件系统的第二个主要部分。/usr下的数据是可共享,且只读的。这意味着/usr能够和各种FHS标准兼容的主机共享数据,但是为只读。任何主机相关和随时间变化的数据存储在其他地方。 对于大的软件包,在/usr层次结构下不能使用直接子目录。 下面的目录或者目录符号链接,应该在/usr下。目录转载 2012-08-27 22:43:10 · 704 阅读 · 0 评论 -
标准Linux文件系统层次标准(Filesystem Hierarchy Standard)根文件系统篇
根文件系统 根文件系统所包含的东西必需足以启动,备份,恢复或修复系统。为了启动系统,根分区必需存在足够的空间用来挂载其他的文件系统,其中包括了实用程序,配置信息,引导加载信息,和其他的一些基本启动数据。/usr/, /opt/, 和/var被设计为可位于其他的位置或其他的文件系统。由经验丰富的系统维护者使用的,用来恢复或修复损坏的系统的工具,必需位于根文件系统。为了备份一个系统,用于备份(备份转载 2012-08-28 22:45:20 · 554 阅读 · 0 评论 -
__asm__ __volatile__内嵌汇编用法简述
__asm__ __volatile__内嵌汇编用法简述 在阅读C/C++原码时经常会遇到内联汇编的情况,下面简要介绍下__asm__ __volatile__内嵌汇编用法。因为我们华清远见教学平台是ARM体系结构的,所以下面的示例都是用ARM汇编。 带有C/C++表达式的内联汇编格式为: __asm__ __volatile__("InSTructiON List" :转载 2012-07-14 08:59:44 · 461 阅读 · 0 评论