自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 资源 (29)
  • 收藏
  • 关注

原创 集成分布式锁架包(MySQL、Redis、Zookeeper)

疫情当下,大环境不好,自己又去了一家令人非常失望的单位,一直在996加班忙于业务代码,技术方面几乎等于零成长。但是,作为一个Coder,必须要挤出时间去学习与总结,不然就会被无情的淘汰。Coder加油吧!

2023-01-02 10:23:33 777 1

原创 基于Netty实现SpringMVC

前言:Netty是一个非常优秀的异步事件驱动的网络通信框架,它本身就支持HTTP协议栈的开发。由于Netty是对Java NIO的封装,因此基于Netty开发的HTTP协议栈也是异步非阻塞的。并且Netty相对传统的Web容器(例如Tomcat、Jetty)会更加轻量、小巧、定制化开发也很灵活。SpringMVC是一个轻量级的Web框架,它可以把用户使用浏览器产生的HTTP请求解析成视图,再响应给浏览器。实现该过程的最重要的一个组件是DispatcherServle...

2022-05-03 11:00:30 1672 2

原创 hanxiaozhang 后台管理系统

从开始参加工作到开始准备的系统之前,我一直想自己独立完成一个系统的开发,检验一下自己的工作学习成果。2020年工作中全面的使用到SpringCloud全套相关技术,萌生了使用SpringCloud技术栈作为这个系统后端的实现。2021年工作中又学习了React相关的前端框架,我就放弃打算前端使用Vue技术栈的想法。这个系统从2020年9月份开始到2021年4月份封板(中间也停过小4个月),花费了不少的私下时间,算是对自己工作学习的一个总结吧。

2021-04-22 08:41:29 6191

原创 hanxiaozhang带你学SpringCloud

目录:0. SpringCloud练习项目git地址:https://gitee.com/hanxinghua2017/srpingcloud_demo.git;1.Zuul网关的请求与响应日志打印、服务回退和异常处理;2.SpringCloud的异常处理体系(一);3.SpringCloud的异常处理体系(二);4.SpringCloud的异常处理体系(三);5.SpringCloud Greenwich版本集成Springboot Admin监控和管理平台;6....

2020-11-26 08:25:12 344

原创 LinkedList源码,你想了解一下不?

前言:上回咱们介绍了ArrayList源码,详情见《ArrayList源码,你想了解一下不?》文章,今天来介绍一下LinkedList源码,LinkedList源码也不是很难理解,它的底层用的双链表,如果你对常用的数据结构有所了解,你在学习理解LinkedList源码中关于链表的相关方法就很容易。LinkedList与ArrayList都实现了List接口,如果你原来看过ArrayList源码,你在学习理解LinkedList源码中关于List接口相关方法就很容易。听我这么半天忽悠,你是不是也想学...

2020-06-03 21:22:08 955 2

原创 业务上第一次使用多个设计模式的组合(策略模式+缺省适配器模式+模板方法模式+简单工厂模式)

前言:从第一次系统地阅读《Java与模式》这本书已经过去一年多了,我一直没有有意的去使用设计模式,原因有两点:一是,对设计模式理解有些点不深入,使用起来比较吃力;二是,没有一个合适场景去使用设计模式。最近,我在负责一个新系统的对接钉钉流程中心,调用相关流程的开发工作,我在之前已经钉钉流程对接2次了,都这块业务理解比较准确和成熟。如果要是搬用原来的代码没有问题,但是原来的写法复用很差,每次新增一个流程,都有把原来的接口复制一遍,然后再对每一个方法中部分代码进行修改。基于以上背景,我觉得应该使用设计模式,对

2020-05-16 13:11:07 1864 1

原创 Spring事务的传播规则以及各种场景下事务的生效情况

前言:从大学学完《Web程序设计》这门课之后,我一直在使用Spring这个框架,它的优点和好处不言而喻。随着时间的推移,我对这个框架的理解也不断加深,自己也有了一些使用的技巧与经验,下面我将分享关于Spring事务中的一些知识,希望对大家的工作、学习、面试有一些帮助。分享的内容主要包括事务何时生效、事务的传播规则和嵌套事务的使用等。如有偏差,请君不吝赐教!一、相关知识点(这里只写文中用到的知识点):1.物理事务与逻辑事务:物理事务:事务性资源实际打开的事务,如数据库的Connection打开

2020-05-10 11:37:41 1984 1

原创 基于Springboot+Bootstrap的文件管理全套解决方案(文件列表、上传、预览、下载、删除、打包下载等)

