首页
学习
活动
专区
工具
TVP
发布

光华路程序猿

专栏成员
33
文章
22862
阅读量
17
订阅数
go1.20升级风波。。。
今天尝试把工程从古老的1.13版本升级到最新的1.20,打算坐下泛型的快车。升级之后运行时立马就panic掉了。打印堆栈日志,发现是内部common库依赖的github.com/json-iterator/go@v1.1.10导致的。翻了翻源码,问题出在github.com/json-iterator/go@v1.1.10/reflect_map.go:333
用户3904122
2023-09-02
4530
从Hello World谈起
Golang的runtime机制是Golang语言的核心组成部分之一,它负责管理和调度goroutine,垃圾回收,内存分配,锁和其他底层功能。
用户3904122
2023-09-02
2390
elasticsearch血泪史之没禁用的_source
生产上某个服务使用了ElasticSearch作为检索引擎,但是偶发性出现gc明显抖动,进而导致接口响应超时
用户3904122
2022-06-29
4980
记一次elasticsearch 跨机房迁移
调研了在线和离线迁移两种比较有代表性的方案,两种方案都进行了测试演练,不过最终选择了离线的方式,原因有几点:
用户3904122
2022-06-29
8010
小白零基础--gRPC整合Kubernetes
上一篇,我们简单介绍了下mac下单节点Kubernetes的安装,今天我们乘热打铁,感受下grpc整合Kubernetes的魅力。好了Talk is cheap,Show me the graph 我们要做的是下面这么一个架构的小demo。
用户3904122
2022-06-29
1.1K1
记一次mac安装Kubernetes
家里老的台式机已经被淘汰掉了,之前kubeadm方式按照的k8s集群也不复存在,打算在mac上使用Docker Desktop安装了一下单节点的Kubernetes尝尝鲜,果然又踩坑了,随手记录下。
用户3904122
2022-06-29
9550
为何redis cluster偏偏使用16384个槽
昨天跟同事讨论redis集群,谈到redis cluster时随口吹嘘了一遍工作机制:"redis cluster采用虚拟槽分区,将key根据哈希函数映射到了16384个槽位... ..."云云
用户3904122
2022-06-29
3700
golang并发底层实现竟然都是它!!!
《手摸手系列》把go sync包中的并发组件已经写完了,本文作为完结篇,最后再来探讨下go运行时锁的实现。记得在《手摸手Go 并发编程的基建Semaphore》那篇中我们聊过sync.Mutex最终是依赖sema.go中实现的sleep和wakeup原语来实现的。如果细心的小伙伴会发现:
用户3904122
2022-06-29
1.2K0
关于git代理的使用姿势
下载速度只有29kib/s,对于稍微大点儿的repo来说显然等的让人焦心。好在一般工作都会提供一些代理,用上代理访问github repo速度就有了质的飞跃:
用户3904122
2022-06-29
5000
搞定Protocol Buffers (下)- 原来你是这样的pb
上图是从官网找的一个protocol buffers的序列化压测对比图,从图上来看protocol buffers表现相对还是比较优异的。
用户3904122
2022-06-29
9870
阅读go源码,你需要了解这几个编译器指示
谈到编译器指示,我们在平时工作中几乎不会使用,除非你觉得你的代码瓶颈出现在编译期,不过了解掌握编译器指示对于我们阅读golang源码还是挺有帮助的。
用户3904122
2022-06-29
5810
搞定Protocol Buffers (上)- 使用篇
因为工作中gRPC使用非常频繁,而gRPC的默认序列化编码采用的也是Protocol Buffers。业界也盛传其效率及其高效:
用户3904122
2022-06-29
4.4K0
手摸手Go 也谈sync.WaitGroup
最近因为工作上的事情更新会相对有点儿慢,这周末又加了天班。然后昨天好好休息了下,顺便翻了下《云雀叫了一整天》,看到一首小诗觉得不错分享给大家。
用户3904122
2022-06-29
3640
手摸手Go 简单聊聊sync.RWMutex
各位早上好~今天来聊聊Go提供的读写互斥锁sync.RWMutex,它可以加任意数量的读锁或者一个写锁。读写锁占用规则:
用户3904122
2022-06-29
4400
手摸手Go 单例模式与sync.Once
单例模式作为一个较为常见的设计模式,他的定义也很简单,将类的实例化限制为一个单个实例。在Java的世界里,你可能需要从懒汉模式、双重检查锁模式、饿汉模式、静态内部类、枚举等方式中选择一种手动撸一遍代码,但是他们操作起来很容易一不小心就会出现bug。而在Go里,内建提供了保证操作只会被执行一次的sync.Once,操作起来及其简单。
用户3904122
2022-06-29
1730
手摸手Go 并发编程基建Semaphore
前段时间剖析了一下sync.Mutex的源码,发现底层实现其实是基于Go的运行时Semaphore机制来实现的,虽然那篇文章也梳理了一下关于信号量的原理,但是感觉还是有些浅尝辄止,而且手摸手Go 并发包系列后面还打算写下sync.RWMutex所以索性这次彻底来搞清楚Semaphore。
用户3904122
2022-06-29
4631
go1.16来啦
最新的Go版本1.16版在Go 1.15之后六个月到货。它的大部分更改是在工具链,运行时和库的实现中进行的。与往常一样,该版本保留了Go 1兼容性的承诺。作为Go编程语言的第17个主要版本Go 1.16。这是一项重大升级,为语言带来了许多期待已久的功能和改进。默认情况下,启用模块感知模式,Apple silicon支持实时可用,静态资源可以嵌入到二进制文件中,并且io / ioutil软件包中的方法已重新组织,因此现在具有逻辑意义。在本文中,我们将介绍此版本中的一些重点内容。
用户3904122
2022-06-29
7850
手摸手Go 并发编程基石atomic
“高并发 高性能 高可用”一直以来作为搬砖界用力搬砖的口号。由于CPU一次读取存储数据的长度有限,比如32bit的平台修改int64需要被拆分成两次写操作,更何况对于结构体的赋值,那么对于高并发场景下我们怎么才能保证数据的完整性和一致性呢?
用户3904122
2022-06-29
5280
手摸手Go 你的内存对齐了吗?
谈到内存对齐,早年间玩Java的时候就能偶尔打打交道,为此Java8还提供了个语法糖@Contended来帮助我们解决高速缓存cacheline内存未对齐的伪共享问题。不过Go目前涉及到类似问题,比如内存对齐带来的原子操作的问题还是需要手动处理下,毕竟Russ Cox大佬也发话了
用户3904122
2022-06-29
5180
手摸手Go 深入理解sync.Cond
sync.Cond实现了一个条件变量,用于等待一个或一组goroutines满足条件后唤醒的场景。每个Cond关联一个Locker通常是一个*Mutex或RWMutex`根据需求初始化不同的锁。
用户3904122
2022-06-29
2330
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档