自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 资源 (1)
  • 收藏
  • 关注

原创 java8到java17新特性总结

.

2022-07-18 15:07:06 1637 1

原创 SpringMVC执行流程图

2022-04-08 21:13:06 1396

原创 linux分区

1、 boot分区大小:一般300Mb左右作用:引导分区,包含了系统启动的必要内核文件,即使根分区损坏也能正常引导启动,一般这些文件所占空间在200M以内。分区建议:分区的时候可选100M-500M之间,如果空间足够用,建议分300-500M。避免由于长期使用的冗余文件塞满这个分区。分区格式:建议ext4,可按需求更改。2、swap分区: 大小:一般是物理内存的2倍,如2048mb 4096mb 作用:类似于Windows的虚拟内存,在内存不够用时占用硬盘的虚拟内存来进...

2022-04-08 21:11:30 5354

转载 Java 比较两个字符串的相似度算法(Levenshtein Distance)

算法简介:Levenshtein Distance,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance。/** * 比较两个字符串的相识度 * 核心算法:用一个二维数组记录每个字符串是否相同,如果相同记为0,不相同记为1,每行每列相同个数累加 * ...

2022-04-01 11:26:27 2308

原创 Java集合框架分析(Queue)——队列体系结构

2022-03-17 17:03:41 758

原创 list集合排序

List<TestDto> dtoList= new ArrayList<>();1、根据TestDto对象的priority字段降序排序 dtoList.sort(Comparator.comparing(TestDto::getPriority).reversed());2、根据TestDto对象的sort字段升序排序dtoList.sort(Comparator.comparing(TestDto::getSort));...

2022-03-08 16:13:23 181

原创 SpringBoot 在IDEA中实现热部署 (JRebel插件GUID生成地址)

Service Address :https://jrebel.qekang.com/{GUID}GUID地址:https://www.guidgen.comhttp://www.ofmonkey.com/transfer/guidhttps://www.guidgenerator.com/online-guid-generator.aspx

2021-12-30 11:09:08 728

原创 java 常用的Annotation(常用注解)

@Deprecated -- @Deprecated 所标注内容,不再被建议使用。@Override -- @Override 只能标注方法,表示该方法覆盖父类中的方法。@Documented -- @Documented 所标注内容,可以出现在javadoc中。@Inherited -- @Inherited只能被用来标注“Annotation类型”,它所标注的Annotation具有继承性。@Retention -- @Retention只能被用来标注“Annotatio...

2021-12-22 15:07:14 340

转载 盘点一下全网最有趣的代码注释

程序员的幽默0、你看,这里有一只狗//.==..==.////`^\\//^`\\////^^\(\__/)/^^^\\////^^^^/66\^^^\\////^^^^/(..)\^^^\\////^^^/\|v""v|/\^^^\\////^^/...

2021-12-20 16:43:59 1296

转载 js阿拉伯数字转中文数字

//阿拉伯数字转中文数字 function noToChinese(num) { if (!/^\d*(\.\d*)?$/.test(num)) { alert("Number is wrong!"); return "Number is wrong!"; } var AA = new Array("零", .

2021-12-01 14:28:14 1459

原创 更新nginx配置

nginx -tnginx -s reload

2021-08-19 12:14:46 1898

转载 MySQL事务隔离级别和实现原理

MySQL 事务本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的。数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。假设一个网购付款的操作,用户付款后要涉及到订单状态更新、扣库存以及其他一系列动作,这就是一个事务,如果一切正常那就相安无事,一旦中间有某个环节异常,那整个事务就要回滚,总不能更新了订单状态但是不扣库存吧,这问

2021-08-16 10:06:54 201

原创 mybatis-plus自定义sql报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

1、查看yml路径配置mybatis-plus: mapper-locations: classpath*:com/xxxx/laws/mapper/xml/*.xml2、查看mapper接口的方法和xml定义的id名称是否一致3、查看maven是否打包xml文件<resource> <directory>src/main/java</directory> <includes>

2021-08-09 19:09:44 333

原创 springboot集成mybatis-plus,并自动生成代码

1、引入相关依赖 <!-- mybatis plus 代码生成器 + 模板引擎 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.0</version&gt

2021-08-09 12:46:12 240

原创 修改springboot临时文件路径

1、修改yml配置文件server: port: 9000 tomcat: basedir: E:\Temp\90002、重启项目后自动生成临时文件夹

2021-08-09 12:05:07 500

原创 springboot测试简单集成

加入springboot测试依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>test

2021-08-05 10:52:04 69

原创 freeMarker生成静态html页面

yml配置freemarker freemarker: request-context-attribute: req #req访问request suffix: .ftl #后缀名 content-type: text/html enabled: true cache: false #缓存配置 template-loader-path: classpath:/templates/ #模板加载路径 按需配置 charset: UTF-8 #编码格

2021-08-04 18:31:37 618

原创 Swagger2配置

/** * Swagger2配置 * @author ysx * @date 2021/5/14 * @Varsion 1.0.0 */@Configuration@EnableSwagger2@PropertySource("classpath:config/config.properties")public class SwaggerConfig { @Value("${config.swagger.open}") private boolean enable;

2021-08-03 18:27:23 179

原创 SpringMVC资源访问路径配置

@Configurationpublic class SpringMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/abc")//系统文件虚拟地址 .addResourceLocations("/s

2021-08-03 18:24:48 688

原创 允许跨域配置

@Componentpublic class OriginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filter

2021-08-03 18:17:05 362

原创 事务控制配置

@Configurationpublic class TxAnoConfig { @Autowired private DataSource dataSource; @Bean("txManager") public DataSourceTransactionManager txManager() { return new DataSourceTransactionManager(dataSource); } /*事务拦截器*/

2021-08-03 18:15:56 172

原创 java使用线程实现定时器功能

/** * 定时器 * @param initialDelay 开始时间(秒) * @param period 定时时间(秒) */ private void refresh(Long initialDelay,Long period) { Runnable runnable = new Runnable() { @Override public void run() {

2021-08-03 18:05:06 99

转载 springBoot启动时让方法自动执行的几种实现方式

1.实现ServletContextAware接口并重写其setServletContext方法@Componentpublic class TestStarted implements ServletContextAware { /** * 在填充普通bean属性之后但在初始化之前调用 * 类似于initializingbean的afterpropertiesset或自定义init方法的回调 * */ @Override public v

2021-08-03 16:56:34 173

转载 sql中where和having的区别

sql中where和having的区别用的地方不一样where可以用于select、update、delete和insert into values(select * from table where …)语句中。having只能用于select语句中执行的顺序不一样where的搜索条件是在执行语句进行分组之前应用having的搜索条件是在分组条件后执行的即如果where和having一起用时,where会先执行,having后执行子句有区别where子句中的条件表达式having都可以跟

2021-07-30 18:33:04 510

转载 MySQL内置函数大全

MySQL 函数MySQL 有很多内置的函数,以下列出了这些函数的说明。MySQL 字符串函数函数 描述 实例 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码: SELECT ASCII(CustomerName) AS NumCodeOfFirstCharFROM Customers; CHAR_LENGTH(s) 返回字符串 s 的字符数

2021-07-30 17:08:42 253

原创 mysql按分隔符截取字符串

函数:SUBSTRING_INDEX(str, delimiter, count)返回一个 str 的子字符串,在 delimiter 出现 count 次的位置截取。count > 0:从左边数起delimiter count次,且返回位置前的子串;count < 0:从右边数起delimiter count次,且返回位置后的子串。mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); -> 'w

2021-07-30 16:53:19 2161

转载 java中的 流 (Stream)

什么是输入/输出流Java 程序通过流来完成输入/输出,所有的输入/输出以流的形式处理。因此要了解 I/O 系统,首先要理解输入/输出流的概念。输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中,输出则正好相反,是将数据写入到各种输出设备(比如文件、显示器、磁盘等)。例如键盘就是一个标准的输入设备,而显示器就是一个标准的输出设备,但是文件既可以作为输入设备,又可以作为输出设备。数据流是 Java 进行 I/O 操作的对象,它按照不同的标准可以分为不同的类别。按照流的方向主要分为输入流

2021-07-30 12:25:12 583

原创 list集合转tree树工具

public class TreeUtils { private static final String ROOT_ID = "0"; private static final String GET = "get"; private static final String SET = "set"; /** * 私有构造器 */ private TreeUtils() { throw new IllegalStateExcept.

2021-07-28 18:12:28 205

转载 23 种设计模式的分类和功能

1. 根据目的来分根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式3 种。创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。 行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样.

2021-07-23 17:32:42 83

原创 单例模式介绍

单例模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方法,通过此方法可以直接获取该类的唯一对象。下面介绍下懒汉模式和饿汉模式的实现方式1、懒汉模式:顾名思义,他是一个懒汉,他不愿意动弹。什么时候需要吃饭了,他就什么时候开始想办法搞点食物。即懒汉式一开始不会实例化,什么时候用就什么时候new,才进行实例化public class Singleton { /

2021-07-23 11:53:05 40

原创 mysql中information_schema.tables表字段说明

字段 含义 Table_catalog 数据表登记目录 Table_schema 数据表所属的数据库名 Table_name 表名称 Table_type 表类型[system view|base table] Engine 使用的数据库引擎[MyISAM|CSV|InnoDB] Version 版本,默认值10 Row_format 行格式[Compact|Dynamic|Fixed] Table_rows 表里所存多少

2021-07-13 18:08:33 1180

转载 JVM内存模型

JVM运行时数据区    Java虚拟机在运行时对该Java进程占用的内存进行的一种逻辑上的划分,包括方法区、堆内存、虚拟机栈、本地方法栈、程序计数器。 这些区块实际都是Java进程在Java虚拟机的运作下通过不同数据结构来对申请到的内存进行不同使用。线程共享 堆内存: 存放对象实例及数组 所有线程都可以访问修改,存放的是...

2021-07-08 10:32:40 52

转载 Java内存模型(Java Memory Model)

一、概述  Java内存模型是Java语言在多线程并发情况下对于共享变量读写(实际是共享变量对应的内存操作)的规范,主要是为了解决多线程可见性、原子性的问题,解决共享变量的多线程操作冲突问题。】JMM描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存中读取出变量这样的底层细节。所有的变量都存储在主内存中,每个线程都有自己独立的工作内存,里面保存该线程使用到的变量的副本(主内存中变量的一份拷贝) JMM的两条规定  1、线程对共享变量的所有操...

2021-07-08 10:29:31 84

原创 shiro反序列化漏洞修复(使用随机密钥)

说明:shiro低版本使用固定默认密钥,有被攻击的风险,可以升级shiro版本,Apache官方已在1.2.5及以上版本中修复此漏洞,但是此方式有依赖冲突的风险。这里说说不升级版本的解决方案,这方案和官方的方案一样,都是使用生成的随机密钥1、创建随机生成密钥工具public class GenerateCipherKey { /** * 随机生成秘钥,参考org.apache.shiro.crypto.AbstractSymmetricCipherService#generat

2021-07-07 11:52:31 2970

原创 springboot发送电子邮件

1、引入maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>2、开通服务获取授权码我这里使用的qq邮箱,首先去qq邮箱-->设置-->账户--&g.

2021-07-03 18:22:38 90

转载 ActiveMQ、RabbitMQ、RocketMQ、Kafka的介绍及优缺点说明

ActiveMQ  单机吞吐量:万级  topic数量都吞吐量的影响:  时效性:ms级  可用性:高,基于主从架构实现高可用性  消息可靠性:有较低的概率丢失数据  功能支持:MQ领域的功能极其完备  总结:    非常成熟,功能强大,在早些年业内大量的公司以及项目中都有应用     偶尔会有较低概率丢失消息     现在社区以及国内应用都越来越少,官方社区现在对ActiveMQ 5.x维护越来越少,几个月才发布一个版本     主要是基于解耦和异步来用...

2021-07-03 15:01:14 741

原创 线程的生命周期

线程的生命周期包含5个阶段:新建、就绪、运行、阻塞、销毁。 新建:就是刚使用new方法,new出来的线程,此时JVM 进程还没有真正的创建线程; 就绪:调用的线程的start()方法后,JVM 进程会去创建一个新的线程,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行; 运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能; 阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep

2021-06-30 17:39:51 67

转载 java爬虫之Jsoup 方法

1、public String nodeName() 得到节点名2、public String tagName() 得到元素的标签名 如p3、public Element tagName(String tagName) 改变元素的标签 。如:el.tagName(“p”) 把一个标签改变为一个标签。4、public Tag tag() 得到元素的Tag5、public boolean isBlock()测试元素是否是块级元素。6、public String id() 得到元素的id.

2021-06-07 17:29:19 298

原创 解决并发请求下刷新多个token的问题

使用redis加锁实现,拿到锁的线程进行token刷新,拿不到锁的线程跳过token刷新具体实现/** * 刷新AccessToken */ private boolean refreshToken(String uid,String account, ServletResponse response) { Boolean lock = JedisUtil.getLock(account);//获取锁 if(lock){

2021-05-21 16:45:10 1554

原创 pdf文件转html(保留文本信息)

1、引入maven依赖<dependency> <groupId>net.sf.cssbox</groupId> <artifactId>pdf2dom</artifactId> <version>1.9</version> </dependency>2、java实现/** * pdf转html .

2021-05-17 18:22:26 423

空空如也

空空如也

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

TA关注的人

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