自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Proxmox VE 实现服务器虚拟化的部署教程

使用 PVE 实现服务器的虚拟化,实现一台服务器变多台服务器,步骤详细,虚拟化后非常方便整个虚拟机的备份、克隆、迁移、扩展等操作。

2025-03-11 10:07:45 489

原创 Linux服务器使用docker离线安装MySQL

两台离线的Linux服务器传输docker镜像,安装MySQL,实现远程连接。

2025-03-11 10:06:06 416

原创 shell脚本一键更新部署docker中服务

上一篇文章是,使用docker部署java服务运行,这样可以方便管理,方便查看日志。但是经过这几天的开发,我已经很不爽了,因为每次部署非常麻烦,打包 -> 复制到服务器 -> 删除原镜像 -> 删除原服务 -> 构建新服务 -> 运行新服务。很繁琐,而且有的时候启动服务还要挂载其他目录很麻烦。所以今天写个文章,使用脚本进行一键部署。因为目前开发任务有点重,所以先临时用这个方法。后续我有时间了,一定会再搭建一套基于Jekins的完成自动化CICD流程。

2025-03-11 10:04:52 505

原创 Docker构建启动jar包

docker构建启动jar包

2025-03-11 10:03:24 350

原创 SQL server数据库磁盘满解决办法

今天又发生了一件事,系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了。一查日志发现说是数据库磁盘满了。发生的突然忘记截图了,爆这个错的时候我就想,不可能啊,我才多少数据量,我磁盘最少要几TB的空间咋可能满。然后打开服务器,这个是我先删除了一部分其他数据保证系统能恢复正常,删除之前真是满满当当,显示可用0KB,直接灰色的。看到1TB磁盘竟然满了, 我真是惊了,因为根本就没啥数据量的系统,咋可能,后来一查。真nb,真是900多个G.

2025-01-03 09:30:01 758

原创 责任链模式

这样,一个责任链模式就完成了,我们只要调用责任链的开始就可以了, 不再需要关系责任链里到底经过了多少节点,节点怎么排列,都做了什么。上面, 我们使用@Bean注册了OrderCreateValidator ,所有在调用时,直接注入这个bean,就可以使用这个完整的责任链啦。而且当我们后续想要再增加新的校验时,也非常方便,直接在责任链中添加新的校验器节点就可以了,而无需再修改业务逻辑代码。:定义一个处理请求的接口,通常包括一个处理请求的方法和一个设置下一个处理者的方法。创建具体的实现类,实现上面的抽象接口。

2025-01-03 09:25:35 446

原创 手把手教学无域搭建SQL server always on 高可用集群部署故障转移

两台服务器,SQL server数据库,always on高可用,widows server 2019 故障转移。实操!实操!真实生产环境使用!觉对可行!亲测!踩坑无数!绝对靠谱!查阅网络所有资料,手撸微软官方文档,总结了这篇!

2024-10-30 14:21:36 3262 4

原创 代理模式简单举例

一般来说我们基于上面的思想,再结合 AOP 机制 和 自定义注解,再完善完善,其实你就实现了大名鼎鼎的springCache功能了。就可以实现userService的所有功能。转自我的博客:http://he-bi.cn/#/article/214。其实代理模式是我们最常用的,在任何框架中几乎都离不开代理模式的应用。定义一个serviceimpl实现userService接口。看一下原本的userService的 实现类。话不多说,直接上一个代码理解一下。这样我们就实现了一个最简单的代理。

2024-10-29 16:36:55 448

原创 线上数据库死锁问题排查

在使用sessionFactory时,不要新建session,使用当前的session就可以了。其实可以把方法开始的更新方法放到最后,这样就会先加共享锁,等查询都完成后,最后再加排他锁更新,就不会死锁了。修改事务隔离级别到READ COMMITTED SNAPSHOT ,这样查询就不会加锁了。欢迎关注我的博客:http://he-bi.cn/#/

2024-10-29 16:34:44 734

原创 线上问题排查@Transactional事务失效

事情是这样的, 在用户测试系统时,有一个功能出现了点问题,跟我沟通了一下,让我排查一下,我第一时间去查看系统error日志, 但是我打开日志一看,哇塞,好多报错,而且都是一样的,而且一直在报错,我一开始想不管这个报错的,但是根本不行啊,error信息一直刷,我根本查不到我想看的我那部分的报错信息。其实我们平常正常的业务逻辑都不会发生事务失效这个问题,因为我们都是按照MVC三层架构来运行的,所以就都是使用了注入的service来调用方法的,所以就会走spring的aop代理,事务也就会生效。

