自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(338)
  • 资源 (22)
  • 收藏
  • 关注

原创 Spring源码中关于抽象方法且是个空实现这样设计的思考

通过提供一个默认的空实现,Spring 避免了强制子类实现该方法的负担,同时允许需要扩展的子类(如 ClassPathXmlApplicationContext 或 FileSystemXmlApplicationContext)根据需要重写它。在 AbstractApplicationContext 中,refresh() 方法是一个模板方法,它定义了上下文刷新过程的整体流程,而 onRefresh() 是其中的一个可扩展的钩子方法。它不是上下文刷新的核心步骤,因此可以提供一个空实现。

2025-04-20 23:02:50 527

原创 关于Redis中的事务的理解

可以看到Redis中关于事务的指令主要包含exex、multi、unwatch、watch等。

2025-04-19 16:26:30 267

原创 定时任务分批删除大表数据策略

随着时间的积累,数据量越来越大,其中最大的一个表数据量达到了22亿,因此需要对这些临时表进行定时清理,节省数据库存储空间和提升查询效率。分批执行的最大时间不超过默认配置时间2h,若在2h内还没有执行完成,则终止删除,等下次调度时间再重新发起执行删除操作。(1)新建相同表结构的数据表,新表补充creation_date的索引,利用同步工具同步最新15天的数据到新表。需要保留最近15天的数据且数据量太大,不能直接delete,所以采用定时任务分批进行删除策略。每次删除的最大数量按照10000条进行限制。

2025-04-19 10:09:26 291

原创 LeetCode-98. 验证二叉搜索树

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。

2025-04-05 23:53:16 299

原创 爬楼梯问题-动态规划

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

2025-04-05 23:02:55 265

原创 利用MQ自动取消未支付超时订单最佳实践

当消息写入到 Broker 后,不会立刻被消费者消费,需要等待指定的时长后才可被消费处理的消息,称为延时消息。

2025-03-06 23:04:59 285

原创 记录一次利用条件索引优化接口性能的实践

某表数据量达到4000w,需要每天定时任务处理20w条。前2周内SQL执行无任何问题,非常快,效率比较高。随着处理完的数据量变大,处理完数据状态设置为1,SQL执行效率越来越差,已经达到了惊人的4.6秒。SQL如下:其中表A的expired_date是有索引的。

2025-03-06 22:14:54 236

原创 基于本地事务表+MQ实现分布式事务

分布式事务解决方案有许多比如二阶段提交、TCC、最大努力通知、Saga事务等,本文介绍本地消息表+MQ这种方式解决分布式事务消息最总一致性问题。目前利用本地消息表+MQ方案实现最终消息一致性的比较多,它的核心思想是,将分布式事务拆分成本地事务进行处理,不同事务之间通过消息表和MQ通信,最后通过定时任务扫描失败的数据进行重试,当在有效重试次数限制内,再次重试回调失败的数据,最终实现消息重复发送,达到一致性。本地消息表实现最终一致性。将rocketmq-dashboard导入到idea中,在idea编译启动。

2025-01-24 23:36:04 1295

原创 【CompletableFuture实战】

过去的一年,匆匆忙忙,换了一次工作,写博客的习惯就落下了,总之,有点懈怠。希望今年能重拾信心,步入正规!CompletableFuture的用法网上资料颇多,我这里就简单记录下自己项目中的真实场景(代码模拟思路),算是抛砖引玉~return;//模拟某线程执行业务,比如创建用户});//模拟某线程执行业务,比如根据ID列表查询用户});//等待两个线程执行完毕,最后执行主线程。

2025-01-18 09:49:24 315

原创 SpringBoot集成JWT和Redis实现鉴权登录功能

目前市面上有许多鉴权框架,鉴权原理大同小异,本文简单介绍下利用JWT和Redis实现鉴权功能,算是抛砖引玉吧。主要原理就是“

2024-12-14 16:46:55 1123

原创 使用CAS解决项目中高并发时数据一致性问题

最近项目中需要对退网资源进行扣减,由于项目中并没有分布式锁也没有引入Seta等一系列原因,所以采用CAS乐观锁解决高并发资源扣业务问题。

2024-12-01 08:04:15 190

原创 二叉树的层序遍历

/ 定义nextNodeList和curLevelList,每遍历一层,就将当前层节点curList添加到结果res中// 存储当前层的节点// 每遍历一层,就将当前层节点curList添加到结果res中while(!

2024-11-17 23:01:21 454

原创 leetcode-23.合并K个升序链表

给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。

2024-10-07 23:03:12 227

原创 LeetCode-25. 合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。(0 <= 链表长度 <= 1000)l1l2。

2024-09-28 15:47:39 391

