
golang
暮光巨魔
这个作者很懒,什么都没留下…
展开
-
常见分布式唯一ID生成方案
分布式id要求 全局唯一 高性能,高可用,低延时,否则可能会成为系统瓶颈 好接入,拿来即用的原则 尽量满足趋势递增 生成方式 UUID 数据库自增id 数据库多主模式 号段模式 redis 雪花算法(SnowFlake) 滴滴出品(TinyID) 百度(Uidgenerator) 美团(leaf) ...原创 2020-11-10 21:49:18 · 220 阅读 · 0 评论 -
GO内存管理
GO内存管理 虚拟内存 虚拟内存是操作系统的一大功能,它向进程屏蔽了底层的RAM和磁盘,并向进程提供了远超物理内存大小的内存空间,就是说所有进程使用的内存之和要远大于物理内存。 在没有虚拟内存的时代,物理内存是被多个进程共享的,多进程同时访问同一个物理内存是存在并发访问的问题的,需要加锁操作。引入虚拟内存后,每个进程都有各自的虚拟内存,内存的并发访问问题的粒度从多进程级别降低到了多线程级别。 进程访问内存,实际访问的是虚拟内存,虚拟内存通过页表查看,当前要访问的虚拟内存地址,是否已经加载到物理内存,如果已原创 2020-11-07 13:02:00 · 330 阅读 · 1 评论 -
简述http1.0/1.1/2.0及https
http1.0/1.1性能问题 1、早期 HTTP/1.0 性能上的一个很大的问题,那就是每发起一个请求,都要新建一次 TCP 连接(三次握手),而且是串行请求,做了无谓的 TCP 连接建立和断开,增加了通信开销。 2、为了解决上述 TCP 连接问题,HTTP/1.1 提出了长连接的通信方式,也叫持久连接。这种方式的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。 3、http1.1的管道网络传输,即可在同一个 TCP 连接里面,客户端可以发起多个请求,只要第一个请求原创 2020-11-05 13:29:00 · 904 阅读 · 0 评论 -
go语言-变量逃逸
go变量逃逸 go语言的一个变量是在堆上分配,还是在栈上分配,是经过golang编译器的逃逸分析之后得出结论的,这一切都是编译器帮我们完成的。 什么是变量逃逸 简单来说,变量逃逸就是一个变量由栈逃逸到堆的过程。 我们知道c和c++变量的内存分配和销毁都是需要程序员手动来执行的。 举个栗子,在函数内部定义了一个局部变量,然后返回这个局部变量的地址,这些局部变量是在栈上分配的(静态分配内存),一旦函数...原创 2020-03-17 21:47:54 · 532 阅读 · 0 评论 -
go守护进程
go守护进程 将你的go应用运行为守护进程,这里介绍一个github包,跨平台,简单易用。 前提知识点 linux系统下注册为系统服务,实现守护进程运行,主要通过systemd实现。 systemd是系统启动的第一个进程 systemctl是管理systemd的工具 systemctl常用来管理和监督常驻服务,确保其运行。 类似supervisor守护进程工具。 systemctl命令 sy...原创 2020-03-10 16:04:38 · 1540 阅读 · 0 评论 -
go实现rsa加解密
go实现rsa加解密 概念网上很多,不再赘述,直接上代码。 github地址:https://github.com/farmerx/gorsa转载 2020-02-20 15:12:24 · 449 阅读 · 0 评论 -
golang处理高并发
golang处理高并发,保证线性安全的各种方式 package main import ( "fmt" "sync" "sync/atomic" ) func main() { var num int64 var wg sync.WaitGroup for i := 0; i < 1000; i ++ { wg.Add(1) go func() { defe...原创 2019-12-03 22:38:10 · 297 阅读 · 0 评论 -
golang高级语法及特点
golang基础及语法特点 golang特点 枚举类型 iota 没有char 只有rune go语言所有类型都有默认值 原生支持复数类型 switch后可以没有表达式 只有for 没有while for可以不要条件 可以只有退出条件 函数没有缺省参数 数组是值类型,调用func f(arr [10]int)会 拷贝 数组 go只有值传递没有引用传递, 所以用指针类型来补充其他语言的引用传递...原创 2019-11-16 10:51:03 · 1062 阅读 · 0 评论