- 博客(36)
- 收藏
- 关注
原创 数据结构相关知识点(一)
栈(stack)是一种特殊的线性数据集合,只允许在栈顶top进行加入数据(push)贺移动数据(pop),按照后进先出LIFO的规则进行操作,也可以理解为先入后出FILO;栈的实现方式:栈的实现结构可以是一维数组或链表来实现,用数组实现的栈叫作顺序栈 ,用链表实现的栈叫作链式栈。在Java中,顺序栈使用java.util.Stack类实现,链式栈使用java.util.LinkedList类实现。时间复杂度:访问指定元素:O(n) 入栈和出栈:O(1)
2023-10-11 14:21:40
497
原创 计算机网络相关知识点(二)
同步非阻塞IO,基于Reactor模型,客户端和channel进行通信,channel可以进行读写操作,通过多路复用器selector来轮询注册在其上的channel,而后再进行IO操作。Session的实现依靠一个名叫JSESSIONID的Cookie,Max Age过期时间默认为-1,关闭浏览器窗口,该Cookie则失效,对应的Session从而也失效。3数据经过路由器、交换机转发,最终达到目标服务器,目标服务器同样解析数据,最终拿到http报文,按照对应的程序的逻辑响应回去。PUT方法用来修改资源。
2023-09-25 18:54:14
478
原创 计算机网络相关知识点
简单来讲:流量控制是为了控制发送方发送速率,保证接收方来得及接收。TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失,从而实现流量控制。TCP使用的流量控制是 利用滑动窗口实现。滑动窗口是一种流量控制技术,它在计算机网络中用于控制数据包的发送和接收。具体来说,滑动窗口协议在数据流的发送和接收过程中,通过动态地调整窗口大小来控制数据包的发送和接收速率。
2023-09-22 18:03:47
919
1
原创 JVM相关知识点
JVM提供了一个抽象的执行环境,使得Java程序可以在不同的操作系统和硬件平台上运行,实现了跨平台的能力。即时编译器将热点代码(频繁执行的代码)编译成本地机器代码,并进行缓存,以便下次执行时直接执行本地机器代码,而无需再解释执行字节码指令。简而言之,JDK适用于开发人员,提供了开发和调试Java程序的工具和库,而JRE适用于普通用户,提供了仅运行Java程序所需的运行时环境。解释执行的优点是兼容性好,可以在任何平台上运行Java程序,但由于每次执行都需要解释字节码指令,执行效率相对较低。
2023-09-11 18:44:08
400
原创 MyBatis相关知识
MyBatis 是一个开源、轻量级的数据持久化框架,是 JDBC 和 Hibernate 的替代方案。MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中数据模型的统称。例如,文件的存储、数据的读取以及对数据表的增删改查等都是数据持久化操作。MyBatis支持定制化SQL、存储过程以及高级映射,可以在实体类和SQL语句之间建立mapping。
2023-08-23 19:20:32
145
原创 ThreadLocal相关知识点
ThreadLocal是Java中的一个类,它提供了一种线程局部变量的机制。它的作用是,为每个线程创建一个独立的变量副本,各个线程之间互不干扰。简单来说,ThreadLocal为多线程环境下的线程提供了一种线程私有的数据存储方式。使用ThreadLocal可以避免多线程中的数据共享和竞争条件。在多线程环境下,如果多个线程共享一个全局变量,会出现数据破坏和不一致的问题。而通过ThreadLocal,每个线程都可以拥有自己的变量副本,互不干扰,可以独立进行操作,从而解决了线程安全问题。
2023-08-23 11:07:55
173
1
原创 对称加密算法
在CBC模式下,需要一个随机生成的16字节IV参数,必须使用SecureRandom生成。因为多了一个IvParameterSpec实例,因此,初始化方法需要调用Cipher的一个重载方法并传入IvParameterSpec。ECB模式是最简单的AES加密模式,这种一对一的加密方式会导致安全性降低。所以,更好的方式是通过CBC模式,它需要一个随机数作为IV参数,这样对于同一份明文,每次生成的密文都不同。ECB模式是最简单的AES加密模式,它需要一个固定长度的密钥,固定的明文会生成固定的密文。
2023-08-22 19:24:09
97
原创 SpringCloud概述
是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基 础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家 公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉 了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
2023-08-22 18:51:14
235
原创 分布式核心知识以及常见微服务框架
URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示 格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。2、 RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提 供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。如果你是对外开放API,例如 开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持 的几个协议都包含RESTful。
2023-08-22 18:46:19
1249
原创 系统架构的演变
随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,必需一个治理系统确保架构有条不紊的演进。
2023-08-22 18:38:56
376
原创 Redis企业级解决方案
这么高,如果大量的请求同时过来访问这种不存在的数据,这些请求就都会访问到数据库,简单的解决方案就是哪怕这个数据在数据库中也不存在,我们也把这个数据存入到redis中去,这样,下次用户过来访问这个不存在的数据,那么在redis。布隆过滤器其实采用的是哈希思想来解决这个问题,通过一个庞大的二进制数组,走哈希思想去判断当前这个要查询的这个数据是否存在,如果布隆过滤器判断存在,则放行,这个请求会去访问redis,哪怕此时。这种方案巧妙在于,异步的构建缓存,缺点在于在构建完缓存之前,返回的都是脏数据。
2023-08-21 19:35:37
366
原创 Linux相关知识点
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。要注意的时tar命令的使用,因为参数较多,在参数的下达中, c/x/t/r 仅能 存在一个,不可同时存在,因为不可能同时压缩与解压缩。可以帮助我们通过一条简单的命令来调用系统函数 或者系统接口,来依次完成我们需要的功能,不会 导致调用错误或者其他问题导致系统不能正常使用。Linux的基本命令对文件的管理。如:touch,mkdir,cp,rmdir,rm, mv,tar。
2023-08-21 19:14:37
1887
原创 servlet生命周期
需要注意的是,Servlet的生命周期由容器管理,开发者只需要实现相应的方法即可。容器会根据需要创建和销毁Servlet实例,并在适当的时候调用相应的方法。这样可以确保Servlet在运行期间始终处于可用状态,并且能够及时释放资源,提高系统的性能和稳定性。(Destroy):当Servlet不再需要时,容器会调用其destroy()方法进行销毁操作。在这个阶段,可以释放一些资源,关闭数据库连接等清理工作。方法,在父类的方法实现中,返回一个。实例化,初始化,服务,销毁。方法,则调用子类重写后的。
2023-08-21 09:29:57
56
原创 String与StringBuffer/StringBuilder有什么区别?
StringBuilder与StringBuffer都继承自AbstactStringBuilder父类,在AbstrctStringBuilder中使用char[]value字符数组保存字符串,但是没有用final关键字修饰,所以StringBuilder与StringBuffer都是可变的;StringBuffer和StringBuilder的操作是直接改变字符串本身,而不是生成新的对象,所以性能开销小;么次对String类型进行修改时,都会生成一个新的String对象,性能和内存开销都比较大;
2023-08-20 14:58:36
79
原创 接口,重载与重写区别!
3. 接口的明确性和可测试性:接口提供了一种明确的约定,指定了组件的可用方法、参数和返回值。1. 实现模块化:接口可以将一个软件系统拆分成不同的模块,每个模块只关注自己所需的接口,而不用考虑其他模块的具体实现。重载(Overloading)和重写(Overriding)是面向对象编程中常见的两个概念,它们都涉及到方法的多态性,但在具体的语义和使用场景上有所不同。综上所述,接口在软件开发中起到了关键的作用,它提供了一种定义和实现组件之间交互的标准方式,从而促进了代码的模块化、可维护性、可重用性和灵活性。
2023-08-19 15:10:55
145
原创 Redis事务
Redis事务是一个单独的隔离操作:事务中的所有的命令都会序列化,按顺序执行。事务在执行的过程中,不会被其其他客户端发送来的命令请求所打断。Redis事务的主要作用就是串联多个命令防止别的命令插队。
2023-08-15 19:29:07
112
原创 Spring IOC相关知识点
Spring框架是一款轻量级的开发框架,核心思想是IOC(控制反转)和AOP(面向切面编程),尾java应用程序开发提供组建管理服,用于组件之间的解耦,以及简化第三方javaEE中间件技术的应用(JMS,任务调度,缓存,ORM框架),是一个基础架构型的开发框架;IOC容器使用ConcurrentHashMap集合存储了BeanDefinition对象,该对象封装了Spring对一个Bean所有配置信息,包括:类名,属性,构造方法参数,依赖,是否延迟加载,是否是单例等配置信息;
2023-08-14 19:17:09
257
原创 Spring MVC相关知识点
5.ViewResolver会根据逻辑View名称查找并解析实际的View视图文件,并根据DisperServlet返回的Model模型数据传给View视图文件,并进行渲染执行,产生响应结果。ViewResolver:视图解析器,根据Handler返回的逻辑视图名称,解析并渲染真正的视图文件,并传递给DispatcherServlet响应至客户端。首先,MVC模型是模型,视图,控制器的简写,其思想核心是通过将请求处理控制,业务逻辑,数据封装,数据显示等流程节点分离的思想来组织代码。
2023-08-10 19:57:20
626
1
原创 java基础知识
数组是一种引用数据类型,用于保存一组相同类型的数据结构,长度固定;使用连续的内存空间进行存储,所以元素有序,遍历速度较快;下标从0开始,尾下标位长度-1,引发数组下标越界异常;装箱:将基本类型转换为他们对应的引用类型;拆箱:将包装类型转化为基本数据类型;JVM为了提升性能和减少开销,避免字符串的重复创建,维护了一块特殊的内存空间,用于保存常量字符串,即字符串池,即字符串常量池。
2023-08-10 19:26:43
182
1
原创 ReentrantLock与synchronized的区别
Synchronized同步锁,简单来说,使用Synchronized关键字将一段代码逻辑,用一把锁给锁起来,只有获得了这把锁的线程才访问。FairSync类也继承了 Sync类,表示采用公平策略获取锁:当资源空闲时,它总是会先判断 sync队列是否有等待时间更长的线程,如果存在,则将当前线程加入到等待队列的尾部,实现了公平获取原则。NonfairSync 类继承了 Sync类,表示采用非公平策略获取锁:每一次都尝试获取锁,不会按照公平等待的原则进行等待,不会让等待时间最久的线程获得锁。
2023-07-17 20:09:16
122
1
原创 线程池的执行流程
程序中如果需要使用线程,将一个执行任务传给线程池,线程池就会使用一个空闲状态的线程来执行这个任务。RUNNING:运行状态,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0。SHUTDOWN:关闭状态,该状态的线程池不会接收新任务,但会处理工作队列中的任务;STOP:停止状态,该状态的线程不会接收新任务,也不会处理阻塞队列中的任务,而且会中断正在运行 的任务;线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
2023-07-17 19:24:35
169
1
原创 线程的实现方式
某些进程内部还需要同时执行多个子任务。例如,我们在使用WPS时,WPS可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行自动保存和上传云文档,我们把子任务称为线程。线程是进程划分成的更小的运行单位。进程是程序的一次执行过程,是系统运行程序的基本单位。在Windows系统中,每一个正在执行的exe文件或后台服务,都是一个进程,由操作系统统一管理并分配资源,因此进程是动态的。例如:正在运行中的浏览器就是一个进程,正在运行中的音乐播放器是另一个进程,同理,正在运行中的QQ和WPS等都是进程。
2023-07-17 19:04:29
124
1
原创 反射的基础部分知识
Class类定义了一系列方法来获取java类的属性,方法,构造方法,包等信息,这些信息都有相应的类来表示,分别是Field,Method,Constryctor,Package等。(3) Field的对象所代表的某-一个类的属性,而不是那个类的某一个对象的属性。Java当中的类用来表示具有相同属性和方法的对象的集合,是抽象的概念。对象是类创建的,同一个类的不同对象具有不同的属性值。基本数据类型对应的封装类有属性TYPE,这个属性代表了封装所封装的基本数据类型的Class对象。
2023-07-13 16:28:59
164
1
原创 哈希算法相关知识总结
哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。哈希算法最重要的特点就是:●相同的输入一定得到相同的输出;●不同的输入大概率得到不同的输出。所以,哈希算法的目的:为了验证原始数据是否被篡改。常见的哈希算法:::算法输出长度(位)输出长度(字节)MD5128 bits16 bytesSHA-1160 bits20 bytesRipeMD-160160 bits20 bytesSHA-256。
2023-07-10 17:53:45
398
1
原创 FTP协议相关知识
工作时,一台计算机上运行FTP客户端应用程序,另一台计算机上需要运行FTP服务器端程序。客户端向FTP服务器的21端口发送连接,服务器接受连接,建立一条命令通道。FTP的命令和应答就是通过控制连接来传输的,这个连接会存在于整个FTP会话过程中。客户端与FTP服务器端之间传输一个文件是一次完整的FTP会话。文件传输,指的是客户端和FTP服务器端之间的文件传输,如文件上传和下载。2)客户端连接FTP服务器端,需要使用TCP方式。其中若搜不到查询的文件,便会自己创建一个需要寻额文件,并可以往里面存放文件!
2023-07-08 16:36:13
373
原创 JAVA Email
电子邮件的应用已经有几十年的历史了,我们熟悉的邮箱地址比如aaaa22222@163.com,邮件软件比如Outlook、网易闪电邮、Foxmail都是用来收发邮件的。传统的邮件就是通过邮局投递,然后从一个邮局到另一个邮局,最终到达用户的邮箱。电子邮件的发送也是类似的,可以自己创建一个工具类,便于每次的使用,预防每一次都需要重复很多东西!其中发送内容中可以包含超文本,但必须要在代码中说明文字中含有超文本,不然无法识别!同时我们可以在控制台看到JavaMail打印的调试信息,在这里我就不演示了。
2023-07-08 16:23:00
281
原创 原型和原型链的讲解
每一个javascript对象创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。1.构造函数(Person)通过prototype访问原型对象存放公共方法。3.constructor构造方法(原型对象创建的构造函数)2.实例对象p访问原型对象_proto_存放公共对象。属性,属性值是一个普通的对象。属性,属性值是一个普通的对象。①所有引用类型都有一个。...
2022-08-14 17:59:23
297
原创 函数防抖与函数节流
频繁触发,但是只在特定的时间内才执行最后一次触发函数。指的是,触发事件后在规定时间内只能执行一次,如果在规定时间内又触发了该事件,则会重新开始算规定时间比如: 当你在电梯里面的时候,电梯开始倒数5秒关闭门, 在5秒时间内,突然来了一个人, 门就会自动打开, 电梯就会重新计时5秒,如果在5秒时间内又又来了一个人,电梯就会又重新计时5秒。开始倒计时 5 4 3 2 1,此时没有人来了,电梯关门开始运行。...
2022-08-03 19:35:45
147
原创 j s的数组方法,循环
**JavaScript中的数组用一个名称存储一系列的值,用下标区分数组中的每个值,数组的下标从0开始***splice()删除数组中的元素(第一个参数为起始索引,第二个为删除数目)循环就是在满足条件的情况下,去不断重复的执行某一个操作。2.调用函数事件名="函数名()";unshift()向数组头部添加元素。size表示数组中可存放的元素总数。通过数组的名称和下标直接访问数组的元素。push()向数组末尾追加元素。pop()删除数组末尾元素。shift()删除数组头部元素。...
2022-07-27 20:44:56
266
原创 二锅头帮你整理CSS
内联(行内)样式html中的所有标签都有style属性,在style属性中直接写入css样式。由两个选择器连接构成,选中二者范围的交集,两个选择器之间不能有空格第一个必须是标签选择器,第二个必须是类选择器或者ID选择器示例div.codeup{设置文本的装饰none默认,标准文本underline定义文本下划线overline定义文本上划线line-through定义穿过文本的一条线。使用类(class)选择器使用标志符(句点)开头后面写上类的名称。............
2022-07-19 20:03:04
1127
2
原创 二锅头带你秒会HTML
什么是HTML?超文本标记语言(Hyper Text Markup Language)1.语言:HTML不是一种编程语言,而是一种标记语言,描述网页的语言2.场景:HTML是各种类型网页开发的基础型语言3.作用:HTML使用标签描述网页中图片、文本、音乐、视频、超链接等HTML基本标签特殊符号图像标签超链接锚连接1.创建跳转链接:...
2022-07-13 14:56:38
188
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人