技术阅读周刊,每周更新。
URL: https://tech.meituan.com/2023/12/04/ten-years-of-meituan-technology-blog.html
美团技术博客更新十周年了,这个博客确实在广大开发者心中都是有口皆碑的;记得当初在这里看过 HashMap 的原理分析、动态线程池等技术;现在也有加到订阅列表里,有更新时会第一时间阅读
URL: https://tech.meituan.com/2022/05/12/principles-and-practices-of-completablefuture.html
本文描述了美团对 API 做异步优化的过程,最终选择了 CompletableFuture 的过程
CompletableFuture
使用起来的坑还是蛮多的,推荐大家都应该阅读下。
ForkJoinPool
线程池,可能会有阻塞的情况;也可以直接传入自定义的线程池CompletableFuture
的异常往往会被包装为CompletionException,所以最好是要异常工具类进行提取public class ExceptionUtils {
public static Throwable extractRealException(Throwable throwable) {
//这里判断异常类型是否为CompletionException、ExecutionException,如果是则进行提取,否则直接返回。
if (throwable instanceof CompletionException || throwable instanceof ExecutionException) {
if (throwable.getCause() != null) {
return throwable.getCause();
}
}
return throwable;
URL: https://mp.weixin.qq.com/s/QJn6-EzPp7PXar-GdMITCA
虽然这是一篇软文,不过其中几个论据确实是有道理的。而 K8s 的控制器则是基于另一种思路:机器能做的事就不应该由人来做。通过 Operator,可以实现24 小时不间断地同步期望状态和实际状态,而这是用 Ansible 很难实现的,你用 Ansible 实现是想写个定时任务嘛?
目前市面上大部分云服务厂商所提供的数据库服务也都是跑在 kubernetes 中的。
URL: https://github.com/deckarep/golang-set
一个泛型的 Go Set 库, 还提供了一些集合常用的操作工具,比如 Contains/Difference/Intersect 等函数。
已经被这些公司采用了:
// Syntax example, doesn't compile.
mySet := mapset.NewSet[T]() // T 是具体的类型
// Therefore this code creates an int set
mySet := mapset.NewSet[int]()
// Or perhaps you want a string set
mySet := mapset.NewSet[string]()
type myStruct struct {
name string
age uint8
}
// Alternatively a set of structs
mySet := mapset.NewSet[myStruct]()
// Lastly a set that can hold anything using the any or empty interface keyword: interface{}. This is effectively removes type safety.
mySet := mapset.NewSet[any]()
文章链接:
PS:最近也在更新视频号,也会有一些技术干货,动动小手帮主播点播关注
往期推荐
点分享
点收藏
点点赞
点在看
本文分享自 crossoverJie 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!