APUE笔记之16-17章-网络IPC套接字_UNIX域套接字

第16章 网络IPC: 套接字 套接字描述符 正如使用文件描述符访问文件,应用程序用套接字描述符访问套接字。套接字描述符在UNIX系统中被当作是一种文件描述符。事实上,许多处理文件描述符的函数(如read和write)可以用于处理套接字描述符号。 socket函数:创建一个套接字 #...

2019-03-09 21:41:47

阅读数 22

评论数 0

APUE笔记之15章_进程间通信

第15章 进程间通信 进程间通信主要有: 管道(pipe) 有名管道(FIFO) XSI之消息队列 XSI之信号量 XSI之共享存储 POSIX信号量 Socket(16章) UNIX域SOCKET(17章) 1. 管道 管道有2种局限性: 历史上,它们是半双工的 只能...

2019-03-09 12:31:57

阅读数 19

评论数 0

APUE笔记之14章_高级I/O

第14章 高级I/O 非阻塞I/O 10.5节曾将系统调用分成2类:“低速”系统调用 和 其他。 低速系统调用是指可能使进程永远阻塞的一类系统调用,如: 读管道、终端设备、网络设备的数据并不存在,读操作可能使调用者永远阻塞; 如果数据不能被相同的文件类型立即接受(如管道中无空间、网络流控...

2019-03-09 00:11:20

阅读数 14

评论数 0

APUE笔记之11-12章_线程_线程控制

第11章 线程 即使在单处理器上,某些线程阻塞的时候,其他线程还是可以运行的,因此多线程仍然可以改善响应时间和吞吐量。 线程私有的: 线程ID 一组寄存器值 调度优先级和策略 error变量(见1.7节) 线程私有数据(key,见12.6节) 进程内所有线程共享的: 代码段 ...

2019-03-07 23:14:07

阅读数 14

评论数 0

APUE笔记之10章_信号

第10章 信号 介绍 信号是软件中断。信号提供异步事件处理方法。 早期的信号模型 不可靠,信号可能丢失。POSIX.1对可靠信号例程进行了标准化。 调用kill(2)函数可将任意信号发送给另一个进程或进程组,但有限制: 信号的发送进程和接收进程的所有者必须相同,或者, 发送信号进程的所...

2019-03-06 10:00:28

阅读数 39

评论数 0

APUE笔记之7-9章:进程环境、进程控制、进程关系

第7章 进程环境 进程终止 有8种方式使得进程终止,其中5种为正常终止,3种为异常终止 正常终止的方式: 从main返回0 调用exit 调用 _exit 或 _Exit 最后一个线程从其启动例程返回 最后一个线程调用 pthread_exit 异常终止的方式: 调用 abort...

2019-03-05 00:23:47

阅读数 21

评论数 0

APUE笔记之1-5章:UNIX基础、标准、文件I/O、文件与目录、标准I/O库

第1章 UNIX基础知识 Unix体系结构 不带缓冲的I/O: 函数 open、read、write、lseek、close 提供了不带缓冲的I/O. 这些函数都使用文件描述符。 头文件 <unistd.h> 以及2个常量 STDIN...

2019-03-04 23:17:01

阅读数 19

评论数 0

用C++11的多线程读文件

曾经写了一篇博客做一些大数据的处理,但是其中在读取一个大文件的时候,并没有采取并行处理的方式。那么,一个大文件,为了能够批量处理,现在由多个线程来同时读它,各自读取一块(所读内容互不相同)。这么做会有问题吗? 答:如果只有读线程,那么没有问题。因为,不同的线程可以创建自己的文件描述符表项,再分别指...

2019-03-03 23:27:54

阅读数 17

评论数 0

《深入理解C++11》笔记

整理一下以前的笔记,聊作这个月的Blog吧。 第1章 新标准的诞生 & 第2章 保证稳定性和兼容性 C++11有约140个新特性,修正了C++03的约600个错误。 C++11的新关键字:alignas、alignof、decltype、auto(重新定义)、st...

2019-02-27 23:53:54

阅读数 133

评论数 0

删除STL容器的元素

很久以前看《Effective STL》看到的。因为有点杂,值得整理一下。 1. 删除特定值的元素 1.1 序列容器 如vector,deque,string,其删除特定值的元素的方法是使用 erase-remove 用法。 // 对于vector,deque,string,使用 eras...

2019-01-06 17:28:45

阅读数 38

评论数 0

gdb的一些常用用法

gdb笔记 gdb的命令非常多,以下是在整理网上的几篇文章并结合自己的实践的基础上,罗列一些常用的用法,包括了多线程和多进程的调试。 Linux命令行运行 gdb -q 进入gdb,不打印版本信息 gdb 直接装载程序,但没有运行 gdb &am...

2019-01-05 18:14:24

阅读数 58

评论数 0

Linux块设备I/O栈浅析

看了网上若干关于Linux I/O栈的文章,觉得这篇还可以。故转载之。另外,在本文结尾,再配上比较新的(kernel 4.10)的Linux I/O栈的架构图等。 原文:http://www.sysnote.org/2015/08/06/linux-io-stack/   块存储,简单来说就...

2019-01-01 17:24:41

阅读数 48

评论数 0

Linux文件系统概览

一、历史与ext4文件系统 MINIX文件系统 MINIX系统的文件系统 1987年发布(印刷版),教学目的 最多能处理 14 个字符的文件名,并且只能处理 64MB 的存储空间 ext文件系统 1992年发布 ...

2019-01-01 15:00:19

阅读数 102

评论数 0

CRUSH算法介绍

CRUSH数据分布算法的全称是:Controlled, Scalable, Decentralized Placement of Replicated Data.  开源的分布式存储Ceph采用CRUSH数据分布算法以达到以下几个要求: 1. 数据分布均衡 2. 负载均衡 3. 灵活应对集群扩...

2018-12-24 23:27:21

阅读数 92

评论数 0

最简单的动态规划题,木有之一

动态规划英文名为dynamic programming,其中pogramming指的是表格法,而非编写计算机程序。 基本原理 动态规划将问题分成若干个相互重叠的子问题,递归的求解子问题,保存子问题的解,再将它们的解组合起来,求出原问题的解。实际操作中,记录下子问题的结果,存储在一个表格中,使得公共...

2018-12-22 20:29:02

阅读数 85

评论数 0

二阶段提交与三阶段提交

前面几篇博客中提到了CAP原理,以及CAP的几种组合,比如符合AP的有Gossip协议;符合CP的有Paxos协议;符合CA的有二阶段提交(2PC). 这篇文章就来介绍下二阶段提交和有所改进的三阶段提交。 二阶段提交(2PC) 为了使分布式系统架构下所有节点在进行事务提交时保持一致性而设计的一种算...

2018-12-21 18:37:59

阅读数 40

评论数 0

Raft协议细解

转载一篇博客:https://www.cnblogs.com/foxmailed/p/3418143.html 这篇博客写得比一般的Raft介绍更详细,而比原论文更浅显一些。   分布式存储系统通常通过维护多个副本来进行fault-tolerance,提高系统的availability,带来...

2018-12-19 23:39:13

阅读数 32

评论数 0

Gossip算法简介

转载自老码农的https://blog.csdn.net/chen77716/article/details/6275762   Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易。为了寻求Gossip的本质,下面的内容主要参考Gos...

2018-12-19 23:01:34

阅读数 33

评论数 0

CAP理论浅析

CAP理论是分布式的基础理论。关于它的介绍在网上有很多,但其中往往有一些不够清晰或错漏之处,笔者在翻阅了多家文献之后,尝试整理出一份比较简洁清晰的介绍。 1. CAP理论的历史 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理...

2018-12-18 00:49:32

阅读数 34

评论数 0

用程序实现在大文件中出现次数为Top N的数字

有一个问题:有一个很大的文件(如20GB),内存装不下,其中存了很多个数字(也可能是URL之类的),找出出现次数最多的3个数字。 解题思路有这么3个点: 1. Top N的问题自然是用最小堆来解。不过如果只是找Top 3而已,也不用构造堆那么麻烦,直接几行比较代码应该就可以了。 2. 文件很大...

2018-12-15 00:13:10

阅读数 68

评论数 0

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