自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(133)
  • 收藏
  • 关注

原创 kafka

如果没有明确的指定属于某一个消费者组的消费者消费一个确定分区,在Rebalance时,可能会导致消费的分区发生变换消费者发生 Rebalance之后,每个消费者消费的分区就会发生变化。因此消费者要首先获取到自己被重新分配到的分区,并且定位到每个分区最近提交的offset位置继续消费。要实现自定义存储 offset,需要借助,以下为示例代码,其中提交和获取offset的方法,需要根据所选的offset存储系统自行实现​​​​​​​//创建配置信息//Kafka 集群。

2023-05-22 15:28:44 637

原创 配置文件配置Map及List

通过上面的配置可知,一般的单个的值是使用field:value的形式配置的,而List类型的值则是使用多个-value进行配置的,而Map类型的值,则是使用field : key : value进行配置的,可以配置多个key:value。优先读取properties文件,如果properties文件中没有再去读yml文件。properties优先级会高一些,相同名称的配置,会将yml内的配置覆盖掉。介绍一下springBoot中的两种文件配置方式中数组的使用,也就是集合。

2023-02-11 18:24:38 827 1

原创 Optional

最后介绍的是新的 stream() 方法,它通过把实例转换为 Stream 对象,让你从广大的 Stream API 中受益。既然 getter 方法返回 String 值的 Optional,你可以在对 User 的 Optional 对象调用 flatMap() 时,用它作为参数。上面的示例中,如果 user 变量是 null,它会返回一个 Optional,它所包含的 User 对象,其电子邮件为 “default”。在获取到这个类型的实例后,如果它有值,你可以取得这个值,否则可以进行一些替代行为。

2023-02-11 18:10:48 925

原创 SpringBoot拦截器与过滤器

过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。

2022-11-23 12:09:17 570

原创 Oracle在Logstash需求中碰到的问题处理方式

解释:这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。解释:条件满足值1,则返回值1,满足值2,则返回值2,以此类推。

2022-11-22 11:58:57 599

原创 AQS常用组件

