08 2019 档案

摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11435817.html 类加载过程 Java的类加载过程分为三个主要步骤:加载、链接、初始化 加载阶段(Loading) 它是Java将字节码数据从不同的数据源读取到JVM中,并映射为JVM认可的数据结 阅读全文
posted @ 2019-08-30 16:42 李白与酒 编辑
摘要:Reference:https://time.geekbang.org/column/article/117247 死锁产生 行锁的具体实现算法有三种:record lock、gap lock以及next-key lock。 record lock是专门对索引项加锁; gap lock是对索引项之间 阅读全文
posted @ 2019-08-29 19:01 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11429438.html InnoDB默认创建的主键索引是聚簇索引(Clustered Index),其它索引都属于辅助索引(Secondary Index),也被称为二级索引或非聚簇索引。 接下来通过一 阅读全文
posted @ 2019-08-29 14:17 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11429239.html 数据库事务 数据库事务是数据库系统执行过程中的一个逻辑处理单元,保证一个数据库操作要么成功,要么失败。 数据库事务具有以下四个基本属性: 原子性(Atomicity) 一致性(C 阅读全文
posted @ 2019-08-29 13:39 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11429037.html 1. 无索引、索引失效导致慢查询 如果在一张几千万数据的表中以一个没有索引的列作为查询条件,大部分情况下查询会非常耗时,这种查询毫无疑问是一个慢SQL查询。所以对于大数据量的查询 阅读全文
posted @ 2019-08-29 12:26 李白与酒 编辑
摘要:Reference: https://time.geekbang.org/column/article/121710 InnoDB存储引擎是基于集合索引实现的数据存储,也就是除了索引列以及主键是存储在B+树之外,其它列数据也存储在B+树的叶子节点中。而这里的索引页和数据页都会缓存在缓冲池中,在查询数 阅读全文
posted @ 2019-08-29 12:11 李白与酒 编辑
摘要:Reference:https://time.geekbang.org/column/article/121710 InnoDB是一个事务性的存储引擎,而InnoDB的事务实现是基于事务日志redo log和undo log实现的。 redo log是重做日志,提供再写入操作,实现事务的持久性;un 阅读全文
posted @ 2019-08-29 12:00 李白与酒 编辑
摘要:Reference: https://time.geekbang.org/column/article/121710 InnoDB逻辑存储结构 InnoDB逻辑存储结构分为表空间(Tablespace)、段(Segment)、区(Extent)、页Page)以及行(row) 1. 表空间(Table 阅读全文
posted @ 2019-08-29 11:08 李白与酒 编辑
摘要:Reference: https://time.geekbang.org/column/article/121710 InnoDB体系架构 InnoDB主要包括了内存池、后台线程以及存储文件。 内存池又是由多个内存块组成的,主要包括缓存磁盘数据、redo log缓冲等; 后台线程则包括了Master 阅读全文
posted @ 2019-08-29 11:00 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11426981.html ThreadPoolExecutor底层方法参数: @param corePoolSize: the number of threads to keep in the pool, 阅读全文
posted @ 2019-08-28 22:31 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11426916.html Java中有几种方法可以实现一个线程? 继承Thread类(不支持多继承) 实现Runnable接口 实现Callable接口 线程池ThreadPoolExecutor Not 阅读全文
posted @ 2019-08-28 22:20 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11426833.html SynchronizedMap和ConcurrentHashMap有什么区别? ConcurrentHashMap后者具有更高的并发 SynchronizedMap锁的是整个对象 阅读全文
posted @ 2019-08-28 22:06 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11426573.html 线程状态 NEW RUNNABLE BLOCKED WAITING TIMED_WAITING TERMINATED 参考JDK源码Thread.java中的State枚举类 线 阅读全文
posted @ 2019-08-28 21:17 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11426473.html 关键字volatile的主要作用是使变量在多个线程间可见,但无法保证原子性,对于多个线程访问同一个实例变量需要加锁进行同步。 Note: addCount()方法没有加synch 阅读全文
posted @ 2019-08-28 20:57 李白与酒 编辑
摘要:Reference:https://time.geekbang.org/column/article/104521 协程的实现原理 协程不只在Go语言中实现了,其实目前大部分语言都实现了自己的一套协程,包括C#、erlang、python、lua、javascript、ruby等。 相对于协程,你可 阅读全文
posted @ 2019-08-28 16:24 李白与酒 编辑
摘要:Reference: https://time.geekbang.org/column/article/85702 饥饿:线程因无法访问所需资源而无法执行下去的情况。 “不患寡,而患不均”,如果线程优先级“不均”,在CPU繁忙的情况下,优先级低的线程得到执行的机会很小,就可能发生线程“饥饿”;持有锁 阅读全文
posted @ 2019-08-28 16:18 李白与酒 编辑
摘要:Reference: https://time.geekbang.org/column/article/85702 活锁:有时线程虽然没有发生阻塞,但仍然会存在执行不下去的情况。 可以类比现实世界里的例子,路人甲从左手边出门,路人乙从右手边进门,两人为了不相撞,互相谦让,路人甲让路走右手边,路人乙也 阅读全文
posted @ 2019-08-28 16:15 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11424647.html 死锁:一组互相竞争资源的线程因互相等待,导致“永久”阻塞的现象。 解决死锁,要么重启,要么规避 那如何避免死锁呢?要避免死锁就需要分析死锁发生的条件,只有以下这四个条件都发生时才 阅读全文
posted @ 2019-08-28 16:03 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11421515.html start 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线 阅读全文
posted @ 2019-08-27 23:49 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11421437.html 内存泄漏 内存泄漏是指不再使⽤的对象⽆法得到及时的回收,持续占⽤内存空间,从⽽造成内存空间的浪费。 内存溢出 内存溢出则是发⽣了OutOfMemoryException,内存溢出 阅读全文
posted @ 2019-08-27 23:22 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11413917.html interrupt Code Demo Note: 从运行结果来看,调用interrupt方法并没有停止线程 interrupted Code Demo Console Outp 阅读全文
posted @ 2019-08-26 17:43 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11409772.html 并发编程领域可以抽象成三个核心问题:分工、同步、互斥。 并发:指两个或多个事件在同一时间间隔内发生,这些事件宏观上是同时发生的,但微观上是交替发生的。比如:某天上午先约女生A出去 阅读全文
posted @ 2019-08-25 22:44 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11409676.html Agile Design 敏捷设计 The Single-Responsibility Principle (SRP) 单一职责原则 A class should have on 阅读全文
posted @ 2019-08-25 22:19 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11409608.html 1. 定义动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。 2. 结构图 Component:组件对象的接口,可以给这些对象动态地添加职责。Con 阅读全文
posted @ 2019-08-25 22:03 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11409319.html 1. 定义定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 2. 结构图 Subject:目标对象,通常具有如下功能。 一 阅读全文
posted @ 2019-08-25 20:54 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11407114.html 1.定义 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 2.结构图 Handl 阅读全文
posted @ 2019-08-25 10:29 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11407071.html 1. 定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 2. 结构图 AbstractClass 阅读全文
posted @ 2019-08-25 10:12 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11406502.html 1. 定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2. 结构图 Builder:生成器接口,定义创建一个Product对象所需的各个部件的操作 阅读全文
posted @ 2019-08-24 23:09 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11401410.html 1. 定义将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 2. 结构图 Client:客户端,调用自己需要的领域 阅读全文
posted @ 2019-08-23 17:20 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11401233.html 1. 定义为其他对象提供一种代理以控制这个对象的访问。 2. 结构图 Proxy:代理对象。通常具有如下功能。 实现与具体的目标对象一样的接口,这样就可以使用代理来代替具体的目标 阅读全文
posted @ 2019-08-23 17:04 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11400764.html 1. 定义 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 2.结构图 Strategy:策略接口,用来约束一系列具体的 阅读全文
posted @ 2019-08-23 16:18 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11399557.html 1.定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 2. 单例模式的本质:控制实例数目 Singleton:负责创建Singleton类自己的唯一实例,并提供一个g 阅读全文
posted @ 2019-08-23 13:45 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11399516.html 设计模式 创建型 行为型 结构型 Spring等如何在API设计中使用设计模式。如: BeanFactory和ApplicationContext应用了工厂模式。 在Bean的创 阅读全文
posted @ 2019-08-23 13:38 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395994.html CAS CAS算法是乐观锁的一种实现方式,CAS算法中又涉及到自旋锁。 CAS是英文单词Compare and Swap(比较并交换),是一种有名的无锁算法。无锁编程,即不使用锁 阅读全文
posted @ 2019-08-22 18:05 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395931.html 锁的状态 锁的状态是通过对象监视器在对象头中的字段来表明的。 为了提升性能,JDK1.6引入了偏向锁、轻量级锁、重量级锁概念,来减少锁竞争带来的上下文切换,而正是新增的Java对 阅读全文
posted @ 2019-08-22 17:58 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395881.html 分段锁 分段锁其实是一种锁的设计,并不是具体的一种锁,对于ConcurrentHashMap而言,其并发的实现就是通过分段锁的形式来实现高效的并发操作。 并发容器类的加锁机制是基 阅读全文
posted @ 2019-08-22 17:50 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395841.html 悲观锁 总是假设最坏的情况,每次拿数据的时候都认为别人会修改,每次拿数据都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,共享资源每次只给一个线程使用,其他线程阻塞,用完后才把 阅读全文
posted @ 2019-08-22 17:46 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395812.html 互斥锁 在访问共享资源之前进行加锁操作,在访问完成之后进行解锁操作。加锁后,任何其他试图再次加锁的线程会被阻塞,直到当前线程解锁。如果解锁时有一个以上的线程阻塞,那么所有该锁上的 阅读全文
posted @ 2019-08-22 17:43 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395763.html 独享锁 独享锁:该锁每一次只能被一个线程所持有,参考synchronized以及JUC包下的ReentrantLock 共享锁 共享锁:该锁可被多个线程共有,典型的就是Reent 阅读全文
posted @ 2019-08-22 17:37 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395621.html 可重入锁 可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提是同一个对象或者类) Note: ReentrantLock和synchr 阅读全文
posted @ 2019-08-22 17:24 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11395500.html 公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁 非公平锁 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁;有可能会造成优先 阅读全文
posted @ 2019-08-22 17:13 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11394930.html OSI模型 OSI 模型把网络互联的框架分为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层等七层,每个层负责不同的功能。其中, 应用层,负责为应用程序提供统一的接口 阅读全文
posted @ 2019-08-22 16:07 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11394436.html 线程安全队列类图 两者的区别在于 ConcurrentLinkedQueue基于CAS的无锁技术,不需要在每个操作时使用锁,所以扩展性表现要更加优异,在常见的多线程访问场景,一般 阅读全文
posted @ 2019-08-22 15:12 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11393728.html Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本 阅读全文
posted @ 2019-08-22 12:58 李白与酒 编辑
摘要:原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11393417.html 事务隔离级别 Note: Oracle默认的隔离级别是 READ COMMITTED MySQL InnoDB的隔离级别是 REPEATABLE READ 事务隔离级别越高,就越 阅读全文
posted @ 2019-08-22 11:37 李白与酒 编辑

点击右上角即可分享
微信分享提示