原创 SQL高可用优化-优化SQL中distinct和Where条件对索引字段进行非空检查语句

最近做一个需求,关于SQL高可用优化,需要优化项目中的SQL,提升查询效率。

2024-09-28 00:52:22 643

原创 union和union all的区别,别再傻傻分不清楚了!

union会按照字段的顺序进行排序;union all 只是将两个结果集合并后就返回。从效率上讲,union all要比 union快的多,所以如果确定合并的两个结果集中没有重复且不需要排序就用Union all。union all是直接连接,取到的是所有值,记录可能有的重复;union是取唯一值,记录没有重复。union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果集全部显示出来。所以union在进行表链接后会筛选掉重复的记录,union all不会去除重复记录。

2024-09-14 23:01:44 5237

原创 分页查询结果并将结果分批保存,防止内存溢出

通过分页查询数据,然后再将分页查询的结果批量进行保存,防止一次性查询数据过大,导致内存溢出。

2024-09-09 23:57:22 367

原创 SaToken认证授权快速上手

SaToken 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。Sa-Token 旨在以简单、优雅的方式完成系统的权限认证部分。SaToken官网,原理如下自定义接口实现SaToken框架的StpInterface接口,自动帮我们进行执行业务逻辑(获取权限集合,获取角色集合)/*** 自定义权限认证接口扩展,Sa-Token 将从此实现类获取每个账号拥有的权限码。

2024-09-08 17:00:48 2517

原创 用空间换时间思路解决生产环境慢SQL性能问题总结

有个报表业务,需要查询当天之前的数据,涉及到6张表的关联查询,有些关联字段并没有索引而且有张表数据量达到了千万级,这个接口查询响应时间平均6~7分钟,别说用户忍不了,我们开发自己也真的忍不了!由于是小众业务场景,其它开发任务比较紧急,所以一直做为遗留技术债进行排期修复,这次终于把修复此慢SQL接口纳入开发管道中了!

2024-09-07 00:00:14 332

原创 【利用模板模式和责任链模式实现数据校验】

*** 网元调整数据校验抽象类**/@Component/*** 基础校验参数是否为空*//*** 网元校验信息初始化处理器**/@Component@OverrideSystem.out.println("执行校验node是否在数据库中业务逻辑......");// 初始化校验结束,进入下一个节点next(node);/*** 网元字段权限校验处理器**/@Component@Override。

2024-08-10 13:52:46 355

原创 【高可用】利用AOP实现数据库读写分离

*** 动态数据源*//*** ThreadLocal 用于提供线程局部变量,在多线程环境可以保证各个线程里的变量独立于其它线程里的变量。* 也就是说 ThreadLocal 可以为每个线程创建一个【单独的变量副本】,相当于线程的 private static 类型变量。*//*** 决定使用哪个数据源之前需要把多个数据源的信息以及默认数据源信息配置好* @param targetDataSources 目标数据源。

2024-07-23 22:49:58 463

原创 利用队列Queue或栈Stack解决字符数组转换运算题

相同的特殊运算符,从左到右顺序计算。用例保证@,$,左右一定存在数字,且数字不存在前导为0。给定包含特殊运算符号@,$ ,转换规则如下。其中x,y都是非负整数且@优先级高于 $。

2024-06-30 18:55:56 207

原创 利用OPT算法解决最短访问次数问题

数据库缓存,模拟访问规则如下:当查询值在缓存中,直接访问缓存,不访问数据库。否则,访问数据库,并将值放入缓存。若缓存已满,则必须删除一个缓存。给定缓存大小和训练数据,依次模拟访问这组数据,请分析在此访问规则下最少的数据库访问次数输入2输出4。

2024-06-30 18:24:33 315

原创 利用BFS或动态规划解决路径算法问题

令 f[i][j]表示从左上角到坐标(i,j)的路径数字和最小值,原问题即可被划分为多个求最优值的子问题,且由于每次只能向下或向右移动一步,因此。此题需要求出从左上角出发,到达坐标(m,n)的路径数字和最小值。因此不难想到,子问题就是从左上角出发,到达坐标(i,j)的路径数字和最小值。给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。输入:grid = [[1,3,1],[1,5,1],[4,2,1]]解释:因为路径 1→3→1→1→1 的总和最小。

2024-06-30 09:19:14 483

原创 利用BFS解决每个零售店到仓库最短距离之和问题

矩阵中有3种类型:0仓库,-1障碍,1零售店。现在每个零售店要去距离它最近的仓库取货物,请计算出所有零售店到最近仓库距离之和,假设矩阵中每个单元格之间距离为1。如果遇到障碍物,则表示无法通过。可以在单元格上下左右移动。注意无法到达仓库的零售店不参与计算没有零售店或者没有仓库,则返回0。

