自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(273)
  • 资源 (9)
  • 收藏
  • 关注

原创 寻找第k小元素 前k小元素 select_k

快速选择算法 - Quick select和都是由发明的采用和类似的步骤。首先选定一个,然后根据将整个数组分为。那么,只考虑,而。正是因为如此,将线性时间选择算法期望为线性时间 - Randomized_Select 随机划分线性选择输入数据是互异的。算法以为模型,可以求。与快速排序不同的是,会,而只处理:每次如果,则在如果,则在 个元素使用 分三个区域的 partition快速选择算法 ( 数组中找第 K 大元素 ) - 分三个区最坏情况为线性时间 - SELECT 中位数线性

2022-07-05 17:01:04 972

转载 helm 基础学习

kubernetes之helm简介、安装、配置、使用指南helm 基本使用

2022-07-02 21:45:18 131

转载 notBlank 和 notEmpty

commons-lang 官方文档isEmptyisNotEmpty()StringUtils.isAnyEmpty()isNoneEmpty()isBank系列isBlank() 是否为真空值(空格或者空值)isNotBlank()isAnyBlank()isNoneBlank()其他方法

2022-07-01 11:03:28 2573

原创 sql 优化

一次SQL查询优化原理分析(900W+数据,从17s到300ms)有一张财务流水表,未分库分表,目前的数据量为9555695,分页查询使用到了limit,优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms),按照下文的方式调整SQL后,耗时347 ms (execution: 163 ms, fetching: 184 ms);...............

2022-07-01 10:37:52 382

原创 mysql for update 死锁问题排查

使用姿势加锁方式 是。当时,是如果查不到数据for update是否会加锁呢?当我们 而 不是 相等条件 检索数据 时,InnoDB 会给条件 无主键/索引,表级锁for update 的注意点 仅适用于 ,并且,在 生效 和 区别(,)查看当前运行的事务杀掉 lock_wait 的事务设置表日志查询数据库中哪些线程正在执行MySQL中 show processlist命令详解大量 block ,lock wait 或者 一条 sql running 很久相关问题其

2022-06-30 17:05:37 3658

原创 countdownlatch 和 completableFuture 和 CyclicBarrier

多线程工具类 CompletableFuture多线程同步工具类 countDownLatch。 相当于一个,代表一个。一般可以,或者让它。但如果呢?如果层次很深,就是回调地狱。Java 中的 其实就是 ,用来。是为了有多优美?这么说吧,一旦你使用了 CompletableFuture,就会爱不释手,就像初恋女友一样,天天想着她 用于使用的场景: 如、等 主要的方法: 是对即,支持、,它支持 默认的时候会使用 池来从它的源代码中,我们可以看到,直接提供了。其中有两组 线程池在 JDK 8 加入,

2022-06-29 15:16:52 1369 1

原创 ForkJoinPool

引入了一种新的—— 。同时引入了一种新的:是,然后,非常像 处理原理同时提供,支持,支持,支持,支持,也,主要引入了,在 和 是 “魔法”的并不是每个都会,而每个也。 的实现算法并不是那么“显然”,而是一个更加复杂的算法——这个算法的名字就叫做 主要用来使用)来解决问题。典型的应用比如快速排序算法。这里的要点在于, 需要使用比如要对,那么会将这个任务成任务和。以此类推,,到最后会来规定当数据规模到多少时,。比如,那么到最后,所有的任务加起来会有大概 2000000+ 个。问题的关键在于,。所以当

2022-06-29 15:09:13 2095

转载 多线程工具类 CompletableFuture

Java8 CompletableFuture 用法全解CompletableFuture 详解(一):基本概念及用法CompletableFuture使用详解JDK1.8新特性CompletableFuture总结Future和CompletableFuture的使用CompletableFuture学习记录多线程之CompletableFuture使用有了和来执行我们的异步任务 为什么还需要这个? 有两种方法:或者 JAVA8引入了这个CP 对Future做了改进状态取值类控制

