自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java线程池详解

工作流程、参数、类型、任务队列、拒绝策略;

2023-03-14 11:29:19 716 1

原创 缓存穿透、击穿、雪崩及应对策略

大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,大量的用户请求直接访问数据库,导致数据库压力骤增甚至宕机,造成整个系统崩溃。

2023-02-06 22:41:31 866

原创 Redis单线程还快的原因

Redis Server是多线程的,Redis单线程指的是请求处理整个流程是单线程的!

2023-02-06 22:15:41 3455 1

原创 Redis持久化策略(RDB/AOF)及选型

Redis持久化的意义:防止服务或系统宕机导致数据丢失。Redis提供了两种持久化策略:RDB(Redis DataBase)、AOF(Append Only File)。注:RDB和AOF可以同时使用,也可以都不使用。在前者的情况下Reids会优先使用AOF恢复数据(完整度高),后者情况下Redis将变成纯内存数据库(断电即失)。

2023-02-06 21:23:47 773

原创 Java for和foreach区别及性能选型

3建议ArrayList使用普通for循环,降低上下文和参数的复杂度;LinkedList使用foreach循环更适配链表数据结构。

2022-12-07 16:34:11 721

原创 resttemplate无法接收[text/json;charset=UTF-8]

org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class java.lang.Object] and content type [text/json;charset=UTF-8]

2022-11-14 17:24:25 1807

原创 编译时报错:zip END header not found 解决方法

Java: 读取E:\apache-maven-3.8.2\repository\com\lowagie\itext\2.1.7\itext-2.1.7.jar时出错; zip END header not found

2022-11-03 16:10:49 22427 2

原创 MyBatis整合A.CTable自动建表

实测ACTable能试别到Mybatis-Plus的相关注解,所以如果原项目已经整合的Mybatis-Plus,是不需要在实体类上额外加注解就能自动建表的(如@TableName、@TableId、@TableField这些注解)。这里有的博主用的1.5.0版本,但是实测有的项目下会有bug,所以这里用的1.4.9。

2022-09-21 16:04:57 459

原创 List调用add方法报UnsupportedOperationException

这是因为Arrays.asList()方法返回的是Arrays类的一个内部嵌套类ArrayList,这里的ArrayList和直接new出来的不一样,是不支持任何修改操作的,一旦修改就会抛出UnsupportedOperationException这一异常。

2022-08-01 17:13:31 1081

原创 使用Arrays.sort方法对对象排序

