骏马金龙

网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。爱研究、爱翻译、爱分享。特借此一亩三分田记录自己成长点滴!!!
我本问道人,道心不坚,必将与道无缘!

上一页 1 2 3 4 5 6 ··· 15 下一页
摘要:"点我查看秘籍连载" 假象:“并行”运行多个进程 现代操作系统都支持多任务同时执行。在这里,操作系统对我们用户“营造了一种假象”,让CPU看上去是用不完的,能够不断地添加新的程序使它们同时运行。 但每核CPU在某一时刻都只能执行一个进程。使用操作系统的人是不会去关注CPU是单核还是多核的,每个人都希 阅读全文
posted @ 2019-10-08 08:41 骏马金龙 阅读 (516) 评论 (3) 编辑
摘要:"点我查看秘籍连载" 毋庸置疑,操作系统(Operating System,OS)是一个非常大的概念,涉及到的内容非常非常多,在探讨它的时候,往往会将操作系统置于一个比较底层的角度去对待,这也使得多数人对OS是“闻之丧胆”,对OS相关的资料或概念也是望而却步,这也是我曾经亲身经历的过程。 君不见那些 阅读全文
posted @ 2019-09-25 13:41 骏马金龙 阅读 (434) 评论 (5) 编辑
摘要:修改命令提示符颜色 修改命令提示符的话,只需修改PS1环境变量即可。 效果如图: 修改命令输入的颜色 修改命令输入的颜色,思路是不关闭PS1的颜色,然后在每次敲下回车键执行命令的时候自动插入颜色终止符。这需要借助trap捕获DEBUG信号来实现。 如果要写入shell配置文件,建议写到 ,而不要写入 阅读全文
posted @ 2019-09-21 12:45 骏马金龙 阅读 (195) 评论 (0) 编辑
摘要:这是正则表达式从入门学习到深入掌握各种技巧的教程系列,使用了不同语言描述,但对于正则理念来说是完全通用的。最后还差一篇正则性能优化的文章,有机会再补上。 我已经录了正则表达式的两门课程:参见 "视频教程汇总" 1. "基础正则表达式" 2. "Perl正则表达式超详细教程" 3. "递归正则表达式详 阅读全文
posted @ 2019-09-21 10:15 骏马金龙 阅读 (376) 评论 (0) 编辑
摘要:想要管理多种具体的东西,那么需要遵守每种东西的规范。如果想要提供一种通用模式来对这些具体的东西统一管理,需要使用一种古老的技术:抽象。 抽象是将多种具体的东西(管理时需要遵守的规范)的共同点抽取出来,放入到更高一层的抽象层。在抽象层不定义或少量定义具体的规范细则,而是让下层更具体的东西遵守抽象出来的 阅读全文
posted @ 2019-09-21 09:43 骏马金龙 阅读 (234) 评论 (2) 编辑
摘要:一般来说,递归的正则表达式用来匹配任意嵌套层次的结构或左右对称的结构。例如匹配: 递归正则在正则表达式里算是比较灵活的部分,换句话说就是可能会比较难。下面这个正则表达式是在网上流传的非常广泛的递归正则的示例,它用来匹配嵌套任意次数的括号,括号内可以有其它字符,比如可以匹配 、`(abc(bc(def 阅读全文
posted @ 2019-08-13 10:55 骏马金龙 阅读 (542) 评论 (0) 编辑
摘要:单机上的系统总线 1. 总线(bus)是一种 通信系统 ,用于携带各种类型的数据, 在各组件之间传递数据 (可以理解为快递员。按照bus的字面意思理解更好,公共汽车,公共的携带数据的交通工具)。 2. 在大概念上分三种总线:系统总线(前端总线)、内部总线和外部总线。 系统总线:计算机内部主要设备之间 阅读全文
posted @ 2019-07-13 20:49 骏马金龙 阅读 (419) 评论 (0) 编辑
摘要:理解并发、并行的例子 先举例子来理解这2个概念的区别。 老师让两个同学去办公室谈话。如果这两同学(进程)是并列跨过办公室门(CPU)的,那么就是并行。如果同学A先进同学B后进入(或者先B后A),或者两人并列同时进入,但是在办公室外的路人甲(用户)看来,同学A和同学B同时都在办公室内,这是并发。 其实 阅读全文
posted @ 2019-07-10 01:43 骏马金龙 阅读 (3195) 评论 (6) 编辑
摘要:关于CPU和程序的执行 CPU是计算机的大脑。 1. 程序的运行过程,实际上是程序涉及到的、未涉及到的一大堆的指令的执行过程 。 当程序要执行的部分被装载到内存后,CPU要从内存中取出指令,然后指令解码(以便知道类型和操作数,简单的理解为CPU要知道这是什么指令),然后执行该指令。再然后取下一个指令 阅读全文
posted @ 2019-07-06 09:33 骏马金龙 阅读 (5545) 评论 (13) 编辑
摘要:生成指定长度是随机数 bash 8位纯数字的随机数 tr cd '0 9' 阅读全文
posted @ 2019-06-21 09:01 骏马金龙 阅读 (527) 评论 (0) 编辑
摘要:Ruby中可以使用一个星号 和两个星号 完成一些打包、解包操作,它们称为splat操作符: 一个星号:以数组为依据进行打包解包( "参考文章" ) 两个星号:以hash为依据进行打包解包( "参考文章" ) 两个星号的splat场景很少见,如有必要可参考上面列出的参考文章。 当splat操作符后面跟 阅读全文
posted @ 2019-05-27 14:00 骏马金龙 阅读 (88) 评论 (0) 编辑
摘要:String方法整理 "官方手册" 类方法 new 指定创建什么编码的字符串,即new_str是什么编码的。 指定创建字符串对象时预先分配好的buffer大小。如果以后要扩容该字符串,就不需要再临时动态分配内存。对于后续可能需要频繁扩展该字符串的情况,可以提升一些性能。 例如: try_conver 阅读全文
posted @ 2019-05-04 15:02 骏马金龙 阅读 (864) 评论 (0) 编辑
摘要:String字符串 字符串由String类提供,除了直接使用单双引号或其它字面量创建字符串,也可以使用String.new()方法来创建。 Ruby中的 字符串是可变对象 。 字符串的连接 直接连接即可: 单双引号 这和Perl一样,和Shell也类似。单引号是强引用,双引号是弱引用。 双引号的一个 阅读全文
posted @ 2019-05-03 17:47 骏马金龙 阅读 (204) 评论 (0) 编辑
摘要:数值类型 Ruby中所有数值都是Numeric类的子类对象, 数值都是不可变对象 。 数值类型的继承关系如下: Integer是整数,Float是浮点数类型,Rational是分数。 对于整数,要么是Fixnum,要么是Bignum:Fixnum是比较小整数的类型(31个二进制位),Bignum是较 阅读全文
posted @ 2019-05-03 16:45 骏马金龙 阅读 (78) 评论 (0) 编辑
摘要:数值字面量 没什么好说的,唯一需要说明的是分数字面量:数值后加上一个后缀字母 表示分数字面量。 引号 引号和Perl中的引号类似。 例如,单引号不解释变量内插和反斜线序列等,双引号解释变量内插和反斜线序列等,反引号用于执行对应的命令。此外,反引号中可以进行变量内插,也就是说反引号中字符的会按照双引号 阅读全文
posted @ 2019-05-03 16:43 骏马金龙 阅读 (101) 评论 (0) 编辑
摘要:Ruby中设计了很多种比较方式,所有对象都能进行 这几种比较。此外,当实现了 =、 、between?`这几个比较方法。 这些比较方法的定义位置和意义分别如下。 在BasicObject中定义了 : :比较内容是否相同,更多时候是描述两者是否相等,比如 的内容是不同的,但是相等 :和 是相反的 :比 阅读全文
posted @ 2019-05-03 16:42 骏马金龙 阅读 (107) 评论 (0) 编辑
摘要:Ruby是纯正血统的面向对象语言,所有的一切,一切的一切都是对象 Ruby里块(语句块)的特性非常重要,这个优美的特性贯穿整个Ruby Ruby里模块和类的概念一样重要,模块也是Ruby里的一个非常优美的特性 变量命名惯例 局部变量、方法参数、方法的名称都使用小写字母开头 有时候变量、方法以下划线开 阅读全文
posted @ 2019-05-03 16:38 骏马金龙 阅读 (115) 评论 (0) 编辑
摘要:"安装Ruby、多版本Ruby共存、Ruby安装慢问题" "Ruby语言的一些杂项" "Ruby中的常量:引号、%符号和heredoc" "Ruby中的数值" "Ruby字符串(1):String基本用法" "Ruby字符串(2):String方法详细整理" "Ruby数组(1):基本用法" "Ru 阅读全文
posted @ 2019-05-03 16:36 骏马金龙 阅读 (1111) 评论 (0) 编辑
摘要:rbenv rbenv可以管理多个版本的ruby。可以分为3种范围(或者说不同生效作用域)的版本: local版:本地,针对各项目范围 global版:全局,没有shell和local版时使用global版 shell版:当前终端,只针对当前所在终端 查找优先级为 。 1.安装rbenv 2.安装r 阅读全文
posted @ 2019-05-03 16:31 骏马金龙 阅读 (302) 评论 (0) 编辑
摘要:引自我在知乎上的回答: "进程 线程 协程 例程 过程 的区别是什么? 骏马金龙的回答 知乎" 首先解释下程序、进程、上下文切换和线程。然后再解释协程、例程、过程。 程序 程序 :源代码堆起来的东西。相当于一个一动不动没有生命的机器人。 虽然是没有生命的机器人,但是它被设计后就表示有了硬件,它的硬件 阅读全文
posted @ 2019-05-02 17:02 骏马金龙 阅读 (646) 评论 (0) 编辑
摘要:原本是用perl写了一个通过给定的时间范围来筛选一个比较大的日志文件。但是测试发现筛选130W行日志需要2分多钟,对其中几个低效率函数单独进行了效率测试,发现构造100W个时间对象所花时间也是个大户。 于是,特地比较了几种语言构造100W个时间对象(或时间结构)的性能。以下是结论: Perl(Tim 阅读全文
posted @ 2019-04-30 20:57 骏马金龙 阅读 (234) 评论 (0) 编辑
摘要:定义好了一个可以输出带颜色行号以及行数据的函数print_with_line_num,f()是测试函数。在f()函数中,读取文件并输出读取的每一行数据,但根据参数选项决定是普通输出行还是同时输出带颜色行号的行数据。 这可以当作是偏函数、闭包、作用域的一个用法示例。 脚本内容如下: 下面是测试效果: 阅读全文
posted @ 2019-04-29 17:33 骏马金龙 阅读 (90) 评论 (0) 编辑
摘要:Enumerator迭代 Mix in Enumerator获得的迭代方法 : "each_cons" : "each_slice" : "each_with_index" : "with_index" : "each_with_object" : "each_entry" : each_cons( 阅读全文
posted @ 2019-04-15 11:31 骏马金龙 阅读 (119) 评论 (0) 编辑
摘要:数组 Ruby中的数组是一个容器,数组中的每个元素都是 一个对象的引用 。 注意,Array类中包含了Enumerable模块,所以Enumerable中的方法也都能使用,例如Enumerable中的reduce()方法也是非常好用的方法。 创建数组 字面常量创建 ruby 1.使用[xxx]方式创 阅读全文
posted @ 2019-04-15 11:27 骏马金龙 阅读 (173) 评论 (0) 编辑
摘要:数组方法整理 方法列表: "all()、any()、none()和one()" :测试数组中的所有或部分元素是否满足给定条件。条件可以是语句块中决定,也可以是参数决定 "append()" :等价于 "push()" "bsearch()" :二分法查找元素 "bsearch_index()" :二 阅读全文
posted @ 2019-04-15 11:21 骏马金龙 阅读 (852) 评论 (0) 编辑
摘要:在此处只给出find的基本用法示例,都是平时我个人非常常用的搜索功能。如果有不理解的部分,则看后面的 "find运行机制详解" 对于理论的说明,也建议在看完这些基本示例后阅读一遍理论说明,它是本人翻译自find的man文档并加上了个人的理解。另外,在该理论说明结束后,还有find深入用法示例和分析。 阅读全文
posted @ 2019-04-14 13:09 骏马金龙 阅读 (3003) 评论 (3) 编辑
摘要:MariaDB官方手册 翻译:create database语句(已提交到MariaDB官方手册) 翻译:rename table语句(已提交到MariaDB官方手册) 翻译:alter table语句(已提交到MariaDB官方手册) 翻译:标识限定符(已提交到MariaDB官方手册) 翻译:标识 阅读全文
posted @ 2019-04-12 19:00 骏马金龙 阅读 (462) 评论 (0) 编辑
摘要:包括 和`to_str to_i to_int to_a to_ary to_h to_hash to_x to_xxx`。 那么, 和`to_xxx to_x to_xxx`。 解释 使用鸭子模型来解释比较容易点。 只要像鸭子,就能当成鸭子,这就是 。只有它真的是鸭子,才能当成鸭子,这就是 。 以 阅读全文
posted @ 2019-04-12 13:34 骏马金龙 阅读 (996) 评论 (0) 编辑
摘要:1.C中数组和指针的关系 对于任意类型的数组arr,对于同类型的指针类型parr(确切一点,可以假设类型为int,即 )。它们之间有如下"内幕": 1. 数组的名称arr本身就是一个指针,这个指针指向数组的第一个元素 2.因为名称arr本身是指针,所以可以直接赋值给同类型的指针parr: ,这使得 阅读全文
posted @ 2019-03-24 21:05 骏马金龙 阅读 (651) 评论 (1) 编辑
摘要:概念 僵尸进程 :当子进程退出时,父进程还没有(使用wait或waitpid)接收其退出状态时,子进程就成了僵尸进程 孤儿进程 :当子进程还在运行时,父进程先退出了,子进程就会成为孤儿进程被pid=1的init/systemd进程收养 需要说明的是,僵尸进程的父进程死掉后,僵尸进程也会被pid=1的 阅读全文
posted @ 2019-03-11 01:32 骏马金龙 阅读 (330) 评论 (0) 编辑
摘要:要生成大量随机大小的文件,最简单的方法是for循环N次。 例如,生成100W个0 16K大小的小文件(尝试时请改小一点数量,不然时间要很久): tmp_dir=/tmp/temp for i in {1..1000000};do dd if=/dev/zero of=$tmp_dir/${i}.lo 阅读全文
posted @ 2019-03-10 12:59 骏马金龙 阅读 (999) 评论 (0) 编辑
摘要:获取主机名、用户、组、网络信息相关函数 首先是获取主机名的方式,Perl提供了 模块,可以查询当前的主机名: Perl中提供了下面一大堆的内置函数用来获取用户、组、网络相关的信息。这些perl函数在C中也都有对应的函数。 从动作上分为3类: getXXX:获取信息操作 setXXX:设置操作 end 阅读全文
posted @ 2019-03-06 21:26 骏马金龙 阅读 (171) 评论 (0) 编辑
摘要:SSH系列文章 : "SSH基础:SSH和SSH服务" "SSH转发代理:ssh agent用法详解" "SSH隧道:端口转发功能详解" 使用ssh agent之前 使用ssh公钥认证的方式可以免去ssh客户端(如ssh命令、xshell等)连接远端主机sshd时需要输入对方用户密码的问题。 但如果 阅读全文
posted @ 2019-03-06 17:16 骏马金龙 阅读 (3186) 评论 (0) 编辑
摘要:SSH系列文章 : "SSH基础:SSH和SSH服务" "SSH转发代理:ssh agent用法详解" "SSH隧道:端口转发功能详解" 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host1、host2都同互相通信,但是host1和host2之间不能通信,如何从host1连 阅读全文
posted @ 2019-03-06 13:55 骏马金龙 阅读 (2363) 评论 (0) 编辑
摘要:入门推荐书籍1: 《计算机的心智:操作系统之哲学原理》 (建议看第一版)。要阅读这本书,除了几个概念(比较常见的是"中断"),完全不需要任何基础(没错,不需要C和任何语言的知识),看故事一样就可以将操作系统的进程、线程、内存、IO、多核全部有个了解。当然,这本书只能浅层次、全面地了解操作系统,适合入 阅读全文
posted @ 2019-03-06 09:57 骏马金龙 阅读 (4222) 评论 (0) 编辑
摘要:sysopen() open()和sysopen()都打开文件句柄,open()是比较高层次的打开文件句柄,sysopen()相对要底层一点。但 它们打开的文件句柄并没有区别 ,只不过sysopen()有一些自己的特性:可以使用几个open()没有的flag,可以指定文件被创建时的权限等。 一定要注 阅读全文
posted @ 2019-03-02 09:42 骏马金龙 阅读 (123) 评论 (0) 编辑
摘要:文件句柄和文件描述符的关系 文件描述符是操作系统的资源,对于实体文件来说,每打开一次文件,操作系统都会为该进程分配一个文件描述符来关联(指向)这个文件,以后操作文件数据都根据这个文件描述符来操作,而不是文件名。就像对文件句柄的操作一样。 实际上,文件句柄、文件描述符和实体文件的关系存在层次上的关系。 阅读全文
posted @ 2019-02-28 14:42 骏马金龙 阅读 (291) 评论 (0) 编辑
摘要:文件锁 当多个进程或多个程序都想要修同一个文件的时候,如果不加控制,多进程或多程序将可能导致文件更新的丢失。 例如进程1和进程2都要写入数据到a.txt中,进程1获取到了文件句柄,进程2也获取到了文件句柄,然后进程1写入一段数据,进程2写入一段数据,进程1关闭文件句柄,会将数据flush到文件中,进 阅读全文
posted @ 2019-02-27 23:59 骏马金龙 阅读 (300) 评论 (0) 编辑
摘要:随机读写 如果一个文件句柄是指向一个实体文件的,那么就可以对它进行随机数据的访问(包括随机读、写),随机访问表示可以读取文件中的任何一部分数据或者向文件中的任何一个位置处写入数据。 实现这种随机读写的功能依赖于一个文件读写位置指针(file pointer) 。 当一个文件句柄关联到了一个实体文件后 阅读全文
posted @ 2019-02-27 19:10 骏马金龙 阅读 (94) 评论 (0) 编辑
摘要:read()函数 read()函数用于从文件句柄中读取指定字节数的数据并写入到一个标量中。如果文件句柄是以Unicode方式打开的,则表示读取指定字符数而非字节数。 有两种read方式: 三参数的read表示从FH文件句柄中读取len字节长度的数据放进标量变量 中。四参数的read稍后解释。 例如: 阅读全文
posted @ 2019-02-27 10:51 骏马金龙 阅读 (103) 评论 (0) 编辑
上一页 1 2 3 4 5 6 ··· 15 下一页