方亮的专栏

方亮的专栏

排序:
默认
按更新时间
按访问量

使用Boost的Serialization库序列化STL标准容器

        使用Boost做对象序列化是非常方便的,本文将介绍一种序列化STL标准容器的方法。        这是之前设计的异步框架的一个子功能:过程A将标准容器数据序列化成二进制流,然后将该二进制数据发送到过程B,过程B将数据反序列化为标准容器。(转载请指明出于breaksoftware的c...

2018-06-22 19:26:31

阅读数:154

评论数:0

C++拾趣——有趣的操作符重载

        “有趣”并不是胡闹,所以本文探讨的将是“符合常识”的重载。而那些“天马行空”的重载,比如重载==为“不等于”则不是本文的议题。

2018-06-13 17:28:09

阅读数:105

评论数:0

谈代码注释

        只要写代码,就会遇到代码注释的问题。在不同的公司,不同的项目组,不同的项目中,可能会有不同的注释标准。有些标准让我们感觉很受益,有些则让我们感觉很反感。而对于没有明确标准的项目,我们往往会遇到“百家齐放,百家争鸣”般的注释。我无法给出一个明确的标准,只是在此探讨下:什么样的注释不应...

2018-04-01 01:24:25

阅读数:350

评论数:0

动态执行流程分析和性能瓶颈分析的利器——valgraind的callgrind

        在《内存、性能问题分析的利器——valgraind》一文中我们简单介绍了下valgrind工具集,本文将使用callgrind工具进行动态执行流程分析和性能瓶颈分析。(转载请指明出于breaksoftware的csdn博客)        之前的《利器》系列中,我们介绍了两种静态分...

2018-03-09 14:52:51

阅读数:197

评论数:0

内存问题分析的利器——valgraind的memcheck

        在《内存、性能问题分析的利器——valgraind》一文中我们简单介绍了下valgrind工具集,本文将使用memcheck工具分析各种内存问题。(转载请指明出于breaksoftware的csdn博客)        本文所有的代码都是使用g++ -O0 -g mem_error...

2018-03-09 14:52:45

阅读数:239

评论数:0

内存、性能问题分析的利器——valgraind

        valgrind是一个知名的分析软件集。我们可以使用它进行内存、多线程及性能等各种问题的分析。它采用非侵入方式,所谓非侵入方式是指:我们不用在代码中插入分析工具的库。这对于开发者来说是友好的。因为如果要将工具编译到文件中,或者要调用其提供的一些API,才能进行问题分析,无疑增大了用...

2018-03-09 14:52:42

阅读数:182

评论数:0

zookeeper快速入门——应用(两种分布式锁)

        在《zookeeper快速入门——简介》一文中,我们介绍了zookeeper的机制。但是还是比较抽象,没有直观感受到它在分布式系统中的应用。本文我们使用一个例子,三次迭代演进,来说明Zookeeper Client端和Server端如何配合以实现分布式协作。(转载请指明出于brea...

2018-02-27 23:26:02

阅读数:283

评论数:0

zookeeper快速入门——部署

        zookeeper有两种运行模式:独立模式和仲裁模式。独立模式就是只运行一个Zookeeper Server,这自然没法解决服务崩溃导致系统不可用的问题。仲裁模式就是以集群的方式运行Zookeeper Server,这样在Leader不可用时,集群内部会发起选举,而推选一个新的Le...

2018-02-27 23:25:49

阅读数:183

评论数:0

zookeeper快速入门——简介

        在几十年前,一个独立的计算机上往往部署着一套完整的应用系统。当时因为网络稳定性及速度的限制,将相关联的服务部署在一台机器上,让它们使用系统机制通信——比如管道,文件等,往往是最稳定和最高效的。然而随着网络技术的发展,特别是“云计算”和“大数据”的盛行,我们越来越多的谈到“分布式系统...

2018-02-27 23:25:36

阅读数:274

评论数:0

浅析GPU计算——cuda编程

        在《浅析GPU计算——CPU和GPU的选择》一文中,我们分析了在遇到什么瓶颈时需要考虑使用GPU去进行计算。本文将结合cuda编程来讲解实际应用例子。(转载请指明出于breaksoftware的csdn博客)        之前我们讲解过,CPU是整个计算机的核心,它的主要工作是负...

2018-02-13 16:51:23

阅读数:832

评论数:0

浅析GPU计算——CPU和GPU的选择

        目前市面上介绍GPU编程的博文很多,其中很多都是照章宣科,让人只能感受到冷冷的技术,而缺乏知识的温度。所以我希望能写出一篇可以体现技术脉络感的文章,让读者可以比较容易理解该技术,并可以感悟到cuda编程设计及优化的原理。(转载请指明出于breaksoftware的csdn博客)  ...

2018-02-07 19:04:23

阅读数:479

评论数:2

绑定CPU逻辑核心的利器——taskset

        在工作中,我们可能遇到这样的需求:如何评估程序在一核和多核下的工作效率差距?最简单的想法是找一台只有一个CPU逻辑核的机器和一台有多个逻辑核的机器。(转载请指明出于breaksoftware的csdn博客)但是这种方式有明显的问题:不容易找到这样的机器。找到的机器不能保证其他配置一...

2018-01-25 18:33:57

阅读数:675

评论数:0

C++拾趣——C++11的语法糖auto

        C++是一种强类型的语言,比如变量a,如果声明它是整型,则之后只能将它作为整型来用。这和其他弱类型的语言有很大的区别,比如python中,我们可以让a在第一行是个整型,第三行是一个字符串。(转载请指明出于breaksoftware的csdn博客)a = 3 print a a = ...

2018-01-22 19:01:13

阅读数:264

评论数:0

Linux下HOOK动态链接库中API的方法

        2012年,我写了一篇介绍Windows系统下Ring3层API的hook方案——《一种注册表沙箱的思路、实现——Hook Nt函数》,其在底层使用了微软的Detours库。5年后,我又遇到这么一个问题,但是系统变成了Linux。我最开始的想法是找一个Linux下的Detours库...

2017-08-23 21:49:10

阅读数:881

评论数:0

代码打补丁的利器——diff和patch

        一般来说,如果我们在研发过程中需要对代码进行修改,是不需要通过打补丁的方式的,因为我们可以直接改动文件即可。但是如果针对一款要上线的产品,我们总不能在研发的电脑上编译通过后直接发布到线上的。(转载请指明出于breaksoftware的csdn博客)因为这样做有很多缺陷:最后负责编译...

2017-08-17 19:56:22

阅读数:802

评论数:0

libev源码解析——定时器监视器和组织形式

我们先看下定时器监视器的数据结构。(转载请指明出于breaksoftware的csdn博客)/* invoked after a specific time, repeatable (based on monotonic clock) */ /* revent EV_TIMEOUT */ type...

2017-08-07 16:07:21

阅读数:827

评论数:0

libev源码解析——定时器原理

本文将回答《libev源码解析——I/O模型》中抛出的两个问题。(转载请指明出于breaksoftware的csdn博客)        对于问题1:为什么backend_poll函数需要指定超时?我们让其一直等待到有事件发生不是更好么?        答案是“必须要指定超时”。为什么呢?在《li...

2017-08-07 16:07:05

阅读数:1001

评论数:0

libev源码解析——I/O模型

在《libev源码解析——总览》一文中,我们介绍过,libev是一个基于事件的循环库。本文将介绍其和事件及循环之间的关系。(转载请指明出于breaksoftware的csdn博客)        目前ibev支持如下IO事件模型:select模型。对应文件是ev_select.c。poll模型。对...

2017-08-07 16:06:40

阅读数:925

评论数:0

libev源码解析——调度策略

在《libev源码解析——监视器(watcher)结构和组织形式》中介绍过,监视器分为[2,-2]区间5个等级的优先级。等级为2的监视器最高优,然后依次递减。不区分监视器类型和关联的文件描述符的值,权限高的要优先于权限低的执行。但是ANFD结构中的监视器链表无法满足高等级优先执行的特性。那么lib...

2017-08-07 16:06:16

阅读数:855

评论数:0

libev源码解析——监视器(watcher)结构和组织形式

        在《libev源码解析——总览》中,我们介绍了libev的一些重要变量在不同编译参数下的定义位置。由于这些变量在多线程下没有同步问题,所以我们将问题简化,所提到的变量都是线程内部独有的,不用考虑任何多线程问题。(转载请指明出于breaksoftware的csdn博客)       ...

2017-08-07 16:05:55

阅读数:946

评论数:0

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