自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

naonao2014的专栏

纪念那些逝去的青春......

  • 博客(41)
  • 收藏
  • 关注

原创 读《Effective Java》

代码应该被重用而不是拷贝一、创建和销毁对象1.静态工厂方法替代构造器1.1 优势:静态工厂方法与构造器的第一大优势是,它们有名称静态工厂方法与构造器的第二大优势是,不必在每次调用它们的时候都创建一个新的对象静态工厂方法与构造器的第三大优势是,它们可以返回原返回类型的任何子类型的对象静态工厂方法的第四大优势是,所返回的对象的类可以随着每次的调用而发生变化,这取决于静态工厂方法的参...

2019-09-28 20:26:20 146

原创 架构整洁之道

架构整洁之道设计原则一. SRP:单一职责原则二.OCP:开闭原则三.LSP:里氏替换原则四.ISP:接口隔离原则五.DIP:依赖反转原则组件构建原则一.组件聚合1.REP:复用/发布等同原则2.OCP:共同闭包原则3.CRP:共同复用原则二.组件解耦设计原则SOLID一. SRP:单一职责原则定义:任何一个软件模块都应该有且仅有一个被修改的理由或者任何一个软件模块都应该只对一个用户或系统...

2019-09-24 08:23:05 201

转载 架构

1.分类:架构思维类:开闭原则、单一职责原则、依赖倒置原则、接口分离原则设计模式类分布式系统架构设计类:一致性、高可用、高并发重构类

2019-04-27 15:56:27 121

原创 spring 扩展点

ApplicationContextAwareApplicationContextAware的setApplicationContext()方法:如果某个Bean实现了ApplicationContextAware接口,那么Spring将会将该Bean所在的上下文环境ApplicationContext传递给setApplicationContext()方法,在Bean类中新增一个Applic...

2019-04-06 17:23:31 168

原创 TCC 分布式事务

注意:如果try接口中调用某client执行更新操作后,但在try结束执行之前如果接口抛异常等原因执行了cancel接口,且client接口所对应的分布式项目down调或者http链接失败,则cancel后无法回滚,即分布式事务失效。原理:参考:https://www.jianshu.com/p/2d2867349f66...

2019-04-06 08:28:10 119

原创 事务

事务的三种类型Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务1、JDBC事务JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交。 java.sql.Connection 提供了以下控制事务的方法:public ...

2019-03-23 17:13:47 4166

转载 Spring Aop

应用场景:权限控制、 缓存控制、事物控制、 审计日志、性能监控、分布式日子、异常处理pointcut通配符:*(匹配任意数量的字符)、+(匹配制定类及其子类)、…(一般用于匹配任意数的子包或者参数)逻辑运算符: && 、|| 、!designators(指示符): 匹配方法: execution()匹配注解: @target() 、@args()、@wi...

2019-03-17 19:28:18 74

原创 RedisTemplate

Jedis与RedisTemplate的区别:Jedis是Redis官方推荐的面向Java的操作Redis的客户端,可以用JedisPool来获得连接进行get、set、del等操作相对简单,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了...

2019-03-17 15:22:04 2818

原创 visualvm+BTrace 监控方法的执行时间

1.主题: 本文主要讲如何通过Java自带的VisualVM实现监控当前程序中方法的执行时间以及方法中嵌套方法的执行时间,避免自己通过添加时间切片的方式侵入式的监控方法。2.安装插件:在Jdk的路径bin路径下运行visualvm打开工具,单纯的visualvm无法定位到具体的方法的执行时间,因此需要安装插件BTrace。安装过程参考 :https://blog.csdn.net/liuxia...

2019-03-16 19:51:49 1359

转载 河内之塔

描述: 有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。解法:如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将...

2019-02-23 20:39:54 82

原创 字符串类型的整型值二进制加运算

