自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机网络高频面试题集锦

若这时,C端第一次发送的请求连接报文到了S端,S端以为C端再一次进行连接就会再次发送确认报文,而C端已经收到过一次确认报文,所以此次的确认报文它会忽略,而S端发送了确认报文后会一直等待C端的回应,就会造成S端一直等待,浪费资源,甚至服务器停止响应。第三次握手:C端收到S端发送的SYN=1,ACK=1的同意连接报文段后,进入ESTABLISHED状态,向S端发送ACK=1的数据包【再次对第二次握手S端发来的数据包进行确认】,S端收到后也进入ESTABLISHED状态。

2023-09-22 23:03:36 512

原创 走进JVM的内存模型

与Java虚拟机栈的功能类似,它负责native关键字修饰的本地方法被执行的时候,在本地方法栈中创建一个栈帧,用于存放该native本地方法的局部变量表、操作数栈、动态链接、方法出口信息。方法区和永久代以及元空间的关系很像 Java 中接口和类的关系,类实现了接口,这里的类就可以看作是永久代和元空间,接口可以看作是方法区,也就是说永久代以及元空间是 HotSpot 虚拟机对虚拟机规范中方法区的两种实现方式。由于“逃逸分析”的存在,若某些方法中的对象引用没有被返回或者未被外面使用,就会在栈分配。

2023-09-18 23:18:26 288

原创 JVM的类加载机制

例如:java.util.lang包下有一个Object类(存放在rt.jar【由启动类加载器加载】),我们同样自定义了一个java.util.lang包下的Object类放到 ClassPath 中(由应用程序类加载器加载)。类加载的过程已经何时会进行类加载我们已经了解了,那么谁来执行类加载呢,它需要依靠一个叫类加载器的结构完成这一步骤,类加载器属于前面JVM组成接口的一部分。那么在什么情况下一个类会被加载呢?类加载器首先会将类加载请求转发至父类加载器,若父类加载器完成不了时,它才会自行加载。

2023-09-17 13:53:23 502

原创 秒杀“超卖”问题

概述:限时秒杀活动在我们的日常生活中有很多,尤其在“双11”,“618”这类购物节活动中用户的并发数更是海量剧增,那么系统为了防止“超卖”秒杀商品,怎么做才能不影响性能的同时防止超卖。为了解决“超卖”问题有两种方案:(1)乐观锁(2)分布式锁场景:现有10台IPhone14ProMax,在12:00正式发售;假设现有1000个用户同时抢购。

2023-09-10 16:47:42 174

原创 Redis的基本操作与应用(附相关面试题...)

解决这一问题可引入Redis,当用户选择图片上传至服务器后返回的文件名存入key为serverPic的set集合中,点击添加按钮后将写入数据库的同时把文件名再存入到一个key为dbPic的set集合中。选择预约套餐后填写基本信息,点击发送验证码:以邮箱作为key,验证码内容为value存储至Redis中并设置key的有效时间为5分钟,信息输入点击提交会将输入的验证码与Redis中的码做比对。常用5种数据类型:String(字符串)、List(列表)、set(集合)、hash(哈希)、zset(有序集合)

2023-09-04 23:14:23 310

原创 Spring中Bean的生命周期

概述:Spring框架核心模块中的IOC容器为我们提供了创建Bean和管理Bean以及管理Bean的生命周期的功能,IOC思想的引入后,不在通过new手动创建对象,这一切都交给了Spring框架完成,掌握Spring中Bean的生命周期有助于我们对IOC思想的理解,下面详细描述Bean的声明周期。1、BeanFactoryPostProcessor:Bean工厂后处理器,在BeanDefinitionMap填充完毕,Bean实例 化之前执行;2、BeanPostProcessor:Bean后处理器,一般在B

2023-09-03 22:49:12 72 1

原创 微服务通信(Feign与Dubbo)技术的使用

概述:随着人们需求越来越来,项目的规模也逐渐扩大,常规的单体应用架构已无法应对,分布式服务架构以及微服务架构势在必行,将一个单体应用拆分为多个服务必定存在服务间的通信调用。2、基于TCP协议实现RPC的服务通信技术Bubbo。1、基于HTTP协议的服务通信技术Feign。

2023-09-02 23:55:02 261

原创 Spring框架核心思想理解

