java
文章平均质量分 50
海光之蓝
热爱生活,孜孜不倦
展开
-
maven打包发布依赖
编译打包之后的class文件中没有注释,这些注释在类文件中是有的!怎么设置可以让编译之后的class文件包含注释?原创 2022-09-30 11:30:17 · 134 阅读 · 0 评论 -
jvm调优
jvm配置说明原创 2022-06-08 23:22:07 · 713 阅读 · 0 评论 -
短地址生成算法甄选
1.推荐算法,乱序62进制算法1.数据库自增id2.将自增id转换成62进制缺点:生成地址,部分有序,总体不可猜代码如下:package com.lyr.demo;import org.apache.commons.lang3.StringUtils;import java.util.Collections;import java.util.List;import java.util.stream.Collectors;/** * 10进制数与62进制数相互转换 * <原创 2022-05-17 23:04:38 · 341 阅读 · 0 评论 -
MongoDB、ES、Redis、HBase四种数据库的简单区别
适用场景两者其实在很多使用场景上有重合之处, 是可以互相替代, 比如日志收集但是某些方面两者又各有特色,比如: 如果打算使用一个文档型的业务数据库, 那最好还是选mongodb, 如果你有要求复杂查询又并发性能要求高的场景,类似搜索服务,那最好的选择是elasticsearch除此之外:MongoDB有多个存储引擎可以选择, 而且MongoDB不仅看重数据的分析, 对数据的管理同样看重, 总的来说MongoDB更倾向于数据的存储和管理, 可以作为数据源对外提供, 未来说不定还会有支持join和支持倒原创 2022-04-20 17:05:02 · 4263 阅读 · 0 评论 -
WebMvcConfigurer中addArgumentResolvers方法的使用
在Springboot中的WebMvcConfigurer接口在Web开发中经常被使用,例如配置拦截器、配置ViewController、配置Cors跨域等。本文主要讲解另一个方法:addArgumentResolvers()在实例中的应用。一、方法作用该方法可以用在对于Controller中方法参数传入之前对该参数进行处理。然后将处理好的参数在传给Controller中的方法。官方API文档解释:添加解析器以支持自定义控制器方法参数类型。这不会覆盖对解析处理程序方法参数的内置支持。要自定义对参数解原创 2022-04-15 15:41:03 · 2064 阅读 · 0 评论 -
Feign客户端指定为Get方式,但是服务端接收的请求却为Post方式
要Feign使用get方式请求,需要满足以下两个条件:请求方式指定为get;在所有的请求参数上,加上@RequestParam;参考博客:Feign客户端指定为Get方式,但是服务端接收的请求却为Post方式原创 2022-04-09 11:54:36 · 708 阅读 · 0 评论 -
Java并发之AQS详解(cas/ReentrantLock/Semaphore/CountDownLatch)
Java并发之AQS详解(cas/ReentrantLock/Semaphore/CountDownLatch)Java并发之AQS详解 Java中CAS详解什么是AQS及其原理原创 2022-03-31 14:53:43 · 451 阅读 · 0 评论 -
创建有返回值的线程,测试代码 Callable
创建有返回值的线程,测试代码 public static void main(String[] args) throws ExecutionException, InterruptedException { FutureTask futureTask = new FutureTask(() -> { ThreadUtil.sleep(10, TimeUnit.SECONDS); return "我在等待"; });原创 2022-02-11 17:24:37 · 371 阅读 · 0 评论 -
TransactionSynchronizationManager.registerSynchronization使用中事务传播产生的问题
TransactionSynchronizationManager是一个事务管理的核心类,通过TransactionSynchronizationManager我们可以管理当前线程的事务。而很多时候我们使用这个类是为了方便我们在事务结束或者开始之前实现一些自己的逻辑。类似下面的逻辑我们希望在事务结束后再执行某些业务。所以可以使用TransactionSynchronizationManager.registerSynchronization通过实现TransactionSynchronization接口原创 2021-12-04 10:59:14 · 1009 阅读 · 0 评论 -
@Transactional生效和失效测试及传播机制
一.概念@Transactional是springboot框架中的声明式事务管理注解,是现在编程中普遍使用的事务管理注解。通过该标注spring可以知道在什么地方启用数据库事务功能。但是关于这个注解,如果不明白其原理,是有很多坑的,会导致使用时失效。很多文章也只是千篇一律把其概念列了一下,并没有告诉我们究竟怎么使用是对的,怎么使用是错的。所以我先把 @Transactional使用的注意点和规范列出来,大家先明白其用法,再去追究原理。二.用法@Transactional注解可以标注在类或者方法原创 2021-09-12 17:32:47 · 716 阅读 · 0 评论 -
springboot返回时间戳
1.springboot加上如下配置类:package com.kaka.mysql.config;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databind.*;import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;import原创 2021-09-11 21:44:34 · 2530 阅读 · 0 评论 -
java JPI中常使用的类介绍即java.lang包下的东西
java.lang包是java语言的核心,它提供了java中的基础类。包括基本Object类、Class类、String类、基本类型的包装类、基本的数学类等等最基本的类。下面分别介绍其中比较常用的类:一、类型对象基类Object,是java.lang的根类,也是所有类的超类。类Class,用来表示类和接口的类型。Class对象在类加载时由JVM调用类加载器中的defineClass方法自动构造。ClassLoader,负责加载类。Compiler,作为编译器的占位符,它不做任何事情,仅用来原创 2021-07-10 15:48:10 · 423 阅读 · 0 评论 -
maven使用install打包时,程序包xxx不存在,pom中添加classifier分类标签解决
1.程序可以正常运行,但是打包时报错如下:****2.解决办法:在引入的工程打包时pom中的打包插件修改如下: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artif原创 2021-07-06 14:33:26 · 1056 阅读 · 0 评论 -
docker容器jvm参数设置测试
1.当容器中jvm的内存大于容器限定内存时,容器将会被杀死,jdk8191后提供两个参数用于限制容器中jvm的大小:-XX:+UseContainerSupport 默认是开启的-XX:MaxRAMPercentage=80.0 默认百分之25所以在启动容器时只需指定-XX:MaxRAMPercentage=80.0即课,必须double型2.测试:docker run -m 200m --rm openjdk:8-jre-alpine java -XshowSettings:vm原创 2021-06-26 16:09:39 · 3090 阅读 · 1 评论 -
Spring boot+Security OAuth2 自定义登录和授权页面
参考博客:Spring boot+Security OAuth2 自定义登录和授权页面原创 2021-06-16 18:08:10 · 909 阅读 · 0 评论 -
auth2表及相关字段说明
官方地址:spring-security-oauth表字段说明参考:spring-oauth-server 数据库表说明原创 2021-06-11 09:47:54 · 151 阅读 · 0 评论 -
logback配置文件报Failed to create converter for [%clr] keyword
参考博客:Springboot项目启动报错:Failed to create converter for [%clr] keyword原创 2021-05-12 14:44:22 · 2051 阅读 · 0 评论 -
记录一次包冲突问题解决办法
1.问题描述,在使用springboot整合phoneix操作数据库时,之前测试一直正常,后来为为项目引入swagger2进行接口展示时,发现调不通hbase了,报错如下:"Handler dispatch failed; nested exception is java.lang.IllegalAccessError: tried to access method com.google.common.collect.Iterators.emptyIterator()Lcom/google/common/原创 2021-04-16 15:03:17 · 1485 阅读 · 0 评论 -
Java检查异常和非检查异常以及运行时异常和非运行时异常说明
通常,Java的异常(包括Exception和Error)分为检查异常(checked exceptions)和非检查的异常(unchecked exceptions)。其中根据Exception异常进行划分,可分为运行时异常和非运行时异常。What:什么是检查异常(checked exception)?就是编译器要求你必须处置的异常。不知道你编程的时候有没有遇到过,你写的某段代码,编译器要求你必须要对这段代码try…catch,或者throws exception,如果你遇见过,没错,这就是检查异原创 2021-03-31 09:34:52 · 315 阅读 · 0 评论 -
ThreadPoolExecutor优雅定义线程池
参考博客:ThreadPoolExecutor策略配置以及应用场景原创 2021-03-29 19:21:30 · 1056 阅读 · 0 评论 -
制作jar包自动生成自动配置提示功能的json
1.在将要打包的项目中引入spring对应版本依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>2.1.9.RELEASE</version>原创 2021-02-25 09:47:50 · 344 阅读 · 0 评论 -
idea中项目报红线,reimport无法下载jar包,解决办法mvn -U idea:idea命令
1.mvn -U命令为强制刷新本地仓库一、 mvn -U 说明-U,–update-snapshots Forces a check for missing releasesand updated snapshots on remote repositories意思是:强制刷新本地仓库不存在release版和所有的snapshots版本。对于release版本,本地已经存在,则不会重复下载对于snapshots版本,不管本地是否存在,都会强制刷新,但是刷新并不意味着把jar重新下载一遍。只下载原创 2021-02-20 10:13:16 · 2108 阅读 · 0 评论 -
LaunchedURLClassLoader导致的内存溢出处理办法
问题:生产服务器,运行段时间后会导致微服务内存溢出,服务不可用,通过查看hprof文件,发现是由于类加载器导致的内存溢出解决:<dependency> <groupId>se.jiderhamn.classloader-leak-prevention</groupId> <artifactId>classloader-leak-prevention-servlet3</artifactId>原创 2020-12-16 20:19:08 · 11830 阅读 · 5 评论 -
使用阿里nacos做服务发现与配置管理,配置更改不自动刷新的问题
1.问题描述:在使用nacos做配置中心,在测试nacos配置修改,应用不重启自动刷新配置的时候,发现配置使用@Value取值和使用配置bean,@Configuration取值时,nacos的配置更改,服务不生效,查看本地缓存的配置文件,已更改为最新2.解决办法如下,在需要配置热更新的配置bean上加springCloud的动态加载配置注解@RefreshScope3.@RefreshScope可用在类上也可用在方法上,当用在方法上时,如果是想加载配置bean中使用前缀注入的属性时(@Configu原创 2020-11-16 12:01:20 · 4521 阅读 · 0 评论 -
sprngboot根据启动的配置环境加载不同的pom配置依赖
1.生产上有用到hbase,开发是1.0,生产是2.0,现在的需求是开发和生产分别加载不同版本的依赖,具体pom配置如下: <profiles> <profile> <!-- dev,根据自己的配置文件取名--> <id>dev</id> <!-- 默认dev生效--> <activation>原创 2020-10-27 17:01:58 · 1411 阅读 · 0 评论 -
关于前端有时会报请求跨域的异常处理和springboot2.x的全局跨域代码配置
1.问题描述项目之前的请求都正常,当后台服务器更换时,会出现,部分接口前端请求跨域的异常2.问题处理思路及解决办法1.检查相关接口服务是否正常启动,通过网关访问,微服务不能正常启动,有时候是会报请求跨域异常的。2.相关代码是否已合并到正在发布的分支,可本地启动目标微服务,单独调某个接口做测试,认真做完这两项,基本可以解决跨域问题了。3.如果以上两项正常,那试着在跨域类或方法上加@CrossOrigin注解再测试4.检查全局跨域配置是否正确,springboot2.x后的跨域配置与之前有所不同,一原创 2020-10-13 10:42:41 · 394 阅读 · 0 评论 -
webflux公共响应数据返回与全局异常处理总结
1.技术要点分析:Mono单次返回应用场景较多,本次封装以mono对象为主,往后会写一篇flux的使用场景与使用方式文章,大多数业务使用mono返回已经足够2.以下为公共响应代码,以下代码使用了swagger2,webflux如何集成swagger3.0可参考我前一篇文章:springboot3.3版,webflux集成swagger2最新3.0.0版,简单快捷高效import com.lyr.common.core.enums.ErrorCode;import io.swagger.annotati原创 2020-09-05 11:54:37 · 2866 阅读 · 0 评论 -
rabbitmq添加延时插件实现延时消息与spring cloud stream 发送分组消息示例
1.rabbitmq基本使用参见前一篇文章:springboot整合spring cloud stream实现多mq对接过程中遇到的相关问题2.添加mq延时插件插件下载地址:https://www.rabbitmq.com/community-plugins.html下载完成后将插件上传至mq的插件目录3.使用命令启用插件rabbitmq-plugins enable rabbitmq_delayed_message_exchange4.spring cloud stream 服务配置延时原创 2020-09-02 10:45:24 · 274 阅读 · 0 评论 -
springboot整合spring cloud stream实现多mq对接过程中遇到的相关问题
1.springboot整合spring cloud stream实现多mq对接2.pom引入如下关键依赖,注意springcloud版本和springboot的版本关系,要版本相对应,一下已引入springcloud版本管理,复制使用即可 <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR3</spring-cloud.versio原创 2020-08-28 18:46:17 · 2339 阅读 · 1 评论 -
java签名工具类
public class SignatureUtil { private static final String CHARSET = "UTF-8"; private static final String SIGN_TYPE = "MD5"; /** * 判断签名是否正确,必须包含sign字段,否则返回false。 * * @param data Map类型数据 * @param key API密钥 * @return 签名原创 2020-08-05 18:29:41 · 541 阅读 · 0 评论 -
jvm内存溢出好文章
文章链接:jvm 内存溢出的多种原因及优化方法原创 2020-07-29 15:32:08 · 101 阅读 · 0 评论 -
linux 服务端口相关常用命令
1.查看某个服务是否已经启动ps -ef | grep 服务名2.查看某个端口号被谁占用netstat -ntlp | grep 端口号netstat -ntlp 查看所有端口占用情况3.centos7查看防火墙状态systemctl status firewalld或firewall-cmd --state参考博文:查看端口被什么程序占用防火墙参考...原创 2020-06-01 15:31:58 · 194 阅读 · 0 评论 -
Java多线程实现多文件压缩下载
package com.lyr.demoTest.controller;import org.springframework.util.CollectionUtils;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRespo原创 2020-05-25 00:00:03 · 1355 阅读 · 3 评论 -
使用hutool+apache poi导excel
1.添加依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.5</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><de原创 2020-05-20 00:16:13 · 790 阅读 · 0 评论 -
LocalDate,LocalDateTime,Date及时间戳的转换
1.时间戳装LocalDateTime,时间戳如果是字符串则先转为longLocalDateTime localDateTime = LocalDateTime.ofEpochSecond(System.currentTimeMillis()/1000, 0, ZoneOffset.ofHours(8));2.Date转LocalDateDate date = new Date();LocalDate localDate = date.toInstant().atZone(ZoneOffset.of原创 2020-05-13 20:26:46 · 28924 阅读 · 0 评论 -
mybatis-plus动态表实现业务分表
mybatis-plus动态表原创 2020-04-29 17:30:23 · 3557 阅读 · 0 评论 -
有n个台阶,一个人可以走一步,也可以走两步,问可以走多少步?
博主链接原创 2020-04-22 00:51:00 · 539 阅读 · 0 评论 -
tcp的相关问题排解与调优
1.tcp的相关问题排解与调优博主链接原创 2020-04-21 16:43:21 · 105 阅读 · 0 评论 -
四道面试算法题,必会
1.蛇形上三角蛇形上三角2.将一个正整数分解质因数分解质因数3.Java 求解一个字符串,全排列字符串全排列原创 2020-04-21 15:25:51 · 248 阅读 · 0 评论 -
java代码优化方法分享
1.尽量重用对象,避免循环创建对象2.集合类创建时最好指定长度,防止经常发生扩容3.集合类遍历时尽量重用.size()方法计算长度,可以再用到前计算好存入一个变量,后面就复用,或者直接使用jdk8的流来计算4.map的遍历用enty来进行遍历,一次拿到key和value,效率较高5.大数组复制用System.arraycopy6.代码中使用基本类型时尽量使用基本类型而不是包装类型7.代...原创 2020-04-12 15:14:57 · 113 阅读 · 0 评论