前言:最近,不知道是不是最后一搏,事业群上层领导要求7天内完成ABS项目中保理系统的一期开发。需求评审会后,我发现各个功能模块都有大量的文件材料展示与上传,为了提高开发效率,我与组长商量,我先开发文件模块,为其他同事提供公共方法,减少重复工作。使用的前端技术栈:Bootstrap、Bootstrap-table、layer.js、layui.js、jquery.media.js设计思路...

2020-05-01 20:53:28 8962 8

原创 业务上第一次遇到MySQL更新锁表超时(Lock wait timeout exceeded try restarting transaction)

前言:最近,我在公司开发某个业务功能,需要使用钉钉审批流,在最后一个结点审批通过后,使用MQ监听回调信息,根据回调信息,更新订单状态、触发系统还款、保存相关审批记录。如果在完美情况下,这一套流程没有任何问题,但是因为历史数据等原因,触发系统还款可能会失败。此时,审批流程已经正常结束了,不可能再走一遍流程。为了解决这样的问题,我们订单状态的“已还款”拆成“审批通过”和“已还款”,这两个结点在完美...

2020-04-18 21:32:19 2080

原创 一篇文章了解MySQL联合索引

一、什么叫联合索引?由两列或以上列组成的索引成为联合索引,联合索引又叫复合索引。相关概念:索引覆盖:联合索引中包含了需要查询的所有数据,不需要进行二次查询,直接返回数据。最左索引匹配原则:使用联合索引时,遵循从左边开始匹配联合索引中列,MySQL的SQL的执行过程:MySQL的优化器:...

2020-03-15 10:05:29 2738 1

原创 一套超好用的“Excel导入导出+多线程处理导入数据+多线程事务回滚”的模板方法

Excel导入导出+多线程处理导入数据+多线程事务回滚的模板方法二、功能演示:1.Excel数据:数据说明:第一条数据完整,可以成功导入;第二条数据无姓名,业务逻辑姓名不允许为空,会导出到错误Excel中;第三条数据无姓名无类型,业务逻辑姓名类型不能为空,会导出错误Excel中。2.导入页面:选择相关Excel,点击导出测试按钮:3.正确数据入库:4.错误数据导出成Excel并有提示:...

2020-03-08 21:14:44 14783 14

原创 springboot聚合项目(自己平时的一些总结)

内容(持续更新):0. springboot-utils 常用工具类汇总(bean拷贝,空值不用复制、Excel导入导出工具等)1. springboot-dynamic-datasource AOP多态数据源切换+atomikos分布式事务 201912282. springboot-httpclient httpclient各种使用方法举例3. springboot-red...

2020-01-30 15:07:23 1671

原创 使用SpringBoot Starter完成发送异常邮件SDK

前言: 前一阵学了SpringBoot发送邮件、SpringBoot制作Starter和自定义业务异常等知识,我突发奇想,我可以制作一个能捕获项目所有异常,通过邮件形式把异常信息发送给开发者的Starter,开发者实现只需要配置相关信息,就可以使用。实现无侵入性编程,支持热拔插使用。正文:具体相关知识点:SpringBoot中Starter知识、SpringBoot驱动配置文件...

2019-09-22 10:11:31 1137 1

原创 hanxiaozhang带你学Docker

目录 安装docker Docker创建镜像之docker commit命令与docker build命令 Docker之开启远程访问 Docker 镜像与容器存储目录结构精讲 Docker工具之IDEA中Docker插件的使用 Docker工具之Daocloud的使用 Docker之部署Nginx容器及Nginx配置文件讲解 ...

2019-08-04 19:56:51 445

原创 Netty面试重点-2

select ( oldWakenUp) 方法解决了 Nio 中的 bug,selectCnt 用来记录 selector.select方法的执行次数和标识是否执行过selector.selectNow(),若触发了epoll的空轮询bug,则会反复执行selector.select(timeoutMillis),变量 selectCnt 会逐渐变大,当selectCnt 达到阈值(默认512),则执行 rebuildSelector方法,进行selector重建,解决cpu占用100%的bug。

2025-10-18 11:03:17 1032

原创 Netty面试重点-1

NioEventLoop每次循环的处理流程都包含:事件轮询(select)、事件处理(processSelectedKeys)、任务处理(runAllTasks)这个几个步骤,是典型的Reactor线程模型的运行机制。NioEventLoopGroup相当于1个事件循环组,它包含多个事件循环NioEventLoop,每个NioEventLoop包含1个selector和1 个事件循环线程。Netty是基于NIO的,它封装了JDK的NIO,让我们使用起来更加方法灵活。