2022-06-27 20:03:21 515

转载 优雅的自定义 ThreadPoolExecutor 线程池

java 中经常需要,非常使用或者的方式来,那样。同时,这个时候。java 中涉及到线程池的相关类均在开始的包中,涉及到的几个核心类及接口包括:的几种方式都封装在中:newFixedThreadPool设置了,,,可以,当newSingleThreadExector基本,但是,,newCachedThreadPool,同步移交队列,也就是说,,也,会,由于newScheduledThreadPool支持,注意一下,那么上面说了使用Executors工具类创建的线程池有隐患,那如何使用才能避免这个隐患

2022-06-24 11:27:45 537

转载 手动事务的几个类

TransactionManagerPlatformTransactionManagerTransactionStatusTransactionDefinition,TransactionTemplate创建一个控制事务的工具类,并交给spring管理在需要使用到事务的类中注入该工具类,并使用注解事务 @Transactionalspringboot 的话可以直接在方法上使用注释自动开启事务,,但是,需要,具体操作如下参考Spring 事务 手动事务及多线程事务......

2022-06-23 17:12:25 728

原创 gson TypeAdapter 适配器

Gson 使用指南(一)Gson 使用指南(二)Gson使用指南(三)Gson使用指南(四) TypeAdapter 是自 开始版本提供的一个,用于,包含两个注要方法 和 ,并 的主要是在,以及中示例当我们为 注册了r之后,那些之前介绍的通通都黯然失色,只会调用我们实现的方法再说一个场景,在该系列的第一篇文章就说到了,比如将转成 , 但如果有些情况下给你? 虽然这是服务器端的问题, 不就行了JsonSerializer 与 JsonDeserializer,,则可以使用 和 不

2022-06-22 11:52:35 1608

原创 mybatis 自定义 typehandler

当我们或者,需要在或者时,就可以,自己下面源码是方法,表示,一个是,一个是,最后一个是自己实现一个枚举的转换写一个 typehandler 注解表示,,走 这个方法, 把 在,会,把,自定义 typehandler应用到程序中把TypeHandler配置到程序中,有下面三种方法...

2022-06-20 16:49:12 513

原创 mysql json

对中的 进行官方文档 mysql JSON Functions

2022-06-20 11:25:53 336

原创 MySQL/Mybatis 多个 AND 和 OR 混用

mysql 中,所以在时,会,,这样才能

2022-06-20 11:20:52 4069

原创 OGNL Object-Graph Navigation Language

是 的缩写,全称为,是一种功能强大的,它通过简单一致的语法,可以,能够,实现等功能。1 。2 3 将 设置为,并将值栈作为OGNL的根对象放置到ActionContext中。4 可以在值栈中。访问值栈中的对象 总是把。所以在 OGNL 中5 调用 的 放入的数据,需要使用访问。 符号在OGNL表达式中经常出现符号的用途一般有三种。可以取出%符号的用途是时,计算,这个类似js中的eval,很暴力。$ 符号主要有两个方面的用途。在中,引用,例如国际化资源文件中的代码:OGNL直接()访问方法

2022-06-20 10:48:38 303

原创 forEach 中 return 和 for 中 break

想要只有赵六没被打印出来,。原理,,而, 是这种方式不友好,可以再包装一层

2022-06-09 23:09:59 2978 1

转载 批量拼接字符串

从开始,Java编译器就做了优化,,创建使用和使用的方法;并,分别(这里,因为一次拼接耗时太少,看不出差异),打印耗时。,执行,对,查看。这里不要使用Intellij idea和JD进行反编译,因为反编译有优化,会都反编译成“+”拼接的,看不出来编译后的真正情况。可以看出,没有差异,执行效率自然也是一样的虽然“+”拼接字符串编译后也会变成StringBuilder,但是。而,效率相对高...

2022-06-09 22:57:23 851

原创 多线程场景下使用 ArrayList

