自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis 单线程与多线程模型详解

总的来说会监听服务端的读事件,同时也会监听客户端的读事件和写事件,分别由专门的处理器处理一共由三种事件服务端可读(连接应答处理器)客户端可读(命令请求处理器)客户端可写(命令回复处理器)根据其中的特点可以概括为IO多路复用+事件派发Redis单线程模型的瓶颈在哪里?redis执行命令也就是ms级别,而将数据放入缓存,也就是纯内存操作,也花不了太长时间,那真正可以使用多线程优化的地方时哪里?就是网络IO因此,在Redis6.0版本中引入了多线程,目的就是为了提高IO读写效率,因此在。.........

2022-07-30 17:18:55 504

原创 Redis 数据类型String,List,Set,ZSet,Hash详解

可以看到Redis在string类型所做的优化已经十分完善,根据数据类型,数据大小采用不同的编码方式,以此来节省空间,提高效率。

2022-07-23 21:24:09 557

原创 Redis 数据结构SDS,Intset,Dict,Ziplist,Quicklist详解

得出寻址公式为: startPtr+(sizeof(编码格式)* index)= NowPtr

2022-07-22 21:07:29 517

原创 Java基础篇 Java 反射机制详解

反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。但是我们一般是不知道具体类的,基本都是通过遍历包下面的类来获取 Class 对象,通过此方式获取 Class 对象不会进行初始化。反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。比如:log4j,Servlet、SSM框架技术都用到了反射机制。

2023-07-17 18:04:50 363

原创 Docker笔记 Dockerfile镜像原理以及制作镜像

(9)ENTRYPOINT 指定容器启动时需要运行的命令,注意ENTRYPOINT命令可以追加命令,即如果有多条ENTRYPOINT命令会全部执行,这是ENTRYPOINT命令和CMD命令最大的区别。所以tomcat镜像为什么有500MB原因就是用户只看到了tomcat镜像,看不到具体的细节,在这个tomcat镜像的背后还隐藏着200多MB的JDK和rootfs基础镜像。(8)CMD 指定容器启动的时候需要执行的命令,注意CMD只有最后一个命令会生效。(3)RUN 镜像构建时需要执行的命令。

2023-07-13 18:40:04 1019 1

原创 Docker笔记 容器的数据卷

容器的数据卷

2023-07-11 16:20:53 1344

原创 Docker笔记 Docker架构与常用命令

Docker笔记 Docker架构与常用命令

2023-07-10 17:01:15 526

原创 JVM 垃圾回收详解

1.强引用以前我们使用的大部分引用实际上都是强引用,这是使用最普遍的引用。如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它。当内存空间不足,Java 虚拟机宁愿抛出 OutOfMemoryError 错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足问题。2.软引用如果一个对象只具有软引用,那就类似于可有可无的生活用品。如果内存空间足够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。

2022-09-14 17:55:01 249 1

原创 JVM 内存结构详解

程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。。

2022-08-23 17:44:42 365

原创 Docker Desktop创建ZK集群和Kafka集群 详解

大家好 我是积极向上的湘锅锅💪💪💪首先得要有一个能正常运行的Docker Desktop网上教程很多这里就不再阐述我的版本是Docker Desktop 4.11.1。

2022-08-14 12:25:10 1026

原创 内存管理(OS)详解

操作系统的内存管理主要负责内存的分配与回收(malloc 函数:申请内存,free 函数:释放内存),另外地址转换也就是将逻辑地址转换成相应的物理地址等功能也是操作系统内存管理做的事情总结来说:如果直接把物理地址暴露出来的话会带来严重问题,比如可能对操作系统造成伤害以及给同时运行多个程序造成困难。...

2022-08-09 18:06:26 943

原创 进程与线程(OS)详解

程序计数器主要有下面两个作用:字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程上次运行到哪儿了。需要注意的是,如果执行的是 native 方法,那么程序计数器记录的是 undefined 地址,只有执行的是 Java 代码时程序计数器记录的才是下一条指令的地址。所以,程序计数器私有主要是为了线程切换后能恢复到正确的执行位置。................

2022-08-08 18:16:46 722

原创 MySQL binlog归档日志和redo log事务日志详解

Buffer pool是InnoDB存储引擎层的内存缓存池,查询都是先从Buffer pool先查询,没有命中再从磁盘加载,这样就减少了IO的消耗更新表数据的时候,也是在Buffer pool里面修改,同时,会将修改的记录记录到redo log buffer里面,根据选择的刷盘时机刷屏到redo log里面......

2022-07-27 12:12:50 1604