2025-10-05 16:45:20 920

原创 网络与IO面试重点-2

http2.0必须基于HTTPS,有公司没有使用HTTPS,HTTPS一般交给Nginx来实现,还需要额外配置等。TCP链接的数量是由浏览器本身限制的,不同浏览器不同,chorme默认约6个。同一个域名下,会建立多少个TCP链接?为什么需要 CA 认证机构颁发证书?不同HTTP版本,HTTP请求不同。为什么http2.0还没有普及?为什么数据传输是用对称加密?HTTPS请求过程:**

2025-10-01 09:22:21 896

原创 运维面试重点

概念:**它是一个能够把开发的应用程序自动部署到容器的开源引擎。Docker思想:集装箱、标准化(运输方式、存储方式、 API接口)、隔离。镜像:是轻量的、可执行的独立软件包。它包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置等。容器:将软件打包成标准化单元,它以用于测试、交付和部署。容器与镜像的关系:容器是镜像运行时的实体,它两的关系像Java中的类和实例,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

2025-09-27 00:15:35 895

原创 Linux面试重点

创建文件夹:mkdir -p /usr/local/nginx(-p:如何父目录不存在,就创建它)创建文件:touch /usr/abc.txt查看当前路径命令:pwd移动命令:mv [源地址] [目的地]复制命令:cp -r [源地址] [目的地] (-r:递归复制子目录)删除命令:rm -rf切换目录命令:cd查看文件或目录命令:ls ll (-a:显示所有文件,包括隐藏文件)查看当前路径:pwd查找文件命令:find /home -name 'fileName*'

2025-09-21 05:31:13 828

原创 网络与IO面试重点-1

TCP是个"流"协议,所谓流,就没有界限的一串数据。TCP只是连接,是否长连接受应用层协议的影响。

2025-09-14 09:42:49 865

原创 算法面试重点

然后,遍历这5个元素,首先第一个元素是4,就把4对应的位置为1。假设,对0-7内的5个元素进行排序(元素没有重复),元素为:4,7,2,5,3。并查集,在一些有N个元素集合的应用问题中,我们通常是在开始时,让每个元素构成一个单元素的集合,然后,按一定顺序,将属于同一组的元素所在的集合合并, 其间要反复的查找一个元素在哪个集合中。每次排序将要序列分成两部分,其中一部分的数据都比基准数小,另一部分的数据比基准数大,然后,分别在两个部分重复上一步,直到两个部分的序列只有一个元素为止。在int中就是N/32。

2025-09-13 08:18:34 725

原创 数据结构面试重点

一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。B+树是B树的变种树,有n棵子树的节点中含有n个关键字,每个关键字都不保存数据,只是用来索引,数据都保存在叶子节点中。相对于B树来说,B+树更充分的利用了节点的空间,让查询速度更加稳定,其速度完全接近于二分法查找。构造一个多阶的B类树,在尽量多的在结点上存储相关的信息,来保证层数尽量的少,方面可以更快的找到信息,磁盘的I/O操作也少一些。红黑树是一种不是非常严格的平衡二叉树,所以它的平均查找,增添删除效率都还不错。

2025-09-07 11:15:00 739

原创 MongoDB面试重点

副本集是由一组托管相同数据集的mongo实例。分片是将数据水平切分到不同的物理节点。当数据量增长,单台机器可能无法存储数据或无法接受的读取写入吞吐量时,可以利用分片技术添加更多的机器来应对数据量增长,满足读写操作的要求。分片属于水平拓展方式。MongoDB支持自动分片,简化系统管理。建议至少创建3个或以上的分片。

2025-09-06 09:00:00 611

原创 Redis面试重点-2

16384=2*1024*8,即2KB,2KB在集群心跳信息传递是不是很大,16384个槽位够用。Redis集群至少需要几个节点?至少需要几个master节点?Redis集群至少需要3个master节点,1master-1slave,Redis集群需要6个节点;1master-2slave,Redis集群需要9个节点,以此类推。数据分片策略:没有使用一致性哈希,而是使用哈希槽分布数据;使用crc16(key) % 16384,计算键key属于哪个槽。

2025-08-31 17:06:00 706

原创 Redis面试重点-1

概念:开源的,键值对的,NoSQL。原理:(@&@)Redis把整个数据库加载到内存当中,通过定期的异步操作,把数据库数据flush到硬盘上进行保存。优点:每秒10万次读写、支持多种数据类型、支持事务、支持过期时间、内置方法支持计算。缺点:Redis数据库容量受到物理内存的限制,不能用作海量数据的高性能读写。

