技术阅读周刊第9️⃣期

news2024/11/22 5:26:25

127ae1a222101d8b7137837c57e922ba.png

技术阅读周刊,每周更新。

历史更新

  • 20231107:第五期

  • 20231117:第六期

  • 20231124:第七期

  • 20231201:第八期

美团技术博客十周年,感谢一路相伴 - 美团技术团队

URL: https://tech.meituan.com/2023/12/04/ten-years-of-meituan-technology-blog.html602cc5c922f88adfb5831e01053d10e3.png

美团技术博客更新十周年了,这个博客确实在广大开发者心中都是有口皆碑的;记得当初在这里看过 HashMap 的原理分析、动态线程池等技术;现在也有加到订阅列表里,有更新时会第一时间阅读

CompletableFuture原理与实践-外卖商家端API的异步化 - 美团技术团队

URL: https://tech.meituan.com/2022/05/12/principles-and-practices-of-completablefuture.html90223257708b4e39e3cbf0643da0a214.png

本文描述了美团对 API 做异步优化的过程,最终选择了 CompletableFuture 的过程CompletableFuture 使用起来的坑还是蛮多的,推荐大家都应该阅读下。

  • 明确知道自己的代码运行在哪个线程上,如果不传入线程池那就是公共的 ForkJoinPool 线程池,可能会有阻塞的情况;也可以直接传入自定义的线程池

  • 线程池循环使用可能会引起死锁,当 A 线程依赖于 B 线程的执行结果时,如果此时是同一个线程池,并且线程池已满,B 线程一直得不到机会执行,那 A 线程也无法运行,从而导致死锁。

  • 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;

没错,数据库确实应该放入 K8s 里!

URL: https://mp.weixin.qq.com/s/QJn6-EzPp7PXar-GdMITCA

虽然这是一篇软文,不过其中几个论据确实是有道理的。而 K8s 的控制器则是基于另一种思路:机器能做的事就不应该由人来做。通过 Operator,可以实现24 小时不间断地同步期望状态和实际状态,而这是用 Ansible 很难实现的,你用 Ansible 实现是想写个定时任务嘛?

  • 复杂度:

    • Sealos 提供了一键安装命令,有效降低其复杂度

  • 稳定性:

    • 一个良好的软件架构会不断提升和收敛其鲁棒性,并逐渐减少对人的依赖,比如使用 Oracle 的人喝茶时间一定比用开源 MySQL 的人喝茶时间多

  • 性能:

    • 而且,容器对数据库性能的影响几乎可以忽略不计,真正重要的是磁盘 IO 和网络带宽时延等因素。

目前市面上大部分云服务厂商所提供的数据库服务也都是跑在  kubernetes 中的。

deckarep/golang-set: A simple, battle-tested and generic set type for the Go language. Trusted by Docker, 1Password, Ethereum and Hashicorp.

URL: https://github.com/deckarep/golang-set40ca24cb3ae5cef99281d3589ee05609.png

一个泛型的 Go Set 库, 还提供了一些集合常用的操作工具,比如 Contains/Difference/Intersect 等函数。

已经被这些公司采用了:

  • Ethereum

  • Docker

  • 1Password

  • Hashicorp

// 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]()

文章链接:

  • https://tech.meituan.com/2023/12/04/ten-years-of-meituan-technology-blog.html

  • https://tech.meituan.com/2022/05/12/principles-and-practices-of-completablefuture.html

  • https://mp.weixin.qq.com/s/QJn6-EzPp7PXar-GdMITCA

  • https://github.com/deckarep/golang-set

PS:最近也在更新视频号,也会有一些技术干货,动动小手帮主播点播关注5dcc7a6a0658a4b1d2c105cbc37526d8.jpeg

fbe73d0f1e349c9fd942f44b2fa2f0f4.jpeg

往期推荐

技术阅读周刊第第8️⃣期

五分钟 k8s 实战-滚动更新与优雅停机

五分钟 k8s 实战-应用探针

技术阅读周刊第第7️⃣期

升级到 Pulsar3.0 后深入了解 JWT 鉴权

d67518d7e2c50feea238dfdf6b2fd5ae.gif

点分享

bad7f2360a77bed0d5e84f6f2eb4af23.gif

点收藏

570cbb8bb53d363fcabe1732670c51ec.gif

点点赞

b3b395bc46fc644040c3092e0659b5ca.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1307260.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java学生选课系统 数据库版

首先让我们创建一个数据库 让我们向表中插入数据然后查询它

AI全栈大模型工程师(二十八)如何做好算法备案

互联网信息服务算法 什么情况下要备案? 对于B2B业务,不需要备案。 但在B2C领域,一切要视具体情况而定。 如果我们自主训练大型模型,这是必要的。 但如果是基于第三方模型提供的服务,建议选择那些已获得备案并且具有较大…

光伏开发设计施工一体化系统都有哪些功能?

随着全球对可再生能源的需求不断增加,光伏行业得到了快速发展。同时也面临着一些挑战,例如初始投资成本高、需要大量土地和水资源等。鹧鸪云光伏与储能软件利用技术创新,促进光伏行业数字化升级。 一、智能测算 1.投融资表:采用…

如何处理PHP开发中的单元测试和自动化测试?

