- 博客(15)
- 收藏
- 关注
原创 Java数据结构----队列
目录1、队列的基本概念2、Java模拟单向队列实现3、双端队列4、总结1、队列的基本概念队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元
2021-02-25 09:18:36 167
原创 Java数据结构----栈
目录栈的基本概念Java模拟简单的顺序栈实现总结栈的基本概念栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈
2021-02-24 15:01:12 143
原创 Spring 概述
这里写目录标题1、什么是 Spring ?2、Spring 起源3、Spring 特点4、Spring 框架结构5、Spring 框架特征6、Spring 优点1、什么是 Spring ?Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层
2021-02-23 10:13:38 618 1
原创 Redis------ RDB 持久化
目录1、RDB 简介2、触发方式①、自动触发②、手动触发3、恢复数据4、停止 RDB 持久化5、RDB 的优势和劣势6、RDB 自动保存的原理1、RDB 简介RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。2、触发方式RDB 有两种触发方式,分别是自动触发和手动触发。①、自动触发①、save:这里是用来配置触发 Redis的 RDB 持久化条件,也就是什么时候将内存中的数
2021-02-22 20:54:13 159
原创 Redis------ AOF 持久化
目录1、AOF简介2、AOF 配置3、开启 AOF4、AOF 文件恢复5、 AOF 重写6、AOF的优缺点1、AOF简介Redis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库的状态。而另一种持久化方式 AOF 则是通过保存Redis服务器所执行的写命令来记录数据库状态。比如对于如下命令: RDB 持久化方式就是将 str1,str2,str3 这三个键值对保存到 RDB文件中,而 AOF 持久化则是将执行的 set,sadd,lpush 三个命令保存到 AOF 文件中。2、AO
2021-02-22 09:39:19 153
原创 缓存穿透、缓存击穿、缓存雪崩
目录一、缓存穿透1、概念2.、解决办法二、缓存击穿1、概念2.、解决办法三、缓存雪崩1、概念2.、解决办法一、缓存穿透1、概念缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。如下图红色的流程:比如客户查询一个根本不存在的东西,首先从Redis中查不到,然后会去数据库中查询,数据库中也查询不到,那么就不会将数据放入到缓存中,后面如果还有类似源源不断的请求,最后都会压到数据库来处理,从而给数据库造成巨大的压力。2.、解决办法①、业务层
2021-02-20 20:20:45 209
原创 Redis的底层数据结构
目录1、简单动态字符串2、链表3、字典4、跳跃表5、整数集合6、压缩列表7、总结1、简单动态字符串第一篇文章我们就说过 Redis 是用 C 语言写的,但是对于Redis的字符串,却不是 C 语言中的字符串(即以空字符’\0’结尾的字符数组),它是自己构建了一种名为 简单动态字符串(simple dynamic string,SDS)的抽象类型,并将 SDS 作为 Redis的默认字符串表示。SDS 定义:struct sdshdr{ //记录buf数组中已使用字节的数量 //等
2021-02-20 17:19:27 90
原创 关于BIO、AIO、NIO的 区别于联系
目录IOBIONIOAIO区别及联系各自适用场景使用方式IO什么是IO? 它是指计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的。单独的程序一般是让系统为它们完成大部分的工作。在 Java 编程中,直到最近一直使用 流 的方式完成 I/O。所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节。流 I/O 用于与外部世界接触。它也在内部使用,用于将对象转换为字节,然后再转换
2021-02-20 09:45:52 305 2
原创 TCP与UDP的区别
TCP UDPTCP与UDP基本区别1.基于连接与无连接2.TCP要求系统资源较多,UDP较少;3.UDP程序结构较简单4.流模式(TCP)与数据报模式(UDP);5.TCP保证数据正确性,UDP可能丢包6.TCP保证数据顺序,UDP不保证 UDP应用场景:1.面向数据报方式2.网络数据大多为短消息3.拥有大量Client4.对数据安全性无特殊要求5.网络负担非常重,但对响应速度要求高具体编程时的区别1.socket()的参数不同 2.UDP Server不需要调用l
2021-02-19 21:42:28 3005
原创 多线程
多线程程序、进程、线程线程的创建和使用一、多线程的创建:方式一:继承于Thread类二、线程的常用方法三、例题:创建3个窗口买票,票数为100,使用继承Thread的方式四、多线程的创建:方式二:实现Runable接口五、例题:创建3个窗口买票,票数为100,使用实现Runnable的方式六、两种创建方式的对比线程的生命周期线程的同步解决线程安全问题的方式一、二解决线程安全问题的方式三:Lock锁---JDK5.0新增线程的死锁线程的通信JDK5.0新增线程创建方式一、多线程的创建:方式三:实现Callab
2021-02-19 21:33:44 765 1
原创 快速排序
快速排序其实是在冒泡排序的基础上做出的一个改进.快速排序算法利用的是一趟快速排序,基本内容是选择一个数作为准基数,然后利用这个准基数将遗传数据分为两个部分,第一部分比这个准基数小,都放在准基数的左边,第二部分都比这个准基数大,放在准基数的右边.接下来这两部分都是用快排(可以使用递归的方法)完成从小到大的排序.首先需要了解一下冒泡排序,简单的说就是两两比较,交换位置.基本排序方法,都会,也不多说,就直接上代码.public static void main(String[]args){
2021-02-18 10:46:56 88
原创 基本排序算法(直接排序,选择排序,冒泡排序)
一、 直接排序思路:首先需要两个嵌套的for循环,外层for循环控制轮数;内层for循环控制每轮比较的次数。这里来演示一下遍历的过程:第一轮:首先让i指向数组的首部,让j指向i的后一个元素,两者比较,2比1大,所以交换2跟1的位置,然后j后移依次这样排完一轮的结果为:第二轮:让i后移,j指向i的后一位,继续重复第一轮的过程。第三轮:一直重复就可以排序完成了。代码实现//此代码包含转换过程import java.util.*;public class DSort{publ
2021-02-18 10:40:01 4625
原创 TCP的三次握手与四次挥手过程与面试题
三次握手过程三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。进行三次握手:(1)第一次握手:Client将标志位SYN置为1,随机产生一个值
2020-11-20 16:58:04 156
原创 HashMap底层实现原理 扩容机制
HashMap概述:HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。HashMap的容量,默认是16 /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_C
2020-11-17 00:08:51 323
原创 Collection接口,List的实现类ArrayList
Collection接口,ArrayList集合底层源码。Collection接口,ArrayList集合底层源码。Collection集合概述1.集合作为容器用来存储,管理大量的对象(引用),这些集合内部用了不同的数据结构来存储元素,这些数据结构的不同导致了每种集合的增删改查效率不同。2.内部存储的只能是“对象引用”,子类使用多态存储基本数据类型时,泛型需要使用他们对应的包装类。Collection接口的常用方法由于Collection是一个接口,所以该类中全部都是抽象方法,调用时会使用多态
2020-11-10 00:03:02 308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人