还为rem配置苦恼?gRPC 中的拦截器;两种Redis延迟队列方案 | 酱酱的下午茶第173期

1,094 阅读7分钟

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

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

【本期掘金酱的下午茶】亮点:

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

每日干货|下午茶

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

『前端』

  本文首先整理了什么是 React 组件的 re-render,然后分析了触发组件 re-render 的常见操作,最后总结了优化 re-render 导致的性能问题的常见方法。在开发 React 应用的过程中遇到性能问题时,希望本文能给读者提供一个可供参考的优化思路。

1.性能优化指标与测量工具;2.渲染优化;3.代码优化;
4.资源优化;5.构建优化;6.传输加载优化;7.更多解决方案

  我们在项目打包时,常常会看到 .js.map 的文件,这就是 sourcemap 文件。sourcemap 记录了源代码和编译后代码的相关信息,可以将编译后代码映射为源代码,以帮助开发人员排查问题代码出现的位置,进而对问题代码进行修复。

  1. rem单位的原理和作用
  2. rem适配、设计稿、实际视窗大小的关系,并得出了式子
  3. 根据式子,完成了动态初始化root font-size的方法initRem(),以及更为方便的在js中使用rem的方法getRem()
  4. 通过postcss生态完成了css编译时 px => rem 的自动转换
  5. 多项目之间通过接入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 中的拦截器整体上来说可以分为两大类:

  1. 服务端拦截器
  2. 客户端拦截器

  性能优化一直是大家关注的话题,其优化方向涉及到 CPU 调度、内存、IO等,本文重点针对内存优化提出了几点思路。但是鱼与熊掌不可兼得,文章提到的调优操作都有各自的优点和缺点,不存在一个适用于所有情况的优化方法。针对于不同的 workload,需要分析出具体的性能瓶颈,从而采取对应的调优方法,不能一刀切的进行设置。在没有发现明显性能抖动的情况下,往往可以继续保持当前配置。

『移动端』

  主要介绍是ViewPager2的「离屏加载机制」,你可能是第一次听说这个术语,但在实际开发中,你肯定使用过它,因为它对应的配置入口,就是ViewPager2的OffscreenPageLimit属性。

  本文准备介绍一下,工厂模式中的最后一种模式——抽象工厂模式。之前介绍了,工厂方法模式感兴趣的童鞋可以看下这篇文章,讲个故事,看看能不能理解工厂方法模式。 本文通过讲故事的方法,来讲解抽象工厂模式,其中包含了大量的代码,但是代码内容都不难,很容易理解。希望您能耐心看完。

Coroutines是近几年在Kotlin上Google主推的异步问题解决方案,至少在Android R Asynctask被放弃后,打开Android Document看到最显目的提示项目就是导引你至Coroutine的页面教导你怎么使用Coroutine。

本文详细讲解了Okio中超时机制的实现原理,主要是TimeoutAsyncTimeout类的源码分析与解读。

文中要点:

  • Okio 基于等待-唤醒机制,使用Watchdog线程来检测超时。
  • 当要对某项操作或任务进行超时检测时,将它们放到enterexit的中间。
  • Okio 对链表的使用非常频繁,在文件读写和超时检测都使用到了链表这个结构。

  随着技术的发展,网络环境也变得越来越复杂,而对于一个以网络数据传输提供服务的 App 来讲,在复杂多变的网络环境下安全稳定有效的提供好服务显得尤为重要。而为了提供安全稳定有效的 HTTP 网络服务,我们从网络请求的初始阶段 DNS 解析上保证 DNS 安全性的技术:去分析下苹果2022年 WWDC 讲到的 DNSSEC 技术和我们云音乐现行的 HTTPDNS 并做下对比。

今日主理人|下午茶

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

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

📖 投稿专区|下午茶

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