2024-10-29 16:31:40 967

原创 同步、异步、阻塞、非阻塞

*同步非阻塞:**一个程序发送网络请求后不会一直等待响应,而是继续执行其他操作,定期检查是否有响应返回,这是同步非阻塞的例子。**异步阻塞:**一个程序使用回调函数进行异步操作,但是在回调函数执行完成前程序会一直阻塞等待,这是异步阻塞的例子。**异步非阻塞:**一个程序发起异步请求后,继续执行其他操作,同时定期检查请求是否完成,这是异步非阻塞的例子。**同步阻塞:**一个程序发送网络请求等待响应的过程是同步阻塞的,程序会一直阻塞等待直到收到响应为止。

2024-04-15 16:14:21 219

原创 什么是泛型,为什么使用泛型

泛型可以在编译时发现类型不匹配的错误,避免在运行时出现类型转换异常。这可以提高代码的可靠性和稳定性。:使用泛型可以编写更通用的代码,可以处理各种类型的数据而不必每次都进行类型转换。通过编写泛型方法或泛型类,可以实现更灵活、更通用的编程。:使用泛型可以使代码更易读、易懂。在使用泛型的代码中,可以清晰地看到数据的类型,这有助于其他开发人员理解代码并进行维护。:泛型能够在编译时进行类型检查和擦除,避免了运行时的类型转换,从而提高程序的性能。

2024-04-15 16:13:34 731

原创 一文整合工厂模式、模板模式、策略模式

其实这几个设计模式我们在平常开发中非常容易使用,也可能你一直在使用就是没有留意而已。

2024-03-25 14:22:51 3114

原创 让你彻底读懂Java多态

这就是一个很简单的,父类引用指向子类对象,调用对应子类的方法,没错我以前学的都是这个,这感觉什么多不多态的,没啥用啊,这我都知道是哪个子类, 我直接用子类去定义就好了啊, 干嘛还用父类去接受子类的对象。嗯,看完这个代码,是不是大彻大悟了。这个代码我们在全程一直不知道到底是哪个子类了,是哪个子类全靠我们前端传递的animalType 参数来判断。Java多态,我真是看立刻很多次,记了很多次,但是还是容易忘,容易不理解,其实根本原因就是没在实际应用过,不知道具体场景,今天我也终于实际用到了,大彻大悟了。

2024-03-25 14:20:42 265

原创 接口性能调优

其实所有的调优,无非就是在这一整个调用链路中让各个部分的性能发挥到最大,这就是调优。然而着重部分就是数据库部分,IO部分,CPU部分。所有的项目的底层都会用到数据库,所以任何项目第一步必须要让数据库达到最好的性能;

2024-03-05 11:08:52 564

原创 过滤器和拦截器的区别

根据我自己的开发经验,我觉得拦截器(Interceptor)在spring web的应用更广泛,一个重要原因是:拦截器(Interceptor)是在spring-webmvc包下面的,它直接收spring管理,我们在实际开发中,想要拦截或者过滤肯定是要对一些数据进行处理,那就大概率会连接service服务,所有我们要使用spring容器中的服务,这就必须是拦截器才行。过滤器不在spring管理,想要调用service服务就还有在手动加入容器。

2024-03-04 19:31:37 1449

原创 类的实例化顺序

静态代码总是最先执行, 父类总是优先于子类创建。

2024-02-27 10:55:51 381

原创 Java只有值传递,不存在引用传递

在Java中,虽然对于对象类型参数实际上是传递对象的引用,但仍然被称为值传递的原因是因为传递的是引用的副本,而不是原始的引用本身。但是,如果在方法内部重新为参数赋新的对象引用,原始变量并不会改变,因为这只是修改了参数副本中保存的引用,而不是原始引用本身。很好理解就是把基本的数据类型的数据传递给一个新方法,供新方法使用,无论怎么使用都是不会影响原来的值的,因为这是把值的副本传递过去。:顾名思义跟值传递的差别就是,把对象的引用传递过去,供方法使用,既然引用都传递过去了,那肯定是可以随意修改这个对象的值。

2024-02-21 13:31:41 392

原创 Java启动停止Windows服务进程

