erpeng's code area


  • Home

  • Tags

  • Archives

Go语言反射

Posted on 2022-04-29 |
Go语言版本 入口reflect.TypeOf和reflect.ValueOf两个函数会分别返回Type和Value两个结构,顾名思义,分别代表一个Go数据的类型和值。通过查看Type和Value的方法可以得出反射可以实现的功能。 12345type Value struct { ty ...
Read more »

Go语言内存管理-内存释放

Posted on 2022-03-28 |
内存管理中涉及到内存释放的部分。文中使用Go版本为1.17.6 释放方法在《Go语言内存管理-底层视角》中提到,位于go/src/runtime/mgcscavenge.go中pageAlloc的方法scavengeRangeLocked会使用sysUnused将一段内存从ready状态转为pr ...
Read more »

Go语言内存管理-番外篇之算法分析

Posted on 2022-03-25 |
内存管理涉及到的算法,主要包括队列、各种位运算。文中使用Go版本为1.17.6 位运算使用位移操作,实现各类算法 2的幂次判断一个正整型数字,是否是2的幂次方,例如 1=>false,2=>true 1234func IsPowerOf2 (n uint) bool { r ...
Read more »

Go语言内存管理-顶层视角

Posted on 2022-03-24 |
内存管理涉及初始化、分配以及回收三个方面。文中使用Go版本为1.17.6 概览为减少分配时的竞争,go内存管理借鉴TCMALLOC的分级管理思想,每一个P(G-M-P,参考Go的调度管理)有自己的内存结构mcache,同一个P内的G分配内存时不需要加锁。当P内无内存可分配时,通过加锁,使用mce ...
Read more »

Go语言内存管理-底层视角

Posted on 2022-03-21 |
内存管理涉及初始化、分配以及回收三个方面。文中使用Go版本为1.17.6 系统调用GO使用mmap和munmap调用操作系统进行内存分配和释放。mmap和munmap原型如下: 123456#include <sys/mman.h>void *mmap(void *addr, siz ...
Read more »

raft笔记

Posted on 2022-01-12 |
raft论文笔记,备忘和参考.读取之前需要读一下链接中的论文 服务状态每个服务都会保存如下状态: CurrentTerm:当前的term值.如果接收到请求或者响应的term T > CurrentTerm,则变更CurrentTerm为T,并且变更角色为follower VotedFor ...
Read more »

如何写一篇技术文章

Posted on 2022-01-10 |
提炼一种能够写出通熟易懂技术文章的方法,以Go语言的网络轮询器netpoller的介绍为例 Morsing’s BlogThe Go NetpollerMorsing’ Blog中关于netpoller的文章在码农桃花源讲调度器以及Draven的<<Go语言设计与实现>> ...
Read more »

如何实现一个数据库

Posted on 2022-01-07 |
关于数据库大家都不陌生,例如关系型数据库Mysql,其InnoDB存储引擎以一颗B+树来组织数据;Key-Value存储Redis,数据放到内存中,以一个HashTable来组织数据,根据Value的数据类型,又会使用双向链表、SkipList等结构来组织Value数据;分布式数据库Etcd,需要 ...
Read more »

MQTT GO客户端实现

Posted on 2021-01-06 |
Introduction上一篇文章通过spec对mqtt有了基本了解,接着通过一个mqtt go客户端的代码,看看具体的工程实现细节.具体代码参考链接 代码概览首先看看代码结构: 123456789101112131415161718192021222324252627282930313233343 ...
Read more »

MQTT学习笔记

Posted on 2021-01-04 |
Introduction关键特性:bandwidth-efficient,lightweight,high latency networks因为这些特性,所以MQTT很适合物联网的环境,从技术角度来说,消息队列有很多,为何MQTT会有这些特性呢?进一步,如何设计一个协议能达到这些特性. 加密端口8 ...
Read more »
12…9>

87 posts
43 tags
GitHub
© 2022 erpeng
Powered by Hexo
|
Theme — NexT.Muse v5.1.4