自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Coder Xu

持续学习,保持专注

  • 博客(108)
  • 收藏
  • 关注

原创 【图文详解】入职必备——SVN使用教程

文章目录前言1、SVN简介2、SVN仓库3、SVN客户端4、SVN基础操作5、撤销和恢复6、添加忽略7、解决冲突8、分支9、代码暂存前言又是一年毕业季,不少小伙伴纷纷入职,我也找到了理想的工作。正式进入公司后并不会像我们自学时自己一个人随心所欲地写代码,需要我们和同事进行协同开发,此时代码管理工具是必不可少的,目前常用的两款工具是:SVN 和 Git,今天我们就来学习一下SVN的使用!该技术博客是关于B站SVN视频教程的笔记总结,希望能为大家带来帮助,视频链接如下:https://www.bili

2021-07-04 11:32:39 126890 18

原创 轻松理解前后端分离(通俗易懂)

文章目录一、前言二、前后端分离本质三、1.前后端分离2.不使用前后端分离会有什么问题一、前言该技术博客是关于楠哥教你学Java的前后端分离课程笔记总结,希望可以为大家带来帮助!二、前后端分离本质大家往往会陷入一个误区,试图用具体的技术来描述什么是前后端分离这个一个概念,这是答非所问的。一提到前后端分离就是SpringBoot + Vue,这并不是正确的理解!我们问的是:你为什么采用这种方式解决问题回答却是:你是如何去具体做这件事前后端分离是:软件技术和业务发展到一定程度,在项目管理工作上必须进

2021-03-28 21:18:01 115377 7

原创 计算机底层原理——汇编语言

前言如果我们想要做高级程序员,汇编语言是我们必经之路,对我的技术提升非常非常重要,总而言之,想要成为高级程序员,我们必须要学会汇编语言,汇编语言是非常重要的计算机底层技术,一般用于底层的编写。不懂汇编的程序员算不上一个好的程序员,充其量是一个熟练使用某种语言的工程师,而编程高手一定要研究底层。1.语言何为语言,就是人和人之间交流的工具。而汇编语言就是计算机的语言。机器语言(二进制):主流的电子计算机只认识 0和1,因为在电路中只有两种状态,要么通电要么断电,我们用数字表示这两种状态就是0和1,我

2020-08-19 12:51:57 17797 9

原创 Prometheus + Grafana 监控 SpringBoot 应用

服务器(开放 8080、9090、3000 安全组),不舍得花钱的小伙伴可以使用虚拟机,服务器上环境主要分为。经过上述操作,Prometheus + Grafana 监控 SpringBoot 应用的搭建流程就完毕了!此时想要 Grafana 整合 Prometheus,完成指标数据的监控,需要先。项目流程操作这里就省略了,我创建的 SpringBoot 版本是。,可以看到 Prometheus 的页面,说明部署成功了。这里不详细说明如何安装,流程参考该博客第。

2024-06-27 20:10:14 1045

原创 百万级 QPS 接入层网关架构方案演进

随着PC、移动互联网的快速发展,越来越多的人通过手机、电脑、平板等设备访问各种各样APP、网站系统。国民级的产品应用接入层QPS甚至能够达到百万、千万级别,那么针对这么大请求量,系统接入层该如何设计才能确保能够承载大请求的同时,保证可用性、拓展性呢?通过该文章我们来梳理一下接入层架构方案。

2024-06-20 21:33:49 963

原创 【K8S】通过官方 kubeadm 快速搭建 Kubernetes 集群

等待3分钟后,查看 Pod 运行状态,发现 pods 全部状态为 Running 成功,这样就说明 k8s 集群部署完毕了!下载完毕后,修改 calico.yaml 文件中的。2.1 章节每步操作需要 3 台服务器都执行。2.2 章节每步操作需要 3 台服务器都执行。

2024-06-18 18:03:51 887 2

原创 手把手搭建 Nginx + VIP + Keepalived 高可用集群

集群中,有一个为主Nginx,多个备Nginx,整个集群对外提供一个VIP,通过VIP访问主Nginx,备用Nginx负责监控主节点运行状态,如果发现主节点宕机,则选举其中一个备用Nginx接管主节点的工作,VIP绑定到新选举的主Nginx节点上,这个流程俗称IP漂移,从而实现了高可用。在之前单体架构开发时,是一个用的较为频繁的高可用技术,比如MySQL、Redis、MQ、Tomcat等都会通过。就能够看到Nginx首页,停止掉某台机器上的keepalived就会出现故障转移,VIP漂移现象!

