自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (31)
  • 收藏
  • 关注

原创 018-spring schedulingcongigurer 定时任务自动刷新

在这个例子中,executeTask() 方法将是定时执行的任务内容,而 refreshTask() 方法将包含自动刷新逻辑。configureTasks() 方法中使用ScheduledTaskRegistrar来设置定时任务的触发条件,并可以动态获取cron表达式来实现定时任务的自动刷新。taskExecutor() 方法提供了一个线程池来执行定时任务。如果你想要定时执行的任务能够自动刷新(比如,定时从数据库读取新的任务配置),你可以在定时任务的执行逻辑中加入自动刷新的逻辑。

2024-05-06 15:36:45 205 3

原创 017-Java 动态代理详解

动态代理是一种设计模式,它允许在运行时创建代理对象,并将方法调用重定向到不同的实际对象。它使我们能够在不修改现有代码的情况下增加或改变某个对象的行为。// 定义接口// 实现接口的具体类System.out.println("添加用户:" + username);目标类:CGLIB需要一个目标类,它将生成一个代理类来拦截目标类的方法调用。// 目标类// 自定义拦截器@Override// 调用目标方法。

2023-10-13 17:15:02 158

原创 016-Java reflection反射详解

反射机制允许程序在执行期借助于Reflection API 取得任何类的内部信息(比如成员变量,构造器,成员方法等等),并能操作对象的属性及方法。反射在设计模式和框架底层都会用到。加载完类之后,在堆中就产生了一个Class 类型的对象(一个类只有一个Class对象),这个对象包含了类的完整结构信息。通过这个对象得到类的结构。这个对象就像一面镜子,透过一个镜子看见类的结构,所以,形象的称之为:反射。Java反射机制原理示意图。

2023-10-13 14:57:40 136

原创 015-Spring事务失效的12种场景

在使用@Transactional注解声明事务时,有时我们想自定义回滚的异常,spring也是支持的。可以通过设置rollbackFor参数,来完成这个功能。@Slf4j@Service如果在执行上面这段代码,保存和更新数据时,程序报错了,抛了SqlException、DuplicateKeyException等异常。而BusinessException是我们自定义的异常,报错的异常不属于BusinessException,所以事务也不会回滚。

2023-10-10 18:19:18 128

原创 014-使用PowerMockRunner和Mockito编写单元测试用例详解

单元测试可以提高测试开发的效率,减少代码错误率,提高代码健壮性,提高代码质量。两个单元测试,鉴于SpringRunner启动的一系列依赖和数据连接的问题,推荐使用PowerMockRunner,这样能有效的提高测试的效率,并且其提供的API能覆盖的场景广泛,使用方便,可谓是Java单元测试之模拟利器。

2023-10-01 10:43:25 635

原创 013-Java单元测试之PowerMock

EasyMock 以及 Mockito 都因为可以极大地简化单元测试的书写过程而被许多人应用在自己的工作中,但是这 2 种 Mock 工具都不可以实现对静态函数、构造函数、私有函数、Final 函数以及系统函数的模拟,但是这些方法往往是我们在大型系统中需要的功能。PowerMock 是在 EasyMock 以及 Mockito 基础上的扩展,通过定制类加载器等技术,PowerMock 实现了之前提到的所有模拟功能,使其成为大型系统上单元测试中的必备工具。

2023-10-01 10:10:21 536

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

原创 011-Spring线程池ThreadPoolTaskExecutor介绍

降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控,因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场)提供更强大的功能,延时定时线程池。

2023-07-27 16:10:21 2077 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 2210

原创 009-ThreadLocal、InheritableThreadLocal和TransmittableThreadLocal的实现原理

ThreadLocal介绍threadLocal的特点就是与线程绑定,一般通过这种隐式传参的方式来传递上下文。用户登录和获取用户相关信息,这时候如果在每个需要用户信息的方法入参上加入用户信息参数就先的非常冗余,不够优雅。日志的链路信息等等。根据上面的问题我们知道ThreadLocal存在的局限性,InheritableThreadLocal也就是可继承的ThreadLocal,这里的可继承就是指的ThreadLocalMap。

2023-07-10 15:41:54 98 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 549 1

原创 007-Java SPI详解

SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。

2023-07-03 17:07:12 60 1

原创 006-线程池内部工作原理

在Java用有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象。线程池几乎也是面试必考问题。本节结合源代码,说说ThreadExecutor的工作原理

2023-06-26 17:20:46 55 1

原创 005-如何在SpringBoot应用中,通过状态机实现订单状态控制