2024-06-25 23:38:35 364

原创 【课程表算法题--拓扑排序】

你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1]。给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]]输出: true解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。示例 2:输入: 2, [[1,0],[0,1]]输出: false。

2024-06-22 07:48:17 307

原创 记录下“where条件中select子查询“的优化

由于项目中流水线门禁规则的升级,导致新提交的sql代码where条件含有select子查询,导致codecheck扫描校验不通过,特此需要整改,简单记录下。

2024-06-12 07:28:20 292

原创 利用单调栈思路解决递增关系数据问题

在对数据进行排序的过程中,通常采用取1个数作为主元,通过比较交换,把比主元小的数挪到它左边;把比主元大的元素挪到右边。现给定一个划分后的正整数序列,请问有多少个元素可能是排序过程中选中的主元?并按顺序输出这些值。通过暴力解法,分别比较每个数的左边和右边值,如果当前值大于左边值且当前值小于右边值,则保存此值到列表中,最后对列表排序输出。由于满足主元的条件:其右边值一定大于它,其左边值一定小于它,相当于有一个隐藏的递增关系,可以考虑单调栈,此解法更加高效。

2024-06-08 16:47:51 259

原创 校验参数个数工具类

项目中有个需求:前后端参数一致性校验,在某业务场景下后端代码需要校验参数个数,因此设计了1个工具类方便大伙使用,特此简单记录下。

2024-06-07 23:47:44 636

原创 自定义对象池BasePooledObjectFactory的使用

System.out.println("ThreadName:" + Thread.currentThread().getName() + " 对象:" + name + "正在被创建。。。。。。");System.out.println("ThreadName:" + Thread.currentThread().getName() + " 对象:" + name + "正在被销毁。。。。。。");

2024-06-01 00:21:51 851 1

原创 关于模糊查询业务的一点思考

注意点:在业务数据量少的场景下,这样写没问题。但是如果数据量非常多,这样首先查询性能非常耗时,而且查询出来太多数据也不太符合公司内人员敏感信息安全规范和期望结果。所以要对查询结果处理,我这里的处理方式就是利用limit限制查询条数,这样既符合敏感信息安全规范,也一定量提升了查询效率,避免对服务器内存造成过大压力。最近项目上线了一个小的功能,业务逻辑非常简单,就是人员联想功能:2张表的关联模糊查询。实现方案:就是无脑在sql中利用like模糊查询。

2024-05-20 20:27:44 169

原创 通过AOP实现项目中业务服务降级功能

最近项目中需要增强系统的可靠性,比如某远程服务宕机或者网络抖动引起服务不可用,需要从本地或者其它地方获取业务数据,保证业务的连续稳定性等等。这里简单记录下业务实现,主要我们项目中调用远程接口失败时,需要从本地数据库中某表获取数据(本地数据库某表每天定时同步远程接口数据)。调用大致逻辑:前端–>服务A–>服务B(这里时公服,用于维护权限、人员等信息)其中服务B调用远程服务故障,进行服务降级,从服务B的本地数据库查询数据。项目中实际是通过故障注入方式,模拟远程接口宕机。这里简单通过除法异常模拟故障。二、测

2024-05-08 22:11:05 421

原创 利用策略模式+模板方法实现项目中运维功能

/ 这里只实现了查询方法,其他增加、删除、修改可以依次实现List<?IDataOperationService定义增删改查模板方法List<?

2024-05-05 05:48:01 794 1

原创 【计算数组连续值的移动距离】及【计算遥控器按键总次数】

【代码】【计算数组连续值的移动距离】及【计算遥控器按键总次数】

2024-01-28 18:57:29 510

原创 【字符串增加偏移量转换】及【贴瓷砖问题】

【代码】【字符串增加偏移量转换】及【贴瓷砖问题】

2024-01-23 23:38:48 673

原创 【连续数之间的数字和最大值】及【字符串进制转换】

【代码】【连续数之间的数字和最大值】及【字符串进制转换】

2024-01-23 23:07:06 514

原创 一道使用LinkedList和Stack解决的算法题

学校的自助午餐提供圆形和方形的三明治,分别用数字 0 和 1 表示。所有学生站在一个队列里,每个学生要么喜欢圆形的要么喜欢方形的。餐厅里三明治的数量与学生的数量相同。所有三明治都放在一个 栈 里,每一轮:如果队列最前面的学生 喜欢 栈顶的三明治,那么会 拿走它 并离开队列。否则,这名学生会 放弃这个三明治 并回到队列的尾部。这个过程会一直持续到队列里所有学生都不喜欢栈顶的三明治为止。给你两个整数数组 students 和 sandwiches ,其中 sandwiches[i] 是栈里面第 i

