随笔分类 -  golang

摘要:1. RPC简介 RPC是远程系统调用的缩写,通俗地讲就是调用远处的一个函数,可能是一个文件内的不同函数,也可能是一个机器上另一个进程的函数,也可能是远处机器上的函数。 RPC是分布式系统中不同节点之间的通信方式,Go的标准库也实现了一个简单的RPC。 2. RPC简单使用 首先构造一个HelloS 阅读全文
posted @ 2022-03-20 20:04 aganippe 编辑
摘要:1. golang map golang原生map在并发场景下,同时读写是线程不安全的,如论key是否一样,我们可以编写一个测试用例来看看同时读写不同的key会发生什么情况: func testForMap() { m := make(map[int]int) go func() { for { m 阅读全文
posted @ 2022-03-20 13:40 aganippe 编辑
摘要:面试时间:2022.03.18 1. 自我介绍 2. 简单说了说云端存储那个项目架构 3. 学习golang多长时间了? 4. 为什么考虑从c++转golang? 5. golang中的变量类型 6. new和make 7. 怎么实现线程同步?如何让所有协程一起退出? 8. defer了解多少?应用 阅读全文
posted @ 2022-03-19 14:48 aganippe 编辑
摘要:1. 切片的定义 切片的结构定义在 reflect.SliceHeader type SliceHeader struct{ Data uintptr Len int Cap int } 看看切片的几种定义方式: var ( a []int // nil切片,和nil相等,一般用来表示一个不存在的切 阅读全文
posted @ 2022-03-18 20:06 aganippe 编辑
摘要:1. cron表达式的基本格式 cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,cron有如下两种语法格式: second minute hour dayofmonth month dayofweek year second minute hour day 阅读全文
posted @ 2022-03-18 16:50 aganippe 编辑
摘要:1. 架构分析 1.1 传统crontab痛点 机器故障,任务停止电镀,甚至cron配置都找不回来 任务数量多,单机硬件资源有限,需要人工迁移到其他机器 需要人工去机器上配置cron,任务执行状态不方便查看 1.2 分布式架构的核心要素 调度器:需要高可用,确保不会因为单点故障停止调度 执行器:需要 阅读全文
posted @ 2022-03-18 16:23 aganippe 编辑
摘要:go客户端实现mongoDB的增删改查 所有api的使用和说明都在官方文档: https://pkg.go.dev/go.mongodb.org/mongo-driver/mongo#pkg-index 下面只记录一下项目中用到的简单的增删改查操作 可能用过mysql和redis客户端的不太习惯mo 阅读全文
posted @ 2022-03-17 11:31 aganippe 编辑
摘要:1. 介绍 泛型可能是1.18版本最大的更新了,毕竟官方文档都写在了第一条 泛型的基本介绍就不写了,c#中有最优雅的泛型实现,可以去简单看看 全面的泛型概述可见泛型提案 https://go.googlesource.com/proposal/+/refs/heads/master/design/4 阅读全文
posted @ 2022-03-17 09:42 aganippe 编辑
摘要:1. mongoDB功能介绍 1.1 核心特性 文档数据库,基于二进制json存储文档 高性能、高可用、直接加机器就可以解决扩展性问题 支持丰富的CRUD操作,例如聚合统计、全文检索、坐标检索 1.2 文档数据库 存放的是json格式的数据,任何字段都不需要提前定义 { name:"pp", age 阅读全文
posted @ 2022-03-16 20:29 aganippe 编辑
摘要:1. 分布式锁的特点 锁是在执行多线程时用于强行限制资源访问的同步机制,在单机系统上,单机锁就可以很好地实现临界资源的共享。而在分布式系统场景下,实例会运行在多台机器上,为了使多进程对共享资源的读写同步,保证数据的最终一致性,引入了分布式锁。 分布式锁应该具备以下特点: 在分布式环境下,一个资源在同 阅读全文
posted @ 2022-03-16 09:35 aganippe 编辑
摘要:golang-etcd客户端操作 关于golang-etcd的所有api介绍和使用demo,可以参见 https://pkg.go.dev/go.etcd.io/etcd/client/v3#pkg-overview 1. 获取客户端连接 func main() { config := client 阅读全文
posted @ 2022-03-15 22:06 aganippe 编辑
摘要:1. 首先应该下载etcd的linux版本,并将压缩包传输到阿里云服务器上 https://github.com/etcd-io/etcd/releases 2. 简单说一下sftp的从本机传输到远程服务器的指令 lcd /Users/xxx/Downloads put etcd-v3.5.2-li 阅读全文
posted @ 2022-03-15 16:39 aganippe 编辑

点击右上角即可分享
微信分享提示