自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

转载 理解 Memory barrier(内存屏障)

转自:http://name5566.com/4535.html参考文献列表:http://en.wikipedia.org/wiki/Memory_barrierhttp://en.wikipedia.org/wiki/Out-of-order_executionhttps://www.kernel.org/doc/Documentation/memory-barrier

2015-07-31 13:47:45 1003

转载 Disruptor(无锁并发框架)-发布

转自:http://ifeve.com/the-disruptor-lock-free-publishing/假如你生活在另外一个星球,我们最近开源了一套高性能的基于消息传递的开源框架。下面我给大家介绍一下如何将消息通过Ring buffer在无锁的情况下进行处理。在深入介绍之前,可以先快速阅读一下Trish发表的文章,该文章介绍了ring buffer和其工作原理。

2015-07-30 12:42:08 367

转载 由一道淘宝面试题到False sharing问题

转自:http://blog.csdn.net/wdzxl198/article/details/11218765今天在看淘宝之前的一道面试题目,内容是在高性能服务器的代码中经常会看到类似这样的代码:[cpp] view plaincopytypedef union  {    erts_smp_rwmtx_t rwm

2015-07-30 12:30:54 638

转载 并发框架Disruptor译文

转自:http://ifeve.com/disruptor/Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Dis

2015-07-30 11:34:10 341

转载 剖析Disruptor:为什么会这么快?(四)Ringbuffer的特别之处

转自:http://ifeve.com/dissecting-disruptor-whats-so-special/最近,我们开源了LMAX Disruptor,它是我们的交易系统吞吐量快(LMAX是一个新型的交易平台,号称能够单线程每秒处理数百万的订单)的关键原因。为什么我们要将其开源?我们意识到对高性能编程领域的一些传统观点,有点不对劲。我们找到了一种更好、更快地在线程间共享数据的

2015-07-30 11:29:03 463

转载 剖析Disruptor:为什么会这么快?(三)揭秘内存屏障

转自:http://ifeve.com/disruptor-memory-barrier/最近我博客文章更新有点慢,因为我在忙着写一篇介绍内存屏障(Memory Barries)以及如何将其应用于Disruptor的文章。问题是,无论我翻阅了多少资料,向耐心的Martin和Mike请教了多少遍,以试图理清一些知识点,可我总是不能直观地抓到重点。大概是因为我不具备深厚的背景知识来帮助我透

2015-07-30 11:21:09 316

转载 剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充

转自:http://ifeve.com/disruptor-cacheline-padding/我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我在上一篇文章中提到RingBuffer后,我们收

2015-07-30 10:53:55 315

转载 伪共享(False Sharing)

转自:http://ifeve.com/falsesharing/原文地址:http://ifeve.com/false-sharing/作者:Martin Thompson  译者:丁一缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,

2015-07-30 10:35:26 391

转载 False Sharing问题

转自:http://blog.csdn.net/pennyliang/article/details/5766541在多处理器,多线程情况下,如果两个线程分别运行在不同的CPU上,而其中某个线程修改了cache line中的元素,由于cache一致性的原因,另一个线程的cache line被宣告无效,在下一次访问时会出现一次cache line miss,哪怕该线程根本无效改动的这个元

2015-07-30 10:25:46 430

转载 剖析Disruptor:为什么会这么快?(一)锁的缺点

转自:http://ifeve.com/locks-are-bad/Martin Fowler写了一篇非常好的文章,里面不仅提到了Disruptor,而且还解释了Disruptor 如何应用在LMAX的架构里。里面有提及了一些目前没有涉及的概念,但最经常问到的问题是 “Disruptor究竟是什么?"。目前我正准备在回答这个问题,但首先回答"为什么它会这么快?"这些

2015-07-30 09:53:45 358

转载 如何优化服务器的性能

转自:http://www.cnblogs.com/zackyang/archive/2010/01/19/1651566.html一、通常服务器的性能会卡在三个地方:cpu网络IO磁盘IO二、在优化性能的时候,首先要判断性能的瓶颈在上述的哪个地方。然后对症下药,按照下面的方法来优化:1、提高CPU性能的方法并发。利用多线程、进程。老的线程库效率太低,需要升级用np

2015-07-30 08:51:21 463

转载 定位多线程内存越界问题实践总结

转自:http://blog.csdn.net/killmice/article/details/38443343最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题。定位这个问题花了整整一周的时间,期间历经曲折,尝试了各种内存调试的办法。往往感觉就要柳暗花明了,却发现又进入了另一个死胡同。最后,使

2015-07-26 23:00:33 848 1

转载 善用GDB 调试一些函数栈被毁坏的问题