2024-06-14 15:26:52 1053

原创 Docker 部署 Redis Cluster 高性能高可用分片集群

阿里云的Redis集群服务方案,采用的就是 Redis Cluster 集群模式Cluster 模式是 Redis 3.0 之后推出的集群方案,采用多主多从的应用集群,承载大量应用缓存数据,由于采用无中心结构,集群中每个节点保存数据和集群的状态,每个节点之间都是互相连接的,采用gossip协议相互通信、交换节点数据信息。(企业首选Redis集群方案 👍)Redis官方推荐 Cluster 集群最低配置是3主3从。

2024-06-05 18:00:27 900

原创 ProxySQL + MySQL MGR 实现读写分离实战

万字详解 MySQL MGR 高可用集群搭建ProxySQL 和 ShardingJDBC 属于竞品关系,国内使用ShardingJDBC更多,国外使用ProxySQL更多。当我们搭建好了MGR集群,由于组复制的存在,保证每个节点的数据都是强一致的。不会出现主节点有数据,而从节点没有数据的情况。

2024-06-03 21:45:49 827

原创 万字详解 MySQL MGR 高可用集群搭建

MGR(MySQL Group Replication)是MySQL 5.7.17版本诞生的,是MySQL自带的一个插件,可以灵活部署。保证数据一致性又可以自动切换,具备故障检测功能、支持多节点写入。集群是多个MySQL Server节点共同组成的分布式集群,每个Server都有完整的副本,它是基于ROW格式的二进制日志文件和GTID特性。在单主模式下, 组复制具有自动选主功能,每次只有一个 server成员可以作为主节点。单主模式 group 内只有一台节点可写可读,其他节点只可以读。

2024-06-01 18:07:09 1668

原创 【MySQL】深入解析事务与MVCC

指的是:事务执行前后,数据库中的数据是一致的。此时可以看到,由于记录的事务id为1,不论是事务A还是事务B的事务id都是 > 记录的trx_id,所以事务A和事务B都能够读取到这行数据。,该机制是InnoDB存储引擎特有的,它解决了并发事务场景下的读写性能问题,完全不需要加锁。,所以对于事务B来说就可以看见事务A修改并提交的数据,由于每次查询操作都会创建最新的。此时事务B再次读取记录信息时,就会发现这条记录的事务id为2,在事务B的。指的是:数据库中多个事务操作之间不会互相干扰,并发执行的事务之间是。

2024-03-23 13:24:44 1003

原创 【MySQL】深入解析索引实现原理

对于MySQL数据库来说,有个非常重要的概念就是索引,索引的用途是:加速我们对MySQL数据库的查询操作性能,减少磁盘IO操作。注意这里说的是查询,而不是新增、修改、删除。索引不仅对新增、修改等操作没有性能提升,并且还会降低这类DML(非查询SQL)操作的性能,原因很简单,因为DML操作还需要我们对索引结构不断进行维护…表数据量少字段重复数据多频繁进行DML操作的表如果把MySQL比喻成一本书籍,那么索引。

2024-03-14 20:26:44 1010

原创 【MySQL】深入解析日志系统:undo log、redo log、bin log

MySQL数据库提供了功能强大的日志系统,今天来深入学习下这三个日志实现细节。

2024-03-05 13:02:46 1375

原创 【MySQL】深入解析 Buffer Pool 缓冲池

MySQL数据库具有可拔插的存储引擎,其中最常用的是InnoDB,而Buffer Pool缓冲池是InnoDB存储引擎中特有的内存结构,MySQL向操作系统内存申请一块内存空间用于缓冲池使用,因为硬盘和内存性能差距大,所以Buffer Pool缓冲池用于协调CPU速度和硬盘速度的鸿沟,大幅度提升MySQL数据库的读写性能。按照我们的惯性思维,这里会有一个疑问:不都说MySQL的数据是基于硬盘存储吗,为什么这里会提到缓冲池内存这概念?MySQL当然是通过硬盘持久化存储。

2024-02-28 20:56:01 1407

原创 TCP如何保证传输可靠性?

