
后端技术
Spring,MyBatis,hibernate
讓丄帝愛伱
青春是一场大雨,即使感冒了,还盼回头再淋一次!
展开
-
线程池线程数配置
线程数 ≈ CPU 核心数 × (1 + 任务等待时间 / 任务计算时间)CPU 密集型→ 少量线程足够;IO 密集型→ 可以设置更高;混合型任务→ 可拆分后按比例配置多个线程池。原创 2025-05-22 20:02:41 · 294 阅读 · 0 评论 -
java并发-Semaphore信号量
举个生活中的例子:银行总共有3个柜台办理业务,有很多人来排队,但一个柜台同时只能有一个人办理业务,也就是说最多同时只能有3个人办理业务。其他的人都要排队等待,等到有一个人办理好了,下一个人才能来办理。Semaphore是用来控制同时访问特定资源的线程数量,它通过协调各个线程,来保证合理的使用公共资源。它通过维护一组许可(permits)来限制同时访问某个资源的线程数量。以下是一个使用 Semaphore 的示例,展示如何限制同时访问某个资源的线程数量。原创 2025-05-22 19:54:01 · 337 阅读 · 0 评论 -
java获取Jvm信息
通过ManagementFactory获取MemoryMXBean。Jvm信息使用ManagementFactory去获取。OS运行信息推荐使用oshi去获取。使用Runtime对象去获取。获取系统内存信息(非jvm)获取jvm运行线程信息。原创 2025-03-28 21:18:13 · 211 阅读 · 0 评论 -
elasticsearch重置 elastic 用户密码
使用 API 密钥重置 elastic 用户密码。原创 2025-03-21 17:18:45 · 251 阅读 · 0 评论 -
WebSocket替代方案SSE实时通讯
实时通讯是常见的需求,通常使用 WebSocket 来实现这一功能,但在很多场景下,客户端只是需要从服务器接收消息,而非进行双向通讯。这导致 WebSocket 的全双工特性并没有得到充分的利用。Server-Sent Events (SSE) ,一种轻量级的方式来实现服务器向客户端推送消息的需求,同时对比 SSE、WebSocket 和传统轮询技术的优劣,选择适合的实时通讯方案。原创 2025-02-25 21:35:42 · 828 阅读 · 0 评论 -
python离线安装包
【Linux、mac用户】:各种Python的安装包,主要提供Linux、mac版本的后缀是".whl"或’’.tar.gz;’’。后者需要解压,前者直接安装。【windows用户】:各种Python的安装包,提供Windows版本的后缀是".whl",可以直接安装,无须解压;否则正常解压安装。原创 2025-02-06 10:35:31 · 407 阅读 · 0 评论 -
Dockerfile构建容器镜像
Dockerfile 是构建 Docker 镜像的核心工具,它不仅简化了镜像构建的过程,也为容器的可移植性和一致性提供了保证。在编写 Dockerfile 时,我们要考虑镜像体积、构建速度、层的优化等问题,确保最终生成的镜像符合生产环境的需求。原创 2025-02-04 16:29:09 · 1071 阅读 · 0 评论 -
jvisualvm工具使用
jvisualvm是JDK自带的具有图形界面操作功能的JVM性能监控和诊断工具,它不仅能分析和诊断堆转储文件,在线实时监控本地JVM进程,还能监控远程服务器上的JVM进程。原创 2025-01-31 21:49:50 · 5125 阅读 · 0 评论 -
Java 泛型<? extends Object>
在 Java 泛型中,<?extends Object> 和 <?> 都表示未知类型,但它们在某些情况下有细微的差异。泛型的引入是为了消除运行时错误并增强类型安全性,使代码更具可读性和可维护性。在 JDK 5 中引入了泛型,以消除编译时错误并加强类型安全性。这种额外的类型安全性消除了某些用例中的强制转换,并使程序员能够编写泛型算法,从而生成更具可读性的代码。原创 2025-01-31 16:08:51 · 714 阅读 · 0 评论 -
常见Arthas命令与实践
Arthas 官网:https://arthas.aliyun.com/doc/,官方文档对 Arthas 的每个命令都做出了介绍和解释,并且还有在线教程,方便学习和熟悉命令。的 IDEA 插件。这是一款能快速生成 Arthas命令的插件,可快速生成可用于该类或该方法的 Arthas 命令,大大提高排查问题的效率。原创 2025-01-21 23:29:21 · 1257 阅读 · 0 评论 -
AopAutoConfiguration matched 报错
AopAutoConfiguration matched 报错原创 2024-12-02 19:15:10 · 295 阅读 · 0 评论 -
ubuntu部署RocketMQ
ubuntu部署RocketMQ原创 2024-12-02 13:57:56 · 346 阅读 · 0 评论 -
RocketMQ生产者发送结果和状态
对于需要快速响应的场景,可以使用异步发送,通过回调函数获取发送结果。返回SendResult 对象包含发送状态。根据返回状态执行回调。原创 2024-11-16 15:35:16 · 266 阅读 · 0 评论 -
性能测试基础
性能测试针对系统的性能指标,建立性能测试模型,制定性能测试方案,制定监控策略,在场景条件之下执行性能场景,分析判断性能瓶颈并调优,最终得出性能结果来评估系统的性能指标是否满足既定值。上图中蓝线表示 TPS,黄色表示响应时间。在 TPS 增加的过程中,响应时间一开始会处在较低的状态,也就是在 A 点之前。接着响应时间开始有些增加,直到业务可以承受的时间点 B,这时 TPS 仍然有增长的空间。再接着增加压力,达到 C 点时,达到最大 TPS。转载 2024-11-15 20:40:16 · 70 阅读 · 0 评论 -
枚举判断是否包含指定字符串
枚举判断是否包含指定字符串原创 2024-10-23 11:09:53 · 292 阅读 · 0 评论 -
通过身份证号获取出生的年月日
通过身份证号获取出生的年月日原创 2024-10-17 20:42:32 · 511 阅读 · 0 评论 -
发布数据到nacos配置文件
发布数据到nacos配置文件原创 2024-09-20 16:48:18 · 153 阅读 · 0 评论 -
JPA QuerySyntaxException: unexpected token: xxx near
错误:QuerySyntaxException: unexpected token: salaryDate near line 1, column 22。问题:使用的是entityManager.createQuery()方法但是查询却用sql语句,没有使用hql语句。原创 2024-09-20 16:43:45 · 237 阅读 · 0 评论 -
JPA的@OneToMany、@ManyToOne
在这里,@JoinColumn指的是ListEntity(多)表对应OrderEntity(一)表关联字段的名称。即ListEntity中的orderId对应OrderList中的主键Id。OneToMany必须写mappedBy,不然会多生成一张没用的中间表,因为如果没写mappedBy,JPA不知道具体怎样做关联。这两个注解是成对的,有@OneToMany,一定会配置一个@ManyToOne。fetch 加载类型,默认情况一的方为立即加载,多的一方为延迟加载。cascade 级联操作。原创 2024-09-20 16:41:15 · 563 阅读 · 0 评论 -
SpringDataJpa自关联映射时出现StackOverflowError
插件中的@Data注解来标注类,生成 gettet/setter 以及 toString。使用Jpa自关联时,存在子数据的记录会报内存溢出问题StackOverflowError。: 不使用 lombok ,自己手写 gettet/setter 以及 toString。lombok 在生成时会出现循环比较两类中的 hashcode,导致内存溢出。原创 2024-09-20 16:36:06 · 416 阅读 · 0 评论 -
spring boot启动报错:so that it conforms to the canonical names requirements
springboot 2.x的版本中对配置文件中的命名规范有了强制性的要求,如下图所示中的dataSource属性属于驼峰格式,但是在springboot 2.x中不允许使用驼峰形式。“Canonical names should be kebab-case” 意思是“规范名称应使用短横线命名法(kebab-case)”为确保一致性,@ConfigurationProperties 注解的 prefix 参数中使用的命名约定应遵循短横线命名格式。根据错误提示可知将其使用。原创 2024-09-20 16:00:29 · 814 阅读 · 0 评论 -
Redis分布式锁
在某些场景中,多个进程必须以互斥的方式独占共享资源,这时用分布式锁是最直接有效的。随着技术快速发展,数据规模增大,分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),在有些场景中,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上运行,即保证某一方法同一时刻只能被一个线程执行。转载 2024-09-16 15:58:31 · 720 阅读 · 0 评论 -
Netty入门
MyServer打印结果。MyClient打印结果。原创 2024-09-16 15:30:20 · 929 阅读 · 0 评论 -
Springboot整合Netty
Netty是由JBOSS提供的一个java开源框架。Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发高性能、高可靠性的网络服务器和客户端程序。它提供了对TCP、UDP以及各种二进制和基于文本的传统协议的支持。它极大地简化并优化了 TCP 和 UDP 套接字服务器等网络编程,解决了断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等等问题。Netty 现在都在用的是4.x,5.x版本已经封存,Netty 4.x 需要JDK 6以上版本支持。转载 2024-09-16 15:21:15 · 1628 阅读 · 0 评论 -
rocketmq-client5.2手动给生产者和消费者设置access-key和secret-key值
消费者代码DefaultMQPushConsumer也需要设置RPCHook,步骤与生产者类似。原创 2024-09-14 16:06:30 · 646 阅读 · 0 评论 -
saga分布式事务_本地事务
2PC,两阶段提交,将事务的提交过程分为资源准备和资源提交两个阶段,并且由事务协调者来协调所有事务参与者,如果准备阶段所有事务参与者都预留资源成功,则进行第二阶段的资源提交,否则事务协调者回滚资源。由事务协调者询问通知各个事务参与者,是否准备好了执行事务,具体流程图如下:saga分布式事务_本地事务和分布式事务 协调者收到各个参与者的准备消息后,根据反馈情况通知各个参与者commit提交或者rollback回滚(1)事务提交: 当第一阶段所有参与者都反馈同意原创 2024-09-01 10:16:10 · 1352 阅读 · 0 评论 -
Java泛型 extends T> super T>
还是以刚才的Plate为例。我们可以对盘子做两件事,往盘子里set( )新东西,以及从盘子里get( )东西。为了让泛型用起来更舒服,Sun的大师们就想出了和的办法,来让”水果盘子“和”苹果盘子“之间发生正当关系。再扩展一下,食物分成水果和肉类,水果有苹果和香蕉,肉类有猪肉和牛肉,苹果还有两种青苹果和红苹果。会报错,“装苹果的盘子”无法转换成“装水果的盘子”。我们可以对这个东西做最简单的“放”和“取”的动作:set( )和get( )方法。表达的就是相反的概念:一个能放水果以及一切是水果基类的盘子。转载 2024-09-01 10:06:02 · 157 阅读 · 0 评论 -
使用JaCoCo 生成单测覆盖率报告
就可以生成单测覆盖率报告了。引入 JaCoCo Plugin 的配置。做好上述报告后,直接执行。原创 2024-09-01 09:57:48 · 685 阅读 · 0 评论 -
SpringBoot2整合Kafka
SpringBoot2整合Kafka原创 2024-07-29 20:36:30 · 402 阅读 · 0 评论 -
Nacos使用2.X版本启动出现9848端口错误
当nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成。原创 2024-07-25 15:48:39 · 4895 阅读 · 0 评论 -
Logback 快速入门
Java 开源日志框架,以继承改善 log4j 为目的而生,是 log4j 创始人 Ceki Gülcü 的开源产品。它声称有极佳的性能,占用空间更小,且提供其他日志系统缺失但很有用的特性。其一大特色是,在 logback-classic 中本地(native)实现了 SLF4J API(也表示依赖 slf4j-api)原创 2024-07-25 15:31:53 · 1043 阅读 · 0 评论 -
LocalDate方法使用
Java中1.8之前有date类和calendar类。转载 2024-07-25 15:30:01 · 183 阅读 · 0 评论 -
RocketMQ常用命令
进入RocketMQ/bin目录:查看帮助: sh mqadmin help查看topic信息列表详情统计新增topic删除topic查询集群消息。原创 2024-07-25 15:19:44 · 1608 阅读 · 0 评论 -
Docker启动安装nacos
可以直接修改挂载目录中文件来映射到容器里面去。重启完防火墙之后,需要重启docker。mysql创建nacos所需的表。进入容器查看配置是否修改。复制容器文件到宿主机。原创 2024-07-08 19:25:54 · 766 阅读 · 0 评论 -
IDEA报错failed to resolve org.junit.vintage:junit-vintage-engine:5.7.0
junit-vintage 是 Junit 4 中使用的引擎,如果项目使用了 Junit 5 的话,需要在 spring-boot-starter-test 中将 JUnit 4 的引擎排除。:是 JUnit使用了 junit-vintage 引擎。原创 2024-07-08 18:53:11 · 1290 阅读 · 0 评论 -
SpringBoot 使用 jasypt 对配置项进行加密
jasypt 是一个开源的工具包,可以很方便的对 SpringBoot 配置文件中的配置项进行加密,保护重要数据,下面讲解一下 jasypt 的使用。原创 2024-07-04 17:22:03 · 726 阅读 · 0 评论 -
Spring注解@Qualifier
通过对@Qualifier的探讨,我们知道该注解是用来消除依赖注入冲突的。这种在日常开发,比如Rabbtimq的队列声明中很常见。小胖哥也通过该注解和其他上述注解的组合使用和对比中展示了一些常用的用法。这将有助于你对Spring的依赖注入机制的了解。原创 2024-07-04 17:18:27 · 474 阅读 · 0 评论 -
logback自定义规则脱敏
自定义规则conversionRule。原创 2024-06-27 09:49:43 · 416 阅读 · 0 评论 -
SpringBoot mybatis Interceptor分页实现
SpringBoot mybatis interceptor拦截器是在执行SQL语句之前对执行的SQL语句进行修改。分页的原理是通过拦截器在执行SQL语句执行改变SQL语句实现物理的分页 limit。上面拦截器的功能就是在执行语句执行对SQL语句进行修改,加上条件和limit。Service中的分页方法。转载 2024-06-25 16:17:31 · 129 阅读 · 0 评论 -
Java SPI服务发现与扩展的利器
如,JDBC的SPI加载模式允许不同的数据库厂商提供自己的驱动实现;这种机制可以用于启用框架扩展和替换组件,其本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。然而,SPI机制也存在一些问题,例如启动速度可能变慢(因为需要加载所有的实现类)、资源可能浪费(如果加载的实现类没有被使用)、以及管理和维护配置文件可能变得困难等。在运行时,Java SPI机制会扫描META-INF/services目录下的配置文件,加载并实例化其中指定的实现类,然后通过这些实现类提供服务。转载 2024-06-25 16:10:51 · 975 阅读 · 0 评论