自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(190)
  • 收藏
  • 关注

原创 Jenkins的快速入门

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub。

2024-03-22 00:06:42 1196

原创 数据结构-栈-表达式运算

【代码】数据结构-栈-表达式运算。

2024-03-10 22:31:10 429

原创 数据结构-稀疏数组

当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。

2024-03-10 10:06:42 396

原创 mysql死锁排查

查看等待锁的事务:SELECT * FROM information_schema.INNODB_LOCK_WAITS。查看正在锁的事务:SELECT * FROM information_schema.INNODB_LOCKS。查看正在运行的事务:SELECT * FROM information_schema.INNODB_TRX。查看事务:SELECT * FROM information_schema.INNODB_TRX。查看线程列表:show processlist;表中数据:student。

2024-01-04 22:29:21 1004

原创 Reactor线程模型详解

在目前的线程模型中一种是传统阻塞的I/O模型,一种是Reactor线程模型。

2023-12-13 23:54:54 1039

原创 IO零拷贝

Linux 2.1 开始提供了 sendFile 函数,其基本原理是:数据根本不经过用户态,直接从 Kernel Buffer 进入到 Socket Buffer,并且由于和用户态完全无关,这就避免了一次上下文切换。因此零拷贝通常是站在操作系统的角度看,即整个过程中,内核缓冲区之间是没有重复数据的。由此可见,复制的操作太频繁,共有 2 次 DMA 拷贝、2 次 CPU 拷贝、4 次上下文切换。紧接着发生第二次数据拷贝,即从内核缓冲区拷贝到用户缓冲区,同时发生一次内核态到用户态的上下文切换。

2023-12-13 23:19:42 915

原创 Linux的五种IO模型

不管使用何种方式,好处都是应用进程不会阻塞,可以继续执行,只要等待信号通知数据准备好被处理了、数据准备好被读取了。操作系统内核收到用户进程发起的请求后,从 I/O 设备读取数据到 kernel buffer 中,再将 buffer 中的数据拷贝到用户进程的地址空间,用户进程获取到数据后返回给客户端。和信号驱动 I/O 模型的区别是前者内核告诉我们何时可以开始一个 I/O 操作,而后者内核会告诉我们一个 I/O 操作何时完成。众所周知,出于对 OS 安全性的考虑,用户进程是不能直接操作 I/O 设备的。

2023-12-13 23:08:50 1396 1

原创 基于ReentrantLock详解AQS源码

7.上述流程可以说是公平锁的抢占方式,每次都是队列头节点的下一个节点抢到锁,严格排队枪锁,如果是非公平锁,则在唤醒head的下一个节点进行抢锁时,其他线程也可以在此期间抢锁,如果被其他线程抢到锁,则head的下一个节点还是会重新挂起,然后新的抢占锁的线程会重新关联head节点。6.线程三释放锁,把AQS中的state设置为0,清空持有锁线程,队列中的节点还是存在一个头节点,这个节点的内容都是空的,只要头节点创建出来了就一直存在,持有锁的线程会关联头节点。

2023-12-12 23:49:40 1385

原创 HashMap JDK1.8源码详解

首先将高16位无符号右移16位与低十六位做异或运算。如果不这样做,而是直接做&运算那么高十六位所代表的部分特征就可能被丢失 将高十六位无符号右移之后与低十六位做异或运算使得高十六位的特征与低十六位的特征进行了混合得到的新的数值中就高位与低位的信息都被保留了 ,而在这里采用异或运算而不采用& ,| 运算的原因是 异或运算能更好的保留各部分的特征,如果采用&运算计算出来的值会向1靠拢,采用|运算计算出来的值会向0靠拢。int类型的数值是4个字节的,右移16位异或可以同时保留高16位于低16位的特征。

2023-09-10 22:31:14 169

原创 ConcurrentHashMap jdk1.8源码详解

原理:cas + synchronized + 数组 + 链表 + 红黑树。用来标识旧hash表扩容后占位的临时节点,即当前桶扩容迁移成功的标识。

2023-09-07 20:38:38 405

原创 shiro快速入门

基本上涉及到用户参与的系统都需要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。权限管理包括用户身份认证和授权两部分,简称认证授权,对于需要访问控制的资源用户首先经过身份认证,认证过后用户具有该资源的访问权限即可访问。身份认证,就是判断一个用户是否为合法用户的处理过程,最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。

2023-08-02 23:19:11 202

原创 RabbitMQ快速入门

……导入依赖:发送消息模块:接收消息模块:发送消息:接收消息:Fanout类型的交换机:发送消息:接收消息:Topic类型的交换机:发送消息:接收消息:总结:Topic类型的交换机也是消息一对多的一种交换机类型,它和fanout都能实现一个消息同时发送给多个队列;fanout更适用于使用在一个功能不同的进程来获取数据,例如,手机App中的消息推送,一个App可能会还有很多个用户来进行安装,然后他们都会启动一个随机的队列来接收者自己的数据;Topic更适用于不同功能模块来接收同一个消息,

2023-08-02 23:10:49 1363 1

原创 Hibernate Validator

Null 被注释的元素必须为 null@NotNull 被注释的元素必须不为 null@AssertTrue 被注释的元素必须为 true@AssertFalse 被注释的元素必须为 false@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值。

2023-08-02 22:46:59 433

原创 docker快速入门

Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。image文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

2023-08-02 22:34:36 760