求:String s1 = “11”;String s2 = “1”;计算结果: 100简单实现public static void main(String[] args) { String x = "111001"; String y = "1101"; char[] xc = x.toCharArray(); cha...

2019-02-18 13:36:51 268

原创 快速排序

public void quickSort(int[] array,int front, int last) { if (front >last ) return ; int target = array[front]; int i = front; int j = last; while (i < j) ...

2019-02-16 12:17:38 85

原创 冒泡排序

冒泡排序从小到大排序int[] bubbleSort(int[] array) { int length = array.length(); for(int i = 0 ; i < length - 1; i++) { for (int j = 0; j < length - i -1; j++) { if (array[j...

2019-02-15 16:49:26 84

转载 Spring Cloud Feign 声明式服务调用

简介Spring Cloud Feign,基于Netflix Feign实现,整合了Spring Cloud Ribbon与Spring Cloud Hystrix,此外,它还提供了一种声明式的Web服务客户端定义方式。 Spring Cloud Feign帮助我们定义和实现依赖服务接口的定义。在Spring Cloud Feign的实现下,我们只需创建一个接口并用注解的方式来配置它,即可完成对...

2018-10-14 15:35:07 555

转载 Spring Cloud Hystrix 断路器

简介Hystrix 具有服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能。为项目引入Spring Cloud Hystrix1.pom.xml配置:<dependency> <groupId>org.springframework.cloud</groupId&am

2018-10-07 14:32:33 228

转载 Spring Cloud Eureka(服务注册与发现) + Ribbon(负载均衡器)

启动Spring 项目同时设置相关命令行参数java -jar demo.jar --server.port=8889 --spring.profiles.active=test 1.spring-boot-starter-actuator介绍先设置 management.security.enabled=false 否则下面执行无效1.1.应有配置类应用配置类:获取应用程序中加...

2018-09-24 16:27:20 2049

原创 Git 相关操作

远程查看远端地址 git remote –v查看远端地址 git remote –v如果发现远程地不对,可以修改:git remote set-url origin [email protected]:baiyanlang2016/eureka-server.git查看git的配置 git config --list设置远程地址: git remote add 主机名 远程仓库地址...

2018-09-23 11:34:04 106

转载 lambda表达式

简介jdk1.8中新增的核心特性有lambda表达式,函数式接口,流API,默认方法,新的Date,以及Time API一.函数式接口函数式接口是只有一个方法的接口,用作lambda表达式的类型。来看看jdk中的Runnable源码@FunctionalInterfacepublic interface Runnable { /** * When an obje...

2018-09-16 13:01:16 252

转载 java中的双冒号操作符

定义 双冒号运算操作符是类方法的句柄,lambda表达式的一种简写,这种简写的学名叫eta-conversion或者叫η-conversion。通常的情况下:把 x -> System.out.println(x) 简化为 System.out::println 的过程称之为 eta-conversion把 System.out::println 简化为 x ->...

2018-09-16 11:17:44 643

转载 Stream API介绍

Stream API介绍Java 8引入了全新的Stream API,此Stream与java I/O包里的InputStream和OutputStream是完全不同的概念。Stream API更像具有Iterable的集合类,但行为和集合类又有所不同,它是对集合对象功能的增强,专注于对集合对象进行各种非常便捷、高效的聚合操作或大批量数据操作。Stream API引入的目的在于弥补Java...

2018-09-16 11:05:45 2042 1

转载 Java内存模型与线程

一.硬件的效率与一致性  现代计算机通过加入一曾读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓存:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步会内存中,这样处理器就无需等待缓慢的内存读写了。基于高速缓存的存储交互很好得解决了处理器与内存的速度矛盾。但是也为计算机系统带来更高的复杂度,因为它引入了一个新的问题:缓存一致性(Cache C...

2018-09-05 17:29:49 124

原创 垃圾收集器与内存分配策略

一.概述哪些内存需要回收?什么时候回收?如何回收?  在Java内存运行时的区域各个部分中,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈的操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由JIT编译器进行一些优化,但大体上可以认为是编译期可知的),因此这几个区域的内存分...

2018-08-31 17:34:32 775

转载 java 代理

一:代理模式(静态代理)  代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。   静态代理由 业务实现类、业务代理类 两部分组成。业务实现类 负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截、过滤、预处理,主要是在方法中首先进行预处理动作,然后调用业务实现类的方法,还可以规定调用后的操作。我们在需要调用业务时,不是直接通过...

2018-08-27 10:22:27 103

原创 类型信息

概要  本文主要讨论Java是如何让我们再运行时识别对象和类的信息的。这主要采取两种形式:一种是“传统”RTTI (Run-Time Type Identification:在运行时识别一个对象的类型),它假定我们已在编译时已经知道了所有的类型;另一种是“反射”机制,利用它可在运行期独立查找类信息。1.Class对象  要理解RTTI 在Java 里如何工作,首先必须了解类型信息在运行...

2018-08-26 15:43:06 457 2

转载 创建型------工厂方法模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述工厂方法模式的:  工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymorphic Factory)模式。  工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。那么工厂方法模式是在什么场景下使用呢,下面就以本人的理解举例说明:  相信很多...

2018-08-25 15:30:56 98

转载 创建型------抽象工厂模式

场景问题  举个生活中常见的例子——组装电脑,我们在组装电脑的时候,通常需要选择一系列的配件,比如CPU、硬盘、内存、主板、电源、机箱等。为讨论使用简单点,只考虑选择CPU和主板的问题。  事实上,在选择CPU的时候,面临一系列的问题,比如品牌、型号、针脚数目、主频等问题,只有把这些问题都确定下来,才能确定具体的CPU。  同样,在选择主板的时候,也有一系列问题,比如品牌、芯片组、集成...

2018-08-25 14:44:52 99

原创 对象序列化

  当你创建对象时,只要你需要,,它就会一直存在,但是在程序终止时,无论如何它都不会继续存在。尽管这么做肯定是有意义的,但是仍旧存在某些情况,如果对象能够在程序不运行的情况下仍能存在并保存其信息,那将非常有用。这样,在下次运行程序时,该对象将被重建并且拥有的信息与在程序上次运行时它所拥有的信息相同。当然,你可以通过将信息写入文件或数据库来达到相同的效果,但是在使万物都成为对象的精神中,如果能够将一...

2018-08-21 14:30:41 436

原创 java io------压缩

  Java IO 类库中的类支持读写格式的数据流,你可以用它们对其他的IO类进行封装,以提供压缩功能。   这些类不是从新的Reader 和Writer 类衍生出来的,而是属于InputStream 和OutputStream 层次结构的一部分。这样做是因为压缩类库是按字节方式而不是字符方式处理的。所以有时不得不混合使用两种类型的数据流(注意可用InputStreamReader 和Outpu...

2018-08-20 16:00:36 201

原创 Java NIO

一.简介  JDK1.4的java.nio.*包中引入了新的Java I/O类库。其目的在于提高速度。速度的提高来自于所使用的的I/O和网络更接近于操作系统执行I/O的方式:通道和缓冲区。我们并不直接和通道交互,我们只是和缓冲器交互,并把缓冲器派送到通道。通道要么从缓冲器获得数据,要么想缓冲器发送数据。唯一直接与通道交互的缓冲器是ByteBuffer——-可以存储未加工字节的缓冲器。ByteB...

2018-08-20 14:26:06 160

转载 创建型------单例模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的:   作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。单例模式的结构   单例模式的特点:单例类只能有一个实例单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。饿汉式单例类public class EagerSing...

2018-08-17 17:57:32 101

转载 结构型------外观模式(门面模式)

医院的例子  现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊、划价、化验、收费、取药等。看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情。  首先病人必须先挂号,然后门诊。如果医生要求化验,病人必...

2018-08-16 17:59:15 126

转载 结构型------代理模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述代理(Proxy)模式的:  代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。代理模式的结构  所谓代理,就是一个人或者机构代表另一个人或者机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。  代理模式类图如下:...

2018-08-16 17:04:02 87

转载 行为型------策略模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的:  策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化策略模式的结构 &emsp策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式...

2018-08-16 16:38:27 106

转载 结构型——适配器模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述适配器(Adapter)模式的:   适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的用途   用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使...

2018-08-15 15:54:02 103

转载 结构型——装饰模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的:  装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构  装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功...

2018-08-15 14:08:03 114

转载 类图

UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1. 泛化(Generalization) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动...

2018-08-15 10:29:30 102

原创 Java IO

一. 输入和输出   可将Java库的IO类分割为输入与输出两个部分。通过继承,从InputStream(输入流)衍生的所有类都拥有名为read()的基本方法,用于读取单个字节或者字节数组。类似地,从OutputStream衍生的所有类都拥有基本方法write(),用于写入单个字节或者字节数组。Java类库的设计者将所有与输入有关的类都从InputStream继承,而与输出有关的所有类都从Out...

2018-08-15 09:45:40 176

转载 Java二进制指令代码解析

小注:去年在看《深入解析JVM》书的时候做的一些记录,同时参考了《Java虚拟机规范》。只是对指令的一些列举,加入了一些自己的理解。可以用来查询Java二进制指令代码解析 Java源码在运行之前都要编译成为字节码格式(如.class文件),然后由ClassLoader将字节码载入运行。在字节码文件中,指令代码只是其中的一部分,里面还记录了字节码文件的编译版本、常量池、访问权限、所有成员变量和...

2018-08-12 11:04:46 268

原创 虚拟机类加载机制

概述   在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。   与那些在编译时需要进行连接工作的语言不通,在Java语言中,类型的加载、连接和初始化过程多在程序运行期间完成的。Java里天生可以冬天扩展的语言特性...

2018-08-12 10:56:06 161

原创 Class类的文件结构

根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这中伪结构中只有两种数据类型:无符号数和表。无符号数: 无符号数属于基本的数据类型,以u1、u2、u4、u8来分别代表1个字节、2个字节、4个字节 和8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值。表: 表是由多个无符号数或者其他表作为数据项...

2018-08-10 19:46:04 201

空空如也

空空如也

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

TA关注的人

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