- 博客(105)
- 收藏
- 关注
原创 JAVA发送HTTP请求工具类
public class RequestUtil { private final static String REQUEST_METHOD = "POST"; /** * http get请求 * * @param httpUrl 链接 * @return 响应数据 */ public static String do...
2025-02-09 15:11:00
100
原创 修改Linux环境下Springboot项目读取配置文件路径
1、在“src/main/resources/META-INF/spring.factories”增加文件路径:org.springframework.boot.env.EnvironmentPostProcessor=\com.code.config.ConfigEnvironmentPostProcessor2、在指定路径下创建文件:ConfigEnvironmentPostPro...
2025-02-05 09:34:00
209
原创 解决double类型计算时丢失精度问题
问题:double类型在进行计算时可能会丢失精度double v1 = 0.2; double v2 = 0.3; double v3 = v2 - v1;预期:v3=0.1实际:v3=0.09999999999999998解决:用BigDecimal类型包装一下数据然后计算(需要先把数据转为String类型!)不转为String类型:double v1 = 0.2; doub...
2024-10-11 17:02:00
394
原创 起项目报错:create connection SQLException, url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characte...
报错信息关键词:errorCode 0, state 08S01com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure解决办法:拼接上:&useSSL=false例如:jdbc:mysql://localhost:3306/demo?useUnicode=true&...
2024-09-11 16:42:00
665
原创 Idea如何提交本地项目到Gitee或Gitlab等远程仓库
1、确定远程仓库地址2、确认自己的Git账号密码(提交代码时需要登录)如果是自己的Gitee码云则是自己登录码云的账号密码;如果是公司的GitLab则以公司分给自己的Git账号密码为准。3、确定自己本地安装了Git,然后用Idea创建或者开发好代码4、初始化本地项目的Git(以实际项目位置)这时候你提交的代码都是提交到本地仓库,提交好以后还需要push到制定远程仓库(...
2024-09-02 14:59:00
623
原创 Java实现根据某个字段对集合进行去重并手动选择被保留的对象
需求说明:现有对象Student(id,name,age),并有List<Student> students集合,要求:对students集合中的对象按age去重,并保留id较大的那个对象。Studentpublic class Student { private int id; private String name; private String ...
2024-08-30 14:49:00
423
原创 JVM方法区和永久代的区别(文章来源于文心一言)
方法区和永久代的区别:一、定义与功能方法区(Method Area)定义:方法区是JVM规范中定义的一个内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但它通常被称为“非堆”(Non-Heap),以与Java堆区分开来。功能:存储类的元数据,包括类型信息、域信息、方法信息等,以及运行时...
2024-07-16 16:40:00
965
原创 JDK17下载和Idea社区免费新版下载
为什么学JDK171、目前JDK长期支持的版本(LTS)有JDK8、JDK11、JDK17、JDK21,博主最近在学习SpringCloud时发现:Spring Cloud Dalston、Edgware、Finchley、Greenwich、2020.0(又名Ilford)、2021.0(又名Jubilee)和2022.0(又名Kilburn)都已达到生命终结状态,不再受支持!而且根据官网S...
2024-07-02 10:52:00
559
原创 将对象转换为Byte数组然后通过redisTemplate存取到Redis中
为什么要把对象转为Byte数组可以跨JVM传输对象:一旦对象被转换为字节数组,就可以在不同的JVM或系统之间轻松传输。序列化:对象转换为字节数组进行序列化,这使得对象能够被持久化到存储系统中,或通过网络传输。提高效率:字节数组比对象本身占用更少的内存和处理资源。Redis依赖和版本 <!--redis--> <dependency&...
2024-06-28 17:19:00
317
原创 用Redisson的延迟队列RDelayedQueue处理延迟任务或者定时任务
什么是RedissonRedisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。什么是RDelayedQueue获取RDelayedQueue: public <V> RDelayedQueue<V> getDelayedQueu...
2024-06-05 13:44:00
1134
原创 Springboot搭建dubbo+zookeeper本地项目
1、下载zookeeper什么是zookeeper:https://www.cnblogs.com/Bernard94/p/17495775.html下载地址:https://dlcdn.apache.org/zookeeper/zookeeper-3.7.2/下载好解压后进入conf目录下,把‘zoo_sample.cfg’复制并改名为‘zoo.cfg’:修改配置文件的日志地址,修...
2024-05-16 14:51:00
566
原创 Navicat连接本地CentOs7虚拟机中的Mysql数据库
1、准备工作:虚拟机中安装Mysql不会的可以参考:https://blog.youkuaiyun.com/m0_66360096/article/details/1340535172、Navicat新建连接虚拟机IP地址是和Xshell连接一样的:https://www.cnblogs.com/Bernard94/p/18097141账号密码是安装Mysql时默认的,当然也可以自己修改,可以参考上...
2024-03-29 16:20:00
1711
原创 Springboot项目打包成jar包启动报错:jar中没有主清单属性
试一下在项目中加入<parent>标签版本不唯一,以自己项目需求为准 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>...
2024-03-27 18:00:00
277
原创 Xshell连接Vmware中的CentOs本地虚拟机
1、准备工作:本地安装Vmware+Centos安装Vmware:https://blog.youkuaiyun.com/xijinno1/article/details/131178887Vmware安装CentOs:https://blog.youkuaiyun.com/qq_54059106/article/details/1313499502、下载Xshell免费版(仅供个人/学校学习使用):https...
2024-03-26 17:24:00
396
原创 多线程限流工具类-Semaphore
Semaphore介绍Semaphore(信号量)是JAVA多线程中的一个工具类,它可以通过指定参数来控制执行线程数量,一般用于限流访问某个资源时使用。Semaphore使用示例需求场景:用一个核心线程数为6,最大线程数为20的线程池执行任务,但是要求最多只能同时运行3个线程代码:public class demo { //创建线程池,核心线程数:6;最大线程数:20;时...
2024-03-03 16:09:00
441
原创 Springboot的starter有什么用以及如何自定义一个starter
SpringBoot的starter是什么我们都知道SpringBoot的目的就是为了让开发者尽可能的减少项目配置专注于程序代码的编写,而'starter'就是SpringBoot简便开发、自动装配的具体实现。以‘mybatis-spring-boot-starter’为例: <dependency> <groupId>org.mybatis.s...
2024-02-26 16:25:00
497
原创 Thread和ThreadLocal、ThreadLocalMap的关系
ThreadLocal是什么ThreadLocal官方注释:翻译过来大致意思是:ThreadLocal可以提供局部变量,通过set和get方法对局部变量进行操作,并且局部变量是每个线程独立的、数据隔离的。ThreadLocal通常作为线程的私有的静态变量,用于和UserId、事务Id相关联。set方法: public void set(T value) { ...
2024-01-30 15:08:00
487
1
原创 多线程sleep、yield、wait、join方法的使用和区别
使用和介绍sleep方法sleep方法的官方注释(翻译后): /** * 根据系统计时器和调度程序的精度和准确性,使当前执行的线程休眠(暂时停止执行)指定的毫秒数。线程不会失去任何监视器的所有权(不释放锁)。 * * @param millis 以毫秒为单位的睡眠时间长度 * @throws IllegalArgumentException ...
2024-01-27 10:12:00
781
原创 (源码分析)线程池里新增一个线程的流程是什么
新增线程的流程:1、先判断新线程是不是为空,为空就报空指针错误否则就往下运行;2、判断是否小于核心线程数,小于则直接新增线程否则就往下运行;3、尝试新增到工作队列中,添加成功就等待调用否则就往下运行;4、再次尝试新增非核心线程,如果当前线程池的线程数大于线程池容量或最大线程数就触发拒绝策略。 public void execute(Runnable command) { ...
2024-01-25 16:01:00
416
原创 ShardingSphere分库分表实战Demo
为什么要分库分表从性能方面来说,一般关系型数据库采用B+树的数据结构,当数据库中的数据量很大时就会增加磁盘的IO次数,当系统使用者少的情况下可能不太明显,但是随着使用者的逐渐增多对数据库的优化需求就会越来越强烈!从运维方面来说,一个数据库的数据量过大会增加数据更新、备份的耗时与风险,而且万一因项目或者服务器出现问题时容易造成系统的崩溃,无法使用。分表分为‘垂直拆分’和‘水平拆分’垂直拆分...
2023-10-11 15:38:00
271
原创 SSM框架学习之MyBatis浅谈(二)
关系型数据库和非关系型数据库关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。非关系型数据库(NoSql,Not Only SQL)用于区别于关系型数据库,它们不保证关系数据的ACID特性。简单来说,关系型数据库一般数据都和系统中的对象有关联,用某个对象的属性去接收数据库的字段,例如:‘tb_...
2023-07-19 14:55:00
166
原创 JAVA设计模式之责任链模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-14 13:58:00
148
原创 JAVA设计模式之策略模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-13 10:19:00
118
原创 JAVA设计模式之适配器模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-12 13:50:00
111
原创 JAVA设计模式之装饰器模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-11 10:44:00
91
原创 JAVA设计模式之模板模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-07 14:24:00
1620
原创 JAVA设计模式之原型模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-06 13:43:00
91
原创 JAVA设计模式之建造者模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-05 13:37:00
105
原创 JAVA设计模式之工厂模式
设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...
2023-07-03 15:22:00
346
原创 Java学习之Mysql基础问题整理
Mysql常见存储引擎命令:SHOW ENGINES;Mysql版本5.5以后默认引擎是 InnoDB,5.5版本以前的是 MyISAMInnoDB和MyISAM的区别1、InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2、InnoDB支持外...
2023-06-25 15:26:00
180
原创 Java学习之Mysql为什么可以实现可重复读
什么是mvccMysql的隔离级别是‘可重复读’,即:事务A在读到一条数据之后,此时事务B对该数据进行了修改操作并提交,那么事务A再读该数据,依然还是原来的内容。它的实现原理是MVCC(Multi-Version Concurrency Control)多版本并发控制,MVCC保证当前查询为快照读,所以不受其他事务影响。什么是当前读和快照读当前读:读取当前版本的数据即最新的数据,并且会对...
2023-06-25 10:51:00
278
原创 Java分布式注册中心之Zookeeper
Zookeeper是什么ZooKeeper是一个用于维护配置信息、命名、提供分布式同步和提供组服务的集中式服务,它常作为一个注册中心服务用于分布式项目。Zookeeper拥有以下几个重要特性顺序一致性:来自客户端的相关指令会按照顺序执行,不会出现乱序的情况,客户端发送到服务的指令1->2->3->4,那个这些指令就会按照顺序执行;原子性:更新只有成功和失败,没有中间状态...
2023-06-21 11:08:00
532
原创 Java分布式框架之Dubbo
分布式与微服务1、传统架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键。存在的问题:代码耦合,开发维护困难无法对不同模块进行针对性优化无法水平扩展单点容错率低,并发能力差2、系统拆分当系统不断的迭代,访问量逐渐增大单一应用无法满足需求,此时为了应对更高的并发和业务需...
2023-06-16 21:43:00
557
原创 SSM框架学习之Spring浅谈(二)
Spring常用注解@Controller : 对应 Spring MVC 控制层,主要用户接受用户请求并调用 Service 层返回数据给前端页面。@Service : 对应服务层,主要涉及一些复杂的逻辑,需要用到 Dao 层。@Component :通用的注解,可标注任意类为 Spring 组件。如果一个 Bean 不知道属于哪个层,可以使用@Component 注解标注。@Rep...
2023-06-14 09:48:00
128
原创 JAVA学习JSP和Servlet常见问题整理
什么是JSPJava Server Page 结合 java和html在服务端动态生成web页面的技术。Jsp页面的运行过程1、请求进入Web容器,将JSP页面翻译成Servlet代码2、编译Servlet代码,并将编译过的类文件装入Web容器(JVM)环境3、Web容器为JSP页面创建一个Servlet类实例,并执行jspInit方法4、Web容器为该JSP页面调用Servlet实例的_...
2023-06-13 11:21:00
144
原创 Java学习之基础知识整理
Java介绍Java是由SUN公司在1995年推出的一套编程语言。James ArthurGosling(詹姆斯·高斯林),诞生于加拿大,生于20世纪的笨拙年代,他的职业生涯始于Sun Microsystems。他发明了Java语言,架构了SunSoft,领衔Java团队,最后以副总裁的身份在Sun Microsystems退休。他是Java编程语言的首席设计师,被誉为“Java之父”。J...
2023-06-13 10:54:00
144
原创 Java学习之SpringBoot如何实现自动配置
SpringBoot是Spring全家桶中一个具有‘跨时代’的项目框架,它减去以往传统架构繁琐的配置文件,而且可以内嵌Tomcat,所以项目依赖可以自动配置,一键启动项目。本文主要讲SpringBoot实现自动配置的流程。(个人认为SpringBoot的缺点:很多功能封装的太好了,导致如果想学习,或者解决其中的问题则对技术有了一定的要求。毕竟使用的都是Spring自己封装好的东西,想学习其中的...
2023-06-08 10:58:00
213
原创 Java+Js实现文件下载
Maven依赖 <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.9.0</version> ...
2023-06-02 15:18:00
305
原创 Java中间件学习之RabbitMQ
什么是MQ消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。MQ是消息通信的模型,并不是具体实现。现在实现MQ的有两种主流方式:AMQP、JMS。AMQP:JMS:两者间的区别和联系:JMS是定义了统一...
2023-03-09 10:37:00
164
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人