我们通常会开发一个监测功能,能够检测每台服务器的状态,并且能够知道某个进程的状态,如果它宕机了,我能能直接在页面就重启服务重启进程,不需要再找到运维人员去线下机房重启服务,或者远程重启服务,这样很麻烦。我觉得这个功能还是挺常用的,再我们实际企业应用中,肯定都是多台服务器同时部署使用的,这其中就会有一些服务器是数据服务器、接口服务器、专用服务器、或者其他系统的服务器等等。这就是我们启动和关闭的进程程序。url就是这个进程对应的具体位置,可以直接右键打开位置,然后把路径拷贝过来就行了。很简单,直接上代码吧。

2024-01-10 19:36:55 746

原创 Java服务注册为Windows服务

当我们开发好一个Java应用时,再部署到服务器时,最简单的方法是直接java -jar xxx.jar 。但是这样非常的不优雅,后台必须一直保留着一个控制台黑色窗口,很不爽,总可能被别人误关,而且最重要的是如果服务器重启了, 还要手动去再启动Java程序,很麻烦。然而把Java程序注册成Windows服务就完美解决了这些问题。

2024-01-10 17:08:35 908

原创 WebSocket 简介

与传统的 HTTP 请求-响应模型不同,WebSocket 提供了一个持久化的连接,允许服务器主动向客户端推送数据,而不需要客户端发起请求。:WebSocket 协议已经得到广泛支持,并且主流的浏览器和服务器框架都提供了对 WebSocket 的原生或第三方库的支持。:由于 WebSocket 使用较少的标头数据,并且不需要频繁地建立和断开连接,它具有较低的开销和更高的性能效率。:WebSocket 支持全双工通信,即客户端和服务器可以同时发送和接收消息,实现实时的双向数据传输。

2023-12-15 15:59:04 95 1

原创 WebSocket实战教学 java ( springboot ) + react

今天它来了,基于前后端分离项目,springboot + react 架构,实现前后端长链接,功能。WebSocket的简单易用,完美实现了小项目中的这种前后端实现的功能。

2023-12-15 15:52:51 550

原创 MySQL数据库主从同步

首先要安装好MySQL镜像,然后直接创建MySQL服务。上面的命令的作用是,把容器的3306端口映射到主机的3307,把容器里面的文件夹挂载到主机,最后是设置密码,并安装5.7版本。运行结果如下:再创建从库docker ps接下来开始配置,两个数据库都要配置。使用命令 ,创建配置文件。主数据库配置信息如下。从数据库配置信息如下:两个的配置只有server_id和read-only不同。

2023-12-08 09:00:24 172

原创 VBS连接MongoDB数据库教学

今天更新这篇文章,是公司别的部门找我帮忙实现的一个功能。我一开始一听简单的一b,就连个数据库么, 我java开发工程师什么语言不会,都一个吊样。结果这个活, 干了好几天,哈哈,当然这期间大部分的时间不是写代码,是调试平台,我司有一个自己的自动化平台,我只想对这个平台说:你星星个星星星。简单介绍一下这两个东西。VBS 的全称是 Visual Basic Scripting Edition。

2023-12-07 14:24:30 314

原创 MySQL连表操作及有趣操作

这个把我们想要置顶或者垫底的特殊数据改变成0,其他值为1,再进行 0 和 1 的排序,就实现了,我们特殊业务逻辑的处理。

2023-11-14 13:54:49 226

原创 Java 反射

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。

2023-11-13 13:16:50 218

原创 高并发秒杀实战教学

核心思想就是使用Redis中的信号量来控制减库存,完成快速秒杀。这样一个最简单的高并发下单减库存逻辑就完成了。看一下我本机测试的结果:我本机秒杀一次,秒杀接口的处理速度是7ms, 我们把中间的网管转发,网络传输时间再加上,一次秒杀的请求大约可以是15ms,那么我们单个tomcat至少能够支持1000线程的并发,那么我自己这台电脑现在1秒钟能够支持的并发就达到了1*1000ms/15ms*1000 = 6.666万。所以如果想要达到百万并发,我们可以提升服务器硬件质量或者集群部署就能轻松达到。

2023-11-10 14:55:06 513 1

原创 Vue父子组件通讯

这是因为vue项目多数使用各种第三方UI组件,例如 vuetify、element-ui、IView 等组件,导致一层的.$parent 没有到我们所看到的父级组件,而是在第三方组件中,所以解决办法是添加多层.$parent。"TypeError: this.$parent.getFatherMethed is not a function" 方法未定义。解决:写成this.$parent.$parent.$parent.getFatherMethed()可以正常调用。

