自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(142)
  • 资源 (4)
  • 收藏
  • 关注

原创 redis(三):redis的持久化

redis的持久化,有两种策略,分别是RDB(redis database)和AOF(append only file),默认采用第一种策略。1.RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就Snapshot快照,它恢复时是将快照文件直接读到内存里。1.1 持久化原理Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结...

2019-08-27 16:16:47 71

原创 redis(二):redis.conf配置文件

查看所有的可配置项命令: CONFIG GET *1.GENERAL通用daemonize:Redis 默认不是以守护进程的方式运行,可以通过该配置项修改,使用 yes 启用守护进程(Windows 不支持守护线程的配置为 no ),默认为no pidfile:当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过...

2019-08-22 18:21:21 194

原创 redis(一):CAP简介和常用数据类型的操作命令

1.CAP简介CAP定理又称CAP原则,指的是在一个分布式数据库系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得。简单理解就是CAP的3进2.CAP区别与sql数据库事务的ACID特性,一般适用于多种类型的数据库系统中。Consistency(一致性):或者强...

2019-08-20 16:36:22 1006

原创 ES中精确查询被分词字段

项目中,需要精确查询的一个ES字段,为text类型,text是要被分词的,整个字符串根据一定规则分解一个个term。因此一般情况下,text类型的字段,不能精确查询,keyword类型的可以使用termQuery查询。这种情况下可以使用matchPhrasePrefixQuery(...)来精确查询被分词的字段,然后再过滤一次。代码如下: public long countBy...

2019-05-21 16:37:45 14583 1

原创 客户端负载均衡:Spring Cloud Ribbon

Spring Cloud Ribbon是一个基于http和tcp的客户端负载均衡工具,基于Netflix Ribbon实现。Spring Cloud Ribbon虽然是Spring cloud的一个组件,但不需要像注册中心,配置中心等独立部署,它几乎存在于每一个spring cloud构建的微服务中。负载均衡是系统架构中一个非常重要的内容,它是对系统进行高可用,缓解网络压力和处理能力扩容的重要...

2019-04-27 00:12:31 158

原创 Spring cloud之服务治理:Spring cloud Eureka

Spring cloud中的服务治理,大致分为两部分:服务注册,服务发现。服务治理是微服务架构中最核心最基础的模块,主要用来实现各个微服务模块之间的自动化注册与发现。在传统的架构中,随着服务或者模块原来越多,需要大量的静态配置来维护实例清单。这种状况,无论对于开发还是运维,都是比较头疼的事。为了解决微服务架构中服务实例维护问题,产生了大量的服务治理框架和产品,这些框架和产品都是围绕着服务注册与...

2019-04-23 00:56:57 190

原创 java8中的lambda表达式和stream流

1.lambda表达式lambda表达式是为了简化编程而生。在java中,一些很常见的操作总是包含一些“静态”代码,这里的静态值得是:无论我们在该操作中实现什么逻辑,这些代码必须得有而且形式也一样。比如使用匿名内部类的java线程,按钮的点击事件等。lambda表达式就是要替代只有一个抽象方法的匿名内部类,让代码变得更简洁。因为这些“静态”代码形式是固定的,所以编译器能够自动推断出来,...

2019-04-13 23:30:31 442

原创 Spring boot 实现solr索引的增添和查询

在solr实例中自定义域, <field name="user_name" type="text_general" indexed="true" stored="true"/> <field name="user_sex" type="text_general" indexed="true" stored="true"/> <field name...

2019-03-28 17:27:42 1477

原创 solr环境搭建以及添加文档和查询文档

1.solr的定义Solr是一个高性能,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面。文档通过Http利用XML 加到一个搜索集合中查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结...

2019-03-28 13:45:31 773

原创 lucene实现简单的全文检索

1.Lucene实现全文检索的流程由图可以看出,Lucene实现的全文检索核心就是索引库。索引就是为了快速查找而存在的,比如字典中的索引,关系型数据库中的索引。Lucene的使用大概分为两个步骤:获取文档,分析整理,写入索引库,索引库的存储位置可以自定义 从索引库中查询2.代码/** * lucene索引管理器 */public class IndexManager...

