初识Turbopack、TypeScript 5.0 beta 发布、SkyWalking原理与应用| 酱酱的下午茶第163期

1,161 阅读7分钟

Hello,又到了每天一次的下午茶时间。酱酱们的下午茶新增优质作者介绍和码上掘金板块,专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见!

本文字数 2100+,阅读时间大约需要 10 分钟。

  • 【本期掘金酱的下午茶】亮点:
  • 初识Turbopack
  • TypeScript 5.0 beta 发布
  • vue3 table 性能优化
  • 开源框架APM工具--SkyWalking原理与应用
  • 浅谈索引与搜索
  • kotlin协程中的线程切换
  • 首页弹框太多?Flow帮你“链”起来
  • ……

筛选规则:文章发布时间在本期「掘金酱的下午茶」发布时间的 1-3 天内,且符合社区推荐标准,也会同步发布在掘金相关技术社群。

今日主理人|下午茶

本期每日掘金由 战场小包 负责制作。如有投稿文章,请私信👉 战场小包

PS:主理人目前正在招募中,有感兴趣的掘友们可以联系Captain

每日干货|下午茶

主理人们会对近期(1-3 天)社区深度技术好文进行挖掘和筛选,优质的技术文章有机会出现在下方列表,排名不分先后。

『前端』

TypeScript 已于 2023.01.26 发布 5.0 beta 版本,你可以在 5.0 Iteration Plan 查看所有被包含的 Issue 与 PR。

前段时间公司有一个比较重要的模块从 vue2 升级到 vue3,升级后发现 element-plus table 的性能相比 vue2 版本下降非常严重。自定义列全部勾选的场景下(20 行 x 180 列),列表中的开关切换,耗时从原先的 400-500 毫秒下降到 7-8 秒,严重影响用户体验,经过较长时间的性能测试、debug,找到了几处比较核心的优化点。

其实对于我而言,之前有了解过 WebAssembly,知道他很强大,但是没有实际的使用过。偶然间在调研和使用 ffmpeg 的过程中,看到了很多浏览器端的方案,都是使用了 WebAssembly,原来已经有很多实际的应用真的在使用它,那么它是不是 web 的未来呢?这篇文章主要就是带大家走进 WebAssembly,网上有很多类似的文章,但对于大多数的前端同学来说可能有难以理解的地方,所以本次文章尽量用通俗易懂的方式带大家了解 WebAssembly。

在接近年底的时候,有一个 Vue 项目,需要从中抽取 2 个模块出来。然后想着新建项目,Vue CLI 也是学,Vite 也是学,于是哼次哼次用上了 Vite,结果开始了一路的 bug 挨打之旅……

前端构建工具从 Grunt, Gulp 发展到具有划时代意义的 Webpack,Webpack 成为前端不可或缺的开发构建工具。但是随着前端的项目越来越大,无论是项目的启动时间,还是项目的打包时间,变得原来越长,短则四、五分钟,长则十几二十分钟。特别是在发版期间,打包速度直接影响发版效率。Webpack 打包速度成为了前端开发的最大痛点之一。

『后端』

Trie树,即字典树,又称单词查找树或键树,是一种树形结构,典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

随着业务系统的不断发展、微服务架构的演进,从原来的单体应用架构、垂直应用架构、分布式 SOA 架构到现在的微服务架构,系统逐步走向微服务化以适应用户高并发请求等需求。在微服务架构中,一个业务操作往往需要多个服务间协同操作,而在一个复杂的系统中出现问题的时候,需要我们能够快速的分析并定位到问题的原因,这就需要我们对业务进行一次还原,正是分布式链路追踪需要解决的问题。

在 Go 中,如果 interface{} 作为函数参数的话,是可以传任意参数的,然后通过类型断言来转换。

介绍了索引尤其是倒排索引,再通过索引进行搜索。使用倒排索引和调整过滤顺序等手段,优化检索逻辑,避免每次搜索都要遍历所有数据。

  • 索引:在MySQL中谈、在Java中谈
  • 倒排索引:在Java中谈、在MySQL中谈、在ES中谈
  • 实践:项目中使用索引加速搜索

转转自 2018 年开始推进容器技术在公司业务服务上的落地。在容器生态中,日志采集是非常重要且不可或缺的组件之一,它不仅仅涉及到业务方错误日志的排查,还涉及到日志数据统计系统,成为战略决策的重要参考依据。

『移动端』

在了解了kotlin协程的基本原理之后我们已经开始迫不及待的开始使用协程的另一个利器Flow。Flow其实对标的是RXJava,主要解决的也都是回调地狱。Flow相比于RXJava学习成本更加低廉,毕竟少了那么多奇奇怪怪的运算符。说到Flow对标RXJava,那么我们肯定会好奇Flow是怎么做线程切换的?

很多App一打开,首页都会有各种各样的交互,比如权限授权,版本更新,阅读协议,活动介绍,用户权限变更等,这些交互大多数都是以弹框为主,也会有少数几个是以页面或者别的形式出现,但是无论是弹框还是页面,这些只是表现形式,核心在于以下难点

  1. 如何去判断它们什么时候出来
  2. 它们出来的先后次序是什么
  3. 中途需求如果增加或者删除一个弹框或者页面,我们应该改动哪些逻辑

通过本篇文章,你将了解到:

  1. 冷流与热流区别
  2. SharedFlow 使用方式与应用场景
  3. SharedFlow 原理不一样的角度分析
  4. StateFlow 使用方式与应用场景
  5. StateFlow 原理一看就会
  6. StateFlow/SharedFlow/LiveData 区别与应用

Clang Module 是大概 2013 年左右出现的,它的出现是为了解决传统基于 C 语言的编程语言的头文件包含的弊端。也是现代 Apple 平台软件开发一定会用到的一个技术,了解 Clang Module 对我们组织代码结构,理解 Xcode 编译流程,优化编译速度,定位编译错误等都会有帮助。

趣味码上掘金分享|下午茶

  1. 码上掘金精选,收集优秀的码上掘金项目,供大家一起学习github.com/akira-cn/jc…

  2. 码上掘金游戏精选g.jcode.pub/#/716133153…

📖 投稿专区|下午茶

大家可以在评论区推荐认为不错的文章,并附上链接和推荐理由,有机会登上下一期。文章创建日期必须在近 1-3 天内;可以推荐自己的文章、也可以推荐他人的文章。