骏马金龙

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

摘要: "安装Ruby、多版本Ruby共存、Ruby安装慢问题" "Ruby语言的一些杂项" "Ruby中的常量:引号、%符号和heredoc" "Ruby中的数值" "Ruby字符串(1):String基本用法" "Ruby字符串(2):String方法详细整理" "Ruby数组(1):基本用法" "Ru阅读全文
posted @ 2019-05-03 16:36 骏马金龙 阅读(133) 评论(0) 编辑
摘要: 前面带有 符号的是 待补充文章 ,有些可能在随后会跟着补上,有些可能有缘再补😄。 Python语法基础 菜鸟一枚,错误在所难免,还望发现错误后能够提出 。 . 1. 基础数据类型 "数值类型" "布尔类型和逻辑运算" "等值和大小比较" "字符串" "字符串(string)方法整理" "字符串格式阅读全文
posted @ 2018-10-22 20:41 骏马金龙 阅读(5922) 评论(0) 编辑
摘要: 这个系列写的不是很好,未来重构。 Go基础系列 |Go基础|Go基础| | | | | "1.Go简介" | "2.Go数据结构struct" | | "3.构建Go程序" | "4.import导包和初始化阶段" | | "5.array" | "6.Slice详解" | | "7.map" | 阅读全文
posted @ 2018-10-22 20:24 骏马金龙 阅读(4777) 评论(0) 编辑
摘要: 0.Perl书籍推荐 " Perl书籍下载 " 密码:kkqx 下面是一些我学习Perl过程中读过完整的或部分章节的觉得好的书。 入门级别1 :《Perl语言入门》即小骆驼 入门级别2 :《Intermediate Perl》即羊驼 入门后复习 :《beginning Perl》 系统性学习和进阶 阅读全文
posted @ 2018-08-21 16:32 骏马金龙 阅读(2513) 评论(0) 编辑
摘要: 今天下午突然看到: 原来,我已经写了300多篇博客了。现在想想,我收获了很多,也失去了很多。现在我想写一篇文章,感想类的文章,也是这么久以来、这么多文章中唯一的一篇非技术类文章。 开写之前,先把我写的3大系列文章的目录贴出来,目前为止几乎所有文章都在这3个系列里。 "Linux & shell基础系阅读全文
posted @ 2018-07-16 00:42 骏马金龙 阅读(11152) 评论(123) 编辑
摘要: 以下是本系列文章的大纲,此页博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接。 如果觉得文章不错,还请帮忙点下"推荐",各位的支持,能激发和鼓励我更大的写作热情。在此先行谢过! 为了让文章列表更紧凑,字体比较小。如果看着不太爽,请缩放页面150% 1.MySQL/MariaDB语法阅读全文
posted @ 2017-09-24 09:41 骏马金龙 阅读(14857) 评论(3) 编辑
摘要: 博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接。 为了让文章列表更紧凑,字体比较小。如果看着不太爽,请缩放页面150% 还请随手点下"推荐",各位的支持和肯定能激发和鼓励我更强烈的写作热情。谢谢! 推荐书籍:《大型网站技术架构:核心原理与案例分析》。最直接的感受是:这是一本好书,阅读全文
posted @ 2017-09-22 17:45 骏马金龙 阅读(20659) 评论(13) 编辑
摘要: 本人已经此系列的sed文章整理到pdf中,欢迎下载:玩透sed:探究sed原理 sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)sed修炼系列(三):sed高级应用之实现窗口滑动技术sed修炼系列(四):sed中的疑难杂症 说明: 阅读全文
posted @ 2017-09-09 21:54 骏马金龙 阅读(2132) 评论(1) 编辑
摘要: 我将尽量写出整个体系的内容,初学的朋友可以视之为学习资料,如同看书一样。虽然网上培训视频比较好入门,大方向上的知识点也还算完整,我个人也是这么入门的(基本上看完了某哥和某孩共两整期的视频课程),但看完后入门了,在回炉深造的时候,却发现这些视频课程缺少很多内容,甚至说,看完视频会遗漏很多非常重要的知识阅读全文
posted @ 2017-06-19 13:52 骏马金龙 阅读(60635) 评论(41) 编辑
摘要: openssl系列篇(翻译整理man文档以及用法示例) 证书请求、证书颁发、CA相关阅读全文
posted @ 2016-11-22 21:09 骏马金龙 阅读(794) 评论(3) 编辑
摘要: String方法整理 "官方手册" 类方法 new 指定创建什么编码的字符串,即new_str是什么编码的。 指定创建字符串对象时预先分配好的buffer大小。如果以后要扩容该字符串,就不需要再临时动态分配内存。对于后续可能需要频繁扩展该字符串的情况,可以提升一些性能。 例如: try_conver阅读全文
posted @ 2019-05-04 15:02 骏马金龙 阅读(48) 评论(0) 编辑
摘要: String字符串 字符串由String类提供,除了直接使用单双引号或其它字面量创建字符串,也可以使用String.new()方法来创建。 Ruby中的 字符串是可变对象 。 字符串的连接 直接连接即可: 单双引号 这和Perl一样,和Shell也类似。单引号是强引用,双引号是弱引用。 双引号的一个阅读全文
posted @ 2019-05-03 17:47 骏马金龙 阅读(26) 评论(0) 编辑
摘要: 数值类型 Ruby中所有数值都是Numeric类的子类对象, 数值都是不可变对象 。 数值类型的继承关系如下: Integer是整数,Float是浮点数类型,Rational是分数。 对于整数,要么是Fixnum,要么是Bignum:Fixnum是比较小整数的类型(31个二进制位),Bignum是较阅读全文
posted @ 2019-05-03 16:45 骏马金龙 阅读(12) 评论(0) 编辑
摘要: 数值字面量 没什么好说的,唯一需要说明的是分数字面量:数值后加上一个后缀字母 表示分数字面量。 引号 引号和Perl中的引号类似。 例如,单引号不解释变量内插和反斜线序列等,双引号解释变量内插和反斜线序列等,反引号用于执行对应的命令。此外,反引号中可以进行变量内插,也就是说反引号中字符的会按照双引号阅读全文
posted @ 2019-05-03 16:43 骏马金龙 阅读(13) 评论(0) 编辑
摘要: Ruby中设计了很多种比较方式,所有对象都能进行 这几种比较。此外,当实现了 =、 、between?`这几个比较方法。 这些比较方法的定义位置和意义分别如下。 在BasicObject中定义了 : :比较内容是否相同,更多时候是描述两者是否相等,比如 的内容是不同的,但是相等 :和 是相反的 :比阅读全文
posted @ 2019-05-03 16:42 骏马金龙 阅读(31) 评论(0) 编辑
摘要: Ruby是纯正血统的面向对象语言,所有的一切,一切的一切都是对象 Ruby里块(语句块)的特性非常重要,这个优美的特性贯穿整个Ruby Ruby里模块和类的概念一样重要,模块也是Ruby里的一个非常优美的特性 变量命名惯例 局部变量、方法参数、方法的名称都使用小写字母开头 全局变量以 开头,例如 实阅读全文
posted @ 2019-05-03 16:38 骏马金龙 阅读(9) 评论(0) 编辑
摘要: "安装Ruby、多版本Ruby共存、Ruby安装慢问题" "Ruby语言的一些杂项" "Ruby中的常量:引号、%符号和heredoc" "Ruby中的数值" "Ruby字符串(1):String基本用法" "Ruby字符串(2):String方法详细整理" "Ruby数组(1):基本用法" "Ru阅读全文
posted @ 2019-05-03 16:36 骏马金龙 阅读(133) 评论(0) 编辑
摘要: rbenv rbenv可以管理多个版本的ruby。可以分为3种范围(或者说不同生效作用域)的版本: local版:本地,针对各项目范围 global版:全局,没有shell和local版时使用global版 shell版:当前终端,只针对当前所在终端 查找优先级为 。 1.安装rbenv 2.安装r阅读全文
posted @ 2019-05-03 16:31 骏马金龙 阅读(27) 评论(0) 编辑
摘要: 引自我在知乎上的回答: "进程 线程 协程 例程 过程 的区别是什么? 骏马金龙的回答 知乎" 首先解释下程序、进程、上下文切换和线程。然后再解释协程、例程、过程。 程序 程序 :源代码堆起来的东西。相当于一个一动不动没有生命的机器人。 虽然是没有生命的机器人,但是它被设计后就表示有了硬件,它的硬件阅读全文
posted @ 2019-05-02 17:02 骏马金龙 阅读(346) 评论(0) 编辑
摘要: 原本是用perl写了一个通过给定的时间范围来筛选一个比较大的日志文件。但是测试发现筛选130W行日志需要2分多钟,对其中几个低效率函数单独进行了效率测试,发现构造100W个时间对象所花时间也是个大户。 于是,特地比较了几种语言构造100W个时间对象(或时间结构)的性能。以下是结论: Perl(Tim阅读全文
posted @ 2019-04-30 20:57 骏马金龙 阅读(64) 评论(0) 编辑
摘要: 定义好了一个可以输出带颜色行号以及行数据的函数print_with_line_num,f()是测试函数。在f()函数中,读取文件并输出读取的每一行数据,但根据参数选项决定是普通输出行还是同时输出带颜色行号的行数据。 这可以当作是偏函数、闭包、作用域的一个用法示例。 脚本内容如下: 下面是测试效果: 阅读全文
posted @ 2019-04-29 17:33 骏马金龙 阅读(14) 评论(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 骏马金龙 阅读(29) 评论(0) 编辑
摘要: 数组 Ruby中的数组是一个容器,数组中的每个元素都是 一个对象的引用 。 注意,Array类中包含了Enumerable模块,所以Enumerable中的方法也都能使用,例如Enumerable中的reduce()方法也是非常好用的方法。 创建数组 字面常量创建 ruby 1.使用[xxx]方式创阅读全文
posted @ 2019-04-15 11:27 骏马金龙 阅读(34) 评论(0) 编辑
摘要: 数组方法整理 方法列表: "all()、any()、none()和one()" :测试数组中的所有或部分元素是否满足给定条件。条件可以是语句块中决定,也可以是参数决定 "append()" :等价于 "push()" "bsearch()" :二分法查找元素 "bsearch_index()" :二阅读全文
posted @ 2019-04-15 11:21 骏马金龙 阅读(80) 评论(0) 编辑
摘要: 在此处只给出find的基本用法示例,都是平时我个人非常常用的搜索功能。如果有不理解的部分,则看后面的 "find运行机制详解" 对于理论的说明,也建议在看完这些基本示例后阅读一遍理论说明,它是本人翻译自find的man文档并加上了个人的理解。另外,在该理论说明结束后,还有find深入用法示例和分析。阅读全文
posted @ 2019-04-14 13:09 骏马金龙 阅读(448) 评论(0) 编辑
摘要: MariaDB官方手册 翻译:create database语句(已提交到MariaDB官方手册) 翻译:rename table语句(已提交到MariaDB官方手册) 翻译:alter table语句(已提交到MariaDB官方手册) 翻译:标识限定符(已提交到MariaDB官方手册) 翻译:标识阅读全文
posted @ 2019-04-12 19:00 骏马金龙 阅读(70) 评论(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 骏马金龙 阅读(62) 评论(0) 编辑
摘要: 1.C中数组和指针的关系 对于任意类型的数组arr,对于同类型的指针类型parr(确切一点,可以假设类型为int,即 )。它们之间有如下"内幕": 1. 数组的名称arr本身就是一个指针,这个指针指向数组的第一个元素 2.因为名称arr本身是指针,所以可以直接赋值给同类型的指针parr: ,这使得 阅读全文
posted @ 2019-03-24 21:05 骏马金龙 阅读(123) 评论(0) 编辑
摘要: 概念 僵尸进程 :当子进程退出时,父进程还没有(使用wait或waitpid)接收其退出状态时,子进程就成了僵尸进程 孤儿进程 :当子进程还在运行时,父进程先退出了,子进程就会成为孤儿进程被pid=1的init/systemd进程收养 需要说明的是,僵尸进程的父进程死掉后,僵尸进程也会被pid=1的阅读全文
posted @ 2019-03-11 01:32 骏马金龙 阅读(216) 评论(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 骏马金龙 阅读(263) 评论(0) 编辑
摘要: 获取主机名、用户、组、网络信息相关函数 首先是获取主机名的方式,Perl提供了 模块,可以查询当前的主机名: Perl中提供了下面一大堆的内置函数用来获取用户、组、网络相关的信息。这些perl函数在C中也都有对应的函数。 从动作上分为3类: getXXX:获取信息操作 setXXX:设置操作 end阅读全文
posted @ 2019-03-06 21:26 骏马金龙 阅读(52) 评论(0) 编辑
摘要: SSH系列文章 : "SSH基础:SSH和SSH服务" "SSH转发代理:ssh agent用法详解" "SSH隧道:端口转发功能详解" 使用ssh agent之前 使用ssh公钥认证的方式可以免去ssh客户端(如ssh命令、xshell等)连接远端主机sshd时需要输入对方用户密码的问题。 但如果阅读全文
posted @ 2019-03-06 17:16 骏马金龙 阅读(434) 评论(0) 编辑
摘要: SSH系列文章 : "SSH基础:SSH和SSH服务" "SSH转发代理:ssh agent用法详解" "SSH隧道:端口转发功能详解" 1.1 ssh安全隧道(一):本地端口转发 如下图,假如host3和host1、host2都同互相通信,但是host1和host2之间不能通信,如何从host1连阅读全文
posted @ 2019-03-06 13:55 骏马金龙 阅读(329) 评论(0) 编辑
摘要: 入门推荐书籍 《计算机的心智:操作系统之哲学原理》 (建议看第一版)。要阅读这本书,除了几个概念(比较常见的是"中断"),完全不需要任何基础(没错,不需要C和任何语言的知识),看故事一样就可以将操作系统的进程、线程、内存、IO、多核全部有个了解。就像我原来在网站架构系列中推荐的《大型网站技术架构:核阅读全文
posted @ 2019-03-06 09:57 骏马金龙 阅读(1059) 评论(0) 编辑
摘要: sysopen() open()和sysopen()都打开文件句柄,open()是比较高层次的打开文件句柄,sysopen()相对要底层一点。但 它们打开的文件句柄并没有区别 ,只不过sysopen()有一些自己的特性:可以使用几个open()没有的flag,可以指定文件被创建时的权限等。 一定要注阅读全文
posted @ 2019-03-02 09:42 骏马金龙 阅读(52) 评论(0) 编辑
摘要: 文件句柄和文件描述符的关系 文件描述符是操作系统的资源,对于实体文件来说,每打开一次文件,操作系统都会为该进程分配一个文件描述符来关联(指向)这个文件,以后操作文件数据都根据这个文件描述符来操作,而不是文件名。就像对文件句柄的操作一样。 实际上,文件句柄、文件描述符和实体文件的关系存在层次上的关系。阅读全文
posted @ 2019-02-28 14:42 骏马金龙 阅读(144) 评论(0) 编辑
摘要: 文件锁 当多个进程或多个程序都想要修同一个文件的时候,如果不加控制,多进程或多程序将可能导致文件更新的丢失。 例如进程1和进程2都要写入数据到a.txt中,进程1获取到了文件句柄,进程2也获取到了文件句柄,然后进程1写入一段数据,进程2写入一段数据,进程1关闭文件句柄,会将数据flush到文件中,进阅读全文
posted @ 2019-02-27 23:59 骏马金龙 阅读(176) 评论(0) 编辑
摘要: 随机读写 如果一个文件句柄是指向一个实体文件的,那么就可以对它进行随机数据的访问(包括随机读、写),随机访问表示可以读取文件中的任何一部分数据或者向文件中的任何一个位置处写入数据。 实现这种随机读写的功能依赖于一个文件读写位置指针(file pointer) 。 当一个文件句柄关联到了一个实体文件后阅读全文
posted @ 2019-02-27 19:10 骏马金龙 阅读(33) 评论(0) 编辑
摘要: read()函数 read()函数用于从文件句柄中读取指定字节数的数据并写入到一个标量中。如果文件句柄是以Unicode方式打开的,则表示读取指定字符数而非字节数。 有两种read方式: 三参数的read表示从FH文件句柄中读取len字节长度的数据放进标量变量 中。四参数的read稍后解释。 例如:阅读全文
posted @ 2019-02-27 10:51 骏马金龙 阅读(35) 评论(0) 编辑
摘要: 三篇Perl IO基础类文章: "Perl的IO操作(1):文件句柄" "Perl的IO操作(2):更多文件句柄的模式" "Perl文件句柄相关的常见变量" IO对象和IO\:\:Module家族模块 无论是哪种高级编程语言,都提供了较底层的操作系统层IO能力,也提供了更高层次的封装来实现语言级别的阅读全文
posted @ 2019-02-27 10:50 骏马金龙 阅读(29) 评论(0) 编辑
摘要: 在Linux系统下,有七类文件类型: 普通文件( ) 目录(d) 软链接(字符链接L) 套接字文件(S) 字符设备(S) 块设备(B) 管道文件(命名管道P) 普通文件、目录、软链接无需多解释。 管道文件 管道分为 匿名管道和命名管道 。管道都是一端写入、另一端读取,它们是单方向数据传输的,它们的数阅读全文
posted @ 2019-02-25 14:14 骏马金龙 阅读(722) 评论(0) 编辑
摘要: `Thread::Pool`模块提供了Perl解释器线程的线程池,手册:https://metacpan.org/pod/Thread::Pool。阅读全文
posted @ 2019-02-23 13:44 骏马金龙 阅读(55) 评论(0) 编辑
摘要: 线程数据共享 在介绍Perl解释器线程的时候一直强调, Perl解释器线程在被创建出来的时候,将从父线程中拷贝数据到子线程中,使得数据是线程私有的,并且数据是线程隔离的。如果真的想要在线程间共享数据,需要显式使用 模块来扩展threads模块的功能 。这个模块必须在先导入了threads模块的情况下阅读全文
posted @ 2019-02-23 13:43 骏马金龙 阅读(35) 评论(0) 编辑
摘要: (Thread\:\:Queue)队列数据结构(FIFO)是线程安全的 ,它保证了某些线程从一端写入数据,另一些线程从另一端读取数据。只要队列已经满了,写入操作就自动被阻塞直到有空间支持写操作,只要队列空了,读取操作就会自动阻塞直到队列中有数据可读。这种模式自身就保证了线程安全性。 创建队列 new阅读全文
posted @ 2019-02-23 12:43 骏马金龙 阅读(33) 评论(0) 编辑
摘要: 线程简介 线程(thread)是轻量级进程,和进程一样,都能独立、并行运行,也由父线程创建,并由父线程所拥有,线程也有线程ID作为线程的唯一标识符,也需要等待线程执行完毕后收集它们的退出状态(比如使用 收尸),就像waitpid对待子进程一样。 线程运行在进程内部,每个进程都至少有一个线程,即mai阅读全文
posted @ 2019-02-22 22:11 骏马金龙 阅读(104) 评论(0) 编辑
摘要: 本文介绍的Perl进程间数据共享内容主体来自于《Pro Perl》的第21章。 IPC简介 通过fork创建多个子进程时,进程间的数据共享是个大问题,要么建立一个进程间通信的通道,要么找到一个两进程都引用的共享变量。本文将介绍Unix IPC的近亲System V IPC:message queue阅读全文
posted @ 2019-02-20 00:32 骏马金龙 阅读(62) 评论(2) 编辑
摘要: 不同进程之间的通信或进程间通信(InterProcess Communication, IPC),是一个涉及多个方面的主题。Perl提供了多种进程间通信的方式,本文将逐一介绍。本文的内容主体来自于《Pro Perl》的第21章。 单向管道(unidirectional pipe) 管道是两个文件描述阅读全文
posted @ 2019-02-19 13:37 骏马金龙 阅读(57) 评论(0) 编辑
摘要: 本文关于处理子进程退出状态码的内容主体来自于《Pro Perl》的第21章。 子进程退出状态码 每个子进程在退出时,操作系统都会保留它们的退出状态码,并在内核维护的进程表中保留子进程项。对于进程的退出状态码,只有在父进程读走之后或者收走(reap)之后才会被清除 。注意这里的一个词语“ 收走(rea阅读全文
posted @ 2019-02-16 22:47 骏马金龙 阅读(66) 评论(0) 编辑
摘要: 本文关于Perl进程的内容主体来自于《Pro Perl》的第21章。 创建新进程 Perl中可以使用 函数来创建新的进程,它会调用操作系统的fork系统调用来创建新进程。 fork是Unix系统中的函数,在Windows中不原生支持fork。但从Perl 5.8开始,Perl提供了一个模拟的fork阅读全文
posted @ 2019-02-16 10:32 骏马金龙 阅读(67) 评论(0) 编辑
摘要: 本文关于Perl信号处理的内容主体来自于《Pro Perl》的第21章。 信号处理 操作系统可以通过信号(signal)处理机制来实现一些功能:程序注册好待监视的信号处理机制,在程序运行过程中如果产生了对应的信号,则会按照注册好的处理方式进行处理。 signal基础 每个进程都记录了一个信号(sig阅读全文
posted @ 2019-02-15 22:27 骏马金龙 阅读(111) 评论(0) 编辑