Redis持久化

Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能、持久存储、适应高并发应用场景等优势。它虽然起步较晚,但发展却十分迅速。 由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保...

2019-05-23 23:41:18

阅读数 2

评论数 0

Redis I/O 多路复用

引出IO多路复用 为什么 Redis 中要使用 I/O 多路复用这种技术呢? 首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个进程无法对其...

2019-05-19 19:18:01

阅读数 56

评论数 0

高性能IO模型浅析

最近在学习Redis,了解到Redis是单线程的,但是运用了I/O 多路复用技术,可以并发响应多个客户端请求。下面来了解一下常见的IO模型。 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(BlockingIO):即传统的IO模型。 (2)同步非阻塞IO...

2019-05-16 23:39:47

阅读数 11

评论数 0

Redis线程安全问题

Redis是线程安全的吗? Redis是个单线程程序,所以它是线程安全的。 Redis单线程为什么还能这么快? Redis是基于内存的,内存的读写速度非常快; Redis是单线程的,避免了不必要的上下文切换和竞争条件; Redis使用多路复用技术,可以处理并发的连接。非阻塞I/O内部...

2019-05-16 17:29:26

阅读数 7

评论数 0

Oracle insert all 讲解

1、概念 Oracle 中insert all 是指把 同一批 数据插入到 不同的表 中。 假如,现在有个需求,把表 t 的中数据分别插入到 t1、t2,如果你不知道 insert all, 你可能会使用 insert 插入 2 次,例如: INSERT INTO t1(object_id...

2019-05-08 22:36:09

阅读数 14

评论数 0

HashMap为什么是线程不安全的

HashMap的容量是有限的,当经过多次元素插入,使得HashMap达到一定饱和度时,Key映射位置发生冲突的几率会逐渐提高。这时候,HashMap需要扩展它的长度,也就是进行resize。 影响发生resize的因素有两个: 1.capacity:HashMap数组长度,默认初始为16。Ha...

2019-04-11 00:15:20

阅读数 34

评论数 0

数据结构之栈与队列

1.栈与队列 栈与队列是程序设计中广泛使用的两种重要的线性数据结构。 栈是LIFO(Last In First Out),先存进去的数据只能最后被取出来,进出顺序逆序,即先进后出,后进先出。 队列是FIFO(First In First Out),它保持进出顺序一致,即先进先出,后进后出。 ...

2019-04-09 23:13:58

阅读数 32

评论数 0

LinkedList实现栈和队列操作

LinkedList 不仅实现了List接口还实现了Dueue接口(双端队列,既具有队列的特征,也具有栈的特征),Dueue接口是Queue的子接口。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口,能对它进行队列操作。 LinkedList 实现 Dequ...

2019-04-09 21:47:24

阅读数 15

评论数 0

队列Queue

队列是一种数据结构,它只允许在队列尾部(rear)加人一个元素,和从队列头部(front)移除一个元素。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为...

2019-04-04 17:52:54

阅读数 38

评论数 0

List与Array转换

List to Array List 提供了toArray的接口,所以可以直接调用转为object型数组: List<String> list = new ArrayList<String>(); Object[] array=list...

2019-04-04 11:39:30

阅读数 18

评论数 0

ArrayList内部原理

简介 ArrayList 是一种变长的基于数组实现的集合类,允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,它会自动扩容至一个更大的数组。 另外,由于 ArrayList 底层基于数组实现,所以其可以保证在 O(1) 复杂度下完成随机查找操作。其他方面,Ar...

2019-04-02 21:02:12

阅读数 21

评论数 0

ConcurrentHashMap原理分析(1.7)

一、出现背景 1、线程不安全的HashMap 先说HashMap,HashMap是线程不安全的,在并发环境下,可能会形成环状链表(扩容时可能造成,具体原因自行百度google或查看源码分析,参考https://blog.csdn.net/diweikang/article/details/89...

2019-03-27 22:14:35

阅读数 25

评论数 0

HashSet的实现原理

1、HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2、HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层...

2019-03-22 15:05:22

阅读数 17

评论数 0

String中equals()、hashCode()方法的作用与源码

String类中的equals()方法的源码如下: public boolean equals(Object anObject) { if (this == anObject) { return true; } i...

2019-03-22 13:08:30

阅读数 27

评论数 0

重写equal()时为什么也得重写hashCode()之深度解读

1.equals()的所属以及内部原理(即Object中equals方法的实现原理) 说起equals方法,我们都知道是超类Object中的一个基本方法,用于检测一个对象是否与另外一个对象相等。而在Object类中这个方法实际上是判断两个对象是否具有相同的引用,如果是,它们就一定相等。其源码如下...

2019-03-21 22:24:14

阅读数 66

评论数 0

List集合去除重复对象

在java中,要将一个List中重复的对象除去,如果这个集合中的数据类型是基本数据类型,可以直接将List集合转换成Set,就会自动去除重复的元素,大家都知道Set集合的特点就是没有重复的,这个就相对比较简单,这里不在详细说,我们下面说的List集合中的数据类型是一个对象类型的情况。 当List...

2019-03-21 21:28:51

阅读数 20

评论数 0

List的equals方法学习

之前没有了解过这个方法,初次在项目中看到它的时候还以为是在比较两个List的地址,后来看了源码才知道了这个方法的作用。 首先看一个例子: public class Test{ public static void main(String[] args){ ArrayL...

2019-03-21 18:53:30

阅读数 40

评论数 0

HashMap实现原理与源码分析

哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的HashMap的实现原理进行讲解,...

2019-03-12 22:21:47

阅读数 21

评论数 0

HashMap底层实现原理

数据结构中有数组和链表这两个结构来存储数据。 数组存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但查找的时间复杂度很大,达O(N)。链表的特点是:寻址困...

2019-03-11 23:24:47

阅读数 34

评论数 0

Java集合面试题

1、集合框架基础知识 https://blog.csdn.net/weixin_39464761/article/details/75137902 2、说出ArrayList、Vector、LinkedList 的存储性能和特性?【基础】 答:ArrayList 和Vector 都是使用...

2019-03-10 22:59:47

阅读数 611

评论数 0

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