自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 RocketMQ可视化界面安装

解决:在 rocketmq-dashboard\frontend 建一个build文件夹,然后再target目录下,建一个classes文件夹,classes下再建一个public文件夹。**起因:**访问rocketmq-externals项目的git地址,下载了源码,在目录中并没有找到rocketmq-console文件夹。git下面文档提示rocketMQ的仪表板转移到了新的项目中,点击。打开项目中的pom.xml文件,注释以下两个插件。**注意:**在这里可能会打包失败,

2024-06-06 16:04:58 806

原创 mvn 命令报没有配置jdk环境

mvn命令报错,jdk环境变量配置没问题,并且java -version 也正常显示

2024-06-06 14:47:45 374

原创 SpringBean生命周期

Spring容器从配置文件或者注解中读取Bean定义信息,这些定义信息包括Bean的类名、作用范围(scope)、依赖关系(循环依赖问题)、初始化方法。Spring容器在实例化Bean之后,会进行依赖注入,将Bean所依赖的其他Bean注入到该Bean中,此过程使用setter方法或者反射直接访问字段;在@Bean注解上指定初始化方法(等同于使用spring中xml方法指定init-method属性的方法,但是现在谁还用spring xml啊)对新创建的bean实例进行自定义修改,通过实现该接口,可以。

2024-05-25 07:19:58 408

原创 springboot之监听器

ApplicationContext提供时间处理通过ApplicationEvent类和ApplicationListener接口,如果一个bean实现ApplicationListener接口在容器中,每次一个ApplicationEvent被发布到ApplcationContext中,这类bean就会收到这些通知。实现Spring事件机制主要有4个类:ApplicationEvent:事件,每个实现类表示一类事件,可携带数据。ApplicationListener:事件监听器,用于接收事件处理时间。Ap

2022-06-17 16:21:41 663 1

原创 分布式事务

了解分布式之前先看一下单机和集群的概念单机结构单机就是所有业务全部写在一个项目中,部署服务到一台服务器上,所有请求业务都由这台服务器去处理,当业务增长到一定程度的时候,服务器的硬件会无法满足业务需求,然后就会想到一个程序不行就部署多个。集群分布式分布式服务顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间也是通过rpc来交互或者是webservice来交互的。逻辑架构设计完后就该做物理架构设计,系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过

2022-06-14 16:48:10 262

原创 Redis

redis有哪些数据类型?String,List,Set,Zset,Hash什么是redis持久化?持久化就是把内存的数据写到磁盘中,防止服务宕机了,导致内存数据丢失。Redis的持久化机制是什么?redis提供了两种持久化机制 RDB 和 AOF机制。RDB:redis默认的持久化方式,按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产出的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。优点:只有一个文件dump.rdb,方便持久化。容灾性好,一个文件可以保存到安全的磁盘

2022-06-12 14:49:18 232

原创 JAVA集合之HashMap

哈希算法,源码,初始化,扩容,存入和查询,底层结构,是否线程安全。。。。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lk2qqZJq-1654920224872)(C:\Users\Leejie\AppData\Roaming\Typora\typora-user-images\image-20220609183701394.png)]存储entry对象,先根据hash算法决定在数据的位置,再根据equals方法决定其在链表中的存储位置;取出一个entry对象时,根据has

2022-06-11 12:06:36 239

原创 MySQL索引

定义:索引是一种排好序的快速查找的数据结构,他帮助数据库高效的进行数据的检索。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(额外的存储空间),这些数据结构以某种方式指向数据,这样就可以在这些数据结构上实现高效的查找算法。这个数据结构就叫做索引。索引一般以索引文件的形式存放在磁盘中,目前大多数索引都是采用B+树方式构建。主键索引索引列中的值必须是唯一的,不允许有空值;普通索引基本索引类型,允许在定义索引的列中插入重复值和空值。唯一索引索引列中的值必须是唯一的,但是允许为空值。全文索引只能在文本类型

2022-06-09 17:34:29 107

原创 ThreadLocal

ThreadLocal什么是ThreadLocal?ThreadLocal叫做线程变量,该变量是当前线程独有的变量,对于其他线程是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程都额可以访问自己内部的副本变量。每个Thread内都有自己的实例副本,且该副本只能由当前Thread使用。每个Thread有自己的实例副本,且其他Thread不可访问,也就不存在多线程间共享变量的问题。ThreadLocal提供了线程本地的实例。它与普通变量的区别在于,每个使用该变量的线程都会

2022-05-31 16:48:22 157

原创 Synchronized