概述:Spring框架作为一款轻量级的开发框架,为Java开发提供组件化的管理服务,降低组件间的耦合度,并简化了第三方JavaEE中间件的使用(Spring框架集成),它主要有两大核心思想:IOC(控制反转)和AOP(面向切面编程)。

2023-09-01 09:02:02 91

原创 Git版本控制工具的使用

在实际的项目开发过程中,一个项目并不是一次性就能开发完成,它需要多个版本的迭代最终完成一个项目的开发。安装完成后可以打开Git Bash 通过git --version命令查看已安装Git的版本号。仓库创建成功后会跳转至当前页面,红色框中的为仓库地址,当向远程仓库提交会用到。第三步:仓库目前是空的,我们先向远程仓库提交一个文件。光标移动到+号选择新建仓库。

2023-08-30 20:58:41 49

原创 Java内部类

Java中面向对象的设计思想,在“万物皆为对象”的世界里,而对象是类的实例化形式。我们编写的代码都是以类为基本单位,类是一个模板,它描述一类对象的行为和状态。在一个类的内部再定义一个新的类,这个新的类就被称为内部类。内部类的概念就是相对于它所嵌套的外部类而言的。内部类就成为了外部类的一个组成部分,要访问内部类可以通过创建外部类的对象来实现。能够修饰类的关键字一共有:public、abstract、final、default(不写默认)

2023-08-23 00:47:08 39

原创 hashCode()与equals()的相关问题

老听见一句话“重写equals()时一定要重写hashCode()”,但这句话是有条件的,并非所有重写equals()的情况下都需要对hashCode()进行重写。

2023-08-21 19:31:30 45

原创 Java中的异常体系

注意:编译器对RuntimeException及其子类不做强制捕获要求,不是指应用程序本身不应该捕获并处理RuntimeException。○必须捕获的异常,包括Exception及其子类,但不包括RuntimeException及其子类,这种类型的异常称为Checked Exception。从继承关系可知:Throwable是异常体系的根,它继承自Object。○不需要捕获的异常,包括Error及其子类,RuntimeException及其子类。某些异常是应用程序逻辑处理的一部分,应该捕获并处理。

2023-08-20 21:25:40 28

原创 SpringBoot自动装配原理

概述:SpringBoott是简化Spring技术栈的快速开发脚手架,并不是对 Spring 功能上的增强,而是提供了一种快速使用 Spring 的方式,我们在学习Spring框架时,有xml配置延伸到注解配置已经简化了很多的相关配置,但不免还是需要在主配置类进行包扫描,导入别的配置类,开启自动代理等等,SpringBoot的出现帮我们在此基础上做了更进一步的优化,这一切它的自动装配是分不开的。我们通过打断点的方式观察一下,这个文件的配置内容都被我们读取到了,可以看见有很多的组件在这个配置文件中。

2023-08-19 22:54:46 38

原创 ThreadLocal实现原理

main方法是在主线程中执行的,相当于父线程。按照我们所想的本应该是线程t1分配的角色为苏妲己,t2分配的角色为姜子牙,但是变量role为一个共享变量,线程t1、t2均可访问,在t1访问赋值后t2可能就再次赋值了,对于2个线程来说role是共享的,不独属于任何一个线程,结果就是后执行的线程会覆盖前一个线程的数据。使用完成后从当前线程的ThreadLocalMap中删除数据,在线程池的线程复用场景中,线程执行完毕时一定要调用remove(),避免在线程被重新放入线程池中时被本地变量的旧状态仍然被保存。

2023-08-15 21:59:11 69 1

原创 synchronized实现原理

否则说明多个线程竞争该对象的锁,轻量级锁就要升级为重量级锁,lock标志位的状态值变为“10”,Mark Word中存储的就是指向重量级锁(互斥量)的指针,后面等待锁的线程也要进入阻塞状态。1、在代码进入同步块的时候,如果对象锁状态为无锁状态(lock标志位“01”,biased_lock标志位“0”),虚拟机首先将在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,用于存储锁对象目前的Mark Word的拷贝,官方命名为Displaced Mark Word。

2023-08-14 20:26:48 31

原创 字符串常量池

工作机制:当创建String对象时,jvm会先检查字符串常量池,如果这个字符串的常量值已经存在在池中了,就直接返回池中对象的引用,如果不在池中,就会实例化一个字符串并放入池中。字符串常量池也叫StringTable,String Intern Pool,为了减少频繁创建相同内容的字符串,JVM维护了一个字符串常量池。为了明白字符串常量池,我们需要先明白各个不同类型的数据存储的位置。