2024-01-16 07:04:23 816

原创 不同整数的最少数目和单词直接最短距离

今天分享两个关于“最小、最短”的算法题,废话少说,show me your code!

2024-01-16 05:51:25 508

原创 处理含退格的字符串

字符串如果包含$,则将 $ 前的字符剔除,最后保留剔除后的字符串,输出其长度。利用String Builder对字符串处理。输出3,因为剔除后的字符串为abd。或者利用Stack对字符串处理。

2024-01-15 09:15:00 421

原创 数组中根据刷新时间间隔计算对应值

特斯拉发射火箭,从start时刻开始(包括start),由于发射台需要准备时间才能发射,因此需要period个单位时间就会有发射机会(不限制发射数量,只要若干火箭就绪则可以发射)。比如[[1,2],[4,6]],第一个订单在1时刻收到,需要2个单位时间准备就绪,在时刻3才能发射;现在有n个订单需要发射,用二维数组表示,即int[][] launches,第一个数字代表接收到该订单时刻,第二个数字代表准备就绪需要花费的时间。分享个关于数组中根据刷新时间间隔计算对应值的问题。未完待续-----------

2024-01-14 09:10:18 446

dubbo-admin-2.5.7.war.7z

dubbo-admin监控工程

2021-07-29

dubbotest1-master.7z

springboot整合dubbo+zookeeper https://blog.csdn.net/wangzibai/article/details/100106261

2021-07-29

dubbo-admin-2.5.4.war.7z

web页面服务查看,下载dubbo-admin监控工程,将war包解压后放入tomcat的webapps目录下,将\webapps\dubbo-admin-2.5.4\WEB-INF\dubbo.properties修改成自己的zookeeper地址即可

2021-07-29

Linux中安装Oracle12c介质.docx

Linux环境中安装Oracle12C介质操作手册,详细记载了安装过程以及安装问题。利用Xmanager的Xstart启动图形化安装界面进行安装,清晰明了,操作简单,本人亲测可行!

2020-08-03

springboot.7z

SpringBoot整合Mybatis完整详细版,通过连接MySQL,实现增删改查功能。例子比较简单是非常适合入门练手。项目启动之后,直接在浏览器输入访问地址即可。

2020-07-18

springboottest1.7z

SpringBoot整合Mybatis完整详细版,通过连接MySQL,实现增删改查功能。例子比较简单是非常适合入门练手。项目启动之后,直接在浏览器http://localhost:8086/testBoot/getUser/2即可

2020-07-17

SpringShiroDemo.7z

SpringMVC与Shiro整合,实现登录授权功能。通过使用账号admin和密码admin登录进入,否则需要登录才能访问。登录链接地址:http://localhost:8080/ShiroDemo/login.jsp

2020-06-04

基于MapReduce的Apriori算法并行化改进

基于MapReduce的Apriori算法并行化改进,包含改进思路与代码实现。该文档提供了详细的设计思路和方法,具有一定的借鉴意义,互相学习,互相进步!

2017-11-08

基于MapReduce的Apriori算法

基于MapReduce的Apriori算法,关联规则并行化思路与解决方案。该方法具有一定的借鉴意义,可以用来进行学术研究。

2017-11-08

zookeeper安装配置

zookeeper安装配置,步骤明确而详细。此文档为培训班内部培训资料!

2017-11-08

详细配置Hbase

hbase资料整理PPT,资料详细。为内部培训课程PPT,请勿转载!

2017-11-08

WebService配置

WebService配置详细配置步骤。按照操作文档提示步骤,配置webservice接口,欢迎指正,亲测可行!

2017-11-08

基于MapReduce的Apriori算法代码及其使用

基于MapReduce的Apriori算法代码及其使用,内含源代码及其实现。数据集为http://fimi.ua.ac.be/data/

2017-11-08

基于MapReduce的Apriori算法代码

mapreduce实现apriori算法,亲测可行!需要自行下载数据集。数据集链接如下http://fimi.ua.ac.be/data/

2017-11-08

《机器学习实战》源代码

《机器学习实战》源代码

2017-06-29

数据挖掘经典算法

数据挖掘经典算法,详细介绍,原理剖析。

2017-06-29

前端打印插件

前端打印插件,简单易用

2017-06-29

Myeclipse-2014-破解文件

Myeclipse-2014-破解文件

2017-06-29

echarts.min.js

优秀的报表制作插件,美观而简洁

2017-06-29

bootstrap-3.3.7

一款非常优秀的前端插件

2017-06-29

python-2.7.10.amd64

python2.7

2016-07-10

cmiadapter

1111

2016-07-10

空空如也

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

TA关注的人

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