努力奔跑中的coder

源代码的github地址:https://github.com/louyuting

【树结构】Trie字典树

字典树概念使用场景:实现1. 数据模型2. 添加字符串3. 删除操作4. 获取单词频率5. 测试 概念 Trie树的名字有很多,比如字典树,前缀树等等。 下面我们有and,as,at,cn,com这些关键词,那么如何构建trie树呢? 从上面的图中,我们或多或少的可以发现一些好玩的特性。 第...

2019-03-26 00:06:54

阅读数 26

评论数 0

【树结构】平衡二叉树

平衡二叉树平衡二叉树定义数据模型定义(go):旋转1. 左左情况(左子树的左边节点)2.右右情况(右子树的右边节点)3. 左右情况(左子树的右边节点)3. 右左情况(右子树的左边节点)新增节点删除节点 平衡二叉树定义 前面我们说过,二叉查找树不是严格的O(logN),导致了在真实场景中没有用武之地...

2019-03-25 22:47:23

阅读数 19

评论数 0

golang syscall原理

Golang System call1.入口2.系统调用管理3.runtime 中的 SYSCALL4.用户代码的系统调用和调度交互entersyscall和exitsyscall的pipelineentersyscallexitsyscallentersyscallblock5. 总结 这篇文章...

2019-03-07 16:44:50

阅读数 234

评论数 0

TCMalloc : Thread-Caching Malloc 论文翻译

TCMallocMotivationOverviewSmall Object AllocationLarge Object AllocationSpansDeallocation(释放)Central Free Lists for Small ObjectsGarbage Collection o...

2019-02-01 22:31:12

阅读数 62

评论数 0

Golang-Scheduler原理解析

本文主要分析Golang里面对于协程的调度原理,本文与Golang的memory allocation、channel、garbage collection这三个主题是紧密相关的,本文scheduler作为系列的第一篇文章。 文章大体上的思路是这样的: section1:主要图示和文字介绍sche...

2019-01-16 23:35:47

阅读数 3350

评论数 4

GC reference count algorithm

本文主要介绍GC的引用计数算法,包括引用计数算法过程、优缺点、以及优化过程。 GC reference count algorithm1.引用计数算法1.1 计数器的增减new_obj() 函数update_ptr() 函数2.引用计数算法的优缺点3. 引用计数的优化3.1 延迟引用计数法3....

2019-01-13 21:51:32

阅读数 37

评论数 0

GC Mark-Sweep Algorithm

本文主要介绍标准的标记-清除算法的过程,优缺点,以及做的一些优化过程。 GC Mark-Sweep Algorithm1.GC标记清除算法1.1 标记阶段1.2 标记阶段算法1.3 清除阶段算法1.4 已回收空闲内存空间再分配1.5 合并(内存碎片整理)2.GC标记清除算法的优缺点3. GC标...

2019-01-13 20:47:41

阅读数 78

评论数 0

Garbage Collection基础知识

在学习Garbage Collection算法之前,我们需要了解一些Garbage Collection相关的基础知识,比如对象、头、域、指针、堆等等。

2019-01-13 14:52:05

阅读数 53

评论数 0

Golang-gopark函数和goready函数原理分析

Golang-gopark函数和goready函数原理分析gopark函数goready函数 前面介绍的scheduler和channel里面都与gopark和goready这两个函数紧密相关,但是站在上层可以理解这两个函数的作用,但是出于对源码探索,我们要明白这两个函数不仅仅做了啥,还要知道怎...

2019-01-06 15:10:00

阅读数 404

评论数 0

Golang-Channel原理解析

本文主要分析golang实现并发基础组件channel的实现原理; 主要内容分为几个部分 Section1:channel使用实例分析 Section2:源码分析 Section 源码分析 channel接收数据 所有执行 chan &am...

2019-01-06 00:21:35

阅读数 201

评论数 0

C++ explicit关键字:禁止隐式转换

explicit关键字是用来防止由构造函数定义的隐式转换。 要明白这个关键字的含义,首先我们要知道class类型的对象的隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。 比如: class SomeBody{ public: SomeBody(const s...

2018-12-18 19:17:58

阅读数 66

评论数 0

C++成员初始化列表

C++类成员初始化列表C++类型定义C++构造函数的初始化列表定义C++构造函数执行的两个阶段为什么使用初始化列表C++里面哪些东西必须放在初始化列表里面成员变量的初始化顺序 这边文章主要学习C++里面的成员初始化列表。然后分析为什么需要成员初始化列表,C++构造器调用机制与Java区别。 C...

2018-12-16 14:20:38

阅读数 88

评论数 0

C++11 智能指针

本文主要讲解C++11中的智能指针 主要内容: 原始指针使用有什么缺点(主要是资源释放、证明周期、挂起引用) C++98里面的auto_ptr有什么缺点(所有权转移问题、不能指向数组、不能与容器组合使用) C++11提出的更加智能指针: shared_ptr、weak_ptr、unique_...

2018-12-15 18:16:21

阅读数 61

评论数 0

C++ inline函数

1.C++引用inline原因 在我们的系统中可能经常会有一些场景:for循环调用一个工具处理函数或则是递归调用一些算法。我们知道调用一个任意函数都会为这个函数创建栈空间,如果频繁的调用小函数会消耗大量的栈空间,对内存造成很大的压力,甚至会导致内存枯竭。C++为了解决这个问题也就创造了内联函数,也...

2018-12-10 15:53:45

阅读数 89

评论数 0

C++中const关键字修饰

C++中const使用的地方非常多,修饰包括:全局变量、函数、函数参数等等,这篇文章主要是总结一下const各种使用的规则以及需要注意事项。

2018-12-10 13:31:04

阅读数 54

评论数 0

C++局部变量、全局变量的作用域及范围&动态内存管理

本文主要介绍C++中的局部变量、全局变量、以及动态内存管理的变量。本文不涉及静态变量static,所以描述的观点不包括static变量。 局部变量和全局变量 局部变量一般指函数内部的局部变量,这部分的变量保存在栈里面,当函数调用结束,这些局部变量就会被自动释放。可以说这部分变量是系统自动管理的...

2018-12-09 17:46:28

阅读数 172

评论数 0

C++函数传值方式

本文主要分析C++里面两大类函数传参方式:传值和传址(传引用和传指针) 1.传值 我们知道当我们调用一个函数时,OS会在内存中为这个函数建立起一块程序栈帧,这个栈帧提供了函数参数的存储空间。 对于传值这种方式,实际上是将函数参数进行了一次copy,传递到函数的实际上是变量的一个副本。在函数内部...

2018-12-09 17:03:11

阅读数 75

评论数 0

Golang-bootstrap分析

这篇博客主要分析golang程序的引导程序启动流程。 1. 环境 要分析runtime相关内部机制,首先从系统启动开始。首先准备分析环境:golang、OS、gdb 2. 引导程序宏观流程 在go代码里面,用户逻辑从main.main()开始,那么runtime如何启动?怎么初始化?初始化做...

2018-12-09 01:49:40

阅读数 226

评论数 0

Goland底层原理主题分析绪论

本文主要描述Golang底层的一些原理与机制,包括4个主题 1)Golang的memory manager and allocation 2)Golang的goroutine scheduler原理 3)Golang的channel实现goroutine concurrent原理 4)Golang...

2018-11-15 14:55:01

阅读数 150

评论数 2

TCP-拥塞控制

本文主要讨论TCP实现拥塞控制的方法,这也是批量数据传输中最重要的。

2018-09-01 16:03:21

阅读数 208

评论数 0

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