摘要: 1. JVM的内存区域 JVM将内存分为五块区域分别是程序计数器、虚拟机栈、本地方法栈、堆和方法区 1.1 程序计数器 定义: 唯一一个不会发生内存溢出异常的内存区域. 保存的是当前JVM解释器执行命令的行号 最小的一块区域 1.2. 虚拟机栈 定义: 保存的是局部变量表等信息 局部变量表 局部变量 阅读全文
posted @ 2019-06-06 16:23 lbr617 阅读(401) 评论(0) 推荐(1) 编辑
摘要: 1. 数据库引擎 MySQL默认有多款数据库引擎,默认使用的是InnoDB.介绍一下InnoDB和MyISAM. 1.1 InnoDB 支持事务安全 事务四大特征(ACID) 原子性(A):要么都成功,要么都失败 一致性(C):保证没有数据更新会执行到一半而导致和其他数据不统一 隔离性(I):事务A 阅读全文
posted @ 2019-06-03 11:16 lbr617 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 1. 基础 从数据结构、操作和持久化方式做了一个简单的总结 1.1 数据结构 string 字符串可以保存三种类型数据: 字符串、整数、浮点数 自增和自减命令: incr key 自增1 decr key 自减1 incrby key 要增加的数字 增加指定的数字 decrby key 要减去的数字 阅读全文
posted @ 2019-05-28 13:40 lbr617 阅读(683) 评论(0) 推荐(1) 编辑
摘要: 1. 索引简介 索引用于快速找出某个列中有一特定值的行. 比如有一个学生表,有一个字段是学号s_id,共有10000个学生,要查询学号为9999的学生,如果没有索引那么就需要遍历10000条记录,如果有了索引,则直接命中. 定义:索引是对数据库表一列或多列的值进行排序的一种结构. 用处: 使用索引可 阅读全文
posted @ 2019-04-20 14:56 lbr617 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 概述 流(stream())是java8的一个新特性,主要的作用就是将各种类型的集合转换为流,然后的方便迭代数据用的.例如: 转换为流之后可以进行一系列的迭代操作,比自己去拿出list的值一个个操作要方便的多. 使用流的好处 声明性 更简洁、更易读 可复合 更灵活 可并行 性能更好 流的使用方法介绍 阅读全文
posted @ 2018-11-30 08:49 lbr617 阅读(787) 评论(0) 推荐(1) 编辑
摘要: 概述 Java存储模型(JMM), 安全发布、规约,同步策略等等的安全性得益于JMM ,在你理解了为什么这些机制会如此工作后,可以更容易有效地使用它们. 1. 什么是存储模型,要它何用. 如果缺少同步,就会有很多因素会导致线程 无法立即,甚至永远无法 看到另一个线程的操作所产生的结果: 编译器生成指 阅读全文
posted @ 2018-11-27 10:36 lbr617 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 概述 java.util.concurrent包中的许多类,比如Semaphore和ConcurrentLinkedQueue,都提供了比使用Synchronized更好的性能和可伸缩性.这是因为它们的内部实现使用了 原子变量和非阻塞的同步机制. 近年来很多关于并发算法的研究都聚焦在 非阻塞算法 ( 阅读全文
posted @ 2018-11-22 09:12 lbr617 阅读(554) 评论(0) 推荐(0) 编辑
摘要: 概述: 在 "并发编程学习笔记之并发工具类(四)" 中,为大家介绍了几种同步工具(同步工具就是 依靠自己的状态,调节线程是阻塞还是运行 用的.),闭锁、FutureTask、信号量、关卡. 使用以上的同步工具大部分时候可以满足我们的需求,但是如果没能满足我们需要的功能, 可以使用语言和类库提供的底层 阅读全文
posted @ 2018-11-13 10:08 lbr617 阅读(381) 评论(0) 推荐(1) 编辑
摘要: ReentrantLock(重进入锁)并不是作为内部锁(synchronized)机制的替代,而是当内部锁被证明受到局限时,提供可选择的高级特性. 1. Lock 和 ReentrantLock Lock接口: 与内部加锁机制不同,Lock提供了无条件的、可轮询的、定时的、可中断的锁获取操作,所有加 阅读全文
posted @ 2018-11-02 08:05 lbr617 阅读(506) 评论(0) 推荐(1) 编辑
摘要: 很多改进性能的技术增加了复杂度,因此增加了安全和活跃度失败的可能性. 更糟糕的是,有些技术的目的是改善性能,事实上产生了相反的作用,带来了其他的性能问题. 数据的正确性永远是第一位的,保证程序是正确的,然后再让它更快 .只有当你的性能需求和评估标准需要程序运行得更快时,才去进行改进. 在设计并发应用 阅读全文
posted @ 2018-10-29 10:26 lbr617 阅读(710) 评论(3) 推荐(1) 编辑