自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis核心技术与实战学习笔记

String(字符串)、List(列表)、Hash(哈希)、Set(集合)和 Sorted Set(有序集合)Redis使用了一个哈希表来保存所有的键值对,一个哈希表可以看做一个数组,数组中的每个元素称为一个哈希桶redis采用拉链法来解决哈希冲突,即同一个哈希桶中的多个元素用一个链表保存,彼此之间使用指针链接当拉链过长的时候就会有操作速度变慢的问题,因为查找冲突的元素需要去遍历链表解决方法rehash为了是操作更高效,Redis默认使用了两个全局哈希表,哈希表1和哈希表2插入数据时默认使用哈希表1,哈希表

2022-07-06 17:18:48 823 2

原创 计算机网络学习笔记(四):网络层

网络层的主要任务是实现网络互连,进而实现数据在各网络之间的传输。可靠通信由网络来保证必须建立网络层的连接 - - 虚电路VC通信双方沿着已建立的虚电路发送分组目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)使用这种通信方式如果在使用可靠传输的网络协议就可以使发送的分组最终正确到的接收方(无差错按序到达,不丢失,不重复)通信结束后需要释放之前所建立的虚电路两者对比IPv4 地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全

2022-06-05 11:30:38 1046 1

原创 计算机网络学习笔记(五):运输层

计算机网络体系中的物理层,数据链路层以及网络层共同解决了将主机通过异构网络互联起来所面临的的问题,实现了主机到主机间的通信实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程如何为运行在不同主机上的引用进程提供直接通信服务是运输层的任务,运输层协议又称为端对端协议端口可以说是进程的标识符运输层直接为应用进程间的逻辑通信提供服务运行在计算机上的进程使用进程标识符PID来表示因特网上的计算机并不是使用统一的操作系统,不同的操作系统(Windows,Linux,Mac OS)又使用不同的进程标识符为了

2022-06-05 11:30:23 521

原创 软件工程复习笔记

第一章 软件工程学概述1.1软件危机软件危机:是指计算机软件在开发和维护过程中所遇到的一系列严重问题。软件危机包含两方面问题:如何开发软件,以满足对软件开发日益增长的需求如何维护数量不断膨胀的已有软件软件危机的表现对软件开发成本和进度的估计常常很不准确用户对“已完成的”软件系统不满意的现象经常发生软件产品的质量往往靠不住软件常常是不可维护的软件常常没有适当的文档资料软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势

2022-05-28 16:25:41 1366

原创 计算机网络学习笔记(三):数据链路层

数据链路层数据链路层概述链路:就是从一个结点到相邻结点的一段物理链路,中间没有任何其他的交换节点数据链路:指把实现通信协议的硬件和软件加到链路上,构成数字链路数据链路层以帧为数据单位传输数据数据链路层的三个问题封装成帧 差错检验 可靠传输封装成帧两种帧格式数据链路层将上层交付的协议数据单元添加帧头和帧尾使之称为帧帧头和帧尾中包含重要的控制信息帧头和帧尾的重要作用是帧定界透明传输透明传输指数据链路层对上层交付的传输数据没有任何限制,跟透明一样向计算机网络这种分层的结构,我

2022-05-24 21:37:45 922

原创 计算机网络学习笔记(二):物理层

物理层基本概念两种传输媒体: 导引性传输媒体 非导引性传输媒体导引性:双绞线,同轴电缆,光纤非导引型:微波通信(2~40GHz)物理层的作用: 解决在各种传输媒体上传输比特0和1的问题,为数据链路层提供透明的传输比特流服务物理层协议的主要任务:机械特性:指明接口所用接线器的形状和尺寸,引脚数目和排列,固定和锁定装置电气特性:指明在接口电缆的各条线上出现的电压的范围功能特性:指明某条线上出现的某一电压表示何种意义过程特性:指明对于不同功能的各种可能事件的出现顺序传输方式串行传输 并行

2022-05-11 17:25:12 669

原创 计算机网络学习笔记(一):第一章概述

