自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式系统相关论文总结系列(持续更新中)

分布式相关论文总结MapReduce: Simplified Data Processing on Large ClustersThe Google File SystemThe Design of a Practical System for Fault-Tolerant Virtual Machines

2020-06-13 05:22:46 1205

原创 《UNIX环境高级编程》(APUE) 笔记系列

本系列笔记主要是对于 《UNIX环境高级编程》(APUE) 各章节内容 概念性的总结 ,不涉及代码解读 。目录为:第一章 UNIX基础知识第二章 UNIX标准及实现第三章 文件I/O第四章 文件和目录第五章 标准I/O库第六章 系统数据文件和信息第七章 进程环境第八章 进程控制第九章 进程关系第十章 信号第十一章 线程第十二章 线程控制第十三章 守护进程第十四章 高级I/O第十五章 进程间通信第十六章 网络IPC:套接字第十七章 高级进程间通信第十八章 终端I/O第十

2020-05-19 17:21:26 419

原创 Raft 论文研读

Raft 论文研读说明:本文为论文 《 In Search of an Understandable Consensus Algorithm (Extended Version) 》 的个人理解,难免有理解不到位之处,欢迎交流与指正 。论文地址:Raft Paper1. 复制状态机复制状态机 (Replicated state machine) 方法在分布式系统中被用于解决 容错问题 ,这种方法中,一个集群中各服务器有相同状态的副本,并且在一些服务器宕机的情况下也可以正常运行 。如上图所示,每

2020-06-20 10:58:26 662

原创 《The Design of a Practical System for Fault-Tolerant Virtual Machines》论文总结

VM-FT 论文总结说明:本文为论文 《The Design of a Practical System for Fault-Tolerant Virtual Machines》 的个人总结,难免有理解不到位之处,欢迎交流与指正 。论文地址:VM-FT 论文本文的总结包括论文内容以及 MIT6.824 Lec4 中的授课内容,其中包含了论文中没有提及的一些细节 。1. 前言本论文主要介绍了一个用于提供 容错虚拟机 (fault-tolerant virtual machine) 的企业级商业

2020-06-12 09:02:23 592

原创 《The Google File System》论文总结

GFS 论文总结说明:本文为论文 《The Google File System》 的个人总结,难免有理解不到位之处,欢迎交流与指正 。论文地址:GFS Paper阅读此论文的过程中,感觉内容繁多且分散,一个概念的相关内容在不同部分相交地出现 。所以本文尽量将同一概念的相关内容串联并总结在一起 。本文以批注的形式添加个人理解 。1. 前言Google File System (GFS) 是由 Google 设计并实现的、一个面向大规模数据密集型应用的分布式文件系统,它不仅满足所有分布式文件

2020-06-08 05:39:51 687

原创 《MapReduce: Simplified Data Processing on Large Clusters》论文总结

MapReduce 论文解读说明:本文为论文 《MapReduce: Simplified Data Processing on Large Clusters》 的个人理解,难免有理解不到位之处,欢迎交流与指正 。论文地址:MapReduce Paper1. MapReduce 编程模型MapReduce 是 Google 提出的一种用于处理和生成大数据集的 编程模型 ,具象地可以理解成一个 框架 。该框架含有两个由用户来实现的接口:map 和 reduce ,map 函数接收一个键值对,生成一

2020-06-02 06:44:08 1005

原创 《UNIX环境高级编程》(APUE) 笔记第十七章 - 高级进程间通信

Github 地址17 - 高级进程间通信1. UNIX 域套接字UNIX 域套接字 用于在同一台计算机上运行的进程之间的通信 ,它可以在同一计算机系统上运行的两个进程之间传送打开的文件描述符 。UNIX 域套接字 仅仅 复制数据 ,它们并不执行协议处理,不需要添加或删除网络报头,无需计算校验和,不要产生顺序号,无需发送确认报文 。所以比 因特网域套接字 效率更高 。UNIX 域套接字 提供流和数据报两种接口 。UNIX 域数据报服务 是可靠的,既不会丢失报文,也不会传递出错 。UNIX 域套

2020-05-19 09:05:40 394

原创 《UNIX环境高级编程》(APUE) 笔记第十六章 - 网络IPC:套接字

