- 博客(20)
- 收藏
- 关注
原创 【无标题】mysql性能优化
MySQL性能优化指南摘要 该指南系统性地总结了MySQL性能优化的7个关键层面: SQL优化(解决80%性能问题) 索引设计(核心优化点) 表结构优化(字段类型/大字段处理) 服务层配置(缓存/连接池) 架构扩展(主从/缓存/分库分表) 常见性能陷阱(大分页/OR条件/模糊查询) 优化工具链(EXPLAIN/慢查询分析) 重点建议:优先解决SQL和索引问题,其次是表结构和服务配置,最后考虑架构扩展。包含40+个具体优化技巧如覆盖索引、联合索引法则等,并推荐了实用分析工具。
2025-11-18 10:23:28
334
原创 对于mysql数据库设计字段时,varchar类型长度是不是给最大就行(按实际字节长度存储+固定长度占位)
数据库字段长度设计需要权衡规范性与灵活性。对于固定长度数据(如18位身份证号)建议精确指定长度以增强约束;可变内容(如地址、备注)可适当放宽,但需设置合理上限(如200字符);避免全用最大值(如255),这会导致语义模糊、数据质量问题和索引限制。核心原则是:固定数据严格约束,可变内容弹性设计,拒绝一刀切方案。
2025-08-19 17:00:39
318
原创 幂等控制和防抖控件基础解释
摘要:幂等控制与防抖控制是两种不同但互补的技术手段。幂等控制(后端实现)确保多次操作产生相同结果,防止数据重复;防抖控制(前端实现)通过限制用户频繁操作来优化体验。二者不能互相替代,需配合使用:前端防抖减少无效请求,后端幂等保证数据安全。典型实现包括前端loading/防抖函数,以及后端Redis锁/唯一约束等,形成双重保障机制。
2025-07-30 14:18:44
146
原创 redis的性能优化建议
Redis性能优化四大关键点:1)优先使用MSET/MGET批量操作减少网络交互;2)合理设置过期时间避免内存泄漏;3)将超过10KB的大键拆分为多个小键存储;4)采用管道技术批量发送命令降低网络延迟。这些优化措施能显著提升Redis吞吐量,降低内存消耗,适合处理高并发场景下的批量数据操作。建议根据实际业务需求组合使用这些方法,特别注意临时数据必须设置过期时间。
2025-07-15 14:07:52
318
原创 如果我的springboot项目,每个微服务都拆出了app,base,service层,那么各个微服务之间如果有依赖base,service层,那么还有用远程调用client接口的必要吗
微服务间应通过远程调用(如Feign/RPC)通信,而非直接依赖对方service层。直接调用会导致服务耦合、部署冲突等问题。正确做法是每个服务单独暴露api-client接口供外部调用,保持服务独立性。这种远程调用方式符合微服务解耦、独立部署的核心原则,便于维护治理,支持跨团队协作。典型实现如order-service通过UserClient远程调用user-service,而非直接依赖其业务实现。
2025-07-14 14:39:16
387
原创 react实现父组件调用子组件方法
摘要:本文介绍了两种在父组件调用子组件方法的实现方式。推荐使用ref方式(forwardRef+useImperativeHandle)直接调用子组件暴露的saveHandle方法,适用于需要调用子组件内部封装逻辑的场景;也可通过props将form实例传给父组件处理保存逻辑,更适合父组件需要掌控表单验证的情况。两种方法各有特点,可根据具体需求选择。使用ref方式更直观,而props方式更函数式。文中还提供了完整的代码示例和注意事项。
2025-06-13 17:18:58
1642
原创 关于Integer在map中的编译歧义问题
由于 map() 接收的是函数式接口,Java 无法确定是引用实例方法还是静态方法,所以报错“ambiguous”。.map(String::valueOf) // ✅ 推荐:避免 Integer::toString 的歧义。你可以根据项目风格选择最适合你团队的写法。map(Integer::toString) ❌ 报错 歧义,编译器不知选哪个。map(String::valueOf) ⭐⭐⭐⭐✅ 简洁通用、无歧义。i -> i.toString() ✅ 也可以,但稍冗余。这也完全可以,逻辑清晰简洁。
2025-06-09 15:29:33
128
原创 javaScript使用async定义异步函数配合await实现请求
配合 await 关键字,可以编写更易读的异步代码,避免传统 callback 嵌套或 .then() 链式调用导致的“回调地狱”。let result = await new Promise((resolve) => setTimeout(() => resolve(“数据加载完成”), 2000));async 函数默认返回 Promise,即使显式返回的不是 Promise,JavaScript 也会自动封装成 Promise。Promise.reject(“加载失败”) 模拟请求失败的情况。
2025-03-10 20:48:01
479
原创 jsx中的方法调用方法
Button type=“primary” onClick={() => showModal(param)}>点击。showModal() 立即执行,React 渲染组件时 showModal 就被调用,而不是等待用户点击按钮。<Button type=“primary” onClick={() => showModal(id)}>点击。含义:使用 箭头函数,这样 showModal() 不会在组件渲染时执行,而是等到用户点击按钮时才调用。showModal 需要参数(如 showModal(id))。
2025-03-05 09:46:26
261
原创 传统try-catch和try-with-resources区别
特点:自动资源管理:这种结构使用了 try-with-resources 语句,它是 Java 7 引入的,自动管理资源的关闭。OutputStream out = response.getOutputStream() 是一个资源(需要关闭的流对象),在 try 语句块结束时会自动关闭资源,无论是否抛出异常。资源关闭:try-with-resources 语句确保在使用完资源(如输入输出流)后,资源会被自动关闭,避免了忘记关闭资源的潜在问题。简洁:由于资源会自动关闭,代码更加简洁和易于维护,尤其在涉及
2025-01-13 14:22:48
587
原创 react的renderSwitcher杂话
它的实现方式通常基于条件判断,根据不同的条件渲染不同的组件或 UI 元素。这样做的好处是将条件渲染的逻辑封装在一个函数中,使代码更加简洁和易于维护。可读性和简洁性:通过将不同的条件与内容映射到对象或 Map 中,你可以避免复杂的 if 或 switch 语句,使代码更加简洁易懂。效率:Map 提供更高效的查找机制(尤其是对于复杂的键),在处理大量条件时比 switch 或 if 更有优势。扩展性:如果需要增加新的条件渲染项,只需在对象或 Map 中增加对应的键值对,而不必修改大量的条件判断逻辑。
2025-01-08 14:32:03
934
原创 Stream的惰性求值解释
在一些复杂的流操作中,可能存在隐式的依赖关系,惰性求值会打破这些隐式的依赖顺序,导致程序的行为不可预测。由于这种执行是按需触发的,操作的执行顺序可能并不是你所期望的顺序,尤其是在多个中间操作的场景下。流中的操作会被逐步执行,但惰性求值可能导致操作的顺序不如你预期的那样,特别是在多线程环境中,如果你依赖于流操作的执行顺序,可能会产生意外的行为。由于惰性求值只有在终止操作时才会执行,调试代码可能会变得更加困难,尤其是在流的操作链非常复杂时,找出问题的根源可能需要一些时间。
2025-01-07 17:28:30
750
原创 java使用 == 和 equals的坑
如果两个对象 equals 相等,它们的 hashCode 也应该相等,否则可能会导致集合类(如 HashMap)行为异常。// false,因为超出了缓存范围,创建了新对象。如果需要比较两个对象的内容是否相等,用 equals。如果需要比较两个变量是否引用同一个对象,用 ==。解决办法:用 equals 比较包装类值。默认行为:与 == 相同,比较引用地址。重写后:可自定义逻辑,通常比较对象内容。引用类型:比较引用地址是否相同。
2024-12-26 16:36:36
249
原创 spring的@Component注解
自动扫描与注册: Spring会自动扫描并注册标注了@Component的类为Spring Bean,前提是你在配置类或Spring Boot应用类上使用了@ComponentScan注解(Spring Boot项目中默认自动启用)。在Spring Boot中,@Component是一个通用的注解,用于将一个Java类标记为Spring的组件(即一个Spring Bean),使其能够被Spring的容器自动检测和管理。@Component是这些注解的通用形式,适用于任何不明确属于上述层次的组件。
2024-08-12 18:20:03
486
2
原创 react中常见使用的window对象方法
这些例子展示了如何在 React 组件中使用 window 对象的方法来处理各种全局任务。在使用这些方法时,请注意在组件卸载时清理任何事件监听器,以避免内存泄漏。在 React 中使用 window 对象的方法可以用于许多不同的场景,比如监听窗口尺寸变化、处理全局事件、或者存取本地存储等。
2024-07-23 09:47:17
881
原创 react触发组件重新渲染
在 React 中,重新渲染界面通常是因为组件的状态(state)或属性(props)发生了变化。通过条件判断来决定渲染什么内容。条件渲染可以根据状态或 props 的变化来动态调整界面。有时你可能需要强制重新渲染组件,可以使用 useState 来触发重新渲染。当父组件传递的 props 发生变化时,子组件会重新渲染。useEffect 用于执行副作用,例如数据获取或订阅。// 空数组表示只在组件挂载和卸载时执行。useState 用于声明状态变量。
2024-07-23 09:42:35
1143
原创 【无标题】同批数据中sql层取最大值
ROW_NUMBER() 窗口函数可以帮助我们为每个 main_id 分区内的行按 batch_index 降序排列,并为每个分区内的行分配一个唯一的行号,从而可以轻松选择 batch_index 最大的行。内部查询使用 ROW_NUMBER() 窗口函数按 main_id 分区,并按 batch_index 降序排列。外层查询过滤出 rn = 1 的行,即每个 main_id 分区中 batch_index 最大的行。使用 ROW_NUMBER() 方法实现的查询。为每个分区的行分配一个行号 rn。
2024-06-27 18:56:38
581
原创 常用日志记录slf4j,log.info()详解
通过logback.xml配置输出日志格式,输出文件保存日志,对于复杂业务逻辑,数据库中的数据修改来源不清楚时,需要记录人员操作流程时,方便通过日志复现,再去理业务逻辑,找出问题,也方便记录相关使用人员的操作,当因为不当操作导致的问题,防止coder背锅。在大多数项目中,SLF4J(Simple Logging Facade for Java)被广泛使用,因为它提供了一个简单的日志接口,可以与各种日志实现(如 Log4j 和 Logback)配合使用。INFO:关键的运行信息,用于标识系统的正常运行状态。
2024-06-04 15:19:02
7766
原创 CSS 系列 -- 块级元素靠右的实现方式
想要块级元素居右往往设置属性是行不通的下面介绍五种方法,不同场景适用不同方法。特:块元素的父元素实现子块调转默认的靠右对齐实现靠左对齐
2023-01-28 15:32:56
8573
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