自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (1)
  • 收藏
  • 关注

转载 55.Linux/Unix 系统编程手册(下) -- 文件加锁

1.概述 1.flock() 给整个文件加锁 2.fcntl() 给一个文件区域加锁2.flock() 常规方法: 1.给文件加锁 2.执行文件IO 3.解锁文件使得其他进程能够给文件加锁 混合使用加锁和 stdio 函数: 由于 stdio 库会在用户空间进行缓冲,因此在使用 stdio 函数与本章的加锁技术时要格外小心。这里的问题是一个输入缓冲器在被加锁之前...

2018-10-29 00:13:18 247

转载 54.Linux/Unix 系统编程手册(下) -- POSIX 共享内存

1.概述 前面介绍了2种允许无关进程共享内存区域以便执行 IPC 的技术:System V 共享内存和共享文件映射。这2种技术都有一些不足: 1.System V 共享内存模型使用的是键和标识符,这与标准的 Unix IO 模型使用文件名和描述符的做法不一致。这种差异意味着, 使用 System V 共享内存段需要一整套全新的系统调用和命令 2.使用一个共享文件映射来进行 IPC 要...

2018-10-28 17:03:17 167

转载 53.Linux/Unix 系统编程手册(下) -- POSIX 信号量

1.概述 Posix 两种信号量: 1.命名信号量 这种信号量拥有一个名字。能够通过使用相同的名字调用 sem_open(), 不相关的进程能够访问同一信号量。 2.未命名信号量 这种信号量没有名字,相反,它位于内存中的一个预先商定好的位置。未命名的信号量可以在进程之间或一组线程之间共享。 未命名信号(也被称为基于内存的信号量)是类型为 sem_t 并储存在应用程序分配...

2018-10-28 16:33:04 185

转载 52.Linux/Unix 系统编程手册(下) -- POSIX 消息队列

1.概述 fork() 子进程会接收其父进程的消息队列描述符的副本,并且这些描述符会引用同样的打开着的消息队列的描述。子进程不会 继承其父进程的任何消息通知注册。 当一个进程执行了 exec() 或终止时,所有其打开的消息队列描述符会被关闭。关闭消息队列描述符的结果是进程在相应队列上 的消息通知注册会被注销。2.描述符和消息队列之间的关系 消息队列描述符和打开着的消息队列之...

2018-10-28 15:48:08 170

转载 51.Linux/Unix 系统编程手册(下) -- POSIX IPC 介绍

1.介绍             

2018-10-28 14:31:54 162

转载 50.Linux/Unix 系统编程手册(下) -- 虚拟内存操作

1.mprotect() 修改一块虚拟内存区域上的保护信息 如果一个进程在访问一块内存区域时违背了内存保护,内核会发送 SIGSEGV 信号。2.内存锁: mlock() 和 mlockall() 将一块虚拟内存区域锁进物理内存,从而防止它被交换出去。 将一个进程的虚拟内存的部分或全部锁进内存以确保它们总是位于物理内存中是非常有用的。之所以这样做的一个原因是它可以提高性能。 对被...

2018-10-28 14:18:06 135

转载 49.Linux/Unix 系统编程手册(下) -- 内存映射

1.mmap() mmap()系统调用在调用进程的虚拟地址空间中创建一个新的内存映射。 映射分2种: 1.文件映射: 文件映射将一个文件的一部分直接映射到调用进程的虚拟内存中。 2.匿名映射: 一个匿名映射没有对应的文件。相反,这种映射的分页会被初始化为0. 一个进程的映射中的内存可以与其他进程中的映射共享(即各个子进程的页表条目指向 RAM 中相同的分页)。这种情...

2018-10-28 02:33:56 239

转载 9.logstash

 demo : 收集 nginx 日志                         

2018-10-27 15:37:53 113

转载 8.Beats

1.简介 收集 nginx demo:nginx.yml: 运行命令:tail -f /data/log/nginx/access.log | filebeat -e -c /data/filebeat-6.4.2-linux-x86_64/module/nginx/access/nginx.ymlprospector : ...

2018-10-27 14:23:17 252

转载 7.ES 配置

如何区分环境:以 network.host 是否绑定 localhost 为准                                  ...

2018-10-26 23:47:55 404

转载 5.中小型企业通用自动化运维架构 -- ELK

1.简介 2.安装elasticsearch 安装cnpm installcnpm run starthttp://192.168.0.105:9100/ logstash 安装: kibana 安装:           ...

2018-10-26 00:27:22 1138

转载 4.程序员的自我修养---静态链接

1.空间和地址的分配 可执行文件中的代码段和数据段都是由输入的目标文件中合并而来的。对于多个输入的目标文件,链接器如何将它们的各个段合并到输出文件的? 1.按序叠加 这样做会造成一个问题,在有很多输入文件的情况下,输出文件将会有很多零散的段。这样做非常浪费地址空间,因为每个段都要求有一定的地址 和空间对齐要求,比如对于 x86 的硬件来说,段的装载地址和空间的对齐单位是页,也就是...

