自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 J.U.C.LOCK源码之Condition源码解析

接着上一篇文章接下来就是分析Condition的源码,ConditionObject中是存储了一个单向的连表来保持await队列 public final void await() throws InterruptedException { if (Thread.interrupted()) //如果当前线程被终止则抛出异常 throw n...

2020-03-09 22:25:56 177

原创 J.U.C.LOCK源码之ReentrantLock解析

java中多线程的处理除了使用synchronize关键字还有就是使用J.U.C,也就是java.util.concurrent工具包,而J.U.C中的锁主要是通过Lock来控制和完成锁的基本操作,其中包括ReentrantLock(重入锁)、ReentrantReadWriteLock(读写锁:读写互斥、写写互斥、读读重入)如图所示ReentrantLock重入锁中包含了公平锁(FairSyn...

2020-03-09 20:47:47 226

原创 synchronize关键字和线程可见性

synchronize关键字synchronize 锁定的对象分别为:方法锁、静态代码块锁、静态方法锁,而锁的范围跟锁对象的生命周期息息相关。而锁对象的其实是按照生命周期来判断,分别为对象锁和类锁类锁: 也就是class类,class类在jvm运行后便加载到了jvm的方法区中,一般情况下类锁的生命周期是跟着jvm的运行产生关系对象锁: 也就是对象的实例,根据对象的生命周期,如果对象的实例的...

2020-03-08 13:53:37 280

原创 jvm虚拟机阅读笔记

ABC

2020-01-28 19:47:12 162

原创 创建与销毁对象

创建与销毁对象利用静态方法代替构造方法对于一个类来说,获取类的实例方法默认是通过其构造函数来获取,但是还有一种方法就是通过静态方法来获取对象的实例,例如Boolean类的valueOf方法就是如此静态工厂相比于默认的构造方法有优势也有劣势,具体如下:优点:静态工厂方法相比于构造方法来说,静态工厂方法是有名字的,传统的构造方法只能通过传入不同的参数来明确被返回的对象,但是如果通过静态方法...

2019-05-10 16:45:24 538

原创 redis

redis简介redis是一个开源的高性能的基于键值对的数据存储系统,通过存储不同类型的数据来实现不同的场景存储结构类型:字符类型:散列类型:列表类型集合类型:有序集合:这五种数据类型提供了丰富的应用类型实现功能可以为每个key设置过期时间可以通过列表类型来实现分布式队列的操作支持发布订阅的消息模式操作简单提供了很多命令与redis提供交换应用场景数...

2019-02-25 22:43:34 266

原创 kafka 概念和代码

kafkakafka是一款分布式消息发布和订阅系统,具有高性能、高吞吐量的特点被广泛应用在大数据传输场景。为什么要使用kafkakafka天然具备高吞吐量、内置分区等特性,因此非常适合处理大规模的消息,所以人们使用kafka来做一些日志收集分析,消息系统,用户行为分析等概念broker : 可以理解位kafka的一个系统producer: 系统的信息的生产者consumer: ...

2019-02-21 22:02:36 239

转载 netty深度解析三

在分析客户端的代码时, 我们已经对 Bootstrap 启动 Netty 有了一个大致的认识, 那么接下来分析服务器端时, 就会相对简单一些了.首先还是来看一下服务器端的启动代码:public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; sta...

2019-01-28 00:11:04 326

转载 netty深度解析二

关于 Reactor 的线程模型首先我们来看一下 Reactor 的线程模型.Reactor 的线程模型有三种: 单线程模型 多线程模型 主从多线程模型 首先来看一下 单线程模型:所谓单线程, 即 acceptor 处理和 handler 处理都在一个线程中处理. 这个模型的坏处显而易见: 当其中某个 handler 阻塞时, 会导致其他所有的 clie...

2019-01-27 22:50:59 215

转载 netty深度解析

这一章是 Netty 源码分析系列 的第一章, 我打算在这一章中, 展示一下 Netty 的客户端和服务端的初始化和启动的流程, 给读者一个对 Netty 源码有一个大致的框架上的认识, 而不会深入每个功能模块.本章会从 Bootstrap/ServerBootstrap 类 入手, 分析 Netty 程序的初始化和启动的流程.BootstrapBootstrap 是 Netty 提供的...

2019-01-27 21:03:01 248

转载 NIO/BIO

1)阻塞(Block)和非租塞(NonBlock):阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,当数据没有准备的时候阻塞:往往需要等待缞冲区中的数据准备好过后才处理其他的事情,否則一直等待在那里。非阻塞:当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回2)同步(Synchronization)和异步(...

2019-01-19 15:57:17 1633

转载 dubbo使用

dubbo是一个分布式的服务框架,提供高性能的以及透明化的RPC远程服务调用解决方法,以及SOA服务治理方案。Dubbo的核心部分:远程通信、集群容错、服务的自动发现、负载均衡核心角色:Provider(生产者)、Consumer(消费者)、Registry(注册中心配置)、Monitor(监控中心)、Container(服务运行容器)使用配置:如果提供方没有启动的时候,默认会去检...

2019-01-09 15:30:26 241

翻译 zoo 总结

zookeeper数据模型临时节点(有序)、 持久化节点(有序)zookeeper是一个开源的分布式协调框架;  数据发布订阅、负载均衡、集群、master选举。。。原子性: 要么同时成功、要么同时失败 (分布式事务)单一视图: 无论客户端连接到哪个服务器,所看到的模型都是一样可靠性:一旦服务器端提交了一个事务并且获得了服务器端返回成功的标识,那么这个事务所引起的服务器端的变更...

2018-12-29 15:41:03 1326

翻译 zoo 详细学习

zookeeper集群角色leaderleader是zookeeper集群的核心。事务请求的唯一调度者和处理者,保证集群事务处理的顺序性 集群内部各个服务器的调度者follower处理客户端非事务请求,以及转发事务请求给leader服务器 参与事务请求提议(proposal)的投票(客户端的一个事务请求,需要半数服务器投票通过以后才能通知leader commit; lead...

2018-12-29 15:39:01 963

转载 java 中使用zookeeper

权限控制模式schema:授权对象ip     : 192.168.1.1Digest  : username:passwordworld  : 开放式的权限控制模式,数据节点的访问权限对所有用户开放。 world:anyonesuper  :超级用户,可以对zookeeper上的数据节点进行操作 连接状态KeeperStat.Expired  在一定时间内客户端没...

2018-12-27 20:11:57 332

转载 zoo conf配置与api描述

在zookeeper中集群的角色有以下几种:  leader 、follower、 observerobserver 只接受状态更改,但是不进行leader选举投票从而对系统水平扩展更方便了,集群配置:server.id=ip:port:port server.id 为当前myid存的值,ip为zookeeper的ip地址,第一个port为leader和follower交换数据的端口系统,...

2018-12-27 19:49:23 224

转载 zookeeper基础学习

分布式系统的特性:分布性:系统部署在不同的不同地点的不同的服务器上并发性:程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储无序性:在系统运行的时候,进程之间的顺序是不一致的分布式环境下面临的问题网络通信网络本身的不可靠性,因此会涉及到一些网络通信问题网络分区(脑裂)当网络发生异常导致分布式系统中部分节点...

2018-12-25 20:01:26 136

转载 序列化

java序列化机制Serialize接口java本身的序列化机制存在的问题 序列化数据结果比较大、传输效率比较低  不能跨语言对接以至于在后来的很长一段时间,基于XML格式编码的对象序列化机制成为了主流,一方面解决了多语言兼容问题,另一方面比二进制的序列化方式更容易理解。以至于基于XML的SOAP协议及对应的WebService框架在很长一段时间内成为各个主流开发语言的必备的技术。...

2018-12-12 20:16:50 123

转载 基础知识-网络方面

分布式和集群的区别分布式: 一个业务拆分成多个子系统,部署在不同的服务器上集群:  同一个业务,部署在多个服务器上 TCP/IPTCP/IP(Transmission Control Protocol/Internet Protocol)是一种可靠的网络数据传输控制协议。定义了主机如何连入因特网以及数据如何在他们之间传输的标准。TCP/IP协议参考模型把所有TCP/IP系列...

2018-12-12 20:10:03 169

原创 Mybatis 思维导图

2018-11-15 09:51:36 433

原创 mybatis-执行

mybatis通过mapper调用接口方法,mapper调用动态代理对象执行方法TestMapper testMapper = sqlSession.getMapper(TestMapper.class);Test test2 = testMapper.selectByPrimaryKey(2);@Override public Object invoke(Object prox...

2018-11-14 17:43:53 115

原创 Mybatis 源码分析初始化

Mybatis使用时通过sqlsessionFactory获取一个sqlsession,而sqlsessionFactory是通过SqlSessionFactoryBuilder来构建一个sqlsessionFactory,通过传入的参数来构建。使用建造者模式,InputStream configFile = new FileInputStream( "zjx...

2018-11-14 11:01:42 238

转载 Spring 事务原理详解

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。特点事务是恢复和并发控制的基本单位。事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态...

2018-10-31 00:25:25 483

转载 Spring总结

1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式...

2018-10-26 00:41:58 98

转载 Spring MVC 源码解析

Spring MVC源码分析: ①:DispatcherServlet是springmvc中的前端控制器(front controller),负责接收request并将request转发给对应的处理组件.  ②:HanlerMapping是springmvc中完成url到controller映射的组件.DispatcherServlet接收request,然后从HandlerMappi...

2018-10-22 23:48:25 157

原创 spring源码思维导图

 

2018-10-19 15:05:28 1735 2

转载 Spring JDBC

使用Spring进行基本的JDBC访问数据库有多种选择。Spring至少提供了三种不同的工作模式:JdbcTemplate, 一个在Spring2.5中新提供的SimpleJdbc类能够更好的处理数据库元数据; 还有一种称之为RDBMS Object的风格的面向对象封装方式, 有点类似于JDO的查询设计。 我们在这里简要列举你采取某一种工作方式的主要理由. 不过请注意, 即使你选择了其中的一种工作...

2018-10-17 17:06:30 185

转载 springAOP 设计原理与具体实践

AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。我们现在做的一些非业务,如:日志、事务、安全等都会写在业务代码中(也即是说...

2018-10-17 15:57:44 183

转载 IOC容器的高级特性

1.通过前面4节对Spring IoC容器的源码分析,我们已经基本上了解了Spring IoC容器对Bean定义资源的定位、读入和解析过程,同时也清楚了当用户通过getBean方法向IoC容器获取被管理的Bean时,IoC容器对Bean进行的初始化和依赖注入过程,这些是Spring IoC容器的基本功能特性。Spring IoC容器还有一些高级特性,如使用lazy-init属性对Bean预初始化、...

2018-10-07 21:42:33 528

翻译 IOC依赖注入

5.4、IOC容器的依赖注入1、依赖注入发生的时间当Spring IOC容器完成了Bean定义资源的定位、载入和解析注册以后,IOC容器已经管理类Bean定义的相关数据,但是此时IOC容器还没有对所管理的Bean进行依赖注入。依赖注入在以下两种情况发生:(1)用户第一次通过getBean方法向IOC容器索要Bean时,IOC容器触发依赖注入。(2)当用户在Bean定义资源中为&lt...

2018-09-28 23:56:31 478

翻译 四、spring源码解读初始化

 4.1、什么是IOC/DI?IOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这描述最具体的表现就是我们可配置的文件。 DI(Dependency Injection)依赖注入:就是指对象是被动接受依...

2018-09-28 23:39:02 383

原创 设计模式 : 装饰者模式

装饰者模式就是在不改变原有的类的基础上进行对类的功能的扩展,通过对原始类的包装来达到自己预计的扩展功能。装饰者模式的缺点:装饰者模式对一个类的进行扩展比继承更加灵活,从而会对增加复杂性。                              装饰者模式的过度扩展会产生好多的小类,如果过度使用,程序会越来越复杂。                              装饰者模式是对抽象类的编...

2018-05-28 19:31:17 108

原创 设计模式:观察者模式

观察者模式:定义了对象之间的一对多以来,这样当一个对象改变时那么所有的以来对象都会受到通知然后自动更新。生活例子:一些人订购了报纸,这样每当报社出版新的报纸时就把报纸地送到订阅报纸的人的手里。观察者只要实现了观察这类,那么就可以知道其为自己的观察者,但是不需要具体的知道这个观察者是谁,做什么事情。主题对象维护了一组属于自己的观察者,每当主题对象发生改变以后那么就对所有的观察者发送信息。改变观察者或...

2018-05-09 23:15:57 82

原创 设计模式:策略模式

策略模式就是定义成一组算法行为,在接口中定义一个方法。在使用的类中实现该接口,实现不同的算法。从而完成在不同的情况下使用不同的算法。然后通过动态的改变不同的策略实现不同的算法。优点1、可以动态的改变对象的行为缺点1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类2、策略模式将造成产生很多策略类定义个接口:在接口中完成算法的定义,通过不同的类实现,来完成不同的功能。在实际的使用中,在类中定义...

2018-05-06 16:59:00 98

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除