自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

浪丶荡

我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活——既可以朝九晚五,又可以浪迹天涯

  • 博客(491)
  • 资源 (16)
  • 收藏
  • 关注

原创 spring扩展之基于HandlerMapping实现接口灰度发布的demo

新增一个自定义注解,用来标注接口的适配的版本号,默认为1.0版本/*** 自定义版本号注解*/}自定义HandleMapping,继承spring家的HandleMapping,并重写两个getCustomTypeCondition方法@Override= null?}}/*** 注册自定义的 ApiVersionHandleMapping*/@Override}}

2022-12-21 18:10:34 706 1

原创 实现了Spring的Aware接口的自定义类什么时候执行的?

以如下代码为例,自定义类MyAware实现了BeanFactroryAware,希望在MyAware中攀上BeanFactory这个亲戚,那spring是什么时候给我beanFactory的呢?在创建每一个bean时,都会执行一下这个invokeAwareMethods,这段代码的逻辑很简单,就是判断当前的bean是否是Aware类型的,如果是,具体是哪种。了解到用户可以通过实现相应的Aware接口来获取spring框架提供的能力,俗称“攀亲戚”我们通过debug堆栈信息就能看出。

2022-12-01 18:27:15 797

原创 springboot自定义starter实践

仿照spring的规范,artifact命名为xxx-spring-boot-starter。

2022-11-25 12:19:58 769

原创 springboot自定义starter采坑记录,could not autowire,No beans of xxxx

使用了springboot的各种starter,深感spi模式的方便,想着手动实现一个自定义starter,结果一动手就问题频出,在将starter打成jar后,又遇到了无法引用的情况。切忌眼高手低,再简单的东西都要手动实践一遍!本地引入的jar,里面的内无法被注入。

2022-11-25 11:38:45 453

原创 es多字段模糊匹配wildcardQuery,java实现

es 版本:7.10.1spring-cloud版本:2.3.5.RELEASEspring-boot-starter-data-elasticsearch 版本 2.3.12.RELEASEspring-data-elasticsearch 版本 4.0.9.RELEASEes查询,需求:title或者content任意一个字段能匹配到关键词即可。

2022-11-22 18:01:44 6062

原创 记一次failed to req API:/nacos/v1/ns/instance after all servers([127.0.0.1:8848]) tried:ConnectE解决过程

编码无小事,切不可粗心大意。

2022-11-21 10:52:06 21681 2

原创 暴力破解Leetcode 42:接雨水问题

问题描述 给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个柱子高度图,计算按此排列的柱子,下雨之后能接多少雨水。(数组以外的区域高度视为0)数据范围:1≤n≤1000000,数组中每个值满足 >=0示例输入:[3,1,2,5,2,4]返回值:5说明:数组 [3,1,2,5,2,4] 表示柱子高度,在这种情况下,可以接 5个单位的雨水,蓝色的为雨水。

2022-09-14 14:45:05 1107

原创 模仿dubbo的ConsistentHashLoadBalance实现一个自定义负载均衡案例

模仿dubbo的ConsistentHashLoadBalance实现一个自定义负载均衡案例

2022-09-09 18:04:44 444

翻译 了解一致性hash原理,这篇文章就够了

在理解一致性hash算法之前,让我们来看一个在缓存中最经典的案例场景,理解这个运用场景之后,我们再去理解一致性hash算法就更容易了,在这个过程中我们还能体会一致性hash算法的优势之处,好了,让我们来描述一下这个经典的分布式缓存案例。

2022-09-09 15:03:41 325

原创 dubbo的负载均衡策略之RandomLoadBalance加权随机策略源码分析

RandomLoadBalance代码阅读起来没什么障碍,但里面包含的小细节(思想)还是很值得学习的,多阅读优秀的代码,模仿它,学习它,超越它!

2022-09-08 17:18:54 361

原创 解析知乎热榜

实现一个简单的需求,解析知乎热榜,主要涉及找到热榜接口、json解析、返回值中文乱码处理(Unicode编码)、RestTemplate配置等等。这只是简单的实现了功能,如果需要实际使用还有很多问题没有解决,比如自动获取的频率应该设置为多少,太频繁了可能导致被别人封禁,频率太低又没有时效性;如果要应对并发访问,可以将获取来了的数据存到自己的缓存系统中去,比如redis中,自己系统访问的时候优先访问本地缓存,缓存的过期时间就参照上面的分析来设置。...

2022-08-30 16:40:01 471

原创 mybatisplus动态sql整型数组使用in踩坑

