MySQL事物原理与MVCC
事务隔离级别分为以下4种:
继续阅读→
事务隔离级别分为以下4种:
继续阅读→
使用位图法,记录海量签到数据,打卡数据。
继续阅读→
基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。 继续阅读→
阅读全文ThreadLocal和Synchonized都是为了解决线程并发的问题,但是ThreadLocal和Synchonized是完全相反的
ThreadLocal是为每个线程提供变量的副本,自己私有的变量
Synchonized是控制共享的变量只能在某个时间被一个线程用到
继续阅读→
通过对getBean方法对源码分析,我们可以清晰的理解bean的加载过程
继续阅读→
Spring容器的创建过程、Bean的创建过程,主要在refresh函数中完成,通常我们使用下面的方法去创建、以及初始化容器:
继续阅读→
redis的对象如图包含:对象类型、编码格式、指向底层实现数据的指针
继续阅读→
NAT的作用就是将内网请求外网时,使用同一个ip地址。
然后将接收外网的请求,并且转发给内网的ip。
继续阅读→
ping是基于ICMP协议工作的,ICMP全称Internet Control Message Protocol,互联网消息控制协议。
继续阅读→
ARP(Address Resolution Protocol)直译就是地址解析协议
继续阅读→
布隆过滤器的作用是判断一个值肯定不存在、或者可能存在。 继续阅读→
阅读全文一、漏桶算法 继续阅读→
阅读全文我们都直到mysql通过redolog来保证崩溃时的恢复的,并且是通过二阶段提交来实现的,即:
阅读全文1.redo log写满了,那么新的写sql请求就会阻塞,等待redo log刷磁盘,空出空间接收新sql
继续阅读→
java7中,concurrentHashMap使用的是若干个segement,每个segement中又一个数组,数组下面是链表。
继续阅读→
堆中对象堆的存储布局可分为三个部分:对象头(Header)、实例数据(Instance Data)、填充(Padding)
继续阅读→
1.方法内联
继续阅读→
1.解析
继续阅读→
我们来看这样一个类
继续阅读→
运行时数据区如图: 继续阅读→
阅读全文redis的主从复制方式
继续阅读→
位图法的原理主要就是利用int类型数据,一个int类型数据是4个字节,一个字节8位,然后一个int数据利用自身字节位就可以表示0-31的数是否存在,bit位表示数值,位山0,1值表示这个数值是否存在。
继续阅读→
redis的序列化协议指的是在客户端与服务的交互发送内容协议,定义了请求和响应时内容的格式
继续阅读→
redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。 继续阅读→
阅读全文Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
继续阅读→
redis rehash的过程是渐进式的,rehashindex为-1表示未触发扩容过程 继续阅读→
阅读全文JDK代理是基于接口形式进行代理的,那么生成的代理类在使用的时候,就可以用接口形式去使用。 继续阅读→
阅读全文zk分布锁的实现原理类似reentranlock的公平锁,zk会维护一加锁节点的list,按顺序释放锁资源。
继续阅读→
当线程池并发任务处理时,如果使用的是同一个线程池,那么很有可能出现线程的死锁 继续阅读→
阅读全文1. Producer(生产者) : 产生消息的一方。 继续阅读→
1.从xml配置文件,或者注解加载BD,beanDefinition 继续阅读→
阅读全文我们在new一个对象时,都会在堆中开辟一个内存空间给这个对象。
那么多个线程如果开辟到了同一个地址的内存,不就冲突了?
继续阅读→
我们比较两个对象是否相等,有两种方式:
1.直接通过运算符 == 比较
2.通过equals比较
通过==比较的是引用地址,通过equals方法看具体类重写的实现,例如string就是比较具体值
阅读全文AQS指的就是AbstractQueuedSynchronizer
中文直译就是:抽象队列同步器 继续阅读→
java异常类都继承至throwable类:
继续阅读→
java克隆有2种方式,使用clone方法去克隆,或者使用序列化的方式进行克隆
继续阅读→
实现原理:
反射的Method类的invoke方法实际上是走的MethodAccessorImpl的invoke方法
继续阅读→
一、反射是什么?
java反射是加载类的一种方式,我们正常加载类的方式就是new一个对象
例如
Apple a = new Apple();阅读全文
锁有4个状态:无锁、偏向锁、轻量级锁、重量级锁,锁等级又低到高
继续阅读→
runnable执行的是run方式,callable执行的是call方法。 继续阅读→
阅读全文Running、ShutDown、Stop、Tidying、Terminated。
继续阅读→
XA方式:
主要是基于数据库的事物来实现的,需要两阶段提交: prepare 和 commit. 继续阅读→
阅读全文跳跃表是一链表的一个变种,通常普通的链表都是只有1个前驱,1个后继节点。
跳跃表可以除了原链表,他还增加了多层链表,每层都是一个链表
阅读全文spring使用了三级缓存去解决依赖问题的
我们在setter单例模式注入时,spring的bean加载过程是:
例如循环依赖关系:A->B->A
继续阅读→
java的内存模型
继续阅读→
一、静态代理:
静态代理就是实现一个「新类」他和「原类」实现同一个接口,使用时替换「原类」以达到增强的效果
继续阅读→
mysql创建表时,主键索引是一定会建立的,如果用户没有指定那一列,那么会
1.选一个列非null的唯一索引,的作为主键索引(多个唯一索引,选择第一个)
2.如果1找不,那么会建立一个隐藏索引 继续阅读→