zyfforlinux

专注linux内核,系统编程,C++服务器端编程,golang ,python/bash脚本编程,DevOps,分布式...

进程概述和内存分配

进程概述和内存分配 本文是作者阅读TLPI(The Linux Programer Interface的总结),为了突出重点,避免一刀砍,我不会过多的去介绍基本的概念和用法,我重点会去介绍原理和细节。因此对于本文的读者,至少要求读过APUE,或者是实际有写过相关代码的程序员,因为知识有点零散,...

2016-05-16 11:15:50

阅读数:5612

评论数:0

文件I/O与系统编程

文件IO与系统编程 本文是作者阅读TLPI(The Linux Programer Interface的总结),为了突出重点,避免一刀砍,我不会过多的去介绍基本的概念和用法,我重点会去介绍原理和细节。因此对于本文的读者,至少要求读过APUE,或者是实际有写过相关代码的程序员,因为知识有点零散,...

2016-05-12 11:33:23

阅读数:4902

评论数:2

可重入、线程安全和异步信号安全

什么是可重入?关于可重入和不可重入这些概念网上可以找到很多,本人表达能力欠佳,所以在此处引用别人的话对这两个概念做一个简单的介绍: 在多线程或有异常控制流的情况下,当某个函数运行到中途时,控制流(也就是当前指令序列)就有可能被打断而去执行另一个函数. 如果在这种情况下不会出现问题,比如说数据或...

2016-03-05 15:30:04

阅读数:575

评论数:0

Tip of the Week #42: Prefer Factory Functions to Initializer Methods

Tip of the Week #42: Prefer Factory Functions to Initializer Methods Originally posted as totw/42 on 2013-05-10 By Geoffrey Romer (gromer@goog...

2018-04-02 22:02:07

阅读数:26

评论数:1

Tip of the Week #36: New Join API

Tip of the Week #36: New Join API Originally published as totw/36 on 2013-03-21 By Greg Miller (jgm@google.com) Updated 2018-01-24 “I go...

2018-04-02 22:01:17

阅读数:13

评论数:0

Tip of the Week #10: Splitting Strings, not Hairs

Tip of the Week #10: Splitting Strings, not Hairs Originally published as totw/10 on 2012-08-16 By Greg Miller (jgm@google.com) Updated 201...

2018-04-02 22:00:19

阅读数:11

评论数:0

Tip of the Week #3: String Concatenation and operator+ vs. StrCat()

Tip of the Week #3: String Concatenation and operator+ vs. StrCat() Originally published as totw/3 on 2012-05-11 Updated 2017-09-18; revised 2...

2018-04-02 21:58:57

阅读数:11

评论数:0

Tip of the Week #1: string_view

Tip of the Week #1: string_view Originally published as totw/1 on 2012-04-20 By Michael Chastain (mec.desktop@gmail.com) Updated 2017-09-18 W...

2018-04-02 21:48:34

阅读数:16

评论数:0

如何mock系统调用

背景​   Linux下开发存储系统、网络库的时候会用到一系列Linux的系统调用,每一个系统调用都有一些出错的场景,有些场景很极端,比如内存使用达到上限、磁盘写满等,如果对其进行测试的话,很难去构造这样的一个场景,这个时候集成测试就显得力不存心了,只能靠单元测试来覆盖这些场景。现在的问题就是如何...

2017-09-16 18:00:16

阅读数:250

评论数:1

Linux信号专题FAQ

信号: 基本概念可重入、线程安全以及异步信号安全的区别?​   参考可重入、线程安全和异步信号安全,需要强调的是异步信号安全,这个概念知道的人不多,平常大家在编写代码的时候也很少考虑这个因素,也不清楚哪些函数是异步信号安全的,哪些不是,典型的像printf就不是异步信号安全的,内部会加锁,但是平时...

2017-09-13 00:26:11

阅读数:340

评论数:0

关于文件写入的原子性讨论

​   文件的写入是否是原子的?多个线程写入同一个文件是否会写错乱?多个进程写入同一个文件是否会写错乱?想必这些问题多多少少会对我们产生一定的困扰,即使知道结果,很多时候也很难将这其中的原理清晰的表达给提问者,侯捷曾说过,源码面前,了无秘密,那么本文也希望从源代码的角度分析上述问题。在开始之前我们...

2017-08-04 09:19:55

阅读数:592

评论数:2

工作日记

Git git reset --hard 引入的一个问题 git rebase 压缩提交及其基本原理 git fast forward基本原理 git merge tools p4merge基本介绍 git revert merge commit C++C++11 和 C++14 对于sizeof...

2017-07-21 21:32:18

阅读数:292

评论数:0

C++11 chrono入门

​ C++11引入chrono类来表示时间中的一些概念,以及进行时间相关的计算,这是因为传统使用算术的方式来表示时间间隔和时间点本身这是很模凌两可的。通过使用chrono类库,使用不同的类型来表示不同的时间概念,这有助于通过编译器在编译时来帮助程序员发现一些逻辑错误,为此chrono抽象了如下...

2017-06-17 20:54:18

阅读数:500

评论数:0

Effective Modern C++笔记汇总

Effective Modern C++ 目录Item 1: Understand template type deduction….待续

2017-06-05 16:09:58

阅读数:2835

评论数:3

Item42 Consider emplacement instead of insertion

​ 如果你有一个容器,存放的是std::string类型,当你通过插入函数(如:insert、push_front、push_back或者是std::forward_list的insert_after)传递一个std::string类型的元素到容器中,逻辑上容器中就会有这个元素了。尽管这可能只...

2017-06-05 14:27:30

阅读数:695

评论数:0

Item41 Consider pass by value for copyable parameters that are cheap to move and always copied.

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 函数的参数传递方式有很多种,可以是值拷贝、传指针、传引用、甚至是移动。下面这个addName函数就是将外部传入的值存放到其内部的...

2017-05-29 20:37:30

阅读数:555

评论数:0

Item40 Use std::atomic for concurrency, volatile for specific memory

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ volatile关键字在C++中很少被使用,更准确来说是很少被正确使用,它的用途令人很迷惑,甚至这个关键字都不会出现在并...

2017-05-05 22:47:59

阅读数:1088

评论数:0

Item39 Consider void futures for one-shot event communication

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 ​ 有的时候对于一个任务来说,希望有一种机制可以和另外一个任务进行通信,尤其是那种异步运行的任务,并且会出现一种特定事件的任务,另...

2017-04-30 20:31:53

阅读数:914

评论数:0

Item38 Be aware of varying thread handle destructor behavior

这个系列的文章来自于Effective Modern C++的读书笔记,我抽取了其中比较重要的,不容易理解的,平常我们开发过程中也不太在意的一些Item进行分析。 在Item37中解释过一个状态为joinable的std::thread对象其底层对应一个系统线程。std::future对象和std...

2017-04-29 23:45:19

阅读数:677

评论数:0

程序的机器级表示

2017年4月趁着临近毕业时间比较充裕,就买了一本深入理解计算机系统(第三版),这本书的第二版之前浅浅的读过一遍只对里面的编译与链接章节印象深刻,其他章节对我来说完全陌生,我深知这本书的好,于是重新拾起这本书。为了加深自己的记忆就开始写博客记录自己的读书笔记。 第三章 程序的机器级表示 gcc4....

2017-04-29 09:25:40

阅读数:464

评论数:0

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