笔记
文章平均质量分 90
你sei啊
人生中有些事你不竭尽所能去做,你永远不知道你自己有多出色。
展开
-
垃圾回收机制
尽管虚拟机内存的动态分配与内存回收技术很成熟,可万一出现了这样那样的内存溢出问题,那么将难以定位错误的原因所在。为了高效的回收,jvm将堆分为三个区域:1.新生代(Young Generation)2.老年代(Old Generation);3.永久代(Permanent Generation)(jdk1.8之前)1 判断对象是否存活算法1.1 引用计数算法这种算法判断很简单,简单来说就是...原创 2020-04-27 01:16:39 · 671 阅读 · 1 评论 -
MYSQL索引的底层实现原理
1 索引的本质索引(Index)是帮助MySQL高效获取数据的数据结构,为什么需要需要特定的数据结构呢?首先,顺序查找这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,更优秀的查找算法,比如二分查找(binary search)、二叉树查找(binary tree search),我们会发现每种查找算法都只能应用于特定的数据结构之上,但是数据本身的组织结构不可能完全满足各种数据结构,所以,在...原创 2020-04-13 22:21:14 · 4549 阅读 · 0 评论 -
MySQL Explain详解
Explain命令用于查看一个这些SQL语句的执行计划,信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra1 id:选择标识符这是SELECT的查询序列号1.1 执行顺序id相同:执行顺序由上至下;id不同:如果是子查询,id的序号会递增,id值越大优先级越高,越先被执行有相同也有不同...原创 2020-04-12 00:06:26 · 479 阅读 · 0 评论 -
MYSQL的锁机制
1 有哪些锁mysql 中的锁可以按照多个维度进行分类1.1 按照工作原理分其实就是读写锁加上意向锁1.1.1 共享锁(S 锁 )持有同一个共享锁的多个进程可以同时进入保护空间,这就是共享锁命名的来源,持有通常在读取数据前加锁,以实现多个对数据的读取进程可以相互并发执行不被阻塞,因此也常被称为“读锁”innodb 通过 MVCC 机制实现了无需加锁即可以避免读写冲突,所以在RC和RR的...原创 2020-04-09 23:43:00 · 153 阅读 · 0 评论 -
数据库事务
1 前言关于事务,说简单点就是一串原子操作,说复杂又牵扯出好多疑问:为啥需要事务;ACID是干啥的,是怎么保证的;隔离级别和并发问题是什么关系,底层是怎么实现…带着这些问题,让我们开始学习事务吧2 为什么要有事务现实中存在很多一组操作需要顺序完成的场景,比如转账至少包括A账户减少和B账户增加两步操作,我们希望他们能要么同事执行,要么同时失败,并且操作前后数据库都要处于正确状态。存在的问题(...原创 2020-03-20 22:47:29 · 1159 阅读 · 0 评论 -
Lock和Synchronized
1 锁的分类可重入锁Synchronized和ReentrantLook都是可重入锁,锁的可重入性标明了锁是针对线程分配方式而不是针对方法。例如调用Synchronized方法A中可以调用Synchronized方法B,而不需要重新申请锁。读写锁按照数据库事务隔离特性的类比读写锁,在访问统一个资源(一个文件)的时候,使用读锁来保证多线程可以同步读取资源。ReadWriteLock是一个读写...原创 2020-03-20 13:58:13 · 154 阅读 · 0 评论 -
redis
1 Redis支持哪几种数据类型1.1 string最基本的数据类型,二进制安全的字符串,最大512M二进制安全二进制安全功能(函数)是指在一个二进制文件上所执行的不更改文件内容的功能或者操作,其本质上将操作输入作为原始的、无任何特殊格式意义的数据流,即输入任何字节都能正确处理, 即使包含零值字节(\0)value可以是String也可以是数字作为数字一般做一些复杂的计数功能的缓存1...原创 2020-03-18 21:37:25 · 1399 阅读 · 0 评论 -
java IO
1 Java中有哪几种类型的流字符流和字节流,字节流继承inputStream和OutputStream,字符流继承自Reader和Writer, InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new。1.1 区别字节流是最基本的,主要用在处理二进制数据,它是按字节来处理的。但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的e...原创 2020-03-17 22:24:35 · 287 阅读 · 0 评论 -
CAS和MESI和VOALTILE
CAS比较并交换(Compare and Swap)1 基本原理有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。CAS是一种典型的乐观锁, 假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。2 实现原子操作CAS操作分为获取当前值、比较和设置至少两部分,不是原子操作如何保证原子性呢。2.1 JNIc...原创 2020-03-17 18:53:37 · 858 阅读 · 0 评论 -
JVM内存分配机制
1 CPU和内存的交互了解jvm内存模型前,了解下cpu和计算机内存的交互情况。因为Java虚拟机内存模型定义的访问操作与计算机十分相似.1.1 高速缓存内存相当于cpu和磁盘之间的缓冲区,但是随着cpu的发展,内存的读写速度也远远赶不上cpu,加上高速缓存解决了处理器和内存一快一慢的矛盾1.2 缓存一致性协议在多核cpu中,每个处理器都有各自的高速缓存(L1,L2,L3),而主内存确只...原创 2020-02-24 00:26:52 · 802 阅读 · 0 评论 -
HashMap和ConcurrentHashMap
1 基本特性储存的是键值对,可以接受null键值,非Synchronized,很快2 基本常量2.1 DEFAULT_INITIAL_CAPACITY初始容量,也就是默认会创建 16 个箱子,箱子的个数不能太多或太少。如果太少,很容易触发扩容,如果太多,遍历哈希表会比较慢。2.2 MAXIMUM_CAPACITY哈希表最大容量1 << 30(1073741824),一般情况...原创 2020-02-21 22:04:03 · 716 阅读 · 0 评论 -
红黑树
1 简介1.2 特性(红或黑)每个节点或者是黑色,或者是红色(根是黑)根节点是黑色(叶是黑)每个叶子节点是黑色(叶子节点只为空)(红子黑)如果一个节点是红色的,则它的子节点必须是黑色的(黑数同)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点1.3 完全黑平衡最长路径的节点中数量不会超过最短路径的两倍1.4 应用TreeSet\TreeMap\Linux虚拟内存...原创 2020-02-20 18:30:52 · 337 阅读 · 0 评论