在开始阅读该博客之前,先要好好了解一下TCP报文头部到底有那些信息,阅读后续内容时有任何模糊的地方都可以回来这里查看梳理发送方端口:发送网络包程序的端口号接收方端口:接收网络包程序的端口号序列号:也叫序号(seq),发送数据的顺序编号。发送方告知接收方数据包有多少个字节。确认号:也叫ACK号(ack),接收数据的顺序编号。接收方告知发送方已经收到所有数据的第几个字节。首部长度:也叫数据偏移量。表示数据部分的起始位置。保留:暂时没用控制位:也叫标志位。上图中蓝色部分,又叫标志位。

2024-02-19 18:11:22 1748 1

原创 面试官:说说Redis的SDS底层实现原理

该文章已面试场景进行叙述,场景纯属编造,请勿当真!大家好,我是徐志斌。现在找工作真的好难,今天我早早的来到了面试现场,这家公司的HR小姐姐也是很热情的接待了我。正当在会议室中沉浸在和HR姐姐聊天的喜悦中时,沉重的脚步声慢慢走来。只见一个身穿格子衫的秃头大哥抱着笔记本走进来,一看就是公司的技术大佬,我就知道今天的面试怕是凶多吉少。

2023-11-07 22:04:06 363 1

原创 Docker部署SpringBoot +Vue项目流程详解(含域名 + HTTPS)

本次整体部署操作使用阿里云服务器,这里我选择的是香港地区的2核2G ECS(可以省略域名备案操作)。NginxMySQLRedis后端项目前端项目。

2023-10-22 17:17:31 2489 1

原创 【LarkDay】UE开发者沙龙活动回顾

更进一步说,随着技术的迅速进步,现代的3D/XR应用开始集成更加复杂的物理效果、真实的光线追踪、以及更高级的材质和纹理,这无疑进一步增加了渲染的复杂性。在下面的分享中,首先,我会从实时云渲染解决方案LarkXR的系统架构入手,为大家简要介绍实时云渲染的技术路线;第二,我会详细讲解LarkXR根据多年的行业实践沉淀的多场景功能组件,最后我会与大家分享LarkXR与UE的合作以及像素流送插件的产品化、商业化的实践,并展示LarkXR的多样丰富的交付方式及交付体验。此模式非常适合教育场景。

2023-09-05 15:58:37 285

原创 【‘Not enough space‘ (errno=12)】通过swap扩容,解决内存溢出

