
Go
文章平均质量分 81
Go相关知识点滴
alwaysrun
当你站在山顶的时候,你的头上还有星空。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[K8S]Kubernetes环境检测与API简介
介绍了docker、k8s环境的判断,以及Kubernetes下如何调用Server API获取Pod详细信息原创 2023-02-11 09:23:33 · 783 阅读 · 0 评论 -
[go]gossip协议之memberlist
介绍了Gossip协议,以及其特点和缺陷;以及对应的go实现memberlist,其节点检测方式、消息传递及主要方法方式;并给出了通过memberlist实现集群的示例原创 2023-01-07 18:22:32 · 1207 阅读 · 0 评论 -
[go]结构体映射之mapstructure
介绍了用于map与struct间进行转换的mapstructure库,以及如何通过标签设定转换方式,以及转换内嵌类型;并如何通过Metadata获取映射信息,以及如何支持弱类型输入原创 2023-01-01 21:19:50 · 3829 阅读 · 4 评论 -
[go]分布式系统之snowflake与锁
介绍了分布式系统中通过snowflake生成唯一标识,以及通过redis来模拟分布式锁原创 2022-12-17 18:03:36 · 538 阅读 · 0 评论 -
[go]汇编语言
介绍了go汇编语言的常见类型(变量定义、常量等),函数调用,以及对应的x86体系架构原创 2022-12-11 18:17:41 · 927 阅读 · 0 评论 -
[go]配置文件(CSV与YAML)读写
介绍了go中读写CSV文件与YAML文件的方式,以及如何映射YAML为go结构原创 2022-11-26 18:49:22 · 1539 阅读 · 1 评论 -
[go]汇编ASM简介
介绍了go汇编语言,常用的伪寄存器、常用指令,以及如何生成汇编原创 2022-11-20 21:50:14 · 914 阅读 · 0 评论 -
[go]泛型扩展切片与map(filter与transfer)
介绍了如何通过泛型扩展切片slice与map,实现过滤filter与转换transfer功能原创 2022-11-13 09:23:12 · 891 阅读 · 0 评论 -
[go]空nil与interface中的空指针
介绍了nil的原理与机制,以及不同类型的nil间的区别以及如何真正判断nil原创 2022-10-30 13:02:03 · 1176 阅读 · 0 评论 -
[math]判断线段是否相交及夹角
介绍了向量的叉乘与点乘,以及判断线段是否相交,以及计算其之间的夹角原创 2022-09-25 19:18:27 · 697 阅读 · 0 评论 -
[go]根据背景色计算文本颜色
介绍了互补色与对比色,透明度混合处理;以及根据背景色如何计算文本的显示颜色原创 2022-09-12 12:56:22 · 1064 阅读 · 0 评论 -
[go]文件与目录操作
介绍了go中文件常用操作:多种读取、写入方法,属性获取判断(文件存在性),以及计算MD5值;目录常用操作:遍历、条件匹配等;以及路径操作:组合、拆分,获取文件名、扩展名等。原创 2022-09-04 18:18:39 · 1456 阅读 · 0 评论 -
[go]gg库绘图与添加文字
介绍了gg库常用函数以及如何绘图(画圆、框等,裁剪图片、旋转图片),和添加文本内容(设定字体、颜色,文本对齐,与多行文本显示)原创 2022-08-28 18:49:35 · 2759 阅读 · 0 评论 -
[go]HTTP之RestAPI请求
介绍了go中通过http.Client如何完成常见的请求(GET、POST、DELETE等),如何添加Header以及如何读取返回中body的内容原创 2022-08-20 18:19:16 · 1473 阅读 · 0 评论 -
golang图片处理库image简介
go中处理图片的标准库image支持常见的PNG、JPEG、GIF等格式的图片处理(可读取、裁剪、绘制、生成等)。图片缩放分为保持比例与不保持比例的缩放;保持比例时,要确定新图片的位置(是否居中),以及如何填充空白处。DrawMask多了一个遮罩蒙层参数,Draw为其一种特殊形式(遮罩相关参数为nil)。读取的jpg图像不是RGBA格式的(为YCbCr格式);有了缩放后的大小后,即可通过双线性插值bilinear的方式进行图片的缩放。通过subImage方法可方便地裁剪图片(需要为RGBA格式的).....原创 2022-07-23 22:42:48 · 7534 阅读 · 1 评论 -
[go]实验包exp简介
exp包是实验性的,后续可能会合并到主分支或废弃;并且不能保证与Go1的兼容性。constraints包中定义了一些有用的泛型参数约束集合:maps中定义了一些有用的方法,用于处理map与类型:rand包中实现了伪随机数生成器:slicesslices中定义了一些处理切片有用的方法:...原创 2022-06-05 11:05:32 · 1356 阅读 · 1 评论 -
[go]原子操作atomic包简介
文章目录简介原子操作与互斥锁区别原子操作增加操作比较并交换操作载入操作atomic.Valuevalue读取value存储原子操作就是不可中断的操作,这些操作对外表现成一个不可分割的整体,他们要么都执行,要么都不执行,外界是看不到原子操作的中间状态。简介go语言通过内置sync/atomic包提供对原子操作的支持,包括(以下XXType为:int32、int64、uint32、uint64、uintptr):增减操作(AddXXType):保证对操作数的原子增减;载入操作(LoadXXType)原创 2022-05-28 21:14:44 · 2907 阅读 · 0 评论 -
[Go]泛型约束与集合Set实现
文章目录泛型约束类型并集类型交集comparableany集合SETgo1.8中引入了泛型,以通用类型的形式表示函数和数据结构。泛型约束在非泛型函数中,传递给 interface 形参的实参必须实现 interface 中的所有方法;而泛型函数中,传入的类型实参必须满足类型形参的约束条件,即泛型代码只能使用约束条件允许的操作。type Stringer interface { String() string}func Stringify[T Stringer](s []T) (ret []s原创 2022-05-22 13:16:47 · 1558 阅读 · 1 评论 -
[Go]grpc与流式rpc简介
文章目录gRPC安装安装protoc安装golang插件生成简单gRPC定义proto服务端客户端流式gRPC定义proto服务端客户端proto3数据类型gRPC是一个语言中立、平台中立、高性能、通用的开源RPC框架;基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC安装安装protoc从 https://github.com/google/protobuf/releases下载预编译的“protoc编译器”,用于生成gRPC服务代码。解压zip原创 2022-04-17 17:12:41 · 2452 阅读 · 1 评论 -
golang集合map简介
介绍了map类型的构建、操作(设定值、获取、变量、删除与清空),以及其底层内部机制(如何比较key、如何扩容等)原创 2022-03-06 20:55:13 · 931 阅读 · 0 评论 -
golang反射简介
文章目录反射反射类型Type指针结构体反射值Value结构体空与有效性判断修改值函数调用反射三定律interface底层结构ifaceeface反射是一种让程序可以在运行时( runtime )检查其数据结构的能力,通过反射可以获取丰富的类型信息。反射Go语言提供了reflect 包来访问程序的反射信息;定义了两个重要的类型Type和Value:reflect.TypeOf:获取任意值的类型对象(reflect.Type);reflect.ValueOf:获得值的反射值对象(reflect.Va原创 2022-02-19 22:13:23 · 1052 阅读 · 0 评论 -
golang类型断言与转换(及strconv包)
文章目录类型转换转换条件类型断言type-switchstrconv包字符串与数字quote转换函数go是强类型的语言,要求表达式的不同的类型之间必须做显式的类型转换;不过也有例外的情况:当普通T类型变量向I接口类型转换时是隐式的;当IX接口变量向I接口类型转换可以在编译期完成时是隐式的;类型转换又分为类型转换、类型断言;不同之处在于,类型断言是对接口变量进行的操作。类型转换只有两个互相兼容的类型才可进行类型转换:<结果类型变量> := <目标类型> ( <表原创 2022-02-13 21:35:00 · 1161 阅读 · 0 评论 -
golang垃圾回收简介
文章目录垃圾回收go垃圾回收回收优化触发时机逃逸分析代码优化垃圾回收的核心就是标记出哪些内存还在使用中(即被引用到),哪些内存不再使用了(即未被引用),把未被引用的内存回收掉,以供后续内存分配时使用。垃圾回收常见的垃圾回收算法:引用计数:对每个对象维护一个引用计数,当引用该对象的对象被销毁时,引用计数减1;当引用计数器为0时回收该对象。优点:对象可以很快的被回收,不会出现内存耗尽或达到某个阀值时才回收。缺点:不能很好的处理循环引用,而且实时维护引用计数,也有一定的代价。代表语言:Pytho原创 2022-02-13 21:29:23 · 504 阅读 · 0 评论 -
golang内存管理简介
go runtime抛弃了传统的内存分配方式,改为自主管理。其内存分配算法主要源自 Google为C语言开发的TCMalloc算法。其核心思想是把内存分为多级管理,从而降低锁的粒度。原创 2022-02-09 21:29:08 · 2609 阅读 · 3 评论 -
golang协程goroutine简介
文章目录goroutine与thread比较M:N模型调度策略可运行队列协作式调度系统调用同步调用异步调用scheduler的陷阱goroutine是Go语言中的轻量级线程实现,由Go运行时(runtime)管理。goroutineGo提供一种机制,可在线程中自己实现调度,上下文切换更轻量(达到线程数少,而并发数并不少的效果)。Goroutine的主要概念:G(Goroutine):Go的协程;M(Machine):工作线程(由操作系统调度);P(Processor):处理器(Go中概念,不指原创 2022-02-06 22:05:12 · 5308 阅读 · 2 评论 -
golang并发控制之WaitGroup与Context
介绍了通过WaitGroup或Context来控制goroutine同步与退出的方式原创 2022-02-01 13:20:48 · 1664 阅读 · 0 评论 -
golang之互斥锁mutex与读写锁
文章目录互斥锁mutex加解锁自旋加锁模式基本使用读写锁rwmutex接口互斥写阻塞读读阻塞写避免饿死锁是为了避免竞争而建立的并发控制手段,为有序地访问共享资源。互斥锁mutexMutex为一结构体类型,对外暴露Lock与Unlock接口。加锁与解锁要成对出现(应加锁后,立即用defer解锁),重复解锁会引起panic。Mutex内存布局:Mutex有以下状态:Locked:是否已被锁定(0:没锁定,1:锁定);Woken:是否有协程已被唤醒,正处于加锁状态(0:无协程唤醒,1:有协程唤醒原创 2022-01-23 20:37:28 · 908 阅读 · 0 评论 -
golang之range遍历
介绍了range遍历原理与方法,以及具体如何遍历slice、maps、channel原创 2022-01-23 08:47:51 · 4465 阅读 · 0 评论 -
golang之defer语句
介绍了defer语句的原理及使用方式(释放资源);以及defer对具名返回值的影响原创 2022-01-22 20:42:41 · 1343 阅读 · 0 评论 -
golang之iota常量与枚举标识
文章目录iota标识每行单个iota每行多个iotaiota是Golang中提供的一个简化常量和枚举编程的标识符。iota标识iota常用于const表达式中,其值从0开始,每增加一行其值自增1:iota代表const声明块中的行索引(一行中多次引用iota,其值也是相同的);第一个常量必须指定一个常量表达式,后续常量若没有表达式,则继承上一行的;每行单个iota当常量没有对应表达式时,会继承上一行的:second继承first的iota,为1;forth继承third的=10,为1原创 2022-01-22 18:56:40 · 2889 阅读 · 0 评论 -
golang之多态Interface与成员组合
文章目录多态继承Golang非面向对象的语言:封装:没有提供public等关键字,而是以大写字符开始来表示包外可见;继承:没有implements等关键字,而是通过匿名组合(has-a)方式模拟继承;多态:通过接口(interface)实现的一种duck typing类型多态通过Interface可实现多态继承(is-a);可用interface来代表对应的实现类来操作:type CheckParamValid interface { IsValueValid(v float64) bo原创 2022-01-15 22:41:40 · 1089 阅读 · 0 评论 -
golang之JSON处理
介绍了JSON的序列化与反序列化,以及如何自定义序列化(MarshalJSON)与反序列化(UnmarshalJSON)方法;开优酷go-simplejson的使用方法原创 2022-01-15 22:36:57 · 7624 阅读 · 0 评论 -
golang通道channel与定时器简介
介绍了channel通道的原理,以及如何创建关闭,获取(select);并介绍了使用channel的定时器:Timer(一次性定时器)与Ticker(周期性定时器)Channel是Golang的核心类型,是goroutine间通讯的一种方式。通道channelchannel基本使用示例:原创 2022-01-15 15:34:59 · 1525 阅读 · 0 评论 -
编程语言之沧海拾贝
各编程语言C++、Java、golang、Python,以及数据库MySQL相关的精彩文章件列表,以及开发工具、Linux软件和Typora使用文章列表原创 2021-06-24 21:20:30 · 756 阅读 · 1 评论 -
[go]-golang闭包简介与变量引用
文章目录函数匿名函数闭包引用变量记忆效应循环中闭包捕获外部变量的坑函数在golang中是一等公民,闭包可以看成函数的高阶应用,是golang高级开发的必备技能。函数函数是一等公民(First-class value),即函数可以作为另一个函数的返回值或参数,还可以作为一个变量的值。匿名函数匿名函数跟普通函数是一样的,只是他没有名字。直接使用的匿名函数:sum := func(first int, second int) int { return first + second}(5, 10)原创 2021-05-27 21:08:15 · 1710 阅读 · 1 评论 -
[Leet-go]-复杂链表的复制
文章目录题解分析代码实现实现一个函数,完成复杂链表的复制功能;在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。题解分析普通链表复制非常简单,只需遍历一遍,复制创建每个节点即可。但因此复杂链表中有一个next指针,指向不确定的节点,所以普通方式修改复制next指针时,需要在复制每个指针时遍历一遍链表;无法在O(N)时间内完成。因链表是可以随意拼接、断开的;因此可以先把新创建的节点连接在源节点后面,在全部完成(包括设定nex原创 2021-02-06 20:37:11 · 252 阅读 · 1 评论 -
[golang]-go中字符串格式化与fmt包简介
文章目录格式化符通用指针数值字符串与字节序列宽度与精度标识符占位符格式化错误GoStringer & StringerScanningPrintingErrorffmt包中实现了格式化的I/O函数(类似C语言中的printf和scanf,但更加简单)。字符串相关操作参见《go中字符串操作和转换简介》。格式化符对于复杂类型,默认按以下规则打印:struct: {field0 field1 …}array, slice: [elem0 elem1 …]maps: map[key1:valu原创 2021-01-30 22:58:58 · 2541 阅读 · 0 评论 -
[golang]-go中字符串操作和转换简介
介绍了golang中字符串基本知识:初始化、长度、截取(子串)等等;以及字符串操作包strings(常用字符串操作,如分割、前后缀判断与截取、移除空白等),和转换包strconv(字符串与其他类型间的转换)原创 2021-01-24 08:44:55 · 4180 阅读 · 0 评论 -
[Leet-go]-判断字符串是否为数字
文章目录题解分析代码实现实现一个函数用来判断字符串是否表示数值(包括整数和小数)题解分析一个标识数字的字符串可能包括以下字符类型:空格;数组:0~9;正负号小数点幂符号:e/E;为了解决此类问题,需要使用有限状态自动机,字符串有如下状态:0:开始的空格;1:幂符号前的正负号;2:小数点前的数字;3:小数点、小数点后的数字;4:小数点前为空格时:小数点、小数点后的数字;5:幂符号;6:幂符号后的正负号;7:幂符号后的数字;8:结尾的空格;合法的结束状态有:2、3、7原创 2021-01-20 21:13:18 · 1697 阅读 · 0 评论 -
[Leet-go]-带min函数的栈
文章目录题解分析代码实现定义带min函数的栈数据结构:实现一个能够得到栈中最小元素的min函数;调用min、push及pop的时间复杂度为O(1);题解分析普通栈的push()和pop()函数的复杂度为O(1),但获取栈最小值min()函数需要遍历整个栈,复杂度为O(N);要将min()函数复杂度降为O(1),需要借助辅助栈:数据栈All:存储所有元素,实现入栈push()函数、出栈pop()函数、获取栈顶top()函数的正常逻辑;辅助栈Ordered:存储所有非严格降序元素的子序列(栈原创 2021-01-16 14:41:51 · 187 阅读 · 0 评论