Synchronizedsynchronized是java中的关键字,是一种同步锁。使用方式:修饰一个代码块,被修饰的方法称为同步方法,其作用的范围是整个代码块,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,起作用的范围是整个方法,作用的对象是调用这个方法的对象;修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是整个类的所有对象;修饰一个类,作用的范围是整个类,作用的对象是这个类所有的对象;Synchronized修饰代码块操作资源类:packag

2022-05-29 00:36:08 194

原创 什么是适配器?

什么是适配器?适配器是一种设计模式适配器模式:将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。使用场景:已经存在的类的接口不符合我们的需求创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。在不对每一个都进行子类化以匹配它们的接口的情况下,使用一些已经存在的子类。SpringMVC中的适配器首先找到前端控制器DispatcherServlet可以理解为适配器中的

2022-05-26 23:53:38 4530

原创 SpringIOC和Bean

SpringIOC和Bean一、什么是IoC?控制反转,是面向对象编程中的一种设计原则,降低代码之间的耦合度。其中最重要的方式为依赖注入(DI),通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所以来的对象的引用传递给它。二、IOC的原理IOC底层原理就是java反射。给定一个字符串就能传一个实例,利用set方法对实例的依赖进行注入;关于java反射在前面的文章已经学习过了,如何创建一个对象并执行这个对象的方法。在springIOC中,我们只需要在配置文件中给定一个类名

2022-05-24 16:24:59 144

原创 SpringIOC

SpringIOC以及bean一、什么是IoC?控制反转,是面向对象编程中的一种设计原则,降低代码之间的耦合度。其中最重要的方式为依赖注入(DI),通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所以来的对象的引用传递给它。二、IOC的原理IOC底层原理就是java反射。给定一个字符串就能传一个实例,利用set方法对实例的依赖进行注入;关于java反射在前面的文章已经学习过了,如何创建一个对象并执行这个对象的方法。在springIOC中,我们只需要在配置文件中给定一个类

2022-05-24 16:13:32 127

原创 Java动态代理

Java动态代理最近准备复习spring框架,AOP原理那就离不开代理模式了,索性就先把这个知识再学习一下!JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程;动态代理是用来产生一个对象的代理对象的。网上看到一个不错的例子:歌星或者明星都有一个自己的经纪人,这个经纪人就是他们的代理人,当我们需要找明星表演时,不能直接找到该明星,只能是找明星的代理人。比如刘德华在现实生活中非常有名,会唱歌,会跳舞,会拍戏,刘德华在没有出名之前,我们可以直接找他

2022-04-12 00:21:21 205

原创 Java反射

Java反射一、什么是反射java反射机制是指在运行状态中,对于任意一个类,都能直到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。用一句话总结就是反射可以实现在运行时可以知道任意一个类的属性和方法。二、反射的作用通过反射机制可以操作字节码文件;通过反射机制可以操作代码片段;那么什么是字节码文件?这里先简单科普一下,后面讲java的加载运行机制再详细介绍。其实字节码文件就是java源文件在被

2022-04-10 16:45:54 405

原创 MySQL常用的属性及状态

MySQL服务器属性状态SHOW STATUS 与 SHOW VATIVABLES 区别1、show status查看系统运行的实时状态,便于查看MySQL当前运行的状态,做出相应优化。2、show variables查看系统参数,系统默认设置的参数,属于静态属性。可以通过在my.cnf配置文件中修改常见查看的参数以及状态有:查看数据库的最大连接数show variables like 'max_connections';查看数据库连接空闲超时最大时间show variable

2022-04-08 01:14:27 1636

原创 MySQL锁机制

MySQL锁机制mysql锁的分类:按照锁粒度分类:行锁、表锁、页锁按照锁使用方式:共享锁,排他锁按照锁的思想:悲观锁、乐观锁行锁类型:Record Lock、Gap Lock、Next-key Lock锁粒度1. 行锁行锁是锁粒度最细的锁,表示只针对当前操作的行进行加锁。行锁有可能会出出现死锁的情况,行锁按照使用方式分为共享锁和排他锁;InnoDB默认使用行锁;共享锁(S锁,读锁)当事务A对数据加上了S锁,事务A可以读数据但不能修改数据,其他事务也只能对数据加S锁,不能加

2022-04-05 17:48:19 1260

原创 数据库事务

