kafka 如果没有明确的指定属于某一个消费者组的消费者消费一个确定分区,在Rebalance时,可能会导致消费的分区发生变换消费者发生 Rebalance之后,每个消费者消费的分区就会发生变化。因此消费者要首先获取到自己被重新分配到的分区,并且定位到每个分区最近提交的offset位置继续消费。要实现自定义存储 offset,需要借助,以下为示例代码,其中提交和获取offset的方法,需要根据所选的offset存储系统自行实现//创建配置信息//Kafka 集群。
配置文件配置Map及List 通过上面的配置可知,一般的单个的值是使用field:value的形式配置的,而List类型的值则是使用多个-value进行配置的,而Map类型的值,则是使用field : key : value进行配置的,可以配置多个key:value。优先读取properties文件,如果properties文件中没有再去读yml文件。properties优先级会高一些,相同名称的配置,会将yml内的配置覆盖掉。介绍一下springBoot中的两种文件配置方式中数组的使用,也就是集合。
Optional 最后介绍的是新的 stream() 方法,它通过把实例转换为 Stream 对象,让你从广大的 Stream API 中受益。既然 getter 方法返回 String 值的 Optional,你可以在对 User 的 Optional 对象调用 flatMap() 时,用它作为参数。上面的示例中,如果 user 变量是 null,它会返回一个 Optional,它所包含的 User 对象,其电子邮件为 “default”。在获取到这个类型的实例后,如果它有值,你可以取得这个值,否则可以进行一些替代行为。
SpringBoot拦截器与过滤器 过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。
Oracle在Logstash需求中碰到的问题处理方式 解释:这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。解释:条件满足值1,则返回值1,满足值2,则返回值2,以此类推。
AQS常用组件 变成阻塞(因为permit为零了会阻塞在这里,一直到permit变为1),这时调用unpark会把permit置为1。LockSupport是用来创建锁和其他同步类的基本线程阻塞原语.LockSupport中的park(()和unpark()的作用分别是阻塞线程和解除阻塞线程。 允许一个线程或者多个线程等待直到在其他线程中执行的一组操作完成的同步操作.里面Await方法等待计数器归零然后再向下执行(先让必须要完成的任务先执行)纯粹的是只想阻塞线程,并不想加锁。
jdk和cglib动态代理 jdk中为实现代理提供了支持,主要用到2个类:java.lang.reflect.Proxy这是jdk动态代理中主要的一个类,里面有一些静态方法会经常用到,我们来熟悉一下:newProxyInstance方法这个方法先为指定的接口创建代理类,然后会生成代理类的一个实例,最后一个参数比较特殊,是InvocationHandler类型的,这个是个借口如下:上面方法会返回一个代理对象,当调用代理对象的任何方法的时候,会就被接口的方法处理,所以主要代码需要卸载方法中,稍后会有案例细说。getInv
Spring监听器 /声明早期的监听器和事件,不需要手动调用publishEvent protected void prepareRefresh() {//设为激活状态,只有此状态,才能getBean this . active . set(true);//下面两个方法是配合使用的,如果一个类重新了该方法,在该方法中设置了必须的环境变量 //getEnvironment().setRequiredProperties("necessary") initPropertySources();...
Spring循环依赖解决 只在循环依赖的情况下在实例化后创建动态代理:如何判断当前是不是循环依赖:singletonsCurrentlyInCreation集合。为初始化对象创建动态代理,将这个代理对象放到二级缓存里面。正常情况下(正常的bean)会在初始化之后创建动态代理。...
Mybatis源码介绍 DefaultSqlSessionFactory#openSessionFromConnectionorg.apache.ibatis.session.Configuration#newExecutor()当调用里面的某个方法时DefaultSqlSession#selectOne(java.lang.String, java.lang.Object)org.apache.ibatis.plugin.Plugin#invokeCachingExecutor#query()MappedStateme
SpringIoc容器源码分析 BeanDefinitionBeanDefinitionReader实例化:在堆中开闭一块内存空间,属性都是默认值初始化:给属性完成赋值操作SpringIOC的源码深入学习类加载成Bean大致可以分为两大步将类解析成Bean定义将Bean定义创建成一个成熟的Beannew AnnotationConfigApplicationContext(xxxxx.class)AnnotationConfigApplicationContext#this():构造方法调用子
Spring源码整体脉络介绍 /实例化instanceWrapper=createBeanInstance(beanName,mbd,args);try{//填充属性populateBean(beanName,mbd,instanceWrapper);//初始化,在这里会调用一部分Aware方法exposedObject=initializeBean(beanName,exposedObject,mbd);}=null){}else{
SpringBoot启动流程源码分析 获取启动类根据启动类加载IOC容器获取web应用类型spring.factories读取了对外扩展的ApplicationContextInitializer,ApplicationListener读取ApplicationListener监听器将main方法所在的类放入mainApplicationClass记录启动开始事件开启handless发布事件封装命令行参数ApplicationArguments读取环境配置信息第一步获取并启动监听器第二步Demo。......
Curator介绍 curator-recipes包中包含了对zookeeper场景应用场景的封装,好的项目源码让人从包名就能看出其功能,下面先看下recipes的包结构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RFo2dI2e-1657506932284)(C简单介绍下不同包及其对应功能包名功能简介atomic分布式计数器(DistributedAtomicLong),能在分布式环境下实现原子自增barriers//模拟100个线程抢锁for(inti=0;......
Spring源码之Environment源码分析.md PropertyResolver接口:提供属性访问功能,解析${…}ConfigurablePropertyResolver:继承自PropertyResolver,主要提供属性类型转换(基于org.springframework.core.convert.ConversionService)功能getConversionService:返回对属性执行类型转换时使用的{@link ConfigurableConversionService}。返回的转换服务的可配置性质允许方便地添加和删除单个{@code C
MVCC底层原理与Mysql日志讲解 Mysql在可重复读隔离级别下如何保证事务较高的隔离性,我们上节课给大家演示过,同样的sql查询语句在一个事务里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。这个隔离性就是靠MVCC(Multi-Vesion Concurency Controller)机制来保证的,对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性,避免了频繁加锁互斥,而在串行化隔离级别为了保证较高的隔离性是通过将所有操作加锁互斥来实现的。Mysql在读已提交和可重复读隔离级别下都实现了M
深入理解Mysql锁与事务隔离级别 Mysql事务及ACID特性详解概述事务及其ACID属性并发事务处理带来的问题Mysql事务隔离级别详解Mysql事务隔离级别详解Mysql锁机制详解锁详解锁分类表锁行锁间隙锁(Gap Lock) 临键锁(Next-key Locks)无索引行锁会升级为表锁结论行锁分析查看INFORMATION_ SCHEMA系统库锁相关数据表死锁锁优化建议行锁与事务隔离级别案例分析读未提交读已提交可重复读可串行化 我们的数据库一般都会并发执行多个事务, 多个事务可能会并发的对相同的一批数据进行增删改查操作, 可能就会导致
Mysql索引优化实战二 分页查询优化详解常见的分页场景优化技巧根据自增且连续的主键排序的分页查询根据非主键字段排序的分页查询 表JOIN关联原理详解及优化mysql的表关联常见有两种算法嵌套循环连接Nested-Loop Join 算法基于块的嵌套循环连接Block Nested-Loop Join算法对于关联sql的优化in和exsits优化表COUNT查询优化常见优化方式查询mysql自己维护的总行数show table status将总数维护到Redis里增加数据库计数表阿里巴巴MYSQL规范解读索引规约SQL语句MYSQL