计算机网络概述网络,互联网,因特网概念网络: 由若干结点和连接这些结点的链路组成互联网:将多个网络通过路由器互联起来,构成一个覆盖范围更大的网络因特网:世界上最大的互连网络(用户数以亿计,互连的网络数以百万计)名词区分ISP(因特网服务提供者)简介​ 普通用户通过ISP接入因特网,ISP可以从因特网中申请IP地址,同时获得通信线路以及互联网等联网设备。​ 机构和个人向ISP缴纳规定费用,就可以获得IP地址,通过该ISP接入因特网​ 国内三大ISP :

2022-05-07 23:08:54 631 2

原创 SpringBoot自动装配原理

SpringBoot自动装配从主配置类开始@SpringBootApplicationpublic class ExammanagerApplication { public static void main(String[] args) { SpringApplication.run(ExammanagerApplication.class, args); }}主配置类执行的是一个run()方法,参数是一个被SpringBootApplication注解修饰

2022-04-04 23:01:28 608

原创 HashMap学习笔记

HashMapHashMap的实现HashMap的实现通常分为两个版本,JDK 1.8之前和之后在JDK1.7的时候HashMap采用的是数据+链表的形式,也就是通过拉链法的形式去解决hash冲突[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exAV8nkv-1648998281198)(upload/image-20220403215000729.png)]到了JDK1.8的时候改成了数组 + 链表 + 红黑树的形式来实现,主要是解决链表过长带来的查询效率过低的问

2022-04-03 23:05:24 334

原创 图解三次握手与四次挥手

直接上图三次握手为什么是三次握手?三次握手的首要原因就是不会建立历史连接想象一个场景客户端向服务端发送一个SYN,但是被网络阻塞住了,然后客户端又发送了一个新的SYN,这时旧的SYN比新的SYN先到达了服务端,服务端收到后回复ACK/SYN给客户端,但是这时发的ACK的确认号与客户端期望的确认号是不一样的,客户端会发送一个RST去终止连接。这就是三次握手解决历史连接的方式。用图表示就是为什么不是二次握手?如果是二次握手的话那么SYN发过来的话,服务端就会进入到ESTABLISHEN状态

2022-03-31 20:56:21 679

原创 浅学SpringMVC源码(1):SpringMVC的执行流程

