- 博客(16)
- 资源 (7)
- 收藏
- 关注
原创 MySQL优化-explain执行计划详解
MySQL Query Optimizer简介MySQL中有专门负责优化SELECT语句的优化器模块, 主要功能 : 通过计算分析系统中收集到的统计信息, 为客户端请求的Query提供它认为最优的执行计划当客户端向MySQL请求一条Query, 命令解析器模块完成请求分类, 区别出事SELECT并转发给MySQL Query Optimizer时, MySQL Query Optimizer...
2018-09-30 09:12:45 2318 1
原创 Java并发-synchronized, 偏向锁, 轻量级锁详解
synchronized概述synchronized就是所谓的重量级锁, 但是自从jdk1.6引入了偏向锁, 轻量级锁之后, synchronized就没有那么重了。synchronized用法对于普通同步方法,锁是当前实例对象对于静态同步方法,锁是当前类的Class对象对于同步方法块,锁是Synchonized括号里配置的对象synchronized实现原理任何对象都有一...
2018-09-27 18:43:03 1550 1
原创 线性结构-队列
队列特点线性结构队列对应的操作也是数组的子集只能从一端(队尾)添加元素,另一端(队首)取出元素先进先出(FIFO : First In First Out)实现自己的队列基于自己实现的动态数组实现队列,源码地址 :https://blog.csdn.net/love905661433/article/details/82909334同样可以使用JDK自带的ArrayList进行替...
2018-09-30 15:08:34 642
原创 线性结构-栈
栈的特点线性结构栈对应的操作是数组的子集只能从一端添加元素, 也只能从一端取出元素只能从栈顶操作入栈,出栈;又叫压栈和弹栈后进先出Last In First Out(LIFO)栈的应用Undo操作(撤销)程序调用系统栈, jvm方法区中的栈帧括号匹配-编译器实现一个栈这里使用了自己创建的动态数组, 具体代码参加博文:https://blog.csdn.net/lov...
2018-09-30 14:54:06 335
原创 线性结构-动态数组
数组是最简单的线性结构, 不过数组都是固定长度的, Java实现一个功能类似于ArrayList的动态数组package array;/** * 动态数组 * @author qiyexue * @param <E> */public class Array<E> { private int size; private E[] data; pu...
2018-09-30 14:44:11 250
原创 Java GC - HotSpot垃圾收集器详细介绍
HotSpot虚拟机垃圾收集器上图为JDK 1.7 Update14之后的HotSpot虚拟机包含的所有收集器, 如果两个收集器之中存在连线, 就说明它们可以搭配使用。Serial收集器单线程收集器执行GC时会暂停其他所有工作线程(会造成应用暂停)新生代收集器复制算法简单而高效(与其他收集器单线程相比)ParNew收集器Serial收集器的多线程版本新生代收集器采...
2018-09-27 09:51:54 202
原创 Java-垃圾回收(GC)详解
文章目录概述判断对象是否存活算法引用计数算法(Reference Counting)可达性分析算法(Reachability Analysis)引用类型回收方法区垃圾收集算法标记 - 清除算法复制算法标记 - 整理算法分代收集算法概述GC需要完成的3件事 :哪些内存需要回收什么时候回收如何回收判断对象是否存活算法引用计数算法(Reference Counting)给对象中添加...
2018-09-26 09:57:45 262
原创 Java并发之volatile详解
JVM内存区域线程独占区域程序计数器(Program Counter Register)概述 :程序计数器是一块个较小的内存空间, 它可以看做是当前线程所执行的字节码的行号指示器. 在虚拟机的概念模型里(仅是概念模型, 各种虚拟机可能通过一些更高效的方式去实现), 字节码解释器工作时就是通过改变这个计数器的值来选取下一条执行的字节码指令, 分支,循环,跳转,异常处理,线程恢复等基础功能...
2018-09-24 23:06:57 200
原创 Java8新特性-lambda表达式简单解释
lambda表达式格式(参数) -> 单行语句; 不需要显式return, lambda表达式能自行判断出返回值(参数) -> {多行语句}; 如果方法有返回参数的话,需要显式的使用return(参数) -> 表达式;函数式接口对于只包含一个抽象方法的接口, 可以通过lambda表达式创建该接口的对象. 这种接口称为函数式接口可以使用@Functional...
2018-09-22 23:25:29 1162
原创 Java与线程
线程的实现使用内核线程实现使用用户线程实现使用用户线程加轻量级进程混合实现Java线程的实现 JDK1.2之前是基于成为”绿色线程”(Green Threads)的用户线程实现的JDK1.2及之后, 线程模型替换为基于操作系统原生线程模型来实现Java线程调度 线程调度是指系统为线程分配使用权的过程, 主要调度方式有两种, 分别是协同线程调度(Cooperative ...
2018-09-16 11:20:07 158
原创 Java内存模型(JMM)
主内存与工作内存概述 Java内存模型的主要目标是定义程序中各个变量的访问规则, 即在虚拟机中将变量存储到内存和从内存中取出变量这样的低层细节. 变量 : 和Java编程中所说的变量有所区别, 它包括了实例字段, 静态字段和构成数组对象的元素,但不包括局部变量和方法参数,因为后者是线程私有的, 不会被共享.线程,主内存,工作内存交互关系从变量, 主内存,...
2018-09-16 11:18:31 490
原创 MySQL-约束
什么是约束为了保证数据的一致性和完整性,SQL规范以约 束的方式对表数据进行额外的条件限制。约束是表级的强制规定可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通 过 ALTER TABLE 语句)根据约束数据列的限制,约束可分为:单列约束:每个约束只约束一列多列约束:每个约束可约束多列数据根据约束的作用范围,约束可分为:...
2018-09-08 16:09:46 215
原创 MySQL常用命令及函数
MySQL常见命令show database : 查看当前所有的数据库use 库名 : 使用指定的库show tables : 查看当前库的所有表show tables from 库名 : 查看其它库的所有表desc 表名 : 查看表结构MySQL常见函数字符函数concat : 字符拼接 select CONCAT(‘aa’,’,’,’bb’); ...
2018-09-08 15:28:26 1403
原创 Redis Cluster集群使用与原理
为什么需要集群并发量QPS较大数据量较大高并发和大数据量时, 单机无法满足,这个时候就需要使用分布式数据分布分布式数据库-数据分区顺序分区哈希分区顺序分区和哈希分区对比 :哈希分区节点取余(不建议)客户端分片 : 哈希 + 取余节点伸缩 : 数据节点关系变化, 导致数据迁移迁移数量和添加节点数量有关 : 建议翻倍扩容一致性...
2018-09-02 18:11:29 2683
原创 Redis Sentinel-高可用
Redis Sentinel架构Redis Sentinel故障转移多个sentinel发现并确认master有问题选举一个sentinel作为领导选出一个slave作为master通知其余slave成为新的master的slave通知客户端主从变化等待老的master复活成为新的slave故障转移前:故障转移后:Redis Sentinel安装与配置...
2018-09-01 19:19:21 243
原创 Redis复制的原理与优化
Redis单机问题主从复制作用主从复制限制主从复制配置执行命令配置实现两种方式对比全量复制开销部分复制故障处理slave故障master故障开发与运维中的问题主从复制问题Redis单机问题机器故障容量瓶颈QPS瓶颈主从复制作用数据副本扩展读性能(读写分离)主从复制限制一个master(主)可以有多个slave(从)...
2018-09-01 19:12:27 496
阿里巴巴Java开发手册
2017-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人