如何处理PHP开发中的单元测试和自动化测试,需要具体代码示例 随着软件开发行业的日益发展,单元测试和自动化测试成为了开发者们重视的环节。PHP作为一种广泛应用于Web开发的脚本语言,单元测试和自动化测试同样也在PHP开发中扮演着重要的角色…

java智慧工地系统:让工地管理可视化、数字化、智能化

智慧工地功能包括:劳务管理、施工安全管理、视频监控管理、机械安全管理、危大工程监管、现场物料监管、绿色文明施工、安全隐患排查、施工综合管理、施工质量管理、设备管理、系统管理等模块。 一、项目开发环境 技术架构:微服务 开发语言:…

Ubuntu 设置共享文件夹

一、在Windows中建立一个英文的文件夹 注意:新建文件夹的名称一定要是英文的,不能出现中文的路径(可能出现问题) 二、在VMware中添加共享文件 3: VMware安装VMware Tools 一般安装成功桌面上会显示这个安装包,&…

【从零开始学习JAVA集合 | 第一篇】深入解读HashMap源码(含面试题)

目录 目录 前言: HashMap简介: HashMap的常用常量和变量: HashMap的重要考点: HashMap的存储过程: HashMap的扩容过程: HashMap的初始化: 常见面试题: 总结:…

菜鸟学习日记(python)——迭代器与生成器

迭代器 迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:it…

【大数据】Hudi 核心知识点详解(一)

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 &#x…

win10中CMD找不到adb的解决方法

问题描述: 在cmd命令行输入”adb devices” 时就会出现”adb不是内部命令或者外部命令….”,出现这个问题主要是windows系统环境变量没设置好。 配置环境变量 找到本地 adb.exe 程序所在目录,复制当前目录;找到高级系统设置 &g…

CleanMyMac X2024(Mac优化清理工具)v4.14.5中文版

CleanMyMac X是一款颇受欢迎的专业清理软件,拥有十多项强大的功能,可以进行系统清理、清空废纸篓、清除大旧型文件、程序卸载、除恶意软件、系统维护等等,并且这款清理软件操作简易,非常好上手,特别适用于那些刚入手苹…

Xubuntu16.04系统中使用EDIMAX EW-7822UAC无线网卡开启5G自发AP

目录 1.关于 EDIMAX EW-7822UAC2.驱动安装3.查看无线网卡信息3.通过create_ap配置5G自发AP 1.关于 EDIMAX EW-7822UAC 官网介绍 https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/wireless_adapters_ac1200_dual-band/ew-7822uac/ 详细参数…

大数据企业如何使用IP代理进行数据抓取

目录 一、引言 二、IP代理概述 三、为什么大数据企业需要使用IP代理 四、使用IP代理进行数据抓取的步骤 1、获取可用的代理IP 2、配置代理IP 3、设置请求头部信息 4、开始数据抓取 5、错误处理和重试 五、IP代理的注意事项 六、总结 一、引言 随着互联网的快速发展…

C++笔记汇总(随时更新)

你好,这里是争做图书馆扫地僧的小白。 个人主页:争做图书馆扫地僧的小白_-CSDN博客 目标:希望通过学习技术,期待着改变世界。 目录 前言 一、C语言向C语言过度的知识点 二、C语言的相关知识 总结 前言 2023.12.13 之前撰写的笔…

解决maven报错 ‘parent.relativePath‘ of POM

错误提示 parent.relativePath of POM io.renren:renren-fast:3.0.0 (D:\wzyProjets\gulimail\renren-fast\pom.xml) points at com.wzy.gulimail:gulimail instead of org.springframework.boot:spring-boot-starter-parent, please verify your project structure错误分析 子…

记录 | vscode无法在这个大型工作区中监视文件更改,请按照说明链接解决问题

在 VSCode 上打开一个项目时,突然弹出以下错误: 无法在这个大型工作区中监视文件更改。请按照说明链接解决问题。 原因: 由于工作区太大包含太多文件导致vs code监视文件达到上限而因此这个错误。在 Linux 上执行以下命令: cat …

AI智能视界,视频监控技术的革新与突破

智能视频监控概述 TSINGSEE青犀智能监控系统是通过摄像头采集视频数据,经过压缩技术处理后传输至服务器,再由服务器进行存储和管理并汇聚到EasyCVR视频融合平台之中,进行统一的分发处理。采用先进的视频压缩技术,确保视频质量&am…

Java_Mybatis_缓存

缓存 1.概述 Mybatis 缓存:MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制 2.会话缓存(一级缓存) sqlSession 级别的,也就是说,使用同一个 sqlSession 查询同一 sql 时&#x…

小新Air-14 Plus 2021款AMD ACN版(82L7)原装出厂Win11系统镜像

LENOVO联想笔记本开箱状态原厂Windows11系统包 链接:https://pan.baidu.com/s/1D_sYCJAtOeUu9RbTIXgI3A?pwd96af 提取码:96af 联想小新AIR14笔记本电脑原厂系统自带所有驱动、出厂主题壁纸、Office办公软件、联想电脑管家等预装程序 所需要工具&am…

【小聆送书第二期】人工智能时代AIGC重塑教育

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋正文📝活动参与规则 参与活动方式文末详见。 📋正文 AI正迅猛地…