- 博客(21)
- 收藏
- 关注
原创 jvm GC日志详解
首先我们来介绍什么事GC: Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代码,对内存泄露和溢出的问题,也不需要像C程序员那样战战兢兢。这是因为在Java虚拟机中,存在自动内存管理和垃圾清扫机制。概括地说,该机制对JVM(Java Virtual Machin...
2017-11-01 09:55:23
363
Eclipse、MyEclipse、springSTS等 Java注释模板设置详解。
Java模板入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素。 现就每一个元素逐一介绍: 文件(Files)注释标签:/** * @Title::${file_name} * @Package :${packag...
2017-10-30 10:07:54
708
java之for循环删除添加
java 之 for常用的几种for循环删除添加数据的几种方案比较: List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); 第一种:并发操作,需要对 Iterator 对象加锁。 Iterator<...
2017-09-25 09:52:38
574
原创 springcloud之(Eureka)服务注册与发现
一、spring cloud简介spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等。 二、创建服务注册中心在这里,我们需要用的的组件上Spring Cloud Netflix的Eureka ,eureka是一个服务注册和发现模块。 2.1 首先创建一个maven主...
2017-09-18 11:40:20
153
Dubbo之Activate
Activate:可以被框架中自动激活加载扩展,此Annotation用于配置扩展被自动激活加载条件。Activate,看起来有点不好理解,它的意思是条件激活,用户通过group和value配置激活条件。被activate注解的扩展点在满足某种条件时会被激活,它一般用来配合filter和Invokelistener,声明他们的使用场景。我们先来看看源码 首先你对的dubbo的 SPI...
2017-09-15 16:20:59
1548
Dubbo之TpsLimitFilter
TpsLimitFilter:我们这里以TpsLimitFilter为例来说明Filter的实现。TpsLimitFilter用于限制远程调用的TPS,即每秒可以执行多少次远程调用。其源码如下: 首先,根据Activate注解可以看到,该Filter的激活条件是服务提供方,并且URL中配置了名为Constants.TPS_LIMIT_RATE_KEY的参数。该Filter持有一个TPSLi...
2017-09-14 19:10:53
434
原创 构建SpringBoot工程 -入门篇(搭建springboot工程)
springboot 简介: spring boot 它的设计目的就是为例简化开发,开启了各种自动装配,你不需要在写各种配置文件,引入相关 的依赖就能迅速搭建起一个web工程。它采用的是建立生产就绪的应用程序观点,优先于配置的惯例。 why: 可能你的项目还在使用ssm或者ssh 架构的项目,当你使用了springboot 搭建项目时,你会觉得一切变得简单了,...
2017-09-11 09:14:47
122
原创 git常用用法
git clone获取一个url对应的远程Git 仓库,一般的格式是git clone [url].git pull 拉取仓库文件git pull origin repo 拉取repo分支文件 git status 查询状态git add 提交新文件或者修改到缓冲区 git add file[file...] 单个或者多个文件 git add...
2017-09-06 10:28:33
89
Dubbo之Adaptive注解用法
首先来介绍下Adaptive注解:@Adaptive:为生成Adaptive实例提供参数,作用域在类或方法上; Adatpive,字面意思是个适配,但其实是个代理,它的意思是适配合适的对象处理请求。类似jdk的动态代理,因为dubbo底层会大量使用反射,出于性能考虑会默认使用javassist字节码编译生成一个adaptive拦截所有请求,然后由它基于策略动态委派合适的provi...
2017-08-29 16:06:10
1784
原创 7、 Dubbo与spring融合
spring中bean的定义可以通过编程,可以定义在properties文件,也可以定义在通过xml文件中,用的最多的是通过xml形式,由于xml格式具有很好的自说明便于编写及维护。对于xml的文档结构、数据定义及格式验证可以通过DTD和Schema, 在spring2.0之前采用的是DTD,在spring2.0之后采用Schema。使用Schema方式使得spring更加便于与第三方进行集成...
2017-08-28 10:59:49
116
原创 OpenJDK 源码目录详解
下面我就介绍下每个目录:agent--->主要是Serviceability Agent的实现。make--->用来build出HotSpot的各种配置文件。src------>HotSpot VM的源代码。 | | cpu---->CPU相关代码。 os----->...
2017-08-28 10:59:37
848
原创 5、Dubbo之Javassist字节码技术生成代理
JavassistProxyFactory:利用字节码技术来创建对象 public <T> T getProxy(Invoker<T> invoker,Class<?>[] interfaces) { return (T) Proxy.getProxy(interfaces).newInstance(newInvokerInvocati...
2017-08-04 14:05:36
217
原创 4、 Dubb代理之接口定义
代理模式这里不再这里介绍,dubbo中使用这种模式,如: dubbo服务的消费端获取的就是对远程服务的一个代理。Dubbo由代理工厂ProxyFactory对象创建代理对象。ProxyFactory 接口定义 @SPI("javassist")public interface ProxyFactory { @Adaptive({Constants.PROXY_KEY})...
2017-08-04 11:53:26
155
原创 3、Dubbo之动态编译
我们运行的Java代码,一般都是编译之后的字节码。Dubbo为了实现基于spi思想的扩展特性,特别是能够灵活添加额外功能,对于扩展或者说是策略的选择这个叫做控制类也好设配类也好的类要能够动态生成。当然对应已知需求如Protocol, ProxyFactory他们的策略选择的设配类代码dubbo直接提供也无妨,但是dubbo作为一个高扩展性的框架,使得用户能够添加自己的需求,根据配置动态生成自己的...
2017-08-04 11:42:33
81
原创 2、Dubbo基于SPI思想之Dubbo SPI实现
dubbo SPI接口定义 dubbo如何定义SPI @Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE})public @interface SPI { /** * 缺省扩展点名。 */ String value() def...
2017-08-04 11:23:24
145
原创 1、Dubbo实现SPI之 JDK介绍
Dubbo SPI的思想 --->!大家是否熟悉spi(service providerinterface)机制,即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLoader类实现spi机制的服务查找功能。我们来看下jdk是如何实现: JDK实现SPI服务查找: ServiceLoader。packag...
2017-08-04 10:43:20
134
原创 分析java线程池的实现原理
线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处:1、降低资源消耗;2、提高响应速度;3、提高线程的可管理性。Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务,然后提交给线程池,而不用关心该任务是如何执行、被哪个线程执行,以及什么时候执行。 1、Execu...
2017-07-07 10:21:27
102
原创 JVM源码分析之SystemGC完全解读
概述JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下System.gc的原理. 或许大家已经知道如下相关的知识.system.gc其实是做一次full gcsystem.gc会暂停整个进...
2017-07-05 21:01:49
137
原创 Spring源码--IOC容器的实现步骤
Spring IOC(控制反转)与DI (依赖注入)IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。 Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统...
2017-07-05 17:47:15
217
原创 【Spring源码--IOC容器的实现】(一)Web容器的启动
1.由于大家平常用Spring基本都是Web项目中,那么今天就从Web的角度来看看IOC容器是怎么启动并管理Bean的。 2.本文及后续代码版本:Spring3.0.5。所以如发现代码(或图)不一致请注意Spring版本。 3.还是建议大家在前几遍读源码的时候,先把路走通,再回头研究细节。Web容器接口体系为了方便在Web环境中使用IOC容器,spring为Web应用提供了上下文接口We...
2017-07-05 15:33:04
82
原创 HashMap实现原理
jdk1.8之前HashMap实现原理1,HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数 组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间...
2017-06-12 10:00:48
99
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人