Hi! Here is MelonTe.|

MelonTe

园龄:4个月粉丝:3关注:0

Go实现动态开点线段树
摘要: 1、线段树介绍 线段树是一种用于高效处理区间查询和区间更新的数据结构,当我们需要解决一个频繁更新区间值的问题的时候,就可以采用线段树的结构进行解决。线段树的核心思想是将区间分为多个子区间进行管理,越往下区间范围越小,根节点表示整个线段树能表示的区间。 本文记录使用Go实现动态开点线段树的方式,该模板
110
0
2
使用Go复刻skiplist核心功能
摘要: 0、引言 正好做LC每日一题要求实现一个跳表,于是学习了redis的扩展skiplist,并使用Go进行复刻学习。学习参考了文章:Redis内部数据结构详解(6)——skiplist - 铁蕾的个人博客 因为作者能力有限,本文只是对跳表的核心功能:创建节点与跳表、插入节点、删除节点、获取节点rank
96
0
2
Golang的Channel机制源码学习
摘要: 1、核心数据结构 1.1、hchan type hchan struct { qcount uint // total data in the queue dataqsiz uint // size of the circular queue buf unsafe.Pointer // points
15
0
0
Golang逃逸现象
摘要: 1、什么是内联函数?什么是逃逸现象? 什么是内联函数? 内联函数是一种在编译时,直接将要调用的代码嵌入到调用处的优化技术,其主要目的是减少函数调用时的开销,例如对于普通函数其执行过程如下: 将参数压入栈中 根据地址跳转至对应位置执行 执行完毕后返回调用点 而使用内联函数则将函数的代码嵌入到调用点,从
43
0
0
Golang内存模型与源码解析
摘要: 0、引言 本篇笔记用于记录作者在学习Golang的GC模型之前,对Golang内存模型的学习。目前使用的Go版本为1.22.4 1、Golang内存管理宏观结构 假设我们每次向内存池申请空间时,都需要频繁地向操作系统发出请求,这不仅会增加内存分配的时间,还可能引入竞争和锁的开销,从而导致性能瓶颈。尤
130
0
0
Golang网络模型netpoll源码解析
摘要: 0、引言 在学习完了Socket编程的基础知识、Linux系统提供的I/O多路复用的实现以及Golang的GMP调度模型之后,我们进而学习Golang的网络模型——netpoll。本文将从为什么需要使用netpoll模型,以及netpoll的具体流程实现两个主要角度来展开学习。当前使用的Go的版本为
337
2
0
Golang的GMP调度模型与源码解析
摘要: 0、引言 我们知道,这当代操作系统中,多线程和多进程模型被广泛的使用以提高系统的并发效率。随着互联网不断的发展,面对如今的高并发场景,为每个任务都创建一个线程是不现实的,使用线程则需要系统不断的在用户态和内核态之间不断的切换,引起不必要的损耗,于是引入了协程。协程存在于用户空间,是一种轻量级的并发执
405
0
0
高性能的Reactor和Proactor模式学习
摘要: 0、引言 在上一篇的笔记中,我们学习了操作系统提供的高效I/O管理技术,主要用于解决服务器在高并发场景下的资源浪费和瓶颈问题。但是在实际的代码编写中,要是我们都全部调用底层的I/O多路复用接口来编写网络程序这种面向过程的方式,必然会导致开发的效率不高。于是在这一章节,我们来学习两个重要的Reacto
66
0
0
docker实现redis集群
摘要: 1.主从模式(Master-Slave) 1.1主从复制原理 主从复制是redis的一种基本的集群方式,它通过将一个Redis节点(主节点)的数据复制到一个或多个其他Redis节点来实现数据的冗余和备份 主节点负责处理客户端的写操作,同时从节点回自动同步主节点的数据。客户端可以从从节点读取数据,实现
30
0
0
Socket编程与IO多路复用
摘要: 0、引言 本篇博客将从socket模型为起点,引入IO多路复用的学习。 1、Socket模型 1.1、Socket的诞生 Socket的诞生背景: Socket最早出现在20实际80年代的Unix操作系统中,当时计算机和网络技术逐步发展,分布式计算开始流行,操作系统需要提供一种标准化的网络通信方式来
122
0
1
点击右上角即可分享
微信分享提示
深色
回顶
收起