2025-08-30 09:00:00 663

原创 LeetCode-数组-No45缺失的第一个正数跳跃游戏II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

2024-07-06 10:00:01 319

原创 Sharding-JDBC

Sharding-JDBC是一个在客户端的分库分表工具。它是一个轻量级Java框架,在Java的JDBC层提供的额外服务。ShardingSphere提供标准化的数据分片、分布式事务和数据治理功能。

2024-07-06 09:55:10 1118

原创 LeetCode-数值-No49字母异位词

是由重新排列源单词的所有字母得到的一个新单词。给你一个字符串数组,请你将。可以按任意顺序返回结果列表。

2024-06-29 17:06:22 506

原创 Redisson框架

Redisson锁中,使用订阅发布模式去通知等待锁的客户端:锁已经释放,可以进行抢锁。

2024-06-29 09:54:13 1395

原创 LeetCode-数组-No48旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

2024-06-28 22:34:30 462

原创 《Redis设计与实现》阅读总结-4

一个节点(A节点)除了处理记录自己负责的槽记录,还会将自己的槽记录(A节点)通过消息发送给集群中的其他节点(B节点),其他节点(B节点)会在自己的clusterState.nodes字典中查找节点(A节点)对应的clusterNode结构,更新槽记录。Watch命令是一个乐观锁,它可以在EXEC命令执行之前,监视任意数量的数据库键,并在Exec命令执行时,检查监视的键是否至少有一个已经被修改过了,如果被修改,则拒绝执行事务,并向客户端返回代表事务执行失败的空回复。

2024-06-28 22:14:05 1471

原创 LeetCode-数组-No41缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) ,并且只使用常数级别额外空间的解决方案。

2024-06-27 07:00:00 342

原创 《Redis设计与实现》阅读总结-3

在同步操作执行完毕之后,主从服务器两者的数据库将达到一致状态,但这种一致并不是一成不变的,每当主服务器执行客户端发送的鞋命令时,主服务器的数据库就有可能被修改,并导致主从服务器状态不再一致。Sentinel是Redis的高可用性(HA)解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及主服务器属下的所有从服务器,当被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器上级为主服务器。

2024-06-27 06:45:00 1814

原创 LeetCode-数组/回溯-No40组合总和II

给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。

2024-06-26 07:15:00 444

原创 《Redis设计与实现》阅读总结-2

每个节点的previous_entry_length属性记录了前一个节点的长度:如果前一个字节长度小于254字节,那么previous_entry_length属性需要用1字节空间保存这个值,如果前一个字节的长度大于或等于254字节,那么previous_entry_length属性需要5字节的空间保存这个值。AOF写入时,如果键过期,但还没有被惰性删除或者定期删除,那么AOF文件不会因为这个过期键而产生影响,当过期键被惰性删除或者定期删除后,程序会向AOF文件追加一条DEL命令。

2024-06-26 07:00:00 1075

原创 LeetCode-数组/回溯-No39组合总和

给你一个无重复元素的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式返回。1. 数组排序:将数组排序,可以推论出:如果 sum > target 或 sum = target时, sum + next元素 > target 一定成立,所以可以结束循环。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。

2024-06-25 05:11:52 331

原创 《Redis设计与实现》阅读总结-1

为了避免rehash对服务器性能造成影响,服务器不是一次性将ht[0]里面的所有键值对全部rehash到ht[1],而是分多次,渐进式地将ht[0]里面的键值对慢慢地rehash到ht[1]。SDS的API都是二进制安全的(binary-safe),所有SDS API都会以二进制的方式处理SDS存放在buf数组里的数据,程序不会对其中的数据做任何限制、过滤、或假设,数据写入时是什么样的,取读还是什么样的。Redis的数据库就是使用字典来作为底层实现的,对数据库的增删查改操作是构建在对字典的操作之上的;

2024-06-25 05:11:25 744

原创 内存问题调优-GC

在JVM中配置 -verbose:class 打印类加载信息。什么条件触发GC-CMS为例。

2024-06-24 07:45:00 238

原创 MySQL面试重点-2

乐观锁并不是数据库自带的,需要自己去实现,一般情况下,我们会在表中新增一个version字段,每次更新数据version+1,在进行提交之前会判断version是否一致。模拟MySQL优化器运行SQL语句,了解MySQL如何处理你的SQL语句。两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。show engines命令查看数据库支持的存储引擎。一主一从、主主复制、一主多从、多主一从、联级复制。MySQL加锁情况分析:***《见MySQL加锁》