转自:http://blog.csdn.net/ontheline/article/details/16963817最近查一些问题,这些问题的现象一开始难以解释,函数的参数地址在函数内部被传递给另外的函数,然后发现地址发生了改变,这样的情况称之为函数的栈被毁坏,导致无法重入。然后被调用的函数里面,访问了非法的地址导致了segment fault,产生core dump文件。问题

2015-07-26 22:35:34 1114

转载 关于SIGPIPE信号

转自:http://blog.sina.com.cn/s/blog_502d765f0100kopn.html我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试.  但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结

2015-07-26 22:29:24 378

转载 Linux kill命令

转自:http://www.cnblogs.com/peida/archive/2012/12/20/2825837.htmlLinux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/

2015-07-26 22:25:24 330

转载 深入探索Linux coredump调试技巧

转自:http://blog.csdn.net/forever_feng/article/details/46764201. coredump 产生的原理和局限1.1. 如何产生 core 文件要素一,必须有信号产生:从上面的信号定义和说明可以看出,进程中止前肯定会产生信号,然后内核根据信号的类型来决定是否要产生 core 文件。要素二,编译器支持:要产生 core 文

2015-07-26 20:28:23 1297

原创 [Linux]关于非阻塞socket调用connect

今天调试一段很老的代码,程序以Nonblocking方式创建了socket,但是在调用connect之前,使用ioctl将socket设置为阻塞,等connect成功后再设置为非阻塞。调试后发现,connect始终返回-1,errno=115(EINPROGRESS)。在网上查了一下,对于非阻塞socket,调用connect时,如果返回EINPROGRESS,则说明操作正在进行,

2015-07-22 17:51:20 846

原创 memset报传入的实参太多的错误

调试一段老代码,编译始终报以下错误:/usr/include/string.h:459:  错误:  给予 function 'void memset(void*, int)' 的实参太多memset的函数原型为:void *memset(void *s, int ch, size_t n)因此,源代码中针对memset的调用参数是没问题的。错误提示中,针对memset的调

2015-07-19 11:24:39 1541

原创 VS2008 Find and Replace功能失效

今天Visual Studio 2008,Find and Replace功能突然失效,具体现象为:1. Ctrl+F快捷键,无法打开Find and Replace窗口,且VS丢失焦点;2. 工具栏上Find in Files窗口无法打开,点击工具栏上Find in Files按钮,VS丢失焦点;尝试了以下几种方法,依旧无法成功:1. 重启VS;2. 重启计算机;

2015-07-17 08:52:44 1113

转载 每个程序员应知晓的编译器优化相关内容(第 2 部分)

转自:https://msdn.microsoft.com/zh-cn/magazine/dn973015欢迎来到编译器优化系列的第二部分。在第一篇文章 (msdn.microsoft.com/magazine/dn904673) 中,我探讨了函数内联、循环展开、循环不变量代码移动、自动矢量化和 COMDAT 优化。在此第二篇文章中,我将探讨另外两个优化,即寄存器分配和指令调度。如往常

2015-07-11 00:02:56 840

转载 每个程序员都应当知道的编译器优化知识

转自:http://blog.jobbole.com/84712/高级编程语言提供的函数、条件语句和循环这样的抽象编程构造极大地提高了编程效率。然而,这也潜在地使性能显著下降成为了用高级编程语言写程序的一大劣势。在理想条件下,在不以性能为妥协的情况下,你应该写出易读并且易维护的代码。因此,编译器尝试自动优化代码以提高其性能,当今的编译器都深谙其道。编译器可以转化循环、条件语句和递归函数

2015-07-10 23:54:22 1011

转载 Linux最大打开文件描述符数

转自:http://blog.csdn.net/superchanon/article/details/133037051.    系统最大打开文件描述符数:/proc/sys/fs/file-max1)  查看$ cat /proc/sys/fs/file-max1864052)  设置a.  临时性# echo 1000000 > /proc/sys/fs/fi

2015-07-10 22:53:22 501

转载 linux下的select简直太奇葩了:1024限定的不只是监听的个数,还是文件描述符的最大值,注意,是值

转自:http://m.blog.csdn.net/blog/wuzili1234/12450451我原来自以为对select就算不熟,基本原理和使用方法也略知一二了,做了一年多的服务器编程,好歹知道linux下的select不支持超过1024个的描述符,好歹知道可以通过内核编译来重设FD_SETSIZE,也敢大言不惭地说select函数的maxfd应该是监测的所有fd值中取最大的+1

2015-07-10 17:45:35 13949 4

转载 关于网络编程中MTU、TCP、UDP优化配置的一些总结

