自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 006-guava 集合-集合工具类-集合扩展工具类

一、概述  需要实现自己的集合扩展。也许你想要在元素被添加到列表时增加特定的行为,或者你想实现一个Iterable,其底层实际上是遍历数据库查询的结果集二、使用2.1、ForwardingList装饰器  针对所有类型的集合接口,Guava都提供了Forwarding抽象类以简化装饰者模式的使用。  Forwarding抽象类定义了一个抽象方法:delegate(),...

2019-09-25 17:35:00 306

转载 005-guava 集合-集合工具类-java.util.Collections中未包含的集合工具[Maps,Lists,Sets],Iterables、Multisets、Multimaps、Tab...

一、概述  工具类与特定集合接口的对应关系归纳如下:集合接口属于JDK还是Guava对应的Guava工具类CollectionJDKCollections2:不要和java.util.Collections混淆ListJDKListsSetJDKSetsSortedSetJDKSe...

2019-09-25 16:45:00 443

转载 004-guava 集合-新增集合类型-MultiSet, MultiMap, BiMap , Table, ClassToInstanceMap, RangeSe, RangeMap等...

一、概述  Guava引入了很多JDK没有的、但明显有用的新集合类型。这些新类型是为了和JDK集合框架共存,而没有往JDK集合抽象中硬塞其他概念。作为一般规则,Guava集合非常精准地遵循了JDK接口契约。二、使用2.1、MultiSet[无序+可重复]-工具类Multisets  Guava提供了一个新集合类型Multiset,它可以多次添加相等的元素。维基百科从数学...

2019-09-25 13:35:00 457

转载 003-guava 集合-不可变集合

一、概述二、使用2.1、不可变集合1、为什么使用不可变集合不可变对象有很多优点,包括:当对象被不可信的库调用时,不可变形式是安全的;不可变对象被多个线程调用时,不存在竞态条件问题不可变集合不需要考虑变化,因此可以节省时间和空间。所有不可变的集合都比它们的可变形式有更好的内存利用率(分析和测试细节);不可变对象因为有固定不变,可以作为常量来安全使用。所有Guava不...

2019-09-25 10:45:00 195

转载 002-guava String 操作

一、概述  提供了字符串基本操作二、使用2.1、字符串拼接字符串的拼接采用的是Guava中的Joiner类中的方法 @Test public void testJdkJoin() { List<String> strList = Lists.newArrayList("1", "2", null, "3", "4");...

2019-09-25 10:12:00 152

转载 001-guava概述

一、概述  Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] 、缓存 [caching] 、原生类型支持 [primitives support] 、并发库 [concurrency libraries] 、通用注解 [common annotations] 、字符串处理 [string processing] 、I/O...

2019-09-25 09:05:00 94

转载 004-行为型-11-解析器模式(Interpreter)

一、概述  提供了评估语言的语法或表达式的方式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。    意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。  主要解决:对于一些固定文法构建一个解释句子的解释器。  注意事项:可利用场景比较少,JAVA 中如果碰到可以用 e...

2019-09-24 11:12:00 76

转载 004-行为型-10-中介者模式(Mediator)

一、概述  在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用。  用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。  注意事项:不应当在职责混乱的时候使用。  主要解决:对象与对象之间存...

2019-09-24 10:33:00 59

转载 004-行为型-09-访问者模式(Visitor)

一、概述  它分离对象的数据和行为,使用Visitor模式,可以不修改已有类的情况下,增加新的操作。  主要解决:稳定的数据结构和易变的操作耦合问题。  注意事项:访问者可以对功能进行统一,可以做报表、UI、拦截器与过滤器。1.1、适用场景  1、对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作。  2、需要对一个对象结构中的对象进行很多不同的...

2019-09-24 10:22:00 77

转载 004-行为型-08-状态模式(State)

一、概述  允许一个对象在其内部状态改变时,改变它的行为  在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。  注意事项:在行为受状态约束的时候使用状态模式,而且状态不超过 5 个。1.1、适用场景  一个对象存在多个状态(不同状态下行为不同),且状态可相互转换.  比如:电商订单状态扭转等  状态模式主要解决...

2019-09-24 10:05:00 66

转载 004-行为型-07-备忘录模式(Memento)

一、概述  又叫做快照模式(Snapshot Pattern)或Token模式  保存对象的内部状态,并在需要的时候(undo/rollback)恢复对象以前的状态。  意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。  主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将...

2019-09-23 18:39:00 76

转载 004-行为型-06-命令模式(Command)

一、概述  是一种数据驱动的设计模式  请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。  将请求封装成对象,以便使用不同的请求、日志、队列等来参数化其他对象。命令模式也支持撤销操作。(命令模式解决了应用程序中对象的职责以及它们之间的通信方式)1.1、适用场景  认为是命令的地方都可以使用...

2019-09-23 18:25:00 91

转载 004-行为型-05-职责链模式(Chain of Responsibility)

