上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页
摘要: 介绍 我猜测大部分长期使用 Java 的开发者应该较少会接触 gRPC,毕竟在 Java 圈子里大部分使用的还是 Dubbo/SpringClound 这两类服务框架。 我也是近段时间有机会从零开始重构业务才接触到 gRPC 的,当时选择 gRPC 时也有几个原因: 基于云原生的思路开发部署项目,而 阅读全文
posted @ 2022-03-10 18:15 crossoverJie 阅读(974) 评论(0) 推荐(0)
摘要: 前言 最近实现某个业务时,需要读取数据然后再异步处理;在 Go 中实现起来自然就比较简单,伪代码如下: list := []*Demo{{"a"}, {"b"}} for _, v := range list { go func() { fmt.Println("name="+v.Name) }() 阅读全文
posted @ 2021-12-28 00:43 crossoverJie 阅读(733) 评论(1) 推荐(2)
摘要: 前言 早在几年前写过关于 LRU cache 的文章: https://crossoverjie.top/2018/04/07/algorithm/LRU-cache/ 当时是用 Java 实现的,最近我在完善 ptg 时正好需要一个最近最少使用的数据结构来存储历史记录。 ptg: Performa 阅读全文
posted @ 2021-12-20 18:27 crossoverJie 阅读(308) 评论(0) 推荐(0)
摘要: 前言 平时大家写完 gRPC 接口后是如何测试的?往往有以下几个方法: 写单测代码,自己模拟客户端测试。 可以搭一个 gRPC-Gateway 服务,这样就可以在 postman 中进行模拟。 但这两种方法都不是特别优雅;第一种方法当请求结构体嵌套特别复杂时,在代码中维护起来就不是很直观;而且代码会 阅读全文
posted @ 2021-11-29 18:03 crossoverJie 阅读(780) 评论(2) 推荐(2)
摘要: 前言 前段时间有个项目即将上线,需要对其中的核心接口进行压测;由于我们的接口是 gRPC 协议,找了一圈发现压测工具并不像 HTTP 那么多。 最终发现了 ghz 这个工具,功能也非常齐全。 事后我在想为啥做 gRPC 压测的工具这么少,是有什么难点嘛?为了验证这个问题于是我准备自己写一个工具。 特 阅读全文
posted @ 2021-11-15 17:40 crossoverJie 阅读(210) 评论(0) 推荐(0)
摘要: 不知不觉写 Go 已经快一年了,上线了大大小小好几个项目;心态也经历了几轮变化。 因为我个人大概前五年时间写的是 Java ,中途写过一年多的 Python,所以刚接触到 Go 时的感觉如下图: 既没有 Java 的生态,也没有 Python 这么多语法糖。 写到现在的感觉就是: 这里就不讨论这几门 阅读全文
posted @ 2021-11-02 08:17 crossoverJie 阅读(6523) 评论(1) 推荐(2)
摘要: Go 里的超时控制 前言 日常开发中我们大概率会遇到超时控制的场景,比如一个批量耗时任务、网络请求等;一个良好的超时控制可以有效的避免一些问题(比如 goroutine 泄露、资源不释放等)。 Timer 在 go 中实现超时控制的方法非常简单,首先第一种方案是 Time.After(d Duration): func 阅读全文
posted @ 2021-10-28 01:24 crossoverJie 阅读(750) 评论(0) 推荐(0)
摘要: 前言 设计模式不管是在面试还是工作中都会遇到,但我经常碰到小伙伴抱怨实际工作中自己应用设计模式的机会非常小。 正好最近工作中遇到一个用观察者模式解决问题的场景,和大家一起分享。 背景如下: 在用户创建完订单的标准流程中需要做额外一些事情: 同时这些业务也是不固定的,随时会根据业务发展增加、修改逻辑。 阅读全文
posted @ 2021-09-05 21:45 crossoverJie 阅读(378) 评论(0) 推荐(1)
摘要: 前言 作为一个 Go 语言新手,看到一切”诡异“的代码都会感到好奇;比如我最近看到的几个方法;伪代码如下: func FindA() ([]*T,error) { } func FindB() ([]T,error) { } func SaveA(data *[]T) error { } func 阅读全文
posted @ 2021-08-01 23:35 crossoverJie 阅读(344) 评论(1) 推荐(0)
摘要: 前言 最近在实现两个需求,由于两者之间并没有依赖关系,所以想利用队列进行解耦;但在 Go 的标准库中并没有现成可用并且并发安全的数据结构;但 Go 提供了一个更加优雅的解决方案,那就是 channel。 channel 应用 Go 与 Java 的一个很大的区别就是并发模型不同,Go 采用的是 CS 阅读全文
posted @ 2021-07-05 20:32 crossoverJie 阅读(785) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页