经典书籍读书笔记,个人总结,新技术分享,链接行业价值资讯。
- 谈谈Java锁的优化:在jdk1.6中,引入了偏向锁和轻量级锁,并使用锁升级机制对synchronized进行了充分的优化。其实除锁升级外,还使用了锁消除、锁粗化等优化手段,所以对它的认识要脱离“重量级”这一概念。
- 谈谈wait、notify、sleep、interrupt关键字:以前线程状态涉及的wait、notify、sleep、interrupt关键字,脑海中都知道个大概,但是却很少系统的深入理解。
- 谈谈volatile关键字 : 关键字volatile可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易被正确地、完整地理解,以至于很多人都习惯不去使用它,遇到需要处理多线程数据竞争的问题时一律使用synchronized来进行同步。
- 谈谈JVM内存模型和Java内存模型 : 这两个概念容易混淆,但是Java内存模型和JVM内存结构真不是一回事。简单来说,Java内存模型,描述的是多线程允许的行为,会涉及到主内存与工作内存(本地内存);JVM内存结构,描述的是线程运行所设计的内存空间,会涉及堆和栈。
- Java语言基础面试八股题整理01 : 如何学习Java、内存流和管道流、什么时候使用Object对象接收、线程池、线程同步工具类、向下转型、虚拟内存、一道java面试题分析(代码块)、引用传递是什么?、转义字符处理、资源注入、字节流和字符流。
- Java语言基础面试八股题整理02 : java内存模型、BinaryTree、ClassLoader加载、HashMap源代码、 Hash冲突、ArrayList原理分析、Set集合、Java调试、this关键字、default关键字。
- Java语言基础面试八股题整理03 : Java系列小问题、JVM核心优化策略、JVM内存组成、 Map-Resize、Runtime相关说明、String转换、ThreadLocal、Threadpool、ThreadLocal引用传递、YML格式、抽象类。
- Java语言基础面试八股题整理04 : 多线程应用、动态和静态、对象引用、多对多关系、多线程工具类、反射参数、反射与new、各种IO、范型通配符问题、范型中“T”与“?”的区别。
- Java语言基础面试八股题整理05 : 方法变量与同步、高并发处理包、缓冲流与内存流的区别、基本类型和包装类、基本数据类型与引用传递、集合信息取得、接口标准、接口的使用、进程间通讯、进程与线程、链表为什么要用内部类。
- 数据库相关的常见概念和常见问题总结 : 数据库优化、乐观锁和悲观锁、数据缓存、 数据源。
- 数据库的事务控制 : 数据库事务控制、事务特性(ACID4种)、事务隔离级别(4种)、spring事务的传播行为(propagation behavior 7种)、 业务层捕获异常(特殊需要)、开发中常见的三种事务处理模式
- 分布式事务实现原理 : 分布式事务
- 数据库连接池实现原理 : 数据库连接池的相关问题分析、引用记数、连接池的主要优点、连接池的工作原理、注意事项
- 数据库更新监听和数据不一致的问题 : 数据库更新监听和数据不一致的问题,如何保证缓存与数据库的双写一致性?
- MySQL逻辑架构和设计优化 : Mysql逻辑架构和一些优化
- MySQL如何保证事务的ACID特性-原子性(Atomicity) : 回滚日志保证事务的原子性、多版本并发控制(MVCC)
- MySQL如何保证事务的ACID特性-一致性(Consistency) : 一致性是一个非常让人迷惑的概念,原因是数据库领域其实包含两个一致性,一个是 ACID 中的一致性、另一个是 CAP 定义中的一致性。
- MySQL如何保证事务的ACID特性-隔离性(Isolation) : 数据库的隔离性和一致性其实是一个需要开发者去权衡的问题,为数据库提供什么样的隔离性层级也就决定了数据库的性能以及可以达到什么样的一致性。
- MySQL如何保证事务的ACID特性-持久性(Durability) : 重做日志实现事务的持久性,为什么redo log比直接将Buffer Pool中修改的数据写入磁盘(即刷脏)要快呢?
- Mysql Explain执行计划 : MySQL Explain执行计划
- MySQL为什么选择B+树作为索引结构 : 既然是选择,肯定有其他假想敌,因为如果我们只有一个选择,那么选择 B+ 树也并不值得讨论,其他选项有二叉查找树(BST)、平衡二叉树(AVT)、红黑树、B树和哈希。以这些数据结构为例,分析比较 B+ 树的优点。
- 谈谈操作系统的进程和线程 : 线程是操作系统任务调度的最小单元,共用进程内的资源。进程是操作系统资源分配的最小单元,与其他进程资源互相独立。
- HTTP协议长文总结 : 关于HTTP协议,这一篇就够了。
- 每个开发应该了解的基准测试知识 : 作为唯一方便有效的,可以了解系统在给定的工作负载下会发生什么的方法。每个开发都应该了解一些基准测试的知识,基准测试并不是仅仅用来解决业务问题,测试性能,也是一种很好的学习方法。学习如何将问题分解成可以通过基准测试来获得答案的方法。
- 01-基础知识 : 数学知识和复习(指数、对数、级数、模运算、归纳法、发证法),递归简论。
- 02-算法分析 : 算法(algorithm)是为求解一个问题需要遵循的、被清楚地指定的简单指令的集合。对于一个问题,一旦给定某种算法并且(以某种方式)确定其是正确的,那么重要的一步就是确定该算法将需要多少诸如时间或空间等资源量的问题。
- 03-表 : 表是最常用且是最简单的一种数据结构。形如A1 ,A2 ,A3 …,AN这样含有有限的数据序列,我们就称之为表。
- 04-栈和队列 : 每一个有意义的程序都将明晰地至少使用一种这样的数据结构,而栈则在程序中总是要间接地用到,不管你在程序中是否做了申明。
- 05-二叉树 : 对于大量的输入数据,链表的线性访问时间太慢,不宜使用,树大部分操作的运行时间平均O(logN)。
- 06-AVL树和伸展树 : AVL树要求所有节点的左子树与右子树的高度相差最多是1。这就保证了树不至于太深。在伸展树中的节点可以达到任意深度,但是在每次访问之后树又以多少有些神秘的方式被调整。实际效果是,任意M次操作花费O(MlogN)时间,它与平衡树花费的时间相同。
- 07-B-树 : 与2-路树或二叉树不同,B-树是平衡M-路树,它能很好的匹配磁盘;其特殊情形是2-3树,它是实现平衡查找树的另一种常用方法。
- 08-散列(hashing) : 散列表的实现常常叫做(hashing)。散列是一种用于以常数平均时间执行插入、删除和查找的技术。
- 谈谈云原生中的SideCar模式 : 在云原生架构下,技术栈可以是多种多样的。无论是如何能够将公司的传统服务架构改成微服务架构,以及如何将这些异构的服务组件串联起来,管理好。Sidecar模式都有很好的使用。
- Elastic Search基础知识长文总结 : Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合。
- Elastic Search的文档管理总结 : Elastcisearch是分布式的文档存储。它能存储和检索复杂的数据结构—序列化成为JSON文档—以实时的方式。换句话说,一旦一个文档被存储在Elasticsearch中,它就是可以被集群中的任意节点检索到。
- Elastic Search轻量搜索总结 : 文档中的每个字段都将被索引并且可以被查询。所以在查询时,Elasticsearch可以使用所有这些索引字段,以惊人的速度返回结果。这是你永远不会考虑用传统数据库去做的一些事情。
- Elastic Search的请求体查询 : 为了充分利用查询的强大功能,你应该使用 请求体search API,之所以称之为请求体查询(Full-Body Search),因为大部分参数是通过Http请求体而非查询字符串来传递的。
扫描上方二维码,或者搜索关注公众号“IT互联网指南”,阅读更多的文章。