自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 正则表达式的常见语法

在Java中使用正则表达式进行字符串匹配可以说是一个很重要的技能,尤其对于需要进行文本处理或者字符替换的程序来说,更是必不可少的技术手段

2024-04-23 20:22:02 473

原创 Shell脚本开发(六)——函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

2024-03-29 21:59:20 275

原创 Shell脚本开发(五)——流程控制

1、if else2、for3、while4、无限循环5、until6、case ... esac7、跳出循环break 命令continue

2024-03-29 21:36:54 934

原创 Shell脚本开发(四)——test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

2024-03-29 11:12:55 246

原创 内存飙高问题如何排查?

内存飙高如果发生在java进程上,一般情况是因为创建了大量对象导致,持续飙高说明垃圾回收跟不上对象创建的速度,或者内存泄漏导致对象无法被回收!排查中涉及到如下命令:jstat -gc pid 1000 查看gc情况,时间等信息,每隔一秒打印一次jmap -histo pid | head -20 查看堆内存占用空间最大的钱20个对象类型jmap -dump:live,format=b,file=/home/chenjian/myheapdump.hprof pid 导出堆内存快照。

2024-02-29 20:00:19 1122

原创 zookeeper动态扩缩容(无需重启)

zookeeper动态扩/缩容的reconfig命令旨在不需要重启zookeeper中任何一个节点的情况下,对整个zookeeper集群进行动态扩/缩容。

2024-02-20 15:47:40 1188

原创 通过手写简易版RPC理解RPC原理

所谓的RPC其实是为了不同主机的两个进程间通信而产生的,通常不同的主机之间的进程通信,程序编写需要考虑到网络通信的功能,这样程序的编写将会变得复杂。RPC就来解决这一问题的,一台主机上的进程对另外一台主机的进程发起请求时,内核会将请求转交给RPC client,RPC client经过报文的封装转交给目标主机的RPC server,RPC server就将报文进行解析,还原成正常的请求,转交给目标主机上的目标进程。在我们看来在就像是在同一台主机上的两个进程通信一样,完全没有意识到是在不同的主机上。

2024-01-31 16:51:53 797 1

原创 yum命令详解和使用

Yum(全称为 Yellow dog Updater, Modified),是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

2023-12-05 15:42:55 1137

原创 java RMI 技术介绍和实践

RMI 基本思想是远程方法调用,即客户端调用某个方法,其本质是将这个方法的调用请求,发送给服务器,由服务器代为执行,且,服务器将执行结果回送客户端。对于客户端而言,RMI 只要求客户端针对方法本身,产生一种错觉:方法是在本地被调用的;对于服务器而言,RMI 相当于要处理一个来自客户端的“请求”;这个请求针对某个方法。

2023-11-08 11:16:38 302

原创 23种设计模式(10)——门面模式

其实,在日常编码工作中,我们都在有意无意地大量使用门面模式。但凡只要高层模块需要调度多个子系统(2个以上类对象),我们都会自觉地创建一个新类封装这些子系统,提供精简的接口,让高层模块可以更加容易地间接调用这些子系统的功能。

2023-10-27 11:07:34 321

原创 服务器执行命令或脚本的两种方式

Java的Runtime类和ProcessBuilder类都允许Java程序启动一个新的进程并执行特定的命令,通过标准输入输出流进行数据交换。Runtime类适用于简单的命令执行,ProcessBuilder类则更加灵活,适用于复杂的命令和参数传递。

2023-10-27 10:19:31 329

原创 Git撤销已经push到远程分支的commit

Git撤销已经push到远程分支的commit

2023-10-25 09:26:47 732

原创 TransactionSynchronizationManager的使用场景以及原理分析

TransactionSynchronizationManager.registerSynchronization()的原理就是通过threadLocal获取到当前线程所持有的的dataResource,注册一个乃至多个事务同步方法,在事务提交前后分别执行对应的事务同步方法。

2023-09-25 17:17:53 2987 1

原创 redis集群的维护(redis-cli --cluster 命令用法)

1、 --cluster create 创建集群2、--cluster check检查集群3、--cluster info 查看集群4、--cluster fix 修复集群5、--cluster rehard 迁移槽位6、 --cluster rebalance 平衡集群7、 --clusteradd-node 集群扩容8、--cluster del-node 集群缩容9、 --cluster call 在集群中执行命令10、--cluste

2023-09-12 10:51:33 2302

原创 IDEA 快捷键大全

IDEA 常用快捷键大全

2023-09-06 16:44:14 680

原创 面试官:前面我们聊了主从和哨兵,那今天来聊一聊集群吧

秃顶面试官:简单介绍下什么是Redis Cluster呢?秃顶面试官:那集群的缺点有哪些呢?秃顶面试官:说说如何搭建集群呢?秃顶面试官:集群内部是如何通信的呢?秃顶面试官:线上如何对集群进行扩容和缩容呢?秃顶面试官:不错不错,再来说下集群的故障转移吧秃顶面试官:说的非常详细,来集群的完整性如何保证呢?秃顶面试官:那集群中的数据倾斜有了解吗?

2023-08-10 20:41:37 201

原创 Jedis哨兵模式如何实现主从的读写分离

redis的主从和哨兵模式,在官方的功能模式下,从实例只有数据备份和作为主实例的备机作用,并不具备我们想象中的主实例负责写,从实例负责读的职责分工。Jedis哨兵模式如何实现主从的读写分离?

2023-07-13 14:49:40 316

原创 面试官:说说Redis的持久化以及主从同步呗

redis持久化机制的机制,以及主从数据同步原理

2023-07-12 18:02:22 226

原创 面试官:说说Redis的哨兵模式呗

