进击的小学生

To be or not to be, this is a question.

000-EMC 深入解读-目录

除了刚毕业的应届生,从来没人敢说他精通 C++,Bjarne Stroustrup (C++ 之父)也不敢说。 所以,放弃学习 C++,早日成佛吧。 哈,开个玩笑,即便 C++ 虐你千百遍,你还待它如初恋不是?所以你买了很多 C++ 相关的书籍,什么 《C++ primer》、《STL 标准模...

2018-09-15 20:43:27

阅读数 492

评论数 0

0- Golang 修炼指南

本系列是我的学习笔记,希望大家一起学习,一起进步。如果有错误的地方,及时评论 ^_^. 也可以加群讨论:610441700 贡献者:@JovanyWong 一、快速入门 001 安装 go &...

2018-02-08 10:05:06

阅读数 1522

评论数 2

0-Linux 网络编程修炼指南——内功心法

学习交流群: Linux 学习交流群 610441700 说明:本系列文章并不能取代 《UNP》这本旷世之作,文章中难免有错误与不足之处,希望读者们遇到有疑问的地方可以加群互相交流,共同进步。写这一系列文章的目的有三个:一是为了提升自己对 linux 的理解,二是锻炼自己能够...

2017-04-04 17:09:48

阅读数 12261

评论数 50

0-linux 环境编程修炼指南——外功心法

学习交流群: Linux 环境编程 610441700 说明:本系列文章并不能取代 《APUE》这本旷世之作,文章中难免有错误与不足之处,希望读者们遇到有疑问的地方可以加群互相交流,共同进步。写这一系列文章的目的有三个:一是为了提升自己对 Linux 的理解,二是锻炼自己能够...

2016-10-09 20:26:21

阅读数 19259

评论数 14

操作系统修炼指南——保护模式

环境搭建 000 实验环境搭建 保护模式 001 保护模式 002 段寄存器 003 段选择子与段描述符结构 004 段描述符属性分析 005 特权级 006 数据段权限检查 007 代码段权限检查与 jmp 008 跨段提权与调用门 009 ...

2016-09-14 15:45:01

阅读数 5862

评论数 5

数据结构与算法学习库——DSA

介绍 不少在校学生在学习数据结构与算法时痛苦不堪,很多数据结构写起来验证也很困难。如果有一个库,能帮助大家解决构建数据结构的困难,以快速验证自己的想法,那多好啊。 DSA(Data struct & Algorithm) 就是这样的一个工具。 示例 我们来看一个示例。 #inclu...

2019-05-01 22:41:17

阅读数 699

评论数 2

实战:C语言实现用户态线程

0. 前言 一直以来,我们学习线程切换与调度,都是通过阅读操作系统书籍或 Linux 源码甚至反汇编 Window 内核代码。无论怎样,这些东西都很抽象,学习起来十分困难。另外,随着现代化编程语言逐渐流行,C++20 的正式发布,都离不开用户态线程这些基础知识。再比如 Golang 的 Gorou...

2019-04-22 20:38:09

阅读数 2108

评论数 2

二叉树旋转

本文我们来学习二叉树的另一种操作——旋转。掌握了这个神技,你将会在平衡树的道路上所向披靡。 1. 什么是旋转 二叉树节点旋转一共有两种操作:左旋和右旋。 如图 1 所示,左边的二叉树通过左旋得到右边的二叉树;反之右旋同理。(a, b, c 表示子树,而不是单独表示一个节点) 图1 左旋和右旋 ...

2019-03-03 20:15:27

阅读数 370

评论数 0

二叉搜索树

红黑树不仅是二叉树,也是二叉搜索树。如果你想学习红黑树,却不了解二叉搜索树的性质,这就是典型的爬还没学会就想学走。所以本文就来讨论二叉搜索树的一点简单的性质以及操作。 在此之前,你需要下载这份代码(C++),并对照实现:https://github.com/ivanallen/dsa 1. 性质 ...

2019-03-02 00:12:30

阅读数 224

评论数 1

085-包的匿名导入(Blank Import)

转眼间,Golang 的博客从春天写到了冬天,现在我们又回到了原点,不忘初心。那时候我们为了匆匆进入 Golang 的世界,几笔掠过了 Golang 项目结构的相关知识,也粗略的介绍了 Golang 的包相关的概念——《go 项目结构》。我们依靠这点知识,撑到了现在。如今,是时候再为你扩展一些关于...