2023-11-08 14:56:36 208 1

原创 Vue路由跳转几种参数传递方式

跳转到指定url路径,但是history栈中不会有记录,点击返回会跳转到上上个页面 (就是直接替换了当前页面)跳转到指定url路径,并想history栈中添加一个记录,点击后退会返回到上一个页面。向前或者向后跳转n个页面,n可为正整数或负整数。

2023-11-08 14:53:53 280 1

原创 设置Docker自启动及镜像自启动

Docker安装在Centos7上,设置Docker自启动及镜像自启动

2023-11-07 14:34:22 1383

原创 什么是事务,本地事务,分布式事务

通俗讲:我们是一条船上的人。没错这就是事务。人就是操作,船就是事务容器。不管有多少人,只要这些人都上了这条船,那么他们统一就是一个事务,即:他们可能同时抵达岸边,也可能同时翻船沉海,也可能同时又回到出发点,就是他们所有人的状态是一样的。事务的四大特性:1、原子性: 就是这整个事务是一个整体不可分割,就想上面举的例子这一条船就是一个事务,不能在分割。一个事务中的所有操作都是统一的,要么成功要么失败。就像船要么到达岸边,要么翻船。每个事务之间互不影响,就像船一样,两个船之间没有任何关系。

2023-11-06 13:53:27 267

原创 RabbitMQ的消息丢失、消息重复、消息积压问题

首先,RabbitMQ的三大问题:消息丢失、消息重复、消息积压这三个问题中最严重的就是消息丢失的问题。那我我们就来反向介绍一下这几个问题的最简单处理办法。

2023-11-03 10:41:06 560

原创 基于RabbitMQ实现下单减库存的最终一致性分布式事务

用户下单调用订单服务,我们直接把这个消息发给MQ的订单交换机,同时调用远程库存服务锁定库存。:发给订单交换机的消息自动转发给死信队列,死信队列经过30分钟后过期会自动转发给我们另一个普通的队列。:跟第二步的同时,调用了库存服务的锁库存方法后,库存服务也会给库存交换机发一条消息,交换机转发给死信队列,经过60分钟后过期再转发给另一个普通队列。

2023-11-02 10:34:28 1605 1

原创 什么是幂等性,怎么实现幂等性

幂等性问题,通俗讲就是用户对一个接口进行反复调用而引起数据错误问题。当然这个问题不一定是用户多次点击所导致,也可能是网络延迟等等多种原因所导致。尤其在我们开发的模块涉及到钱的时候,幂等性就非常重要。实现幂等性也有很多方法。其实我们最常使用到的就是为了实现幂等性。这些都是比较常见的,简单的。肯定也不是我今天想要记录的。(我们就拿最熟悉的电商下单页面来讲)因为我们的服务都是分布式集群架构的,所有这里在高并发下就存在这问题。在redis的查询和删除的空隙时间肯定还会有请求进来导致出问题。

2023-10-11 16:53:11 183 1

原创 RabbitMQ的消息可靠投递

结合我上一章总结的RabbitMQ的基本知识,其中的主要消息传递出现在下图三个节点,所以我们要做好消息的可靠投递就要保证这结果地方的信息不能丢失。实战1、在我们写代码之前我们首先要创建好我们自己的交换机、队列、绑定关系。然后才能进行消息的发送和接受。这几项的设置最简单的方式可以在我们的RabbitMQ的可视化界面直接操作,也可以在Java代码中设置。

2023-09-26 19:40:00 193

原创 RabbitMQ 基本介绍

是众多中的一种。为什么使用?这就不得不说一下的作用了。1、异步异步, 其实也就类似多线程一样,在我们实际开发中最经常使用的场景就是,我们可能处理完成一个业务,想要发邮件的方式来通知用户。又因为这个发邮件只是通知用户,对实际的业务又没有任何影响,所以我们就可以把发邮件的部分使用的这种异步方式实现,缩短了程序的应时间。异步,缩短了响应时间。

2023-09-22 13:53:13 151 1

原创 单点登录流程

单点登录简单流程分析

2023-09-19 14:01:40 143

原创 Session 的使用

Session 的使用

2023-09-14 22:28:20 212 1

原创 Git GitLab 最简单使用

Git GitLab 最简单操作使用

2023-09-14 09:48:56 368 1

原创 Redis缓存篇

Redis 基本操作, 数据一致性的相关问题及解决方式

2023-09-13 18:18:16 56

空空如也

空空如也

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

TA关注的人

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