原创 单调递减队列

【代码】单调递减队列。

2023-05-09 21:58:03 96 1

原创 字符串匹配KMP

字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一,它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。这种算法不太容易理解,网上有很多解释,但读起来都很费劲。直到读到...

2023-04-22 16:01:00 133 1

原创 ProcessBuilder工具类及执行多条命令

【代码】ProcessBuilder执行多条命令。

2023-04-01 10:46:01 1611

原创 centos7安装转码工具

【代码】centos7安装转码工具。

2023-04-01 10:41:38 90

原创 spring多线程事务控制

【代码】spring多线程事务控制。

2023-03-14 23:00:19 672

原创 JavaSE知识点总结

Java基础

2023-02-20 22:29:44 113

原创 git常用命令总结

工作区 —> 暂存区 —> 本地库 远程库。

2022-12-28 09:19:33 220

原创 redis的分片的数据倾斜问题

https://blog.csdn.net/weixin_43909795/article/details/125482881

2022-12-18 19:27:17 141

原创 给定两个二叉树的节点node1和node2,找到他们的最低公共祖先节点

【代码】给定两个二叉树的节点node1和node2,找到他们的最低公共祖先节点。

2022-12-11 20:52:29 197

原创 如何判断一颗二叉树是否是平衡二叉树

【代码】如何判断一颗二叉树是否是平衡二叉树。

2022-12-11 20:39:05 194

原创 如何判断一颗二叉树是否是满二叉树

【代码】如何判断一颗二叉树是否是满二叉树。

2022-12-11 20:34:56 298

原创 如何判断一颗二叉树是否是完全二叉树

【代码】如何判断一颗二叉树是否是完全二叉树。

2022-12-11 20:30:24 361

原创 如何判断一颗二叉树是否是搜索二叉树

【代码】如何判断一颗二叉树是否是搜索二叉树。

2022-12-11 20:20:38 230

原创 数据结构与算法汇总及leetcode经典题记录

数据结构与算法

2022-12-11 19:49:28 179

原创 面试复习知识点

面试题

2022-12-03 17:46:28 258

原创 Redission使用

【代码】Redission使用。

2022-11-06 18:39:27 595

原创 订单相关场景

https://www.csdn.net/tags/NtTaYg0sODYwNzktYmxvZwO0O0OO0O0O.htmlhttps://blog.csdn.net/D812359/article/details/120797954以上三种扣库存方式是电商平台最常见的方式,其中第三种方式运用较多,每种方式都有自己使用的场景。商品库存数量较为敏感的场景,比如秒杀、抢购等建议使用下单减库存的方式,大部分正常买家都是想直接购买超优惠的商品。如果采用付款减库存的方式,可能会出现商品超卖的情况。比如商家设置秒杀

2022-10-26 23:25:49 856

原创 责任链模式学习

使用场景:1、有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。2、在不明确指定接收者的情况下,向多个对象中的一个提交一个请求。4、代码中需要进行很多校验时,存很多if判断,这时可以进行责任链处理,去除if,并进行校验。4、增加新的请求处理类很方便。责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。2、系统性能将受到一定影响,而且在进行代码调试时不太方便,可能会造成循环调用。

2022-10-07 14:34:41 172

原创 设计模式

设计模式

2022-08-28 09:43:12 138

转载 组合模式学习

在 JAVA AWT 和 SWING 中,对于 Button 和 Checkbox 是树叶,Container 是树枝。算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作符也可以是操作树、操作符和另一个操作数。

2022-08-28 09:40:58 82

转载 建造者模式

https://blog.csdn.net/shuyv/article/details/123367590

2022-08-27 17:54:46 89

原创 Docker指令收集

docker

2022-08-20 10:34:56 222

原创 TOP命令详解

比如,此时1分钟的平均负载为5.6,而我们的操作系统是4个CPU,那么就代表此时系统负载过高,意味着有160%的的超载进程竞争不到CPU;编写一个简单的springboot项目,其中编写一个死循环代码,将项目打成jar包上传服务器,并运行,然后调用接口触发死循环。平均负载可以理解为当前系统的平均活跃进程数,包含了系统处于可运行状态和不可中断状态的平均进程数,就是平均活跃进程数。top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

2022-08-20 10:32:19 13465

原创 MetaObject简介

映射是指结果集中的列填充至JAVA Bean属性。这就必须用到反射,而Bean的属性 多种多样的有普通属性、对象、集合、Map都有可能。为了更加方便的操作Bean的属性,MyBatis提供了MeataObject 工具类,其简化了对象属性的操作。MetaObject类相当于一个对象工具类,Mybatis在sql参数设置和结果集映射里经常使用到这个对象。...

2022-08-15 21:19:45 2297

原创 Lua脚本实现setnx命令

代码】Lua脚本实现setnx命令。

2022-08-13 10:41:52 729

原创 日志框架学习

Loggers被称为记录器,应用程序通过获取Logger对象,调用其API来发布日志信息。Logger通常时应用程序访问日志系统的入口程序。Appenders也被称为Handlers,每个Logger都会关联一组Handlers,Logger会将日志交给关联Handlers处理,由Handlers负责将日志做记录。Handlers在此是一个抽象,其具体的实现决定了日志记录的位置可以是控制台、文件、网络上的其他日志服务或操作系统日志等。Layouts。......

2022-07-30 21:20:07 405

空空如也

空空如也

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

TA关注的人

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