转自:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3022955.html首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。   其中以太网(Ethernet)的数据帧在链路层   IP包在网络层   TCP或UDP包在传输层   TCP或UDP中的数据(Data)在应用层   它们

2015-07-09 23:07:09 679

转载 ssh-keygen的使用方法

转自:http://blog.csdn.net/kongqz/article/details/6338690一、概述1、就是为了让两个linux机器之间使用ssh不需要用户名和密码。采用了数字签名RSA或者DSA来完成这个操作2、模型分析假设 A (192.168.20.59)为客户机器,B(192.168.20.60)为目标机;要达到的目的:A机器

2015-07-09 15:26:26 375

转载 Git教程

转自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候

2015-07-09 14:49:29 346

转载 TEST_F:多个测试使用同样的配置

转自:http://blog.chinaunix.net/uid-24709751-id-4358266.htmlhttps://code.google.com/p/googletest/wiki/V1_7_Primer场景:1. 准备数据A,TEST测试a2. 准备数据A,TEST测试b....3. 准备数据A,TEST测试n问题:准备数据A太多次,,,可以使

2015-07-07 22:27:53 712

转载 玩转Google开源C++单元测试框架Google Test系列(gtest)(总)

转自:http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html前段时间学习和了解了下Google的开源C++单元测试框架Google Test,简称gtest,非常的不错。 我们原来使用的是自己实现的一套单元测试框架,在使用过程中,发现越来越多使用不便之处,而这样不便之处,gtest恰恰很好的解决了。其实g

2015-07-07 14:47:57 363

转载 LINUX命令后面常见的>/DEV/NULL 和 2>&1 的含义

转自:http://www.sunnyu.com/?p=177为了避免在开发服务器使用ftp上传代码文件,导致文件不一致问题的现象。今天做一个从版本库中自动同步文件到开发服务器的脚本,同时可以规范版本库的使用。简单编写了一下脚本,通过ssh登陆在命令行下运行正常,可是将脚本添加到crontab中就不正常。想记录一下输出信息,分析一下错误原因。将脚本通过使用 > info.l

2015-07-06 19:41:51 1118

转载 五种利用strace查故障的简单方法

转自:http://blog.csdn.net/dlmu2001/article/details/8842891我一直惊讶为什么这么少的人认识到可以利用strace来干的事,它一直是我的第一调试工具,因为基本上它存在于我运行过的所有的Linux系统上,它可以用来在很多方面进行故障诊断。什么是strace?strace是一个非常简单的工具,它可以跟踪系统调用的

2015-07-06 12:59:52 850

转载 Linux Futex的设计与实现

转自:http://blog.csdn.net/jianchaolv/article/details/7544316引子在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢?1. 什么是FutexF

2015-07-06 12:54:12 422

转载 调试 之gdb thread命令 与 ltrace/strace

转自:http://blog.csdn.net/tyger/article/details/5684816我们可以通过  1)  gdb prog_name -> r               用在逐步调试自己的程序时                    2)  gdb -> attach process_id       正在运行中的后台程序突然卡在了某个地方,先ps再g

2015-07-05 23:30:31 458

转载 使用strace, ltrace寻找故障原因的线索

转自:http://blog.csdn.net/delphiwcdj/article/details/73873252012-03-23 wcdj在GNU/Linux环境下,当程序出现“疑难杂症”的时候,如何快速定位问题呢?本文介绍strace/ltrace的一些使用方法,内容主要来自个人的读书笔记(可见参考文献)。strace/ltrace 是一类不错的工具,在工作中

2015-07-05 23:25:15 487

转载 性能杀手:”潜伏”的memset

转自:http://blog.csdn.net/yunhua_lee/article/details/6381866【memset性能陷进】memset是大家常用的函数,而且一般的编程书籍都会谆谆告诫大家:申请内存后要初始化,防止使用未经初始化的内存导致不可预知的结果,所以我们一般都会按照如下方式编写代码:char* buffer = (char*)malloc(1024);m

2015-07-05 23:23:19 398

转载 技巧: 使用truss、strace或ltrace诊断软件的"疑难杂症"

转自:http://www.ibm.com/developerworks/cn/linux/l-tsl/简介进程无法启动,软件运行速度突然变慢,程序的"Segment Fault"等等都是让每个Unix系统用户头痛的问题,本文通过三个实际案例演示如何使用truss、strace和ltrace这三个常用的调试工具来快速诊断软件的"疑难杂症"。truss和strac

2015-07-05 23:21:34 460

转载 lsof命令使用详解

转自:http://czmmiao.iteye.com/blog/1734384lsof简介  lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接 和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序

2015-07-05 13:46:56 1651

空空如也

空空如也

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

TA关注的人

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