项目中有个需求,根据多个整型id查询对应的信息理论上最终sql应该是如下所示:但前端传来的参数想着就把userIdArr转成1,2,3,4,5,6就行了然后将字符串形式的userArrIds作为参数传给mappe,于是写成动态sql如下按照预想的,它应该生成如下sql语句自测一下,发现无论userIdArr传多少个,都只能查出第一个,郁闷了半天才发现被自己“蠢哭了”,因为将Integer[] userIdArr转换成了String,最终的sql其实是这样的整个参数被当成了

2022-08-26 10:09:04 1300

原创 java实现已知Host,提取主域名(Guava)

news.sina.com 和 sina.com 各一次,应该统计为sina.com 两次。有个需求需要统计某台机器访问其他网站的频次,同一个主域名下的频次需要合并,即例如访问。

2022-08-09 14:46:49 997

原创 动手搭建一个三个节点的eureka集群

搭建一个三个节点的eureka集群。

2022-07-19 18:18:27 599

原创 将一个单向链表拆分成两个java实现

常见的一道笔试题:链表拆分,将一个单向链表和拆分成两个,如下所示:原始链表:1—>2—>3—>4—>5—>6—>7拆分后链表A:1—>3—>5—>7拆分后链表B:2—>4—>6思路:定义两个头节点,作为新链表的头,分别指向原链表的前两个元素再定义两个浮动,初始值分别指向新链表的头结点然后交替遍历原始节点,将各自的next赋值给新链表待遍历到最后,需要为两个新链表指定尾节点,即赋值为null最后退出循环。...

2022-07-14 18:25:54 778

原创 实例讲解ThreadPoolExecutor线程池任务执行过程

为了方便测试,设置核心线程数(corePoolSize)为2,最大线程数(maximumPoolSize)为3,任务队列长度为3。创建一个线程池,任务执行时长通过doSomeThing的sleep时长来决定。问题1启动线程池,还未提交任务,此时线程池有几个线程?答:0个,debug可以看出,创建线程池后,并没有往线程池添加线程。 提交第一个任务,待第一个任务执行完成之后,再提交第二个任务,此时线程池有几个线程?即在第一个任务执行完成后,提交第二个任务,是否会创建新线程?答:会创建新线程源码的注释上

2022-07-07 10:22:02 851

原创 Spring中@Autowired注解装配流程

众所周知,Autowired注解是通过AutowiredAnnotationBeanPostProcessor来解析的第一个问题AutowiredAnnotationBeanPostProcessor在哪里注册的?过程比较复杂,在使用xml和注解不同的场景中,略有不同,具体可以参考如下文章:xml开发方式下AutowiredAnnotationBeanPostProcessor的注册时机https://blog.csdn.net/leisure_life/article/details/125570942?

2022-07-02 16:31:09 787

原创 注解开发方式下AutowiredAnnotationBeanPostProcessor的注册时机

写一个测试方法,new的是AnnotationConfigApplicationContext ,指定basePackages进this()里面会new一个AnnotatedBeanDefinitionReader new AnnotatedBeanDefinitionReader()的过程中,有一行与众不同的代码继续跟进 正是在这个方法内,把AutowiredAnnotationBeanPostProcessor的注册到了Set中 在使用xml方式...

2022-07-02 13:54:36 223

原创 xml开发方式下AutowiredAnnotationBeanPostProcessor的注册时机

AutowiredAnnotationBeanPostProcessor是实现@Autowired的关键,它本身是在何时添加到sping容器中的?在使用xml方式开发的过程中,我们程序入口一般是ClassPathXmlApplicationContext创建ClassPathXmlApplicationContext时,会调用this构造函数 在构造函数中调用父类构造函数,完成一些属性的加载,以及配置文件路径的解析工作,然后进入正题——refresh() 在核心的refresh()方法中,有一个步骤是

2022-07-02 13:43:38 265

原创 springboot中内置tomcat什么时候创建的,又是什么时候启动的?

与spring和springboot相关的重要逻辑,如果想了解源头在哪,找refresh准没错启动类,run一路run直到refreshContext(context) 走到ServletWebServerApplicationContext#refresh()其实调用还是super.refresh(),也就是AbstractApplicationContext的refresh,再调用onRefresh()然后又回调回了ServletWebServerApplic

2022-06-29 08:56:31 399

原创 SpringBoot中spring.factories在哪里被加载的

Spring 自 3.2 引入 spring.factories SPI 后并没有真正的利用起来,使用的地方比较少,然而真正把 spring.factories 发扬光大的是在 Spring Boot 中 那在springboot中,spring.factories什么时候被加载的呢,里面的类又是什么时候被实例化的呢?从一个普通的springboot项目的main方法进去 就是这里,一个读取里面的类全限定性类名,然后进行实例化。 循环遍历,逐一初始化,用的是java的反射机制反射, forName..