原创 IO模型 阻塞IO,非阻塞IO,IO多路复用,信号驱动IO,异步IO详解

当用户应用想直接操作硬件上的数据时,是没有权限直接操作的,必须使用内核对外提供的指令或者函数如果数据没还有准备好,必须等待数据就绪,总的来说,各种的IO模型主要是相差在俩个阶段等待数据就绪将磁盘的数据读取到内核缓冲区读取数据将内核缓冲区的数据读取到用户缓冲区。..................

2022-07-26 18:48:03 778

原创 AQS 抽象队列同步器详解

AQS,英文名是AbstractQueuedSychronizer,翻译过来就是抽象队列同步器可以看我们的java.util.concurrent.locks下面,会发现AQS其实就是一个抽象类AQS为构建锁和同步器提供了一些通用功能的是实现,因此,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore等等。......

2022-07-23 14:11:37 378

原创 volatile关键字 详解

Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。.........

2022-07-22 12:42:19 164

原创 Synchronized 同步锁详解

Synchronized是JAVA的关键字,是基于JVM层面的独占式的悲观锁,同时也属于可重入锁经常来用于解决多个线程之间访问访问资源的同步性,保证在同一时刻只有一个线程访问这个资源。

2022-07-21 12:27:07 1508

原创 3种常用的缓存读写策略详解

大家好 我是积极向上的湘锅锅💪💪💪希望小伙伴们秋招一起上岸👫👫👫Cache Aside Pattern(旁路缓存模式)是目前使用的最多的缓存模式,通常使用的场景是读多写少,比如用户信息,都是一旦写入缓存,几乎不会修改,但会出现数据不一致的情况读:写:那问题来了:1. 为什么是删除缓存而不是修改缓存?场景: 比如我要修改100次数据库如果按照更新缓存的步骤,那我缓存就要更新100次,那之前的99次都是无效数据如果我按照删除缓存,那只会删除一次,且查询的数据一定是最新的(数据一致性的情况下)2....

2022-07-13 10:34:50 768

原创 2022 计算机网络面试题整理(二)

大家好 我是积极向上的湘锅锅💪💪💪希望小伙伴们秋招一起上岸👫👫👫TCP是面向连接的,也就是我们熟知的TCP三次握手,而UDP是无连接的,在发送数据之前不需要要建立连接TCP通过校验和,确认序列号,滑动窗口,超时重传,对乱序或者重复的数据进行排序或和丢弃,流量控制,和拥塞控制进行可靠的传输,而UDP只是保证尽可能的传输,尽最大努力进行交付所以根据以上的特点,我们可以知道TCP因为是面向连接且提供一个可靠的数据传输,跟UDP对比,有以下结论扩展:在我们的HTTP3.0(QUIC)也是基于UDP......

2022-07-05 12:17:43 254

原创 2022 计算机网络面试题整理(一)

大家好 我是积极向上的湘锅锅💪💪💪希望小伙伴们秋招一起上岸👫👫👫从用途上看:从提交方式上看:从传输数据的大小限制看:从缓存来看扩展:在我们的HTTP3.0(QUIC)也是基于UDP的传输层协议,但是也实现了可靠传输,感兴趣的小伙伴可以了解一下为了解决HTTP中存在的数据安全问题,HTTP通过对称加密,非对称加密,数字证书和数字签名的方式来保证未完待更........................................................................

2022-06-30 12:51:55 569

原创 MVCC 底层原理详解

大家好 我是积极向上的湘锅锅💪💪💪满满的干货 欢迎点赞关注收藏🔥 🔥 🔥顾名思义,读取的就是当前最新的版本,而且读取的时候保证其他并发事务不会修改该记录,会对记录加锁(共享锁或者是排它锁),如:select … lock in share mode(共享锁),select …for update、update、insert、delete(排他锁)都是一种当前读简单的 select(不加锁)就是快照读,快照读读取的可能是最新版本,也有可能是历史数据Read Committed:每个select......

2022-06-16 21:25:45 914 1

原创 MySQL 索引底层原理详解

大家好 我是积极向上的湘锅锅💪💪💪索引是一种用于快速查询和检索数据的数据结构。常见的索引结构有: B 树, B+树和 Hash。索引的作用就相当于书的目录。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包含以下几种哈希表是键值对的集合,通过键(key)即可快速取出对应的值(value),因此哈希表可以...

2022-06-15 13:46:25 1806

原创 MySQL 存储引擎详解