一、概述  为请求创建一个接收此次请求对象的链  该模式构造一系列分别担当不同的职责的类的对象来共同完成一个任务,这些类的对象之间像链条一样紧密相连,所以被称作职责链模式。  在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。1.1、适用场景  一个请求的处理需要多个对象当中的一个或几个...

2019-09-23 17:41:00 70

转载 idea-debug启动会卡住不动,BeanPostProcessors (for example: not eligible for auto-proxying),报错解决...

debug启动会卡住不动,run模式启动正常debug启动输出到下面这行之后,就不会继续输出了爆出各种[INFO]- Bean 'dataSource' of type [class DruidDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: ...

2019-09-20 15:06:00 759

转载 009-Spring Boot全局配置跨域请求支持

1、Spring Boot 2.0以前全局配置跨域主要是继承WebMvcConfigurerAdapter@Configurationpublic class CorsConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry ...

2019-09-20 14:55:00 72

转载 004-行为型-04-迭代器模式(Iterator)

一、概述  提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。  迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。  迭代模式使用比较少,JDK集合也提供了Iterator的具体实现,可以直接拿来用,不必自己实现1.1、适用场景  1、访问一个聚合对...

2019-09-18 21:10:00 72

转载 004-行为型-03-观察者模式(Observer)

一、概述  当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。  定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新。  Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状...

2019-09-18 20:32:00 163

转载 008-SpringBoot发布WAR启动报错:Error assembling WAR: webxml attribute is required

一、Spring Boot发布war包流程:1、修改web model的pom.xml<packaging>war</packaging>SpringBoot默认发布的都是jar,因此要修改默认的打包方式jar为war2、修改web model的依赖(dependency)<dependency> ...

2019-09-09 13:51:00 792

转载 java-mybaits-016-mybatis知识点StatementType

1、statementType在mapper文件中可以使用statementType标记使用什么的对象操作SQL语句。statementType:标记操作SQL的对象要实现动态传入表名、列名,需要做如下修改 ,添加属性statementType=”STATEMENT” ,同时sql里的属有变量取值都改成${xxxx},而不是#{xxx}<delete id="...

2019-09-07 14:13:00 262

转载 004-行为型-02-模板方法模式(Template Method)

一、概述  定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤1.1、适用场景  一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现  各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复  一些方法通用,一些却在每一个子类都重新写了这一方法。  Template...

2019-08-27 22:02:00 56

转载 004-行为型-01-策略模式(Strategy)

一、概述  定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。1.1、适用场景  多个类只区别在表现行为不同,可以使用Strategy模式,在运行时动态选择具体要执行的行为。  需要在不同情况下使用不同...

2019-08-27 21:31:00 84

转载 java-mybaits-015-mybatis逆向工程最佳实践【基础mybatis-generator、tk.mybatis、mubatis-plus】...

一、概述三款框架的功能对比Mybatis-generator通用MapperMybatis-Plus代码生成器支持自动生成Model,Mapper,Mapper XML文件生成方式不够灵活;生成代码功能较为简单支持自动生成Entity,Mapper,Mapper XML文件;...

2019-08-26 20:51:00 394

转载 java-mybaits-014-数据库缓存设计【querycache、mybatis一级缓存、二级缓存】

一、概述  一般来说,可以在5个方面进行缓存的设计:    1、最底层可以配置的是数据库自带的query cache,    2、mybatis的一级缓存,默认情况下都处于开启状态,只能使用自带的PerpetualCache,无法配置第三方缓存    3、mybatis的二级缓存,可以配置开关状态,默认使用自带的PerpetualCache,但功能比较弱,能够配置第三方缓...

2019-08-23 10:37:00 136

转载 008-MySQL报错-Access denied for user 'root'@'localhost' (using password: NO)

1、新安装的mysql报错MySQL报错-Access denied for user 'root'@'localhost' (using password: NO)解决方案1、先停掉原来的服务/etc/init.d/mysqld stop2、使用安全模式登陆,跳过密码验证mysqld_safe --user=mysql --skip-grant-tables...

2019-08-22 18:05:00 147

转载 011-JSON、JSONObject、JSONArray使用、JSON数组形式字符串转换为List<Map<String,String>>的8种方法...

一、JSON数据格式1.1、常用JSON数据格式  1、对象方式:JSONObject的数据是用 { } 来表示的,  例如: { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null }  2、数组方式:JSONArray,顾名思义是由JSONObject构成的数组,用 ...

2019-08-20 17:55:00 1010

转载 003-结构型-07-享元模式(Flyweight)

一、概述  提供了减少对象数且从而改善应用所需的对象结构的方式。运用共享技术有效地支持大是细粒度的对象。  它通过与其他类似对象共享数据来减小内存占用。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递...

2019-08-08 21:17:00 68

转载 003-结构型-06-组合模式(Composite)

一、概述  将对象组合成树形结构以表示“部分一整体”的层次结构  组合模式是为了表示那些层次结构,同时部分和整体也可能是一样的结构,常见的如文件夹或者树。  通过递归手段来构造树形的对象结构,并可以通过一个对象来访问整个对象树。  组合(Composite)模式的其它翻译名称也很多,比如合成模式、树模式等等。在《设计模式》一书中给出的定义是:将对象以树形结构组织起来,以达...

2019-08-06 22:26:00 76

转载 003-结构型-05-桥接模式(Bridge)

一、概述  将抽象部分与它的具体实现部分分离。使它们都可以独立地变化。通过组合的方式建立两个类之间联系,而不是继承。  Bridge 模式又叫做桥接模式,是构造型的设计模式之一。Bridge模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。  它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,...

2019-08-06 22:25:00 99

转载 003-结构型-04-外观模式(Facade)

一、概述  Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作facade。  外观模式又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口1.1、适用场景  子系统越来越复杂,增加外观模式是供简单调用接口  构建多层系统结...

2019-08-06 22:17:00 80

转载 003-结构型-03-代理模式(Proxy)

一、概述  Proxy模式又叫做代理模式,是构造型的设计模式之一,它可以为其他对象提供一种代理(Proxy)以控制对这个对象的访问。  可以详细控制访问某个类或对象的方法,在调用这个方法(流程代码放到代理类中处理)做前置处理,调用这个方法后做后置处理。(即aop的微观实现)  所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互...

2019-08-06 22:16:00 82

转载 003-结构型-02-装饰模式(Decorator)

一、概述  装饰( Decorator )模式又叫做包装模式。通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。他是23种设计模式之一,英文叫Decorator Pattern,又叫装饰者模式。装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。  在不改变原有对象的基础之上,动态地给...

2019-08-06 21:46:00 87

转载 007-多线程-JUC线程池-Spring线程池配置、池子如何配置参数

一、概述Spring通过ThreadPoolTaskExecutor实现线程池技术,它是使用jdk中的Java.util.concurrent.ThreadPoolExecutor进行实现。1.1、xml方式配置 <!-- Spring线程池 --> <bean id="taskExecutor" class="org.springfra...

2019-08-06 21:41:00 121

转载 006-多线程-JUC线程池-并发测试程序

一、java代码模拟并发1.1、一次并发单次并发测试1、使用CountDownLatch  等待一个或多个线程一起执行  详细参看:007-多线程-锁-JUC锁-CountDownLatch-闭锁【允许一个或多个线程,等待其他一组线程完成操作,再继续执行】示例代码 @Test public void poolCountDownLatch()...

2019-08-06 21:13:00 220

转载 002-06-RestTemplate-请求示例-form、json、multipart、okhttp3

一、概述  请求示例集合服务端:https://github.com/bjlhx15/common-study.git中的http-client-webserver服务端:RequestBody接收 即为Content-Type:appliaction/json接收服务端:RequestParam 参数映射1.1、form表单请求头:Content-Type:...

2019-08-02 22:11:00 205

转载 002-05-RestTemplate 使用常见问题-非200请求捕获

一、概述1.1、RestTemplate报错时时获取不到错误信息捕获异常后try { result = restTemplate.postForEntity(faceConfig.getApiUrl(), new HttpEntity<>(paramMap, getHttpHeaders()), String.class).getBo...

2019-08-02 21:42:00 744

转载 002-04-RestTemplate 使用常见问题

一、使用  同前三节:ClientGetGoodsByGoodsIdResponse response =restTemplate.postForObject(svcUrl, request, Response.class);二、问题汇总1、no suitable HttpMessageConverter found for request type异常这个问题通常会出...

2019-08-01 21:10:00 747

转载 002-02-RestTemplate-初始化调用流程

一、简述  调用 RestTemplate 的默认构造函数,RestTemplate 对象在底层通过使用 java.net 包下的实现创建 HTTP 请求,可以通过使用 ClientHttpRequestFactory 指定不同的HTTP请求方式。  使用的是spring5.0.1  默认使用 SimpleClientHttpRequestFactory,是 ClientHt...

2019-08-01 21:05:00 834

转载 002-01-RestTemplate-配置使用说明

一、概述  Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。  简化了发起HTTP请求以及处理响应的过程,并且支持REST。二、方法说明1、使用配置RestTemplate,增加spring配置,applicationCont...

2019-08-01 21:02:00 167

转载 001-http-总览、文件配置、常用http client、http连接池

一、概述  http请求项目搭建:地址:https://github.com/bjlhx15/common-study.git中的common-http  主要针对post请求中的,form表单【application/x-www-form-urlcoded】提交,json【application/json】提交,文件【multipart/form-data】提交  详细参...

2019-08-01 14:49:00 925

转载 017-小技巧

1、网站启动  Caused by: java.lang.IllegalStateException: availableProcessors is already set to [8], rejecting [8]  配置环境变量:-Des.set.netty.runtime.available.processors=false  使用于:正式,单元测试等jvm变量  ...

2019-07-30 15:49:00 101

空空如也

空空如也

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

TA关注的人

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