2022-06-27 13:43:29 1000

原创 AutowiredAnnotationBeanPostProcessor什么时候被实例化的?

AutowiredAnnotationBeanPostProcessor是spring实现自动装配的基石,根据前文《 internalAutowiredAnnotationProcessor在哪冒出来的?》,我们已经知道了AutowiredAnnotationBeanPostProcessor是什么时候被加入BeanDefinition,那它又是在哪个步骤被实例化的呢?把断点打在 refresh()方法的invokeBeanFactoryPostProcessors处我们可以看看invokeBeanFact

2022-06-25 17:29:21 446

原创 KafkaTemplate配置ProducerInterceptor|springboot整合kafka,配置自定义拦截器

springboot整合kafka,配置自定义拦截器 ,KafkaTemplate配置ProducerInterceptor

2022-06-17 11:06:26 1943

原创 java字节码层面逐行分析,解释i++和++i的区别

源码 public void testAdd(){ int a = 10; a = a++; System.out.println(a); } public void testAddAdd(){ int a = 10; a = ++a; System.out.println(a); }编译后生成的字节码testAdd()public void

2022-05-24 14:18:04 203

原创 阿里巴巴Java开发手册推荐使用LongAdder,为什么呢?

高并发情况下各种累加器性能测试,包括synchronized、AtomicInteger、AtomicLong、LongAdder、LongAccumulator

2022-05-21 18:33:53 346

原创 CompletableFuture实现多个互不相干的方法并行调用

CompletableFuture.supplyAsync()和 CompletableFuture.allOf()解决多方法并行问题

2022-05-20 17:01:27 8424 1

原创 同事写了段代码,差点没看懂,java1.8特性List转Map & Function.identity()

如果只是简单的需求,还是最原始的写法清晰明了!后面的写法只是为了方便学习stream流的使用,让自己能看懂其他卷王写的“优秀”代码

2022-05-18 10:12:03 1966

原创 Spring的Aware接口有什么用?

ioc容器里面的对象分两种,一种是用户自定义对象,一种是容器对象Aware 接口可以理解为用来获取某些容器对象的方法例如一个普通的Bean对象,需要用到BeanFactory,可以这样做@Componentpublic class MyAware implements BeanFactoryAware { BeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory)

2022-05-17 15:12:17 3485

原创 线程池ThreadPoolExecutor拒绝策略RejectedExecutionHandler

问题1:什么时候触发拒绝策略?问题2:拒绝策略有哪些?问题3:默认的拒绝策略是什么?问题4:你实际开发经历中的拒绝策略是什么?

2022-05-16 10:53:50 883

原创 借助linux的crontab定时任务不停机清理日志

为了方便定位问题,一般会打开日志记录,但运行一段时间后日志特别大,希望能定期清理,比如只保留近三天的日志。新建一个shell脚本,clear_up_log.sh,内容如下,对应需要清理的日志路径yes | cp /dev/null nohup.out编辑crontabvi /etc/crontab添加一个任务,时间根据自己的需要设置,我这测试5分钟一次#执行时间 清理脚本所在位置*/5 * * * * root /cron/clean_up_log

2022-05-12 15:08:48 834

原创 java新特性之Stream,演变过程