把状态机的要素分为4个要素,即:现态、条件、动作、次态。“现态”和“条件”是因,“动作”和“次态”是果。(1)现态:是指当前所处状态;(2)条件:又称为“事件”。当条件被满足时,将会触发一个动作,或者执行一次状态的迁移。(3)动作:条件满足后执行的动作。动作不是必须的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。(4)次态:条件满足后要迁移往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。

2023-06-22 14:40:54 2271 1

原创 004-Logback日志之脱敏处理

对于项目日志脱敏,大家肯定都不陌生,现在对于信息安全越来越重视,在日志中直接打印手机号,身份证号等私人信息和容易造成个人信息的泄露,所以几乎所有的公司都会要求日志中敏感信息的处理,本人也是因为公司安全部门检查,因为部分日志输出了敏感信息,需要对项目日志进行改造,但是问题是如果我们挨个去排查那个日志有输出敏感信息的话,那工作量无疑是巨大的,那有没有一种方式进行全局处理呢

2023-06-22 10:41:52 907 1

原创 003-亿级数据库拆分之6大原则详解

1.优先考虑缓存降低对数据库的读操作。2.再考虑读写分离,降低数据库写操作。3.最后开始数据拆分,切分模式:垂直(纵向)拆分、水平拆分。4.首先考虑按照业务垂直拆分。5.再考虑水平拆分:先分库(设置数据路由规则,把数据分配到不同的库中)6.最后再考虑分表。

2023-06-19 21:31:19 67

原创 002-接口偶尔访问慢的30种情况

接口偶尔访问慢的30种情况

2023-06-19 21:22:34 383

原创 001-京东购物车分页方案探索和落地

商品基础信息和商品附属信息的划分主要从上游接口层面进行区分,商品基础信息即从购物车中台直接获取的商品信息,比如商品图片、商品名称、商品价格、商品类型等;基于基础信息,通过异步并行框架分批获取的商品的附属信息,比如优惠券、预估到手价、商品库存、活动标签、服务、秒杀、闪购等。

2023-06-19 20:33:16 56

原创 Redisson加锁和解锁和WatchDog机制的原理

redisson通过lua脚本来保证加锁的原子性,用客户端对应的线程的唯一标识来保证加锁的用户不被抢占,用过期时间和WatchDog机制(可选)保证不死锁。

2023-05-19 16:29:52 339 1

原创 java快速整合datax 入门实例

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。

2023-05-07 20:17:33 889

原创 布隆过滤器

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是由一个很长的bit数组和一系列哈希函数组成的。布隆过滤器可以用于检索一个元素是否在一个集合中。数组的每个元素都只占1bit空间,并且每个元素只能为0或1。布隆过滤器还拥有k个哈希函数,当一个元素加入布隆过滤器时,会使用k个哈希函数对其进行k次计算,得到k个哈希值,并且根据得到的哈希值,在维数组中把对应下标的值置位1。判断某个数是否在布隆过滤器中,就对该元素进行k次哈希计算,得到的值在位数组中判断每个元素是否都为1,如果每个元素都为1

2023-03-26 19:10:03 83

原创 微服务拆分策略

微服务拆分没有一个绝对的标准答案,服务拆分的粒度需要根据业务场景来规划,而随着业务的发展,原先的架构方案也需要做调整。

2022-09-22 16:51:38 413

原创 【无标题】

虽然springboot会加载JavaLoggingSystem,Log4J2LoggingSystem,LogbackLoggingSystem三个日志实现类,但在选择时,还是会使用LogbackLoggingSystem作为它的日志框架

2022-06-15 15:44:18 184

原创 day01-mongodb入门

mongodb入门‘基础概念在mongodb中是通过数据库、集合、文档的方式来管理数据,下边是mongodb与关系数据库的一些概念对比: SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row

2020-08-06 16:05:20 95

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

APM管理工具-Skywalking

APM管理工具-Skywalking

2023-07-11

DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持批量创建RDBMS数据同步任务,集成开源调度系统,支持分布式、

DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持批量创建RDBMS数据同步任务,集成开源调度系统,支持分布式、增量同步数据、实时查看运行日志、监控执行器资源、KILL运行进程、数据源信息加密等。

2023-05-07

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台

DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。

2023-05-07

shiro+后台权限系统项目.zip

通过学习本课程掌握权限管理的设计思想及方法,使用Shiro框架完成权限管理功能开发 理解基于资源的权限管理 掌握权限管理的数据模型 掌握 Shiro 进行认证的常用方法 掌握 Shiro 进行授权的常用方法 Shiro 整合企业应用开发 http://47.116.138.95:8080/i-admin-1.0-SNAPSHOT/login 账号 jack 密码:123456