ArrayList 的 add 操作源码可能出现的问题数组越界异常 ArrayIndexOutOfBoundsException由于 ArrayList 添加元素是如上面,可以看出第一个不安全的隐患,在时可能会。具体逻辑如下:元素值覆盖和为空问题设置值的操作同样会导致线程不安全。从这儿可以看出,这步操作也,它由如下两步操作构成:在单线程执行这两条代码时没有任何问题,但是当时,可能就会发生,具体逻辑如下:代码示例执行过程中,两种情况出现如下:代码示例2使用线程池给 ArrayList

2022-06-07 18:32:11 1741

转载 com.google.guava 源码学习

结构概述工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。guava的优点高效设计良好的API,被Google的开发者设计,实现和使用遵循高效的java语法实践使代码更刻度,简洁,简单节约时间,资源,提高生产力guava的核心库集合 [collections]缓存 [caching]原生类型支持 [primitives support]并发库 [concurre

2022-05-18 15:39:38 1459

原创 反射 reflect

关于反射反射是Java程序开发语言的特征之一,它允许运行中的java程序对自身进行检查,并能直接操作程序的内部属性和方法优点:运行期类型的判断,动态加载类,代码灵活度高;缺点:性能低,安全性被破坏常用api主要通过以下类实现反射FieldConstructorMethodClassObject获取Class对象方式一通过Object类 的 getClass() 获取反射对象Book book = new Book();Class bookClass = book.ge

2022-05-13 17:47:05 210

转载 泛型 相关

泛型中占位符T和?有什么区别?Class T泛型和通配符泛型的区别如何理解 public static T 与Class ? [] clazz泛型 T 和 通配符 ?Java泛型详解:和Class的使用。泛型类,泛型方法的详细使用实例泛型应用: public static void display(T t)JAVA 泛型中的通配符 T,E,K,VJava泛型类型擦除以及类型擦除带来的问题...

2022-05-13 11:38:57 71

原创 @Value

@Value(“#{}”) 表示SpEl表达式通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表示常量 @Value(“${xxxx}”) 注解从配置文件读取值

2022-05-12 12:08:05 75

转载 浏览器F12(开发者调试工具) 功能介绍

浏览器F12(开发者调试工具) 功能介绍

2022-05-12 12:00:37 2551

原创 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 638

转载 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 18243

原创 容器化部署 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 575

转载 注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd

注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd

2022-04-28 15:15:17 269

转载 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 172

转载 自动注入 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 722

原创 @Valid和@Validated

简介@Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以很轻松的完成对数据的约束,配合BindingResult可以直接提供参数验证结果所有参数注解含义参考@Validated注解详解,分组校验,嵌套校验,@Valid和@Validated 区别,Spring Boot @Validated区别javax.validation.Valid.@Valid① 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age

2022-04-26 18:55:08 1479

原创 Spring----Aop

学习对AOP的初印象首先先给出一段比较专业的术语(来自百度):在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。然后我们举一个比较容易理解的例

2022-04-22 18:12:42 530

原创 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 4784

转载 spring-后置通知 @AfterReturning

后置通知在目标方法执行之后,增加的业务功能,由于目标方法执行之后执行,所以可以获取到目标方法返回值,该注解是 returning属性就是用于指定接收方法返回值的变量名的。所有被注解后置通知的方法,除了可以加入JoinPoint参数外,还可以包含一个用于接收返回值的变量,该变量最好使用Object类型的,目标方法的返回值可以是任何类型的。后置定义方法,方法是实现切面功能方法定义要求public公共方法方法没有返回值 void方法名称自定义方法有参数,推荐使用Object,参数名自定义,用于接

2022-04-19 16:48:21 4501

原创 几种比较创新的排序算法,多线程排序

多线程为什么要用多线程很显然,多线程能够同时执行多个任务。举个例子,你打开某视频播放器,点击下载某个视频,然后你发现这个时候一直在下载,其他啥都干不了。所以在这种情况下,可以使用多线程,让下载任务继续,同时也能继续其他操作。作为一个包工头,一堆砖要搬,但是就一个人,可是你只能搬这么多,怎么办?多找几个人一起搬,但是其他人就也需要付工钱,没关系,能早点干完也就行了,反正总体工钱差不多。同样的,如果有一个任务特别耗时,而这个任务可以拆分为多个任务,那么就可以让每个线程去执行一个任务,这样任务就可以更快地

2022-04-18 11:59:57 1897

原创 通过 SpringApplication.run(DemoApplication.class, args) 查看 bean

或者

2022-04-13 17:32:07 536

原创 @RefreshScope

参考@RefreshScope 刷新机制原理用过Spring Cloud的同学都知道在使用动态配置刷新的我们要配置一个@RefreshScope 在类上才可以实现对象属性的的动态更新实现@RefreshScope 动态刷新的就需要以下几个支持@Scope@RefreshScopeRefreshScopeGenericScopeScopeContextRefresher@Scope@RefreshScope 能实现动态刷新全仰仗着@Scope 这个注解@Scope代表了Bean的作用

2022-04-13 17:20:37 899

原创 Kubernetes vs Docker Swarm

容器,容器化和容器编排-快速介绍容器是包含应用程序代码,配置和依赖关系的软件包,它提高了运营效率和生产力。在这里,您可以确切地知道它将如何运行,这意味着它是可预测的、可重复的和不可变的。容器的兴起极大地促进了DevOps作为一种服务的发展,并且能够克服当前面临的最大安全障碍。容器化通过在操作系统级别进行虚拟化来使应用程序可移植,从而创建基于内核的隔离的封装系统。容器化的应用程序可以放在任何地方,无需依赖项运行或需要整个VM,从而消除了依赖关系。但是如果有多个容器呢?这就需要容器编排(containe

2022-04-11 16:26:48 446

原创 多线程实现

多线程原理相当于玩游戏机,只有一个游戏机(cpu),可是有很多人要玩,于是,start是排队!等CPU选中你就是轮到你,你就run(),当CPU的运行的时间片执行完,这个线程就继续排队,等待下一次的run()调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。先调用start后调用run,这么麻烦,为了不直接调用run?就是为了实现多线程的优点,没这个start不行

2022-04-07 15:43:49 225

转载 多线程同步工具类 countDownLatch

腾讯面试居然跟我扯了半小时的CountDownLatch

2022-04-07 15:42:19 190

原创 springboot 多线程实现

为什么用线程池有时候,系统需要处理非常多的执行时间很短的请求,如果每一个请求都开启一个新线程的话,系统就要不断的进行线程的创建和销毁,有时花在创建和销毁线程上的时间会比线程真正执行的时间还长。而且当线程数量太多时,系统不一定能受得了使用线程池主要为了解决一下几个问题:降低资源消耗:通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性:线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定

2022-04-07 14:32:03 11000

v2 动力节点redis基础

v2 动力节点redis基础

2021-09-14

v1 动力节点redis基础

动力节点redis基础

2021-09-14

超全面综合笔记!Spring Data Jpa 学习

综合多家视频,超全面综合笔记!Spring Data Jpa 学习

2021-08-06

综合狂神,雷神视频超全面!SpringBoot 基础学习笔记

综合狂神,雷神视频的SpringBoot 笔记

2021-08-06

前后端必看!Vue全系列

前后端必看!Vue全系列,基础入门!

2021-08-06

强烈推荐!Git 基础学习超详细

强烈推荐!Git 基础学习超详细

2021-08-06

程序员必看!!idea 快捷键大全 for mac

程序员必看!!idea 快捷键大全 for mac

2021-08-06

程序员必看!!mac终端常用命令

mac终端常用命令

2021-08-06

mac本常用快捷键大全.html

mac本常用快捷键大全,全系列

2021-08-06

空空如也

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

TA关注的人

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