遍历数组1.0 public static void ergodicList(List<Integer> list){ for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } }遍历List1.5 public static void ergodicList(List<Integer> ..

2022-05-10 13:43:43 210

原创 代码验证REQUIRES_NEW事务传播机制

REQUIRES_NEW 传播行为下,内外事务是独立的,互不干扰

2022-04-28 17:45:34 1134

原创 spring 事务传播机制总结

spring事务的传播机制定义在 TransactionDefinition 接口中,定义了如下传播类型PROPAGATION_REQUIRED支持当前事务,如果没有当前事务就创建一个新的事务,是默认的传播行为。外围方法未开启事务内部会创建新事务,若新事务回滚,不影响外围方法。外围方法开启事务内部方法会加入到外围方法的事务中,使用同一个事务,不管内外谁发生异常,整个事务都将回滚。/** * Support a current transaction; create a

2022-04-28 15:20:52 601

原创 mvcc相关:innoDB之read view数据格式

源码struct read_view_t{ ulint type; /*!< VIEW_NORMAL, VIEW_HIGH_GRANULARITY */ undo_no_t undo_no;/*!< 0 or if type is VIEW_HIGH_GRANULARITY transaction undo_no when this high-granularity consistent read view was created */ trx_id_t..

2022-04-26 11:33:41 230

原创 mysql InnoDB两次写(doublewrite)

前置知识InnoDB的数据的读取和更新是以页为单位的,并不是以行为单位的;需要被操作的数据,会先以页(16K)为单位加载到内存中;内存中被修改了的页,称为脏页;被修改的数据(脏页)并不是立刻刷新到磁盘,而是通过fscyn函数调用才会刷新到磁盘;doublewriteInsert Buffer给InnoDB存储引擎带来了性能上的提升,doublewrite给InnoDB带来的是数据页的可靠性。当数据库宕机时,可能InnoDB存储引擎正在写入某个页到表中,而这个页只...

2022-04-25 11:16:42 443

原创 玩大了,机试让写一段代码模拟OOM,结果电脑死机了,面试官脸都绿了

public static void testStackOutOfMemory(){ while (true) { Thread thread = new Thread(new Runnable() { public void run() { while(true){} } }); thread.start(); } }上面这个必死,下面这个没试过 public static void testStackOutOfMemory() { ..

2022-04-18 15:01:42 216

原创 Spring @Transactional注解失效场景重现

环境jdk1.8 + springboot 2.1.0.RELEASE+mysql 8 innerDB存储引擎正常在数据插入一条数据抛出checked异常 @Transactional public ApiResult updateUser(@RequestBody UserParams user) throws Exception { SysUser sysUser = new SysUser(); sysUser.se..

2022-04-15 17:02:07 896

原创 免费的图片识别接口,百度ocr的SDK使用java版

申请使用,个人完成认证可获得一定的免费使用场景,用来测试或者简单的场景足够了百度智能云-登录https://console.bce.baidu.com/ai/?_=1649487753967&fromai=1#/ai/ocr/overview/index创建应用,获得APP_ID、API_KEY和SECRET_KEY参考文档进行测试https://ai.baidu.com/ai-doc/OCR/Ikibizxqlhttps://ai.baidu.com/ai-d...

2022-04-09 16:10:57 2279

原创 jdk1.8 HashMap哈希表底层采用何种算法计算hash值?如何确定元素在哈希表的下标

关键代码取hash自身hashCode 按位异或hashCode无符号右移16位当数组的长度很短时,只有低位数的hashcode值能参与运算。而让高16位参与运算可以更好的均匀散列,减少碰撞,进一步降低hash冲突的几率。并且使得高16位和低16位的信息都被保留了。static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h.

2022-03-23 18:52:31 1113 1

原创 jdk1.8HashMap扩容后链表拆分过程解析

源码拆分思路逐行解析

2022-03-12 16:37:15 868

redis的部分可用windows版本.txt

下载并安装windows版本的Redis教程:https://blog.csdn.net/leisure_life/article/details/82078233

2020-09-24

最新全国省市区县经纬度sql

最新全国省市区县经纬度sql,包含全国3400多个省、市、区、县的insert语句,建表直接导入即可

2019-03-08

代码统计工具(SourceCounter)

SourceCounter 是一个代码统计工具,能完美支持几十种代码格式,可以统计代码的行数、大小、注释等,可以保存为CSV和HTML文件,另外软件还支持对软件开发的各个阶段的工数、成本进行分析和预测。

2018-06-15

https双向认证所需jar

https双向认证所需jar,包含bcpkix-jdk15on-1.51.jar、bcprov-jdk15on-1.51.jar、httpclient-4.4.1.jar、httpcore-4.4.1.jar等

2017-09-29

json格式查看器,适合于没有网络的本地开发场景,比如封闭开发

可以查看json格式的小工具,解压既可以,无需注册安装,工具好不好谁用谁知道! 方便快捷,简单粗暴还特么十分有效

2017-09-07

cglib-2.1.95.jar

动态代理所需jar

2017-06-19

mybatis逆向工程

mybatis逆向工程,拿去就能用

2017-05-27

spring-mybatis扥整合实例含数据库

spring-mybatis整合实例包含数据库

2017-05-27

spring-jar.zip

spring-jar.zip

2017-05-27

ehcache-core-2.6.11.jar

ehcache-core-2.6.11.jar

2017-05-27

mybatis-jar

mybatis-jar

2017-05-27

MyBatis实例

MyBatis实例,包含jar文件,数据库;可直接运行

2017-05-23

MyBatis入门程序

MyBatis入门程序,包含详细步骤与jar

2017-05-22

SSH整合完整步骤、完整jar,包含xml注解两个版本

SSH整合完整步骤、完整jar,包含xml注解两个版本

2017-04-19

MyBatis一对多映射

MyBatis一对多映射实例,代码完整,可运行

2005-06-17

空空如也

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

TA关注的人

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