- 博客(25)
- 资源 (31)
- 收藏
- 关注
原创 018-spring schedulingcongigurer 定时任务自动刷新
在这个例子中,executeTask() 方法将是定时执行的任务内容,而 refreshTask() 方法将包含自动刷新逻辑。configureTasks() 方法中使用ScheduledTaskRegistrar来设置定时任务的触发条件,并可以动态获取cron表达式来实现定时任务的自动刷新。taskExecutor() 方法提供了一个线程池来执行定时任务。如果你想要定时执行的任务能够自动刷新(比如,定时从数据库读取新的任务配置),你可以在定时任务的执行逻辑中加入自动刷新的逻辑。
2024-05-06 15:36:45
305
3
原创 017-Java 动态代理详解
动态代理是一种设计模式,它允许在运行时创建代理对象,并将方法调用重定向到不同的实际对象。它使我们能够在不修改现有代码的情况下增加或改变某个对象的行为。// 定义接口// 实现接口的具体类System.out.println("添加用户:" + username);目标类:CGLIB需要一个目标类,它将生成一个代理类来拦截目标类的方法调用。// 目标类// 自定义拦截器@Override// 调用目标方法。
2023-10-13 17:15:02
213
原创 016-Java reflection反射详解
反射机制允许程序在执行期借助于Reflection API 取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到。加载完类之后,在堆中就产生了一个Class 类型的对象(一个类只有一个Class对象),这个对象包含了类的完整结构信息。通过这个对象得到类的结构。这个对象就像一面镜子,透过一个镜子看见类的结构,所以,形象的称之为:反射。Java反射机制原理示意图。
2023-10-13 14:57:40
185
原创 015-Spring事务失效的12种场景
在使用@Transactional注解声明事务时,有时我们想自定义回滚的异常,spring也是支持的。可以通过设置rollbackFor参数,来完成这个功能。@Slf4j@Service如果在执行上面这段代码,保存和更新数据时,程序报错了,抛了SqlException、DuplicateKeyException等异常。而BusinessException是我们自定义的异常,报错的异常不属于BusinessException,所以事务也不会回滚。
2023-10-10 18:19:18
172
原创 014-使用PowerMockRunner和Mockito编写单元测试用例详解
单元测试可以提高测试开发的效率,减少代码错误率,提高代码健壮性,提高代码质量。两个单元测试,鉴于SpringRunner启动的一系列依赖和数据连接的问题,推荐使用PowerMockRunner,这样能有效的提高测试的效率,并且其提供的API能覆盖的场景广泛,使用方便,可谓是Java单元测试之模拟利器。
2023-10-01 10:43:25
880
原创 013-Java单元测试之PowerMock
EasyMock 以及 Mockito 都因为可以极大地简化单元测试的书写过程而被许多人应用在自己的工作中,但是这 2 种 Mock 工具都不可以实现对静态函数、构造函数、私有函数、Final 函数以及系统函数的模拟,但是这些方法往往是我们在大型系统中需要的功能。PowerMock 是在 EasyMock 以及 Mockito 基础上的扩展,通过定制类加载器等技术,PowerMock 实现了之前提到的所有模拟功能,使其成为大型系统上单元测试中的必备工具。
2023-10-01 10:10:21
975
原创 012-log4j配置文件详解
c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:“org.apache.elathen.ClassName”,%C{2}将输出elathen.ClassName)%d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss}org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)%m 输出代码指定信息,如info(“message”),输出message。
2023-09-26 16:33:00
198
原创 011-Spring线程池ThreadPoolTaskExecutor介绍
降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控,因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场)提供更强大的功能,延时定时线程池。
2023-07-27 16:10:21
4667
1
原创 010-Java获取用户访问IP地址和本机IP地址
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?的原因是有可能用户使用了代理软件方式避免真实IP地址;IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
2023-07-24 14:07:59
2502
原创 009-ThreadLocal、InheritableThreadLocal和TransmittableThreadLocal的实现原理
ThreadLocal介绍threadLocal的特点就是与线程绑定,一般通过这种隐式传参的方式来传递上下文。用户登录和获取用户相关信息,这时候如果在每个需要用户信息的方法入参上加入用户信息参数就先的非常冗余,不够优雅。日志的链路信息等等。根据上面的问题我们知道ThreadLocal存在的局限性,InheritableThreadLocal也就是可继承的ThreadLocal,这里的可继承就是指的ThreadLocalMap。
2023-07-10 15:41:54
134
1
原创 008-在linux上如何快速排查cpu占用过高问题
排查生产上CPU使用率过高异常记录Pid要替换项目程序的pid,如:ps -mp 15669-o THREAD,tid,time,得到占用cpu最高的TID如:jstack 15669,查找到nid=0x3ec7的内容。得到具体的代码行数。
2023-07-06 15:39:29
696
1
原创 007-Java SPI详解
SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。
2023-07-03 17:07:12
87
1
原创 006-线程池内部工作原理
在Java用有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象。线程池几乎也是面试必考问题。本节结合源代码,说说ThreadExecutor的工作原理
2023-06-26 17:20:46
88
1
原创 005-如何在SpringBoot应用中,通过状态机实现订单状态控制
把状态机的要素分为4个要素,即:现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。(1)现态:是指当前所处状态;(2)条件:又称为“事件”。当条件被满足时,将会触发一个动作,或者执行一次状态的迁移。(3)动作:条件满足后执行的动作。动作不是必须的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。(4)次态:条件满足后要迁移往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
2023-06-22 14:40:54
2805
1
原创 004-Logback日志之脱敏处理
对于项目日志脱敏,大家肯定都不陌生,现在对于信息安全越来越重视,在日志中直接打印手机号,身份证号等私人信息和容易造成个人信息的泄露,所以几乎所有的公司都会要求日志中敏感信息的处理,本人也是因为公司安全部门检查,因为部分日志输出了敏感信息,需要对项目日志进行改造,但是问题是如果我们挨个去排查那个日志有输出敏感信息的话,那工作量无疑是巨大的,那有没有一种方式进行全局处理呢
2023-06-22 10:41:52
1090
1
原创 003-亿级数据库拆分之6大原则详解
1.优先考虑缓存降低对数据库的读操作。2.再考虑读写分离,降低数据库写操作。3.最后开始数据拆分,切分模式:垂直(纵向)拆分、水平拆分。4.首先考虑按照业务垂直拆分。5.再考虑水平拆分:先分库(设置数据路由规则,把数据分配到不同的库中)6.最后再考虑分表。
2023-06-19 21:31:19
147
原创 001-京东购物车分页方案探索和落地
商品基础信息和商品附属信息的划分主要从上游接口层面进行区分,商品基础信息即从购物车中台直接获取的商品信息,比如商品图片、商品名称、商品价格、商品类型等;基于基础信息,通过异步并行框架分批获取的商品的附属信息,比如优惠券、预估到手价、商品库存、活动标签、服务、秒杀、闪购等。
2023-06-19 20:33:16
114
原创 Redisson加锁和解锁和WatchDog机制的原理
redisson通过lua脚本来保证加锁的原子性,用客户端对应的线程的唯一标识来保证加锁的用户不被抢占,用过期时间和WatchDog机制(可选)保证不死锁。
2023-05-19 16:29:52
417
1
原创 java快速整合datax 入门实例
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。
2023-05-07 20:17:33
1056
原创 布隆过滤器
布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是由一个很长的bit数组和一系列哈希函数组成的。布隆过滤器可以用于检索一个元素是否在一个集合中。数组的每个元素都只占1bit空间,并且每个元素只能为0或1。布隆过滤器还拥有k个哈希函数,当一个元素加入布隆过滤器时,会使用k个哈希函数对其进行k次计算,得到k个哈希值,并且根据得到的哈希值,在维数组中把对应下标的值置位1。判断某个数是否在布隆过滤器中,就对该元素进行k次哈希计算,得到的值在位数组中判断每个元素是否都为1,如果每个元素都为1
2023-03-26 19:10:03
119
原创 【无标题】
虽然springboot会加载JavaLoggingSystem,Log4J2LoggingSystem,LogbackLoggingSystem三个日志实现类,但在选择时,还是会使用LogbackLoggingSystem作为它的日志框架
2022-06-15 15:44:18
243
原创 day01-mongodb入门
mongodb入门‘基础概念在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比: SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row
2020-08-06 16:05:20
121
原创 Solr入门学习(一)—— Solr 的安装、启动与关闭
文章目录一、Solr 下载与安装 二、Solr 的启动 1. 设置节点数 2. 设置端口号 3. 创建集合 4. 指定配置 三、Solr 的关闭与重启 四、遇到的问题 问题1:Max Processes Limit 问题2:不能使用 root 用户 问题3:文件读写权限 Server : Ubuntu 16.04Java Version : 1.8Solr Version : 7.4.0一、Solr 下载与安装首先,到http://lucen..
2020-08-06 14:39:06
2396
DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持批量创建RDBMS数据同步任务,集成开源调度系统,支持分布式、
2023-05-07
DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台
2023-05-07
shiro+后台权限系统项目.zip
2021-01-02
Git分布式版本控制工具
2020-12-23
ElasticSearch.zip
2020-12-18
JVM内存与垃圾回收课件.zip
2020-11-21
springboot-config-center.zip
2020-11-11
闪聚支付项目课件.zip
2020-09-23
数据分布式事务算法.zip
2020-09-13
20200701.txt
2020-07-06
202006学习2.zip
2020-06-22
202006学习网址.zip
2020-06-10
JAVA设计模式 讲解.pdf
2020-05-27
2020最新Java面试题及答案(带完整目录).pdf
2020-05-27
dubbo527.docx
2020-05-27
20200527-远程调用.txt
2020-05-27
mongodb-new.rar
2020-05-23
mongodb.rar
2020-05-23
shop-cloud.rar
2020-05-22
个人学习总结.rar
2020-05-21
spark课件.rar
2020-05-17
demoopenid查询数据库.txt
2020-05-14
好客租房课件.rar
2020-05-13
shop-cloud.rar
2020-05-10
tomcat源码和solr基础代码.rar
2020-05-09
构建最基础的springboot项目代码
2020-05-04
myproject.rar
2020-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人