大家好 我是积极向上的湘锅锅💪💪💪MySQL 支持多种存储引擎,你可以通过 show engines 命令来查看 MySQL 支持的所有存储引擎从上图我们可以查看出, MySQL 当前默认的存储引擎是 InnoDB。并且,所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务我这里使用的 MySQL 版本是 8.x,不同的 MySQL 版本之间可能会有差别。MySQL 5.5.5 之前,MyISAM 是 MySQL 的默认存储引擎。5.5.5 版本之后,InnoD...

2022-06-12 12:15:28 202

原创 MySQL 锁底层原理详解

为什么会有锁的出现,那除我们传统的计算机资源像cpu需要争用,数据也是一种多用户共享的资源,如何保证数据并发访问的一致性,有效性也是数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素MySQL中的锁,按照锁的粒度分,分为以下三类:全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读的状态,只可以进行DQL语句,这个时候后续的DML语句,DDL语句,已经更新的事务提交语句都将被阻塞其中最为典型的应用场景就是做全库的逻辑备份,对所有的表进行锁定,在整个过程中,数据是不会发生变化的,这就

2022-06-11 22:54:12 908

原创 Go Goroutine协程

并发和并行的区别并发是指一个处理器同时处理多个任务。 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。并发意思就是一个时间段一个处理器处理任务并行是多个处理器处理任务线程与协程的区别 一个线程可以多个协程,一个进程也可以单独拥有多个协程。 线程进程都是同步机制,而协程则是异步。 线程是抢占式,而协程是非抢占式的,所以需要用户自己释放使用权来切换到其他协程,因此同一时间其实只有一个协程拥有运行权,相当于单线程的能力。 协程并不是取代线程

2022-05-29 19:09:37 229

原创 Go 语言安装与实践

安装 Go 语言访问 go.dev/ ,点击 Download ,下载对应平台安装包,安装即可 下载完成之后在cmd输入go version,出现对于的版本号即可 IDEA安装go插件 在maketplace输入Go 下载完成后重启IDEA GO配置 这个步骤一定要!!!!在 golang 安装路径下寻找:'go1.17.2\src\runtime\internal\sys\zversion.go' 文件打开 ‘zversion.go’ 文件,在其中追加如下行(你的版本号)并保存

2022-05-29 19:06:06 486

原创 MySQL事务详解

大家好 我是积极向上的湘锅锅💪💪💪事务1. 事务简介事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。就比如: 张三给李四转账1000块钱,张三银行账户的钱减少1000,而李四银行账户的钱要增加1000。 这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。正常情况: 转账这个操作, 需要分为以下这么三步来完成 , 三步完成之后, 张三减少1000, 而李四增加1000, 转账成功 :

2022-05-27 11:38:46 116 1

原创 SpringSecurity前后端分离的安全管理实现(二)

目录1.SpringSecurity的作用2.SpringSecurity的基本流程3.RBAC的Dao层设计4.SpringSecurity自定义类1.未登录的情况2.验证登录3.鉴权操作1.获取url所需权限2.进行权限比对4.注销操作5.会话失效处理4.WebSecurityConfig(49条消息) SpringSecurity+mybatis前后端分离的安全管理实现(一)_湘锅锅的博客-CSDN博客在上一篇我们简单的实现了SpringS...

2022-05-13 20:25:55 655

原创 SpringSecurity前后端分离的安全管理实现(一)

目录1.创建工程2.配置工程1.基础配置2.pom.xml配置3.mybatis配置4.springboot配置1.创建工程勾选以下依赖点击finish咱们的工程就创建好啦💪💪💪2.配置工程1.基础配置先把不需要的先删掉=====》把application.properties改成application.yaml这里采用yaml的写法2.pom..........

2022-05-06 11:05:44 1168

原创 springboot 整合 Redis 详解

目录1.下载Redis2.安装Redis1.下载Redis百度云下载地址 永久有效https://pan.baidu.com/s/1u_AdUsRHO4EMJnqj5OMBxw提取码:chqq2.安装Redis由于是msi文件 直接双击打开这里注意一个地方有个path一定要勾选这个是可以注册服务 就不用每次都要去打开redis服务器了成功之后打开服务如下图看到有Redis就大功告成啦......

2022-05-05 15:34:24 731

原创 vue3 父组件和子组件如何传值 详解

目录1.父组件打开子组件的的dialog组件model-value 单向数据绑定2.父组件关闭子组件的的dialog组件defineEmits3.开始运用: 用户的增加修改操作1.父组件的修改2.子组件的修改3.父组件给子组件赋值4.子组件调用父组件方法1.父组件打开子组件的的dialog组件 🕒新建一个vue文件命名为test 🕒然后咱们直接从官网CV一个带有表单的dialog组件如......

