5 fk5431

尚未进行身份认证

fk5431.com

等级
TA的排名 1w+

ReentrantLock阅读

ReentrantLockReentrantLock是一个互斥锁,也是一个可重入锁。ReentrantLock锁在同一时刻只能被一个线程持有,但是它可被单个线程多次获取,每获取一次AQS的state就加1。ReentrantLock内部的实现(公平锁和非公平锁)都是基于内部Sync的实现。内部结构ReentrantLock内部定义了三个重要的内部类,Sync、FairSync、Nonfai...

2019-12-14 23:15:50

ConcurrentHashMap(1.7|1.8)阅读

ConcurrentHashMapjdk1.7ConcurrentHashMap 和 HashMap非常类似,ConcurrentHashMap在实现上采取了分段锁的思想来实现的。ConcurrentHashMap在内部采用了一个叫做 Segment 的结构,一个Segment就类似HashMap中的table,这样在定位一个元素的时候,需要进行两次hash操作,一次定位到Segment,第...

2019-12-13 10:43:47

aqs源码

博客地址aqsAQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。AQS虽然被定义为抽象类,但事实上它并不包含任何抽象方法。AQS是被设计为支持多种用途,如果定义抽象方法,子类在继承的时候就需要实现所有抽象方法,所以AQS将需要子类覆盖的方法都...

2019-11-27 22:04:34

synchronized和lock

锁的种类锁的种类很多,包括:自旋锁(CAS)、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可中断锁等等,主要介绍下可重入锁、读写锁、可中断锁和公平锁。可重入锁如果锁具备可重入性,则称作为可重入锁。synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制:基于线程的分配,而不是基于方法调用的分配。举比如说,当一个线程执行到met...

2019-11-24 21:47:19

线程池阅读

http://fk5431.com/20191115/javasource/util/2_ExecutorService/类继承的结构Executor是最顶层的接口,定义了execute(Runnable runnable)方法。ExecutorService继承了Executor,继承了execute方法,还定义很多接口方法,例如shutdown、isTerminated、submit等方法...

2019-11-19 19:47:33

HashMap阅读 (1.8|1.7)

HashMap阅读 (1.8|1.7)HashMap源码阅读 HashMap 内部默认的参数变量值含义DEFAULT_INITIAL_CAPACITY16默认容量MAXIMUM_CAPACITY1 << 30最大容量DEFAULT_LOAD_FACTOR0.75负载因子TREEIFY_THRESHOLD8链表超过8转为红黑...

2019-11-17 17:13:48

ubantu16.04安装 nginx

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。安装Ng

2017-09-29 11:05:57

linux tail 命令

linux tail 命令linux tail 命令是按照要求将指定的文件的最后部分输出到标准设备。tail语法tail [ -f ] [ -c Number | -n Number | -b Number | -k Number ] [file] 参数说明:-f 参数用于监视file文件增长-c Number 从Number字节位置读取指定文件-n Number 从Number行位置读取指定

2017-09-07 11:13:08

迭代器模式

迭代器模式介绍迭代器模式:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。(行为型模式) 迭代器模式是应该是java中使用的最多的一种设计模式,迭代器模式如下: 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器:就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,

2017-08-17 22:10:59

解释器模式

解释器模式介绍解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。(行为型模式)解释器模式uml图一般如下:AbstractExpression 抽象解释器     具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和NonterminalExpression完成。TerminalExpression终

2017-08-16 23:26:04

命令模式

命令模式介绍 在软件系统中,行为请求者与行为实现者通常是一种紧耦合关系,但是有时候,比如需要对行为进行记录、撤销或重做、事务等处理时,这种无法抵御变化的紧耦合关系就不大合适。将一个请求封装成一个对象,从而是你可用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。 命令模式就是对命令进行封装,把发出命令和执行命令分开,请求方并不知道命令是怎么被接受,也不知道命令是否执

2017-08-09 10:58:54

责任链模式

