自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 Redis基本数据类型

字符串(Strings)字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据,例如: 一张JPEG格式的图片或者一个序列化的Ruby对象。一个字符串类型的值最多能存储512M字节的内容。你可以用Redis字符串做许多有趣的事,例如你可以:利用INCR命令簇(INCR,DECR,INCRBY)来把字符串当作原子计数器使用。 使用APPEND命令在字符串后添加内容。 将字符串作为GETRANGE和SETRANGE的随机...

2021-09-11 09:30:55 83

原创 Redis为什么这么快

一、基于内存 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);二、单线程 redis采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多线程导致的切换而消耗CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗三、精心设计的数据结构 数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;感兴趣的同学可...

2021-09-04 19:11:39 86

翻译 Synchronized关键字

一、synchronized的基本使用修饰静态方法 当synchronized修饰静态方法时,锁是类的class对象修饰普通方法 当synchronized修饰普通方法时,此时锁是当前对象修饰代码块 当synchronized修饰代码块时,此时需要指定锁二、synchronized的作用 保证在同一时刻最多只有一个线程执行该方法或代码,保证并发安全三、synchronized锁升级1.膨胀过程...

2021-08-09 22:14:05 111

原创 Java对象结构

以HotSpot虚拟机为例。Java对象结构主要由对象头(Header)、实例数据(Instance Data)、对齐填充(Padding)三部分组成一、对象头(Header) 对象头主要由三部分组成,MarkWord、类型指针、数组长度MarkWord。这部分主要用于存储对象自身的运行时数据,如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据的长度在32位和64位的虚拟机中分别为32bit和64bit 类...

2021-08-08 22:23:35 808

原创 ThreadLocal

一、ThreadLocal是什么 ThreadLocal是JDK提供的一个线程本地变量,各线程间访问隔离。二、ThreadLocal如何使用通过set方法存入 通过get方法取出 通过remove方法移除package com.example.springboot;public class Person { public static ThreadLocal<Person> threadLocal = new ThreadLocal<&...

2021-08-01 11:22:39 50

原创 Java引用类型

今天我们来学习一下java引用类型,java引用类型主要分为强引用、软引用、弱引用、虚引用。一、强引用 如果一个对象被强引用,那么无论如何都不会被垃圾回收器回收,最常见的强引用就是通过new关键字创建一个对象Person person = new Person(); 我们重写Person的finalize方法,然后手动调用System.gc(),可以看到,只有当Person对象没有被引用才会被回收public class Person { @Overrid...

2021-07-31 12:05:23 444

原创 Java线程池

一、java线程池具体实现主要是ThreadPoolExecutor 二、线程池的七个参数corePoolSize(核心线程数) 当线程池线程数小于核心线程数,新添加的任务会创建核心线程去执行maximumPoolSize(最大线程数) 线程池允许创建的最大线程数,当工作队列已满,则会创建新的新的线程来执行任务,直至达到最大线程数keepAliveTime(线程存活时间) 当线程池线...

2021-07-25 18:15:08 312

原创 JAVA线程池工作流程

当一个新的任务被添加到线程池时,会经过以下流程判断核心线程是否都在执行任务,如果没有则创建一个核心线程去执行任务,如果核心线程已达到最大,则进入下一步 将任务添加至工作队列,如果工作队列未满,则加入工作队列,反之进入下一个流程 判断当前线程数是否达到最大线程数,如果没有,则创建一个新的线程来执行任务,否则进入下一个流程 执行拒绝策略...

2021-07-25 17:07:01 200

原创 Java线程池状态

java线程池状态主要包含五种,RUNNING、STOP、SHUTDOWN、TIDYING、TERMINATED,各种状态转换如下一、RUNNING线程池一旦被创建,就处于RUNNING状态 RUNNING状态可以处理当前任务,以及接收新的任务二、STOPRUNNING状态的线程池,调用shutdownNow()方法,状态将变成STOP STOP状态不接收新任务,不处理工作队列的任务,并且会中断正在处理的任务三、SHUTDOWNRUNNING状态的线程池,调用s...

2021-07-25 16:09:29 898

空空如也

空空如也

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

TA关注的人

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