
golang
一文读懂Go 1.20引入的PGO性能优化
背景Go 1.20版本于2023年2月份正式发布,在这个版本里引入了PGO性能优化机制。 PGO的英文全称是Profile Guided Optimization,基本原理分为以下2个步骤: 先对程序做profiling,收集程序运行时的数据,生成profiling文件。编译程序时启用PGO选项,编译器会根据.pgo文件里的内容对程序做性能优化。我们都知道在编译程序的时候,编译器会对程序做很多优化,包括大家熟知的内联优化(inline optimization)、逃逸分析(escape analysis…
手把手带你从零开始搭建自己的ChatGPT(1)
手把手带你从零开始搭建自己的ChatGPT(1)
1.基于github开源项目跑一个服务
2.基于云原生考虑对项目启动项进行修改
3.添加敏感词以及访问记录等业务需求
4.服务的构建以及集群化部署
Go-怎么做单元测试?
这篇文章应该是属于全网最全的关于 Golang 单元测试的文章了,包括对单元测试本身价值的说明,部分最佳实践,以及 Golang 用来做单元测试相关的包的推荐(mock 变量,函数, 方法,接口,MySQL,Redis), 文章比较长,大家可以收藏成书签,后面写单元测试的时候随时参考(真的不一定全部能记住,特别是 mock 这一块)。 1. 单元测试是什么?参考维基百科: 在计算机编程中,单元测试(英語:Unit Testing )又称为模块测试,是…
《10节课学会Go-09-Goroutine》
《10节课学会Go-01-Packeage》 《10节课学会Go-02-变量与常量》 《10节课学会Go-03-函数》 《10节课学会Go-04-流程控制》 《10节课学会Go-05-结构体》 《10节课学会Go-06-数组与切片》 《10节课学会Go-07-Map》 《10节课学会Go-08-Interface》 《10节课学会Go-09-Goroutine》 《10节课学会Go-10-Channel》 Goroutine Goroutine 是 Go 语言中轻量级的并发处理方式之一。它可以看作是一个轻量级线程,一个程序可以包含成百上千个 Go…
Golang 经典入门实践教程
网上关于 Golang 的入门教程和学习资料有很多,我也是通过官网的学习材料自学的,但其中的大多数例子都很简单,有现实意义的并不多。我觉得有必要开发一个比较真实的且能够综合运用各种知识的经典的实践项目,把开发项目的详细经过和相关知识点整理成系统的教程,让后面更多的初学者可以多一个好的练手项目。我思考了很久,决定开发一个基于 Terminal 的即时通讯软件,分为服务端和客户端两个程序。 [图片] 第一章 Go 起步这一章节,会…
golang 爬虫之 gospider (requests--代理篇)
gospider 的安装和其他的 Go 库安装一样简单。如下:go get -u gitee.com/baixudong/gospidergitee地址https://gitee.com/baixudong/gospidergithub地址https://github.com/baixudong007/gospider代理介绍:支持http,socks5代理gospider 中请求设置代理有两种模式:自实现模式官方代理模式自实现模式介绍: 自实现代理主要解决官方代理模式的几大问题: net/http 对ja3进行伪装时无法使用官方代理模式 net/http 使用http2.Transpor…
20分钟让你搞懂数据库事务,真的不难~
结合电商实战项目场景,带你学会什么是事务处理?什么时候需要用?怎么用?
Go 1.21的2个语言变化
语言行为变化Go 1.20已经于今年2月份发布,Go 1.21也不远了,我们来先堵为快,看看Go 1.21版本里几个有趣的变化。 文末附送2道面试题。 panic(nil)func main() { defer func() { print(recover() == nil) }() panic(nil) } 大家先想一想这段代码会输出什么?是true还是false。 在Go 1.20版本及以前会输出true。 但是在Go 1.21版本开始会输出false。这是因为Go 1.21定义了一个新的类型 *runtime.PanicNilError。 panic(nil)后,re…
交叉编译armv7l下的程序踩坑经验
以前在树莓派 4B 上运行程序都是 docker 直接跑,很少有碰到架构不满足的情况。这个周末想把以前自己写的博客也搬到树莓派上,发现报错。 Format Error-bash: ./GoBlog: cannot execute binary file: Exec format error 使用 uname -a 和 file 检查了二进制文件的格式文件格式如下: GoBlog: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2 , BuildID[sha1…