![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot
文章平均质量分 63
spring to do
这个作者很懒,什么都没留下…
展开
-
springboot或springcloud中A模块引入B模块
springboot或springcloud中A模块引入B模块原创 2023-02-27 22:43:01 · 561 阅读 · 1 评论 -
ecs服务器相关问题
ecs服务器相关问题原创 2023-02-27 10:22:21 · 77 阅读 · 0 评论 -
基于nexus在linux搭建maven私服
Linux安装Nexus3搭建maven私服超详细搭建上传步骤转载 2023-02-26 22:20:43 · 172 阅读 · 0 评论 -
fatal: unable to access ‘https://github.com/xxxx‘: The requested URL returne
使用personal access token进行Github认证转载 2023-02-26 19:11:36 · 288 阅读 · 0 评论 -
countdownlatch 和 completableFuture 和 CyclicBarrier
多线程工具类 CompletableFuture多线程同步工具类 countDownLatch。 相当于一个,代表一个。一般可以,或者让它。但如果呢?如果层次很深,就是回调地狱。Java 中的 其实就是 ,用来。是为了有多优美?这么说吧,一旦你使用了 CompletableFuture,就会爱不释手,就像初恋女友一样,天天想着她 用于使用的场景: 如、等 主要的方法: 是对即,支持、,它支持 默认的时候会使用 池来从它的源代码中,我们可以看到,直接提供了。其中有两组 线程池在 JDK 8 加入,原创 2022-06-29 15:16:52 · 1258 阅读 · 1 评论 -
ForkJoinPool
引入了一种新的—— 。同时引入了一种新的:是,然后,非常像 处理原理同时提供,支持,支持,支持,支持,也,主要引入了,在 和 是 “魔法”的并不是每个都会,而每个也。 的实现算法并不是那么“显然”,而是一个更加复杂的算法——这个算法的名字就叫做 主要用来使用)来解决问题。典型的应用比如快速排序算法。这里的要点在于, 需要使用比如要对,那么会将这个任务成任务和。以此类推,,到最后会来规定当数据规模到多少时,。比如,那么到最后,所有的任务加起来会有大概 2000000+ 个。问题的关键在于,。所以当原创 2022-06-29 15:09:13 · 1493 阅读 · 0 评论 -
优雅的自定义 ThreadPoolExecutor 线程池
java 中经常需要,非常使用或者的方式来,那样。同时,这个时候。java 中涉及到线程池的相关类均在开始的包中,涉及到的几个核心类及接口包括:的几种方式都封装在中:newFixedThreadPool设置了,,,可以,当newSingleThreadExector基本,但是,,newCachedThreadPool,同步移交队列,也就是说,,也,会,由于newScheduledThreadPool支持,注意一下,那么上面说了使用Executors工具类创建的线程池有隐患,那如何使用才能避免这个隐患转载 2022-06-24 11:27:45 · 508 阅读 · 0 评论 -
手动事务的几个类
TransactionManagerPlatformTransactionManagerTransactionStatusTransactionDefinition,TransactionTemplate创建一个控制事务的工具类,并交给spring管理在需要使用到事务的类中注入该工具类,并使用注解事务 @Transactionalspringboot 的话可以直接在方法上使用注释自动开启事务,,但是,需要,具体操作如下参考Spring 事务 手动事务及多线程事务......转载 2022-06-23 17:12:25 · 681 阅读 · 0 评论 -
批量拼接字符串
从开始,Java编译器就做了优化,,创建使用和使用的方法;并,分别(这里,因为一次拼接耗时太少,看不出差异),打印耗时。,执行,对,查看。这里不要使用Intellij idea和JD进行反编译,因为反编译有优化,会都反编译成“+”拼接的,看不出来编译后的真正情况。可以看出,没有差异,执行效率自然也是一样的虽然“+”拼接字符串编译后也会变成StringBuilder,但是。而,效率相对高...转载 2022-06-09 22:57:23 · 799 阅读 · 0 评论 -
多线程场景下使用 ArrayList
ArrayList 的 add 操作源码可能出现的问题数组越界异常 ArrayIndexOutOfBoundsException由于 ArrayList 添加元素是如上面,可以看出第一个不安全的隐患,在时可能会。具体逻辑如下:元素值覆盖和为空问题设置值的操作同样会导致线程不安全。从这儿可以看出,这步操作也,它由如下两步操作构成:在单线程执行这两条代码时没有任何问题,但是当时,可能就会发生,具体逻辑如下:代码示例执行过程中,两种情况出现如下:代码示例2使用线程池给 ArrayList原创 2022-06-07 18:32:11 · 1659 阅读 · 0 评论 -
com.google.guava 源码学习
结构概述工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。guava的优点高效设计良好的API,被Google的开发者设计,实现和使用遵循高效的java语法实践使代码更刻度,简洁,简单节约时间,资源,提高生产力guava的核心库集合 [collections]缓存 [caching]原生类型支持 [primitives support]并发库 [concurre转载 2022-05-18 15:39:38 · 1373 阅读 · 0 评论 -
反射 reflect
关于反射反射是Java程序开发语言的特征之一,它允许运行中的java程序对自身进行检查,并能直接操作程序的内部属性和方法优点:运行期类型的判断,动态加载类,代码灵活度高;缺点:性能低,安全性被破坏常用api主要通过以下类实现反射FieldConstructorMethodClassObject获取Class对象方式一通过Object类 的 getClass() 获取反射对象Book book = new Book();Class bookClass = book.ge原创 2022-05-13 17:47:05 · 194 阅读 · 0 评论 -
com.google.common.base.Converter
源码构造public abstract class Converter<A, B> implements Function<A, B> { ...}A 表示原类型,B 表示目标类型关于 convert(A or B) @CanIgnoreReturnValue @Nullable public final B convert(@Nullable A a) { return this.correctedDoForward(a); } @Nullab原创 2022-05-09 09:43:52 · 582 阅读 · 0 评论 -
BeanUtils.copyProperties
简介这里说的是spring的BeanUtils.copyPropertiesBeanUtils 提供对 Java 反射和自省 API 的包装,其主要目的是利用反射机制对 JavaBean 的属性进行处理public static void copyProperties(Object source, Object target) throws BeansException { copyProperties(source, target, (Class)null, (String[])null);转载 2022-05-07 16:52:28 · 14726 阅读 · 0 评论 -
容器化部署 Jib
概念Google Jib 容器化构建工具Jib是google开源的Java容器化工具,可以直接构建 Java 应用的 Docker 和 OCI 镜像的类库,以 Maven 和 Gradle 插件形式提供。通过 Jib,Java 开发者可以使用他们熟悉的 Java 工具来构建容器。Jib 是一个快速而简单的容器镜像构建工具,它负责处理将应用程序打包到容器镜像中所需的所有步骤。它不需要你编写 Dockerfile 或安装 Docker,而且可以直接集成到 Maven 和 Gradle中—— 只需要将插件添原创 2022-05-07 10:48:25 · 549 阅读 · 0 评论 -
注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd
注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd转载 2022-04-28 15:15:17 · 249 阅读 · 0 评论 -
SpringBoot 启动时自动执行代码的几种方式
https://mp.weixin.qq.com/s?__biz=MzUxOTc4NjEyMw==&mid=2247531493&idx=1&sn=eb4c1a559f9d75fafd3ff5247bf60363&chksm=f9f66001ce81e9173ae0e702cf1e09cc725a256af75d566b5d3fae06c9e9e34578e6920e16ba&mpshare=1&scene=1&srcid=0423g8J7GKs0iC转载 2022-04-28 10:57:43 · 148 阅读 · 0 评论 -
自动注入 bean放入Spring容器 几种方式
@Configuration + @Bean@Configuration用来声明一个配置类,然后使用@Bean注解,用于声明一个bean,将其加入到Spring容器中。@Configurationpublic class MyConfiguration { @Bean public Person person() { Person person = new Person(); person.setName("spring"); retur转载 2022-04-27 23:03:55 · 652 阅读 · 0 评论 -
@Valid和@Validated
简介@Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以很轻松的完成对数据的约束,配合BindingResult可以直接提供参数验证结果所有参数注解含义参考@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated区别javax.validation.Valid.@Valid① 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age原创 2022-04-26 18:55:08 · 1421 阅读 · 0 评论 -
Spring----Aop
学习对AOP的初印象首先先给出一段比较专业的术语(来自百度):在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。然后我们举一个比较容易理解的例原创 2022-04-22 18:12:42 · 503 阅读 · 0 评论 -
SpringBoot 缓存 @Cacheable、@CachePut、@CacheEvict
缓存介绍Spring 从 3.1 开始就引入了对 Cache 的支持。定义了 org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口来统一不同的缓存技术。并支持使用 JCache(JSR-107)注解简化我们的开发。其使用方法和原理都类似于 Spring 对事务管理的支持。Spring Cache 是作用在方法上的,其核心思想是,当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存在缓存中。C原创 2022-04-22 17:41:32 · 4508 阅读 · 0 评论 -
spring-后置通知 @AfterReturning
后置通知在目标方法执行之后,增加的业务功能,由于目标方法执行之后执行,所以可以获取到目标方法返回值,该注解是 returning属性就是用于指定接收方法返回值的变量名的。所有被注解后置通知的方法,除了可以加入JoinPoint参数外,还可以包含一个用于接收返回值的变量,该变量最好使用Object类型的,目标方法的返回值可以是任何类型的。后置定义方法,方法是实现切面功能方法定义要求public公共方法方法没有返回值 void方法名称自定义方法有参数,推荐使用Object,参数名自定义,用于接转载 2022-04-19 16:48:21 · 4307 阅读 · 0 评论 -
几种比较创新的排序算法,多线程排序
多线程为什么要用多线程很显然,多线程能够同时执行多个任务。举个例子,你打开某视频播放器,点击下载某个视频,然后你发现这个时候一直在下载,其他啥都干不了。所以在这种情况下,可以使用多线程,让下载任务继续,同时也能继续其他操作。作为一个包工头,一堆砖要搬,但是就一个人,可是你只能搬这么多,怎么办?多找几个人一起搬,但是其他人就也需要付工钱,没关系,能早点干完也就行了,反正总体工钱差不多。同样的,如果有一个任务特别耗时,而这个任务可以拆分为多个任务,那么就可以让每个线程去执行一个任务,这样任务就可以更快地原创 2022-04-18 11:59:57 · 1682 阅读 · 0 评论 -
通过 SpringApplication.run(DemoApplication.class, args) 查看 bean
或者原创 2022-04-13 17:32:07 · 511 阅读 · 0 评论 -
@RefreshScope
参考@RefreshScope 刷新机制原理用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个@RefreshScope 在类上才可以实现对象属性的的动态更新实现@RefreshScope 动态刷新的就需要以下几个支持@Scope@RefreshScopeRefreshScopeGenericScopeScopeContextRefresher@Scope@RefreshScope 能实现动态刷新全仰仗着@Scope 这个注解@Scope代表了Bean的作用原创 2022-04-13 17:20:37 · 788 阅读 · 0 评论 -
多线程实现
多线程原理相当于玩游戏机,只有一个游戏机(cpu),可是有很多人要玩,于是,start是排队!等CPU选中你就是轮到你,你就run(),当CPU的运行的时间片执行完,这个线程就继续排队,等待下一次的run()调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。先调用start后调用run,这么麻烦,为了不直接调用run?就是为了实现多线程的优点,没这个start不行原创 2022-04-07 15:43:49 · 200 阅读 · 0 评论 -
多线程同步工具类 countDownLatch
腾讯面试居然跟我扯了半小时的CountDownLatch转载 2022-04-07 15:42:19 · 165 阅读 · 0 评论 -
springboot 多线程实现
为什么用线程池有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长。而且当线程数量太多时,系统不一定能受得了使用线程池主要为了解决一下几个问题:降低资源消耗:通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性:线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定原创 2022-04-07 14:32:03 · 10862 阅读 · 0 评论 -
单例模式实战应用
理论什么是单例模式保证整个系统中一个类只有一个对象的实例,实现这种功能的方式就叫单例模式常用的 service 和 dao 层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如 actionspring 中的 bean 和 spring mvc 中的 controller、service、dao层中通过@autowire 的 依赖注入对象 默认都是单例的特点1、单例类只能有一个实例。2、单例类必须自己创建自己的唯一实例。3、单例类必须给所有其他对象提供这一实例。为什么要原创 2022-04-04 13:12:01 · 2418 阅读 · 0 评论 -
Jackson
简介通俗的来说,Jackson是一个 Java 用来处理 JSON 格式数据的类库,其性能非常好Jackson具有比较高的序列化和反序列化效率,据测试,无论是哪种形式的转换,Jackson > Gson > Json-lib,而且Jackson的处理能力甚至高出Json-lib近10倍左右,且正确性也十分高。相比之下,Json-lib似乎已经停止更新,最新的版本也是基于JDK15,而Jackson的社区则较为活跃Jackson提供了很多类和方法,而在序列化和反序列化中使用的最多的类则是Ob原创 2022-04-02 19:52:11 · 513 阅读 · 0 评论 -
@Autowired 和 @Resource
定义@Autowired对类成员变量、方法及构造函数进行标注,完成自动装配的工作@Resource在语义上被定义为通过其唯一的名称来标识特定的目标组件,其中声明的类型与匹配过程无关如果没有明确指定名称,则默认名称是从字段名称或设置方法(get、set方法)派生的。 如果用在字段上,则采用字段名称如果用在在setter方法,它采用其属性名称(例如setProperty()方法,取property做为属性名称)。区别在Spring框架中,如果在Service层中需要注入其他依赖的对象,通常原创 2022-04-01 19:52:02 · 3000 阅读 · 0 评论 -
java 中需要手动关闭的流
在Java中为何要关闭流GC运行的时间点是不确定的(因为是一条单独存在的线程),所以很多时候你不能直接控制什么时候发生GC。这个带来的问题有两点一个是`有时候你的内存不足需要立刻回收而GC并不会立刻运行`另外一个是因为`GC运行期间会占用大量系统资源所以某些情况下你会希望把它推后,或者干脆关掉以便根据性能需求在合式的时候手动执行`。另外,GC只能回收内存。至于各种stream之类,他们接下来一般还开启了各种其他的系统资源,比如文件,比如输入输出设备(键盘/屏幕等),等等。而这些设备第一是不能自原创 2022-04-01 17:58:21 · 3387 阅读 · 0 评论 -
@RequestParam、@RequestBody、@PathVariable
实体类准备@Datapublic class Test implements Serializable { private String id; private String name; private String state; private String createTime;}@RequestParam一个请求,可以有多个RequestParam@RequestParam 接收普通参数的注解 一般与get请求一起使用@RequestPar转载 2022-03-28 14:57:58 · 260 阅读 · 0 评论 -
Java自定义注解@Retention和@Target
使用范围@Retention用来说明该注解类的生命周期。它有以下三个参数:RetentionPolicy.SOURCE : 注解只保留在源文件中RetentionPolicy.CLASS : 注解保留在class文件中,在加载到JVM虚拟机时丢弃RetentionPolicy.RUNTIME : 注解保留在程序运行期间,此时可以通过反射获得定义在某个类上的所有注解。@Target用来说明该注解可以被声明在哪些元素之前ElementType.TYPE:说明该注解只能被声明在一个 类原创 2022-03-28 14:42:45 · 317 阅读 · 0 评论 -
Windows下Zookeeper启动zkServer.cmd闪退问题的解决方案
Zookeeper在Windows下启动只需要运行zkServer.cmd双击即可(需保证运行环境中正确安装了Java运行环境)但是在有的时候会出现双击闪退的情况。针对闪退,可按照一下步骤进行解决:1 、编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出,会提示错误信息,方便找到原因。例如原因如下:2、重新双击运行zkServer.cmd错误原因 ,找不到zoo.cfg配置文件3、编辑zkEnv.cmd4 、修改如下:对应文件位置:5、重新双击zkSe转载 2022-03-20 23:32:15 · 2836 阅读 · 0 评论 -
@Configuration(proxyBeanMethods = false) 和(proxyBeanMethods = true)
区别1、配置类本身也是组件2、proxyBeanMethods:代理bean的方法Full(proxyBeanMethods = true)【保证每个@Bean方法被调用多少次返回的组件都是单实例的,默认】Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】组件依赖必须使用Full模式@Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件p转载 2022-03-19 16:13:37 · 413 阅读 · 0 评论