骏马金龙

网名骏马金龙,钟情于IT世界里的各种原理和实现机制,强迫症重症患者。爱研究、爱翻译、爱分享。特借此一亩三分田记录自己成长点滴!!!
我本问道人,道心不坚,必将与道无缘!谨记心中。
目标:将IT技术的研究发展成终身追求,为同在路上或刚上路的道友做一点点贡献(2018)

摘要: " Perl书籍下载 " 密码:kkqx 1.Perl语言入门 本部分是《Perl语言入门 第六版》(英文书名:Learning Perl)的学习笔记,这本书是Perl家族的"小羊驼"书籍。我个人学习这本书的感觉,如果有shell基础,perl入门挺容易的。 这部分文章是我学习这本书时的总结和稍微的阅读全文
posted @ 2018-08-21 16:32 骏马金龙 阅读(680) 评论(0) 编辑
摘要: 今天下午突然看到: 原来,我已经写了300多篇博客了。现在想想,我收获了很多,也失去了很多。现在我想写一篇文章,感想类的文章,也是这么久以来、这么多文章中唯一的一篇非技术类文章。 开写之前,先把我写的3大系列文章的目录贴出来,几乎所有文章都在这3个系列里。 "Linux & shell基础系列:ht阅读全文
posted @ 2018-07-16 00:42 骏马金龙 阅读(7883) 评论(115) 编辑
摘要: 以下是本系列文章的大纲,此页博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接。 如果觉得文章不错,还请帮忙点下"推荐",各位的支持,能激发和鼓励我更大的写作热情。在此先行谢过! Linux系列文章大纲:http://www.cnblogs.com/f-ck-need-u/p/704阅读全文
posted @ 2017-09-24 09:41 骏马金龙 阅读(8324) 评论(1) 编辑
摘要: 以下是本系列文章的大纲,其中个人感觉较好的文章或感觉与众不同有看点的就自封了一个(精)字。 此页所列博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接。 如果觉得文章不错,还请帮忙点下"推荐",各位的支持,能激发和鼓励我更大的写作热情。在此先行谢过! Linux系列文章大纲:http阅读全文
posted @ 2017-09-22 17:45 骏马金龙 阅读(11520) 评论(10) 编辑
摘要: 本人已经此系列的sed文章整理到pdf中,欢迎下载:玩透sed:探究sed原理 sed系列文章: sed修炼系列(一):花拳绣腿之入门篇sed修炼系列(二):武功心法(info sed翻译+注解)sed修炼系列(三):sed高级应用之实现窗口滑动技术sed修炼系列(四):sed中的疑难杂症 说明: 阅读全文
posted @ 2017-09-09 21:54 骏马金龙 阅读(1406) 评论(1) 编辑
摘要: 我将尽量写出整个体系的内容,初学的朋友可以视之为学习资料,如同看书一样。虽然网上培训视频比较好入门,大方向上的知识点也还算完整,我个人也是这么入门的(基本上看完了某哥和某孩共两整期的视频课程),但看完后入门了,在回炉深造的时候,却发现这些视频课程缺少很多内容,甚至说,看完视频会遗漏很多非常重要的知识阅读全文
posted @ 2017-06-19 13:52 骏马金龙 阅读(38668) 评论(39) 编辑
摘要: openssl系列篇(翻译整理man文档以及用法示例) 证书请求、证书颁发、CA相关阅读全文
posted @ 2016-11-22 21:09 骏马金龙 阅读(560) 评论(3) 编辑
摘要: 本文从代码复用的角度一步一步演示如何从python普通代码进化到面向对象,并通过代码去解释一些面向对象的理论。所以,本文前面的内容都是非面向对象的语法实现方式,只有在最结尾才给出了面向对象的简单语法介绍。各位道兄不妨一看,如果留下点笔墨指导,本人感激不尽。 最初代码 3种动物牛Cow、羊Sheep、阅读全文
posted @ 2018-11-15 17:54 骏马金龙 阅读(263) 评论(0) 编辑
摘要: 包导入格式 导入模块时除了使用模块名进行导入,还可以使用目录名进行导入。例如,在sys.path路径下,有一个dir1/dir2/mod.py模块,那么在任意位置处都可以使用下面这种方式导入这个模块。 一个实际一点的示例,设置PYTHONPATH环境变量为 ,然后在此目录下创建以上目录和mod.py阅读全文
posted @ 2018-11-15 01:29 骏马金龙 阅读(179) 评论(0) 编辑
摘要: python模块导入细节 官方手册:https://docs.python.org/3/tutorial/modules.html 可执行文件和模块 python源代码文件按照功能可以分为两种类型: 1. 用于执行的可执行程序文件 2. 不用与执行,仅用于被其它python源码文件导入的模块文件 例阅读全文
posted @ 2018-11-13 23:10 骏马金龙 阅读(99) 评论(2) 编辑
摘要: fmt包中提供了3类读取输入的函数: Scan家族:从标准输入os.Stdin中读取数据,包括Scan()、Scanf()、Scanln() SScan家族:从字符串中读取数据,包括Sscan()、Sscanf()、Sscanln() Fscan家族:从io.Reader中读取数据,包括Fscan(阅读全文
posted @ 2018-11-11 23:27 骏马金龙 阅读(154) 评论(0) 编辑
摘要: 空接口 空接口是指没有定义任何接口方法的接口。 没有定义任何接口方法,意味着Go中的任意对象都可以实现空接口(因为没方法需要实现),任意对象都可以保存到空接口实例变量中 。 空接口的定义方式: 通常会简写为 。 更常见的,会直接使用 作为一种类型,表示空接口。例如: 再比如函数使用空接口类型参数: 阅读全文
posted @ 2018-11-11 09:52 骏马金龙 阅读(36) 评论(0) 编辑
摘要: 接口用法简介 接口(interface)是一种类型,用来定义行为(方法)。 但这些行为不会在接口上直接实现,而是需要用户自定义的方法来实现。所以,在上面的Namer接口类型中的方法 都是没有实际方法体的,仅仅只是在接口Namer中存放这些方法的签名( )。 当用户自定义的类型实现了接口上定义的这些方阅读全文
posted @ 2018-11-10 22:15 骏马金龙 阅读(527) 评论(0) 编辑
摘要: 按"指针"传递 python中 变量赋值、参数传递都是通过"指针"拷贝的方式进行的 。除了按"指针"拷贝,还有一种按值拷贝的方式,关于按值、按指针拷贝的细节,参见 "按值传递 vs. 按指针传递" 。 所以在python中,变量赋值、参数传递,都只是拷贝了源数据的一个地址,而不会拷贝内存中完整的数据阅读全文
posted @ 2018-11-10 00:33 骏马金龙 阅读(120) 评论(0) 编辑
摘要: 函数属性 python中的函数是一种对象,它有属于对象的属性。除此之外,函数还可以自定义自己的属性。注意,属性是和对象相关的,和作用域无关。 自定义属性 自定义函数自己的属性方式很简单。假设函数名称为myfunc,那么为这个函数添加一个属性var1: 那么这个属性var1就像是全局变量一样被访问、修阅读全文
posted @ 2018-11-09 20:23 骏马金龙 阅读(39) 评论(0) 编辑
摘要: 函数声明、调用、返回基础 Python中使用def关键字来声明函数,声明函数的格式为: 有3个需要注意的地方: 1. 函数名后面必须加冒号 2. 如果函数体和def不在同一行,则必须缩进 3. return指定函数返回值,用来结束函数 但return语句是可有可无的,如果不给return,则等价于加阅读全文
posted @ 2018-11-09 00:47 骏马金龙 阅读(669) 评论(0) 编辑
摘要: 按值传递还是指针传递? 变量赋值有两种方式:按值传递、按"指针"传递(指针也常称为"引用")。不同的编程语言赋值的方式不一样,例如Python是按"指针"传递的,Go是按值传递的。 注意,"指针"加了引号,因为它不是真正的按指针拷贝,见下文分析。 参数传值其实也是变量赋值的过程,只不过参数是函数的本阅读全文
posted @ 2018-11-08 12:57 骏马金龙 阅读(143) 评论(0) 编辑
摘要: 作用域是指变量的生效范围,例如本地变量、全局变量描述的就是不同的生效范围。 python的变量作用域的规则非常简单,可以说是所有语言中最直观、最容易理解的作用域。 在开始介绍作用域之前,先抛一个问题: 上面的代码将输出3、1、1。解释参见 "再述作用域规则" 。另外,个人建议,本文最后一小节内容尽量阅读全文
posted @ 2018-11-07 19:11 骏马金龙 阅读(164) 评论(0) 编辑
摘要: 接口用法简介 接口(interface)是一种类型,用来定义行为(方法)。 但这些行为不会在接口上直接实现,而是需要用户自定义的方法来实现。所以,在上面的Namer接口类型中的方法 都是没有实际方法体的,仅仅只是在接口Namer中存放这些方法的签名( )。 当用户自定义的类型实现了接口上定义的这些方阅读全文
posted @ 2018-11-02 19:27 骏马金龙 阅读(187) 评论(0) 编辑
摘要: 接口类型探测:类型断言 接口实例中存储了实现接口的类型实例,类型的实例有两种:值类型实例和指针类型实例。在程序运行过程中,接口实例存储的实例类型可能会动态改变。例如: 所以,需要一种探测接口实例所存储的是值类型还是指针类型。 探测的方法是: 和`ins.( Type)`。它们有两个返回值,第二个返回阅读全文
posted @ 2018-11-01 23:27 骏马金龙 阅读(46) 评论(0) 编辑
摘要: Go方法简介 Go中的struct结构类似于面向对象中的类。面向对象中,除了成员变量还有方法。 Go中也有方法,它是一种特殊的函数,定义于struct之上(与struct关联、绑定),被称为struct的receiver。 它的定义方式大致如下: 这表示 函数是绑定在mytype这个struct t阅读全文
posted @ 2018-11-01 17:36 骏马金龙 阅读(149) 评论(0) 编辑
摘要: struct的导出和暴露问题 关于struct的导出 struct的属性是否被导出,也遵循大小写的原则:首字母大写的被导出,首字母小写的不被导出。 所以: 1. 如果struct名称首字母是小写的,这个struct不会被导出。连同它里面的字段也不会导出,即使有首字母大写的字段名 。 2. 如果str阅读全文
posted @ 2018-11-01 08:32 骏马金龙 阅读(135) 评论(1) 编辑
摘要: struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一。 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用法很灵活,Go中不少功能依赖于结构,就这样一个角色。 Go中不支持面向对象,面向对象中描述事物的类的阅读全文
posted @ 2018-10-31 12:17 骏马金龙 阅读(169) 评论(0) 编辑
摘要: defer关键字 defer关键字可以让 函数或语句 延迟到函数语句块的最结尾时,即即将退出函数时执行,即便函数中途报错结束、即便已经panic()、即便函数已经return了,也都会执行defer所推迟的对象。 例如: 上面将输出: 即便是函数已经报错,或函数已经return返回,defer的对象阅读全文
posted @ 2018-10-30 20:12 骏马金龙 阅读(45) 评论(0) 编辑
摘要: 回调函数和闭包 当函数具备以下两种特性的时候,就可以称之为高阶函数(high order functions): 1. 函数可以作为另一个函数的参数(典型用法是回调函数) 2. 函数可以返回另一个函数,即让另一个函数作为这个函数的返回值(典型用法是闭包) 一般来说,附带的还具备一个特性:函数可以作为阅读全文
posted @ 2018-10-30 19:16 骏马金龙 阅读(153) 评论(0) 编辑
摘要: Go中函数特性简介 对Go中的函数特性做一个总结。懂则看,不懂则算。 1. Go中有3种函数:普通函数、匿名函数(没有名称的函数)、方法(定义在struct上的函数)。 2. Go编译时不在乎函数的定义位置,但建议init()定义在最前面(如果有的话),main函数定义在init()之后,然后再根据阅读全文
posted @ 2018-10-30 12:50 骏马金龙 阅读(210) 评论(0) 编辑
摘要: 条件判断结构:if else 分支选择结构:switch case 循环结构:for break:退出for或switch结构(以及select) continue:进入下一次for迭代 虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号。甚至有些时候使用括号会报错,但有些复阅读全文
posted @ 2018-10-28 16:45 骏马金龙 阅读(61) 评论(0) 编辑
摘要: Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。 简单的转换操作 转换数据类型的方式很简单。 例如: Go允许在底层结构相同的两个类型之间互转。例如: 但注意: 1. 不是所有数据类型都能转换的,例如字母格式的string类型"abcd"转换为int肯定会失败 2. 低精度转换为高精度时是阅读全文
posted @ 2018-10-27 23:31 骏马金龙 阅读(142) 评论(2) 编辑
摘要: 每一个变量都有数据类型,Go中的数据类型有: 简单数据类型 :int、float、complex、bool和string 数据结构或组合(composite) :struct、array、slice、map和channel 接口(interface) 当声明变量的时候,会做默认的赋0初始化。每种数据阅读全文
posted @ 2018-10-27 21:41 骏马金龙 阅读(36) 评论(0) 编辑
摘要: 常量(Constants)和iota 常量包含不会发生更改的数据。常量的数据类型只能是boolean、number(int/float/complex)或string。 定义方式: TYPE基本可以省略,因为常量都是简单数据类型,编译器可以根据值推断出它的数据类型。 例如: 常量在编译期间被评估,因阅读全文
posted @ 2018-10-27 20:05 骏马金龙 阅读(28) 评论(0) 编辑
摘要: Go里的map用于存放key/value对,在其它地方常称为hash、dictionary、关联数组,这几种称呼都是对同一种数据结构的不同称呼,它们都用于将key经过hash函数处理,然后映射到value,实现一一对应的关系。 map的内部结构 一个简单的map结构示意图: 在向map中存储元素的时阅读全文
posted @ 2018-10-26 17:28 骏马金龙 阅读(142) 评论(0) 编辑
摘要: slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值。在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结构带来非常大的便利性,如python、perl等都支持对数组的slice操作,甚至perl还支持对h阅读全文
posted @ 2018-10-26 10:32 骏马金龙 阅读(174) 评论(2) 编辑
摘要: 了解Python、Perl、JavaScript的人想必都知道它们的数组是动态的,可以随需求自动增大数组长度。但Go中的数组是固定长度的,数组一经声明,就无法扩大、缩减数组的长度。但Go中也有类似的动态"数组",称为slice数据结构,在下一篇文章会详细解释它。 Go中的数组是slice和map两种阅读全文
posted @ 2018-10-25 19:55 骏马金龙 阅读(116) 评论(0) 编辑
摘要: import导入包 搜索路径 import用于导入包: 编译器会根据上面指定的相对路径去搜索包然后导入,这个相对路径是从GOROOT或GOPATH(workspace)下的src下开始搜索的。 假如go的安装目录为 ,也就是说 ,而GOPATH环境变量 ,那么要搜索 包的时候,将按照 如下顺序 进行阅读全文
posted @ 2018-10-25 01:41 骏马金龙 阅读(191) 评论(3) 编辑
摘要: hello world 从一个简单的程序开始解释,将下面的内容放进test.go文件中,路径随意: Go通过包的方式管理程序,每个Go源代码文件都必须声明自己所在的包,正如上面的 声明自己所在的包是main包。 每个程序都必须有一个main包,main包作为整个程序的编译入口包,main包中的mai阅读全文
posted @ 2018-10-24 13:27 骏马金龙 阅读(337) 评论(5) 编辑
摘要: Go语言不是一门面向对象的语言,没有对象和继承,也没有面向对象的多态、重写相关特性。 Go所拥有的是数据结构,它可以关联方法。Go也支持简单但高效的组合(Composition),请搜索面向对象和组合。 虽然Go不支持面向对象,但Go通过定义数据结构的方式,也能实现与Class相似的功能。 一个简单阅读全文
posted @ 2018-10-23 07:57 骏马金龙 阅读(342) 评论(0) 编辑
摘要: 哈哈,啥也没有。 "Python字符串(string)方法整理" "Python函数(1):函数基础" "Python函数(2):作用域详述" "Python函数(3):函数参数详述" "Python函数(4):回调函数和闭包(有缘再补😄)" "Python函数(5):函数属性和PyCodeObj阅读全文
posted @ 2018-10-22 20:41 骏马金龙 阅读(672) 评论(0) 编辑
摘要: 1.Go简介 Go语言是编译型、静态类型的类C的语言,并带有GC(垃圾收集器,garbage collection)。这意味着什么? 另外, Go是一种非常严格的语言,它几乎总是要求我们"以标准答案去答题",在其它语言可以容忍的不规范编码方式在Go语言中几乎都会抛异常 。例如导入了包却没有使用这个包阅读全文
posted @ 2018-10-22 20:30 骏马金龙 阅读(278) 评论(3) 编辑
摘要: Go基础系列 |Go基础|Go基础| | | | | "1.Go简介" | "2.Go数据结构struct" | | "3.构建Go程序" | "4.import导包和初始化阶段" | | "5.array" | "6.Slice详解" | | "7.map" | "8.常量和变量" | | "9.阅读全文
posted @ 2018-10-22 20:24 骏马金龙 阅读(543) 评论(0) 编辑
摘要: 语法 perl命令行在运行"一行式程序"非常有用,用法如下: 单行式程序选项 选项e 选项用于指定待运行的表达式 它就相当于在运行一个包含了如下代码的perl程序: e是使用perl单行程序的开关,使用该选项后,perl将不再从参数中读取文件名。 可以同时指定多个" e"。 选项n和p 选项使得pe阅读全文
posted @ 2018-10-22 00:28 骏马金龙 阅读(51) 评论(0) 编辑
摘要: 本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 perl中使用引用计数的方式管理内存,对象也是引用,所以对象的销毁也是由引用计数的管理方式进行管理的。也就是说,当一个对象(也阅读全文
posted @ 2018-10-19 18:16 骏马金龙 阅读(13) 评论(0) 编辑
摘要: 本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 已有的代码结构 现在有父类Animal,子类Horse,它们的代码分别如下: lib/Animal.pm中: lib/Hors阅读全文
posted @ 2018-10-18 16:04 骏马金龙 阅读(24) 评论(0) 编辑
摘要: 官方手册:http://perldoc.perl.org/perlobj.html 本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 Perl面向对象的三个准则 1. 类就是包阅读全文
posted @ 2018-10-16 16:21 骏马金龙 阅读(22) 评论(0) 编辑
摘要: 1.普通的粘贴快捷键设置: 我设置成 。但是注意,有些程序里ctrl有特殊功能,这样 键会出现问题,所以建议将粘贴快捷键设置的复杂一点,例如 ,`ctrl+alt+shift+[0 9]`等等。 然后对着要复制的东西,一顿 ,然后分别用 粘贴即可。 注意,ditto采用的是 先进后出 的模型,后复制阅读全文
posted @ 2018-10-16 09:15 骏马金龙 阅读(95) 评论(1) 编辑
摘要: 当写好一个或多个模块后,可以将它构建、打包成"tar.gz",以便让别人安装或者上传到CPAN(如果愿意的话)。对于模块的使用者来说,也不用再使用 来找pm文件,安装后一般都会安装到 路径下,然后直接使用 即可。 Module::Starter 在很早以前,使用h2xz工具,但它实在太古老了。现在很阅读全文
posted @ 2018-10-13 14:02 骏马金龙 阅读(70) 评论(0) 编辑
摘要: 官方手册:https://perldoc.perl.org/perlpod.html POD文档是perl的man文档,可以用perldoc输出,也可以直接用man输出。在开始下面的文章之前,请先粗略浏览一到两篇perldoc文档,或去CPAN找几个模块的文档浏览下大致格式。 例如: 执行perld阅读全文
posted @ 2018-10-13 01:11 骏马金龙 阅读(43) 评论(0) 编辑
摘要: 这是5个特殊的代码块。要理解这几个块,关键在于几个时间点: (1).程序编译期间 (2).程序执行期间 (3).程序执行结束但还未退出期间 BEGIN块 BEGIN块是在程序编译期间执行的,也就是上面的步骤(1)所在期间 即使程序中出现了语法错误,BEGIN块也会执行 如果出现了多个BEGIN块,则阅读全文
posted @ 2018-10-12 20:39 骏马金龙 阅读(9) 评论(0) 编辑