2024-06-24 07:15:00 2663

原创 Java多线程基础知识-3

AQS是抽象的队列式同步和锁实现框架。它是除了java自带的synchronized关键字之外的锁机制。例如ReentrantLock、ReentrantReadWriteLock、Semaphore、FutureTask等都是基于AQS实现的。

2024-06-22 07:45:00 881

Mysql相关使用总结

Mysql相关使用总结,把一些mysql的相关语法进行总结,包括建表语句,修改表名和列名属性,添加字段,删除表,字段等

2018-05-12

证件换底色软件

证件换底色软件,解压直接使用,可以换成任意颜色的底色

2018-06-04

视频去水印工具

视频去水印工具,可以去除视频中的水印,是一个软件。

2018-05-12

jedis不同版本的架包

jedis不同版本的架包,包括2.1.0,2.6.1,2.7.2着三个版本的架包

2018-05-12

spring-framework-5.0.7.RELEASE-编译好的.rar

spring5.0.7编译完成的源码,解压后,找到spring.ipr文件,使用IDEA打卡,就可以开始阅读源码之旅。

2020-03-30

securecrt安装版

securecrt安装版,安装后就可以用。不需要注册机。。。

2018-06-07

Java面向对象程序设计教程(第二版)

Java面向对象程序设计教程(第二版)

2018-09-05

视频加密工具

视频加密工具,通过这个工具可以对视频进行加密,很难破解。

2018-05-14

springBootStarterExceptionMail.rar

SpringBoot之自定开发发送异常邮件Starter源码,详细代码解析参考《SpringBoot之自定开发发送异常邮件Starter》文章

2019-09-22

select2.js插件支持拼音搜索(最新版-4.0.6)Demo

select2.js插件支持拼音搜索(最新版-4.0.6)Demo,具体使用方法见《 select2.js插件支持拼音搜索(最新版-4.0.6)》文章

2018-10-03

JAVA核心技术 第9版【中文版】

JAVA核心技术 第9版【中文版】pdf版,非常清晰,便于阅读

2018-06-29

pdf转换成word转换器

pdf转换成word转换器,非常好用,测试过,格式不变,与原来一样

2018-05-12

commons-pool架包

commons-pool架包,里边包括两commons-pool版本的架包

2018-05-12

Axure8.0软件+注册秘钥

Axure8.0软件,产品经理画原型图比较好的软件,有秘钥可以激活。

2018-06-08

tomcat6.0.20免安装版

tomcat6.0.20免安装版,解压直接用,64位版本,安全稳定

2017-12-08

拼音js(优化版)

拼音js(优化版),对返回结果出现undefined结果进行了优化

2018-10-03

redis64-3.0.501

redis缓存,在window下使用的客户端软件,64位的。解压就可用

2018-05-12

前端取色器

取色器,前端工具,通过软件选择颜色,告诉你颜色代码

2018-05-12

tomcat-8.0.46

tomcat-8.0.46免安装版,下载就能用。定义的端口号为80,使用其他端口请自行修改

2018-05-12

黑色大气后台管理系统bootstrap商业模板

黑色大气后台管理系统bootstrap商业模板,模板质量还可以

2018-06-18

Modern_admin前端模板

Modern_admin前端模板,包括登录,表单,表,日期,日历等页面

2018-06-05

spring-framework-4.3.12.RELEASE--编译好的源码.rar

spring4.3.12编译完成的源码,解压后,找到spring.ipr文件,使用IDEA打卡,就可以开始阅读源码之旅。

2020-03-30

Java编程思想第四版完整中文高清版

Java编程思想第四版完整中文高清版,学习java比较推荐的一本书

2018-06-30

exe4j打包工具

exe4j,把jar包打成exe文件的工具,有注册码,非常好用

2018-06-22

booststrapmoban模板

非常不错的bootstrap模板,非常全面,包括表单,表,图标,时间,日历,统计图等等

2018-06-05

反编译软件

反编译软件,通过这个软件可以反编译.class文件。。。

2018-05-12

Axure官方核心培训

Axure官方核心的培训课程,通过此视频可以初步了解Axure的使用方法

2018-06-08

excel工具箱

excel工具箱,通过这个软件,可以安装各个版本的Excel

2018-05-12

文件和u盘加密工具

文件和u盘加密工具,通过这个软件可以轻松为文件和u盘加密

2018-05-12

空空如也

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

TA关注的人

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