随笔分类 -  Go学习

Golang 之 struct能不能比较(转)
摘要:struct能不能比较? 很显然这句话包含了两种情况: 同一个struct的两个实例能不能比较? 两个不同的struct的实例能不能比较? 划重点 在分析上面两个问题前,先跟大家梳理一下golang中,哪些数据类型是可比较的,哪些是不可比较的: 可比较:Integer,Floating-point, 阅读全文

posted @ 2021-03-08 19:59 wsw_seu 阅读(695) 评论(0) 推荐(0) 编辑

Go语言内存分配(详述 转)
摘要:一、内存管理简介 1.1 虚拟内存 虚拟内存是当代操作系统必备的一项重要功能,对于进程而言虚拟内存屏蔽了底层了RAM和磁盘,并向进程提供了远超物理内存大小的内存空间。我们看一下虚拟内存的分层设计。 上图展示了某进程访问数据,当Cache没有命中的时候,访问虚拟内存获取数据的过程。在访问内存,实际访问 阅读全文

posted @ 2020-09-18 19:19 wsw_seu 阅读(287) 评论(0) 推荐(0) 编辑

Go语言内存分配(简述 转)
摘要:在Go语言里,从内存的分配到不再使用后内存的回收等等这些内存管理工作都是由Go在底层完成的。虽然开发者在写代码时不必过度关心内存从分配到回收这个过程,但是Go的内存分配策略里有不少有意思的设计,通过了解他们有助于我们自身的提高,也让我们能写出更高效的Go程序。 Go内存管理的设计旨在在并发环境中快速 阅读全文

posted @ 2020-09-18 16:49 wsw_seu 阅读(219) 评论(0) 推荐(0) 编辑

Golang调度器GMP原理与调度全分析(转 侵 删)
摘要:该文章主要详细具体的介绍Goroutine调度器过程及原理,包括如下几个章节。 第一章 Golang调度器的由来 第二章 Goroutine调度器的GMP模型及设计思想 第三章 Goroutine调度场景过程全图文解析 一、Golang“调度器”的由来? (1) 单进程时代不需要调度器 我们知道,一 阅读全文

posted @ 2020-09-16 20:33 wsw_seu 阅读(261) 评论(0) 推荐(0) 编辑

go常见问题
摘要:1、至少知道go的fiber概念,调度原理,M/P/G的角色分工; 2、map的数据结构,get/put/delete过程,扩容机制; 3、slice的内存结构,扩容机制,巨型slice产生的垃圾回收问题; 4、interface底层结构,反射机制; 5、内存管理、分配是怎么进行的,垃圾回收的流程, 阅读全文

posted @ 2020-06-03 22:35 wsw_seu 阅读(174) 评论(0) 推荐(0) 编辑

GC 的认识(转) https://github.com/qcrao/Go-Questions/blob/master/GC/GC.md#1-什么是-gc有什么作用
摘要:1. 什么是 GC,有什么作用? GC,全称 Garbage Collection,即垃圾回收,是一种自动内存管理的机制。 当程序向操作系统申请的内存不再需要时,垃圾回收主动将其回收并供其他代码进行内存申请时候复用,或者将其归还给操作系统,这种针对内存级别资源的自动回收过程,即为垃圾回收。而负责垃圾 阅读全文

posted @ 2020-03-26 12:06 wsw_seu 阅读(792) 评论(0) 推荐(0) 编辑

缓存淘汰算法--LRU算法
摘要:一个用hash表作为底层结构的数据库,当然少不了缓存淘汰算法。 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 新数据插入到链表头部; 每当缓存命中(即缓存数据被访问),则将数 阅读全文

posted @ 2020-03-20 15:40 wsw_seu 阅读(210) 评论(0) 推荐(0) 编辑

深入Golang之sync.Pool详解
摘要:我们通常用golang来构建高并发场景下的应用,但是由于golang内建的GC机制会影响应用的性能,为了减少GC,golang提供了对象重用的机制,也就是sync.Pool对象池。 sync.Pool是可伸缩的,并发安全的。其大小仅受限于内存的大小,可以被看作是一个存放可重用对象的值的容器。 设计的 阅读全文

posted @ 2020-03-03 14:39 wsw_seu 阅读(1335) 评论(0) 推荐(0) 编辑

Golang 接口型函数和http.Handler接口
摘要:一、接口型函数 参考Golang必备技巧:接口型函数 1.原始接口实现 type Handler interface { Do(k, v interface{}) } func Each(m map[interface{}]interface{}, h Handler) { if m != nil 阅读全文

posted @ 2020-03-03 11:03 wsw_seu 阅读(854) 评论(0) 推荐(0) 编辑

golang的bytes.buffer
摘要:参考原文:go语言的bytes.buffer 一、创建缓冲期 bytes.buffer是一个缓冲byte类型的缓冲器 1、使用bytes.NewBuffer创建:参数是[]byte的话,缓冲器里就是这个slice的内容;如果参数是nil的话,就是创建一个空的缓冲器。 2、bytes.NewBuffe 阅读全文

posted @ 2020-02-07 16:11 wsw_seu 阅读(8441) 评论(0) 推荐(0) 编辑

Go知识点记录
摘要:1、go中 堆的实现:https://ieevee.com/tech/2018/01/29/go-heap.html#3-containerheap%E5%8F%AF%E4%BB%A5%E7%94%A8%E6%9D%A5%E5%81%9A%E4%BB%80%E4%B9%88 2、go中interfa 阅读全文

posted @ 2020-02-05 10:45 wsw_seu 阅读(206) 评论(0) 推荐(0) 编辑

go语言协程安全map
摘要:前言: 在go语言中 map 是很重要的数据结构。Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。问题来了,这么安逸的 数据结构,它不是协程安全的 !当多个 协程同时对一个map 进行 读写时,会抛出致命错误。总结一下 想要 做 阅读全文

posted @ 2019-10-13 12:09 wsw_seu 阅读(2096) 评论(0) 推荐(0) 编辑

导航

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示