一、什么是事务定义:事务是一个最小的不可再分的工作单元;一个事务代表一个完整的业务操作,作为单个逻辑工作单元执行的一些列操作,要么完全执行,要么完全不执行。例如:银行转账,A账户转给B账户一百万,首先A账户上要减少这100w,然后B账户上要增加100w,这样才算是整个转账业务完全完成,如果A账号减少了,B账户上没增加,这肯定是不行的,或者说A账户没减少,B账户上增加了,那也肯定是不行的。所以要么就两个账户都正常增加减少,要么就都不变。大家发现,其实事务最终还是在数据库的层面,像银行转账,我们可以把它看

2022-04-04 22:44:35 3101

原创 什么是JDBC

其实写这些是因为最近在看spring事务,跟着就追溯到了JDBC上,工作中全都是使用各种封装好的方法,真正原始的方法也忘得也差不多了,就自己跟着被人的文章边看边自己记录一下,增强一起对jdbc的理解。自己只写了创建连接到执行sql获取结果的整个过程,想了解更多的可以看这篇文章:https://blog.csdn.net/qq_22172133/article/details/81266048什么是JDBCJDBC(Java DataBase Connectivity),是一套面向对象的应用程序接口(

2022-04-03 23:11:23 794

原创 数据库连接池

数据库连接池传统的数据库连接:Class.forName("com.mysql.jdbc.Driver");String name = "root";String password = "123";String url = "jdbc:mysql://127.0.0.1:3306/mydb";Connection conn = DriverManager.getConnection(url, name, password);传统的JDBC访问数据库技术,每次访问数据库都需要通过数据库驱动器D

2022-04-02 00:00:30 1002

原创 linux快速搜索指定内容-小知识

linux快速搜索指定内容-小知识因为自己负责的系统出现了问题,需要去服务器上查看日志,但是发现日志文件几百M,直接在服务器上打开看的话,打开的有特别慢。下载到本地网速又特别慢。因为大概清楚具体是哪里的报错,就想起了直接用命令行进行查询,查询又快,而且还是实时查看内容;具体命令:grep "WORKORDER" scheduletask.log// grep "要查询的内容" 文件名称具体显示:这样我就可以知道是哪里的代码报错了,是不是很方便,这样如果你查询某个数据或者排查问题效率都是很高的

2022-03-30 00:36:51 1164

原创 MySQL创建索引失败

MySQL创建索引失败报错信息:原因:将数据库表中某个字段设为索引时,提示当前字段的长度过长,为3072个字节;经过查询发现:在mysql5.6中索引列的最大长度为767个字节而对于utf-8编码,一个字符占3个字节,所以对于varchar类型字段,我们如果需要创建索引,类型大小就必须设置为小等于varchar(255)长度;...

2022-03-27 13:54:03 1656

原创 关于MySQL-InnoDB小知识点

关于MySQL-InnoDB小知识点InnoDB存储引擎行锁实现特点:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!在实际应用中,要特别注意InnoDB行锁的这一特性,不然的话,可能导致大量的锁冲突,从而影响并发性能。行级锁基于索引的,如果一条SQL语句用不到索引是不会使用行级锁的,会使用表级锁。行级锁的缺点是:由于需要请求大量的锁资源,所以速度慢,内存消耗大。...

2022-03-23 00:23:19 1266

原创 @Async异步

@Async异步一 、异步与同步异步:当程序1调用程序2时,程序1继续自己下面的动作,不受程序2的影响;同步:当程序1调用程序2时,程序1停下不动,直到程序2完成回到程序1来,程序1才继续执行下去;或者异步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事;(AJAX技术)同步:请求通过事件触发->服务器处理(期间浏览器仍然可以作其他事情)->处理完毕;(普通B/S模式)二、Spring中的@AsyncSpring中,默认采用的是单线程的

2022-03-21 23:20:57 674

原创 Not registered via @EnableConfigurationProperties, marked as Spring component, or scanned via @Confi

Not registered via @EnableConfigurationProperties, marked as Spring component, or scanned via @ConfigurationPropertiesScan今天编写配置类时,发现@ConfigurationProperties(prefix = "spring.task.execution")注解显示报红。1.添加依赖<dependency> <groupId>org.spring

2022-02-18 00:20:39 530

原创 MySQL进程阻塞造成锁表

MySQL进程阻塞造成锁表前言:上周因为修改数据库表结构造成了进程阻塞,其实当时并不知道出问题了,更不知道表被锁住了。因为当时修改了之后确实看到表一直在显示正在保存,开始还以为是navicat卡住了,就没管它了。结果晚上下了班,12点多了,群里说系统登录不上去了。因为那张表是进入系统前端就自动调接口访问的。所以导致系统直接登不进去。然后自己也很蒙,一直找不到问题,尝试重启了服务也不行,重新打包部署了还是不行。其实最开始就看了日志的,因为之前自己从来没遇到过数据库的问题,当时就没想着造成了mysql进程阻塞

