骏马金龙 (新博客:www.junmajinlong.com)

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

上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要: 按"指针"传递 python中 变量赋值、参数传递都是通过"指针"拷贝的方式进行的 。除了按"指针"拷贝,还有一种按值拷贝的方式,关于按值、按指针拷贝的细节,参见 "按值传递 vs. 按指针传递" 。 所以在python中,变量赋值、参数传递,都只是拷贝了源数据的一个地址,而不会拷贝内存中完整的数据 阅读全文
posted @ 2018-11-10 00:33 骏马金龙 阅读(2383) 评论(0) 推荐(4) 编辑
摘要: 函数属性 python中的函数是一种对象,它有属于对象的属性。除此之外,函数还可以自定义自己的属性。注意,属性是和对象相关的,和作用域无关。 自定义属性 自定义函数自己的属性方式很简单。假设函数名称为myfunc,那么为这个函数添加一个属性var1: 那么这个属性var1就像是全局变量一样被访问、修 阅读全文
posted @ 2018-11-09 20:23 骏马金龙 阅读(5975) 评论(1) 推荐(3) 编辑
摘要: 函数声明、调用、返回基础 Python中使用def关键字来声明函数,声明函数的格式为: 有3个需要注意的地方: 1. 函数名后面必须加冒号 2. 如果函数体和def不在同一行,则必须缩进 3. return指定函数返回值,用来结束函数 但return语句是可有可无的,如果不给return,则等价于加 阅读全文
posted @ 2018-11-09 00:47 骏马金龙 阅读(6652) 评论(0) 推荐(17) 编辑
摘要: 按值传递还是指针传递? 变量赋值有两种方式:按值传递、按"指针"传递(指针也常称为"引用")。不同的编程语言赋值的方式不一样,例如Python是按"指针"传递的,Go是按值传递的。 注意,"指针"加了引号,因为它不是真正的按指针拷贝,见下文分析。 参数传值其实也是变量赋值的过程,只不过参数是函数的本 阅读全文
posted @ 2018-11-08 12:57 骏马金龙 阅读(1540) 评论(0) 推荐(5) 编辑
摘要: 作用域是指变量的生效范围,例如本地变量、全局变量描述的就是不同的生效范围。 python的变量作用域的规则非常简单,可以说是所有语言中最直观、最容易理解的作用域。 在开始介绍作用域之前,先抛一个问题: 上面的代码将输出3、1、1。解释参见 "再述作用域规则" 。另外,个人建议,本文最后一小节内容尽量 阅读全文
posted @ 2018-11-07 19:11 骏马金龙 阅读(4131) 评论(1) 推荐(12) 编辑
摘要: 接口转回成具体类型 接口实例中可以存放各种实现了接口的类型实例,在有需要的时候,还可以通过 或`ins.( Type)`的方式将接口实例ins直接转回Type类型的实例。 但注意,这时候的i和x在底层不是同一个对象,它们的地址是不同的。 输出: 注意,接口实例转回时, 接口实例中存放的是什么类型,才 阅读全文
posted @ 2018-11-01 23:27 骏马金龙 阅读(7594) 评论(0) 推荐(3) 编辑
摘要: Go方法简介 Go中的struct结构类似于面向对象中的类。面向对象中,除了成员变量还有方法。 Go中也有方法,它是一种特殊的函数,定义于struct之上(与struct关联、绑定),被称为struct的receiver。 它的定义方式大致如下: 这表示 函数是绑定在mytype这个struct t 阅读全文
posted @ 2018-11-01 17:36 骏马金龙 阅读(8611) 评论(1) 推荐(6) 编辑
摘要: struct的导出和暴露问题 关于struct的导出 struct的属性是否被导出,也遵循大小写的原则:首字母大写的被导出,首字母小写的不被导出。 所以: 1. 如果struct名称首字母是小写的,这个struct不会被导出。连同它里面的字段也不会导出,即使有首字母大写的字段名 。 2. 如果str 阅读全文
posted @ 2018-11-01 08:32 骏马金龙 阅读(7110) 评论(6) 推荐(2) 编辑
摘要: struct struct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一。 说白了就是拿来存储数据的,只不过可自定义化的程度很高,用法很灵活,Go中不少功能依赖于结构,就这样一个角色。 Go中不支持面向对象,面向对象中描述事物的类的 阅读全文
posted @ 2018-10-31 12:17 骏马金龙 阅读(42538) 评论(0) 推荐(12) 编辑
摘要: defer关键字 defer关键字可以让 函数或语句 延迟到函数语句块的最结尾时,即即将退出函数时执行,即便函数中途报错结束、即便已经panic()、即便函数已经return了,也都会执行defer所推迟的对象。 其实defer的本质是,当在某个函数中使用了defer关键字,则创建一个独立的defe 阅读全文
posted @ 2018-10-30 20:12 骏马金龙 阅读(2400) 评论(1) 推荐(4) 编辑
摘要: 回调函数和闭包 当函数具备以下两种特性的时候,就可以称之为高阶函数(high order functions): 1. 函数可以作为另一个函数的参数(典型用法是回调函数) 2. 函数可以返回另一个函数,即让另一个函数作为这个函数的返回值(典型用法是闭包) 一般来说,附带的还具备一个特性:函数可以作为 阅读全文
posted @ 2018-10-30 19:16 骏马金龙 阅读(10358) 评论(0) 推荐(6) 编辑
摘要: Go中函数特性简介 对Go中的函数特性做一个总结。懂则看,不懂则算。 1. Go中有3种函数:普通函数、匿名函数(没有名称的函数)、方法(定义在struct上的函数)。 2. Go编译时不在乎函数的定义位置,但建议init()定义在最前面(如果有的话),main函数定义在init()之后,然后再根据 阅读全文
posted @ 2018-10-30 12:50 骏马金龙 阅读(4598) 评论(0) 推荐(4) 编辑
摘要: 条件判断结构:if else 分支选择结构:switch case 循环结构:for break:退出for或switch结构(以及select) continue:进入下一次for迭代 虽然Go是类C的语言,但Go在这些流程控制语句中的条件表达式部分不使用括号。甚至有些时候使用括号会报错,但有些复 阅读全文
posted @ 2018-10-28 16:45 骏马金龙 阅读(1693) 评论(0) 推荐(5) 编辑
摘要: Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。 简单的转换操作 转换数据类型的方式很简单。 例如: Go允许在底层结构相同的两个类型之间互转。例如: 但注意: 1. 不是所有数据类型都能转换的,例如字母格式的string类型"abcd"转换为int肯定会失败 2. 低精度转换为高精度时是 阅读全文
posted @ 2018-10-27 23:31 骏马金龙 阅读(66415) 评论(2) 推荐(8) 编辑
摘要: 每一个变量都有数据类型,Go中的数据类型有: 简单数据类型 :int、float、complex、bool和string 数据结构或组合(composite) :struct、array、slice、map和channel 接口(interface) 当声明变量的时候,会做默认的赋0初始化。每种数据 阅读全文
posted @ 2018-10-27 21:41 骏马金龙 阅读(2357) 评论(0) 推荐(4) 编辑
摘要: 常量(Constants)和iota 常量包含不会发生更改的数据。常量的数据类型只能是boolean、number(int/float/complex)或string。 定义方式: TYPE基本可以省略,因为常量都是简单数据类型,编译器可以根据值推断出它的数据类型。 例如: 常量在编译期间被评估,因 阅读全文
posted @ 2018-10-27 20:05 骏马金龙 阅读(1820) 评论(0) 推荐(4) 编辑
摘要: Go里的map用于存放key/value对,在其它地方常称为hash、dictionary、关联数组,这几种称呼都是对同一种数据结构的不同称呼,它们都用于将key经过hash函数处理,然后映射到value,实现一一对应的关系。 map的内部结构 一个简单的map结构示意图: 在向map中存储元素的时 阅读全文
posted @ 2018-10-26 17:28 骏马金龙 阅读(5880) 评论(0) 推荐(4) 编辑
摘要: slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值。在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结构带来非常大的便利性,如python、perl等都支持对数组的slice操作,甚至perl还支持对h 阅读全文
posted @ 2018-10-26 10:32 骏马金龙 阅读(41268) 评论(2) 推荐(16) 编辑
摘要: 了解Python、Perl、JavaScript的人想必都知道它们的数组是动态的,可以随需求自动增大数组长度。但Go中的数组是固定长度的,数组一经声明,就无法扩大、缩减数组的长度。但Go中也有类似的动态"数组",称为slice数据结构,在下一篇文章会详细解释它。 Go中的数组是slice和map两种 阅读全文
posted @ 2018-10-25 19:55 骏马金龙 阅读(5439) 评论(4) 推荐(7) 编辑
摘要: import导入包 搜索路径 import用于导入包: 编译器会根据上面指定的相对路径去搜索包然后导入,这个相对路径是从GOROOT或GOPATH(workspace)下的src下开始搜索的。 假如go的安装目录为 ,也就是说 ,而GOPATH环境变量 ,那么要搜索 包的时候,将按照 如下顺序 进行 阅读全文
posted @ 2018-10-25 01:41 骏马金龙 阅读(12524) 评论(4) 推荐(10) 编辑
摘要: hello world 从一个简单的程序开始解释,将下面的内容放进test.go文件中,路径随意: Go通过包的方式管理程序,每个Go源代码文件都必须声明自己所在的包,正如上面的 声明自己所在的包是main包。 每个程序都必须有一个main包,main包作为整个程序的编译入口包,main包中的mai 阅读全文
posted @ 2018-10-24 13:27 骏马金龙 阅读(4868) 评论(6) 推荐(9) 编辑
摘要: Go语言不是一门面向对象的语言,没有对象和继承,也没有面向对象的多态、重写相关特性。 Go所拥有的是数据结构,它可以关联方法。Go也支持简单但高效的组合(Composition),请搜索面向对象和组合。 虽然Go不支持面向对象,但Go通过定义数据结构的方式,也能实现与Class相似的功能。 一个简单 阅读全文
posted @ 2018-10-23 07:57 骏马金龙 阅读(4464) 评论(1) 推荐(10) 编辑
摘要: 前面带有 符号的是 待补充文章 ,有些可能在随后会跟着补上,有些可能有缘再补😄。 Python语法基础 菜鸟一枚,错误在所难免,还望发现错误后能够提出 。 1. 基础数据类型 "数值类型" "布尔类型和逻辑运算" "等值和大小比较" "字符串" "字符串(string)方法整理" "字符串格式化输 阅读全文
posted @ 2018-10-22 20:41 骏马金龙 阅读(27593) 评论(8) 推荐(21) 编辑
摘要: 1.Go简介 Go语言是编译型、静态类型的类C的语言,并带有GC(垃圾收集器,garbage collection)。这意味着什么? 另外, Go是一种非常严格的语言,它几乎总是要求我们"以标准答案去答题",在其它语言可以容忍的不规范编码方式在Go语言中几乎都会抛异常 。例如导入了包却没有使用这个包 阅读全文
posted @ 2018-10-22 20:30 骏马金龙 阅读(5335) 评论(6) 推荐(18) 编辑
摘要: 这个系列写的不是很好,未来重构。 Go基础系列 |Go基础|Go基础| | | | | "1.Go简介" | "2.Go数据结构struct" | | "3.构建Go程序" | "4.import导包和初始化阶段" | | "5.array" | "6.Slice详解" | | "7.map" | 阅读全文
posted @ 2018-10-22 20:24 骏马金龙 阅读(26630) 评论(4) 推荐(18) 编辑
摘要: 本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 perl中使用引用计数的方式管理内存,对象也是引用,所以对象的销毁也是由引用计数的管理方式进行管理的。也就是说,当一个对象(也 阅读全文
posted @ 2018-10-19 18:16 骏马金龙 阅读(777) 评论(0) 推荐(0) 编辑
摘要: 本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 已有的代码结构 现在有父类Animal,子类Horse,它们的代码分别如下: lib/Animal.pm中: lib/Hors 阅读全文
posted @ 2018-10-18 16:04 骏马金龙 阅读(1645) 评论(0) 推荐(2) 编辑
摘要: 官方手册:http://perldoc.perl.org/perlobj.html 本系列: "Perl面向对象(1):从代码复用开始" "Perl面向对象(2):对象" "Perl面向对象(3):解构——对象销毁" 第3篇依赖于第2篇,第2篇依赖于1篇。 Perl面向对象的三个准则 1. 类就是包 阅读全文
posted @ 2018-10-16 16:21 骏马金龙 阅读(1259) 评论(0) 推荐(0) 编辑
摘要: 1.普通的粘贴快捷键设置: 我设置成 。但是注意,有些程序里ctrl有特殊功能,这样 键会出现问题,所以建议将粘贴快捷键设置的复杂一点,例如 ,`ctrl+alt+shift+[0 9]`等等。 然后对着要复制的东西,一顿 ,然后分别用 粘贴即可。 注意,ditto采用的是 先进后出 的模型,后复制 阅读全文
posted @ 2018-10-16 09:15 骏马金龙 阅读(52880) 评论(2) 推荐(10) 编辑
摘要: 当写好一个或多个模块后,可以将它构建、打包成"tar.gz",以便让别人安装或者上传到CPAN(如果愿意的话)。对于模块的使用者来说,也不用再使用 来找pm文件,安装后一般都会安装到 路径下,然后直接使用 即可。 Module::Starter 在很早以前,使用h2xz工具,但它实在太古老了。现在很 阅读全文
posted @ 2018-10-13 14:02 骏马金龙 阅读(2535) 评论(0) 推荐(0) 编辑
摘要: 官方手册:https://perldoc.perl.org/perlpod.html POD文档是perl的man文档,可以用perldoc输出,也可以直接用man输出。在开始下面的文章之前,请先粗略浏览一到两篇perldoc文档,或去CPAN找几个模块的文档浏览下大致格式。 例如: 执行perld 阅读全文
posted @ 2018-10-13 01:11 骏马金龙 阅读(1349) 评论(0) 推荐(0) 编辑
摘要: 这是5个特殊的代码块。要理解这几个块,关键在于几个时间点: (1).程序编译期间 (2).程序执行期间 (3).程序执行结束但还未退出期间 BEGIN块 BEGIN块是在程序编译期间执行的,也就是上面的步骤(1)所在期间 即使程序中出现了语法错误,BEGIN块也会执行 如果出现了多个BEGIN块,则 阅读全文
posted @ 2018-10-12 20:39 骏马金龙 阅读(1457) 评论(0) 推荐(0) 编辑
摘要: 单文件版的perl程序只能用于构建较小的脚本程序。当代码规模较大时,应该遵循下面两条规则来构建程序。这样能将程序的各个部分按功能一个一个地细化,便于维护,也便于后续开发。 名称空间和包 名称空间用于组织逻辑逻辑代码和数据,一个 名称空间由一个包名,包内的所有子程序名以及包变量构成 ,出了这个名称空间 阅读全文
posted @ 2018-10-12 18:11 骏马金龙 阅读(2300) 评论(0) 推荐(4) 编辑
摘要: 名称冲突问题 假如在sum2.pm中使用require导入了一个代码文件sum1.pm: 如果在sum1.pm中也有一个sum子程序: 那么在运行sum2.pm的时候,将警告子程序重新定义。因为sum2.pm首先编译好自己的sum(),然后在 运行期间require 导入文件时,又再次定义sum() 阅读全文
posted @ 2018-10-11 12:54 骏马金龙 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 从函数复用开始:eval和do执行perl文件 当我们定义了一个功能比较通用的子程序,比如获取数值的绝对值。想要到处使用这个子程序,就得不断复制、粘贴这段绝对值函数的定义文本。显然,这是不太理想的方式。 于是,就将包含这个子程序的代码放进一个perl文件,然后通过特殊的语法去导入这个文件。 例如,文 阅读全文
posted @ 2018-10-11 09:31 骏马金龙 阅读(1011) 评论(0) 推荐(0) 编辑
摘要: man 1 getopt翻译 : "https://www.cnblogs.com/f ck need u/p/9757959.html" 写shell脚本的时候,通过while、case、shift来设计脚本的命令行选项是一件比较麻烦的事,因为Unix命令行的选项和参数自由度很高,支持短选项和长选 阅读全文
posted @ 2018-10-09 00:05 骏马金龙 阅读(10602) 评论(7) 推荐(9) 编辑
摘要: NAME getopt 解析命令行选项(加强版) SYNOPSIS (译注: 1. 后面的译文中将分别称呼这3种语法格式为语法1、语法2、语法3 2. 请区分option、parameter、argument、option argument、non option parameter。如不清楚,请参考 阅读全文
posted @ 2018-10-08 23:24 骏马金龙 阅读(1780) 评论(1) 推荐(1) 编辑
摘要: xargs具有并行处理的能力,在处理大文件时,如果应用得当,将大幅提升效率。 xargs详细内容(全网最详细): "https://www.cnblogs.com/f ck need u/p/5925923.html" 效率提升测试结果 先展示一下使用xargs并行处理提升的效率,稍后会解释下面的结 阅读全文
posted @ 2018-10-08 07:45 骏马金龙 阅读(8510) 评论(7) 推荐(6) 编辑
摘要: 1.tee多重定向 tee的作用是将一份标准输入多重定向,一份重定向到标准输出/dev/stdout,然后还将标准输入重定向到每个文件FILE中。 例如: 上面第一个命令将alpha.log的文件内容重定向给file{1..3}和标准输出通过管道传递给cat; 上面第二个命令将alpha.log的文 阅读全文
posted @ 2018-10-07 12:58 骏马金龙 阅读(4294) 评论(0) 推荐(3) 编辑
摘要: bash提供了两个内置命令:readarray和mapfile,它们是同义词。它们的作用是从标准输入读取一行行的数据,然后每一行都赋值给一个数组的各元素。显然,在shell编程中更常用的是从文件、从管道读取,不过也可以从文件描述符中读取数据。 需要先说明的是,shell并不像其它专门的编程语言对数组 阅读全文
posted @ 2018-10-06 11:37 骏马金龙 阅读(4274) 评论(0) 推荐(2) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页