Github 地址16 - 网络IPC:套接字1. 网络 IPC经典进程间通信机制 ( IPC ):管道、FIFO 、消息队列、信号量和共享存储,允许在同一台计算机上运行的进程之间通信 。网络进程间通信 是不同计算机(通过网络连接)上的进程相互通信的机制 。(也可用于计算机内通信)2. 套接字描述符套接字 是通信端点的抽象,应用程序用 套接字描述符 访问套接字 。套接字描述符在 UNIX 系统中被当作是一种文件描述符 。使用 socket 函数 创建 一个套接字:#include <

2020-05-18 12:55:29 385

原创 《UNIX环境高级编程》(APUE) 笔记第十五章 - 进程间通信

15 - 进程间通信1. 进程间通信进程间通信 (IPC) 是进程之间相互通信的技术:前十种 IPC 形式通常限于同一台主机的两个进程之间的 IPC ,最后两行( 套接字和 STREAMS )是仅有的支持不同主机上两个进程之间的 IPC 的两种形式 。2. 管道2.1 管道概念管道 是 UNIX 系统 IPC 的最古老形式 。管道的两种 局限性:有的系统仅提供半双工通道管道只能在具有公共祖先的两个进程之间使用 。通常,一个管道由一个进程创建,在进程调用 fork 之后,这个管道就能在父

2020-05-17 01:33:24 618

原创 《UNIX环境高级编程》(APUE) 笔记第十四章 - 高级I/O

Github 地址14 - 高级I/O1. 非阻塞 IO非阻塞 I/O 使我们可以发出 open 、read 和 write 这样的 I/O 操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即出错返回,表示该操作如继续执行将阻塞 。对于一个给定的描述符,有两种为其指定 非阻塞 I/O 的方法:如果调用 open 获得描述符,则可指定 O_NONBLOCK 标志对于已经打开的一个描述符,则可调用 fcntl ,由该函数打开 O_NONBLOCK 文件状态标志2. 记录锁记录

2020-05-14 21:10:25 406

原创 《UNIX环境高级编程》(APUE) 笔记第十三章 - 守护进程

Github 地址13 - 守护进程1. 守护进程守护进程 (daemoon) 是生存期长的一种进程。常常在系统引导装入时启动,仅在系统关闭时才终止。它们是在后台运行的,没有控制终端。UNIX 有很多守护进程,它们执行 日常事务活动 。2. 守护进程的特征内合进程:父进程 ID 为 000 的各进程通常是内核进程,它们作为系统引导装入的一部分而启动 。内核守护进程:对于需要在进程上下文执行工作但却不被用户层进程上下文调用的每一个内核组件,通常有它的内核守护进程 。init 进程:是一个 系统

2020-05-12 13:14:47 381

原创 《UNIX环境高级编程》(APUE) 笔记第十二章 - 线程控制

Github 地址12 - 线程控制1. 线程限制下图为与 线程操作 有关的一些 限制:]可以通过 sysconf 函数进行查询 。2. 线程属性可使用 pthread_attr_t 结构修改线程默认属性,并把这些属性与创建的线程联系起来。初始化 和 反初始化:#include <pthread.h>int pthread_attr_init(pthread_attr_t *attr);int pthread_attr_destroy(pthead_attr_t *att

2020-05-11 18:31:49 347

原创 《UNIX环境高级编程》(APUE) 笔记第十一章 - 线程

Github 地址11 - 线程1. 线程概念典型的 UNIX进程 可以看成只有一个 控制线程 :一个进程在某一时刻只能做一件事情。有了 多个控制线程 ,就可以把进程设计成在某一时刻能够做不止一件事,每个线程处理各自独立的任务。每个线程都包含有表示执行环境所必需的信息:进程中表示线程的 线程 ID一组寄存器值栈调度优先级和策略信号屏蔽字errno 变量线程私有数据一个进程所有信息对该进程的所有线程都是共享的:可执行程序的代码程序的全局内存和堆内存栈文件描述符线程的

2020-05-09 15:58:09 461

原创 《UNIX环境高级编程》(APUE) 笔记第十章 - 信号

Github 地址10 - 信号1. 信号信号是 软中断 ,信号提供了一种处理异步事件的方法。当造成信号的事件发生时,为进程 产生 一个信号(或向进程 发送 一个信号)。事件 可以是硬件异常(如除以 000)、软件条件(如alarm定时器超时)、终端产生的信号或调用 kill 函数。每个信号都有一个名字,以 333 个字符 SIG 开头,定义在头文件 <signal.h> ...

2020-05-08 13:20:29 625

原创 《UNIX环境高级编程》(APUE) 笔记第九章 - 进程关系