Arrays.sort()方法对引用类型(对象)排序有两种方法:继承Comparable接口并实现compareTo方法import java.util.Arrays;public class Test { public static void main(String[] args) { Man[] msMans = { new Man(3, "a"), new Man(60, "b"), new Man(2, "c") }; Arrays.sort(msM.

2022-05-06 16:46:56 1936

原创 Java实现S3分段上传(解决大文件上传问题)

Amazon S3会限制单次上传的大小,上传过大的文件会导致上传失败(单次上传的最大数据元是5GB),官方建议的是大于100MB的文件就应该考虑分段上传。一般而言,如果您的对象大小达到了 100 MB,您应该考虑使用分段上传,而不是在单个操作中上传对象。官方文档地址网上的代码大部分要么是单线程执行很慢,要么就是本地的临时文件(File)没有删除,这里参考了网上现有的代码做了一些整合,具体代码如下:/** * 分段上传文件至S3 * @param file * @param s3Key.

2022-04-13 17:11:44 9943 18

原创 JPA读不到已提交事务的数据

最近开发碰到一个问题,事务B中的查询需要用到事务A中提交的数据,所以我就让事务B循环查询数据库,等待事务A提交后再继续执行。但是最后发现事务B怎么等也等不到事务A的数据=.= (这里有个前提,事务AB所在方法都是主方法执行完毕后开启的异步方法,事务A和事务B无法控制开启的先后顺序),所以浅看了一下事务是怎么个回事。这里首先要清楚事务的四种隔离级别:事务隔离级别:Read Uncommitted(未提交读);Read Committed(已提交读):解决脏读;Repeatable Read(可.

2022-03-30 22:29:30 1482

转载 SpringBoot项目启动后直接退出Process finished with exit code 1

启动SpringBoot项目时,往往会出现一些错误。这种错误没有明确的指向信息,但可以肯定的是springboot启动失败了。如何找到具体失败的原因呢。SpringBoot的启动简单来说就包括两个部分1.SpringApplication 的实例化。即:SpringApplication application = new SpringApplication(QurtzJdbcApplication.class)2.执行run()方法。application.run(args)所以问题就应该出

2021-11-11 15:18:39 1226

原创 JDK1.8 HashMap扩容源码(resize()方法)解读

扩容源码 final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; //oldCap:旧数组长度,oldThr:旧扩容阈值,newCap:新数组长度,newThr:新扩容阈值 int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; int newCap, .

2021-09-17 22:12:59 245

原创 SpringCloud实现服务间调用

Eureka注册的服务之间调用不需要指定服务地址,而是通过服务名向注册中心咨询,并获取所有服务实例清单(缓存到本地),然后实现服务的请求访问。Ribbon//tencent是在Eureka中注册的服务名,"meetings/modify"是具体的接口地址ResponseEntity<ResponseResult> response = myRestTemplate.postForEntity("http://tencent/meetings/modify", req, ResponseRe

2021-08-30 15:00:33 292

原创 斐波那契数列java实现

斐波那契数列斐波那契数列定义:F(n)=F(n-1)+F(n-2)(n>=2,F(0)=0,F(1)=1)java实现: /** * 递归,当n较大时时间复杂度极高,且有很多重复计算 * * @param n * @return */ public static long getFibonacciByRecursion(int n) throws Exception { if (n == 1) return

2021-08-10 21:00:15 199

原创 同一个catch代码块捕获多个异常

写try/catch的时候可能有多个异常类型处理方式相同,如果用多个catch代码块的话代码会很冗余,可以用如下写法进行简化:try { //```} catch (ServiceRequestException | AutodiscoverLocalException e) { log.error("Error=============>" + e.getMessage());} catch (Exception e) { log.error("Error=======

2021-06-25 10:45:01 819

原创 SpringBoot异步执行方法

SpringBoot中使用@Async注解标记的方法,会在调用方法的当前线程之外的独立线程中执行。Spring使用@Async注解实现异步任务:application类上加@EnableAsync注解:@EnableAsyncpublic class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); }}.

2021-06-18 10:50:46 1348

转载 EWS(Exchange Service)基本使用(Java)

EWS(Exchange Service)基本使用(获取个人会议,会议室会议内容,会议室列表,发送会议,修改会议,删除会议)最近公司要求和exchange服务对接,所以稍微研究了一下官方文档,做出以下总结,欢迎大家补充。先放出exchange官方开发说明文档:https://docs.microsoft.com/zh-cn/exchange/client-developer/exchange-web-services/calendars-and-ews-in-exchange与exchange we

2021-06-08 10:10:08 2539 2

原创 RabbitMq消费者循环重复消费信息

RabbitMq消费者一直循环重复消费信息​ 消费者消息签收模式为自动时,如果消费端处理出现异常并且被抛出了,该条消息就会一直被重新消费。如果对生产者传递给消费者的实体数据结构进行了更改,而此时队列中还有消费者未使用的数据,那么消费者就无法接收这些数据,进而引发异常。且在未进行配置的情况下,消费者会重复接收这些数据,导致队列堵塞。解决方法:将requeue设为false:spring.rabbitmq.listener.simple.default-requeue-rejected=false

2021-05-17 10:39:13 1997

原创 RabbitMq传递的实体修改引发阻塞

项目有些地方需要用RabbitMq去实现队列,队列的相关代码如下:/****传入队列*****/rabbitTemplate.convertAndSend(CommonConstant.MEETING_STATUS_EXCHANGE, CommonConstant.MEETING_STATUS_ROUTING, new WSMessgeDTO(meeting, WSMessgeDTO.MeetingChangeType.CREATE));/*****接收************/@Rabbit.

2021-05-12 11:09:14 356

原创 SpringBoot返回文件给前端

主要代码如下:/** * 通过HttpServletResponse将文件流返回给前端 * * @param response HttpServletResponse在Controller层直接接收即可 * @param is 需要返回的文件流 * @param fileName 文件名 * @return */private static ResponseEntity<InputStreamResource> encapsulateResponseEntities(HttpS

2021-04-22 10:59:47 6899

原创 JPA原生sql接收自定义实体

JPA写原生sql的时候接收到的返回值可能是不同于定义的实体类的,比如接收到的返回值是从不同表中拿到的不同字段组成的实体,此时用HashMap或者自定义的DTO去接是会报错的。如果不想在某个实体中加大量的@Transient注解标注的字段去接这个返回值,则需要自定义一个接口去接,以下进行举例://比如我这里这段sql是获取某个设备当前在线和离线的数量@Query(value = "Select (Select COUNT(ws.id ) FROM table ws where last_updated

2021-04-09 14:46:57 1407

原创 Long类型数据传到前端精度丢失问题

Long类型数据传到前端精度丢失问题原因JS内置有32位整数,而number类型的安全整数是53位。如果超过53位,则精度会丢失。正如现在后台传来一个64位的Long型整数,因为超过了53位,所以后端返回的值和前端获取的值会不一样。出现场景网上有很多改序列化方式让Long类型数据变成String类型的方法,试了都没什么用,后来仔细看了下发现,即视不加这些序列化方法,常规的后端Long类型数据传到前端都会自动转成字符串(包括自己new出来的一些DTO、JPA直接查出来的实体等等)。但在一些自己重写的方

2021-03-25 11:18:02 521

原创 POI cell.setCellType()过时的替代方案

POI cell.setCellType()替代方案用poi读取excell单元格数据时需要指定格式,不然可能会报形如:Cannot get a STRING value from a NUMERIC cell这样的错,但是r.getCell(0).setCellType();这个方法显示已过时了(=.=#),点进去找找有没有替代方案,看到这么一行注释:/**If what you want to do is get a String value for your numeric cell,

2021-03-19 11:03:40 10001 10

原创 left join副表查询条件影响了主表查询结果

问题描述:left join副表查询条件影响了主表查询结果sql代码如下:SELECT count(r.id) as weight ,r.*,m.*FROM room r left join meeting m on m.room_id =r.id where r.tenant_id =1 and r.is_del = 0 and (m.organizer_id = 7 OR m.organizer_id IS NULL ) GROUP BY r.id,r.name如上,meeting表.

2021-03-07 17:27:07 1485 1

原创 Gateway一直访问本地

配置文件中配了远程nacos服务的地址,但是一启gateway项目就连本地:2021-03-07 10:06:58.431 INFO 8388 --- [ main] c.a.n.c.c.impl.LocalConfigInfoProcessor : LOCAL_SNAPSHOT_PATH:C:\Users\l22966\nacos\config2021-03-07 10:06:58.456 INFO 8388 --- [ main] c.a.nacos.c

2021-03-07 10:20:10 2113 2

原创 BaseModel(主键用雪花算法生成)

最近项目用的BaseModel,主键生成方案用的雪花算法,感觉通用性比较强,做个存档,有需要直接复制过来用就行了:import com.fasterxml.jackson.annotation.JsonIgnore;import com.fasterxml.jackson.databind.annotation.JsonDeserialize;import com.fasterxml.jackson.databind.annotation.JsonSerialize;import com.fas.

2021-01-22 10:54:30 340

原创 子类报错:No identifier specified for entity

新项目需要定义的实体类很多,每个类都需要定义主键、创建时间、最后修改时间,主键除了少数是自增其他都是雪花算法生成,为了防止代码冗余,为这些主键定义了一个公共父类BaseModel,父类域包含id、创建时间、最后修改时间这三个属性。但是继承父类后子类会报错:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class

2021-01-14 09:37:50 594 2

原创 SpringCloud依赖冲突

SpringCloud子项目引入一个依赖后子项目就起不起来了,idea提示内容如下:***************************APPLICATION FAILED TO START***************************Description:The bean 'jwtTokenEnhancer', defined in class path resource [org/springframework/boot/autoconfigure/security/oauth

2021-01-13 11:40:32 638 2

原创 JPA findById方法和getOne方法区别

JPA findById方法和getOne方法区别Jpa基础的CRUD方法继承自接口CrudRepository<T, ID>,包含以下方法:<S extends T> S save(S entity);<S extends T> Iterable<S> saveAll(Iterable<S> entities);Optional<T> findById(ID id);boolean existsById(ID id);It

2021-01-08 15:21:14 1311 2

原创 Calendar类常用方法,获取每月最大天数

Calendar类平时用到时间戳主要是用java.sql.Timestamp这个类,但是Timestamp获取年月日时分秒的方法现在都标注不推荐了,为了防止官方哪天突然给他删了,可以用Calendar类做一些替代操作。Calendar对象初始化Calendar cal = Calendar.getInstance(); // 返回一个基于当前时间和默认时区、区域设置的日历对象日历一般配合时间戳使用,所以还需要设置时间cal.setTime(timestamp); //这

2020-12-22 10:21:25 8326

原创 自动为类生成sql语句

工作原因要用到原生sql,但是类里的属性太多了,写起来简直要命,所以写了个insert、update的代码生成器,具体代码如下:package com.example.batis.Utils;import java.lang.reflect.Field;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;/** * @Project: hello-wolrd * @Pa.

2020-12-18 14:26:01 670

原创 JPA写原生SQL

JPA原生sql代码示例@Repositorypublic interface ParticipantRepository extends JpaRepository<Participant,Long> { List<Participant> getByAppointmentId(Long appointmentId); int deleteByAppointmentId(Long appointmentId); Participant getB

2020-12-17 14:23:45 1124

原创 Could not determine type for: org.springframework.web.multipart.MultipartFile

SpringBoot启动时报错:Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.MappingException: Could not determine type for: org.springframework.web.multipart.Mul

2020-12-08 11:31:23 548

原创 Git常用命令

分支$ git branch -a #查看所有分支$ git branch -r #查看所有远程分支$ git branch #查看本地分支$ git branch abc #新建abc分支$ git branch -D master #删除master分支$ git branch -vv #查看本地分支和远程分支关联关系$ git checkout master .

2020-12-03 10:03:30 85

原创 RestTemplate摘要认证

ResTemplate摘要认证模拟Postman Authorization下Digest Auth(摘要认证)类型的认证方式引入依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version></dependency&g

2020-11-27 13:40:12 1577 3

原创 SpringBoot整合Mybatis(注解+xml)

SpringBoot整合Mybatis文章目录SpringBoot整合MybatisSpringBoot整合Mybatis引入maven依赖配置application.yml文件建实体类、Controller类、Service类官方文档:https://mybatis.org/mybatis-3/zh/getting-started.htmlSpringBoot整合Mybatis引入maven依赖(IDEA建项目的时候直接选就可以了)<dependency> <groupI

2020-11-25 10:06:49 498 1

原创 Lombok安装及常用注解

Lombok用处Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。(百度百科)IDEA安装lombokfile->Settings->plugins,在Marketplace搜索lombok然后安装即可(Eclipse)如果是maven项目,也可以在pom文件中添加依赖:<dependency>

2020-11-24 11:48:56 140

原创 equals()和==的区别(Java)

equals()和==的区别(Java)“==”用法基本数据类型:双等号比较的是值引用数据类型:双等号比较的是内存中的地址equals()用法没有重写equals()方法:比较内存中的地址重写了equals()方法:参照重写的方法重写了equals()方法的类:String:重写的equals()方法比较字符串内容;字符串判等全部使用equals()方法,双等号是根据内存地址进行判断。Integer:重写的equals()方法比较整形变量的值;注:当给Integer对

2020-11-17 15:44:39 116

RedisUtil工具类

狂神的Redis工具类,有时候所需积分会莫名其妙变成非0值,我发现了会改回0 - =

2020-11-04

空空如也

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

TA关注的人

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