- 博客(388)
- 收藏
- 关注
原创 Linux内核编译及系统裁剪
核心:/boot/vmlinuz-version内核模块(ko):/lib/modules/version/内核设计: 单内核 模块化设计 微内核装载模块: insmod modprobewww.kernel.org用户空间访问,监控内核的方式:/proc,/sys伪文件系统/proc/sys:此目录中的文件很多是可读写的/sys/...
2018-03-27 16:19:24 10999 1
原创 ssl协议,openssl及私有CA
PKI:Public KeyInfrastructure CA:Certificate Authority证书格式:x509,pkcs12x509:公钥及有效期限证书的合法拥有者证书该如何被使用CA的信息CA签名的校验码PKI:TLS/SSL:x509PKI:OpenGPG:pki的另一种实现对称加密: DES:DataEncrption Standard, 56bit 3DES:三次加密...
2018-03-27 14:26:02 432
原创 linux系统启动流程
PC:OS(Linux)POST-->BIOS(BootSequence)-->MBR(bootloader,446)-->Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab)内核设计风格:RedHat,SUSE核心::动态加载内核模块内核:/lib/modules/内核版本号命名的目录/vmlinuz-2.6.32/l...
2018-03-27 13:50:11 318
原创 Linux进程管理
进程及作业管理Uninterruptible sleep: 不可中断的睡眠Interruptible sleep:可中断睡眠COW: Copy On Write, 写时复制100-139:用户可控制0-99:内核调整的O: O(1) O(n) O(logn) O(n^2) O(2^n)init: 进程号为1优先级越高: 1.获得更多的cpu运行时间 2.更优先获得...
2018-03-27 13:24:15 474
原创 Linux软件管理
软件包管理应用程序:程序:Architercturec语言:源代码-->(编译)二进制格式脚本:解释器(二进制程序)源代码-->编译-->链接-->运行程序: 库:程序开发依赖库 静态 动态 静态链接 动态链接:利用共享库程序:指令+数据text 代码段Data+bss 初始化为0的变量heap 堆stack 栈配置文件...
2018-03-27 09:49:12 412
原创 Linux网络配置
网络及网络配置00000001 . 0000 00011111 1111 .0000 00000000 0001 .0000 00100000 0001 .0000 00001.01.1 --> 2.11.0 1.1 --> 1.21.0 1.0IPv4点分十进制:0000 0000 -1111 11110-255 221.34.23.12网络地址:主机地址: 32位二进制 A类: ...
2018-03-27 09:33:42 319
原创 LVM
MD /dev/md# meta deviceDM:Device Mapper 逻辑设备 RAID,LVM2vgcreate VG_NAME /PATH/TO/pv -s#:pe大小10G,VGfdisk /dev/sdan+7Gn+3Gn+5Gt10L8et118et128ewpartprobe /dev/sdacat /proc/partitionspvcreate /dev/sda...
2018-03-27 09:14:32 272
原创 Raid及radma命令
IDE:133MbpsSATA:300Mbps,600Mbps,6GbpsUSB3.0:480MbpsSCSI:Small Computer System Interface 10000,15000 RAID: 级别:仅代表磁盘组织方式不同,没有上下之分;0: 条带 性能提升: 读,写 冗余能力(容错能力): 无 空间利用率...
2018-03-27 09:09:38 958
原创 Linux压缩及归档
压缩,解压缩命令压缩格式:gz,bz2,xz,zip,z压缩算法:算法不同,压缩比也会不同compress:FILENAME.zuncompressxz,bz2,gzgzip:.gz gzip /PATH/TO/SOMEFILE:压缩完后会删除源文件 -d:解压缩 -#:1-9 指定压缩比,默认是6gunzip: gunzip /PATH/TO/SOMEFILE.g...
2018-03-27 08:59:32 339
原创 磁盘及文件系统管理详解
磁盘管理:机械式硬盘: U盘,光盘,软盘,硬件,磁带 低级格式化partition 分区创建文件系统MBR:主引导记录(0盘面0磁道0扇区512byte,属于磁盘的,独立于操作系统之外) Master Boot Record Main Boot Record 446byte:BootLoader,程序,引导加载器 64bytes: 16:表示一个...
2018-03-27 00:06:47 1424
原创 特殊权限SUID,facl,Linux终端
特殊权限passwd:sSUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者; chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限,则SUID显示为s;否则显示S;SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组; chmod g+s FILE chmod g...
2018-03-26 23:16:09 171
原创 find命令
grep,egrep,fgrep:文本查找文件查找:locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的# updatedb,手动生成文件数据库速度快find: 实时 精确 支持众多查找标准 遍历指定目录中的所有文件完成查找,速度慢find 查找路径 查找标准 查找到以后的处理运作查找目录:默认为当前目录查找标准:默认为指定路径下的所有文件处理运作:默认为...
2018-03-26 22:55:00 651
原创 VIM编辑器
vim编辑器文本编辑器,字处理器ASCIIvi:Visual Interfacevim:VI iMproved全屏编辑器 模式化编辑器vim模式编辑模式(命令模式)输入模式末行模式模式转换: 编辑->输入: i:在当前光标所在字符的前面,转为输入模式 a:在当前光标所在字符的后面,转为输入模式 o:在当前光标所在行的下方,新建一行,并转为输入模式 I:在当前...
2018-03-26 22:35:58 161
原创 Sed命令用法
sed:Stream EDitor 行编辑器(全屏编辑器:vi)sed:模式空间默认不编辑源文件,仅对模式空间中的数据做处理而后,处理结束后,将模式空间打印至屏幕sed [options] 'Address Command' file .... -n:静默模式,不显示模式空间内容 -i:直接修改源文件 -e script -e script:可以同时执行多个脚本 -...
2018-03-26 21:11:57 2747 1
原创 Shell编程
编译器,解释器编程语言:机器语言,汇编语言,高级语言静态语言:编译型语言 强类型(变量) 事先转换成可执行格式 C,C++,JAVA,C#动态语言:解释型语言 on the fly 弱类型 边解释边执行 PHP,SHELL,Python,perl面向过程:shell,c面向对象:JAVA,python,perl,c++变量:内存空间,命名...
2018-03-26 20:39:10 800
原创 grep及正则表达式
grep, egrep, fgrep grep: 根据模式搜索文本,并将符合模式的文本行显示出来。Pattern: 文本字符和正则表达式的元字符组合而成匹配条件grep [options] PATTERN [FILE...] -i --color -v: 显示没有被模式匹配到的行 -o:只显示被模式匹配到的字符串*: 任意长度的任意字符?: 任意单个字符[]:[^]:...
2018-03-26 16:42:44 367
原创 Linux操作系统基础及常用命令
计算机体系结构: 运算器,控制器,存储器,内存,编址,输出设备,输入设备POST:BIOS 自举程序:指令+数据RAM,ROM硬件架构:ARM,x86,x64 安腾,alpha,UltraSparc,Power,M68000,M68K,PowerPCOS:Windows,Linux,Unix(HP-UX,Solaris,AIX,SCO UNIX,Unixware),OS/2内核功能:进程管理...
2018-03-26 15:28:14 2573
原创 chapter12 事件
Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件:文件事件(file event):Redis服务器通过套接字与客户端(或者其他Redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。时间事件(time event):Redis服务器中的一些操作(比如serverCron函数)需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。12.1 文件事件 Re...
2018-03-26 00:33:06 282
原创 chapter11 AOF持久化
除了RDB持久化功能之外,Redis还提供了AOF(Append Only File)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的,如图11-1所示。 举个例子,如果我们对空白数据库执行以下命令,那么数据库中将包含三个键值对:redis>set msg "hello"OKred...
2018-03-25 18:34:44 196
原创 chapter10 RDB持久化
Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 举个例子,图10-1展示了一个包含三个非空数据库的Redis服务器,这三个数据库以及数据库中的键值对就是该服务器的数据库状态。 因为Redis是内存数据库,它将自己的数据库状态储存在内存里面...
2018-03-25 12:05:15 217
原创 chapter9 数据库
9.1 服务器中的数据库 Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中,db数组的每个项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库:struct redisServer { // ... // 一个数组,保存着服务器中的所有数据库 redisDb *db; // ...}; ...
2018-03-25 00:38:33 308
原创 chapter8 对象
Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,使用对象的一个好处是,我们可以针对不同的使用场景,为对象设置多种不同的数据结构实现,从而优化对象在不同场景下的使用效率。 除此之外,Redis的对象还实现了基于引用计数技术的内存回收机制,当程序不再使用某个...
2018-03-22 18:45:48 194
原创 chapter7 压缩列表
压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表键,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。 另外,当一个哈希键只包含少量键值对,并且每个键值对的键和值要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做哈希键的底层实现。7.1 压缩列表的构成 ...
2018-03-22 15:57:42 175
原创 chapter6 整数集合
6.1 整数集合的实现 整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t,int32_t或者int64_t的整数值,并且保证集合中不会出现重复元素。 每个intset.h/intset结构表示一个整数集合:typedef struct intset{ // 编码方式 uint32_t encoding; // 集合包含的元...
2018-03-22 12:22:26 179
原创 chapter5 跳跃表
跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN),最坏O(N)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。 在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来的更为简单,所以有不少程序都使用跳跃表来代替平衡树。 Redis使用跳跃表...
2018-03-21 23:56:39 253
原创 chapter4 字典
字典,又称为符号表(symbol table),关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。 在字典中,一个键(key)可以和一个值(value)进行关联(或者说将键映射为值),这些关联的键和值就称为键值对。 字典在Redis中的应用相当广泛,比如Redis的数据库就是使用字典作为底层实现的...
2018-03-21 22:40:00 171
原创 chapter3 链表
作为一种常用的数据结构,链表内置在很多高级的编程语言里面,因为Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。 链表在Redis中的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表作为列表键的底层实现。 举个例子,以下展示的integers列表...
2018-03-21 19:48:59 156
原创 chapter2 简单动态字符串
http://blog.csdn.net/andrewlee_/article/details/70036755 Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)类型,并将SDS作为Redis的默认字符串表示。 在Redis里面,C字符串只会作为字符串字面...
2018-03-21 01:53:25 237
原创 chapter6 特殊的索引和集合
6.1固定集合 MongoDB中的"普通"集合是动态创建的,而且可以自动增长以容纳更多的数据。MongoDB中还有另一种不同类型的集合,叫做固定集合,固定集合需要事先创建好,而且它的大小是固定的。 固定集合的访问模式与MongoDB中的大部分集合不同:数据被顺序写入磁盘上的固定空间。因此它们在蝶式磁盘(spinning disk)上的写入速度非常快,尤其是集合拥有专用磁盘时(这样就不会...
2018-03-20 16:49:10 190
原创 chapter5 索引
5.1 索引简介 数据库索引与书籍的索引类似。有了索引就不需要翻整本书,数据库可以直接在索引中查找,在索引中找到条目以后,就可以直接跳到目标文档的位置,这能使查询速度提高几个数量级。不使用索引的查询称为全表扫描。> for(i=0;i<200;i++){... db.users.insert(... {... "i":i,... "us...
2018-03-20 12:31:03 374
原创 chapter4 查询
4.1 find简介 MongoDB中使用find来进行查询。查询就是返回一个集合中文档的子集,子集的范围从0个文档到整个集合。find的第一个参数决定了要返回那些文档,这个参数是一个文档,用于指定查询条件。>db.c.find() 将批量返回集合c中的所有文档。 想要查找"age"值为27的所有文档,直接将这样的键/值对写进查询文档就好了:>db.users.fin...
2018-03-19 22:19:11 191
原创 chapter3 创建、更新和删除文档
3.1 插入并保存文档> db.foo.insert({"bar",:"baz"})这个操作会给文档自动增加一个"_id"键(要是原来没有的话),然后将其保存到MongoDB中。3.1.1 批量插入> db.foo.insert([{"_id":0},{"_id":1},{"_id":2}])BulkWriteResult({ "wr
2018-03-19 18:34:33 782
原创 chapter2 MongoDB基础知识
文档是MongoDB中数据的基本单元,非常类似于关系型数据管理系统的行,但更具表现力类似地,集合(collection)可以看做是一个拥有动态模式(dynamic schema)的表MongoDB的一个实例可以拥有多个相互独立的数据库(database),每一个数据库都拥有自己的集合。每一个文档都有一个特殊的键,"_id",这个键在文档所属的集合中是唯一的。MongoDB自带了一个简单但功能强大的...
2018-03-18 23:40:24 340
原创 chapter1 MongoDB简介
1.1 易于使用 MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库。不采用关系模型主要是为了获得更好的扩展性。当然,还有其他一些好处。 与关系型数据库相比,面向文档的数据库不再有"行"(row)的概念,取而代之的是更为灵活的"文档"(document)模型。通过在文档中嵌入文档和数组,面向文档的方法能够仅使用一条记录来表现复杂的层次关系,这...
2018-03-18 21:36:14 191
原创 awk入门及进阶
awk:报告生成器 格式化以后,显示AWK a.k.a. Aho,Kernighan and Weinbergernew awk:nawkgawk# awk [options] 'script' file1,file2,...# awk [options] 'PATTERN { action }' file1,file2,... print, printf[root@localhos...
2018-03-14 14:02:36 357
原创 Ansible企业应用实战
9.1 为新系统添加安全认证SSHKey 其实,Ansible自身也支持密码认证,只是Ansible基于SSHKey认证的机制容易让人忽略其密码认证的功能,加之官网对该功能的引导确实不到位,所以该功能并不"出名",但稍经深挖还是能找到的。9.1.1 Ansible密码认证 因为密码在Inventory是明文配置的,考虑到安全性等其他原因,该方案只建议在首次添加SSHKey认
2018-02-07 01:07:45 688
原创 Ansible插件扩展
8.1 Ansible插件使用场景1)除Paramiko、本机SSH、Local、Winrm连接方式外,希望Ansible基于新的通信方式与远程主机交互;2)除Ansible内置的with_items、with_fileglob循环体外,希望有新的遍历方式;3)除了Ansible内置的host_vars、group_vars等变量调用方式外,希望有新的变量定义方式;4)除了Ansi
2018-02-06 18:12:43 5054
原创 Inventory文件扩展
7.1 Inventory文件实战 实际生产环境中,根据业务量的规模差异,Inventory文件中的主机数量会从几十台到上百台不等。通常这些主机会按照其所服务的应用类型进行分组,比如database、webserver和caching组等。 下面我们来看一个现实生产中的案例。该案例中,我们使用Check.in服务来对服务器的uptime进行监控,其Inventory文件内容如下
2018-02-04 22:55:00 1049
原创 CentOS6.9下用yum安装nginx
第一步,在/etc/yum.repos.d/目录下创建一个源配置文件nginx.repo:cd /etc/yum.repos.d/vim nginx.repo填写如下内容:[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/6/$basearch/gpgcheck=0enabled=1
2018-02-04 15:41:49 4117
原创 虚拟化技术基础原理详解
Disk: IO Scheduler(IO调度器): CFQ deadline anticipatory NOOP /sys/block//queue/schedulerlinux调度器:https://www.cnblogs.com/cobbliu/p/5389556.htmlMemory: MMU TLBMMU和T
2018-01-18 11:59:58 10607
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人