- 博客(100)
- 收藏
- 关注
原创 今日学习:怎么算高并发
参数定义高并发标准示例QPS每秒查询数电商促销 QPS 数百万TPS每秒事务数金融系统 TPS ≥ 1000并发数同时处理的请求数QPS × 响应时间响应时间请求处理耗时P99 ≤ 100ms(高性能场景)吞吐量单位时间处理的数据量视频平台 100GB/s错误率请求失败比例< 1%(高并发下)问题解答如何建立索引?创建(a, b)联合索引,覆盖查询条件。适合建立索引的字段高频查询、高选择性、排序/分组字段。水平分表策略哈希分片、范围分片、按业务逻辑分表。
2025-06-19 08:40:16
677
原创 今日学习:布隆过滤器重建扩容策略|初始化方案|-XX参数|ali分布订阅组件Canal
如果使用的是Kafka 生态系统,并且需要多数据库支持的 CDC 方案,推荐使用Debezium。如果团队具备商业预算并且需要高稳定性、异构数据库实时同步,可以考虑GoldenGate。如果你的系统主要基于MySQL,希望实现轻量级、低成本的 Binlog 解析与分发机制,并且在国内部署环境更熟悉 Canal,那么Canal 是一个非常合适的选择。如果你只需要做Kafka 消息层面的复制或桥接,可以使用。如需进一步了解某个产品的部署方式、性能调优或典型架构设计,我可以继续为你详细说明。
2025-06-13 08:57:26
837
原创 今日学习:通用redis分布式缓存注解|ZipKin|Redisson源码Mermind图|
*** @author : 戚欣扬");if(timeout!} }/*** @author : 戚欣扬");if(timeout!import org/*** @author : 戚欣扬");if(timeout!} }/**
2025-06-11 09:55:33
437
原创 今日学习:MongoDB入门 | MySQL查漏补缺 | Postgre了解
MongoDB 是在2007年由DoubleClick公司的几位核心成员开发出的一款**分布式文档(数据)**数据库,由C++语言编写。目的是为了解决数据大量增长的时候系统的可扩展性和敏捷性。MongoDB要比传统的关系型数据库简单很多。在MongoDB中数据主要的组织结构就是数据库、集合和文档,文档存储在集合当中,集合存储在数据库中。MongoDB中每一条数据记录就是一个文档,数据结构由键值(key=>value)对组成。文档类似于 JSON 对象,它的数据结构被叫做BSONMongoDB。
2025-06-11 09:54:56
474
原创 今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
并发修改异常(ConcurrentModificationException)是在 Java 中当一个对象被检测到在迭代过程中被另一个线程不恰当地修改时抛出的运行时异常。这种情况通常发生在使用集合框架(如 ArrayList、HashMap 等)时,如果在一个线程正在遍历集合的同时,另一个线程尝试修改该集合(例如添加、删除元素),就会抛出这个异常。表达式是否自动拆箱比较类型是否受缓存影响✅ 是int == int❌ 否(同值)❌ 否引用比较✅ 是(依赖缓存)
2025-06-09 09:15:05
1196
原创 今日学习:工程问题(场景题)
是远程过程调用,允许程序调用另一个地址空间(通常是远程服务器)上的函数,如同本地调用。核心组件客户端桩(Client Stub):将调用参数序列化并发送到服务端。服务端桩(Server Stub):反序列化参数并调用本地方法。通信协议:如 HTTP、TCP、gRPC(基于 HTTP/2)。注册中心:如 ZooKeeper、Nacos,用于服务发现。优势透明性:开发者无需关注网络细节。高性能:相比 HTTP,RPC 通常使用二进制协议(如 Protobuf)更高效。可扩展性。
2025-06-05 15:17:25
892
原创 今日学习:ES8语法 | Spring整合ES | ES场景八股
ElasticSearch(ES8)是一款功能强大的分布式搜索与分析引擎。本文介绍了ES的架构、适用场景和核心功能。ES广泛应用于日志系统(ELK套件)、数据分析、站内搜索等场景,也可作为辅助数据库支持海量数据查询。与MySQL相比,ES更适合全文搜索而非事务处理。文章还详细讲解了索引、类型、文档、字段等核心概念,并演示了分词器(如IK分词器)的使用方法。最后提供了索引操作的基本示例,帮助开发者快速上手ES8的使用。
2025-06-05 10:46:08
1217
原创 今日学习:AOP数据脱敏|线程池|方法引用的实例|背包(0-1)及子集
核心概念:示例:MyBatis-Plus如何通过方法引用获取到查询类的属性名原理:示例:优势:映射方式:可靠性保障:应用场景:示例:优势:实现步骤:核心思想:01背包示例:关键点:原因:反转顺序是否可行?初始化逻辑:标准一维数组写法:反转顺序是否可行?核心原因:总结:
2025-05-23 20:31:10
680
原创 尚硅谷阳哥JVM
JavaVirtualMachine,Java虚拟机**位置:**JVM是运行在操作 系统之上的,它与硬件没有直接的交互。为什么要在程序和操作系统中间添加一个JVM?Java 是一门抽象程度特别高的语言,提供了自动内存管理等一系列的特性。这些特性直接在操作系统上实现是不太可能的,所以就需要 JVM 进行一番转换。有了 JVM 这个抽象层之后,Java 就可以实现跨平台了。JVM 只需要保证能够正确执行 .class 文件,就可以运行在诸如 Linux、Windows、MacOS 等平台上了。
2025-05-14 20:38:14
1164
原创 每日学习Java之一万个为什么?
本项目基于RouYi框架改造,主要实现了一个电商平台的核心功能。系统采用Minio作为文件存储服务,支持本地和Minio两种文件上传方式。权限控制基于RBAC模型,通过AOP实现接口权限管理。管理端功能包括商品分类、单位、品牌、规格和商品的管理,支持增删改查操作。H5页面通过Ajax接口提供一级分类展示、畅销商品数据、分类树展示、品牌商品列表、商品详情等功能,并采用缓存优化提升性能,解决了缓存穿透和击穿问题。购物车功能基于Redis实现,支持商品添加、删除、状态更新等操作。订单模块包括结算和下单功能,结算时
2025-05-14 08:15:29
813
原创 企业面试题综合(1)
跨域(Cross-Origin)是指浏览器出于安全考虑,阻止网页从一个不同源(协议、域名、端口)请求资源。实现跨域的方法在服务器响应头中添加。支持预检请求(Preflight Request)。示例:Access-Control-Allow-Origin: *通过<script>标签加载跨域资源,但仅支持 GET 请求。代理服务器前端请求同源的代理服务器,由代理服务器转发请求到目标服务器。@Autowired。
2025-05-08 10:24:00
1220
原创 每日学习Java之一万个为什么?
异步编排(Asynchronous Composition)是指通过组合多个异步任务,实现任务间的依赖关系、并行执行或结果聚合的编程方式。核心目标是提高程序响应速度和系统吞吐量。2. CyclicBarrier功能:让一组线程互相等待,直到所有线程都到达屏障点后再同时继续执行。特点:计数器可重置,支持多次使用。适用于分阶段协作(如多线程计算后聚合结果)。示例:3. Semaphore功能:控制同时访问某个资源的线程数量。特点:通过许可证机制限制资源访问。适用于资源池
2025-05-07 19:14:03
865
原创 每日学习Java之一万个为什么?
*** @author : 戚欣扬*///定义一个标准CPU密集型设计线程池1L,try {i < 5;j++) {});// 备用队列(可选,用于暂存被拒绝的任务)@Override// 1. 记录日志// 2. 尝试将任务存入备用队列= null &&!try {// 3. 发送告警(可选,集成阿里云SLS或RocketMQ)// 4. 降级策略:丢弃低优先级任务(示例)return;
2025-04-26 19:00:23
750
原创 每日学习Java之一万个为什么(JUC)
Java中的Synchornized用于实现线程同步,确保同一时间只有一个线程访问被其修饰的代码块或方法,避免线程安全问题(如竞态条件、脏读等)。实现机制:基于Java内存模型(JMM)的监视器锁(Monitor),通过对象头中的Mark Word记录锁状态,支持偏向锁、轻量级锁、重量级锁的升级机制。适用场景:简单同步需求,代码简洁,但性能可能受限于锁升级后的重量级锁。
2025-04-23 20:07:47
1072
原创 每日学习Java之一万个为什么
问题:为什么用GatewayFilter?怎么实现更灵活。区别于globalfilter,需要实现一个抽象网关过滤器工厂。过滤器工厂可以读取配置并帮助你创建过滤器对象。无参过滤器具体实现是定义匿名内部类的方法。自定义gatewayfilter 方法名必须是前缀+GatewayFilterFactory,前缀未来就是yml中的 filter: -前缀Sentinel:用于流量控制、熔断降级,保障单服务稳定性。Seata XA/AT模式:解决分布式事务问题,确保跨服务数据一致性。组合方案。
2025-04-21 17:10:35
913
原创 Java框架阶段常见面试题之简答题
AJAX = 异步 JavaScript 和 XML。AJAX 是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。事件触发(如点击按钮或页面加载)。AJAX 请求:通过 JavaScript 创建一个对象,向服务器发送请求。服务器处理请求。
2025-04-15 17:18:48
1189
原创 每日学习Java之一万个为什么
无论使用哪种接口提供的负载均衡方法,你都可以实现自己的负载均衡逻辑。通常需要创建一个新的类继承自相应地抽象类,覆盖其方法定义具体的负载均衡行为。之后在应用中注册该自定义的策略即可。ribbon:对于服务发现模块,Nacos采用了一种名为Distro的最终一致性协议。该协议允许在集群中的每个节点上都维护一份全量的服务注册信息副本。对于配置管理模块,Nacos采用了Raft共识算法来保证强一致性。Raft算法通过选举领导节点(Leader)来协调所有写操作。
2025-04-15 16:40:20
759
原创 每日学习Java之一万个为什么
yml# 自定义属性拦截器@Component//在请求controller接口前进行拦截,校验token令牌@Override//获取请求头中令牌// 未登录//令牌合法直接返回true,否则自动抛出异常。//如何将数据往线程上绑定。这里使用TheadLocal工具类@Override配置类@Autowired//路径配置应具备可维护性,所以需要配置在yml}*/@Override。
2025-04-14 20:00:05
1052
原创 WebSocket
WebSocket 是一种在单个TCP连接上进行全双工通信的协议,它使得客户端和服务器之间的数据交换变得更加简单。WebSocket 协议由HTML5定义,旨在解决HTTP协议的局限性,特别是在需要持续连接的应用场景中。与传统的HTTP请求-响应模式不同,WebSocket允许服务器主动向客户端推送数据,而不需要客户端先发起请求。这种特性极大地提高了实时性和效率,减少了网络开销。WebSocket的工作流程包括握手阶段、数据传输阶段和关闭阶段。在握手阶段,客户端发送一个HTTP升级请求到服务器,如果服务器支
2025-04-11 14:57:20
650
原创 每日学习Java之一万个为什么
两者均支持,但 Sa-Token 通过插件化设计更易快速集成,而 Spring Security 需借助 Zuul/Gateway 等组件。场景:当我们一个系统有不同的权限体系。通过构造器注入,可以编写出更健壮、可维护且符合设计原则的代码,这也是Spring官方推荐的核心原因。,Sa-Token 的实现更简单;Spring提供的编程式事务类,支持自定义事务范围,以及更灵活更细粒度的事务操作。,并通过事务操作、异常处理和全局异常处理器的实现。以下是您要求的完整示例,包含使用。
2025-04-11 10:25:12
773
原创 图库项目开发 阶段二-图片优化
Caffeine(本地缓存)低延迟:本地内存缓存(Caffeine)直接运行在应用服务器上,避免了网络开销,响应时间可缩短到毫秒级(甚至微秒级)。减少 Redis 负载:高频访问的热点数据(如热门图片)存储在本地,减少 Redis 的查询压力。抗抖动:本地缓存能抵御网络波动或 Redis 服务短暂不可用的情况。数据结构灵活:Caffeine 支持按需配置淘汰策略(如 LRU、LFU),适合应用层细粒度控制。Redis(分布式缓存)高并发与分布式支持:Redis 是内存数据库,支持毫秒级响应。
2025-04-08 19:15:50
960
原创 图库项目开发 阶段一-图片模块
上传创建图片图片信息编辑(标签/分类等)管理图片查看 / 搜索 图片列表查看图片详情图片下载用户上传创建图片审核图片导入图片(URL导入,批量抓取和创建)图片查询优化图片上传优化图片加载优化图片存储。
2025-04-08 13:50:25
825
原创 图库项目开发 阶段一-用户模块
GetterPARAMS_ERROR(40000, "请求参数错误"),NOT_LOGIN_ERROR(40100, "未登录"),NO_AUTH_ERROR(40101, "无权限"),NOT_FOUND_ERROR(40400, "请求数据不存在"),FORBIDDEN_ERROR(40300, "禁止访问"),SYSTEM_ERROR(50000, "系统内部异常"),OPERATION_ERROR(50001, "操作失败");/*** 状态码*//*** 信息*/
2025-04-08 13:48:57
639
原创 每日学习Java之一万个为什么
@JsonIgnore注解在处理 JSON 数据时非常有用,特别是在需要排除敏感信息、避免循环引用、简化输出或管理内部状态时。通过合理使用该注解,可以有效控制 JSON 序列化和反序列化的过程,确保数据的安全性和完整性。当然可以!以下是一个 Markdown 表格,详细说明了transient关键字和注解的区别和适用场景。transienttransient:适用于 Java 默认的序列化机制,用于排除不需要持久化的字段。
2025-03-28 21:17:48
1279
原创 每日学习Java之一万个为什么
存储某个数的最终哈希值,但是哈希值或者说哈希码应该是一个序列,这个序列需要被映射到一个链表或者数组下标,直接映射可能会使得空间利用效率很低。JDK HashMap中是通过 hash&(length-1)来映射到目标下标,这个下标就被称为哈希桶,保证最终哈希桶在 容量之内。扰动函数的定义(1) 化学中的“扰动力函数”(Forging Function)定义:扰动力函数是描述化学反应平衡受扰动时的数学表达式。核心思想化学反应体系在宏观约束条件(如温度、压力、浓度等)固定时,存在稳定的化学平衡。
2025-03-24 21:21:41
1063
原创 每日学习Java之一万个为什么(待补充)
1.导入依赖,编写对应yml配置2.骨架搭建,需要的配置类,异常处理,拦截器,工具类导入。3.接口导入,搭建实现类4.根据数据库表 / 接口 编写对应的sql语句 对接mapper接口,5.确认数据库连接,数据池参数无误,单元测试调通数据库6.编写 Controller 以及 Hanlder方法,Service实现类。7.API测试。
2025-03-18 19:04:23
338
原创 万字面试题助力春招(待补充)
String 不可变,new 和 赋值的区别 ,new的话会创建两个字符串对象,还有个堆内存,不管常量池有没有。= 会先去常量池找,没有在常量池创建。StringBuilder 线程不安全StringBuffer 线程安全每一个方法都用Synchornized修饰 并且这两个类创建的字符串都是可变的1.数组是连续内存存储相同数据类型的结构2.寻址的话直接用索引去找,指令简洁3.时间复杂度问题二叉树红黑树散列表HashMap实现原理?HashMap的put方法具体流程?
2025-03-17 19:39:17
809
原创 每日学习Java之一万个为什么
可以手动指定。不过@SpringBootApplication 中的@Component 是默认值,仅扫描所在包及其子包。不过其实按照约定放置Main方法位置就可以。
2025-03-17 19:34:53
1175
原创 每日学习Java之一万个为什么
如果有下一步查询计划,resultType需要改为resultMap,(只要这张表的查询大于1就用Map)并在Map中配置下一步计划在本计划中的实体类,查询列名,下一步计划方法路径。当然,在分步查询sql设计前后我们需要设计分步查询实体类。
2025-03-14 21:00:20
837
原创 每日学习之一万个为什么
{} 与 ${} 区别:前者占位符赋值,后者字符串拼接会在动态field和关键字用到但要防止SQL注入。DML设置 selectkey 标签,标签中设置先执行。传参是实体类和map 实体类写属性名 map写key。查询操作是在某个表的角度去思考,设计查询结果集。SQL中单个参数,占位符中建议写 形参名。DML标签中设置 主键回显属性。DML 返回 int。
2025-03-12 20:21:45
1019
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人