2021-12-30 00:45:11 719

原创 解决项目中log4j版本漏洞

解决项目中log4j版本漏洞前言:作为程序员应该都知道最近log4j出现的漏洞问题,讲一讲我所在的公司,其实领导在log4j被爆出存在漏洞的当天就在群里说了这个事,并且让我们把自己负责的系统都检查一遍,有使用到log4j存在漏洞的版本都要进行更新(因为有些版本还没爆出存在安全问题),但是当时都没什么人去注意,结果直到上周末,我们组负责的一个缴费系统出现不能缴费的情况,才发现是中了病毒。然后领导们开始极度重视,专门安排人监督我们来更新log4j版本。废话不多说了,讲一下我负责的系统更新方式:首先,一般

2021-12-29 00:09:17 4017

原创 java常用加密算法及MD5的使用

前言:工作中经常遇到将数据进行各种方式的加密,然后封装到一个自定义的实体类中作为参数进行传输数据。当然这是为了数据在传输过程中的安全保证,不被其他人轻易的就获取到原数据;首先,加密解密的概念很简单明了,就是字面意思;加密就是对原来的明文的文件或数据按某种算法进行处理,成为一段不可读的代码,也称为密文;解密就是加密的反过程,将加密后不可读的代码转化成原来的数据;除了加密解密的概念,还有就是因为加密算法有很多种,总体分为两类:对称加密和非对称加密以及散列算法,对称加密就是加密和解密的使用的密钥是相同的,非对

2021-12-27 23:41:05 2087

原创 Springboot连接池的配置和遇到的问题

Springboot连接池的配置前言:最近发现项目日志中经常会出现有关数据源的一些警告信息,说实话看着这种日志就很闹心,而且对于数据源这么重要的东西还是有必要去着重解决,学习的。可以看出,有两个关于数据源的异常信息:1.在连接关闭之后不允许被再操作。2.抛出异常说连接是不可用的,请求时间超过了30000ms;其实看到这个情况就知道肯定跟数据源连接池的配置信息有关,name描述默认值autoCommit自动提交从池中返回的连接trueconnectionTim

2021-12-22 01:04:33 1423

原创 后端解决请求跨域

后端解决请求跨域前言:最近开发一个springboot项目,因为涉及到前端需要去调用另外一个服务器的接口,所以就涉及到了跨域问题。其实在这之前一直不知道跨域是什么,只是听说过,没有遇到过,就没花时间去了解。现在自己的项目也要解决这个问题,索性就在网上看了看,记录一下自己所学。什么是跨域?首先我们先说一下什么是同域:就是两个页面具有相同的协议,IP和端口号;那么跨域就是当一个url请求,它的协议,IP,端口中任意一个与当前请求的页面不同即为跨域;就比如说我们一个系统所在服务器,因为一些业务需要,要去

2021-12-14 01:05:22 1025

原创 创建MySQL只读权限用户

前言:前两天遇到自己负责的系统,其他公司要访问数据库进行一个数据统计;我当时就毫不犹豫的把数据库root权限的账号密码都发给他了。然后过了两天领导就找到我,跟我说如果别人把你数据库数据改了删了,你是要负责的哦;跟我说以后这种只能给他只读的权限账号,心里想,赶紧学习上!首先查看mysql中所有的用户SELECT user,host FROM mysql.user;查看指定用户的权限情况SELECT * FROM mysql.user WHERE user='root'创建一个用户CREAT

2021-11-29 14:08:30 16872

原创 Java的编码解码

Java的编码解码前言:介绍编码和解码之前,我们先了解一下我们的计算机,计算机中存储数据的具体单位是存储单元,一个最小的信息单元就是“位”(bit),一"位"只能表示0和1中的一个,即一个二进制位;“字节”(Byte):是由相连8个位组成的信息存储单位,它是目前计算机最基本的存储单位,一个字节通常可以存储一个字符(如字母、数字等)。只有字节才有地址的概念。对一种计算机的存储设备以字节为单位赋予的地址称为字节编址;也是目前计算机最基本的存储单元编址;java的基本数据类型:数据类型bit

2021-11-29 00:40:02 2809

原创 Stream的常见用法

Stream的常见用法前言:前面有篇文章介绍过Stream流的使用,但是只是理解,不去使用的话,每次遇到相关的代码还是会感觉有点难理解;学只是凡是要一点一点来吧,要想看一篇stream的文章就直接能在工作熟练使用那…反正我不行。所以遇到了在记录一下,多反思理解两次自然就会了…反正我行;想多了解一下stream可以看一下我之前的java8新特性的文章。//1.将集合中的数据收集到list/set中List<User> userList = list.stream().collect(Coll