Github地址9 - 进程关系1. 进程组每个进程除了有一个 进程 ID 外,还属于一个 进程组 。进程组是一个或多个进程的 集合 ,通常,它们是在同一作业中结合起来的,同一进程组中的各进程接受来自同一终端的各种信号。每一个进程组有一个唯一的 进程组 ID 。函数 getpgrp 返回调用进程的进程组 ID:#include <unistd.h>pid_t getpgr...

2020-05-07 13:25:53 348

原创 《UNIX环境高级编程》(APUE) 笔记第八章 - 进程控制

Github地址8 - 进程控制1. 进程标识每个进程都有一个非负整型表示的 唯一进程 ID 。进程 ID 是可复用的(延迟复用算法)。ID 为 000 的进程通常是调度进程,常常被称为 交换进程 (swapper) 。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为 系统进程 。ID 为 111 通常是 init 进程,负责在自举内核后启动一个 UNIX 系统。init...

2020-05-06 13:39:09 378

原创 《UNIX环境高级编程》(APUE) 笔记第七章 - 进程环境

Github 地址7 - 进程环境1. main 函数C 程序总是从 main 函数 开始执行:int main(int argc, char *argv[]);argcargcargc 为命令行参数的数目,argvargvargv 是指向参数各个指针所构成的数组。内核使用一个 exec 函数 执行 C 程序,在调用 main 前先调用一个特殊的启动例程。可执行程序文件将此例程指定...

2020-05-05 13:32:02 314

原创 《UNIX环境高级编程》(APUE) 笔记第五章 - 标准I/O库

Github5 - 标准I/O库1. 标准 I/O 库作用缓冲区分配以优化的块长度执行 I/O 等使用户不必担心如何选择使用正确的块长度标准 I/O 最终都要调用第三章中的 I/O 例程 。2. 流和 FIFE 对象当用 标准 I/O 库打开或创建一个文件时,使一个 流 与一个文件相关联。(类比于文件 I/O 和文件描述符)标准 I/O 文件流可用于单字节或多字节(“宽”)...

2020-05-04 14:53:38 344

原创 《UNIX环境高级编程》(APUE) 笔记第四章 - 文件和目录

Github地址4 - 文件和目录1. 函数 stat、fstat、fstatat 和 lstat#inlcude <sys/stat.h>int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int fd, struct stat *buf);int lstat(cons...

2020-05-02 14:38:46 471

原创 《UNIX环境高级编程》(APUE) 笔记第三章 - 文件I/O

Github地址3 - 文件I/O1. 文件描述符对于内核而言,所有打开的文件都通过 文件描述符 (file descriptor) 引用。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,使用 open 或 creat 返回的文件描述符标识该文件,将其作为参数传送给 read 或者 write 。UNIX系统shell把 文件描述符 000 与进程...

2020-04-30 19:01:30 372

原创 《UNIX环境高级编程》(APUE) 笔记第一章 - UNIX基础知识

Github地址 :https://github.com/XutongLi/CPP_LEARN/blob/master/APUE/1-UNIX%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md1 - UNIX基础知识1. 操作系统可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。通常将这种软件称为 内核 (kernel) 。( Linux 是...

2020-04-29 18:45:40 374

原创 《Algorithm》笔记:堆与优先队列

原文地址:http://brianleelxt.top/2018/08/13/heapandPQ/《Algorithm》(Sedgewick)笔记:堆与优先队列堆定义堆的每个结点都大于等于两个子结点,这称为堆有序根结点是堆有序的二叉树中的最大结点一棵大小为 NNN 的完全二叉树的高度为 ⌊lgN⌋+1⌊lgN⌋+1\lfloor lgN\rfloor+1 ...

2018-08-22 17:29:03 187

原创 《Algorithm》笔记:快速排序

原文地址:http://brianleelxt.top/2018/08/10/quickSort/《Algorithm》(Sedgewick)笔记:快速排序原理快速排序是一种分治的排序算法通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变...

2018-08-22 17:26:59 1321 1

原创 《Algorithm》笔记:归并排序

原文地址:http://brianleelxt.top/2018/08/06/mergeSort/《Algorithm》(Sedgewick)笔记:归并排序原理归并将两个有序数组归并成一个单一的有序数组归并排序归并排序是一种递归的算法,采用分而治之的思想,持续地将一个数组分成两半。如果数组为空或只有一个元素,则此子数组被排序好(基本情况)。如果数组里元...

2018-08-22 17:25:29 159

