
java
文章平均质量分 84
Java_2017_csdn
这个作者很懒,什么都没留下…
展开
-
Hutool 嘎嘎香,开炫了!
Hutool 官方文档:https://doc.hutool.cn/转载 2024-01-09 11:26:18 · 125 阅读 · 0 评论 -
生产问题之CompletableFuture默认线程池踩坑,请务必自定义线程池
CompletableFuture是否使用默认线程池的依据,和机器的CPU核心数有关。当CPU核心数-1大于1时,才会使用默认的线程池,否则将会为每个CompletableFuture的任务创建一个新线程去执行。转载 2023-04-24 18:32:22 · 4507 阅读 · 0 评论 -
【函数式编程实战】(十一) CompletableFuture、反应式编程源码解析与实战
Java代码为了更好的发展和性能,开发了 异步编程的模式,Future异步编程和CompletableFuture 接口都可以实现异步编程,我们通过源码深入理解其原理和设计的思想,Java9中提供了反应式编程(Flow API)我们分析其源码并提供一个响应式查询实战。转载 2023-04-23 15:24:26 · 323 阅读 · 0 评论 -
Collections unmodifiableCollection,emptyList,singletonList 介绍以及总结
说明:通过JDK Collections 自带提供的 unmodifiableCollection() 可以直接通过 arrays.aslist的方式直接构造该一个该对象,从字面意思理解就是这是一个不可修改的集合,即通过这样方式创建出来的内容只能执行一般的查询操作不支持 任何类似 add remove 等修改操作,否则直接抛出 不支持的操作异常。获取的均是不可修改的内容,满足了最常见的使用场景,即确定了长度的集合,长度为1的集合,空集合。说明:返回一个空集合,同时也是内部类无法执行增删操作等;转载 2023-01-30 11:11:37 · 472 阅读 · 0 评论 -
spring 控制事务回滚重要知识点:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
如果想事物生效,需要将子方法的事务控制交给调用的方法,在子方法中使用rollbackFor注解指定需要回滚的异常或者将异常抛出交给调用的方法处理。rollbackFor: 该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。spring aop 异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获 RuntimeException 的异常,但可以通过配置来捕获特定的异常并回滚。转载 2023-01-30 11:10:22 · 9238 阅读 · 1 评论 -
ElasticJob(Springboot 分布式定时任务 ElasticJob)
而且间隔较短的作业并未见得关注单次作业的实时性,可以通过下次作业执行的重分片使所有的分片正确执行,因此不建议短间隔作业开启失效转移。如果作业的其中一个分片服务器在 13:10 的时候宕机,那么剩余的 20 分钟应该处理的业务未得到执行,并且需要在 14:00 时才能再次开始执行下一次作业。如果 12:00 开始执行的作业在 13:10 才执行完毕,那么本该由 13:00 触发的作业则错过了触发时间,需要等待至 14:00 的下次作业触发。另外需要注意的是,作业本身的幂等性,是保证失效转移正确性的前提。转载 2023-01-11 10:14:19 · 739 阅读 · 0 评论 -
Java LongAdder原子加法器源码深度解析
Java LongAdder原子加法器源码深度解析刘Java已于 2022-04-25 17:02:56 修改567 收藏 3分类专栏: Java JUC源码 文章标签: java juc 并发编程 LongAdder版权Java JUC源码专栏收录该内容38 篇文章28 订阅订阅专栏基于JDK1.8详细介绍了JUC下面的LongAdder原子类源码和原理,LongAdder是Java8对于原子类的增强。文章目录1 原子类的加强1.1 LongAdder1.1.1 LongAdder的概转载 2022-12-07 15:54:47 · 373 阅读 · 0 评论 -
老司机总结的12条 SQL 优化方案(非常实用)
(1)连接器: 主要负责跟客户端建立连接、获取权限、维持和管理连接(2)查询缓存: 优先在缓存中进行查询,如果查到了则直接返回,如果缓存中查询不到,在去数据库中查询。MySQL缓存是默认关闭的,也就是说不推荐使用缓存,并且在MySQL8.0 版本已经将查询缓存的整块功能删掉了。这主要是它的使用场景限制造成的:先说下缓存中数据存储格式:key(sql语句)- value(数据值),所以如果SQL语句(key)只要存在一点不同之处就会直接进行数据库查询了;由于表中的数据不是一成不变的,大多数是经常变化的,而当数转载 2022-12-07 10:48:56 · 1542 阅读 · 0 评论 -
SpringBoot常用注解之@Retryable
如果不需要回调方法,可以直接不写回调方法,那么实现的效果是,重试次数完了后,如果还是没成功没符合业务判断,就抛出异常。@Recover注解来开启重试失败后调用的方法(注意,需跟重处理方法在同一个类中),此注解注释的方法参数一定要是@Retryable抛出的异常,否则无法识别,可以在该方法中进行日志处理。方法的第一个参数,必须是Throwable类型的,建议是与@Retryable配置的异常一致,其他的参数,需要哪个参数,写进去就可以了(@Recover方法中有的)转载 2022-11-25 11:15:20 · 2686 阅读 · 0 评论 -
原子操作增强类——LongAdder
AtomicLong与AtomicLong对比转载 2022-07-29 17:38:41 · 178 阅读 · 0 评论 -
Java 获取当前周,上一周,当前月份,上一月份,当前年份,上一年份的 第一天 最后一天 日期
获取当前周,上一周,当前月份,上一月份,当前年份,上一年份的 第一天 最后一天 日期原创 2022-06-02 19:43:23 · 1590 阅读 · 0 评论 -
Java8的stream处理List集合的(交集、差集,重复)
Java8的stream处理List集合的(交集、差集,重复)public static void main(String[] args) { List<String> list1 = new ArrayList<String>(); list1.add("1"); list1.add("2"); list1.add("2"); list1.add("3"); list1.add("3"); list1.add("5");...原创 2022-05-18 20:52:37 · 1936 阅读 · 0 评论 -
spring Assert 教程
springAssert教程本文介绍spring Assert类,并通过示例说明如何使用。Assert类目的Spring Assert类帮助我们校验参数。通过使用Assert类方法,我们可以写出我们认为是正确的假设,反之,会抛出运行时异常。每个Assert的方法可以与java assert表达式进行比较。java assert表达式在运行时如果条件校验失败,则抛出Error,有趣的是,这些断言可以被禁用。Spring Assert的方法有一些特点:- 都是static方法- 抛出..转载 2022-04-20 14:38:28 · 415 阅读 · 0 评论 -
谈谈Dubbo框架的实现原理及与SpringCloud微服务之间的区别
一、简介Dubbo是由阿里巴巴开源的透明的高性能分布式RPC框架,基于dubbo协议实现,底层通信方式是基于TCP长连接,传输方式是NIO实现,提高服务的性能。主要有三个核心特性:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。二、Dubbo工作原理: 第一层:service层,接口层,给服务提供者和消费者来实现的 第二层:config层,配置层,主要是对dubbo进行各种配置的 第三层:proxy层,服务代理层,透明生成客户端的stub和服务单的s转载 2021-11-12 14:39:49 · 390 阅读 · 0 评论 -
Guava官方文档-RateLimiter类
Guava官方文档-RateLimiter类原文链接作者:Dimitris Andreou 译者:魏嘉鹏 校对:方腾飞RateLimiter 从概念上来讲,速率限制器会在可配置的速率下分配许可证。如果必要的话,每个acquire()会阻塞当前线程直到许可证可用后获取该许可证。一旦获取到许可证,不需要再释放许可证。校对注:RateLimiter使用的是一种叫令牌桶的流控算法,RateLimiter会按照一定的频率往桶里扔令牌,线程拿到令牌才能执行,比如你希望自己的应用程序QPS不要超过1...转载 2021-09-10 15:55:27 · 1982 阅读 · 0 评论 -
限流(Rate limit)算法详解
一、前言保障服务稳定的三大利器:熔断降级、服务限流和故障模拟。今天和大家谈谈限流算法的几种实现方式,本文所说的限流并非是Nginx层面的限流,而是业务代码中的逻辑限流。那么为什么需要限流呢?按照服务的调用方,可以分为以下几种类型服务1、与用户打交道的服务比如web服务、对外API,这种类型的服务有以下几种可能导致机器被拖垮:用户增长过快(这是好事)因为某个热点事件(微博热搜)竞争对象爬虫恶意的刷单这些情况都是无法预知的,不知道什么时候会有10倍甚至20倍的流量打进来,如果真碰上这种转载 2021-09-10 14:19:06 · 815 阅读 · 0 评论 -
ToStringBuilder、HashCodeBuilder、EqualsBuilder、ToStringStyle、ReflectionToStringBuilder等学习...
无论你在开发哪中 Java 应用程序,都免不了要写很多工具类/工具函数。你可知道,有很多现成的工具类可用,并且代码质量都很不错,不用你写,不用你调试,只要你发现。在 Apache Jakarta Common 中, Lang 这个 Java 工具包是所有 Apache Jakarta Common 项目中被使用最广泛的,几乎你所知道的名气比较大的软件里面都有用到它,包括 Tomcat, Weblogic, Websphere, Eclipse 等等。我们就从这个包开始介绍整个 commo...转载 2021-09-08 16:59:10 · 589 阅读 · 0 评论 -
EqualsBuilder的使用之全等
使用场景当我们创建一个bean后,往往需要重写它的hashCode方法和equals方法。当bean的属性很多的时候,equals方法的重写将会是个很麻烦的事情。举个栗子:public class Status { private String Id; private String Name; private String Left; private String Top; private String Width; private Strin...转载 2021-09-08 16:38:54 · 697 阅读 · 0 评论 -
bigDecimal 返回前端保留小数点后两位问题解决
bigDecimal 返回前端保留小数点后两位问题解决bigDecimal保留后两位小数且返回前端不丢失小数点后的0 位数不够补零例后端返回decimal 类型 5.00到前端会变成5import com.fasterxml.jackson.annotation.JsonFormat;例如private BigDecimal rentMonth;解决方法:第一步:1、加注解:@JsonFormat(shape = JsonFormat.Shape.STRING...原创 2021-09-08 16:33:26 · 15221 阅读 · 6 评论 -
Comparator与Comparable用法与区别
Comparator与Comparable用法与区别一、概述。 Comparator和Comparable两者都属于集合框架的一部分,都是用来在对象之间进行比较的,但两者又有些许的不同,我们先通过一个例子来看一下他们的区别,然后再分别学习下它们的源码。先来看一下Comparable的例子,定义实体类Student,实现Comparable,重写compareTo方法:public class Student implements Comparable<Student> {转载 2021-09-06 16:16:50 · 602 阅读 · 0 评论 -
java中String的格式化format()方法
String.format()字符串常规类型格式化的两种重载方式format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。转换符 详细说明 示例 %s 字符串类型 “你好啊伙计” %c 字符类型 ‘m’ %b转载 2021-06-22 12:25:48 · 1273 阅读 · 0 评论 -
java判断是否有中文字符
java判断是否有中文字符实现方式一 实现方式二 方式三 实现方式一针对每个字符判断public static boolean isChinese(String str) throws UnsupportedEncodingException { int len = str.length(); for(int i = 0;i < len;i ++) { String temp .转载 2021-06-17 14:37:07 · 2667 阅读 · 0 评论 -
MD5加密工具类--MD5Utils.java
Java实现MD5加密的方式MD5加密是一种常见的加密方式,经常用在保存用户密码和关键信息上。1、什么是MD5 MD5加密全称是Message-Digest Algoorithm 5(信息-摘要算法),它对信息进行摘要采集,再通过一定的位运算,最终获取加密后的MD5字符串。 例如要加密一篇文章,会随机从每段话或者每行中获取一个字,把这些字统计出来后,再通过一定的运算获得一个固定长度的MD5加密后信息。因此,其很难被逆向破解。 MD5加密流程图! 2、MD5有哪些特点 MD5加密转载 2021-02-25 18:15:40 · 1814 阅读 · 0 评论 -
SpringTask中cron表达式整理记录
SpringTask中cron表达式整理记录1.cron表达式格式:{秒} {分} {时} {日} {月} {周} {年(可选)}2.cron各选项的取值范围及解释:{秒}:取值范围(0-59),不允许为空值,若值不合法,调度器将抛出SchedulerException异常{分}:取值范围(0-59),不允许为空值,若值不合法,调度器将抛出SchedulerException异常{时}:取值范围(0-23),不允许为空值,若值不合法,调度器将抛出SchedulerExcepti.转载 2020-10-27 18:13:22 · 369 阅读 · 0 评论 -
【数据结构与算法】高级排序(希尔排序、归并排序、快速排序)完整思路,并用代码封装排序函数
【数据结构与算法】高级排序(希尔排序、归并排序、快速排序)完整思路,并用代码封装排序函数本系列文章【数据结构与算法】所有完整代码已上传github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接https://github.com/Lpyexplore/structureAndAlgorithm-JS本篇文章来讲解一下更高级的排序算法,顾名思义,它们的排序思想一定更复杂,效率也一定比简单排序更高。为了更方便地理解高级排序算法,还是建议大家先把简单排序了解..转载 2020-10-12 10:23:08 · 315 阅读 · 0 评论 -
【数据结构与算法】简单排序(冒泡排序、选择排序、插入排序)完整思路,并用代码封装排序函数
【数据结构与算法】简单排序(冒泡排序、选择排序、插入排序)完整思路,并用代码封装排序函数本系列文章【数据结构与算法】所有完整代码已上传github,想要完整代码的小伙伴可以直接去那获取,可以的话欢迎点个Star哦~下面放上跳转链接https://github.com/Lpyexplore/structureAndAlgorithm-JS之前的文章,我已经把前端需要了解的数据结构都给说了一边,并且我们也都对其进行了封装。现在我们要开始对排序算法部分进行讲解,排序算法顾名思义,就是对一堆杂乱无..转载 2020-10-12 10:20:28 · 412 阅读 · 0 评论 -
org.apache.commons.lang3.time.DateUtils 日期工具类
org.apache.commons.lang3.time.DateUtils 日期工具类能动手不哔哔2020-09-25 11:01:2917收藏分类专栏:java文章标签:java版权/** * 判断两个日期时间是否是同一天 。 * * @param date1 第一个日期,不可修改,非null * @param date2 第二个日期,不可修改,非null */public static boolean isSameDay(final Date d...转载 2020-09-28 16:51:52 · 2180 阅读 · 0 评论 -
static静态方法使用yml配置文件的值
static静态方法使用yml配置文件的值package com.longfor.falcon.modules.sys.utils;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;/** * @Date 2020/8/28——10:22 * .原创 2020-08-28 10:37:55 · 1439 阅读 · 0 评论 -
Java之IO流必须掌握的知识点
Java之IO流必须掌握的知识点文章目录 IO流的分类 四大IO抽象流 java.io包下需要了解的16个流 比较重要的几个IO流的例子 序列化与反序列化 IO流的分类有多种分类方式一种方式是按照流的方向进行分类:输入流:以内存为参照物:往内存中去,叫做输入(Input),或者叫做读(Read)输出流:从内存中出来,叫做输出(Output),或者叫做写(Write) 另一种方式是按照读取数据方式不同进行分类: 有的流是按照字节的方式读取数据,称为字节流。..转载 2020-08-27 16:22:10 · 2404 阅读 · 0 评论 -
初识Jackson——世界上最好的JSON库
一个工程仅需一个JSON库Java的JSON库,你至少应该用过/听过这三种:Jackson、Gson、Fastjson。一个独立的工程,按照依赖最少原则,本应该only one JSON库是足矣的。但现状是:各位同仁可观察观察各自的项目,大都同时存在2种JSON库,亦或者3种甚至更多...说明:在同一个工程内,同一功能若有多种实现,实属不好的现象。这会让管理起来显得混乱(譬如对日期的格式化就不方便做到统一),出口若有多个,想收口时就是个大难题了作为一个合格的架构师/工程师,保持最简依赖(..转载 2020-08-27 16:01:54 · 1594 阅读 · 0 评论 -
JAVA字符串格式化-String.format()的使用
JAVA字符串格式化-String.format()的使用常规类型的格式化String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。format(Locale locale, String format, Object.转载 2020-08-17 16:45:27 · 139 阅读 · 0 评论 -
pagehelper使用方法及参数说明
pagehelper使用方法及参数说明使用方法:@Overridepublic PageInfo<Person> getByPage(int currentPage, int pageSize, Map<String,Object> map) { PageHelper.startPage(currentPage,pageSize,true); List<Person> list = personMapper.getListB转载 2020-07-28 15:49:12 · 15592 阅读 · 1 评论 -
Spring 与 Mybatis 中的 @Repository 与 @Mapper
Spring 与 Mybatis 中的 @Repository 与 @Mapper使用注解的方式开发Dao层的时候,常常会混淆这两个注解,不知道怎么添加,这里做个记录。1 - @Mapper@Mapper 是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注解,用于声明一个 Bean。(重要)使用 Mybatis 有 XML 文...转载 2020-04-07 14:53:04 · 306 阅读 · 0 评论 -
Java中三种标准注解和四种元注解
Java中三种标准注解和四种元注解先来说说什么是注解:注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。注解的语法比较简单,除了@符号的使用之外,它基本与Java固有的语法一致。Java内置了三种注解,定义在java.lang中的注解:@Override,表示当前的方法定义将覆盖超类中的方法。如果你不小心拼...转载 2020-03-18 12:03:55 · 898 阅读 · 0 评论 -
getDeclaredFields() 用法说明
getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。···············································································...转载 2020-03-18 11:47:19 · 23450 阅读 · 1 评论 -
java高级特性概要
java高级特性概要Java注解注解的本质@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}这是注解 @Override 的定义,其实它本质上就是:public interface Override extends Annotation{}有关这一...转载 2020-03-18 11:45:10 · 176 阅读 · 0 评论 -
Java Spring事务管理与@Transactional注解式事务详解
Java Spring事务管理与@Transactional注解式事务详解MicoCube关注2019.02.04 16:43:36字数 2,771阅读 1,447 spring事务管理是指在业务代码在出现异常之后,对之前的操作进行回滚,保证数据库数据的一致性 分为编程式事务管理,配置式,注解式 编程式 TransactionDefinition def = n...转载 2020-01-15 18:05:51 · 678 阅读 · 0 评论 -
@Transactional 同一个类中无事务方法a()内部调用有事务方法b()的问题
@Transactional 同一个类中无事务方法a()内部调用有事务方法b()的问题原创袁义锐 最后发布于2019-05-13 17:32:49 阅读数 2269 收藏展开1. 事务的4种特性序号 参数 含义1 原子性(Atomicity) 事务是数据库的逻辑工作单位,它对数据库的修改要么全部执行,要么全部不执行。2 一致性(Cons...转载 2020-01-15 18:03:34 · 2165 阅读 · 0 评论 -
Spring service本类中方法调用另一个方法事务不生效问题
前些日子一朋友在需要在目标对象中进行自我调用,且需要实施相应的事务定义,且网上的一种通过BeanPostProcessor的解决方案是存在问题的。因此专门写此篇帖子分析why。1、预备知识aop概念请参考【http://www.iteye.com/topic/1122401】和【http://jinnianshilongnian.iteye.com/blog/1418596】sprin...转载 2020-01-15 17:50:48 · 2635 阅读 · 0 评论 -
Java BigDecimal类常用方法大全
1.简介BigDecimal类位于java.math.BigDecimal包下。使用此类可以完成大的小数操作,而且也可以使用此类进行精确的四舍五入,这一点在开发中经常使用。对于不需要任何准确计算精度的程序可以直接使用float或double完成,但是如果需要精确计算结果,则必须使用BigDecimal类。2.BigDecimal类常用方法2.1.BigDecimal(String ...转载 2019-12-18 11:02:31 · 1367 阅读 · 1 评论