每日心得

记录我在编程道路上的每日所思所想,分享学习和工作中的灵感、心得和教训。

2023年12月
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
归档
  • 2023年12月 8
  • 2023年11月 15
  • 2023年10月 12
  • 2023年9月 10
  • 2023年8月 14

React性能优化技巧

2023年12月1日 星期五

今天在优化一个React应用时,发现了几个有效的性能优化技巧,记录下来以备后用:

  1. 使用React.memo进行组件缓存 - 对于纯展示型组件,可以用React.memo包裹以避免不必要的重渲染。特别是在列表渲染中,这个优化效果非常明显。
  2. 懒加载和代码分割 - 使用React.lazy和Suspense可以实现组件的按需加载,减少初始加载时间。
  3. 虚拟列表 - 对于长列表,使用react-window或react-virtualized可以只渲染可视区域的项,大大提高了性能。
  4. 使用useCallback缓存函数 - 特别是传递给子组件的回调函数,用useCallback包裹可以避免每次渲染都创建新函数。

在一个有10000条数据的列表中应用这些技巧后,渲染时间从3.5秒降到了300ms,效果显著。明天计划继续研究Context API的性能优化方案。

React 性能优化 前端 工作

数据库索引设计的思考

2023年11月25日 星期六

最近项目中遇到了数据库查询性能问题,今天花了点时间研究了索引设计的最佳实践:

  • 索引并不是越多越好,每个索引都会占用空间并影响写入性能
  • 复合索引的列顺序很重要,应遵循"最左前缀匹配原则"
  • 应该优先考虑在WHERE、JOIN和ORDER BY子句中的列上创建索引
  • 对于频繁更新的表,要慎重添加索引

经过优化后,原本需要5秒的查询现在只需要200ms了。这再次证明了良好的数据库设计对应用性能的重要性。

另外,发现了一个有用的工具:MySQL的EXPLAIN命令,它可以帮助分析查询执行计划,找出潜在的性能瓶颈。明天打算继续深入学习一下查询优化的其他方面。

数据库 MySQL 性能优化 问题解决

微服务架构中的服务发现

2023年11月20日 星期一

今天深入研究了微服务架构中的服务发现机制,主要比较了几种不同的实现方式:

  • 客户端发现模式:客户端直接查询服务注册表,获取可用服务实例的位置,然后进行负载均衡。例如Spring Cloud中的Eureka+Ribbon组合。
  • 服务端发现模式:客户端通过负载均衡器发送请求,由负载均衡器查询服务注册表并将请求转发到可用的服务实例。例如Kubernetes中的Service概念。
  • 注册中心:比较了Eureka、Consul、ZooKeeper和etcd等不同的服务注册与发现工具,它们各有优缺点。

在我们的新项目中,决定采用Consul作为服务注册中心,因为它提供了服务发现、健康检查、KV存储和多数据中心支持等丰富功能,而且比ZooKeeper更轻量级。

下一步计划研究的是API网关在微服务架构中的作用和实现方式。

微服务 架构 服务发现 学习