2018-10-23 11:12:10 357

转载 3.中小型企业通用自动化运维架构 -- Ansible playbook

实战:---- hosts: test remote_user: root tasks: - name: Hello World shell: ls /root---- hosts: test remote_user: root vars: com: /root tasks: - name:...

2018-10-21 22:40:43 1208

转载 48.Linux/Unix 系统编程手册(下) -- System V 共享内存

1.概述 共享内存允许2个或多个进程共享物理内存的同一块区域(通常被称为段)。由于一个共享内存会称为一个进程用户空间内存的一部分, 因此这种 IPC 机制无需内存介入。 shmget(); shmat(); shmdt(); shmctl(); fork() 创建的子进程会继承其父附加的共享内存段。 exec() 后所有附加的共享内存段都...

2018-10-21 17:26:50 153

转载 47.Linux/Unix 系统编程手册(下) -- System V 信号量

1.概述 semget(); semctl(); semop(); semtimedop();           

2018-10-21 15:25:03 145

转载 46.Linux/Unix 系统编程手册(下) -- System V 消息队列

1.简介 与管道的区别: 1.用来引用消息队列的句柄是一个由 msgget() 调用返回的标识符。区别与UNIX系统上其他形式IO所使用的文件描述符。 2.通过消息队列进行通信是面向消息的,管道是无法进行区分的字节流 3.除了包含数据外,每条消息还有一个整数表示类型。msgget();msgsnd();msgrcv();msgctl();...

2018-10-21 14:05:46 73

转载 45.Linux/Unix 系统编程手册(下) -- System V IPC 介绍

1.System V IPC 介绍 1.消息队列 消息队列是用来进程之间传递消息的,与管道有点像,但存在2个重要的差别。 1.消息队列存在边界 2.每条消息都包括一个整形的type 字段,并且可以通过类型的选择消息而无需以消息被写入的顺序来读取消息 2.信号量 允许多个进程同步它们的动作。一个信号量是一个由内核维护的整数值。 3.共享内存 共享内存是的多个进程能够共...

2018-10-21 02:02:34 178

转载 44.Linux/Unix 系统编程手册(下) -- 管道和 FIFO

1.管道的特点 1.一个管道是一个字节流 当讲到管道是一个字节流时,意味着在使用管道时是不存在消息或者消息边界的概念的。从管道中可以读取任意大小的数据块, 通过管道传递的数据是顺序的,在管道中无法使用 lseek() 来随机访问数据. 2.从管道中读取数据 当试图从一个当前为空的管道中读取数据将会被阻塞直到至少有一个字节被写入到管道中为止。 3.管道是单向的 在管道中...

2018-10-21 01:19:52 232

转载 43.Linux/Unix 系统编程手册(下) -- 进程间通信简介

1.IPC 工具的分类 1.通信 1.数据传输工具 区分这些工具的关键因素是写入和读取的概念。为了进行通信,一个进程将数据写入IPC工具中,另外一个进程从中读取数据。 这些工具要求在用户内存和内核内存之间进行2次数据传输。 一次传输是在写入的时候从用户内存到内核内存,另外一次传输是在读取的时候从内核内存到用户内存。 1.字节流 : 管道,FIFO, 以及...

2018-10-20 20:18:06 167

转载 2.中小型企业通用自动化运维架构 -- Ansible 安装

1.简介2.配置1.编辑 /etc/ansible/hosts vim /etc/ansible/hosts 添加主机: [centos7-5] 192.168.0.1132.将 ansible 主机的 pub key 添加到目标机器3.测试连通性 ansible 192.168.0.113 -m ping --user=root...

2018-10-17 22:17:51 399

转载 13. PHP OPcache

//opcache 配置信息http://php.net/manual/zh/opcache.configuration.php#ini.opcache.enable// uihttps://laravel-china.org/topics/301/using-opcache-to-enhance-the-performance-of-the-php-55-program...

2018-10-17 15:40:37 131

转载 1.中小型企业通用自动化运维架构 -- 自动化运维流程

1.好处 2.架构图 3.自动化运维流程           

2018-10-16 23:55:37 2297

转载 3.程序员的自我修养---目标文件

1.目标文件的格式 现在 PC 平台流行的可执行文件格式主要是: 1.Windows 的 PE(Portable) 2.Linux 的 ELF(Executable Linkable Format) 它们都是 COFF(Common file format) 格式的变种。 ELF文件类型 可重定位文件(Relocatable File) : 这类文件包含了代码和数据,可以被用来链接...

2018-10-16 16:25:20 247

原创 2.mongoDB 命令