2019-03-22 17:16:21 957

原创 Ajax跨域的简单实现

1.跨域的由来因为javascript的同源策略,js只能访问同域的资源。所谓同域,就是指域名,端口,协议必须相同。简而言之,javascript只能访问同一个服务器下的资源,不能直接访问别人服务器的资源。但是在一些操作中,必须访问其他服务器的资源,比如单点登录。这样就必须想法绕过浏览器的限制,于是就有了很多的跨域技术的出现。2.使用jsonpjsonp是对json的一种扩展。使用js...

2019-03-15 10:49:08 187

原创 Spring boot实现多数据源的一种方式

参考博客,感谢作者!之所以说是一种方式,因为还有一种方式是通过继承AbstractRoutingDataSource来动态选择DataSource路由,通过AOP的方式进行切换。该程序Dao层实现使用mybatis框架。该方式实现的思路是:有多少个数据源就写多少个数据源的配置类,mybatis的Mapper接口分别对应放在不同的包下,Mapper.xml文件根据数据源的不同放在不同的目...

2019-01-30 15:28:34 1049

原创 动态代理实现简单的拦截器

该拦截器需要实现的功能:如果用户已登录那么执行该方法(操作)。如果没有登录,那么拦截该方法(操作),跳转到登录页面。该拦截器的实现使用JDK的动态代理技术。需要用到的接口:public interface Worker { void doWork();}该接口的实现类:public class Programmer implements Worker { publi...

2018-12-24 15:36:50 899 3

原创 动态代理的两种实现方式

在java web中,很多的技术底层都用到了java的动态代理技术。比如拦截器,比如Spring中的AOP编程等。动态代理底层又是基于java的反射技术。在java中,动态代理技术有:原生JDK,CGLIB,Javassist,ASM。其中,Spring常用JDK和CGLIB,而Mybatis中还使用了Javassist。本文只讲原生JDK,CGLIB这两种最常用的方式。1.原生JDK...

2018-12-24 11:05:04 9769 2

原创 android studio实现WiFi调试

有的时候,app开发过程中需要连接别的而设备,占用了USB接口,这样就导致了我们无法实时看到调试信息。解决的一个方案就是使用WiFi进行调试,手机和电脑通过WiFi通信而不是USB接口。下面,简短地说下实现WiFi调试的步骤。打开开发者选项和USB调试,如果目标计算机多次拒绝可能要多次打开。 电脑和手机连接相同的WiFi,保证电脑和手机处于同一个局域网之下。 在android stud...

2018-12-03 15:45:48 4995

原创 mybatis在foreach中实现查询

在mybatis中大批量插入数据,一般会直接使用foreach,比如: &lt;insert id="addItem" parameterType="java.util.List"&gt; insert into tableA ( id, name, PID, SORTID, AUDIT ) values &lt;foreach collection=...

2018-07-24 14:30:50 5164 1

原创 解释器模式

简介:解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。适用场景: 1、可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。 2、一些重复出现的问题可以用一种简单的语言来进行表达。 3、一个简单语法需要解释的场景。解释器模式一般使用较少,在开发中碰到类似场景可以使用expre...

2018-05-21 11:29:11 522

原创 MVC模式

简介:MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。①Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。②View(视图) - 视图代表模型包含的数据的可视化。③Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变...

2018-05-16 10:26:24 147

原创 访问者模式

简介:在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。意图:将数据结构和数据操作分离。注意:在访问者模式中,一些代码结构和方法名约定俗成。/** *抽象元素类,accept方法表示需要接收的访问者。method是需...

2018-05-15 16:22:23 416

原创 模板模式

简介:在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。注意:一般模板方法都加上 final 关键词。下面的例子是关于计算代码执行时间的。如果程序中多处需要计算代码的执行时间,那么可以将这个功能抽象出来。/** * 定义一个模板类...

2018-05-15 10:10:16 735

原创 策略模式

简介:在策略模式中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。策略模式和状态模式比较类似。下面的代码中,“策略”就是对数组的处理方式,不同的策略下,对数组的处理方式也不同。/** *定义一个策略的抽象类,用于对数组进行处理...

2018-05-11 16:06:42 527

原创 空对象模式

简介:在空对象模式中,一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。下面的代码是根据学生id和那么创建学生对象的例子。如果...

2018-05-11 10:47:03 178

原创 状态模式

简介:在状态模式中,类的行为是基于它的状态改变的,类的状态改变,该类的行为也会随着状态改变而改变。这种类型的设计模式属于行为型模式。适用场景:①行为随状态的改变而改变;②可以作为if else 判断语句或者switch语句的代替者,状态模式中每个条件分支对应一个类。/** *创建一个状态的接口 */public interface State { String getState();}...

2018-05-09 11:02:11 132

原创 观察者模式

简介:当对象间存在一对多关系时,则使用观察者模式。比如,当一个对象被修改时,则会自动通知它的依赖对象。这些对象会自动更新自己。观察者模式属于行为型模式。JDK中已经有了支持观察者模式的类。类似场景:网游中,当玩家的状态发生变化时(比如血量,位置),服务器需要将该玩家的最新状态发送给其他玩家。自己的理解:①目标对象(被观察对象)对应的类种需要一个List存放观察者们。②观察者类中一般有一个updat...

2018-05-08 16:21:08 107

原创 备忘录模式

简介:备忘录模式保存一个对象的某个状态,以便在适当的时候根据某一状态恢复对象。备忘录模式属于行为型模式。应用实例:①游戏存档。②Windows 里的 ctri + z撤销。③浏览器中的后退。④数据库事物中的回滚。结构:发起者角色(Originator):负责创建一个备忘录用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。备忘录角色(Memento):负责存储Originator对象的内部...

2018-05-08 11:09:55 133

原创 中介者模式

简介:中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。使用场景:1.一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解。2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。3.想定制一个分布在多个类中的行为,但又不想生成太多的子类。自己的...

2018-05-07 16:35:53 122

原创 命令模式

简介:是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。关键代码:命令的发布者(调用者)一般持有命令接口的引用;具体的命令类持有命令的执行者(被调用者)对象。一个非常简单的例子:领导发布命令,员工去执行。领导是命令的发布者,持有命令接口的引用。员工是命令的执行者,被一个具体的命...

2018-05-02 10:54:21 132

原创 责任链模式

简介:这种设计模式使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。下面的例子是一个关于“开会,请假,出差”的例子,这三个业务处理器执行起来有顺序。开会的处理器可以执行...

2018-04-27 12:11:14 263

原创 外观模式

理解可能不甚准确,如有错误,还请指出,多谢!简介:隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。这种模式涉及到一个单一的类,该类提供了客户端请求的简化方法和对现有系统类方法的委托调用。简而言之:就是隐藏系统实现的复杂性,只暴露简单的接口供用户使用。这种设计模式运用比价多,比如java web的三层开...

2018-04-17 14:03:56 123

原创 装饰器模式

简介:装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。装饰器模式可以少写很多复杂的逻辑,复杂的逻辑直接调用被装饰者的方法。装饰器模式一般需要共同实现一个接口或者继承一个类,装饰者和被装饰者共同的方法,方法名一般要保持统一。在j...

2018-04-13 14:45:14 128

原创 组合模式

简介:组合模式又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理,公司的人事管理(总经理和部门经理,部门经理和员工)。比如树形菜单有子级和父级,在定义时,只需要定义一个类,类种的属性指明该对象的父级对象是谁即可,这样...

2018-04-11 15:30:02 154

原创 过滤器模式

简介:这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。在本例中,以水果作为过滤的对象。水果的颜色和口味各有差别。有时我们只需要酸味的水果,有时只需要黄色的水果,这种情况下,就需要用到过滤器模式,根据一定的标准进行筛选。/** *创建一个水果类,属性包括名称,口味和颜色 */public ...

2018-04-09 15:37:54 141

原创 桥接模式

简介:桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。使用场景:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。侧重点在于:一方是经常变化着的本例中,厨师可以做菜,但菜的种类很多,厨师每天做的菜都不一样,菜的种类并不是一成不变,而是经常在变化。在这种场景中,就需要用...

2018-04-08 14:32:20 104

原创 适配器模式

简介:适配器模式是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能使用场景:一个实体对象不仅拥有自身的功能,还需要别的实体的功能。这种情况就需要用到适配器进行连接,使这个实体实现多功能。适配器模式经常使用依赖。下面的例子是一个“门”和“防盗器材”之间的关系。单纯的“门”只有关和闭的功能,不...

2018-04-08 10:30:25 127

原创 原型模式

适用场景:当创建一个对象代价比较大时,可以复用已经存在的对象,从已经存在的对象中“克隆”出一个对象简而言之,就是对象的克隆,java提供了这种直接克隆的机制。public abstract class Animal implements Cloneable { private Integer id; private String name; abstract void eat(); ...

2018-04-04 17:19:23 123

原创 建造者模式

适用场景:一个复杂的对象由对个简单的对象一步步组成。一般需要一个Builder类一步一步生成该对象。该Builder对象是独立的。解决的问题:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。在本例中,以做菜为例,一份菜需要多种食材,而食材大概分为...

2018-04-04 15:36:18 111

原创 单例模式

单例模式是最简单,很常见的设计模式。一般单例模式分为懒汉式和饿汉式。懒汉式涉及线程安全,而饿汉式在类加载时就已经生成实例,不涉及线程安全问题,但却不是懒加载。除了懒汉式和饿汉式,还可以通过静态内部类和枚举创建单例模式。单例模式用于只能有一个对象的场景。/** *懒汉式,线程不安全。当有多个线程同时执行getInstance时, *很有可能出现多个实例。这种方式只适用于单线程的场景 */pu...

2018-04-04 11:03:46 98

原创 抽象工厂模式

前言:在网上了解了下抽象工厂模式,自己也动手写了抽象工厂模式的代码。然而抽象工厂模式确实比较抽象。我的理解可能不到位,下面的个人理解要是有不对的地方,欢迎指正,还希望不要误导了大家。意义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。使用场景:当一个事物拥有多个属性,而每一个属性又是可以进一步进行抽象的。顾名思义,“抽象工厂模式”对于工厂也进行了抽象,也就是说,工厂也是一个接...

2018-04-03 17:41:23 115

原创 工厂模式

意义:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。使用场景:当创建一个对象的逻辑非常复杂时,可以使用工厂模式将创建对象的逻辑封装起来,需要用到该对象时直接从工厂类获取,而不是去new一个对象再进行繁杂的配置。或者一个接口下有很多的子类,创建这些子类对象时,只需要知道名称,就可以通过工厂类创建子类,采用多态的方式获取子类的引用。/** *创建一个...

2018-04-03 11:27:43 154

原创 JavaMail使用465端口发送SSL加密邮件

今天发现,自己的项目在本地发邮件没任何问题。但部署到服务器,发送邮件显示连接异常。一开始非常懵逼,查资料,发现是阿里云出于安全考虑,关闭了服务器的25端口,而25端口是smtp的默认端口。提交工单,客服建议使用邮件服务商的加密的465端口。紧接着又是配置安全组,又是开启邮件服务商的端口和服务。其实都没用,如果发生了这个问题,那就一定是代码出现问题了,重写代码吧!本文参考了http://ww

2018-01-27 23:26:36 11395 1

dbutils工具

用于快速建立数据库jdbc连接,使用时一般要有配置文件

2017-05-09

c3p0数据库连接池

c3p0数据库连接池,用于建立数据库连接池

2017-05-09

mysql的jdbc驱动

mysql的jdbc驱动,用于java和mysql之间建立连接

2017-05-09

afinal框架

afinal是一个开源的android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少。 在android应用开发中,通过afinal的ioc框架,诸如ui绑定,事件绑定,通过注解可以自动绑定。通过afinal的orm框架,无需任何配置信息,一行代码就可以对android的sqlite数据库进行增删改查操作。同时,afinal内嵌了finalHttp等简单易用的工具,可以轻松的对http请求进行操作。

2015-05-05

空空如也

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

TA关注的人

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