2023-08-11 22:59:36 44 1

原创 ReentrantLock与synchronized的区别

在多线程的访问下,为了解决数据的不一致性或脏数据的出现,引入了锁的概念,对共享的临界资源进行加锁,只有获得这把锁的线程才能访问这段资源,与此同时,别的线程不能进行访问,只有当前线程执行完毕释放锁后竞争到锁的线程才能够访问。下面我们通过一个例子分别介绍两种锁:例:下面有一个计数器类,一个静态成员变量count初始值为0,包含2个实例方法,其中add()对count做1万次++操作,dec()对count做1万次--操作。测试类中用两个线程同时对count进行操作。// 计数器类// 用于计数的公共变量。

2023-07-20 19:42:46 121 1

原创 CopyOnWriteArrayList核心源码阅读

4.1.3)如果新数组长度和原数组长度不等,则需要复制新数组的newLen个元素赋值给原数组,同时返回true。* 5、若移动数为0(即从fromIndex到末尾全部移除),则复制原数组(从0开始)newLen个长度到新数组。* 接着将集合中的元素(从0开始)复制到新数组中(从len开始)【长度为集合的长度】* 5.2)不是,创建创建新数组(长度为原数组长度+集合的长度),同时完成整个原数组的复制。

2023-07-19 19:22:31 69

原创 AES算法的CBC和ECB两种工作模式

为了数据安全,不直接明文暴露,我们会对数据进行加密,前面我们学习了使用哈希算法完成对数据的加密,但哈希算法的加密处理是单向的、不可逆。但在很多场景中我们不仅需要对数据加密,还需要能够把加密后的内容还原为明文。这时我们要用到加密算法来完成加密和解密的操作,加密算法同样是基于秘钥来实现的。常用的加密算法不仅有AES算法还有DES算法、IDEA算法算法密钥长度工作模式填充模式DES56/64AESIDEA128ECB其中DES算法的秘钥长度过于短,很容易在段时间内被暴力穷举破解,不安全。

2023-07-18 21:00:23 1295 1

原创 线程池的执行流程

线程池就是能够较好管理线程的池子。频繁的创建线程很消耗系统资源,而线程池它能够避免线程的频繁创建和销毁。在线程池中的线程执行完一个线程任务后,当前线程不会立即销毁,它会在线程池中存活一段时间,若在这段时间,线程池中提交了新的任务,就可以直接拿去线程池中的线程,实现了线程的复用。下面来看看线程池的执行流程,看看它是如何实现线程复用的。

2023-07-18 19:30:58 2395 1

原创 线程的实现方式

线程是由进程划分成的更小的执行单位。而进程又是系统运行程序所分配的基本单位,一个进程包含1个或多个线程,最少有1个主线程。系统运行一个java程序,会为该应用程序分配一个JVM进程,JVM进程会创建自己的堆区和元空间,同一进程中的线程可以共享JVM的堆区和元空间,但同时每个线程都有自己的程序计数器、本地方法栈和虚拟机栈。所有在线程任务轮换时,消耗的资源会比进程小。原本我们所编写的程序都属于单线程,只有一个主线程,内部代码的执行时按某种顺序依次执行的。

2023-07-16 11:28:01 61 1

原创 Java反射机制

反射:很容易想到“正射”,其实对于我们通过new 类名()创建对象的方式就相当于是正射,我们在编译器就已知对象的类型的情况下创建出该类型的对象。那么“反射”就是在编译期我们不确定要创建的对象类型,还要创建出该对象的操作。反射创建对象方式的类型只有在运行期才能确定。首先我们要了解到反射机制中的一个类Class,Class类封装了相应类的类型信息,诸如(类名、保命、父类、方法、实现的接口、成员变量等),它也是我们开启后续反射操作的一个入口。

2023-07-15 17:25:46 64 1

原创 哈希算法总结

digest()返回的结果为一个字节数组,通常情况下为了方便观察与存储,会将字节数组转换为16进制的字符串。后续的算法同理需要用到,故封装到一个HashTools工具类中将字节数组==>16进制字符串有两种实现://将字节值转换为2位十六进制字符串不同的哈希算法的操作如出一辙,只是在第一步创建消息摘传入的算法名称不同同样为了代码的复用,在HashTools中封装相应的方法供我们直接使用。

2023-07-11 18:39:53 62

