您是弟弟
码龄3年
  • 19,635
    被访问
  • 33
    原创
  • 158,114
    排名
  • 19
    粉丝
  • 0
    铁粉
关注
提问 私信
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:河南省
  • 加入CSDN时间: 2020-02-01
博客简介:

wys74230859的博客

查看详细资料
  • 3
    领奖
    总分 344 当月 2
个人成就
  • 获得42次点赞
  • 内容获得26次评论
  • 获得69次收藏
创作历程
  • 3篇
    2022年
  • 28篇
    2021年
  • 4篇
    2020年
成就勋章
TA的专栏
  • Golang修养之路学习笔记/摘要
    1篇
  • 碎片笔记
    2篇
  • 碎片笔记/摘录/感想
  • 算法
    6篇
  • go底层系列-go专家编程笔记
    16篇
  • gin框架
    4篇
  • django框架
    3篇
兴趣领域 设置
  • 数据结构与算法
    数据结构
  • 大数据
    mysqlredis
  • 后端
    架构
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Golang中的内存管理

文章目录一、何为内存?二、内存为什么需要管理?三、操作系统是如何管理内存的?3.1 虚拟内存3.2 MMU内存管理单元3.2.1 虚拟内存本身怎么存放内存命中率CPU Cache举个例子程序的内存布局结论要搞明白 Go 语言的内存管理就必须先理解操作系统以及机器硬件是如何管理内存的因为 Go 语言的内部机制是建立在这个基础之上的它的设计本质上就是尽可能的会发挥操作系统层面的优势而避开导致低效情况一、何为内存?说到内存如果您没有任何的软件基础知识那么第一印象应该想到的
原创
发布博客 2022.01.02 ·
520 阅读 ·
1 点赞 ·
0 评论

Go语言内存模型及堆的分配管理(下)

Go内存管理文章目录Go内存管理原文Go内存管理的基本概念Go内存大小转换Go内存分配小对象的内存分配大对象的内存分配Go垃圾回收和内存释放Go的栈内存总结原文前文提到Go内存管理源自TCMalloc但它比TCMalloc还多了2件东西:逃逸分析垃圾回收这是2项提高生产力的绝佳武器这一大章节我们先介绍Go内存管理和Go内存分配最后涉及一点垃圾回收和内存释放Go内存管理的基本概念Go内存管理的许多概念在TCMalloc中已经有了含义是相同的只是名字有一些变化
转载
发布博客 2022.01.02 ·
90 阅读 ·
0 点赞 ·
0 评论

Go语言内存模型及堆的分配管理(上)

前言文章目录前言原文正文存储基础知识回顾存储金字塔虚拟内存栈和堆堆内存管理TCMalloc基本原理原文这篇文章主要介绍Go内存分配Go内存管理会轻微涉及内存申请和释放以及Go垃圾回收从非常宏观的角度看,Go的内存管理就是下图这个样子我们今天主要关注其中标红的部分Go这门语言抛弃了C/C++中的开发者管理内存的方式实现了主动申请与主动释放管理增加了逃逸分析和GC将开发者从内存管理中释放出来让开发者有更多的精力去关注软件设计而不是底层的内存问题
转载
发布博客 2022.01.02 ·
73 阅读 ·
0 点赞 ·
0 评论

力扣精选题——LRU缓存

题目介绍请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字 key 已经存在,则变更其数据值 value ;如果不存在,则向缓存中插入该组 key-value 。如果插入
原创
发布博客 2021.12.28 ·
229 阅读 ·
0 点赞 ·
0 评论

手撕十大排序算法②——思路讲解

分析十大排序算法思想核心
原创
发布博客 2021.12.27 ·
1204 阅读 ·
3 点赞 ·
2 评论

手撕十大排序算法①——思路讲解

十大排序算法思想剖析
原创
发布博客 2021.12.27 ·
519 阅读 ·
4 点赞 ·
0 评论