2021-11-27 17:20:25 403

原创 Excel导入导出

SpringBoot-excel导入导出前言:前两天工作中需要做一个报表,那么必然表格数据的导入导出是少不了的。其实真正这个需求也不是那么简单,确实是基于excel的导入导出,但是要求的是页面中用户可以在富文本编辑器上写文档,然后需要导出列表中所有文档的数据内容,难点就是富文本编辑器可以定义字体的大小,格式,表情等等,甚至还有图片;所以要想把这些完整的导出到本地,真的不好搞。确实网上有很多的工具类,但是发现的确满足不了我的需求。(说的这些其实我也还没做好(等这个功能做完再详细讲这个),这篇文章就先给大家讲

2021-11-25 00:19:36 692

原创 Springboot自定义MVC组件

Springboot自定义组件前言:讲自定义组件前先要明白每个组件是干什么的,在项目运行中起着什么作用。这样我们知道在什么时候应该怎么样去配置组件,所以我们需要先来了解SpringMVC的运行流程SpringMVCspringMVC的核心在于其流程,它是一种 Servlet 的技术,它提供了核心控制器 DispatcherServlet 和相关的组件,制定了松散的结构;为了让大家对SpringMVC 有一个大致的认识,先给出它接收请求,处理请求,最后响应浏览器的流程图;发送请求到前端控制器Dis

2021-11-21 23:43:15 311

原创 SpringBoot上传下载文件

SpringBoot上传下载文件**前言:**首先这只是一个简单的本地上传和下载文件,项目中上传和下载文件更为复杂。但是对于上传和下载的步骤,以及涉及到文件流的传输大致都是一样的;既然是文件的传输,肯定是要弄明白IO流的(字符流,字节流,输入输出流…)推荐一篇非常详解的IO流的介绍:https://blog.csdn.net/mu_wind/article/details/108674284文件上传1.前端通过post请求,请求头的content-type为multipart/form-data,将

2021-11-16 00:40:20 385

原创 HttpClient发送请求

HttpClient发送请求前言:前段时间接到一个需求,要求系统中实现一个可以上传语音文件的功能,然后将文件和需要的参数发送到电信的接口上;开始说起来感觉很简单,但是就真的被折磨了好几天,主要还是httpClient发送文件和参数到指定url,还有要从公司内网调中台再调电信接口这个过程花费了不少时间。既然涉及到了文件的上传,就想着把涉及到的东西都系统的学一遍,毕竟之前也没做过这些。HttpClient请求数据到指定接口对于通过HttpClien发送文件,就要先了解HttpClient的知识了;Ht

2021-11-14 16:06:33 3744

原创 java8 常用新特性

java8 常用新特性相信现在大家使用的java版本都是1.8及以上的了吧,对于所说的java8新特性感觉真的不能说新了,毕竟现在java16版本都发布了;因为在项目中遇到好多代码都是能使用少写的坚决不多谢一个字母,lambda表达式、stream…在项目中全都是这些写法,有必要花点时间巩固一下,不至于看到这些写法都感觉看不懂的样子;Lambda表达式它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理;最简单的Lambda表达式可由参数列表、->符号和语句块组成:for(O

2021-11-10 00:30:44 446

原创 SpringBoot 多数据源配置

SpringBoot 多数据源配置前言:才接触公司项目的时候看到公司springboot项目中使用了多个数据源的操作,当时除了会直接用,对多数据源就没任何其他的了解了,而且公司使用的是自己开发的一个脚手架,我感觉是把springboot和mybatis结合在了一起,框架中导入的和数据源连接相关的依赖都是公司开发然后打包之后的依赖包。所以当时我想通过公司写的代码去了解熟悉这个多数据源,结果发现是真的看不懂,和数据源相关的都是技术大佬自己去建方法,继承mybatis中的类,反正感觉很复杂,完全搞不懂。然后

2021-10-12 22:15:16 209

原创 Log4j日志输出格式

Log4j日志输出格式对于我才开始工作来说,输出日志唯一的目的就是打印代码的调试信息,当有项目运行什么问题或者错误可以通过查看日志快速的找到问题根源(这也是我来公司最开始就遇到的问题)。先分享一个公司框架自带的通用日志文件(log4j.properties)log4j.rootLogger=DEBUG, stdout, filelog//目的地为stdot,输出地址为控制台log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j

2021-09-05 00:41:54 5953

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除