Java
文章平均质量分 75
Java知识总结
骷髅头唱歌
这个作者很懒,什么都没留下…
展开
-
Redis——整数集合
Redis——整数集合 整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现 整数集合的实现 整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,可以保存类型为int16_t、int32_t或者int64_t的整数值,并且保证集合中不会出现重复元素 每个intset.h/intset结构表示一个整数集合 typedef struct intset { //整数集合中元素的编码方式 u原创 2021-09-26 10:52:24 · 459 阅读 · 0 评论 -
Reidis——跳跃表
跳跃表 跳跃表(skiplist)是一种有序的数据结构,它通过在每一个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的 跳跃表查找节点的平均时间复杂度为O(lonN)、最坏为O(N),但需要维护几个指向其他节点的指针,空间复杂度为O(N),还可以通过顺序性操作来批量处理节点 在大部分情况下,跳跃表的效率可以和二叉平衡树相同,并且跳跃表的实现较为简单 Redis使用跳跃表作为有序集合Zset的底层实现之一,当一个有序集合包含的元素数量较多或者一个元素的成员是比较长的字符串时,Red原创 2021-09-25 15:01:45 · 123 阅读 · 0 评论 -
Redis——字典
Redis——字典 字典,又称为符号表、关联数组或映射(map),是一种用于保存键值对的抽象数据结构 在字典中,一个键key映射一个值value ,通过key来操作value ,因此字典中的key必须是唯一的 在Redis中,字典被用于Redis数据库的底层实现,也就是说我们存储的五大Redis数据类型String,List,Set,Zset,Hash 都被存储在字典里,并且数据类型Hash的底层实现之一也是字段 字典是实现 Redis的字典使用哈希表作为底层实现,一个哈希表里面有多个哈原创 2021-09-23 08:49:59 · 841 阅读 · 0 评论 -
Redis——链表
Redis——链表 由于Redis使用C语言来编写的,而C语言中并没有像其他语言一样拥有自己内置的数据结构,显然链表在C语言中也没有内置的,故Redis实现了自己的链表结构 链表在Redis中应用十分广泛,如列表的底层实现之一 就是链表,当一个列表中的元素比较多或者列表中包含的元素是比较长的字符串时,Redis就会使用链表来作为列表的底层实现,并被用于发布/订阅,保存客户端状态信息,客户端输出缓冲区 等等 链表和链表节点的实现 链表节点被定义在adlist.h下的 listNode 结构体中原创 2021-09-22 10:25:30 · 152 阅读 · 0 评论 -
简单动态字符串
简单动态字符串 Redis直接构建了一种名为简单动态字符串(Simple Dynamic String,SDS) 的抽象类型来作为Redis的默认字符串表示,而没有使用C语言中传统的字符串表示 使用SDS是由于Redis中的字符串类型是需要经常改变的,而如果使用原生的C语言字符串的话就会有较多限制和缺陷,所以C字符串常作为Redis中的字符串常量使用,如输出日志 SDS作为Redis中最常使用的数据类型,如Redis中的五大数据类型中的键都是用SDS来保存的,还被用于缓冲区(AOF缓冲区,客户端原创 2021-09-21 19:04:23 · 192 阅读 · 0 评论 -
排序--java
#排序算法 冒泡排序Bubble Sort 冒泡排序是通过依次比较相邻两个元素的值,将最大的元素往后调或最小的元素往前调,如果两个元素值相等则不会改变它们在序列中的顺序,故冒泡排序是稳定的 稳定排序是指如果一个待排序序列中有两个或两个以上值相同的元素,再排序后它们的相对顺序没有改变 /* * 对于冒泡排序,假设传入的对象长度为n,则需要进行两轮for循环 * 最坏情况是每个元素都需要进行比较并交换,则比较和交换的次数为:n+(n-1)+...+1,总共执行次数是:2原创 2021-09-20 19:01:23 · 64 阅读 · 0 评论 -
RabbitMQ重要知识
RabbitMQ 一、RabbitMQ简介 消息中间件 消息(Message)是指在应用间传送的数据 消息队列中间件(Message Queue Middleware,简称MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成 消息队列中间件又称为消息中间件,它一般由两种消息传递模式:点对点模式(P2P)和发布/订阅模式(Pub/Sub),消息中间件提供基于存储和转发的应用程序之间的异步数据发送 RabbitMQ RabbitMQ是采用Er原创 2021-08-28 08:06:55 · 402 阅读 · 0 评论 -
Nginx知识大全
Nginx 文章目录Nginx一、Nginx简介二、Nginx安装三、Nginx目录结构 一、Nginx简介 Nginx是一个高性能的HTTP和反向代理 服务器,同时也是一个 POP3/SMTP 代理服务器 Nginx的特点 速度更快、并发更高:Nginx底层使用了多线程和I/O多路复用(epoll,Linux内核在2.6后开始支持epoll模型) 配置简单、扩展性强:Nginx本身由很多个模块组成,可以自由的添加删除模块 高可靠性:一个Master进程管理多个Worker子进程,并且在一个Wor原创 2021-08-25 13:01:41 · 697 阅读 · 0 评论 -
Redis全套笔记
Redis 文章目录Redis一、Redis简介二、Redis数据类型String(字符串)Hash(哈希)列表(List)集合(Set)有序集合(Sorted Set)三、Redis必备命令键(Key)命令HyperLogLog命令脚本命令连接命令服务器命令配置相关命令四、Redis数据库五、Redis客户端与服务器Redis服务器服务器函数六、Redis底层数据结构七、Redis事务八、Redis消息订阅九、Redis持久化十、Redis集群十一、Redis高级功能 一、Redis简介 Redis原创 2021-08-10 11:10:18 · 190 阅读 · 0 评论 -
Java之并发编程JUC
Java 并发编程JUC 并发与并行 Rob Pike 对并发与并行的描述 并发(concurrent)是同一时间应付(dealing with)多件事情的能力 并行(parallel)是同一时间做(doing)多件事情的你能力 对于单核CPU来说,多个线程是并发执行的,由操作系统的任务调度器调度线程间的轮流、交替执行 对于多核CPU来说,多个线程可以是并行执行的,有几核则可以同时运行几个线程 同步与异步 从方法调用的角度: 如果方法需要等待结果返回才能继续往下执行,则该方法原创 2021-07-19 17:48:08 · 73 阅读 · 0 评论 -
Java内部类
Java内部类 内部类(内部定义的普通类、抽象类、接口的统称)是指一种嵌套的结构关系,即在一个类的内部定义一个类结构。内部类可以方便地访问外部类的私有属性,外部类也同样可以访问内部类的私有属性,内部类通常为外部类提供服务而存在。 内部类虽然定义在外部类的内部,但本身也是一个完整的类,也可以进行实例化,但实例化内部类必须先获取相应的外部类实例对象后,才可以利用外部类的实例化对象进行内部类对象的实例化操作 外部类.内部类 内部类对象 = new 外部类().内部类(); 内部类私有化 如果一个原创 2021-07-18 19:42:18 · 75 阅读 · 0 评论 -
HashMap源码分析
HashMap(JDK1.7 一、HashMap构造函数 实例化HashMap对象 //通常我们会这样来实例化一个HashMap对象 Map hashMap = new HashMap(); //指定容量 Map hashMap = new HashMap(16); //指定容量和加载因子 Map hashMap = new HashMap(16,0.75f); 而这三个构造函数背后是怎样的呢?我们依次来看源码。 在HashMap类中,有两个静态常量与HashMap对象的实例化息息相关,它们分别是默认原创 2021-07-18 19:41:11 · 99 阅读 · 0 评论 -
JVM之垃圾收集器与内存分配策略
垃圾收集器与内存分配策略 一、概述 了解垃圾收集和内存分配能够在我们需要排查各种内存溢出、内存泄漏等问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就必须对这些“自动化”技术实施必要的监控和调节。 Java运行时区域中的程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,栈中的栈帧随着方法的进栈和出栈而有条不紊地执行,每一个栈帧中分配多少内存基本上式类结构确定的,这几个区域的内存分配和回收都具备确定性,当方法结束或线程结束时,内存自然就跟着回收了。 而Java堆和方法区的内存的原创 2021-07-18 19:40:22 · 61 阅读 · 0 评论 -
Java集合框架
Java集合框架 概述 Java集合框架提供了一套性能优良、使用方便的接口和类,位于java.util包下。 集合是一个对象,可容纳其他对象的引用,任何对象加入集合后会自动转变为Object类型,所以在取出时需要进行强制类型转换。 Java集合框架是一个用来代表和操作集合的统一架构,包含以下内容: 接口:代表集合的抽象数据类型,例如:Collection、List、Set、Map等,定义多个接口方便用户以不同的方式操作数据集合 实现(类):是集合的具体实现,例如:ArrayList、LinkedLi原创 2021-07-18 19:39:19 · 132 阅读 · 0 评论 -
JVM之内存区域
Java内存区域与内存溢出异常 一,概述 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为没一个new操作去编写配对的delete/free代码,不容易出现内存泄漏和内存溢出的问题,但一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误、修正问题将成为一项异常艰难的问题。 二,Java虚拟机内存模型 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有些原创 2021-07-18 19:35:28 · 60 阅读 · 0 评论