力扣精选题——单词拆分(dp+dfs+dfs(备忘录)+bfs+bfs(备忘录))

一道题通过动态规划,深搜,深搜+备忘录,广搜,广搜+备忘录五种方法来分析
原创
发布博客 2021.12.24 ·
280 阅读 ·
1 点赞 ·
0 评论

Go底层 - 反射与interface③

接口的构造过程是怎样的我们已经看过了 iface 和 eface 的源码知道 iface 最重要的是 itab 和 _type为了研究清楚接口是如何构造的接下来我会拿起汇编的武器还原背后的真相来看一个示例代码:package mainimport "fmt"type Person interface { growUp()}type Student struct { age int}func (p Student) growUp() { p.ag
原创
发布博客 2021.12.21 ·
29 阅读 ·
1 点赞 ·
0 评论

力扣精选题——翻转数位

这也是一道题解挺精彩的题题目链接public class FlipDigital { /* dp-易 https://leetcode-cn.com/problems/reverse-bits-lcci/ 给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。 */ // 测试 public static int reverseBits(int num) {
原创
发布博客 2021.12.21 ·
140 阅读 ·
0 点赞 ·
0 评论

Go底层 - 反射与interface②

深度解密Go语言之关于 interface 的 10 个问题(一)文章目录[深度解密Go语言之关于 interface 的 10 个问题(一)](https://mp.weixin.qq.com/s/EbxkBokYBajkCR-MazL0ZA)Go 语言与鸭子类型的关系值接收者和指针接收者的区别方法值接收者和指针接收者两者分别在何时使用iface 和 eface 的区别是什么接口的动态类型和动态值【引申1】接口类型和 `nil` 作比较【引申2】 来看一个例子,看一下它的输出:【引申3】如何打印出接口的
原创
发布博客 2021.12.20 ·
138 阅读 ·
1 点赞 ·
0 评论

力扣精选题——字符串转换整数(atoi)

这道题,官方解法是极为漂亮,很有助于开拓视野,理解互联网技术的本质。但是并不会一下子就让你醒悟,而是在以后的某一天,你会恍然大悟的想到今天这道题,心中不由感叹“原来如此!”题目链接一般解法class Func2 { public int myAtoi(String s) { int i = 0; int len = s.length(); int sign = 1; int res = 0; // 如果字符串前导
原创
发布博客 2021.12.20 ·
83 阅读 ·
1 点赞 ·
0 评论

Go底层 — 反射①

文章目录反射概念关于静态类型特殊的静态类型interface特殊的interface类型interface类型是如何表示的反射三定律反射第一定律:反射可以将interface类型变量转换成反射对象反射第二定律:反射可以将反射对象还原成interface对 象反射第三定律:反射对象可修改,value值必须是可设置的总结反射概念官方对此有个非常简明的介绍两句话耐人寻味:反射提供一种让程序检查自身结构的能力反射是困惑的源泉第1条,再精确点的描述是“反射是一种检查interface变量的底层类型
原创
发布博客 2021.12.19 ·
31 阅读 ·
0 点赞 ·
0 评论

go 并发控制(三)-Context实现原理

文章目录Context实现原理接口定义Deadline()Done()Err()Value()空ContextcancelCtxDone()接口实现Err()接口实现cancel()接口实现WithCancel()方法实现典型使用案例timerCTXDeadline() 接口实现cancel()接口实现WithDeadline()方法实现WithTimeout()方法实现典型使用案例valueCtxValue()接口实现WithValue()方法实现典型使用案例总结Context实现原理context
原创
发布博客 2021.12.14 ·
231 阅读 ·
0 点赞 ·
0 评论

go 并发控制(二)-WaitGroup

文章目录WaitGroup前言基础知识信号量WaitGroup数据结构Add(delta int)wait()Done()编程TipsWaitGroup前言WaitGroup是Golang应用开发过程中经常使用的并发控制技术WaitGroup可理解为Wait-Goroutine-Group即等待一组goroutine结束比如某个goroutine需要等待其他几个goroutine全部完成那么使用WaitGroup可以轻松实现下面程序展示了一个goroutine等待另外两个go
原创
发布博客 2021.12.14 ·
123 阅读 ·
0 点赞 ·
0 评论

go 并发控制(一)-channel

Channel文章目录ChannelChannel前言场景示例总结Channel前言channel一般用于协程之间的通信channel也可以用于并发控制比如主协程启动N个子协程主协程等待所有子协程退出后再继续后续流程这种场景下channel也可轻易实现场景示例下面程序展示一个使用channel控制子协程的例子:package mainimport ( "fmt" "time")func Process(ch chan int) { // Do some wor
原创
发布博客 2021.12.13 ·
90 阅读 ·
0 点赞 ·
0 评论

go语法糖

语法糖文章目录语法糖前言名字由来Go语言语法糖简短变量声明热身测验前言题目参考答案使用规则前言规则规则一:多变量赋值可能会重新声明规则二:不能用于函数外部变量作用域问题可变参函数前言函数特征使用举例不传值传递多个参数传递切片总结前言名字由来语法糖(Syntactic sugar)的概念是由英国计算机科学家 Peter J. Landin 提出的用于表示编程语言中的某种类型的语法这些语法不会影响功能但使用起来却很方便语法糖也称糖语法这些语法不仅不会影响功能编译后的结果跟不使用语
原创
发布博客 2021.12.13 ·
80 阅读 ·
0 点赞 ·
0 评论

go底层系列-mutex原理剖析

go底层系列-mutex原理剖析文章目录go底层系列-mutex原理剖析前言Mutex数据结构Mutex结构体Mutex方法加解锁过程简单加锁加锁被阻塞简单解锁解锁并唤醒协程自旋过程什么是自旋?自旋条件自旋的优势自旋的问题Mutex模式normal模式starvation模式woken状态为什么重复解锁要panic编程Tipsrwmutex前言读写锁数据结构类型定义接口定义Lock()实现逻辑Unlock()实现逻辑RLock()实现逻辑RUnlock()实现逻辑场景分析写操作是如何阻止写操作的写操作是如
原创
发布博客 2021.12.13 ·
241 阅读 ·
1 点赞 ·
0 评论

go底层系列-range原理剖析

range文章目录range前言热身实现原理range for slicerange for arrayrange for maprange for channel编程Tips总结前言range是Golang提供的一种迭代遍历手段可操作的类型有数组、切片、Map、channel等实际使用频率非常高热身func RangeSlice(slice []int) { for index, value := range slice { _, _ = index, value }
原创
发布博客 2021.12.12 ·
311 阅读 ·
1 点赞 ·
0 评论

go底层系列-select原理剖析

select文章目录select前言热身实现原理case数据结构select实现逻辑selectgo实现伪代码如下:总结前言select是Golang在语言层面提供的多路IO复用的机制可以检测多个channel是否ready(即是否可读或可写)使用起来非常方便热身// 下面的程序输出是什么?func main() { chan1 := make(chan int) chan2 := make(chan int) go func() { chan1 <- 1 time
原创
发布博客 2021.12.12 ·
228 阅读 ·
1 点赞 ·
0 评论

go底层系列-defer原理剖析

go底层系列-defer原理剖析目录go底层系列-defer原理剖析defer前言热身defer规则规则一:延迟函数的**参数在defer语句出现时就已经确定下来**了规则二:延迟函数执行按后进先出顺序执行,即**先出现的 defer最后执行**规则三:延迟函数可能操作主函数的具名返回值函数返回过程主函数拥有匿名返回值,返回字面值主函数拥有匿名返回值,返回变量主函数拥有具名返回值defer 实现原理defer 数据结构defer的创建和执行总结defer前言defer语句用于延迟函数的调用每
原创
发布博客 2021.12.11 ·
137 阅读 ·
1 点赞 ·
0 评论
加载更多