Java大法好
文章平均质量分 77
记录java学习时的理解和感悟
程序员梅雨
gotta focus on myself
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
微服务学习(三):网关 + 配置管理 + RabbitMQ
在微服务架构中,网关(Gateway)负责统一流量入口,配置中心(Config Center)承担动态配置管理,而消息队列(MQ)则解决服务间的异步通信问题。原创 2026-09-07 11:47:26 · 450 阅读 · 0 评论 -
黑马点评项目学习(一):短信登录模块 + 扩展(双token无感刷新)
知识点要点MySQL水平扩展读写分离扩展读能力,分库分表扩展写能力,但有代价正向/反向代理正向代理代理客户端,反向代理代理服务器,Nginx是反向代理每个线程独立的数据副本,用于请求链路中传递用户信息短信登录登录注册合二为一,通过手机号+验证码完成认证集群Session问题多台Tomcat不共享Session,用Redis统一存储解决两层拦截器第一层刷新Token有效期,第二层校验登录状态无感刷新通过拦截器自动续期Token,用户无感知。原创 2026-08-25 18:11:18 · 201 阅读 · 0 评论 -
黑马点评(四):分布式锁 + 秒杀优化 + MQ
单体应用│├── synchronized 本地锁 → 一人一单│▼集群部署│├── SETNX 分布式锁 → 解决了跨 JVM 互斥├── UUID + Lua → 解决了锁误删和原子性├── Redisson → 解决了可重入、重试、续期、主从一致│▼秒杀优化│├── Lua 脚本前置校验(Redis)→ 数据库压力大减├── 异步下单 → 响应时间从秒级到毫秒级│▼消息队列│├── BlockingQueue → 有内存和持久化风险。原创 2026-08-28 20:34:15 · 333 阅读 · 0 评论 -
微服务学习最终篇: Elasticsearch
Elasticsearch 之所以能在大数据量下实现毫秒级的全文搜索,核心秘密就在于它的底层数据结构——倒排索引(Inverted Index)。在传统关系型数据库(如 MySQL)中,搜索文本字段通常用,需要扫描每一行记录,效率极低。倒排索引的设计思路完全不同——它不存储“哪个文档包含了什么内容”,而是存储“这个关键词出现在了哪些文档中”。正排索引 vs 倒排索引正排索引(Forward Index):以文档为核心,文档 ID → 文档内容。这是存储原始数据的方式。原创 2026-09-07 17:23:46 · 491 阅读 · 0 评论 -
黑马点评(二):商户缓存与Redis实战 —— 为什么说缓存是性能优化的第一把刀?
缓存就是数据的“临时副本”,放在读写速度极快的存储介质(如内存)中,用于加速数据访问。物理过期(你平时用的EXPIRE)是 Redis 在 TTL 到期后自动删除 Key。逻辑过期是:Key永远不过期(不设TTL),但在 Value 里存一个时间戳,由业务代码判断是否“逻辑过期”。用内存的高读写速度换取数据库的IO压力降低,代价是需要处理数据一致性问题。原创 2026-08-26 14:20:05 · 179 阅读 · 0 评论 -
苍穹外卖·核心命门精炼焚诀
这 8 个七寸问题,本质是互联网分布式架构的“八荣八耻”。面试官问的不是 JWT 怎么生成,而是你如何在状态爆炸的分布式世界里做取舍;问的不是 B+ 树结构,而是面对海量数据,你如何用数据结构对抗物理极限。把 STAR 讲熟,把 Trade-off 讲透,你就是他们要的那个人。原创 2026-08-31 12:04:51 · 319 阅读 · 0 评论 -
黑马点评(五) : 点赞 + Feed流 + BitMap + Geo + HLL
一句话:就是你刷抖音/朋友圈时,无限往下滑,永远有新内容的那种“沉浸式”体验。内容从哪来?→ 你关注的人发的动态。怎么让你看到?→ 三种模式:拉、推、推拉结合。一句话:BitMap 就是一个二进制数组,每个位(bit)只能存 0 或 1。在 Redis 里,它是 String 类型的一种特殊用法,一个 String 最大 512MB,可以存 2^32 个 bit(约 42.9 亿个位)。一句话:Redis 用来存经纬度的数据结构,支持按距离查询、范围查询。一句话:用来统计去重数量。原创 2026-08-29 11:40:31 · 341 阅读 · 0 评论 -
黑马点评·核心命门精炼焚诀
黑马点评学的是技术,面试时包装的是项目。让面试官觉得你做过、想过、踩过坑,比技术本身更重要。原创 2026-08-31 12:18:34 · 238 阅读 · 0 评论 -
黑马点评(三)电商业务:优惠券秒杀
库存不能超卖,一人不能多买。全局唯一ID生成器—— 解决分库分表下的ID冲突与安全问题乐观锁扣减库存—— 用CAS思想解决超卖一人一单—— 用实现用户级并发控制。原创 2026-08-26 21:17:59 · 220 阅读 · 0 评论 -
微服务学习(二):服务拆分 + 治理 + OpenFeign
知识点一句话总结服务拆分原则先单体验证可行性,再拆微服务减少风险纵向拆分按功能模块拆出独立服务横向拆分抽取公共能力形成通用服务注册中心服务的"通讯录",帮你找到想调的服务在哪服务发现 + 心跳自动感知实例变化,不用手动维护列表最基础的远程调用方式,适合入门,代码不太优雅OpenFeign声明式HTTP客户端,用起来像调本地方法连接池Feign生产环境必开,用连接池复用连接提升性能Feign抽取统一用公共模块管理,避免重复造轮子下一步。原创 2026-09-01 19:40:12 · 366 阅读 · 0 评论 -
Spring学习笔记(一):吃透IOC核心思想,小白从零入门
记录spring的学习笔记原创 2026-08-10 15:24:47 · 148 阅读 · 0 评论 -
Spring 学习笔记(三):Spring JDBC 与事务控制
是 Spring 提供的一个模板类,封装了 JDBC 操作中的重复代码(如获取连接、处理异常、关闭资源),让我们只需要关注SQL 语句和参数本身。// ========== 添加 ==========// 返回受影响行数// 返回生成的主键// 批量添加// ========== 查询 ==========// 查询用户账户总数// 根据主键查询// 多条件查询// ========== 更新 ==========// 更新单条// 批量更新。原创 2026-08-11 12:00:14 · 171 阅读 · 0 评论 -
Spring 学习笔记(四):SpringBoot极速入门
SpringBoot是Spring公司的一个顶级项目,本质上是对Spring框架的进一步封装,让我们使用Spring框架更加简单。SpringBoot并不是一个全新的技术,而是让Spring“开箱即用”的解决方案。💡注意:写简历时,技术栈写或,不要写,因为SpringBoot已经包含了Spring和SpringMVC,看到这样的简历,说明他根本就没有理解springboot。在中放入生成的ASCII字符图案。生成工具:http://patorjk.com/software/taag/原创 2026-08-14 09:27:03 · 176 阅读 · 0 评论 -
从 JS 的 `.call()` 到 Java 的“反射”:我是如何降维理解 Java 反射的
本文通过对比 Java 反射与 JavaScript 的 .call() 方法,揭示了两种语言在动态调用上的异同。作者作为前端开发者,在接触 Java AOP 时对 Method.invoke() 产生困惑,后发现其本质类似 JS 的 call(this):都是将方法绑定到指定对象执行。关键区别在于 Java 作为静态语言,需要通过 getClass() 获取运行时类型信息(反射机制)来绕过编译期类型检查。文章还演示了无参方法的反射调用方式,指出 Java 反射比 JS 多出的"照镜子"步骤正是静态类型语言原创 2026-07-17 14:54:16 · 214 阅读 · 0 评论 -
Spring学习笔记(二):吃透AOP核心思想,小白从零入门
Spring AOP核心概念与实战应用摘要 AOP(面向切面编程)是Spring核心思想之一,通过将重复性非业务代码(如日志、权限、事务等)抽离为切面,实现无侵入式的功能增强。其底层基于代理模式,Spring采用JDK动态代理(接口类)和CGLIB(非接口类)动态生成代理对象。 核心概念: 切点(Pointcut):定义拦截规则的表达式(如execution(* com.service.*.*(..))) 通知(Advice):增强逻辑,分为前置(@Before)、后置(@AfterReturning)、异原创 2026-08-11 08:57:42 · 233 阅读 · 0 评论 -
Spring 学习笔记(五):SpringBoot进阶+实战
SpringBoot 启动时自动配置了 `DataSourceTransactionManager`,所以**不需要任何 XML**,直接在 Service 方法上加 `@Transactional` 即可。> 这种参数注入**只在 @Configuration 类的 @Bean 方法中有效**,普通类不行。前后端分离项目,接口文档是刚需。3. 每个自动配置类都有**条件注解**(`@ConditionalOnClass`、`@ConditionalOnMissingBean` 等),**按需生效**原创 2026-08-14 20:45:31 · 189 阅读 · 0 评论 -
Java 底层思考系列:从 JVM 栈帧开始,我真正理解了Java 为什么设计抽象类
本文通过分析JVM栈帧结构,揭示了Java抽象类设计的底层原理。作者指出,动态链接机制实现了多态特性,使JVM能在运行时确定实际调用的方法。而抽象类的本质是"强制规范"而非"内存优化",它通过编译期检查确保子类必须实现特定方法,弥补了父类无法提供通用实现的缺陷。这种设计使程序结构更合理,错误更早暴露,扩展更自然。最终,文章将JVM机制与面向对象设计理念串联起来,说明Java每个语法特性背后都有其深层考量。原创 2026-07-07 10:58:33 · 232 阅读 · 1 评论
分享