自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Innodb事务和锁总结

Innodb事务和锁总结一. 事务隔离级别READ UNCOMMITED :读未提交,事务之间可以看到彼此之间正在修改的内容,会出现所谓的脏读现象READ COMMITED : 读已提交,只能读取已经提交的事务修改的数据,不会出现脏读的现象,但会出现不可重复读和幻读的情况REPEATABLE READ : 可重复度,在innodb中解决了不可重复读和幻读的问题SERIALIZED : ...

2020-04-24 14:57:18 241

原创 HTTPS的疑问汇总

HTTPS的疑问汇总一、https相较于http协议有什么区别?https是运行在SSL/TSL协议上的http, 本质上在应用层都是http协议(文本协议),只是在https新增了一层安全层,通过SSL/TSL协议(二进制协议)来保证通信过程是安全的。二、对称加密和非对称加密有什么区别?简单来说,对称加密是双方维护一个相同的秘钥,双方通过此秘钥来对密文进行加密解密,加密和解密的过程都是通...

2020-03-15 21:21:41 197

原创 SpringBoot常见疑问汇总(二)

SpringBoot常见疑问汇总(二)一、@Import注解有什么作用?为什么不用@Bean,@Component之类的常用注解来解决?首先回答第一个问题,@Import的主要作用是在配置Bean的时候导入其他必要的Bean, 可以Import的类型可是普通的Bean,也可以是ImportBeanDefinitionRegistrar、ImportSelector类型。相比较@Bean和@Co...

2020-03-13 15:24:20 183

原创 关于Collection的ConcurrentModificationException