原创 基于FTP协议的文件操作

FTP(File Transfer Protocol)协议:见明知意是一个文件传输协议,它属于应用层的一个协议,默认端口为21。2、连接FTP服务器并验证用户名密码进行登录。1、创建FTPClient客户端对象。完成上面两个步骤即可进一步进行操作。一、连接FTP服务器,显示文件列表。二、基于FTP协议的文件上传。三、基于FTP协议的文件下载。

2023-07-10 17:21:19 95 1

原创 Java Mail

由于Session对象的创建内容稍有繁琐且为了提高代码的复用性,进行单独的封装JavaMailUtills类。发送邮件使用到的协议:SMTP协议(应用层)2、创建MimeMessage邮件对象。3、通过Transport发送邮件。1、创建Session会话对象。四、发送内嵌图片的HTML邮件。二、发送抄送多人的邮件。三、发送带有附件的邮件。

2023-07-08 16:44:11 76

原创 HashMap的数据结构

在treeifyBin方法中我们看见并没有直接进行链表转换红黑树的操作,而是先判断了当链表节点个数>8时它的数组长度是否8且数组长度>64,此时链表会转换为一颗红黑树。table数组内部是一个个Node类型的对象,此处的Node类是HashMap中的内部类,它是Map接口内Entry接口下的一个实现类,实质上是一个个Entry。HashMap是双列集合Map接口下的一个实现类,以KV键值对映射的形式存储数据。

2023-05-31 12:46:40 308 1

原创 LinkedList源代码阅读

LinkedList的数据结构是基于双向链表,,由若干个Node类【LinkedList类私有静态内部类】的节点组成,每一个Node节点包含一个值和两个引用【指向Node节点】,pre指向当前节点的前一个节点,next指向当前节点的后一个节点根据LinkedList的数据结构,它内部元素的存储地址是不连续的,故元素的查找比较麻烦但它链表不需要指定长度,添加/删除元素很方便。适合写多读少LinkedList类中一共提供了2个构造方法首先是无参构造,相比于ArrayList来说,它基于链表存储元素,不需要

2023-04-26 00:15:52 89

原创 ArrayList扩容方式的理解

2、继续add(21)第11个元素时,前面逻辑与添加第10个元素一致返回最小容量11,但调用ensureExplicitCapacity(11),11>10成立,此次添加元素需要进行扩容,调用grow(11)调用ensureExplicitCapacity(10)判断此次添加元素是否需要扩容,10>10不成立不需要扩容,故第10个元素添加成功,size++,size=10。原数组容量=10,新数组容量=原数组*1.5=15,把旧数组拷贝到扩容后的新数组中。(1)调用add(),此时size+1=1。

2023-04-24 23:29:40 118

原创 js原型和原型链以及原型继承

原型:js中的声明构造函数时会自动在实例化对象内部创建一个对象(__proto__),即原型(对象),存放公共属性及方法原型链:当访问实例化对象里面的方法或属性时,第一时间会在对象本身内部去找,若没有,则会上它的原型(对象.__proto__)上去找,原型上也没有,则去往原型的原型上去找,即实例对象._proto__.__proto__或者构造方法.prototype.__proto__上找,这个层层访问的过程形成了一个原型链原型对象的作用:存放公共属性即方法。...

2022-08-14 19:12:49 211

原创 js函数防抖和函数节流及其使用场景

函数防抖:顾名思义是为了防止函数的操作不停的被调用,设置一个定时器,在一个时间间隔后执行某个操作,若在该时间间隔内再次被触发,则重新计时。

2022-08-07 18:03:26 163

原创 js中的数组方法和循环

/原本返回的数组应为[["html",0],["css",1],["javascript",2],["vue",4],["wechat",5]]将数组的所有元素放入一个字符串,通过指定字符(传参)进行连接,默认为逗号(,)返回一个字符串,大多数传的参数值为空字符串("")//原数组为["html","css","javascript","vue","wechat"]//splice(起始下标,替换个数,"替换的数据")//替换任意位置元素。删除数组末尾的元素(一次只能删除一个)...

2022-07-31 23:05:31 1141

原创 CSS常用样式

CSS常用属性集合

2022-07-24 15:29:42 11449

原创 常用html标签及其属性

网页的基本结构文档类型声明标签文档标记标签文档的头部标签文档的主体标签。

2022-07-16 13:06:21 11345

空空如也

空空如也

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

TA关注的人

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