- 博客(76)
- 资源 (9)
- 收藏
- 关注
原创 关于Spring为什么需要使用第三级缓存的原因分析
因为在bean对象实例后,还需要经过依赖属性的注入(populateBean方法)和初始化工作(initializeBean方法),特别是在初始化工作时,会进行调用BeanNameAware、BeanPostProcessor、InitializingBean、aop代理等一序列化工作,如果调用这些序列化工作的时候,就用代理对象来去执行调用,假设刚好这些方法被代理了,那就有可能执行这些初始化方法就包含有代理的逻辑在里面一起执行了,从而导致代理逻辑被误执行。它主要用于解决属性注入时的循环依赖问题。
2025-02-27 10:59:08
233
原创 MongoDB私人学习笔记
将数据进行分片,由多个服务器来分别承担分片数据,通过路由计算规则来觉得存储的数据所在的分区位置,故客户端对数据的读写操作,可能分到不同的片区由不同的服务器来处理,达到了负载均衡的能力,但是如果有个别片区的服务宕机了,那么就无法提供这一片区的数据服务,没有容灾备份的能力。OR条件: db.mycoll.find({$or:[{title:"mongo"},{state:"ok"}]}) 查询title="mongo" OR state="ok"的数据。
2025-02-25 15:48:13
509
原创 关于Activiti工作流框架的多种使用维度
(3)原子流程服务编排。通过定制各种常规基础服务功能,比如 身份证号码校验、用户登录校验、发送短信、发送邮箱等各种基础服务,然后给这些服务进行组合形成一个个对外服务的接口,比如一个用户登录接口,就可以由(短信验证码校验+客户有效性校验+身份证号码校验+颁发认证token+发送登录成功邮件通知)组合而成。在项目启动的时候通过加载数据库的组件组合配置表,动态生成actviti工作流的流程文件进行部署,然后对外提供的服务通过发起指定的Activiti流程实例,从而完成一整套组件的调用。(2)简易流程封装使用。
2025-02-25 14:48:35
338
原创 TIDB数据库的基本介绍
4、tidb的存储数据是通过Region(即数据key的一段范围集合)来存储,并且会将Region通过raft协议拷贝多个副本到其他TiKV节点上,进行数据容灾备份。官方文档非常详细齐全。但是其实tidb和mysql并没有共性,tidb的数据存储方式是使用kev-value的形式来存储的,和mysql是使用关系型表使用b+ tree来存储数据的。TiFlash:是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。
2025-02-11 09:38:16
425
原创 Java连接TIDB数据库出现通讯失败的原因分析
起初还以为是连接超时的问题,不断地调整连接池的配置,结果都还是于事无补,后来经过分析每个TIDB服务的集群节点日志,发现是TIDB的数据库资源不足,主动杀掉了数据库连接,后经过增加服务器资源问题得以解决。(3)如果 n milliseconds ago 中的 n 如果是 0 或很小的值,则通常是执行的 SQL 导致 TiDB 异常退出引起的报错,推荐查看 TiDB stderr 日志。(4)tidb的节点资源是否不足。例如当内存不够导致OOM异常时,也会出现上述的通讯连接失败错误信息,应特别关注。
2025-02-11 09:35:16
302
原创 ShardingJDBC私人学习笔记
在org.apache.shardingsphere.api和org.apache.shardingsphere.shardingjdbc.api 包中的类是面向用户的API,查询所有未支持方法,请阅读org.apache.shardingsphere.shardingjdbc.jdbc.unsupported包(4.X.X版本)。查询所有未支持方法,请阅读 org.apache.shardingsphere.driver.jdbc.unsupported 包(5.X.X版本)。
2025-01-24 10:43:20
809
原创 在spring项目中使用nacos作为配置中心的两种方式
d)在@NacosPropertySource配置了autoRefreshed为true后,还需要在@NacosValue也配置autoRefreshed为true,才能实现自动刷新。b)一个web应用里可以有多个@NacosPropertySource,并且当配置里面的值有重复时,会优先使用先加载的dataId配置。c)@NacosPropertySource注解的autoRefreshed是总控制,如果不配置为自动刷新,则此属性下的值都不会更新。--必须引入bootstarp依赖-->
2025-01-15 10:16:20
472
原创 关于nacos能实时检测到配置中心的配置有变更的原理
客户端通过ClientWorker类开启线程不断循环发起http请求,并且在请求的时候,增加Long-Pulling-Timeout请求头30秒,然后发起http请求并设置为30秒后请求超时。服务端在接收到http请求后,通过读取请求头的长轮询超时时间,设置在29.5秒后再进行响应,期间如果有发送修改配置则立即返回响应,否则就等到29.5秒后再响应客户端。此思想是减少http请求的次数,同时又能保证修改配置后的更新时效性,是一种折中的方案。
2025-01-15 10:14:59
167
原创 drool并发情况下动态加载规则错乱问题
在生产项目中使用drool,采用动态加载规则的方式,每次执行规则策略时先加载最新的规则记录,生产上偶发出现执行结果不正确,经过分析源码和排查,发现在并发加载规则的时候,KieServices类里面的存储对象getRepository()是使用单例的,存储的规则KieModule对象,使用的ReleaseId是默认的GAV版本,这就导致在并发加载的时候,KieModule规则被覆盖,最终导致创建出来的KieContainer引用的规则不正确。(2)指定ReleaseId版本号,不同策略生产不同的版本号。
2025-01-15 09:41:06
331
原创 Mybatis两种方式来调用sql语句
说明:方式一比较灵活,但是方式二比较符合面向对象的思想,代码比较简洁直观,推荐使用方式二。与Spring整合,也是优先使用方式二。
2024-09-11 13:49:12
659
原创 spring声明式事务@Transactional注解继承问题
使用spring的声明式事务时,如果使用@Transactional注解,一定要注意注解只对当前类或方法有效,对继承的方法是无效的。但是如果是父类增加了@Transactional,由于此注解增加了@Inherited继承原注解,所以对子类是有效的。
2024-08-22 15:50:50
445
原创 Docker私人学习笔记
docker是基于Go语言实现的开源容器项目。诞生于2013年年初,最初发起者是dotCloud公司。docker开源后受到业界广泛的关注与参与,目前已有80多个相关开源组件项目,逐渐形成了围绕docker容器的完整生态体系。本文主要记录docker起步学习。
2024-08-21 21:09:12
1408
原创 oql4j对象查询语言的使用
oql4j 全称 Object Query Language For Java,即java版本的对象查询语言,支持使用编写查询语言快速的搜索出符合条件的对象,简化对象的过滤处理操作。
2024-08-21 20:59:23
221
原创 oql4j对象查询语言
oql4j 全称 Object Query Language For Java,即java版本的对象查询语言,支持使用编写查询语言快速的搜索出符合条件的对象,简化对象的过滤处理操作。目前支持where条件的过滤。
2024-08-21 20:41:36
1251
1
原创 tk.mybatis的批量插入扩展
当前的tkmybatis插件,默认的批量插入功能,是需要自动生成主键的(tk.mybatis.mapper.common.special.InsertListMapper),不能通过调用者自己指派主键的形式。经过分析和改造后,在原来InsertListMapper的形式上,额外扩展了允许自己指派主键的批量插入。...
2022-07-20 09:02:06
4217
原创 dom4j私人学习笔记
俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步!此笔记主要是dom4j-1.6版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。一、基础知识:1、xmlTool的功能是可以在java中操作xml文件。使用SaxReader读取和操作xml文件,必须导入dom4j-1.6.1.jar
2022-05-19 10:48:33
769
1
原创 Activiti工作流私人学习笔记
一、基础概念: 1、activiti是个开源免费的工作流程框架,遵循BPMN2(Business Process Modeling Notation - BPMN业务流程模型注解)的规范,其 简约思想的设计使得activiti非常轻量级,数据库层使用MyBatis,并且能与Spring完美的集成。目前activiti的新版本已经7.0了, 但是此处的笔记是基于6.0.0版本。 官方网站:https://www.activiti.org 下载地址...
2022-04-15 08:52:59
718
原创 hutool工具私人学习笔记
一、基础概念: 1、hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法, 让Java语言也可以“甜甜的”。Hutool最初是作者项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能, 并广泛学习其它开源项目精髓,经过作者的整理修改,最终形成丰富的开源工具集。hutool工具包是国内开发者创建的。 官方网址:https://hutool.cn/ 文档地址:https://hutool.cn/docs...
2022-04-15 08:51:03
1539
原创 Quartz job completed but the thread remains blocked(quartz定时任务一直处于堵塞状态)
在项目中使用了quartz的分布式功能,两个节点协调运行定时任务,近期发现quartz的有个定时任务经常会一直处于blocked堵塞状态,后续一直都没有再触发,看日志也没任何错误信息,一直在纳闷。经过一系列的研究,发现定时任务的逻辑里是需要通过http请求外部系统的,使用的apache的httpclient框架,当时没有设置连接超时和读取超时时间,仔细看了httpclient框架...
2018-06-27 14:19:46
4348
1
原创 算法题:解密(楚楚街2016招聘笔试)
名气笔试:楚楚街2016招聘笔试(解密) 题目描述 亮亮深吸一口气,小心地将盒子打开,里面是一张地图,地图上除了一些奇怪的字母以外没有任何路线信息,这可让亮亮犯了愁,这些字母代表了什么意思呢? 亮亮绞尽脑汁也想不出什么思路,突然,亮亮眼前一亮,“我可以把这些字母所有的排列方式全部写出来,一定可以找到答案!”于是,亮亮兴奋的开始寻找字母里的秘密。 输入描述: 每组数据输入只有一行,是一个由不...
2018-04-19 10:18:30
415
原创 算法题:旅途(楚楚街2016招聘笔试)
名企笔试:楚楚街2016招聘笔试(旅途) 题目描述 原来是要到醋溜站台乘坐醋溜快车到醋溜港”,亮亮解出了地图隐藏的秘密,赶紧奔向醋溜站台,但到了之后,亮亮忧桑地发现,从醋溜站台到醋溜港沿途的每个车站都有很多美女被他飒爽的英姿所吸引,只要经过车站就会被这些漂亮的女孩搭讪,但是现在亮亮一心想要寻找楚楚街而没空去搭理她们,所以亮亮希望在抵达醋溜港的时候被搭讪的次数最少。问亮亮抵达醋溜港最少会被搭讪多少次...
2018-04-18 15:44:22
307
原创 算法题:字符集合(华为校招笔试题)
名企笔试:华为校招笔试题(字符集合) 题目描述 输入一个字符串,求出该字符串包含的字符集合 输入描述: 每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。 输出描述: 每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。 输入例子: abcqweracb 输出例子: abcqwerjava版本的代码实现:pack...
2018-04-18 14:16:53
1089
2
原创 算法:子序列(完美世界招聘笔试)
名企笔试 : 完美世界招聘笔试(子序列) 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱) 例如:给定一个长度为8的数组A{1,3,5,2,4,6,7,8},则其最长的单调递增子序列为{1,2,4,6,7,8},长度为6。 输入描述: 第一行包含一个整数T,代表测试数据组数。 对于每组测试数据: N-数组的长度 a1 a2 … an (需要计算的数组) 保证...
2018-04-18 11:52:12
409
原创 算法题:升级之路(网易招聘笔试)
名企笔试:网易招聘笔试(升级之路) 题目描述 小易经常沉迷于网络游戏.有一次,他在玩一个打怪升级的游戏,他的角色的初始能力值为 a.在接下来的一段时间内,他将会依次遇见n个怪物,每个怪物的防御力为b1,b2,b3…bn. 如果遇到的怪物防御力bi小于等于小易的当前能力值c,那么他就能轻松打败怪物,并 且使得自己的能力值增加bi;如果bi大于c,那他也能打败怪物,但他的能力值只能增加bi 与c的...
2018-04-18 10:50:42
420
原创 算法题:回文串(蘑菇街2016招聘笔试)
名企笔试:蘑菇街2016招聘笔试(回文串) 题目描述 给定一个字符串,问是否能通过添加一个字母将其变为回文串。 输入描述: 一行一个由小写字母构成的字符串,字符串长度小于等于10。 输出描述: 输出答案(YES\NO). 输入例子: coco 输出例子: YESjava版本的代码实现:package cn.cat.algorithm;public class Palin...
2018-04-18 09:17:56
344
原创 算法题:加油站
算法题:加油站 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油gas[ i ],并且从第 i 个加油站前往第 i+1 个加油站需要消耗汽油cost[ i ]。 你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。 写一个函数求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。 注意事项: 1、数据保证答案唯一。 2、O(n)时间和...
2018-04-17 13:59:33
2130
原创 算法题:螺旋矩阵
算法题:螺旋矩阵 给定一个包含 m x n 个要素的矩阵,(m 行, n 列),写一个函数按照螺旋顺序,返回该矩阵中的所有要素。 格式: 输入依次输入两个整数 m 和 n,和一个 m x n 的整数数组,最后输出按照螺旋顺序返回的矩阵数组的元素。 样例输入 m = 3 n = 3 [ [ 1,2,3 ], [ 4,5,6 ], [ 7,8,9 ] ] 样例输出 [ 1,2,3...
2018-04-17 09:09:19
2428
原创 算法题:奇偶分割数组
写一个函数分割一个整数数组,使得奇数在前偶数在后。 挑战: 在原数组中完成,不使用额外空间。 格式: 输入行输入一个整数数组,最后输出分割后的数组。 样例输入 [ 1, 2,3,4 ] 样例输出 [ 1,3,2,4 ]java版本的代码实现:package cn.cat.algorithm;public class OddEvenSplit { /** * 分析:跟普...
2018-04-16 16:51:59
616
原创 颜色分类
算法题:颜色分类 给定一个包含红,白,蓝且长度为 n 的数组,写一个函数实现将数组元素进行分类使相同颜色的元素相邻, 并按照红、白、蓝的顺序进行排序。我们可以使用整数 0,1 和 2 分别代表红,白,蓝。 注意事项: 1、不能使用代码库中的排序函数来解决这个问题。 2、排序需要在原数组中进行。 格式: 第一行输入一个由 0,1,2 组成的数组,...
2018-04-16 14:10:38
518
原创 乘积最大子序列
算法题:乘积最大子序列 写一个函数找出一个序列中乘积最大的连续子序列,其中序列中至少包含一个数)。 格式: 第一行输入一个数组,最后依次输出最大乘积的子序列及其乘积的大小。 样例输入 [ 2,3,-2,4 ] 样例输出 [ 2,3 ] 6java版本的代码实现:package cn.cat.algorithm;import java.util.ArrayList;import...
2018-04-16 14:07:05
368
根据数据库表生产word表结构说明文档
2018-05-16
我也能做CTO之程序员职业规划
2015-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人