- 博客(76)
- 收藏
- 关注
原创 AI不应该被“囚禁“在键盘上
各大llm厂商对此也有些优化,于是他们在网页端加了个语音输入 但是在中文场景下,除了chatgpt的那个语音转文字,其他厂商的对中文识别率都挺低的,即便大模型有兜底,能根据上下文猜测你说的是啥意思,但还是容易发生语义坍缩 而gpt的语音转文字也有局限,当你说话说过超过一分钟之后,就会因为说话的信息tokens过长或者网络波动,给你全部吞掉!现在已经常驻后台当我小工具了哈哈哈哈。我看油管上开屏广告也有这种产品,但是都是英语的语音转文字,而且基本都不是本地部署,一些隐私没法保证,感觉真是个痛点。
2026-01-05 18:44:22
157
1
原创 AI快速迭代,可用户输入的“带宽”却成了瓶颈
但是问题又来了,实习这些天,我用语音转文字把我每天干了啥喂给gpt让他帮忙总结总结时,无论是讯飞还是百度的语音转文字,针对一些特定术语都无法准确识别。我们的大脑思维很快,LLM输出的也很快,高强度的思维碰撞,才能让前额叶皮质带来大量印证观点的正反馈多巴胺,加速新知识获取和新认知构建。另外说一句,mac键盘上的那个f5语音转文字,转中文做的是稀烂,写日报根本没法用,有那一个个词纠错时间还不如手动全敲了。但如果大脑思维跳跃,或者想表达的很简单,一两句话能说清楚,大脑快于表达,我会更倾向于语音输出来和ai对话。
2025-12-10 00:40:26
188
原创 (Mysql)MySQL 查询执行顺序总结
在 MySQL 中,SQL 查询语句的书写顺序和数据库内部执行顺序并不完全相同。理解执行顺序有助于优化查询和写出高效 SQL。
2025-11-12 14:30:18
361
1
原创 (Spring)Spring Boot 自动装配原理总结
Spring Boot 启动,扫描导入读取中的自动配置类对每个自动配置类进行条件判断符合条件的 Bean 注册到容器应用即可直接使用自动装配的组件。
2025-11-12 14:25:54
430
原创 (Spring)Springboot注解作用总结
Component→ 通用组件@Service→ 业务逻辑层 Bean→ 数据访问层 Bean→ 控制器 Bean(Web 层)告诉框架做什么、怎么做、什么时候做覆盖配置、依赖注入、Web 请求映射、事务与切面、Bean 生命周期等功能使用注解可以大幅减少手动配置和重复代码,提高开发效率。
2025-11-12 14:10:17
425
原创 (JUC)Semaphore、CountDownLatch、CyclicBarrier应用和区分
这三个工具类都是线程同步工具,但用途不同。Semaphore用于控制资源访问量,用于等待线程完成,用于线程分阶段同步。掌握它们的使用场景,能够在业务中轻松应对多线程协调问题。
2025-11-10 14:05:18
318
原创 (Mysql)Mysql八股大杂烩
知识点核心理解锁机制表锁/行锁、共享锁/排他锁、临键锁防幻读幻读范围查询被其他事务插入新行导致结果变化MVCC多版本控制,提高并发,读不阻塞写B+ 树高效查找、范围查询、排序,叶子节点链表支持顺序扫描深分页优化Keyset 分页 + 分区/分表 + 缓存💡一句话面试总结MySQL 通过 B+ 树索引、MVCC、多种行锁和临键锁,实现高并发、高效查找和范围查询,同时防止脏读、不可重复读和幻读,深分页需要 Keyset 优化。
2025-11-10 13:51:52
770
原创 (Java基础)注解的底层原理
层面原理语法层注解是继承Annotation接口的特殊接口存储层注解数据保存在.class文件的元数据中运行层JVM 通过反射创建代理对象来读取注解值框架层框架根据注解类型执行对应逻辑(依赖注入、事务、AOP 等)注解本质是继承Annotation接口的特殊接口信息保存在字节码中,JVM 通过反射 + 动态代理读取注解数据,框架再根据这些注解执行对应逻辑。注解本身不执行任何操作,真正让它生效的是反射和框架。
2025-11-10 11:26:48
393
原创 (Java基础)集合框架继承体系
Map 处理键值对集合,有 HashMap、TreeMap、LinkedHashMap 等实现。常用操作:put、get、remove、keySet、values、entrySet。Collection 处理单元素集合,有 List、Set、Queue 等子接口。特点:用于队列操作,有先进先出(FIFO)和双端队列(Deque)。:表示键值对集合(映射),独立于 Collection。是键值对映射的顶层接口,独立于 Collection。是单元素集合的顶层接口,主要定义了增删改查等操作。
2025-11-10 10:45:47
299
原创 (场景题)千万级数据查询优化:深分页
优化方案优势注意点Keyset 分页(索引分页)扫描量固定,性能稳定只能顺序翻页,无法直接跳任意页滚动分页 / 加载更多用户体验好,前端操作流畅需要前端支持滚动加载缓存热点页提升热门页访问速度,减轻数据库压力需要合理设置缓存失效策略。
2025-11-06 14:36:26
371
原创 (场景题)在实际开发中,你是怎么排查问题并进行业务监控的?
工具数据类型使用场景优点局限ArthasJVM 方法调用数据临时调试、性能排查灵活、无需重启、可动态观察方法行为数据只在当前会话,不能长期统计CAT业务事务链路数据分布式业务监控、异常分析可视化管理端、跨服务追踪、长期收集需在关键操作处埋点,不够灵活log.info静态文本记录日常调试、简单监控简单易用、无需额外工具分布式调用链难追踪、分析不直观Arthas:临时、灵活、调试利器CAT:业务埋点、集中化监控、管理端可视化日志:简单记录、易用、基础必备。
2025-11-04 15:40:12
262
原创 程序员不只有代码(码农形象管理脱单笔记)
冬天对程序员来说是个机会——衣服多,反而更好塑造气质。不管你是偏理工的沉稳风,还是喜欢点阳光少年感,只要掌握搭配逻辑和细节管理,就能从“普通路人”变成“干净耐看”的人。
2025-10-31 00:04:54
625
原创 Spring Boot 的 Tomcat 线程池、CPU 核心线程与 Java 线程的真实关系(附AMD小故事)
CPU线程数决定“同时干活的人数”;Java线程数决定“等待排队的人数”;Tomcat线程池是用来调度这些线程高效轮换上CPU干活的中间层。层级概念控制谁CPU物理核心 & 逻辑线程决定同时执行的上限操作系统线程调度器负责分配时间片JVMJava线程 & 线程池请求调度与执行逻辑内嵌Tomcat分配请求 → 线程池执行希望你读完这篇文章后,对“线程池”、“CPU线程”、“并发与并行”有一个更直观的认识。
2025-10-28 14:54:55
1261
原创 (JUC)synchronized 与 ReentrantLock 全面对比总结
🔹:由 JVM 实现,简单可靠,适合普通同步场景;🔹:由 Java 类实现,功能强大,适合高并发复杂逻辑。在高并发系统中:逻辑简单,用更安全省心;需要公平性、超时、尝试机制时,用更灵活高效。
2025-10-28 14:29:54
1100
原创 (Java基础)几种数据类型总结
Java 有 8 种基本类型:四个整型(byte、short、int、long),两个浮点型(float、double),一个字符型(char),一个布尔型(boolean)。其余如 String、数组、类、接口、枚举,都是引用类型。Java 数据类型├── 基本数据类型(8种)│ ├── 整数型:byte、short、int、long│ ├── 浮点型:float、double│ ├── 字符型:char│ └── 布尔型:boolean└── 引用数据类型。
2025-10-28 11:07:32
367
原创 (Redis)Redis的RDB、AOF 与混合持久化
Redis 启动时检查配置:若启用了 AOF(),优先加载 AOF;若 AOF 损坏或关闭,则加载 RDB。Redis 4.0 之后:AOF 文件中已经包含 RDB 部分;Redis 直接加载该文件即可完成“快照 + 增量”恢复。若 AOF 损坏:持久化方式数据完整性恢复速度文件体积特点RDB一般(可能丢几分钟数据)快小适合定期备份AOF高(最多丢1秒数据)慢大适合实时备份混合持久化高快中兼顾完整性与性能。
2025-10-28 10:52:55
610
原创 (Java基础)String三兄弟
String 不可变,StringBuffer 可变且线程安全,StringBuilder 可变但不线程安全,速度最快。一句话回答:String是不可变的,频繁修改会导致性能低下;用于单线程的字符串拼接;是线程安全的,但性能略逊于。
2025-10-27 20:43:16
208
原创 (场景题)怎么实现数据的批量插入?
MyBatis 批量插入的核心就是把 CSV 转成 Java 对象 → 收集成批 →<foreach>拼 SQL → 一次性插入数据库好处:显著减少数据库交互次数控制内存占用易于维护和调试。
2025-10-27 14:39:55
553
原创 (Java基础)回调与监听器的区别
回调是思想:让别人帮你调用逻辑;监听器是实现:对象化封装回调方法,注册到事件源;EasyExcelinvoke()和是回调方法,监听器封装这些方法,由框架自动触发。
2025-10-27 14:16:44
470
原创 (场景题)Java 导出 Excel 的两种方式
场景推荐方式特点临时导出表数据IntelliJ IDEA 导出无需写代码系统需要导出功能EasyExcel可做成后端接口大文件导出(>10W 行)EasyExcel高性能,内存占用低格式复杂(样式、公式)Apache POI(备用)功能最全但笨重。
2025-10-27 13:54:28
1288
原创 (Redis)Redis 位图(BitMap)实现用户打卡/签到功能
高性能:单个用户每天的签到操作都是 O(1)低内存占用:比用 Hash、List 或 Set 存储每天签到记录省很多空间灵活统计:支持统计总天数、连续天数、交集/并集等。
2025-10-20 11:51:49
568
原创 (JUC)ThreadLocal 如何在高并发中保证用户上下文的线程安全
让每个线程都拥有独立的数据副本,从而在高并发环境中安全地保存用户上下文信息。在登录系统中,它是连接“拦截器 → 业务逻辑”的关键桥梁:既保证了线程安全,又让代码优雅、清晰。
2025-10-20 10:57:41
1187
原创 (定时任务)接上篇:定时任务的分布式执行与分布式锁使用场景
任务类型多机部署执行方式是否需要分布式锁典型场景Spring@Scheduled每台服务器独立触发✅ 需要数据一致性检查、清理任务分片任务 (ElasticJob/XXL-Job)框架分片调度❌ 不需要批量数据同步、计算任务核心理解:普通定时任务多机部署 = 可能重复执行 → 需要分布式锁分片任务 = 框架调度+分片 → 天然互斥 → 不用分布式锁。
2025-10-17 15:32:34
384
原创 (定时任务)@Scheduled 到 XXL-Job:两种定时任务机制的核心区别
对比维度@ScheduledXXL-Job调度方式应用本地调度调度中心统一调度部署架构与业务代码同进程调度中心 + 执行器集群支持不支持,易重复执行支持分布式协调管理方式无界面,代码维护可视化控制台容错机制无自动重试支持失败重试与告警使用成本简单、轻量需额外部署调度中心适用场景单机、小型任务分布式、生产级任务定时任务不是小功能,而是系统可靠性的关键一环。从@Scheduled到 XXL-Job 的演进,体现了后端架构从单机思维到分布式思维的转变。
2025-10-17 14:54:45
1299
原创 (Spring)Spring Boot 中 @Valid 与全局异常处理器的联系详解
Valid 参数校验↓校验失败抛出 MethodArgumentNotValidException↓异常上抛至 DispatcherServlet↓Spring MVC 寻找 @ExceptionHandler 处理方法↓匹配到 GlobalExceptionHandler 中的处理逻辑↓返回统一格式的 ResponseResult JSON 响应一句话总结:@Valid 负责“发现错误”,@RestControllerAdvice 负责“优雅处理错误”。@Valid。
2025-10-16 10:51:45
980
原创 (MyBatis-Plus) LambdaQueryWrapper 应用
LambdaQueryWrapper 是 MyBatis-Plus 提供的条件构造器用于拼装 SQL 查询条件,避免手写 SQL使用实体类的属性来指定字段,安全可靠支持链式调用(Builder 风格),代码清晰可读。
2025-10-13 14:19:23
322
原创 (Spring)配置类与yml联系
*配置类(Configuration Class)**是一个普通的 Java 类,用于在 Spring 容器中管理配置数据或提供 Bean。用于集中管理应用的各种配置,比如数据库、消息队列、缓存、第三方服务等。将外部配置文件的值映射到 Java 对象(解耦配置和业务逻辑)注入到容器中后,应用可以直接通过 Bean 访问这些配置。对敏感信息(如密钥、密码),建议使用环境变量或加密配置。注册后可以在服务中直接注入配置类,访问配置属性。的配置(YAML/properties)可以嵌套对象,实现模块化配置。
2025-10-13 13:51:32
299
原创 (Spring)@PathVariable 与 @RequestParam 区别与应用
从URL 路径中提取参数。常用于 REST 风格的 URL,表示资源的唯一标识。从URL 查询参数或表单参数中获取值。常用于可选参数、过滤条件或分页参数。特性参数来源URL 路径URL 查询参数或表单URL 示例/projects?是否必需一般必需可选(可设置默认值)典型用途唯一资源标识筛选条件、分页、排序REST 风格推荐可搭配 REST 用于查询。
2025-10-12 17:48:12
435
1
原创 (微服务)Dubbo 服务调用
Dubbo 是高性能的 RPC 框架,允许服务调用者像调用本地方法一样调用远程服务。核心功能:服务注册与发现服务暴露负载均衡容错和集群管理高效的远程调用协议。
2025-10-11 14:29:52
448
原创 (定时任务)Cron 表达式
常用于 Elastic-Job、Quartz、Spring 定时任务、XXL-Job 等调度框架中。→ 每天 9 点到 18 点之间每隔 10 分钟执行一次。:1-7 或 SUN-SAT(1=周日,7=周六)→ 每月最后一个星期五 10:15 执行。表示从 0 开始,每 5 个单位一次)→ 每月 1 号中午 12 点执行。→ 每月最后一天 23 点执行。Cron 表达式是一种用于配置。→ 每 10 秒执行一次)。→ 每天中午 12 点执行。→ 每天凌晨 0 点执行。→ 每 5 分钟执行一次。
2025-09-21 12:03:32
1287
原创 (设计模式)区分建造者、 规格模式(MyBatis Example+Criteria )
一步步构建一个复杂对象,最后一次性生成。它解决了对象构造函数过于复杂的问题,使得对象创建更清晰、可控。把业务规则/条件抽象成独立的对象,可以复用和组合。常见于查询条件构造和业务规则校验。
2025-09-10 16:17:17
652
原创 (算法 哈希表)【LeetCode 349】两个数组的交集 思路笔记自留
数据结构常用方法MapSetList可变数组无重复快速查找→ HashSetSet 转数组→ 使用增强 for 循环刷题流程:注释写在代码上方,说明“做什么 / 为什么”,便于回顾。
2025-09-06 17:28:14
431
1
原创 (算法 哈希表)【LeetCode 242】有效的字母异位词
而Hashmap虽然通用性好,但是针对有限少量数据的数据结构,代码实现复杂度较高,不如用哈希表数组实现。这种方法不仅需要额外标记字符是否用过,还会导致时间复杂度达到。:O(n),其中 n 为字符串长度。最直接的思路是双层 for 循环,每次从。,即可确定两个字符串是否为字母异位词。: 你可以假设字符串只包含小写字母。:O(1),只使用了固定大小的数组。哈希表(数组)正好适合这种场景。,在字符串很长时效率极低。因此,我们考虑更优的解法。来代替哈希表,效率更高。,编写一个函数来判断。,刚好 26 个字母。
2025-09-06 16:41:17
368
原创 (数据结构)哈希碰撞:线性探测法 vs 拉链法
特点线性探测法拉链法存储结构纯数组数组 + 链表(或树)插入效率可能多次探测插到链表尾即可查找效率受聚集影响大平均 O(1),最坏 O(n)删除操作复杂,需要标记简单,直接删节点空间利用节省指针开销链表需要额外空间tablesize 要求必须大于 datasize允许 datasize > tablesize适用场景小数据量、低 α大数据量、α 较高。
2025-09-06 14:03:19
1877
原创 (JUC)线程池创建方法及CPU密集型IO密集型参数配置
灵活可控,推荐用于生产环境Executors 工具类:简单快速,适合小型或临时任务注意事项核心线程数、最大线程数、队列容量合理设置根据任务类型选择 CPU 密集型或 IO 密集型参数CPU密集型尽量避免上下文切换,核心线程数 ≈ CPU 核心数;最大线程数 ≈ 核心线程数IO密集型则需要高吞吐量,线程数 ≈ CPU 核心数 × (1 + I/O等待时间 / CPU计算时间设置合适的拒绝策略正确关闭线程池。
2025-09-05 14:06:42
330
原创 (JUC)线程池的四种拒绝策略
策略行为描述使用场景抛异常必须保证任务执行调用线程执行任务限流,避免抛异常直接丢弃任务任务可丢失丢弃最旧任务,再提交新任务老任务可舍弃,优先新任务执行💡 Tips:如果任务不可丢失,通常使用 AbortPolicy 或 CallerRunsPolicy。如果任务可以舍弃,DiscardPolicy 或 DiscardOldestPolicy 可以减少系统压力。
2025-09-05 13:54:20
510
原创 (计算机网络)DNS解析流程及两种途径
客户端向 DNS 服务器发出请求,要求它必须返回最终结果。中间查询由该服务器自己完成,客户端只需等待结果。客户端向 DNS 服务器请求,服务器只返回自己知道的最优答案,如果不知道,就告诉客户端“去问谁”。客户端需要多次询问,直到得到结果。
2025-09-05 12:31:48
1210
原创 (JUC)HashMap 如何保证线程安全?
HashMap:线程不安全。:简单加锁,低并发场景可用。Hashtable:古老方案,几乎淘汰。:并发场景首选。JDK7:Segment + ReentrantLock,分段锁。JDK8:CAS + synchronized,锁粒度缩小到桶级别,性能更优。一句话总结:在并发编程中,不要直接用 HashMap,而是根据场景选择或,后者是主流。
2025-09-05 12:23:29
1856
原创 (JVM)四种垃圾回收算法
算法原理优点缺点应用场景标记-清除标记存活对象,清理未标记对象实现简单有碎片,效率低老年代(早期)标记-整理标记存活对象并移动整理无碎片对象移动,成本高老年代复制算法复制存活对象到另一块区域快,无碎片浪费内存(50%利用率)新生代分代收集新生代复制 + 老年代标记整理综合性能好实现复杂主流 JVM 使用总结新生代:对象生命周期短 →复制算法。老年代:对象大、存活率高 →标记-整理。分代收集:融合多种算法,实际生产环境的主流方案。
2025-09-05 00:00:20
393
原创 (计算机网络)TCP 粘包与拆包
什么是粘包和拆包?:指多条应用层消息在接收方一次性读到,数据“粘”在一起,无法区分消息边界。例子:客户端连续发送[Hello]和[World],接收方一次recv()得到。:指一条应用层消息被 TCP 拆成多段传输,接收方需要多次recv()才能拼凑完整。例子:客户端发送,接收方第一次recv()得到[Hello],第二次得到[World]。
2025-09-04 23:51:39
319
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