责任链模式介绍在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求会在这个链上传递,直到链上某一个对象可以处理这个请求。(行为型模式)结构图责任链模式的结构像下面这样:抽象处理者角色(handler):定义一个处理请求的接口,还可以定义一个后继连接(可选)。具体处理者角色(ConcreteHandler):具体处理者接到请求后,如果可以处理就处理请求,如果不能处理就把请求

2017-08-06 23:23:51

代理模式

代理模式介绍代理模式为其他对象提供一种代理以控制对这个对象的访问。(结构型模式) 代理模式提供三种角色: - 抽象角色:声明真实对象和代理对象的共同接口。 - 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。 - 真实角色

2017-08-04 17:20:09

享元模式

享元模式介绍享元模式使用共享来避免大量拥有相同内容对象的开销,避免内存的损耗。享元对象能做到共享的关键是区分内蕴状态和外蕴状态。 内蕴状态是存储在享元对象内部的,不会随环境的改变而有所不同(内蕴状态可以共享)。 外蕴状态是随环境的改变而改变的,不可以共享,外蕴状态不可以影响享元对象的内蕴状态,它们是相互独立的。优点大幅度地降低内存中对象的数量缺点使得系统更加复杂享元模式将享元对象的状态外

2017-08-02 17:54:14

外观模式

外观模式介绍为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。 就像下图,facade把众多子系统中通过一个接口统一起来: 适用场景设计初期阶段,应该有意识的将不同层分离,层与层之间建立外观模式。开发阶段,子系统越来越复杂,增加外观模式提供一个简单的调用接口。维护一个大型遗留系统的时候,可能这个系统已经非常难以维护和扩展,但又包含非常重要的功能,

2017-08-02 10:11:00

装饰器模式

装饰器模式介绍装饰器模式允许向一个现有的对象添加新功能,同时又不改变其结构。(结构型模式) 这种形式在没有原类文件和使用继承的情况下动态的扩展了一个对象的功能。类的继承是在编译是时候增加的功能,而装饰器模式在运行时增加的功能装饰器模式构成Component : 组件对象接口,可以给这些对象动态添加职责ConcreteComponent : 具体的组件对象,实现了组件接口。这个对象通常是被装饰器修饰

2017-08-01 16:20:32

组合模式

组合模式介绍组合模式将对象组合成树形结构表示“部分-整体”的层次结构,组合模式使用户对单个对象和组合对象的使用具有一致性。(结构型) 就像文件系统一样,文件由目录和文件组成,每个目录都可以装载目录,目录的内容既可以是文件,也可以是目录。计算机的文件系统就是以递归结构来组织的,这种情景就适用于组合模式。使用场景和涉及的角色适用性你想表示对象的部分-整体层次结构你希望用户忽略组合对象与单个对象的不

2017-07-30 19:32:37

过滤器模式

过滤器模式介绍过滤器模式允许开发者用不同的标准过滤一组对象。(结构型模式) 使用过滤器模式可以很方便的进行扩展,单独一个过滤器的执行是独立的,不依赖其他过滤器。DEMO例如,一个Person类有姓名、性别、婚姻状况属性 :package factory.pattern.filter;/** * Created by fk5431 on 7/27/17. */public class Pers

2017-07-27 12:09:28

桥接模式

桥接模式介绍桥接适用于把抽象化与实现化解耦,使得二者可以独立变化。(结构型模式) 用来解决两个或者多个纬度的变化,使用桥接模式可以降低复杂度。将两个角色之间的继承关系改为聚合关系,这样两者可以独立的变化。例子就像大话设计模式中讲的一样,每个手机都有其对应的功能(软件),而这些功能在不同手机上可能不兼容,那么列出一个手机品牌和其对应的部分功能的结构图如下: 但是这样的话,不管要增加一个手机品牌

2017-07-26 18:09:35

适配器模式

适配器模式介绍适配器模式讲一个类的接口转换为被期望用到的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作.(结构型模式)适配器模式中的角色一般适配器模式中有以下三个角色:目标接口(Target) : 客户期待的接口.需要适配的类(Adaptee) : 需要适配的类.适配器(Adapter) : 包装一个需要适配的对象,吧原接口转换为目标接口.优点通过适配器,客户端调用

2017-07-25 15:25:08

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。