Hello,又到了每天一次的下午茶时间。酱酱们的下午茶新增优质作者介绍和码上掘金板块,专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见!
本文字数 2100+,阅读时间大约需要 7 分钟。
【本期掘金酱的下午茶】亮点:
- 还在为rem配置苦恼?
- 聊一聊 gRPC 中的拦截器
- 用Redis实现延迟队列,我研究了两种方案,发现并不简单
- React 组件性能优化:如何避免不必要的 re-render
- 前端性能优化的整理笔记
- sourcemap 这么讲,我彻底理解了
- Spring Boot 优雅停机
- 【动画图解】这个值取对了,ViewPager2才能纵享丝滑
- 几分钟时间,试着学一下抽象工厂模式
- Android | 彻底理解 Okio 超时机制
- 网络安全 DNSSEC & HTTPDNS
- ……
筛选规则:文章发布时间在本期「掘金酱的下午茶」发布时间的 1-3 天内,且符合社区推荐标准,也会同步发布在掘金相关技术社群。
每日干货|下午茶
主理人们会对近期(1-3 天)社区深度技术好文进行挖掘和筛选,优质的技术文章有机会出现在下方列表,排名不分先后。
『前端』
本文首先整理了什么是 React 组件的 re-render,然后分析了触发组件 re-render 的常见操作,最后总结了优化 re-render 导致的性能问题的常见方法。在开发 React 应用的过程中遇到性能问题时,希望本文能给读者提供一个可供参考的优化思路。
1.
性能优化指标与测量工具;2.
渲染优化;3.
代码优化;
4.
资源优化;5.
构建优化;6.
传输加载优化;7.
更多解决方案
我们在项目打包时,常常会看到
.js.map
的文件,这就是 sourcemap 文件。sourcemap 记录了源代码和编译后代码的相关信息,可以将编译后代码映射为源代码,以帮助开发人员排查问题代码出现的位置,进而对问题代码进行修复。
- rem单位的原理和作用
- rem适配、设计稿、实际视窗大小的关系,并得出了式子
- 根据式子,完成了动态初始化root font-size的方法initRem(),以及更为方便的在js中使用rem的方法getRem()
- 通过postcss生态完成了css编译时 px => rem 的自动转换
- 多项目之间通过接入px2rem2js进行js中rem初始化和获取rem的相关方法的统一与维护
组件封装三步走:第一步:接口数据格式分析;第二步:需求分析;第三步:代码实现
『后端』
SpringBoot 通过 Shutdown Hook 来注册 doclose() 回调方法,在应用关闭的时候触发执行。
SpringBoot 在创建 webserver的时候,会注册实现 smartLifecycel 接口的 bean,用来优雅关闭 tomcat
doClose()在销毁 bean, 关闭容器之前会执行所有实现 Lifecycel 接口 bean 的 stop方法,并且会按 Phase 值分组, phase 大的优先执行。
WebServerGracefulShutdownLifecycle,Phase=Inter.MAX_VALUE,处于最优先执行序列,所以 tomcat 会先触发优雅关闭,并且tomcat 关闭方法是异步执行的,主线会继续调用执行本组其他 bean 的关闭方法,然后等待所有 bean 关闭完毕,超过等待时间,会执行下一组 Lifecycle bean 的关闭。
1、简述:简单介绍EventBus及其组成部分。
2、原理解析:主要对listener注册流程及Event发布流程进行解析。
3、使用指导:EventBus简单的使用指导。
4、注意事项:在使用EventBus中需要注意的一些隐藏逻辑。
5、分享时提问的问题
6、项目中遇到的问题:上述问题进行详细描述并复现场景。
两种Redis延迟队列方案:
① 监听过期key;
② Redisson实现延迟队列
gRPC 中的拦截器整体上来说可以分为两大类:
- 服务端拦截器
- 客户端拦截器
性能优化一直是大家关注的话题,其优化方向涉及到 CPU 调度、内存、IO等,本文重点针对内存优化提出了几点思路。但是鱼与熊掌不可兼得,文章提到的调优操作都有各自的优点和缺点,不存在一个适用于所有情况的优化方法。针对于不同的 workload,需要分析出具体的性能瓶颈,从而采取对应的调优方法,不能一刀切的进行设置。在没有发现明显性能抖动的情况下,往往可以继续保持当前配置。
『移动端』
主要介绍是ViewPager2的「离屏加载机制」,你可能是第一次听说这个术语,但在实际开发中,你肯定使用过它,因为它对应的配置入口,就是ViewPager2的OffscreenPageLimit属性。
本文准备介绍一下,工厂模式中的最后一种模式——抽象工厂模式。之前介绍了,工厂方法模式感兴趣的童鞋可以看下这篇文章,讲个故事,看看能不能理解工厂方法模式。 本文通过讲故事的方法,来讲解抽象工厂模式,其中包含了大量的代码,但是代码内容都不难,很容易理解。希望您能耐心看完。
Coroutines是近几年在Kotlin上Google主推的异步问题解决方案,至少在Android R Asynctask被放弃后,打开Android Document看到最显目的提示项目就是导引你至Coroutine的页面教导你怎么使用Coroutine。
本文详细讲解了Okio中超时机制的实现原理,主要是
Timeout
和AsyncTimeout
类的源码分析与解读。文中要点:
- Okio 基于等待-唤醒机制,使用
Watchdog
线程来检测超时。- 当要对某项操作或任务进行超时检测时,将它们放到
enter
和exit
的中间。- Okio 对链表的使用非常频繁,在文件读写和超时检测都使用到了链表这个结构。
随着技术的发展,网络环境也变得越来越复杂,而对于一个以网络数据传输提供服务的 App 来讲,在复杂多变的网络环境下安全稳定有效的提供好服务显得尤为重要。而为了提供安全稳定有效的 HTTP 网络服务,我们从网络请求的初始阶段 DNS 解析上保证 DNS 安全性的技术:去分析下苹果2022年 WWDC 讲到的 DNSSEC 技术和我们云音乐现行的 HTTPDNS 并做下对比。
今日主理人|下午茶
本期每日掘金由 南方者 负责制作。
主理人目前正在招募中,有感兴趣的掘友们可以联系 Captain
📖 投稿专区|下午茶
大家可以在评论区推荐认为不错的文章,并附上链接和推荐理由,有机会登上下一期。文章创建日期必须在近 1-3 天内;可以推荐自己的文章、也可以推荐他人的文章。