原创 《Algorithm》笔记:希尔排序

原文地址:http://brianleelxt.top/2018/08/05/shellsort/《Algorithm》(Sedgewick)笔记:希尔排序原理改进了插入排序,交换不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序希尔排序的思想是使数组中任意间隔为h的元素都是有序的,这样的数组被称为h有序数组。换句话说,一个h有序数组就是h个互相独立的...

2018-08-22 17:23:04 110

原创 《Algorithm》笔记:冒泡排序

原文地址:http://brianleelxt.top/2018/08/03/Bubble/原理比较相邻的元素,如果第一个比第二个大,交换这两个元素对每一对相邻元素进行同样的工作,从开始第一对到结尾最后一对。这步做完后,最后的元素会是最大的数重复以上步骤,除了已选出的元素,直到没有任何一对元素需要比较,则序列有序复杂度时间复杂度O(n2)O(n2)O(n^2...

2018-08-22 17:21:41 116

原创 《Algorithm》笔记:插入排序

原文地址:http://brianleelxt.top/2018/08/02/InsertionSort/《Algorithm》(Sedgewick)笔记:插入排序原理将每一个元素插入到其他已经有序的元素中的适当位置为了给要插入的元素腾出空间,需要将其余所有元素在插入之前都向右移动一位复杂度时间复杂度O(n2)O(n2)O(n^2)空间复杂...

2018-08-22 17:19:56 111

原创 《Algorithm》笔记:选择排序

原文地址:http://brianleelxt.top/2018/08/01/selectionSort/《Algorithm》(Sedgewick)笔记:选择排序原理找到数组中最小的那个元素将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)在剩下的元素中找到最小的元素,将它与第二个元素交换位置直到将整个数组排序复杂度时间复...

2018-08-22 17:18:22 100

原创 《Algorithm》笔记:背包

原文地址:http://brianleelxt.top/2018/07/27/Bag/《Algorithm》(Sedgewick)笔记:背包目的帮助用例收集元素并迭代遍历所有收集到的元素。用例也可以检查背包是否为空或者获取背包中元素的数量。特点迭代的顺序不确定且与用例无关不支持从中删除元素APIpublic class Bag&lt;Item&gt; ...

2018-08-22 17:16:42 105

原创 《Algorithm》笔记:队列

原文地址:http://brianleelxt.top/2018/07/26/Queue/《Algorithm》(Sedgewick)笔记:队列目的用集合保存元素的同时保存它们的相对顺序:使它们入列顺序和出列顺序相同特点基于先进先出(FIFO)策略APIpublic class Queue&lt;Item&gt; implements Iterable&...

2018-08-22 17:15:13 128

原创 《Algorithm》笔记:栈

原文地址:http://brianleelxt.top/2018/07/25/Stack/《Algorithm》(Sedgewick)笔记:栈特点基于后进先出(LIFO)策略APIpublic class Stack&lt;Item&gt; implements Iterable&lt;Item&gt; Stack() 创建一个空栈 v...

2018-08-22 17:13:31 130

原创 牛顿迭代法求平方根

原文地址 http://brianleelxt.top/2018/07/21/newton_sqrt/Sedgewick的《Algorithm》第一章有一段使用牛顿迭代法计算平方根的代码,开始没理解代码的意思,上网查阅资料后搞清楚了原理,并整理了自己的思路。思路要求 ccc 的平方根 xxx ,首先设函数 y=x2−cy=x2−cy=x^2-c ,当 y=0y=0y=0 时,xx...

2018-07-22 10:52:53 925

原创 matplotlib中文显示乱码解决方法

原文章地址 http://brianleelxt.top/2018/07/12/plt_font/在学习《机器学习实战》这本书的决策树一章时,要用matplotlib画出决策树,然而在显示中文时出现了乱码import matplotlib.pyplot as plt#定义文本框和箭头格式decisionNode = dict(boxstyle = "sawtooth", fc ...

2018-07-15 16:37:43 299

原创 问题: No module named _gexf 解决方法

原文章地址 http://brianleelxt.top/2018/04/23/gexf/最近在参与一个社交网络数据可视化的项目,要在后端将社交网络信息组建成网络传至前端以使其可视化。前端使用Echart显示网络,后端要通过Python的Gexf库组建网络。Gexf库安装过程为:pip install pygexf但是安装之后,在工程中导入库from gexf imp...

2018-07-15 16:35:34 1977

空空如也

空空如也

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

TA关注的人

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