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

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

随笔分类 -  计算机语言通用知识

摘要:想要管理多种具体的东西,那么需要遵守每种东西的规范。如果想要提供一种通用模式来对这些具体的东西统一管理,需要使用一种古老的技术:抽象。 抽象是将多种具体的东西(管理时需要遵守的规范)的共同点抽取出来,放入到更高一层的抽象层。在抽象层不定义或少量定义具体的规范细则,而是让下层更具体的东西遵守抽象出来的 阅读全文
posted @ 2019-09-21 09:43 骏马金龙 阅读(967) 评论(2) 推荐(1) 编辑
摘要:一般来说,递归的正则表达式用来匹配任意嵌套层次的结构或左右对称的结构。例如匹配: 递归正则在正则表达式里算是比较灵活的部分,换句话说就是可能会比较难。下面这个正则表达式是在网上流传的非常广泛的递归正则的示例,它用来匹配嵌套任意次数的括号,括号内可以有其它字符,比如可以匹配 、`(abc(bc(def 阅读全文
posted @ 2019-08-13 10:55 骏马金龙 阅读(5051) 评论(0) 推荐(6) 编辑
摘要:理解并发、并行的例子 先举例子来理解这2个概念的区别。 老师让两个同学去办公室谈话。如果这两同学(进程)是并列跨过办公室门(CPU)的,那么就是并行。如果同学A先进同学B后进入(或者先B后A),或者两人并列同时进入,但是在办公室外的路人甲(用户)看来,同学A和同学B同时都在办公室内,这是并发。 其实 阅读全文
posted @ 2019-07-10 01:43 骏马金龙 阅读(59976) 评论(17) 推荐(35) 编辑
摘要:引自我在知乎上的回答: "进程 线程 协程 例程 过程 的区别是什么? 骏马金龙的回答 知乎" 首先解释下程序、进程、上下文切换和线程。然后再解释协程、例程、过程。 程序 程序 :源代码堆起来的东西。相当于一个一动不动没有生命的机器人。 虽然是没有生命的机器人,但是它被设计后就表示有了硬件,它的硬件 阅读全文
posted @ 2019-05-02 17:02 骏马金龙 阅读(4215) 评论(0) 推荐(4) 编辑
摘要:在Linux系统下,有七类文件类型: 普通文件( ) 目录(d) 软链接(字符链接L) 套接字文件(S) 字符设备(S) 块设备(B) 管道文件(命名管道P) 普通文件、目录、软链接无需多解释。 管道文件 管道分为 匿名管道和命名管道 。管道都是一端写入、另一端读取,它们是单方向数据传输的,它们的数 阅读全文
posted @ 2019-02-25 14:14 骏马金龙 阅读(8855) 评论(0) 推荐(5) 编辑
摘要:格式说明 1. json文件由对象(集合)、数组、key/value元素组成,可以相互嵌套。 2. 使用大括号包围的是对象,使用中括号包围的是数组,冒号分隔的是元素。 3. 元素的key只能是字符串。 4. 元素的value数据类型可以是: number:整数和浮点数都属于number类型,可以是正 阅读全文
posted @ 2018-12-06 17:37 骏马金龙 阅读(3963) 评论(0) 推荐(1) 编辑
摘要:csv文件应用很广泛,历史也很悠久。有很多种类型的csv格式,常用的是rfc 4180定义的格式。 csv文件包含一行或多行记录,每行记录中包含一个或多个字段。记录与记录之间使用换行符分隔,最后一个记录可以没有换行符。 空白不会分隔字段。例如下面有3个字段,第一个字段是"abc def"。 空行被忽 阅读全文
posted @ 2018-12-02 18:49 骏马金龙 阅读(3384) 评论(0) 推荐(0) 编辑
摘要:Form的enctype属性 一般都使用html的Form表单通过HTTP POST方法发送Request body。下面是一个form: 如果使用GET方法,input中的key/vaule会编码后放进URL的query部分发送出去。如果使用POST方法,input中的key/value会编码后放 阅读全文
posted @ 2018-11-26 18:09 骏马金龙 阅读(507) 评论(0) 推荐(0) 编辑
摘要:按值传递还是指针传递? 变量赋值有两种方式:按值传递、按"指针"传递(指针也常称为"引用")。不同的编程语言赋值的方式不一样,例如Python是按"指针"传递的,Go是按值传递的。 注意,"指针"加了引号,因为它不是真正的按指针拷贝,见下文分析。 参数传值其实也是变量赋值的过程,只不过参数是函数的本 阅读全文
posted @ 2018-11-08 12:57 骏马金龙 阅读(1545) 评论(0) 推荐(5) 编辑
摘要:把以前一直只限于知道,却不清晰理解的这几个概念完完整整地梳理了一番。内容参考自wiki页面,然后加上自己一些理解。 词法作用域和动态作用域 不管什么语言,我们总要学习作用域(或生命周期)的概念,比如常见的称呼:全局变量、包变量、模块变量、本地变量、局部变量等等。不管如何称呼这些作用域的范围,实现它们 阅读全文
posted @ 2018-10-01 22:20 骏马金龙 阅读(5575) 评论(7) 推荐(12) 编辑
摘要:1.基础 在引入IO模型前,先对io等待时某一段数据的"经历"做一番解释。如图: 当某个程序或已存在的进程/线程(后文将不加区分的只认为是进程)需要某段数据时,它只能在用户空间中属于它自己的内存中访问、修改,这段内存暂且称之为app buffer。假设需要的数据在磁盘上,那么进程首先得发起相关系统调 阅读全文
posted @ 2017-10-03 22:41 骏马金龙 阅读(12021) 评论(15) 推荐(36) 编辑
摘要:本文主要说明的是TCP连接过程中,各个阶段对套接字的操作,希望能对没有网络编程基础的人理解套接字是什么、扮演的角色有所帮助。如发现错误,敬请指出 背景 1.TCP协议栈维护着两个socket缓冲区:send buffer和recv buffer。 要通过TCP连接发送出去的数据都先拷贝到send b 阅读全文
posted @ 2017-10-03 09:11 骏马金龙 阅读(44645) 评论(11) 推荐(47) 编辑
摘要:1.1 背景说明:网络数据传输的全过程 在每一次网络io过程,数据都要经过几个缓存,再发送出去。如下图: 以右侧为浏览器,左侧为httpd服务器为例。 需要注意,对于httpd端来说,如果网速很慢,而httpd子进程/线程需要响应出去的数据又足够大(比send buffer还大),很可能会导致soc 阅读全文
posted @ 2017-09-30 18:50 骏马金龙 阅读(21265) 评论(8) 推荐(25) 编辑