扩容可用的运行内存空间,首先声明扩容的内存容量(本次我扩容大约。今天使用Docker部署Kafka时,发现启动失败,通过。删除swap空间,然后重新设置上述流程!注意:如果之前配置设置错误,可以通过命令。

2023-05-13 16:59:55 1570 4

原创 Docker部署MySQL主从复制架构

接下来所有的命令通过Navicat执行即可。是Yes,说明主从复制搭建成功!查询从节点状态,其中。

2023-05-07 14:02:44 418

原创 【实现HTTPS访问】Nginx + SSL证书 + 域名整合流程详解

低于3个月使用期的服务器不可以备案(不可以使用域名访问),我购买的是7天有效期,服务器地址为。:中国大陆的阿里云服务器(套餐为3个月以上),想要使用域名访问服务器需要。将下载好的 SSL 证书上传到服务器中。,具体购买流程这里不做过多讲解。将下载好的 SSL 证书放到。(SSL证书和域名进行绑定)(域名和IP进行绑定)

2023-05-01 18:01:00 2146

原创 【本地项目】上传到【GitLab】流程详解

文件,该文件中存放了SSH密钥内容,将密钥内容粘贴到GitLab中,点击。注意:本篇文章中提到的上传流程所需要的命令,几乎在GitLab的。这样,我们的本地项目就成功上传到GitLab中了。执行完命令后,需要连续回车三次,最后会在。

2023-02-09 20:32:59 10651 3

原创 解析JVM类加载器

类加载过程中,加载阶段第一步操作就是通过一个类的全限定名获取此类的二进制字节流。实现这个动作的代码就是类加载器。任意一个类都必须由加载它的类加载器和这个类本身共同确定类在JVM中的唯一性,每个类加载器都拥有独立的类名称空间;所以即使两个类来自于同一个Class文件,被同一个JVM加载,只要加载它们的类加载器不同,这两个类就必定不相等。站在Java虚拟机角度来看,只存在两种不同的类加载器:JDK9之前,绝大多数Java应用都会使用一下三个系统提供的类加载器进行加载:当然还可以加入自定义类加载器进行拓展,例如

2023-01-26 19:39:34 371 1

原创 深入剖析JVM垃圾收集器

深入理解Java虚拟机》垃圾收集器是GC的实践者,目前常用经典的垃圾收集器有7款,如下图所示:收集器之间的连线说明可以搭配使用,JDK9标识代表在该版本官方已经不支持配合使用了!接下来逐一介绍这几款垃圾收集器。

2023-01-23 20:56:21 601

原创 【Netty】实现IM聊天室案例Demo

该文章不会详细介绍Netty相关概念和原理,主要目的是介绍如何快速构建聊天室Demo。不会在文章主体过多说明代码流程,文章中的代码已经配备了详细的注释。,通过该网页为我们的服务端发送数据,效果如下,说明连接建立成功!启动,监听8080端口,等待客户端发送数据。调整自定义事件中的代码,让其支持。调整自定义事件中的代码,监听。最后,使用Main方法调用。

2023-01-17 21:42:22 1815

原创 Arthas诊断追踪性能案例

阿里巴巴开源的Java诊断工具,基本使用场景是定位复现一些生产环境比较难以定位问题。可以在线排查问题,以及动态追踪Java代码,实时监控JVM状态等等。

2023-01-01 15:08:22 1419

原创 找不到showmount命令:-bash: showmount: command not found

在K8S集群的Worker节点上,使用。

2022-10-14 23:21:41 4934

原创 【K8S】NFS网络文件系统搭建流程

前置环境:三台云服务器,部署了1Master 2Worker的K8S集群。接下来,我们将要搭建NFS文件系统(类似于主从同步的方式)出现下图,说明/nfs/data目录暴露在外,上述配置成功。每个Worker节点执行。

2022-10-13 20:27:27 866

原创 【K8S】部署Ingress流程详解

如果看到这样的场景,说明Ingress部署成功了!集群配置:1Master,2Worker。编辑文件过程中搜索命令:" / "

2022-10-12 21:50:00 1239 1

原创 Worker节点加入K8S集群报错:error execution phase preflight: couldn‘t validate the identity of the API Server

Kubernetes的Bug场景

2022-10-08 22:47:37 2016

原创 线程锁(ReentrantLock、synchronized)为何不能用作分布式锁

1、为什么使用分布式锁分布式锁主要应用在大型的分布式架构场景,分布式架构可以简单理解为将一个Web应用,部署在多个应用服务器上:分布式锁适用于分布式架构场景,例如:商品秒杀抢优惠卷如果没有保证线程安全,就可能会出现商品超卖、优惠卷发超等现象,例如下图代码:我们会判断商品库存是否大于0,如果有库存就会将库存 - 1,不过有个问题,如果同时有多个用户(多线程)同时发送请求给接口,例如三个用户同时请求接口,同时获取商品库存、扣除库存,很有可能商品库存最终只扣除1次,这时候数据安全性就得不到保障

2022-05-18 12:46:37 2466

原创 Tomcat肥猫越来越胖,干崩了我的云服务器

文章目录问题描述解决方法解决方式问题描述一个月前,我申请了一年的2核4G的腾讯云服务器,将一个单体架构Java应用部署到这台新开封的云服务器上面,就在今天,我依然一如既往的访问了一下服务器(想好好欣赏一下),但是事与愿违,它挂掉了。。接着我通过 ping 命令来访问自己的服务器ip地址,结果发现可以ping通(服务器正在运行),这就奇怪了,昨天还能访问的网站为什么今天就没办法访问了?不服气,我登陆了腾讯云官网,查看了一下自己的服务器状态,发现确实没有任何问题。突然我发现了一个醒目的地方,我的系统盘

2022-05-05 17:26:05 1920 7

原创 深入理解JUC之Synchronized原理

文章目录1、理解Synchronized2、理解Java对象头3、Monitor管程(监视器)4、Synchronized进阶原理4.1、偏向锁4.2、轻量级锁4.3、重量级锁1、理解SynchronizedSynchronized是JDK为我们提供的锁,主要用于处理线程安全问题,线程安全问题的根本原因是线程上下文切换,导致字节码指令的交错,我们通过Synchronized保护共享资源,在并发场景下,采用上锁的方式使得资源只能某个时刻只能被一个线程操作,这样防止多个线程同时操作共享资源导致的错误问题,保

2022-04-06 20:13:21 1132

原创 并发事务问题与事务隔离级别

文章目录1、什么是事务2、并发事务所遇到的问题2.1、脏读2.2、不可重复读2.3、幻读3、事务隔离级别该技术博客根据B站黑马MySQL教程做的笔记总结希望能为大家带来帮助!感谢你的三连1、什么是事务学习并发事务之前,需要理解什么是事务:事务:一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。例如转账案例,A账户给B账户转账1000元,那么A账户就会失去1000元,B账户增加1000元,那么这两

2022-03-18 18:34:31 1908

原创 【日志系统】redo log 和 binlog 详解

文章目录1、MySQL基础架构2、连接器该博客是我根据极客时间的付费课程《MySQL实战45讲》做的笔记总结希望能为大家带来帮助,感谢你的三连!1、MySQL基础架构先给出的是 MySQL 的基本架构示意图,可以看到 SQL 语句在 MySQL 的各个功能模块中的执行过程:根据上图得知,可以分为 Server 层和存储引擎层两部分:Server 层:涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过

2022-03-18 12:17:52 2838

原创 深入理解ThreadLocal

文章目录1、什么是 ThreadLocal2、ThreadLocal 使用案例3、ThreadLocal和 sychronized区别1、什么是 ThreadLocalThreadLocal类用来为线程内部提供局部变量。该变量在多线程环境下读写能保证各个线程变量独立于其他线程内的变量。不同的线程之间不会相互干扰!总结:线程并发:在多线程并发场景下(单线程不需要使用ThreadLocal)传递数据:我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量线程隔离:每个线程变量都

2022-03-08 18:56:41 1249 2

原创 VirtualBox + Vagrant 快速搭建 Linux 环境

文章目录1、前言2、下载安装 VirtualBox3、使用 Vagrant 完成搭建3.1、下载安装 Vagrant3.2、通过Vagrant安装并启动镜像3.3、连接Linux系统1、前言我们通常使用VMWare + Centos7方式来搭建Linux环境,通过在VMWare虚拟机上安装Centos7来完成环境的搭建,但是这个过程非常的繁琐,接下来介绍一种新的搭建方式,非常小巧方便!2、下载安装 VirtualBox首先登录到VirtualBox的官网:https://www.virtualb

2022-02-22 21:35:17 832 1

原创 LeetCode反转链表图解

LeetCode206:反转链表(Easy)题目图解代码详解:class Solution{ private ListNode reverseNodeList(ListNode head){ //1.定义三个节点,分别是pre,cur,nex ListNode pre = null; ListNode cur = head; ListNode nex = null; //2.链表进行反转,当cur为null停止循环 while(cur != null){

2022-02-09 17:05:38 957

原创 Java8常用特性:Lambda、Stream流、方法引用、函数式接口

文章目录1、函数式接口2、Lambda表达式3、方法引用4、Stream流5、Optional类1、函数式接口定义:只包含一个抽象方法的接口,称为函数式接口常见的函数式接口举例:我们可以在一个接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口。比如我们创建一个接口,里面定义两个抽象方法后家上注解,但是这样会发现编译就会报错,因为它并不是函数式接口2、Lambda表达式表达式语法:Lambda 表达式:在Java 8 语言中引入的一种新的语法元

2022-02-02 21:40:36 3782 3

原创 Docker 部署中间件总结(MySQL、Redis、ElasticSearch、XXL-JOB、Sentinel等...)

文章目录1、Linux安装Docker1.1、卸载旧版Docker1.2、安装Docker前置准备1.3、安装Docker1.4、启动Docker服务1.5、设置Docker开机自启动1.6、配置Docker阿里云镜像加速2、Docker安装MySQL2.1、下拉MySQL镜像2.2、启动MySQL镜像2.3、修改MySQL配置3、Docker安装Redis3.1、下拉Redis镜像3.2、启动Redis镜像1、Linux安装Docker本文采用的版本是Centos7版本的Linux系统1.1、卸

2022-01-30 10:28:42 6484 1

空空如也

空空如也

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

TA关注的人

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