自定义博客皮肤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 876

原创 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 321

原创 redis基础

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

2021-12-28 15:48:45 615

原创 什么是IO多路复用

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

2021-12-25 21:25:38 1403

原创 volatile关键字

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

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

原创 OAuth2使用场景及用法

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

2021-07-07 18:39:21 1662

原创 java策略模式

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

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

原创 线程池参数理解

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

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

原创 偏向锁

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

2021-04-12 16:46:12 284

原创 threadpool

a a

2020-06-09 11:22:46 244

原创 mq

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

2020-05-27 19:01:49 147

原创 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 356 1

空空如也

空空如也

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

TA关注的人

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