1.命令行 mongo 127.0.0.1:27017 // 连接 help // 查看帮助 show dbs //查看数据库 show tables // 查看有哪些表 use local // 切换数据库 local use test 并插入 db.test.insert({x:1}) // 则建立一个 test 数据库 db.表名.insert(json 数据)...

2018-10-14 16:41:47 154

转载 1.mongoDB 简介

1.简介 2.索引 3.地理位置索引 4.索引状态查看 5.mongoDB 安全     

2018-10-14 15:15:24 143

转载 2.第一本 docker 书 --- docker 镜像

1.什么是 Docker 镜像 Docker 镜像是由文件系统叠加而成的。最低端是一个引导文件系统,即 bootfs,这很像典型的Linux的引导文件系统。Docker 用户几乎永远不会 和引导文件系统有什么交互。实际上,当一个容器启动后,它会被移到内存中,而引导文件系统则会被卸载,以流出更多的内存供 initrd 磁盘镜像使用。 Docker 镜像的第二层是 ro...

2018-10-08 00:36:02 240

转载 42.Linux/Unix 系统编程手册(下) -- 共享库高级特性

1.动态加载库 当一个可执行文件开始运行之后,动态链接器会加载程序的动态依赖列表中的所有共享库,但有时候需要延迟加载库是比较有用的。 如只在需要的时候加载一个插件。动态链接器的这项功能是通过一组 API 实现的。这组 API 被称为 dlopen API。 dlopen API 使得程序能够在运行的时候打开一个共享库,根据名字在库中搜索一个函数,然后调用这个函数.在运行的时候才要...

2018-10-07 17:46:02 144

转载 41.Linux/Unix 系统编程手册(下) -- 共享库基础

共享库是一种将库函数打包成一个单元使之能够在运行时被多个进程共享的技术。这种技术能够节省磁盘空间和RAM。1.目标库 链接器实际上是由一个单独的链接器程序ld来完成的。当使用cc(或gcc)命令链接 一个程序时,编译器会在幕后调用ld.在Linux上总是应该通过gcc间接的调用链接器, 因为gcc能够确保使用正确的选项来调用ld并将程序与正确的库文件链接起来。 很多情况下,源...

2018-10-07 17:05:39 239

转载 40.Linux/Unix 系统编程手册(下) -- 登录记账

1.utmp 和 wtmp 文件概述 UNIX 系统维护这2个包含与用户登录和登出系统有关的信息的数据文件: 1.utmp 文件维护着当前挡路进系统的用户记录(以及其他一些信息),每个用户登录进系统时会向 utmp 文件 写入一条记录。这条记录中包含一个 ut_user 字段,它记录着用户的登录名。当用户登出的时候该条记录会 被删除。像 who(1) 之类的程序会使用...

2018-10-06 19:24:44 204

转载 39.Linux/Unix 系统编程手册(下) -- 能力

Linux 能力模型,它将传统的 all-or-nothing UNIX 权限模型划分成一个个能单独启用或者禁用的能力。使用能力允许程序在执行一些特权操作的同时防止它们执行其他未经允许的操作.1.能力基本原理 Linux 能力模型优化了对这个问题的处理方式,即在内核中执行安全性检测时不再使用单个权限(即有效用户ID为0), 超级用户权限被划分为了不同的单元,这个单元称为能力。每个特...

2018-10-06 17:35:25 208

转载 38.Linux/Unix 系统编程手册(下) -- 编写安全的特权程序

一个程序可以通过以下2种方式以特权方式运行: 1.程序在一个特权用户ID下启动,很多 daemon 以 root 身份运行。 2.程序设置了set-user-ID 或 set-group-ID 权限位。当一个设置了 set-uesr-ID程序被 执行后,它会将进程的有效用户ID修改为程序文件的所有者一样的ID。1.是否需要一个 set-user-ID 或 set-group-ID程...

2018-10-05 23:35:10 202

转载 37.Linux/Unix 系统编程手册(下) -- DAEMON

1.daemon特征 1.它的生命周期很长,通常,一个daemon会在系统启动的时候被创建并一直运行直至系统被关闭 2.它在后台运行并且不拥有控制终端。控制终端的缺失,确保了内核永远不会为daemon自动生成 任何控制信号以及终端相关的信号(SIGINT,SIGTSTP和SIGHUP)2.创建一个daemon 要变成一个daemon,一个程序需要完成如下步骤: 1.执行一个...

2018-10-05 17:57:39 162

转载 36.Linux/Unix 系统编程手册(下) -- 进程资源

1.进程资源使用 getrusage(); // 返回调用进程或其子进程用掉的各类系统资源的统计信息2.进程资源的限制 getrlimit(); setrlimit(); 一种资源的2个相关限制:软限制和硬限制。软限制规定了进程能够消耗的资源数量。一个进程可以将软限制 调整为从0到硬限制之间的值。对于绝大多数资源来说,硬限制的唯一作用是位软限制设置了上限。特权进程能够 增大...