2021-01-02

Git分布式版本控制工具

Git概述 Git代码托管服务 Git常用命令 使用TortoiseGit管理文件版本 在IDEA中使用Git 使用SSH协议传输数据 5. 在IDEA中使用Git 本章节我们会学习在IDEA中使用Git进行版本管理,具体包括: 在IDEA中创建工程并将工程添加至Git 将文件添加到暂存区 提交文件 将代码推送到远程仓库 从远程仓库克隆工程到本地 从远程拉取代码 版本对比 创建分支 切换分支 分支合并

2020-12-23

ElasticSearch.zip

ElasticSearch.zip ElasticSearch.zipElasticSearch.zipElasticSearch.zipElasticSearch.zipElasticSearch.zipElasticSearch.zipElasticSearch.zipElasticSearch.zip

2020-12-18

JVM内存与垃圾回收课件.zip

上篇:内存与垃圾回收篇 中篇:字节码与类的加载篇 垃圾回收的几种常用算法:标记-清除、复制算法、标记-整理算法、分代收集算法 Jvm的垃圾收集器(serial收集器、parnew收集器、parallel scavenge收集器、serial old 收集器、parallel old收集器、cms收集器、g1收集器)

2020-11-21

springboot-config-center.zip

Spring Cloud Config 是一个解决分布式系统的配置管理方案,它包含了 server 和 client 两个部分。 server 用来获取远程的配置信息(默认为 Git 仓库),并且以接口的形式提供出去; client 根据 server 提供的接口读取配置文件,以便于初始化自己的应用。 如果配置中心出现了问题,将导致灾难性的后果,因此在生产环境下配置中心都会做集群,来保证高可用。 此处配置高可用实际就是把多个配置中心(指定同一个 Git 远程仓库)注册到注册中心。

2020-11-11

闪聚支付项目课件.zip

随着移动支付的盛行,商业银行、第三方支付公司、其它清算机构、消费金融公司等众多类型的机构,都在为商户 提供网络(移动)支付解决方案。另一方面,用户的支付需求繁多,支付渠道已呈“碎片化”状态,并且“碎片化”程 度将逐渐加深。聚合支付顾名思义就是将目前主流的支付进行整合,形成第三方支付的聚合通道,也被称为“第四 方支付”。

2020-09-23

数据分布式事务算法.zip

分布式系统会把一个应用系统拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操 作,这种分布式系统环境下由不同的服务之间通过网络远程协作完成事务称之为分布式事务,例如用户注册送积分 事务、创建订单减库存事务,银行转账事务等都是分布式事务。

2020-09-13

20200701.txt

1)解释微服务调用时发生的雪崩效应,为什么要使用熔断器 2)解释为什么使用微服务网关 (1)微服务工程统一入口,方便前端调用 (2)集中处理权限问题等 3)为什么要使用消息总线? 修改配置后需要触发具体微服务的重新加载配置,自动重启微服务

2020-07-06

202006学习2.zip

在刚才的基本模型中,一个生产者,一个消费者,生产的消息直接被消费者消费。比较简单。 Work queues,也被称为(Task queues),任务模型。 当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越 多,无法及时处理。此时就可以使用work 模型:让多个消费者绑定到一个队列,共同消费队列中的消息。队列中 的消息一旦消费,就会消失,因此任务是不会被重复执行的。

2020-06-22

202006学习网址.zip

fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,第三方独立测试结果看这里:https://github.com/eishay/jvm-serializers/wiki 这里有jackson作者cowtowncoder等人对fastjson的性能评价:https://groups.google.com/forum/#!topic/java-serialization-benchmarking/8eS1KOquAhw Fastjson VS gson性能 fastjson比gson快大约6倍,测试结果上这里:https://github.com/eishay/jvm-serializers/wiki/Staging-Results

2020-06-10

JAVA设计模式 讲解.pdf

# The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement

2020-05-27

2020最新Java面试题及答案(带完整目录).pdf

这里所说的线程指程序执行过程中的一个线程实体。JVM 允许一个应用并发执行多个线程。 Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关系。当线程本地存储、缓 冲区分配、同步对象、栈、程序计数器等准备好以后,就会创建一个操作系统原生线程。 Java 线程结束,原生线程随之被回收。操作系统负责调度所有线程,并把它们分配到任何可 用的 CPU 上。当原生线程初始化完毕,就会调用 Java 线程的 run() 方法。当线程结束时

2020-05-27

dubbo527.docx

1、分布式基础理论 1.1)、什么是分布式系统? 《分布式系统原理与范型》定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed system)是建立在网络之上的软件系统。 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