2018-10-20 12:30:07

阅读数 329

评论数 0

084-反射(通过 reflect.Value 修改值)

前面我们学习了一些关于反射的用法,比如: x := 2 // 拿到 x 的 Value 对象 a := reflect.ValueOf(x) 我们可以通过 a 来得知 x 的具体值是多少,那有没有办法通过 a 来修改 x 的值呢?在上面这个例子中,是不行的。 1. 可修改性 或者说叫可设置性。 ...

2018-10-14 13:17:13

阅读数 350

评论数 0

083-反射(序列化 json)

想必你已经掌握了反射的相关操作,也能够遍历结构体的字段和方法,现在我们就要进入实战了。 1. 问题 正如标题所指,我们的目标是能将任意类型的结构体序列化成 json. 对应的 golang 的encoding/jsong 包就是 Marshal 函数, C++ 的 jsoncpp 库来说就是 wr...

2018-10-14 12:22:43

阅读数 453

评论数 0

003-EMC 深入解读-理解模板型别推导(三)

上一篇文章我们介绍了 ParamType 是引用或指针的情况,这一节继续第二条规则,也是最复杂的规则。 ParamType 是引用或指针,但不是通用引用 ParamType 是通用引用 ParamType 既非指针也非引用 1. ParamType 是通用引用 首先你得明白,何为通用引用(Un...

2018-09-30 18:15:29

阅读数 152

评论数 0

002-EMC 深入解读-理解模板型别推导(二)

接下来,从三种不同的情况来讨论函数模板推导规则: ParamType 是引用或指针,但不是通用引用 ParamType 是通用引用 ParamType 既非指针也非引用 1. ParamType 是引用或指针,但不是通用引用 template<typ...

2018-09-17 10:32:28

阅读数 188

评论数 0

001-EMC 深入解读-理解模板型别推导(一)

EMC 第一章条款一,一上来就出个王炸——有关于函数模板的推导规则。 1. 问题 似乎你在使用的时候并未关注过这些事情,因为一切看起来相当自然,你也用的很爽。比如: template <typename T&a...

2018-09-17 10:31:33

阅读数 246

评论数 0

082-反射(结构体字段遍历)

如何知道一个未知结构体包含哪些字段呢?利用反射,可以很容易做到。 1. 遍历结构体的 field 和 method 还记得 reflect.Type 接口吧,这个接口还包含这 4 个方法: type interface Type { ... NumField() int ...

2018-09-15 13:41:36

阅读数 657

评论数 0

081-反射(Kind)

希望你还能记得反射中的 Type 和 Value 这两个类型。Type 是接口类型,Value 是 Struct 类型;Type 是类型描述,而 Value 是具体的值。 这次,我们来看一下 Golang 反射中的另一个重要概念 —— Kind. 1. Kind 定义 A Kind...

2018-09-08 22:11:17

阅读数 178

评论数 0

080-反射(介绍)

接触过 Java 的同学对反射的概念一定不陌生。不过这里大多数同学没接触过 Java,也不用担心。 反射是一种能让程序自身去检查和操作变量的一种能力,即使不知道变量的类型也没有关系。 在 C++ 里,如果你不知道一个 class 的定义,你就没有办法去调用这个 class 的任何方法,操作这个...

2018-08-26 17:08:28

阅读数 125

评论数 0

079-竞争检测

大多数时候,我们对并发的直觉都是错误的,特别是在多核处理器上更为明显。这也是高并发程序难写的原因。 人类想了种种办法来降低程序员犯错误的机率,发明了很多方法。甚至在有些语言里,干脆就不支持多线程了,比如基于 NodeJs 开发的服务器。 但在 Golang 里我们无法逃避这种并发竞争。 ...

2018-08-25 20:26:25

阅读数 160

评论数 0

078-只被执行一次的函数

倘若你看过我的所有文章的话,你肯定还记得曾经在学习《Linux 环境编程》的时候,也有一篇类似的文章,标题和这个一模一样——《只被执行一次的函数》。 我强烈建议你回顾一下上面那篇文章。如果你没有《Linux 环境编程》的基础,强烈建议你补习一下,只会 Golang 是不行的。 1. 背景 ...

2018-08-24 23:32:20

阅读数 261

评论数 0

提示
确定要删除当前文章?
取消 删除