SVG安全、责任链模式、Gradle Plugin的开发及发布、Mysql到TiDB迁移| 酱酱的下午茶第 143 期

1,138 阅读5分钟

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

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

  • 【本期掘金酱的下午茶】亮点:
  • SVG 安全
  • CSS新规范:样式查询
  • 责任链模式的高级用法:多级校验、工作流,这样写代码才足够优雅!
  • Mysql到TiDB迁移,双写数据库兜底方案
  • Gradle Plugin的开发及发布
  • Android 字节码插桩全流程解析
  • 从0实现React18系列二
  • ……

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

今日主理人|下午茶

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

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

每日干货|下午茶

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

『前端』

本篇文章的目的有:

  •  了解 SVG 漏洞
  •  了解 SVG 常见防护手段
  •  搜寻 SVG 数据安全性校验和过滤的库
  •  了解如何使用此类库来进行 SVG 上传防护
  •  阅读源码,能明确讲述此类库做了什么

本文简单列举了渲染函数和JSX配合基本使用

本系列是讲述从0开始实现一个react18的基本版本。由于React源码通过Mono-repo 管理仓库,我们也是用pnpm提供的workspaces来管理我们的代码仓库,打包我们使用rollup进行打包。

最近,Chrome团队发布了对一个新的CSS规范的实验性支持,即样式查询。简而言之,它让我们查询容器的样式,而不是只查询尺寸。在查询容器尺寸不够的情况下,这可能很有帮助。

Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的功能封装在您的代码之外)并且在您的 web 应用中使用它们。

『后端』

责任链模式,简而言之,就是将多个操作组装成一条链路进行处理。请求在链路上传递,链路上的每一个节点就是一个处理器,每个处理器都可以对请求进行处理,或者传递给链路上的下一个处理器处理。

本文将从BIO开始介绍,经过NIO、多路复用,最终说回Redis的Reactor模型,力求详尽。

TiDB 作为开源 NewSQL 数据库的典型代表之一,同样支持 SQL,支持事务 ACID 特性。在通讯协议上,TiDB 选择与 MySQL 完全兼容,并尽可能兼容 MySQL 的语法。因此,基于 MySQL 数据库开发的系统,大多数可以平滑迁移至 TiDB,而几乎不用修改代码。对用户来说,迁移成本极低,过渡自然。

在构建分布式系统时,分布式协调是否总是必要选项?本文通过一些实际的例子讨论了这一问题,并通过把问题区分为是否具有单调性做为是否需要分布式协调的标准。

『移动端』

经过前面部署Jenkins自动化打包任务,以及桌面端APK工具的开发,基本已经把国内项目组所面临的问题解决了。但是呢,Jenkins这一套着实是繁琐,而且对海外项目组支持也不友好。所以我又决定开发一个gradle插件来作为一个轻量级的打包发布方案,该方案可以同时兼顾公司海内外的所有项目

Android进阶宝典 -- Handler应用于线上卡顿监控中,我简单介绍了一下关于ASM实现字节码插桩来实现方法耗时的监控,但是当时只是找了一个特定的class文件,针对某个特定的方法进行插桩,但是真正的开发中不可能这么做的,因为整个工程中会有成百上千的方法,而且存储的位置也各有不同,这个时候,我们就需要借助gradle插件来实现ASM字节码插桩。

添加 UIViewanimateWithDuration 方法后,这里用的是屏幕刷新检测,来获取当前控件的 layer.presentationLayer.frame 来检测碰撞,其他逻辑都相对简单。代码拙劣,大神勿笑[抱拳][抱拳][抱拳]

select在1.6的版本中还是一个实验性的特性,但是如果select与Deferred、Channel结合使用的话可以显著的提高程序运行的效率以及改善程序的灵活性和可扩展性。今天主要来聊一聊select的使用。

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

📖 投稿专区|下午茶

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