发自肺腑深入肌肤 —— 一位武汉老程序员的自白
我是一个对技术没有很大热情的程序员。即使在项目忙的时候我也不会加班很长时间,因为我觉得我的身体坐了一天了,它予我以生存,我必须善待它,但步行3公里回去吃完饭我还是会在各论坛上看看解决问题的最好办法
《快学 Go 语言》第 8 课 —— 程序大厦是如何构建起来的
本节我们要开讲 Go 语言在数据结构上最重要的概念 —— 结构体。如果说 Go 语言的基础类型是原子,那么结构体就是分子。分子是原子的组合,让形式有限的基础类型变化出丰富多样的形态结构。结构体里面装的是基础类型、切片、字典、数组以及其它类型的结构体等等。
《快学 Go 语言》第 7 课 —— 诱人的烤串
字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言里的字符串是「字节」串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快速定位出一个完整的字符来,而必须通过遍历的方式来逐个获取单个字符。
《快学 Go 语言》第 7 课 —— 冰糖葫芦串
字符串通常有两种设计,一种是「字符」串,一种是「字节」串。「字符」串中的每个字都是定长的,而「字节」串中每个字是不定长的。Go 语言里的字符串是「字节」串,英文字符占用 1 个字节,非英文字符占多个字节。这意味着无法通过位置来快速定位出一个完整的字符来,而必须通过遍历的方式来逐个获取单个字符。
Go 语言切片的三种特殊状态 —— 90% 的开发者都忽视了
我们今天要来讲一个非常细节的小知识,这个知识被大多数 Go 语言的开发者无视了,它就是切片的三种特殊状态 —— 「零切片」、「空切片」和「nil 切片」。
《快学 Go 语言》第 5 课 —— 神奇的切片
切片无疑是 Go 语言中最重要的数据结构,也是最有趣的数据结构,它的英文词汇叫 slice。所有的 Go 语言开发者都津津乐道地谈论切片的内部机制,它也是 Go 语言技能面试中面试官最爱问的知识点之一。初级用户很容易滥用它,这小小的切片想要彻底的理解它是需要花费一番功夫的。在使用切片之前,我觉得很有必要将切片的内部结构做一下说明。
《快学 Go 语言》第 4 课 —— 低调的数组
只要掌握了数据结构中的四大法宝,就可以包打天下,他们是:array 、linked list 、hash table、binary tree 。这四大法宝可不是各自为战的,灵活结合才能游刃有余。比如,一个用 hash table 组织的 symbol table,其中个个都是由字符型 array 构成的 linked list 组成的。 --- Go 语言之父 Rob Pike
《快学 Go 语言》第 3 课 —— 分支与循环
上面这个等式每一个初学编程的同学都从老师那里听说过。它并不是什么严格的数据公式,它只是对一般程序的简单认知。数据结构是内存数据关系的静态表示,算法是数据结构从一个状态变化到另一个状态需要执行的机器指令序列。数据结构是静态的,算法是动态的。数据结构是状态,算法是状态的变化。
《快学 Go 语言》第 2 课 —— 变量什么的最讨厌了
任何一门语言里面最基础的莫过于变量了。如果把内存比喻成一格一格整齐排列的储物箱,那么变量就是每个储物箱的标识,我们通过变量来访问计算机内存。没有变量的程序对于人类来说是可怕的,需要我们用数字位置来定位内存的格子,人类极不擅长这样的事。这就好比一岁半左右的幼儿还没有学会很多名词,只能用手来对物体指指点点来表达自己的喜好。变量让程序逻辑有了丰富的表达形式。
《快学 Go 语言》第 1 课 —— Hello World
最初 Go 语言的 Logo 是一只可爱的土拨鼠,土拨鼠昼伏夜出的习性让它显得很有 Geek 范。土拨鼠的行动其实并不敏捷,不过它繁殖能力很强,生长发育的很快。
短小精悍之 Redis 命令行工具有趣的罕见用法
我们天天都在使用 Redis 内置的命令行工具 redis-cli,久而久之以为它就是一个简单的交互式 Redis 数据结构手工操作程序,但是它背后强大的功能绝大多数同学可能闻所未闻。本节我们一起来挖掘这些鲜为人知的有趣用法。
不安分的 Go 语言开始入侵 Web 前端领域了
从 Go 语言诞生以来,它就开始不断侵蚀 Java 、C、C++ 语言的领地。今年下半年 Go 语言发布了 1.11 版本,引入了 WebAssembly 技术,浏览器端 Javascript 的垄断地位也开始遭遇 Go 语言的攻击。这次不同以往,它意味着 Go 语言从后端渗透进了前端,进入了一个全新的世界。
开源搜索技术的核心引擎 —— Lucene
ES 很了不起,需要使用搜索技术的互联网公司大半都在使用他,但是它的核心引擎却是另一个开源框架 —— Lucene。ES 只是在 Lucene 的基础上穿了一件华丽的外衣,没有 ES 还会有其它产品来包装 Lucene,比如另一个仅次于 ES 的流行搜索系统 Solr,但是如果没有 Lucene,那 ES 可能就不会存在。这就好比 TiDB 也并不是百分百的中国人自己的存储系统,它的内部存储引擎是 RocksDB,来源于 Facebook,TiDB 也只是在它的基础上穿上的一件华丽的外衣。
让我来告诉你为什么做女程序媛很好
讲真,当我决定做女程序媛时,我根本不知道自己在干嘛。我一行代码都没写过,也没有丝毫的技术背景。我在二级学院上的大学,专业是语言(不是计算机语言^_^)相关的。我身边的朋友们的职业也是五花八门,她们中的大部分不是去搞法律,就是去当老师,还有的去了幼儿园上班。当我告诉她们我要朝技术方向走时,她们都一起来笑话我。
面试题:如何理解 Linux 的零拷贝技术?
本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较大的帮助。
MongoDB 存储引擎与内部原理
mongodb 3.0默认存储引擎为MMAPV1,还有一个新引擎wiredTiger可选,或许可以提高一定的性能。
时序数据库的秘密 —— 快速检索
Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特别是它对多条件的过滤支持非常好,比如年龄在 18 和 30 之间,性别为女性这样的组合查询。倒排索引很多地方都有介绍,但是其比关系型数据库的 b-tree 索引快在哪里?到底为什么快呢?
同义词搜索是如何做到的?
前面几个章节我们使用到了 Lucene 的中文分词器 HanLPAnalyzer,它并不是 Lucene 自带的中文分词器。Lucene 确实自带了一些中文分词器,但是效果比较弱,在生产实践中多用第三方中文分词器。分词的效果直接影响到搜索的效果,比如默认的 HanLPAnalyser 对「北京大学」这个短语的处理是当成完整的一个词,
面试题:请解释一下什么是虚拟内存?
内存对于用户来说就是一个字节数组,我们可以根据地址来访问到某个字节或者某些字节: