iOS16 Depth Effect 效果;不喜欢 React 的N个理由; 历代GC算法刨析ZGC | 酱酱的下午茶第168期

1,341 阅读7分钟

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

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

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

每日干货|下午茶

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

『前端』

  React 有很多优点,比如 Props的设计以及友好的 TS 支持。但从语言的设计层面来讲,React 可能有太多历史包袱,很多东西设计的不符合直觉,需要开发者深入理解。最后倒是觉得 vue3 是 React 的最佳实践

  万维网联盟 Web 可访问性推进组织制定了 Web 内容可访问性指南,即 WCAG,以便残疾人士(包括视觉、听觉、身体、语音、认知、语言、学习和神经系统残疾)可以更方便的访问 Web 内容。

  这篇文章介绍了 SWR 的的优势及使用场景,它非常适合例如 SaaS 产品或者后台管理系统这种对于数据实时性有一定要求的项目。 在写文章的过程中 SWR 发布了新版本 SWR 2.0 发布,新增了很多特性,但没有中文翻译,因此我也为它们的文档贡献了一些中文翻译的 PR ,其中也包括了这篇 理解 SWR。大家在使用的时候也可以看看,加深下理解 ,希望中文文档能降低大家的使用成本,使这个优秀的库可以在国内的流传度更高些。

在webpack项目实现mock服务器

  当浏览器请求一个资源时,浏览器会先判断本地有没有缓存; 没有缓存则直接发送请求,拿到最新的资源;如果有缓存,就判断是否过期; 如果没过期就直接用本地缓存的资源,如果过期了就再看有没有 Last-Modified或 ETag; 没有的话就直接请求资源,有的话就带上该标识去往服务端,服务端会根据该资源的修改情况返回200或304; 最后拿到数据,渲染页面。

『后端』

  云压测主要聚焦在压测平台的发压端基础能力构建,实时展示了客户端的性能指标趋势,包括并发数、RPS、latency、错误率,适配大部分HTTP、gRPC、websocket等协议,针对私有协议、信息流、视频流有go plugin的自定义埋点解决方案。

Pulsar 负载均衡原理 =》 ThresholdShedder 原理 =》 问题原因与优化方案

① 思维形成-测试流程总结; ② 行之有道-测试用例的设计;
③ 更进一步-项目质量方案; ④ 质量底线-安全生产;

gRPC 入个门

  ZGC 并不是一个凭空冒出的全新垃圾回收,它结合前几代 GC 的思想,同时在战术上做了优化以达到极限的 STW,ZGC 的优秀表现有可能会改变未来程序编写方式,站在垃圾收集器的角度,垃圾收集器特别喜欢不可变对象,原有编程方式鉴于内存、GC 能力所限使用可变对象来复用对象而不是销毁重建,试想如果有了 ZGC 的强大回收能力的加持,是不是我们就可以无脑的使用不可变对象进行代码编写.

『移动端』

  toImageSync 只是一个简单的 API ,但是它的背后经历了很多故事,同时 toImageSync 和它对应的封装 SnapshotWidget ,最终的目的就是提高 Flutter 运行的性能。
  也许目前对于你来说 toImageSync 并不是必须的,甚至 SnapshotWidget 看起来也很鸡肋,但是一旦你需要处理复杂的绘制场景时, toImageSync 就是你必不可少的菜刀。

1.ChatGPT 的特点和劣势;2.代码的生成与规则诱导;3.解决方案的概念;4.Dart 数据类生成器完善;5.代码生成字符串 与 ChatGPT 生成字符串.

  Compose其实就是UI框架,它最主要的功能就是让开发人员更加快速的实现 页面逻辑&交互效果 这是目的。
  对于传统的XML来说,我们通过请求去服务器获取数据,请求成功后,我们需要findViewById找到页面元素View,再设置View的属性,更新页面展示状态。整个过程是按 http请求 -> 响应 -> 寻找对应View -> 更新对应View按部就班就地执行,这种思想就是命令式编程。
  但是Compose描述为 http请求 -> 响应 -> 更新mutableData -> 引用对应数据的View自动重组,整个过程不需要我们开发去写更新UI的代码(发出命令),而是数据发生改变,UI界面自动更新,可以理解为声明式。

  ListView这样的滚动组件,滚动组件会提供一个区块,用于滚动的显示内容,但内容很多时,我们只能看到可滚动内容中的部分内容。这个就是视窗(ViewPort),也就是列表的可视区域大小。例如一个ListView的显示区域高度为500像素,它列表项总高度可能远远超过500个像素,但是它的ViewPort仍为500像素。
  那么Sliver是什么呢?我们可以通过ListView.builder(),设置itemCount为null,构建一个无限的列表内容,只有当我们滚动时,才会动态的去创建需要呈现在视窗中的内容。这个就是Sliver,如果一个滚动组件支持Sliver模型,那么这个组件会将子组件分成很多个Sliver,只有当Sliver出现在视窗中才会构建。

iOS 16 带来的 Depth Effect 图片效果

今日主理人|下午茶

本期每日掘金由 南方者 负责制作。

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

📖 投稿专区|下午茶

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