• 等级
  • 590360 访问
  • 294 原创
  • 13 转发
  • 4698 排名
  • 84 评论
  • 128 获赞

TCMalloc : Thread-Caching Malloc 论文翻译

TCMallocMotivationOverviewSmallObjectAllocationLargeObjectAllocationSpansDeallocation(释放)CentralFreeListsforSmallObjectsGarbageCollectionofThreadCaches本文主要是对于TCMalloc内存分配论文的学习,英文论文Thre...

2019-02-01 22:31:12

Golang-Scheduler原理解析

本文主要分析Golang里面对于协程的调度原理,本文与Golang的memoryallocation、channel、garbagecollection这三个主题是紧密相关的,本文scheduler作为系列的第一篇文章。文章大体上的思路是这样的:section1:主要图示和文字介绍scheduler的原理;section2:从源码和模型的角度介绍scheduler原理;section...

2019-01-16 23:35:47

GC reference count algorithm

本文主要介绍GC的引用计数算法,包括引用计数算法过程、优缺点、以及优化过程。GCreferencecountalgorithm1.引用计数算法1.1计数器的增减new_obj()函数update_ptr()函数2.引用计数算法的优缺点3.引用计数的优化3.1延迟引用计数法3.2Sticky引用计数法3.3一位引用计数法3.4部分标记-清除算法1.引用计数算法核...

2019-01-13 21:51:32

GC Mark-Sweep Algorithm

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

2019-01-13 20:47:41

Garbage Collection基础知识

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

2019-01-13 14:52:05

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

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

2019-01-06 15:10:00

Golang-Channel原理解析

本文主要分析golang实现并发基础组件channel的实现原理;主要内容分为几个部分Section1:channel使用实例分析Section2:源码分析Section源码分析channel接收数据所有执行chan<ep接收channel数据的代码,最后都会调用到chan.go里面的chanrecv函数。...

2019-01-06 00:21:35

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

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

2018-12-18 19:17:58

C++成员初始化列表

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

2018-12-16 14:20:38

C++11 智能指针

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

2018-12-15 18:16:21

C++ inline函数

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

2018-12-10 15:53:45

C++中const关键字修饰

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

2018-12-10 13:31:04

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

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

2018-12-09 17:46:28

C++函数传值方式

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

2018-12-09 17:03:11

Golang-bootstrap分析

这篇博客主要分析golang程序的引导程序启动流程。1.环境要分析runtime相关内部机制,首先从系统启动开始。首先准备分析环境:golang、OS、gdb2.引导程序宏观流程在go代码里面,用户逻辑从main.main()开始,那么runtime如何启动?怎么初始化?初始化做了哪些工作呢?这里我们从函数运行的起点开始分析。我们先编写一个最简单的go代码:packagem...

2018-12-09 01:49:40

Goland底层原理主题分析绪论

本文主要描述Golang底层的一些原理与机制,包括4个主题1)Golang的memorymanagerandallocation2)Golang的goroutinescheduler原理3)Golang的channel实现goroutineconcurrent原理4)Golang的garbagecollection原理这篇博客只是一个绪论,只是简单总结一下以上各个主题的主要...

2018-11-15 14:55:01

TCP-拥塞控制

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

2018-09-01 16:03:21

TCP-超时与重传

主要内容:超时与重传简单实例设置超时重传方法基于计时器重传快速重传带选择确认的重传伪超时与重传包失序与包重复目的度量重新组包与TCP重传相关的攻击...

2018-09-01 16:03:12

TCP-数据流与窗口管理

前面两篇文章介绍了TCP的连接与断开;TCP利用丢失数据的重传来保障传输的可靠性。下面主要讨论动态数据传输。后面还会讨论TCP的流量控制机制,通过动态调节窗口大小来控制发送端操作确保接收端不会溢出,该思路也可以应用于其余实际问题。交互式通信延时确认Nagle算法流量控制与窗口管理4.流量控制与窗口管理前面已经多次提到,TCP采用可变滑动窗口来实现流...

2018-08-31 23:30:31

TCP-保活机制

保活机制:

2018-08-31 23:30:03

惜暮

博客中所有代码都可以在GitHub上面找到: GitHub地址:https://github.com/leetcode-hust/leetcode
关注
  • 计算机软件/攻城狮
  • 中国 湖北省 武汉市
奖章
  • 专栏达人
  • 持之以恒