2018-10-05 16:07:25 134

转载 35.Linux/Unix 系统编程手册(下) -- 进程的优先级和调度

1.进程优先级 Linux 和 其他 Unix 实现一样,调度进度使用 cpu 的默认模型是循环时间共享。 在这种模型中,每个进程轮流使用 cpu 一段时间,这段时间被称为时间片和量子。循环时间 共享满足了交互式多任务系统的两个重要需求: 1.公平性:每个进程都有机会用到cpu 2.响应度:一个进程在使用 cpu 之前无需等待太多时间 在循环时间共享算法中,进程无法...

2018-10-05 01:07:06 525

转载 34.Linux/Unix 系统编程手册(下) -- 进程组,会话和作业控制

1.进程组 进程组是一个或者多个共享同一进程组标识符(PGID)的进程组成。进程组ID是一个数字, 其类型和进程ID(pid_t)一样。一个进程组拥有一个进程组首进程,该进程是创建进程组的进程, 其进程ID为该进程组的ID,新进程会继承其父进程所属的进程组ID. 进程组拥有一个生命周期,其开始时间为首进程创建时间,结束时间为最后一个成员进程退出时间。 一个进程可能因为终止...

2018-10-03 17:08:04 233

转载 33.Linux/Unix 系统编程手册(上) -- 线程:更多细节

1.线程栈 创建线程时,每个线程都有属于自己的线程栈,且大小固定。在Linux/x86-32架构上, 除主线程外的所有线程,其栈大小均为2MB(64位下可能是 32MB),为了应对栈的增长,主线程的栈可能大一些。 在x86-32系统中,用户可访问的虚拟地址空间是3G,而2MB的缺省栈大小意味着最多可以创建1500个线程。2.线程与信号 pthread_sigmask(); ...

2018-10-03 01:22:08 148

转载 32.Linux/Unix 系统编程手册(上) -- 线程:线程取消

1.线程取消 有时候需要取消一个线程,即向一个线程发送一个请求,要求其退出。 pthread_cancel(); pthread_setcancelstate(); pthread_setcanceltype();2.取消点 若将线程的取消性状态和类型分别置为启用和延迟,仅当线程抵达某个取消点时,取消请求才会起作用。 取消点即使对由实现定义的一组函数之一加以调用。 ...

2018-10-03 00:19:50 142

转载 31.Linux/Unix 系统编程手册(上) -- 线程:线程安全和每线程存储

1.线程安全 若函数可同时提供多个线程安全使用,则称之为线程安全函数. 不安全的原因:使用了在所有线程之间共享的全局或静态变量。 实现线程安全方法:使用互斥量2.可重入函数和不可重入函数 可重入函数则无需使用互斥量即可实现线程安全。其要诀在于,避免对全局和静态变量的使用。3.一次性初始化 phtread_once() 可以确保无论有多少线程调用,也只会执行一次由 init ...

2018-10-02 23:58:18 112

转载 30.Linux/Unix 系统编程手册(上) -- 线程:线程同步

1.互斥量 互斥量可以帮助线程同步对共享资源的使用。 确保同时只有一个线程可以访问某项共享资源,一旦线程锁定互斥量,随即称为该互斥量的所有者。只有所有者才能给互斥量解锁。 pthread_mutex_lock(); pthread_mutex_unlock(); pthread_mutex_trylock(); pthread_mutex_timedlock(); 如果使用 f...

2018-10-02 23:03:38 145

转载 29.Linux/Unix 系统编程手册(上) -- 线程:介绍

1.线程 线程是允许应用程序并发执行多个任务的一种机制。 一个进程可以包含多少线程,同一程序中的所有线程均会独立执行相同的程序,且共享一份全局内存区域,其中包括 初始化数据段,未初始化数据段以及堆内存段。 若线程未分离,则必须使用 pthread_join() 连接。如果未能连接,那么线程终止时将产生僵尸线程。 pthread_join() 执行的功能类似于针对进程的 wai...

2018-10-02 20:34:55 147

linux下vim使用详解.pdf

不要试图从本手册中去获取什么知识,使用Vim更多的是一种技能而 不是一种知识,Vim的学习需要的更多的不是头脑而是双手,经常按书中 的指示进行示例性的操作,在学习Vim众多精致的技巧时,不要贪图一下 子全都掌握,最好是看一条技巧后,马上在编辑器上进行操作,这样在以 后实际的编辑操作时你的手指就会建立一种自然的反应而不是由头脑来搜 索该使用哪一条操作技巧。建议读者不动手来不读书。如果手边没有一 个合适的Vim编辑器环境可供操练,那么建议读者还是不要在这里浪费时 间。

2014-04-26

空空如也

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

TA关注的人

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