Hello,欢迎来到每日掘金时间。每日掘金专注于发掘站内优质创作者和优质内容,欢迎大家多提宝贵意见!
本文字数 2100+,阅读时间大约需要 6 分钟。
【本期掘金酱的每日掘金】亮点:
- 2023新春版:手把手教你搭建Electron24+React18+Antd5架构工程
- Rust 异步编程简单入门
- 使用 Rspack 构建真实开源项目,看看迁移成本和性能收益如何?
- 架构师日记-为什么数据一致性那么难
- 货拉拉云真机平台的演进与实践
- 前端正确处理“文字溢出”的思路
- 快速入门 GraphQL:一个接口实现所有 CRUD
- Immutable.js源码分析
- 深入理解MySQL索引底层数据结构
- 盘点各大主流日志组件的缓存和异步设置
- ……
筛选规则:文章发布时间在本期「掘金酱的每日掘金」发布时间的 1-3 天内,且符合社区推荐标准,也会同步发布在掘金相关技术社群。
今日主理人|每日掘金
本期每日掘金由 战场小包 负责制作。如有投稿文章,请私信👉 战场小包
PS:主理人目前正在招募中,有感兴趣的掘友们可以联系Captain
每日干货|每日掘金
主理人们会对近期(1-3 天)社区深度技术好文进行挖掘和筛选,优质的技术文章有机会出现在下方列表,排名不分先后。
『前端』
目录快阅:
1 Electron核心概念
2 初始化项目
3 Webpack配置
4 项目架构搭建
5 引入Ant Design 5.x
6 渲染进程开发
7 集成Electron
8 主进程与渲染进程通信方法一:send与on/once
9 主进程与渲染进程通信方法二:invoke与handle
10 打包Electron
11 常用配置
12 项目源码git
“文本溢出”的解决方法与方案。(附源码)
immutable.js是一个用于产生不可变数据结构的工具库,js原生的的map,set等结构属于可变结构,对函数式编程不够友好,immutable提供的数据结构可以保证新的操作不会对原有的数结构产生影响(类似于immer.js)
restful 接口是 url 代表资源,GET、POST、PUT、DELETE 请求代表对资源的增删改查。 这种接口返回什么数据完全由服务端决定,每次接口变动可能就得新加一种接口。 为了解决这种问题,facebook 创造了 graphql,这种接口返回什么数据完全由客户端决定。增删改查通过这一个接口就可以搞定。
对于 exclidraw 这个基于 webpack 的相对复杂的开源项目而言,我们把构建工具迁移到 Rspack 并没有想象中那么繁琐,迁移过程相对轻松,主要有两个原因:
Rspack 对于 webpack 本身 API 的兼容。在 Rspack 仓库的代码中沿用了 webpack 绝大部分的测试用例,对于 webpack 的很多基础能力 Rspack 是能完全覆盖的。
另一方面, Rspack 也对 webpack 生态中常用的 loader 和插件做了兼容,比如 sass-loader、html 插件、copy 插件等等。 同时迁移之后带来了 10 倍以上的构建性能提升,性能收益也很可观。让我们期待 Rspack 能在未来有更多的落地吧。
『后端』
索引本质上是一种排好序的数据结构,了解了MySQL索引的底层数据结构及存储原理,可以帮助我们更好地进行SQL优化。其实数据库索引调优是一项技术活,不能仅仅靠理论,因为实际情况千变万化,而且MySQL本身存在很复杂的机制,如查询优化策略和各种引擎的实现差异等都会使情况变得更加复杂。但同时这些理论是索引调优的基础,只有在明白理论的基础上,才能对调优策略进行合理推断并了解其背后的机制,然后结合实践中不断的实验和摸索,从而真正达到高效使用MySQL索引的目的。
- Log4j 1.x 已经过时,不再维护。因此,建议使用 Log4j2 或 Logback,因为它们提供了更先进的功能和更好的性能。
- Log4j2在性能方面具有明显优势,特别是在缓存和异步日志记录方面。Logback的性能优于Log4j,但略逊于Log4j2。Log4j的性能相对较低,但它仍然在许多现有项目中使用。在考虑性能时,推荐使用Log4j2或Logback作为日志框架。
- 使用缓存的缺点是可能会导致在应用程序崩溃或意外终止时丢失尚未写入磁盘的日志,在实现日志缓存时,需要在性能和日志数据安全性之间找到平衡
- 异步日志记录的主要作用是通过将日志记录操作与应用程序主流程分离,降低性能开销、提高吞吐量和缓解磁盘I/O压力。然而,也可能增加日志丢失的风险和内存占用。在实际应用中,需要根据应用程序的性能需求和日志记录负载来权衡异步日志记录的优缺点。
目前,分布式数据一致性问题还没有普世通用的解决方案,它需要从业务需求的角度出发,确定对各种一致性模型的接受程度,再通过具体场景来选择解决方案。从应用角度看,分布式事务的现实场景常常无法规避,特别是对涉及金融类的业务,数据一致性是底线,业务需要对数据有百分之百的掌控力。而一般的电商交易场景,使用基于消息队列的柔性事务框架是不错的选择。最后,附几种事务模型的功能对比表: | 关注点 | 本地事务 | 两(三)阶段事务 | 柔性事务 | | ---- | ----- | --------- | --------- | | 业务改造 | 无 | 无 | 实现协议接口 | | 一致性 | 不支持 | 支持 | 最终一致 | | 隔离性 | 不支持 | 支持 | 应用层保证 | | 并发性能 | 无影响 | 严重衰退 | 略微衰退 | | 适合场景 | 单一数据源 | 短事务 & 低并发 | 长事务 & 高并发 |
本文主要介绍货拉拉在云真机平台的建设过程中能力建设与落地实践上的一些经验。
async/await
是 Rust 的异步编程模型,是产生和运行并发任务的手段,async
来方便地生成 Future,await
来触发 Future 的调度和执行。
『移动端』
神秘失踪了...(正在努力找回失踪的移动端每日掘金...) 主理人正在招募中
📖 投稿专区|每日掘金
作者 | 文章 |
---|---|
SyMind | 从零开始的 swc 源代码学习 - 第一部分,使用编译器 |
大家可以在评论区推荐认为不错的文章,并附上链接和推荐理由,有机会登上下一期。文章创建日期必须在近 1-3 天内;可以推荐自己的文章、也可以推荐他人的文章。