哨兵模式、基本配置,哨兵节点的职责、故障转移的过程以及日志解读

2023-07-11 11:58:04 153

原创 Linux只允许特定IP访问特定端口

Linux只允许特定IP访问特定端口

2023-07-04 16:57:02 7945

原创 一文搞懂redis的用户权限管理(ACL)功能

Redis在6.0之前基本没有用户权限的概念,只有一个连接认证密码,一旦通过了认证就可以随意操作任意的redis数据,无法对用户权限进行精确控制,很容易因为用户权限过大引发误操作。如果想禁用某些不安全的命令,比如flushdb,flushall,只能通过rename-command的方式来避免。redis6.0发布了权限管理功能ACL(access control list 访问控制列表),可以对不同的用户设置不同的权限,限制用户可使用的命令,可访问的key等。

2023-06-26 17:52:16 5452 1

原创 CopyOnWriteArrayList原理分析

CopyOnWriteArrayList 类的所有可变操作(add,set 等等)都是通过创建底层数组的新副本来实现的。当 List 需要被修改的时候,我并不修改原有内容,而是对原有数据进行一次复制,将修改的内容写入副本。写完之后,再将修改完的副本替换原来的数据,这样就可以保证写操作不会影响读操作了。

2023-06-14 15:04:23 374

原创 rm 命令的使用以及指定不删除某些文件

rm是我们在Linux下删除文件经常用到的命令,但是有时候我们目录下有很多个文件想要删除,偏偏却要保留其中1个或几个文件,那怎么办呢?

2023-06-14 10:06:54 2186

原创 聊聊TCP协议的粘包、拆包以及http是如何解决的?

TCP协议的粘包、拆包以及http是如何解决的

2023-06-05 16:34:19 4404 1

原创 泛型的介绍以及原理

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

2023-05-30 14:13:16 1319

原创 Windows下快速启动Kafka以及三种发送消息的方式

Windows下快速启动Kafka以及三种发送消息的方式

2023-05-17 12:08:57 2351

原创 git rebase问题:First, rewinding head to replay your work on top of it

First, rewinding head to replay your work on top of it..

2023-05-17 10:07:27 1978

原创 Git 如何修改历史的 Commit message

Git 如何修改历史的 Commit message1、修改最近一条Commit message2、修改过去若干条 Commit message

2023-04-25 14:11:31 3461

原创 23种设计模式(9)——适配器模式

适配器模式介绍以及在框架中的应用

2023-04-20 16:21:19 389

原创 聊聊布隆过滤器

布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是高效的插入和查询,而且非常节省空间,缺点是hash 碰撞造成的误识别率和删除困难。一般使用较多的场景就是避免缓存穿透!

2023-04-20 14:05:08 1086

原创 使用assembly插件对boot项目打zip和war部署包

一、maven-assembly-plugin插件的简单使用二、如何通过assembly打不同的包三、boot项目如何转成war包部署

2023-04-19 16:13:33 1492

原创 spring接入nacos配置中心

spring接入nacos

2023-03-31 17:51:16 1891

原创 Redis缓存与数据库双写一致性

Redis缓存与数据库双写一致性。1. 先更新缓存,再更新数据库2. 先更新数据库,再更新缓存3. 先删缓存,再更新数据库4. 先更新数据库,再删缓存

2023-03-23 20:31:55 343

原创 ArrayList源码分析

ArrayList的底层原理1,底层用Object数组来存储元素;2,有扩容机制,默认扩容机制是10,每次扩容都是扩容到之前的1.5倍;3,添加元素到指定位置可能会移动很多元素并且可能会触发扩容机制,如果是添加元素到末尾那么只可能触发扩容机制;4,删除指定位置的元素可能会移动很多元素,删除末尾元素代价是最小的,ArrayList删除元素是将末尾元素置为null;5,查询或者修改某个具体位置的元素是很快的;

2023-02-07 16:48:12 348

原创 高并发下如何保证接口的幂等性?

高并发下如何保证接口的幂等性

2023-01-31 16:00:48 415

原创 Shell脚本开发(三)——echo命令

Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出

2023-01-31 14:52:21 1040

原创 Shell 脚本开发(二)——基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括:算数运算符关系运算符布尔运算符字符串运算符文件测试运算符

2023-01-31 14:36:19 373

原创 Shell脚本开发(一)——变量、字符串与数组

shell开发,shell传递参数,shell数组,shell字符串,shell变量,shell注释

2023-01-13 11:42:20 815

原创 Git stash命令详解和使用

stash 命令使用非常简单,是经常使用的命令。应用场景:1 、临时存储已修改的代码:比如正在分支A上开发某个功能,还未完成,突然要切换到B分支上去修复一个bug。这时就可以用git stash命令将本地修改的内容保存至堆栈区,再切换到B分支修改bug,修复完成后,再切回到A分支,从堆栈中恢复刚刚保存的内容。2 、同步代码:由于不小心,本来要在A分支上开发的功能代码,却写在了B分支上,这时就可以用git stash将本地代码保存至堆栈中,切回到A分支后,再次恢复内容即可。

2022-11-10 15:17:43 4944

原创 Base64编码知识记录

目录编码说明编码方式体积增大= 等号demoBase64 是一种基于 64 个可打印字符来表示二进制数据的表示方法,由于 2^6=64,所以每 6 个比特为一个单元,对应某个可打印字符。Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。Base64 编码要求把 3 个 8 位字节(3*8=24)转化为 4 个 6 位的字节(4*6=24),之后在 6 位的前面补两个 0,形成 8 位一个字节的形式。 如果剩下的字符不足 3 个

2022-11-09 17:53:35 424

空空如也

空空如也

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

TA关注的人

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