文章归档

Cache

Redis Cache Summarize

1. 概述 Redis全称: Remote Dictionary Server 基于内存的Key-Value存储系统,单线程实现 多样的数据类型,支持的数据类型有:string(字符串)、hash(哈希)、list(链表)、set(集合)、zset(sorted set有序集合) redis的value大小可达到1GB(memcach只能达到1MB) 持久化,redis会周期性的将更新的数据写入磁盘 master-slave(主从)同步 3.0后支持分布式存储,去中心化,具有线性伸缩功能 Redis命令大全 2. Redis数据持久化2.1. RDB(Redis DataBase) SNAPSHOT(快照): save 秒数 写操作次数如save 9000 1表示900s(1 ...

阅读剩下更多

Redis Cache Summarize
Database

Database

一. 四大特性(CIAD) 原子性(Atomicity): 要么全成功,要么全失败,失败会回滚。 一致性(Consistency): 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执 行之前和执行之后都必须处于一致性状态。 隔离性(Isolation): 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务, 不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。 持久性(Durability): 一旦事物提交成功,那么数据库中的数据就是永久改变的,即使系统故障也不会丢失提交的事物。 二. 数据库隔离级别1. 不考虑隔离级别造成的问题 更新丢失: 2个事物同时更新一条数据会有一个事物把另一个事物的更新覆盖了,这是因为系统 ...

阅读剩下更多

Database
Java

Java Classloader

1. 类加载时机1.1. 生命周期 1.2. 立即初始化(主动引用) 遇到new、 getstatic、 putstatic或invokestatic这4条字节码指令时 使用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化. 当虚拟机启动时,用户需要指定一个要执行的主类(包含main()方法的那个类),虚拟机会先初始化这个主类. 当使用JDK 1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REF_getStatic、 REF_putStatic、REF_invokeStatic的 ...

阅读剩下更多

Java Classloader
Java

Java Compile and Optimize

1. 早期(编译期)优化1.1. 概论 前端编译器:Sun的Javac、 Eclipse JDT中的增量式编译器(ECJ) JIT编译器:HotSpot VM的C1、 C2编译器 AOT编译器:GNU Compiler for the Java(GCJ)、 Excelsior JET javac这类编译器几乎不对代码进行性能优化,把性能优化放到了JIT即时编译器内,可为JRuby、Groovy这类语言的代码也同等享有优化带来的好处 1.2. javac编译1.2.1. 编译过程 解析与填充符号表过程 词法、语法分析 词法分析是将源代码的字符流转变为标记(Token)集合,单个字符是程序编写过程的最小元素,而标记则是编译过程的最小元素,关键字、 变量名、 字面量、 运算符都可以成为标 ...

阅读剩下更多

Java Compile and Optimize
Java

Java GC

一. Java虚拟机内存区域1. 运行时数据区 2. 程序计数器(Program Counter Register) 1、程序计数器是线程内(每个线程都有唯一的、封闭的)一小块内存区域 2、计数器指定的是当前虚拟机执行指令的地址 3、当虚拟机执行的是Native方法时,计数器值为空(Undefined),此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError 情况的区域. 3. Java虚拟机栈(Java Virtual Machine Stacks) 1、虚拟机栈是线程内部的、封闭的 2、虚拟机栈描述的是java方法执行的内存模型 3、每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、 操作数栈、 动态链接、 方 ...

阅读剩下更多

Java GC
返回顶部