go
文章平均质量分 92
gopher
cugbtang
格局的大小,在很大程度上就决定了我们人生会有怎样的走向。以少胜多,才是大本事。赚钱比省钱重要得多!
展开
-
Go 的设计哲学看这一篇就够了
Go 的设计哲学看这一篇就够了引言这篇2017年的文章引发看到 go-coding-in-go-way 引发深思:写着写着,就是发现自己写的代码总是感觉很别扭,并且总是尝试在Go语言中寻找自己上一门语言中熟悉的语法元素;自己的代码风格似乎和Go stdlib、主流Go开源项目的代码在思考角度和使用方式上存在较大差异目标学习和使用一门编程语言,目标就是要用这门语言思维方式去Coding。学习Go,就要用Go的编程思维去写Go代码,而不是用其他语言的思维方式。前提是达成这样的共识决定编原创 2021-11-08 21:00:47 · 616 阅读 · 0 评论 -
Go的IO管理看这一篇就够了
文章目录Go 的IO首要问题,内核中的缓冲和进程中的缓冲Operating System --- linux的文件I/O系统引言重要概念Go 的IOGo 和 IO的不解之缘Go的IO长什么样子IO 的姿势多种多样Go的IO具有是怎么利用内核的IO的呢?Go 的IO首要问题,内核中的缓冲和进程中的缓冲内核中的缓冲无论进程是否提供缓冲,内核都是提供缓冲的,系统对磁盘的读写都会提供一个缓冲(page/buffer cache),将数据写入到页/块缓冲进行排队,当页/块缓冲达到一定的量时,才能把数据写入原创 2021-09-25 22:19:57 · 1567 阅读 · 0 评论 -
Go 的内存管理看这一篇就够了
文章目录Go 的内存管理第一章 OS是怎么管理内存的?Go为什么要有自己的内存管理?OS内存管理的主要机制第二章 Go 的内存管理第一节 管理模型第二节 逃逸分析第三节 垃圾回收参考Go 的内存管理本文主要参考大佬分析内存的系列文章,参杂自己的思考,谨以记录和传播知识第一章 OS是怎么管理内存的?Go为什么要有自己的内存管理?Go语言的内存管理是建立在OS的内存管理之上的.设计的目的是最大化的发挥OS内存管理层面的优势,避开导致低效情况.OS内存管理的主要机制现在计算机内存管理的方式都是一步原创 2021-09-24 21:35:07 · 3912 阅读 · 0 评论 -
Effective Engineering---(go)that‘s enough for flag
aaa原创 2021-07-23 11:17:39 · 88 阅读 · 0 评论 -
GC看这一篇就够了
文章目录引言非追踪追踪式单核多核Go的GCQAQ1:哪些指针是GC感兴趣的?Q2工作队列Q3:CPU UtilizationQ4:Memory allocQ5:Hybrid BarrierQ6:CPU Trigger感谢幼麟实验室的生动讲解垃圾回收之写屏障go GC探秘引言由于函数调用栈会在函数返回后销毁,如果不能在编译阶段确定数据对象的大小或者对象生命周期超出当前所在函数,那就不适合分配在栈上 而应该分配到堆上他们占用的内存需要程序主动释放才可以重新使用 否则成为垃圾非追踪引用计数原创 2021-07-09 18:04:22 · 188 阅读 · 0 评论 -
设计基础决定上层建筑之go协程
文章目录内存管理模型进程 线程协程强调,该文的整理内容图片全部来自幼麟实验室内存管理模型说协程,为啥先开始了内存呢?不管是啥程,它的信息都要到内存,内存是怎么管理的直接影响上层建设啊,说的在理内存隔离的必要性又要从历史说起,刚开始 人们用内存的时候 很直接,操作系统用哪个,你用哪块,我用哪块 都知道,很容易打架虚拟内存的出现,它是怎么设计的呢?先说说历史原因,当时人们觉得4G好大啊,硬件水平也不支持,主流32位处理器完美利用每一位1、虚拟内存到物理内存是以页为原创 2021-02-27 18:24:25 · 165 阅读 · 0 评论 -
设计基础决定上层建筑之go类型
看标题,go语言类型,那它有多少种呢?为什么会是这么呢?第一,解决第一个问题百度/google,让有心人告诉你一手消息的爱好者来自官网原来还可以这样,Junedayday告诉我们func main() { for i:= reflect.Invalid; i <= reflect.UnsafePointer; i++{ fmt.Printf("%d:%s\n",i,i.String()) }}// 没错 0 ~ 26 ,内部就是用数字和类型的对应关系构建的,基架0:inva原创 2021-02-25 17:51:48 · 287 阅读 · 0 评论 -
设计基础决定上层建筑之go函数语法糖
文章目录函数方法以下截图均来自幼麟实验室,总结的比较形象,直接爱了函数函数调用的栈帧分配情况go语言中栈指针是一次性分配所需最大栈空间的位置,为了避免访问越界,编译期间确定然后通过栈指针加偏移值这种相对寻址方式使用函数栈帧流程:函数通过call指令实现跳转每个函数开始时会分配栈帧结束前又会释放自己的栈帧ret指令又会把栈恢复到call之前的样子函数调用返回值情况通常我们认为函数返回值是通过寄存器传递的但是,如果要返回值个数比寄存器还多的话,在栈上分配返回原创 2021-02-25 17:48:15 · 212 阅读 · 0 评论 -
Effective Engineering---(go)that‘s enough for error
文章目录一、标准库分析1.1、简介1.2、使用和设计原理小结:通过源码,我们能学习什么呢?二、满足不了,真实的需求是什么呢?三、分析第三方库的设计四、我们从标准库和第三方库中学到了什么?总结一、标准库分析它是【内置类型】The error built-in interface type is the conventional interface for representing an error condition, with the nil value representing no error.原创 2021-01-31 20:55:55 · 98 阅读 · 0 评论 -
Effective Engineering---(go)that‘s enough for log
一、标准库分析1.1、简介1.2、使用和设计原理为什么会这么设计呢?二、满足不了,真实的需求是什么呢?三、分析第三方库的设计四、我们从标准库和第三方库中学到了什么?总结原创 2021-01-29 23:56:58 · 258 阅读 · 0 评论 -
go 源码深度解析看着一篇就够了
【 netpoll I/O 多路复用构建原生网络模型】原创 2020-03-26 16:47:29 · 3888 阅读 · 0 评论 -
go 优雅看着一篇就行了
文章目录代码规范最佳实践目录结构模块拆分显示调用面向接口单元测试可测试函数简单组织方式Mock总结引用代码规范Go Code Review Commentsgoimports = gofmt + import 检查代码规范和依赖包golint / golangci-lint 静态检查工具在自建的或者其他的代码托管平台上也应该想尽办法寻找合适的工具,现代的代码托管工具应该都会对 C...原创 2020-03-25 14:31:46 · 280 阅读 · 0 评论 -
Go高级看这一篇就够了
引言走完进阶后的一个最大感受是能把调度做好很难,跟现实中高级工程师一样,站在工程的角度看待设计、处理问题和调度资源。这里只是搬过来,详细的描述请移步到他们的公众号或者博客,谢谢。【饶神公众号关于调度的十个系列】铺垫三个角度区别goroutine和线程:内存消耗、创建与销毀、切换M:N 模型什么是scheduler为什么需要scheduler以及它是怎么做到的目标:For ...原创 2020-03-14 13:07:58 · 663 阅读 · 0 评论 -
beego源码阅读
【beego项目运行过程】【beego的orm进行多对多的数据插入】原创 2020-03-07 22:11:42 · 304 阅读 · 0 评论 -
go 常用看这一篇就够了
【基本概念及用例】原创 2020-02-18 18:44:08 · 1142 阅读 · 0 评论 -
Go进阶看这一篇就够了
Go经验:https://mp.weixin.qq.com/s/ADy5kZ1kk0VS5PWZ3BU4yA出现panic恐慌时候,会先按照defer的后入先出的顺序执行,最后才会执行panicgo执行的随机性和闭包go的组合继承select 中只要有一个case能return,则立刻执行;当如果同一时间有多个case均能return则伪随机方式抽取任意一个执行;如果没有一个cas...原创 2019-08-23 09:31:42 · 553 阅读 · 0 评论 -
字符串常用方法-ALL IN
字符串常用方法大全:python:https://blog.csdn.net/qinglianchen0851/article/details/84633290go:原创 2019-07-22 15:27:51 · 126 阅读 · 0 评论