关于SpringMVC的执行流程先贴一张SpringMVC的执行流程图然后一步一步Debug去观察一下源码是怎么做到的首先一个请求发送到后端时会把请求打到DispatcherServlet上,而主要处理请求的方法是doService方法doService方法主要做的事if (logger.isDebugEnabled()) { String resumed = WebAsyncUtils.getAsyncManager(request).hasConcurrentResult() ? "

2022-03-21 22:06:20 542

原创 浅学消息队列

什么是消息队列消息队列可以看作是一个存放消息的队列,当我们需要使用到消息的时候,直接从容器中取出消息供自己使用使用消息队列的好处异步削峰/限流降低系统耦合性举个栗子按传统的购物模式来说完成一次下单耗时可能为100ms + 50ms = 150ms但我们扩展发优惠卷,发短信等功能时可能耗时会上升到100ms + 50ms + 100ms + 100ms = 350ms可能这200ms在并发量少的情况下不是很明显,但在高并发的情况下,因为这些流程可能一次购物可能停留几秒或者几十秒

2022-03-16 21:01:07 204

原创 Java反射

反射什么是反射关于反射我的个人理解就是能够获取类的所有信息。像方法,注释,类的所有属性。。。比较官方的介绍就是JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。在我们熟悉的一些框架像spring,mybatis这些都有使用的反射机制。反射的使用三种方法//参数为类的路径Class.forName();//类对象+getClas

2022-03-16 17:55:49 690

原创 AQS原理

AQS原理如果被请求的有效共享资源为空闲状态,那么将请求的线程设置成工作状态,资源被设计为占有状态,如果请求的资源被占有那么需要一套阻塞唤醒机制,AQS采用CLH队列锁来实现CLH队列是一个虚拟的双向队列AQS采用一个int变量来表示同步状态private volatile int state;//共享变量,使用volatile修饰保证线程可见性采用CAS来对该值进行原子操作实现对该值的修改//返回同步状态的当前值protected final int getState() {

2022-03-13 17:28:22 258

原创 MVCC简单学习

MVCC首先介绍一下什么是MVCCMVCC的全称为Multi-Version Concurrency Control,它是InnoDB存储引擎中对非锁定读的实现(当我们通过MVCC来读取当前执行实现数据库中行的数据时,如果读取的行正在执行DELETE或UPDATE操作时,这时的读取操作不会去等待行上锁的释放,而是去读取行的一个快照数据。)InnoDB对MVCC的实现在InnoDB中的MVCC的实现依赖于隐藏字段、Read View、undo log。1. 隐藏字段关于隐藏字段InnoDB存储引擎

2022-03-07 16:48:17 428

原创 TCP和UDP

TCPTCP协议是面向链接的,通过TCP协议传输的数据是通过字节流的形式传输,通过TCP传输是可靠的,不过也因此传输速率较慢。TCP一般用于文件传输,接受邮件,远程登录等场景TCP建立连接 三次握手四次挥手机制三次握手四次挥手TCP是如何保证数据的可靠传输的应用数据会被分割成TCP认为最适合发送的数据块TCP会给发送的每一个包进行编号,接收方会对数据包进行排序,将有序数据传送给应用层校验和 : TCP 将保持它首部和数据的检验和。如果收到的段校验和有差错的话,TCP将会丢弃

2022-02-28 22:33:23 249

原创 Cookie与Session

Cookie为什么会出现Cookie众所周知,http协议是无状态的,无服务无法单从网络连接上来识别用户身份,这样就会有一个问题,我们登录一个网站每次刷新网页都要重新登录一下,这样的体验无疑是很差的,试想:我们在双十一抢货的时候,每次刷新一个就会重新登录一次,那可能页面刷新出来再登录上货已经卖完了为了弥补http请求无状态的不足,出现了cookie,可以把cookie理解为一个通行证,用户浏览器访问服务器之后服务器向浏览器颁发一个通行证,之后浏览器携带着这个通行证访问服务器,服务器就能识别出来用户。

2022-02-27 13:00:53 227

原创 CAP与BASE理论简单了解

CAP理论一致性(Consistency):所有节点访问同一份最新的数据副本可用性(Availability):非故障的节点在合理的时间内返回合理的响应分区容错性(Partition tolerance) : 分布式系统出现网络分区的时候,仍然能够对外提供服务网络分区分布式系统中,多个节点之前的网络本来是连通的,但是因为某些故障(比如部分节点网络出了问题)某些节点之间不连通了,整个网络就分成了几块区域,这就叫网络分区。不是所谓的“3选2”当发生网络分区P时,要继续服务的话 C和A两个只能保

2022-02-26 22:05:56 1365

原创 HTTP状态码

HTTP状态码进行过web开发的同学应该对HTTP的状态码并不陌生,如我们常见的404 😄本文来记录一下HTTP协议的状态码1XX状态码英文标注中文解释100Continue客服端应继续请求101Switching Protocols切换协议,服务器需要根据客户端的请求切换协议,只能切换到更高级的协议2XX状态码英文标注中文解释200OK请求成功201Create已创建,成功请求并接受资源202Accepted

2022-02-24 18:10:13 100

原创 事务隔离级别学习

事务隔离级别什么是事务在了解事务隔离级别之前,让我们先来看一下什么是事务。事务是逻辑上的一组操作,这组操作要么全做要么全不做。事务的特性事务的ACID特性原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性: 执行事务前后,数据保持一致,例如转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的;隔离性: 并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务之间数据库是独立的;持久性: 一个事务被提交之后。它对数据库中数

2022-02-23 19:57:02 71

原创 DNS解析

DNS解析为什么要有DNS解析?试想如果没有域名,我们需要通过一串IP地址去访问我们需要的服务,先不说记住每一个IP地址十分的费劲,就是在浏览器中敲IP地址也会让人感到不变,所以为了方便记忆,采用域名去代替IP地址来标识站点地址,而DNS解析就是完成域名到IP地址的转换过程。我们可以吧DNS看作一个超大的数据库。里边存储着域名和对应的IP地址域名解析过程DNS的解析过程是一个递归查询的过程,以查找www.google.com对应的域名为例,首先会向本地的域名服务器进行查询包括本地的浏览器缓存

2022-02-23 13:45:04 629

原创 简单了解RedLock

什么是RedLockRedLock是Redis官方提出的基于Redis实现分布式锁的方法。可以保证安全性 : 互斥访问,即永远只有一个client能拿到锁避免死锁 : 最终的client都能拿到锁,不会出现死锁的情况容错性 : 重要大部分redis节点存活就可以正常提供服务单节点上实现分布式锁SET key_name my_random_value NX PX 30000 NX 表示if not exist 就设置并返回True,否则不设置并返回False (仅当key不存在时设置)

2022-02-20 12:09:25 1746

原创 《深入理解Java虚拟机》读书笔记(四)虚拟机类加载机制

概述类加载机制:java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载内存为止会经历加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载七个阶段上图中 加载 验证 准备 初始化 卸载五个阶段的顺序是可以确定的,类的加载过程必须按照这种顺序按部就班的开始,它在某些情况下可以在初始化阶段之后再开始

2022-02-16 20:33:38 532

原创 力扣每日一题 540. 有序数组中的单一元素

540. 有序数组中的单一元素给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。示例 1:输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例 2:输入: nums = [3,3,7,7,10,11,11]输出: 10提示:1 <= nums.length <= 1050 <= nums[i]

2022-02-14 22:02:19 284

原创 《深入理解Java虚拟机》读书笔记(三)虚拟机性能监控、故障处理工具

基础故障处理工具jps:虚拟机进程状况工具jps可以列出正在运行的虚拟机进 程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一 ID(LVMID,Local Virtual Machine Identifier)命令格式jps [options] [hostid]执行案例主要选项选项作用-q只输出LVMID,省略主类的名称-m输出虚拟机进程启东市传递给主类main()函数的参数-l输出主类的全

2022-02-10 21:17:22 1004

原创 《深入理解Java虚拟机》读书笔记(二)垃圾收集器与内存分配策略

第三章 垃圾收集器与内存分配策略概述专业名词 GC(Garbage Collection) 垃圾收集垃圾收集需要完成的三件事情哪些内存需要回收什么时候回收如何回收垃圾收集所关注的部分 —> 堆和方法区程序计数器 虚拟机栈 本地方法栈 三个区域是随线程而生,随线程而灭的。每一个栈帧中分配多少内存基本上是在类结构确定下来就可知的,这几个区域的内存分配和回收具有确定性堆和方法区中的内存分配和回收具有显著的不确定性一个接口的多个实现类需要的内存可能会不一样,一个方法所执行的不同条件分支

2022-02-10 20:45:25 968

原创 最大公约数

什么是最大公约数最大公约数也称为最大公因子,最大公约数整数a能被整数b整除,则a可以称为b的倍数,b称为a的约数,最大公约数也就是两个数相同的最大约数。如 (16, 12) = 4 (7,5) = 1求最大公约数的方法1. 辗转相除法用大数除以小数,如果能够整除那么小数则是最大公约数,否则用两数相除的余数和小数继续相除。例16 / 12 = 1 余 412 / 4 = 3 余 0得出(16,12) = 4代码实现public int gcd(int a,int b){

2022-02-10 15:52:09 189

原创 虚拟机的垃圾收集算法

垃圾收集算法从如何判定对象消亡的角度出发,垃圾收集算法可以划分为“引用计数式垃圾收集”(Reference Counting GC)和“追踪式垃圾收集”(Tracing GC)两大类,这两类也常被称作“直接垃圾收集”和“间接 垃圾收集”。 —《深入理解Java虚拟机》分代收集理论当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”的理论进行设计。分代收集建立在两个分代假说之上:弱分代假说:绝大多数对象都是朝生夕灭的强分代假说:熬过越多次垃圾收集过程的对象就越难以消灭两个假说又共同奠定了

2022-02-04 22:19:21 814

原创 《深入理解Java虚拟机》读书笔记(一)自动内存管理

第二章 自动内存管理概述C C++ 对内存管理拥有最高权力,拥有每一个对象的所有权 ,也承担着每一个对象声明从开始到终结的维护任务Java 虚拟机自动内存管理 不容易出现内存泄漏和溢出的问题 但一旦出现,控制内存的权力交给了Java虚拟机,排查错误修改问题会很难运行时数据内存程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它可以看作是当前线程所执行的 字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数

2022-02-04 22:17:52 1323

原创 操作系统学习笔记(八):文件管理

文件管理目录结构概述现代计算机中需要用到大量的程序和数据把这些程序和数据都存在内存中显然是不现实的而且也不能长期保存,所以平时把这些程序和数据以文件的形式存放在外存中,需要时随时可以调入内存。文件和文件系统文件的三个基本特征文件的内容为一组相关信息 : 文件的内容可以是源程序、可执行的二进制代码程序、待处理的数据 表格 声音 图像等文件具有保存性 : 文件存放在磁盘 磁带 光盘等介质上,其内容可以被长期的保存和多次使用文件可按名存取 : 每个文件都具有唯一的标识名信息,用户无需了

2022-01-28 21:02:49 1682

原创 java锁的升级和对比

java锁的升级和对比Java SE 1.6为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”,在 Java SE 1.6中,锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级但不能降级,意味着偏 向锁升级成轻量级锁后不能降级成偏向锁。这种锁升级却不能降级的策略,目的是为了提高获得锁和释放锁的效率. ------来自《Java并发编程的艺术》1. 对象头synchronized用的锁是存在对象头

2022-01-27 22:47:35 679

原创 力扣72.编辑距离

编辑距离题目72. 编辑距离难度困难2052收藏分享切换为英文接收动态反馈给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删除 'r')rose -&g

2022-01-19 22:12:04 695

原创 static与final关键字

很重要

2022-01-16 22:09:45 256

原创 Java中为什么是不可变字符串

不可变字符串也有这么多奥妙

2022-01-16 20:33:31 293

原创 源码角度看128陷阱

计算机行业也是一个陷阱

2022-01-16 19:44:05 62

原创 自动装箱和自动拆箱

学无止境

2022-01-15 22:28:20 1140

原创 动态规划解决背包问题

什么是背包问题用《图解算法》中的一个例子来进行说明:假如你是一个小偷,背着一个能装4斤中的背包,你可以偷窃的物品有三种,分别为音响,笔记本电脑,吉他怎样才能让拿走商品价值最高呢?这种情况就是我们所说的背包问题,而背包问题又可以分为0-1背包和完全背包问题两种0 - 1背包问题0 - 1背包指每个物品只有一件且只有两种状态(取或不取)。使用动态规划解决0-1背包问题动态规划先解决子问题,在逐步解决大问题,而对于背包问题来说即先解决小容量背包问题再去解决大容量背包问题使用动态规划

2022-01-10 17:30:46 390

原创 图解OAuth2.0协议

什么是OAuth2.0协议OAuth2.0协议是一个开放标准,允许用户授权第三方程序访问他们存储在另外的服务提供者上的信息,而不需要将用户和密码提供给第三方应用或分享他们数据的所有内容。举一个例子:以我们使用QQ登录直播平台为例我们想要在某平台看直播,但是我们又不想注册账号,所以我们选择使用QQ登录这时会出现请求授权页面,我们点击授权,然后就以QQ登录上了直播平台这便是OAuth协议的具体应用,QQ中存储了我的个人信息,如果直播平台想要获取这些信息就要经过QQ的安保系统,所以需要得到我

2022-01-05 21:47:04 4038 2

原创 操作系统学习笔记(七):用户接口管理

用户接口管理⭐️ 设计操作系统的重要目的之一就是方便用户使用计算机,无需操作员太多干预,系统就能顺利运行。???? 操作系统是用户和计算机之间的接口,有了操作系统用户和计算机裸机之间不会发生直接的管理???? 操作系统为了用户提供了以下接口命令接口程序接口图形接口(后来出现,Windows是图形接口的代表)命令接口???? 命令接口分为联机命令接口和脱机命令接口两种???? 通过在用户和操作系统之间提供高级通信来控制程序运行,用户通过输入设备发出一系列命令告诉操作系统执行

2022-01-05 15:59:41 1116

原创 Centos 7 搭建redis一主二从三哨兵

centos7 搭建redis一主二从三哨兵安装redis下载安装包 wget https://download.redis.io/releases/redis-5.0.14.tar.gz #解压 tar -xvf redis-5.0.14.tar.gz如果需要其他版本的redis可以到官网进行下载编译进入根目录,看到Makefile文件进行编译 #安装 gcc yum install gcc #编译 默认make命令编译 => 如果提示:jemalloc/

2022-01-04 20:10:17 914

空空如也

空空如也

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

TA关注的人

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