自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jvm内存模型&面试

jvm概念 jvm是运行java程序的虚拟机。 jvm内存结构 1.8之前: 1.8之后: 内存结构说明: 1)堆:存储所有创建的对象; 2)方法区(元空间):存储类加载后的元数据、静态变量、常量; 3)虚拟机栈:方法运行时内存区域; 4)本地方法栈:存储native方法; 5)程序计数器:存储运行字节码行号; 是否共享: 堆和方法区(元数据)是线程共享区域,其他事线程私有。 类加载过程 加载 在加载阶段,通过全类名来获取描述该类的二进制字节流,也就是.class文件,这个过程被称为加载; 类加

2022-01-17 23:06:41 836

原创 redis进阶

redis持久化 Redis虽然是定义为一个内存数据库,但是其也支持数据的持久化,在Redis中提供了两种持久化机制:RDB持久化和AOF持久化。 RDB 概念 RDB全称Redis Database,若设置持久化方式为rdb,redis默认会生成dump.rdb文件,保存当前数据副本dump.rdb 触发方式 RDB有两种触发方式,手动触发和自动触发; 1)手动触发: 使用save和bgsave命令手动触发RDB,save是工作线程执行持久化操作,会阻塞其他客户端请求;bgsave是主线程会foce一个

2022-01-03 18:04:46 292

原创 redis基础

redis为什么快 redis存在内存中,内存读写ns级,磁盘读写ms级; redis 是k,v,没有关系操作; value是有类型的,每种类型都有自己的本地方法,计算向数据移动,计算发生在内存; io多路复用,epoll; redis数据结构 先上一张图 string 二进制安全,可以存字符串、整数、图片、序列化json对象,底层数据结构SDS(动态字符串) 主要命令: hash mapmap,value也是k,v形式存储,底层数据结构ziplist + hashtable 为什么要有ziplis

2021-12-28 15:48:45 589

原创 什么是IO多路复用

前景概念 IO 在linux操作系统中,一切皆文件,就是一串二进制字符流;在信息交换的过程中,我们都是对这些流进行的收发操作,简称IO(input and output); 流的读写,用程序和内核发生的系统调用来实现,read() write()。 socket Socket可以看成在两个程序进行通讯连接中的一个端点,一个程序将一段信息写入Socket中,该Socket将这段信息发送给另外一个Socket中,使这段信息能传送到其他程序中 文件描述符 文件描述符就是fd文件,创建socket系统调用会生成一个

2021-12-25 21:25:38 1377

原创 volatile关键字

概念 volatile是轻量级同步机制(低配synchronized) 特性 内存可见性 不保证原子性(n++) 禁止指令重排序 内存可见性 要理解内存可见性先得了JMM内存模型(非JVM) JMM是java并发编程使用的内存模型,是一种规范: 线程之间的共享变量存储在主内存(Main Memory)中,每个线程都有一个私有的本地内存(Local Memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存、写缓冲区、寄存器以及其他的硬件和编译

2021-07-16 15:15:41 85 1

原创 OAuth2使用场景及用法

oauth2协议 生活中你遇到过oauth2授权吗? 其实生活中有很多oauth2的场景: 1、比如我们使用微信小程序,其实就有oath2的过程,不过是隐式的,用户无感知; 2、再说一个比较直观的,当我们使用滴滴出行或者美团app进行登录时,可以选择微信授权登录,并不需要输入密码,如图: 只需要点同意,美团就可以使用微信登陆,这中间其实就是oath2的过程。 在美团的系统中,是没有存储微信的用户信息,但是授权过后就可以使用到微信的部分权限。这操作过程就是基于OAuth2协议实现的。OAuth2是当前授

2021-07-07 18:39:21 1590

原创 java策略模式

什么是策略模式 春节回家我们可以选择步行、骑行、火车、飞机、火箭等等方式;每个出行方式具体实现方式和体验都是有差异的,但是最终我们都可以到家。一句话:殊途同归。 有了这个例子,我相信你应该对其思想有了一个基本的认识,下面看一下其正式的概念介绍: 定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换 为什么要使用策略模式 举个简单的例子,春节回家我们可以选择步行、骑行、火车、飞机、火箭等等方式;每个出行方式具体实现方式和体验都是有差异的,那么之前我们的代码可能是这样: public void g

2021-06-01 16:27:18 2592 4

原创 线程池参数理解

线程池各参数含义 先来看看源代码,线程池创建都需要传哪些参数,上代码 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,

2021-04-22 19:37:10 129 1

原创 偏向锁

偏向锁 概念 偏向锁是Java 6之后加入的新锁,它是一种针对加锁操作的优化手段,经过研究发现,在大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,因此为了减少同一线程获取锁(会涉及到一些CAS操作,耗时)的代价而引入偏向锁。 mark word 和 monitor mark word (实现偏向锁、轻量级锁关键) 如图可以看出,对象头中的Mark Word(标记字)主要用来表示对象的线程锁状态,另外还可以用来配合GC、存放该对象的hashCode; monitor (重量锁实现

2021-04-12 16:46:12 250

原创 threadpool

a a

2020-06-09 11:22:46 221

原创 mq

投递流程 消息投递到exchang,根据路由key路由到对应queen exchang类型 direct、topic、fanout、hearders direct精确匹配,topic模糊匹配 通常使用fanout(不用路由,效率最快,默认使用) 可靠性投递方案 消息落库,本地db存储(业务存储、消息存储),投递返回成功,修改数据状态,状态长时间未改,补偿策略重新投递; BIZ DB:订单数据库(或其他具体业务) MSG DB:消息数据库 第1步:将订单入库,创建一条MSG(状态为0) 入MSG DB库 第

2020-05-27 19:01:49 128

原创 jdk1.8 hashmap

与1.7对比 数据结构:1.7是hash数组 + 链表;1.8采用hash数组 + 链表 + 红黑树; 数据插入:1.7头插法;1.8尾插法; 扩容后数据分布方式:1.7是对所有key重新hash(key的hash值的二进制 & length-1的二进制);1.8是原位置或者(原位置+oldlen) ...

2020-03-31 15:41:47 310 1

空空如也

空空如也

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

TA关注的人

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