变成阻塞(因为permit为零了会阻塞在这里,一直到permit变为1),这时调用unpark会把permit置为1。LockSupport是用来创建锁和其他同步类的基本线程阻塞原语.LockSupport中的park(()和unpark()的作用分别是阻塞线程和解除阻塞线程。​ 允许一个线程或者多个线程等待直到在其他线程中执行的一组操作完成的同步操作.里面Await方法等待计数器归零然后再向下执行(先让必须要完成的任务先执行)纯粹的是只想阻塞线程,并不想加锁。

2022-08-21 13:19:06 330

原创 jdk和cglib动态代理

jdk中为实现代理提供了支持,主要用到2个类:java.lang.reflect.Proxy这是jdk动态代理中主要的一个类,里面有一些静态方法会经常用到,我们来熟悉一下:newProxyInstance方法这个方法先为指定的接口创建代理类,然后会生成代理类的一个实例,最后一个参数比较特殊,是InvocationHandler类型的,这个是个借口如下:上面方法会返回一个代理对象,当调用代理对象的任何方法的时候,会就被接口的方法处理,所以主要代码需要卸载方法中,稍后会有案例细说。getInv

2022-08-14 15:00:55 161

原创 Spring监听器

/声明早期的监听器和事件,不需要手动调用publishEvent protected void prepareRefresh() {//设为激活状态,只有此状态,才能getBean this . active . set(true);//下面两个方法是配合使用的,如果一个类重新了该方法,在该方法中设置了必须的环境变量 //getEnvironment().setRequiredProperties("necessary") initPropertySources();...

2022-08-14 12:12:02 383

原创 Spring循环依赖解决

只在循环依赖的情况下在实例化后创建动态代理:如何判断当前是不是循环依赖:singletonsCurrentlyInCreation集合。为初始化对象创建动态代理,将这个代理对象放到二级缓存里面。正常情况下(正常的bean)会在初始化之后创建动态代理。...

2022-08-13 23:03:13 163

原创 Mybatis源码介绍

DefaultSqlSessionFactory#openSessionFromConnectionorg.apache.ibatis.session.Configuration#newExecutor()当调用里面的某个方法时DefaultSqlSession#selectOne(java.lang.String, java.lang.Object)org.apache.ibatis.plugin.Plugin#invokeCachingExecutor#query()MappedStateme

2022-07-31 19:09:45 319

原创 SpringIoc容器源码分析

BeanDefinitionBeanDefinitionReader实例化:在堆中开闭一块内存空间,属性都是默认值初始化:给属性完成赋值操作SpringIOC的源码深入学习类加载成Bean大致可以分为两大步将类解析成Bean定义将Bean定义创建成一个成熟的Beannew AnnotationConfigApplicationContext(xxxxx.class)AnnotationConfigApplicationContext#this():构造方法调用子

2022-07-24 21:25:33 353

原创 Spring源码整体脉络介绍

/实例化instanceWrapper=createBeanInstance(beanName,mbd,args);try{//填充属性populateBean(beanName,mbd,instanceWrapper);//初始化,在这里会调用一部分Aware方法exposedObject=initializeBean(beanName,exposedObject,mbd);}=null){}else{

2022-07-23 17:52:52 482

原创 SpringBoot启动流程源码分析

获取启动类根据启动类加载IOC容器获取web应用类型spring.factories读取了对外扩展的ApplicationContextInitializer,ApplicationListener读取ApplicationListener监听器将main方法所在的类放入mainApplicationClass记录启动开始事件开启handless发布事件封装命令行参数ApplicationArguments读取环境配置信息第一步获取并启动监听器第二步Demo。......

2022-07-20 01:57:46 506 1

原创 MySQL—update语句执行流程

update语句执行流程框架图。update执行流程简图。

2022-07-18 11:10:59 1697

原创 mybatis动态sql之trim用法

trim标签有四个属性使用trim标签去除多余的and关键字 使用trim标签结合case when实现批量更新Demo1Demo2

2022-07-11 11:17:28 2636

转载 Curator介绍

curator-recipes包中包含了对zookeeper场景应用场景的封装,好的项目源码让人从包名就能看出其功能,下面先看下recipes的包结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFo2dI2e-1657506932284)(C简单介绍下不同包及其对应功能包名功能简介atomic分布式计数器(DistributedAtomicLong),能在分布式环境下实现原子自增barriers//模拟100个线程抢锁for(inti=0;......

2022-07-11 10:38:00 537

原创 Spring源码之Environment源码分析.md

PropertyResolver接口:提供属性访问功能,解析${…}ConfigurablePropertyResolver:继承自PropertyResolver,主要提供属性类型转换(基于org.springframework.core.convert.ConversionService)功能getConversionService:返回对属性执行类型转换时使用的{@link ConfigurableConversionService}。返回的转换服务的可配置性质允许方便地添加和删除单个{@code C

2022-07-08 14:24:28 471

原创 MVCC底层原理与Mysql日志讲解

Mysql在可重复读隔离级别下如何保证事务较高的隔离性,我们上节课给大家演示过,同样的sql查询语句在一个事务里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。这个隔离性就是靠MVCC(Multi-Vesion Concurency Controller)机制来保证的,对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操作加锁互斥来实现的。Mysql在读已提交和可重复读隔离级别下都实现了M

2022-07-08 12:28:02 272

原创 深入理解Mysql锁与事务隔离级别

Mysql事务及ACID特性详解概述事务及其ACID属性并发事务处理带来的问题Mysql事务隔离级别详解Mysql事务隔离级别详解Mysql锁机制详解锁详解锁分类表锁行锁间隙锁(Gap Lock) 临键锁(Next-key Locks)无索引行锁会升级为表锁结论行锁分析查看INFORMATION_ SCHEMA系统库锁相关数据表死锁锁优化建议行锁与事务隔离级别案例分析读未提交读已提交可重复读可串行化 我们的数据库一般都会并发执行多个事务, 多个事务可能会并发的对相同的一批数据进行增删改查操作, 可能就会导致

2022-07-07 18:00:57 332

原创 Mysql索引优化实战二

分页查询优化详解常见的分页场景优化技巧根据自增且连续的主键排序的分页查询根据非主键字段排序的分页查询 表JOIN关联原理详解及优化mysql的表关联常见有两种算法嵌套循环连接Nested-Loop Join 算法基于块的嵌套循环连接Block Nested-Loop Join算法对于关联sql的优化in和exsits优化表COUNT查询优化常见优化方式查询mysql自己维护的总行数show table status将总数维护到Redis里增加数据库计数表阿里巴巴MYSQL规范解读索引规约SQL语句MYSQL

2022-07-07 14:53:01 208

原创 Mysql索引优化实战一

综合案例联合索引第一个字段用范围不会走索引强制走索引覆盖索引优化 in和or在表数据量比较大的情况下会走索引,在表记录不多的情况下会选择全表扫描 like kk%不管表数据量大小都会走索引 索引下推为什么范围查找Mysql没有用索引下推优化Mysql如何选择合适的索引常见sql深入优化Order bycase1 case2case3case4 case5 case6 case7case8 优化总结Using filesort文件排序原理详解filesort文件排序方式如何选择使用哪种方式 索引设计原则代码

2022-07-06 18:23:14 521

原创 Explain

Explain详解select_typetype列possible_keys和keypossible_keyskeykey_len列key_len的计算规则ref列rows列Extra列Explain使用全值匹配不在索引类上做任何操作(计算,函数(自动or手动)类型转换),会导致索引失效而转向全表扫描存储引擎不能使用索引中范围条件右边的列尽量使用覆盖查询(只访问索引的查询(索引列包含查询列)),减少select*语句mysq在使用不等于(! = 或者)的时候无法使用索引会导致全表扫描is null,is..

2022-07-06 10:01:02 104

原创 索引数据结构详解

索引数据结构二叉树红黑树HashB-TreeB+Tree存储引擎索引实现MylSAM引擎(非聚集索引)InnoDB索引实现(聚集)联合索引介绍​编辑索引是帮助Mysql高效获取数据的排好序的数据结构索引也是存储在磁盘上如果没有建立索引会一条一条的查询,查询一条会跟磁盘做一次IO操作见下图,以Col2为索引建立二叉树,每一个节点包含一个key(值),value(索引行所在磁盘地址)二叉树红黑树Hash表B-TreeMysql底层并没有使用二叉树:因为如果数据比较极端的话,会形成一张链表,并没有降低查询Mysq

2022-07-05 11:57:54 360

原创 数据结构-堆排序

目录基本介绍堆排序思想堆排序的基本思路 实现代码

2022-06-26 17:33:53 171

原创 利用Aop对排序字段,排序方式及搜索内容进行过滤,防止sql注入

利用Aop对排序字段,排序方式及搜索内容进行过滤,防止sql注入

2022-06-13 18:06:57 339

原创 Aop的相关介绍

Spring框架一般是基于AspectJ实现AOP操作基于注解方式实现(使用)切入点表达式可以对相同的切入点表达式做一个抽取如果有多个增强类对同一个方法进行增强,设置增强类优先级注意:需要在启动类上增加@EnableAspectJAutoProxy注解...

2022-06-07 17:24:57 82

原创 CAS介绍及魔法类Unsafe

目录​​​​​​​JUC 并发包中原子类 java.util.concurrent.atomic根据操作的目标数据类型,可以将 JUC 包中的原子类分为 4 类:1. 基本原子类2. 数组原子类3. 引用原子类4. 字段更新原子类5.原子操作增强类深度剖析 案例longAdder的原理Striped64的重要成员属性以及方法Cell 源码分析图形化总结 总结 Unsafe类Unsafe 提供的 CAS 方法获取属性偏移量 根据属性的偏移量获取属性的最新值CASCAS是什么CAS底层原理自旋锁实现自旋锁整

2022-06-05 13:35:33 293

原创 CompletableFuture介绍

CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成以后可能会触发另外一个阶段一个阶段的计算执行可以是一个Function,Consumer或者Runnable.比如一个阶段的执行可能是单个阶段的完成触发,也可能是多个阶段一起触发代表异步计算过程中的某一个阶段,一个阶段完成可能会触发另外一个阶段,exceptionally相当于try/catchwhenComplete+handle相当于try/finally。...

2022-06-04 17:33:53 229

原创 缺失的毫秒值导致的bug

在公司mysql2es模块中,需要定时的将数据库中数据同步到ES中,由于SpringBoot版本升级导致了如下错误:es中createTime的format为yyyy-MM-dd HH:mm:ss 设备1中的createTime字段对应的值为2021-06-18 15:38:27 设备2中的createTime字段对应的值为2021-06-18 15:05:00 走到里面的一个方法时发现了如下错误 设备1 设备2可以发现从数据库中取出来的时候,设备2的秒值缺失,导致结果不符..

2022-05-26 14:17:55 133

原创 阻塞队列案例及部分源码

目录ArrayBlockingQueueArrayBlockingQueue的部分源码LinkedBlockingQueueLinkedBlockingDeque的部分源码使用实例PriorityBlockingQueuePriorityBlockingQueue的部分源码使用实例DelayQueueDelayQueue的源码使用实例点击这里可以查看理论部分注意:BlockingQueue 不接受null 元素。试图add、put 或...

2022-05-19 17:11:28 183

原创 监控线程池中的线程并且捕获出现异常的线程

目录监控线程池的运行状态代码实例1.自定义ThreadPoolExecutor2.自定义Runnable3.启动类4.在执行任务之前为每个线程增加异常拦截器线程池中的一个线程出现异常监控线程池的运行状态需要关注ThreadPoolExecutor中的四个方法Shutdown():启动有序关闭,其中先前提交的任务将被执行,但不会接受任何新任务。 ShutdownNow():尝试停止所有主动执行的任务,停止等待任务的处理,并返回正在等待执行的任务列表。 befor

2022-05-18 17:37:11 645

原创 java-深浅拷贝

目录图形化介绍什么是深浅拷贝Cloneable接口如何实现深拷贝方法1:重写clone方法方法2:clone多嵌套方法3:通过序列化的方式去实现深拷贝保证当前类以及当前类的属性都是可序列化的额外方法:BeanUtils.copyProperties(orig, dest)图形化介绍什么是深浅拷贝浅拷贝:拷贝对象和引用对象指向同一个内存地址即,修改拷贝对象,原对象会受到影响Cloneable接口Cloneable就是一个标记接口,本...

2022-05-18 10:34:16 133

原创 spring.factories加载原理以及自定义EnvironmentPostProcessor

目录spring.factories加载原理1. SpringApplication的构造方法1.1 SpringApplication#getSpringFactoriesInstances1.1.1SpringFactoriesLoader#loadFactoryNames-->loadSpringFactories1.1.2 createSpringFactoriesInstances自定义EnvironmentPostProcessor疑问:如何让自定义的En...

2022-05-14 23:55:07 1237

原创 java-泛型

什么是泛型泛型就是参数化类型,就是将类型由原来具体的类型参数化。为什么要使用泛型:能够在不创建新类型(重新编写一个java.class)的情况下通过泛型指定的不同类型来控制形参具体限制的类型Java中的泛型是一个伪泛型,类型擦除(java的泛型是在编译器这个层次上实现的)(list<string>right,list<integer>left)java在编译期间所有的类型都会被擦除,生成的字节码不包含泛型的类型信息的。编译之后right和left都会变成class j

2022-05-09 11:17:42 123

原创 java-序列化

序列化需要考虑哪些问题? 1.serializable接口是可以继承的,即父类实现了该接口,子类也可以序列化 2.子类实现序列化接口,父类不实现序列化,那么。子类可以序列化吗 父类不可序列化,反序列化子类为object时,需要调用父类默认的无参构造器去初始化,去初始化属性的值(readObject需要调用父类的无参构造函数) 结论:父类不可序列化的时候,需要调用默认的无参构造器做初始化属性的值 3.类中存在引用对象,那么,这个类对象在什么情...

2022-05-09 10:27:15 226

原创 java8日期和时间的api以及精准控制两个时间点的间隔

java8日期和时间的api在java.time包下java8所有的日期和时间的api都是不可变类以及确保线程安全基本使用public static void main(String[] args) { LocalDate localDate = LocalDate.now(); System.out.println(localDate); System.out.println( //2022

2022-05-08 14:06:25 343

原创 前缀 通配符 正则搜索

目录前缀搜索前缀搜索的原理通配符搜索正则搜索建议前缀搜索C3D0-KD345C3K5-DFG65C4I8-UI365C3 --> 上面这两个都搜索出来 --> 根据字符串的前缀去搜索PUT my_index{ "mappings": { "my_type": { "properties": { "title": { "type": "keyword" } }...

2022-05-04 17:22:41 239

原创 倒排索引介绍

目录图书和搜索引擎的类比正派索引和倒排索引倒排索引的核心组成图书和搜索引擎的类比 图书 正排索引 ==目录页 倒排索引 == 索引页 索引引擎 正排索引 ==文档ID到文档内容和单词的关联 倒排索引 ==单词到文档ID的关系 正派索引和倒排索引 正排索引 ==文档ID到文档内容和单词的关联 倒排索引 ==单词到文档ID的关系 DocumentId:Position == 文档id和该

2022-05-03 18:08:48 1073

原创 Elasticsearch数据类型--object

概念介绍es中的object类型可理解为field包含field即field的分层结构。 例如下面的index,在第一个层次包含了[region,manager]字段,manager内部又包含了[age,name],name本身又是一个object,包含了[first,last]。 这里需要注意的是,name使用了dynamic、enabled、properties、type属性。 其中,dyanmic表示此object是否可动态添加字段,当然也可以给当前索引整体设置dyanmic的值; .

2022-05-03 12:18:32 2117

原创 ElasticSearch数据建模实例

目录什么是数据建模数据建模: 功能需求 + 性能需求如何对字段进行建模字段类型 Text VS Keyword字段类型:结构化数据检索聚合及分析额外的存储一个数据建模的实例图书的索引优化字段设定Demo需求变更查询图书:解决字段过大引发的性能问题DemoMapping字段的相关设置一些相关的API什么是数据建模 数据建模,是创建数据模型的过程 数据建模是对真实世界进行抽象描述的一种工具和方法,实现对现实世界的映射.

2022-05-03 11:18:38 100

空空如也

空空如也

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

TA关注的人

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