2020-05-27

20200527-远程调用.txt

基于springboot的RestTemplate、okhttp和HttpClient对比 1、HttpClient:代码复杂,还得操心资源回收等。代码很复杂,冗余代码多,不建议直接使用。 2、RestTemplate: 是 Spring 提供的用于访问Rest服务的客户端, RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

2020-05-27

mongodb-new.rar

MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似 关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据 库。 具体特点总结如下: (1)面向集合存储,易于存储对象类型的数据 (2)模式自由 (3)支持动态查询 (4)支持完全索引,包含内部对象 (5)支持复制和故障恢复 (6)使用高效的二进制数据存储,包括大型对象 (如视频等) (7)自动处理碎片,以支持云计算层次的扩展性 (8)支持 Python,PHP,Ruby,Java,C, C#,Javascript,Perl 及 C++语言的驱动程序,社区中也提供了对 Erlang 及.NET 等平台的驱动程序 (9) 文件存 储格式为 BSON(一种 JSON 的扩展)

2020-05-23

mongodb.rar

MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库 和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是 类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。 MongoDB 的官方网站地址是: http://www.mongodb.org/

2020-05-23

shop-cloud.rar

如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。所以说,ELK是 旧的称呼,Elastic Stack是新的名字。

2020-05-22

个人学习总结.rar

因为系统中不止注册一个地方需要短信发送,因此我们将短信发送抽取为微服务:ly-sms-service,凡是需要的地方都可以使用。 另外,因为短信发送API调用时长的不确定性,为了提高程序的响应速度,短信发送我们都将采用异步发送方式,即: - 短信服务监听MQ消息,收到消息后发送短信。 - 其它服务要发送短信时,通过MQ通知短信微服务。

2020-05-21

spark课件.rar

Spark 是⼀个快速(基于内存), 通⽤, 可扩展的集群计算引擎 并且 Spark ⽬前已经成为 Apache 最活跃的开源项⽬, 有超过 1000 个活跃的贡献者.Spark 特点 快速 与 Hadoop 的 MapReduce 相⽐, Spark 基于内存的运算是 MapReduce 的 100 倍.基于硬盘的运算也 要快 10 倍以上. Spark 实现了⾼效的 DAG 执⾏引擎, 可以通过基于内存来⾼效处理数据流 易⽤ 通⽤ 可融合性

2020-05-17

demoopenid查询数据库.txt

如果成功获取就通过这个openid查询数据库,如果没有找到相应的记录,就说明这个用户第一次登录,我就为他创建一个新账户, 并把账户的userid和这个openi做一个关联存到另外一张表中,为什么不把openid也存到账户的信息表中呢?把openid和用户信息分开保存, 以后如果项目做平台移植时更方便。

2020-05-14

好客租房课件.rar

微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触 手可及”的梦想,用户扫一扫或搜一下即可打开应用。 全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。小程 序、订阅号、服务号、企业号是并行的体系。 2017年1月9日,张小龙在2017微信公开课Pro上发布的小程序正式上线。 2018年2月,微信官方发布公告称:已对涉及假货高仿、色情低俗和违规“现金贷”等超过2000个小程序,进 行永久封禁处理。 小程序是一种不用下载就能使用的应用,也是一项门槛非常高的创新,经过将近两年的发展,已经构造了新 的小程序开发环境和开发者生态。

2020-05-13

shop-cloud.rar

Spring Cloud集成相关优质项目推荐 这些项目是Spring Cloud官方项目或是对Spring Cloud进行了有益的补充以及基于Spring Cloud最佳实践。

2020-05-10

tomcat源码和solr基础代码.rar

当我们初学tomcat的时候, 肯定先要学习怎样启动tomcat. 在tomcat的bin目录下有两个启动tomcat的文件, 一个是startup.bat, 它用于windows环境下启动tomcat; 另一个是startup.sh, 它用于linux环境下tomcat的启动. 两个文件中的逻辑是一样的, 我们只分析其中的startup.bat.

2020-05-09

构建最基础的springboot项目代码

构建最基础的springboot项目代码 springboot的面世,成为Java开发者的一大福音,大大提升了开发的效率,其实springboot只是在maven的基础上,对已有的maven gav进行了封装而已,今天用最简单的代码快速入门springboot。

2020-05-04

myproject.rar

ssm、SpringCloud、Dubbo基础项目结构 1、Spring+SpringMVC+MyBatis的整合代码 2、springcloud常用组件的使用代码 3、dubbo基础项目的搭建代码

2020-05-04

空空如也

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

TA关注的人

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