2022-05-04 21:21:39 13334 8

原创 vue3---dayjs-入门及常用方法

目录day.js下载安装vue3的使用 导入day.js 使用最终效果dayjs是一个轻量的处理时间和日期的 JavaScript 库dayjs好处🕒 和Moment.js有着相同的API和模式 💪 不可变、持久性 🔥 提供链式调用 🌐 国际化标准 📦 超小的压缩体积,仅仅有2kb左右 👫 极大多数的浏览器兼容官方githubgithub.com/iamkun/dayj…中文使用文档github.com/iam.........

2022-05-04 11:50:38 8978

原创 vue3 自定义404界面

设置路径在我们的router下的index.js中添加如下路径即可{ path: '/:cathchAll(.*)', name: '404', component: () => import('../views/404.vue') },自定义404界面在我们的404.vue文件中放一个我们想要的文件即可<template> <div class="not-found"> <img src="../asset

2022-05-04 10:52:49 2403 1

原创 vue3+springboot 实现token登录 过期自动退出操作

准备工作1.在src创建utils文件夹创建constant.js 放咱们所需的变量export const TOKEN_TIME = 'tokenTime'export const TOKEN_TIME_VALUE = 2 * 60 * 60 * 1000创建auth.js来放咱们所需的方法import { TOKEN_TIME, TOKEN_TIME_VALUE } from './constant'// 登录时设置时间export const setTok....

2022-05-03 17:52:23 3825 3

原创 vue3+springboot 前后端分离实现登录

1. elementplus中form表单的简单使用 快速上手2.vue3---axios基础使用教程3.Vue3和springboot前后端跨域问题以上不会的小伙伴自取 会的大佬可以跳过在准备好以上的前提之后 就可以开始咱们的登录操作啦首先因为是前后端分离 所以前后端的端口不能用同一个所以在后端设置一个其他端口//yaml写法server: port: 8082前端设置 设置axions的默认参数 在main.js填入以下内容 URL为自己的后台端口号 ..

2022-05-03 11:00:56 4861 1

原创 elementplus中form表单的使用及讲解---快速上手

这篇仅仅对于初学者,因为纯个人理解,后端er只需要会用就好啦贴一个elementplus的官网Form 表单 | Element Plus (element-plus.org)1.初识elementplus的form表单<template> <el-form :model="form" label-width="120px"> <el-form-item label="Activity name"> <el-inpu....

2022-05-02 17:24:48 8506

原创 axios使用与封装详解

目录1.下载最新版的axios2.创建reques.js进行封装3.在main.js中进行全局挂载1.下载最新版的axiosnpm install axios这里附上axios的官网起步 |Axios 中文文档 | Axios 中文网 (axios-http.cn)2.创建reques.js进行封装新建api文件夹,下面创建一个request.js在这里因为我是后端配置的跨域访问,所以内容跟别人有所不同,关于跨域配置跨域参考我的另一篇文章(...

2022-05-02 16:08:03 2218

原创 springboot或者springsecurity跨域问题 ---简单有效

目录springboot后端配置解决跨域为什么会出现跨域问题? 首先一个定义一定要了解,就是浏览器的同源策略什么是浏览器的同源策略,简单来说就是浏览器发送请求的协议、域名和端口要和服务器接收请求的协议、域名以及端口一致。这样才能完成交互,但是很显然这样是不可能的,尤其在对于在同一台电脑上开发前后端分离的项目的时候,一定是会使用两个端口的。那么这样就形成了跨域问题。其中有俩种方法解决,一种是在前端配置跨域代理,第二种是后端新建一个配置类在这里只介绍第一种,因为最为简便s..

2022-05-02 15:32:11 1491 2

原创 手把手从vue3从下载到创建项目(IDEA版)

以下来自一个后端er自学vue3的经验,有不对的欢迎斧正基础前端页面----vue3+elementplus+ts新手很友好 强推目录下载Vue3创建vue3项目下载Vue3首先需要安装node.jsNode版本要求Vue CLI 需要 Node.js 8.9 或更高版本 (推荐 8.11.0+)。你可以使用 nvm 或 nvm-windows 在同一台电脑中管理多个 Node 版本下载地址:Node.js (nodejs.org)安装...

2022-04-25 11:06:12 4423 3

原创 C++蓝桥杯基础知识常用整理

蓝桥杯c++知识

2022-03-22 20:27:36 5162 2

空空如也

空空如也

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

TA关注的人

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