关于Collection的ConcurrentModificationException在使用Java迭代器的时候,执行next()方法调用一个名为checkForComodification()的方法,简单看一下方法的具体实现代码final void checkForComodification() { if (modCount != expectedModCount) throw n...

2020-03-12 11:39:21 259

原创 Java 从字节码的角度来看i++

一、自增操作的原子性在java中i++是否是原子的,答案当然是否定的,java中的自增操作并不是原子的,分析的过程比较简单,只需要看一下生成的java字节码就很容易明白public class Main { private int i = 0; public void inc() { i++; }}javap看一下对应的字节码 0 aload_0 # 载入this指针到...

2019-11-28 22:10:38 191

原创 java8 中metaspace的理解

METASPACE的理解JAVA 8中引入了metaspace的概念代替了原有perm区,主要的目的还是为了解决perm区大小管理的困境, java 7中perm区是分布在堆内存中,而且metaspace是分布在native memory区域中,从而解决了perm大小设置不慎导致的OOM的问题。METASPACE的参数metaspaceSize初看的时候都会以为这是metaspace的区...

2019-09-09 20:28:39 1656

原创 BidDecimal原理

BigDecimal原理一、浮点数的精度问题对于日常开发过程中出现小数的问题,通常都是使用float或者double类型来处理,在java中float占用四个字节, double类型占用8个字节,简单的从double类型来说,计算机中存储的格式为位数功能63符号位62 - 52指数位51-0尾数一个浮点数的数值 d=±1.f×2E−127d = ...

2019-07-27 16:05:14 945

原创 MySql语句执行顺序

MySql语句执行顺序MySql的sql语句由多个关键词和参数组成,熟悉sql语句的执行顺序对于我们分析语句和优化sql有很好帮助,这里先简单记一下执行的顺序,之后做详细的解析(1)from(3) join(2) on(4) where(5)group by(开始使用select中的别名,后面的语句中都可以使用)(6) avg,sum…(7)having(8) select(9...

2019-07-02 14:16:41 195

原创 RoaringBitmap

GITHUB实现地址RoaringBitmapRoaringBitmap是最近刚刚看到的一个压缩位图数据结构,可以有效的提升位图的内存使用效率,整个算法基本结构并不复杂,对于2^32位的数据, 将数据分成两部分做索引,高16位主要用来用来索引container, container中存放低16位数据, 其中container的实现分成三种,ArrayContainer, BitmapConta...

2019-02-25 21:58:19 1254

原创 关于DirectByteBuffer的问题

关于DirectByteBuffer的问题1、 DirectByteBuffer的内存是在用户空间还是内核空间?directBytebuffer依然是属于用户空间,在jvm所在的进程当中,只是不在gc的管理范围之内罢了,所以本质上依然是用户态的内存而已,和堆内的内存没有本质的区别。2、 DirectByteBuffer为什么在io的时候回表现更好?jvm在做IO的时候,我们可以看一下jdk...

2019-02-01 11:14:27 841

原创 Netty写入过程中的一些问题

ChannelFuture什么时候发出完成的通知?Netty写入数据的时候,最终会调用Unsafe的方法的write方法,unsafe写入的数据的时候,会把msg包装成一个Entry放到ChannelOutboundBuffer当中,Entry的结构是 static final class Entry { private static final Recycler<...

2019-01-31 20:05:18 389

原创 JAVA Launcher简析

JAVA Launcher简析sun.misc.Launcher类是java的入口,在启动java应用的时候回首先创建Launcher类,准备启动过程中需要的类加载器。一、ClassLoaderLauncher作为JAVA应用的入口,了解java类加载原理的可能就会猜测Laucher的类加载器是BootStrapClassLoader, 这是一个C++编写的类加载器,是java应用体系中最顶...

2019-01-19 17:07:31 10379

原创 RPC博客列表

RPC的心跳保活策略

2019-01-14 22:28:11 203

原创 Wrk http压测工具使用

wrk压测工具wrk只能在类Unix环境中运行,保证当前环境安装make和gccgit clone https://github.com/wg/wrk.git

2019-01-14 22:03:51 741

原创 java使用protobuf

Java中使用ProtobufProtobuf是Google推出的跨语言的序列化方式,是gRpc中消息的序列化方式。protobuf是高性能的序列化方式,跨语言,序列化后数据尺寸小,序列&反序列化速度快,唯一可能产生的不便就是需要用户编写.proto文件来定义接口和消息格式。导入jar包 <dependency> <groupId>com.googl...

2019-01-14 21:43:09 874

原创 java InterruptedException

java InterruptedException当线程处于waiting或者sleeping状态的时候,调用interrupt方法的时候就,阻塞的线程就会抛出异常,当线程处于运行状态的时候,interrupt只会把线程的状态设置一个中断的标记位,其他不会做任何事情。...

2018-10-12 20:45:34 337

原创 Spring Boot源码简析(二)

Spring Boot源码简析(二)load 资源过程在上一篇博客中我们说了SpringApplication的主要启动逻辑,其中context创建之后第一步就是执行load(context, sources.toArray(new Object[sources.size()]));load主要就是把我们传入的资源生成相应的BeanDefinition。protecte

2018-01-22 20:35:06 212

原创 Spring源码简析(一)

Spring源码简析(一)Application启动使用Spring-boot我们可以非常简单的就能搭建一个spring应用,开发人员可以直接通过Main方法启动的SpringApplication来启动Spring-boot@SpringBootApplication@EnableAutoConfigurationpublic class DemoApplication e

2018-01-18 16:54:23 324

原创 Netty 水位详解

Netty 写水位在启动Netty bootstrap的时候可以设置ChannelOption选项,其中ChannelOption中有一项WRITE_BUFFER_HIGH_WATER_MARK选项和WRITE_BUFFER_LOW_WATER_MARK选项,,此配置写缓冲区(OutbounduBuffer)相关,此配置可以帮助用户监控当前写缓冲区的水位状况,ChannelOutboundBu...

2017-12-06 23:18:10 7554 1

原创 java8 HashMap原理

java8 HashMap实现原理HashMap是日常开发中非常常用的容器,HashMap实现了Map接口,底层的实现原理是哈希表,HashMap不是一个线程安全的容器,jdk8对HashMap做了一些改进,作为开发人员需要对HashMap的原理有所了解,现在就通过源码来了解HashMap的实现原理。首先看HashMap中的属性 //Node数组 transient No

2017-12-06 20:43:21 415

原创 Java线程池实现原理

Java线程池实现原理

2017-12-06 20:42:18 196

原创 WeakHashMap总结

WeakHashMap总结WeakHashMap实现了Map接口,使用起来和HashMap相似,只是内部的一些细节实现有所不同。 Reference的实现ReferenceQueue的实现和其他Map实现相似,weakHashMap中也定义了Entry类来存储kv键值对,weakhashMap中entry的实现也是实现弱引用特性的关键。Entry定义private st

2017-12-06 20:21:42 1340

空空如也

空空如也

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

TA关注的人

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