- 博客(22)
- 收藏
- 关注
原创 Kafka和Zookeeper的基本概念及使用方法
Kafka 是一种分布式流处理平台,最初由 LinkedIn 开发,后成为 Apache 开源项目。它主要用于构建实时数据管道和流应用,具有高吞吐量、低延迟和可扩展性。
2025-02-26 09:49:38
1386
5
原创 swagger使用方法
Api(tags = "用户管理 API")@ApiOperation(value = "获取用户列表", notes = "返回所有用户的列表")@ApiImplicitParam(name = "id", value = "用户 ID", required = true, dataType = "int", paramType = "path")
2025-02-21 15:16:10
597
原创 ElasticSearch+Kibana通过Docker部署到Linux服务器中
文档和字段:elasticsearch是面向文档(Document)存储的,可以是数据库中的一条商品数据,一个订单信息。可以看到elasticsearch的插件挂载到了/var/lib/docker/volumes/es-plugins/_data这个目录,我们需要把IK分词器上传至这个目录。因此,索引库中就有映射(mapping),是索引中文档的字段约束信息,类似表的结构约束。注意,如果采用在线安装的通过,默认是没有config目录的,需要找网络上的资料提供的ik下的config上传至对应目录。
2025-02-20 14:18:53
1917
2
原创 DeepSeek 云原生分布式部署的深度实践与疑难解析—— 从零到生产级落地的全链路避坑指南
云原生环境下 DeepSeek 的部署既是技术挑战,更是工程艺术的体现。本文从架构设计、性能调优到安全防护,构建了完整的解决方案体系。建议读者结合自身环境特点,灵活运用文中提供的调试命令与配置模板,同时持续关注 DeepSeek 社区的最新动态。
2025-02-19 14:54:32
2456
4
原创 Java开发中常见的状态码以及代表含义
除了HTTP状态码,业务逻辑中可能定义自定义状态码1001:用户未登录2003:参数校验失败3005:库存不足。
2025-02-19 13:31:23
366
原创 创建全局异常处理器(Global Exception Processor)
在Java程序中,异常(Exception)是指在程序执行过程中发生的非正常情况,它打断了正常的指令流;Java中的异常处理是一种用于处理程序中错误和异常情况的一种机制。
2025-02-18 15:03:46
2740
2
原创 @Autowired和@Resource的区别(推荐使用@Resource,避免对于spring框架的强依赖)
需要兼容 Java EE 标准的项目。Java 标准(JSR-250)构造器、Setter、字段。使用 @Qualifier。按类型(byType)按名称(byName)不依赖于 Spring。依赖于 Spring。
2025-02-14 09:19:06
627
原创 7、join语句执行原理,如何优化join语句?
另一种做法是一个表中的有上百万条数据,但是经过where条件过滤后,参加join语句的只有2000条数据,同时这条语句还是个低频的SQL语句,那在这个字段上面创建索引就有些浪费了,可以通过创建临时表,将原表中需要参加join语句的数据放在临时表中,给临时表中的字段加一个索引,主要目的就是可以触发BKA算法,提升性能;在这个查询语句中,staight_join语句的作用是强制MySQL按照from自居中的表顺序进行连接,而不是由优化器决定连接顺序,在这个语句中t1是驱动表,t2是被驱动表;
2025-02-12 13:35:37
688
原创 6、count(*)的实现方式,count(*)业务优化
首先需要注意的是随着表数据越来越多,count(*)的执行速度会越来越慢,而在业务中一个数据量很大的表,说明这个表的利用率还是较高的,而这时候count(*)这中统计的语句执行效率慢会大大影响业务的并发性能;count() 是一个聚合函数,对于返回的结果集,一行行地判断,如果 count 函数的参数不是 NULL,累计值就加 1,否则不加。在同一时间对于不同的统计操作,查出来的数据是不一样的,主要是因为MySQL的隔离级别是可重复读,在代码上通过MVCC机制判断对于当前对话是否可见;
2025-02-10 11:05:24
516
原创 5、MySQL的全局锁、表锁和行锁,如何解决并发问题?
上图中的MDL锁,sessionA在给表t申请读锁,sessionB也能够申请表t的读锁,在sessionC要申请写锁时,会被阻塞等待前面的读锁释放,sessionD在申请读锁时,由于sessionC被阻塞了,导致sessionD的读锁也需要等待;如果要拿到一致性视图,可以使用可重复读的隔离级别(详见:3、事务的特性讲解,ACID之事务隔离)在这个隔离级别中通过创建事务,保证拿到的数据是一致的,同时还要确保当前的存储引擎支持事务,像对于MyISAM存储引擎就不支持事务;一种策略是,直接进入等待,直到超时。
2025-02-05 10:04:20
601
原创 4、深入浅出索引——MySQL最重要的概念之一
B+ 树为了维护索引有序性,在插入新值的时候需要做必要的维护;在建表语句中,针对自增主键的建表语句通常是这么定义的:NOT NULL PRIMARY KEY AUTO_INCREMENT,这种情况下不会造成叶子节点的分裂;(当在插入新数据时,当前数据页的数据满了,需要申请新的数据页,再挪一部分数据过去,这就称为页分裂,不光影响性能,还会影响数据页的利用率,下降在50%左右),这种情况下,每次插入数据都是追加操作,不会产生页分裂;有时有业务逻辑的字段做主键就不能保证有序插入,这样写数据的成本就会增大;
2025-01-25 16:48:37
1029
原创 3、事务的特性讲解,ACID之事务隔离
本节主要介绍的是其中“I”隔离性,而隔离性主要涉及的就是隔离级别也称为 RU 级别。允许事务读取未被其他事务提交的数据。存在脏读(Dirty Read)的问题,即一个事务可能读取到另一个事务尚未提交的数据,如果那个事务最终回滚,则读取的数据是不正确的。也称为 RC 级别。确保事务只能读取已经被其他事务提交的数据。
2025-01-23 16:08:47
716
原创 2、MySQL的日志系统(Redo log、Binary log),SQL更新语句的执行流程?
它是 Write-Ahead Logging (WAL) 实现的一部分,用于记录对数据库所做的所有更改,Redo Log是InnoDB引擎特有的日志文件,并且无法持久保存(WAL是一种确保数据完整性和恢复能力的技术,其原理就是在实际修改数据页之前,先将数据统一写入日志文件(这里的日志文件就是Redo log))然后你会发现,如果需要用这个 binlog 来恢复临时库的话,由于这个语句的 binlog 丢失,这个临时库就会少了这一次更新,恢复出来的这一行 c 的值就是 0,与原库的值不同。
2025-01-23 14:47:21
784
原创 Gateway网关在SpringCloud项目中的搭建
路由是构建网关的基本模块;主要是由一个ID、一个目标URI、一组断言和一组过滤器组成;只要断言为真就能匹配上该路由;断言是一种匹配HTTP请求的规则,例如路径匹配、头信息匹配、参数匹配等;过滤器是用来修改进入的HTTP请求和返回的HTTP响应的组件;客户端向服务端发送请求时,所有的请求被网关先接收;根据请求特征(路径、请求头等)与提前配置好的路由规则匹配,其中路由规则的主要构成是断言;一个请求会经过所有配置在该路由上的断言,如果满足所有的断言条件,则认为请求可以匹配该路由;
2025-01-23 10:08:09
434
原创 OAuth 2.1 的变化
因为 OAuth 2.1 已经不支持第一方应用授权!在 OAuth 2.1 规范草案中, 授权模式中已经找不到隐式授权(Implicit Grant), 我们知道, 隐式授权是 OAuth 2.0 中的授权模式, 是授权码模式的简化版本, 用户同意授权后, 直接就能返回访问令牌 access_token, 同时这种也是不安全的。正确的做法是, 用户在网易云音乐要使用qq登录, 如果用户也安装了qq 的客户端, 应该唤起qq应用, 在qq页面完成授权操作, 然后返回到网易云音乐。假如有三个不同的客户端。
2025-01-22 11:19:33
1078
原创 swagger在项目中的使用方法(以Spring Boot版本作为区分)
ApiImplicitParam(name="id",value="用户ID",required=true,dataType="int",paramType="path")SpringDocOpenAPI是零配置的,默认会自动扫描SpringWeb的注解并生成OpenAPI文档。@ApiOperation(value="获取用户列表",notes="返回所有用户的列表")Swagger3.x的配置与Swagger2.x类似,只需将。
2025-01-20 13:49:58
391
原创 在使用@Async注解时,报空指针异常(Null Pointer Exception)
情景:这种情况最有可出现在分布式的项目中,当注解加在有需要从当前线程的ThreadLocadMap中获取数据的代码块上,当前对象的id等信息存在另一个线程的ThreadLocadMap中,新线程中的ThreadLocadMap是空的,获取不到任何数据,所以会报NullPointerException异常。当你在方法上使用@Async注解时,Spring会自动创建一个线程来执行这个方法,而不是在原来的线程中执行。没有在配置类上加@EnableAsync注解,导致@Async注解未生效。
2024-12-21 12:45:45
291
原创 对象可达性状态流转分析
可达性分析算法:在一系列被称为 “GC Roots”(垃圾收集根节点)的对象作为起始点,从这些节点开始向下搜索,搜索走过的路径称为引用链。如果一个对象到 GC Roots 间没有任何引用链相连,那它就会被判定为可回收对象。
2024-12-20 11:01:50
221
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人