自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小布的世界

毫不费力就到嘴的食物,不是毒药,就是诱饵。

  • 博客(60)
  • 资源 (6)
  • 收藏
  • 关注

原创 RSA 数据加密解密

RSA 是一种非对称的数据加密算法,他有两对钥匙,分别为公钥和私钥,公钥加密只能用私钥解密,那相应的私钥加密,也只能由公钥解密。这样保证了一定的安全性。RSA 的用处有两种: - 是对数据的加密和解密,比如银行卡,身份证,手机号,等等这些比较敏感的信息,进行加密。 - 加签和验签,多用在需要公网传输数据的时候,包括https的核心原理也是这样的。https的工作原理可以参考 https加密通

2017-05-06 11:42:24 1279 2

原创 spring boot 整合redis对查询数据做缓存( 利用spring的AOP技术)

spring boot 整合redis做数据缓存,利用的是spring aop切面编程技术,利用注解标识切面。

2017-05-04 16:18:17 9371 5

转载 Redis安装

装载:http://www.bysocket.com/?p=917一、下载解压## 下载Rediswget http://download.redis.io/releases/redis-2.8.17.tar.gz## 解压tar zxvf redis-2.8.17.tar.gz二、编译安装cd redis-2.8.17/make ## 编译三、Redis配置设置## 拷贝配置和启动命令到

2017-04-26 15:54:17 673

原创 分布式系统实时统计在线人数

我们知道在分布式系统中,一个登陆应用可能被分开部署了多台服务器。想要统计实时的在线人数,需要借助一个中间件,我这里用的是memcached。这里必须说明一点,很多情况下,用户是不会手动点击登出按钮的,所以我们无法拿到一个非常精确的实时在线的一个数据,只能拿到一个近似实时的一个值。我之前有篇文章说的是单点登陆,有兴趣可以参考下,单点登陆sso 单点登陆的时候,会以cookie为key,用户ID为值,写

2017-04-19 11:07:45 12104 1

转载 linux 安装memcached

转载 http://www.linuxidc.com/Linux/2014-02/97329.htm1.安装之前,需要先确认系统中是否有libevent,因为memcached依赖这个包。查看:命令: rpm -qa|grep libevent显示的包:libevent-1.4.13-4.el6.x86_64此时,系统已经安装过了,需要卸载重新下载安装。卸载:rpm -e libevent-1.4

2017-04-14 14:39:29 524 1

原创 spring boot filter 配置多个时,执行顺序

在 spring boot 配置Filter过滤器 中简单介绍了spring boot 中如何添加过滤器,有人问到如果配置多个怎么控制,先经过哪个过滤器,后经过哪个过滤器。在web.xml中,我们知道,执行顺序是谁在前边执行谁。在spring boot中的FilterRegistrationBean注册过滤器的类中有个order属性,private int order = Ordered.LOWES

2017-03-27 13:54:48 63399 4

原创 spring security4 详细配置

在使用Spring Security详细配置,添加spring security依赖,添加spring security 过滤器,配置security的配置文件,security连数据库做验证,密码加密,Remember Me,配置不受Spring Security管理的URL,禁用CSRF防御,获取登录用户信息

2017-03-24 15:16:03 13386 1

原创 IntelliJ IDEA 2016破解码

IntelliJ IDEA 2016破解码 到期日2018年1月30日想搭建破解服务器 可以参考 http://idea.lanyus.com/ CNEKJPQZEX-eyJsaWNlbnNlSWQiOiJDTkVLSlBRWkVYIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsI

2017-03-22 16:30:56 887

原创 生成图片验证码

生成图片验证码,支持字母的大写,小写,大小写混合,数字,字母数字混合controller类package com.yiquanjie.cjd.controller;import com.yiquanjie.cjd.utils.RandomValidateCode;import org.springframework.stereotype.Controller;import org.springf

2017-03-22 15:08:58 871 1

翻译 Maven JVM terminated unexpectedly with exit code 137

Maven JVM terminated unexpectedly with exit code 137

2017-03-16 18:30:06 10935

原创 ThreadLock

除了控制资源的访问,我们还可以增加资源来保证所有对象的线程安全。比如,让100个人填写个人信息表,如果只有一只比,那么大家就得挨个填写,对于管理人员来说必须保证大家不会去哄抢这仅有的一支笔,否则,谁也填不完。从另外一个角度出发,我们干脆就准备100支笔,人手一只,那么所有人都可以各自为营,很快就能填完表格。如果锁是第一种思路,那么ThreadLock就是使用第二种思路了。一,简单使用从ThreadL

2017-03-15 16:52:11 8042 5

原创 高并发下锁的优化

一、减少锁的持有时间对于使用锁进行并发控制的应用程序而言,在锁竞争过程中,单个线程对锁的持有时间与系统性能有着直接的关系。如果一个线程持有锁的时间很长,必然会导致等待锁的线程数量增加,进而影响系统的性能。一个较为优化的解决方案是,只在必要时进行同步,这样就能明显减少线程持有锁的时间,有助于降低锁冲突的可能性,进而提升系统的并发能力。二、减小锁的粒度减小锁的粒度,也是削弱多线程锁竞争的有效手段。这种技

2017-03-15 14:55:44 1287

原创 JDK并发包(concurrent) - 线程池

多线程的软件设计,确实可以最大限度的发挥现代多核处理器的计算能力,提高系统的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性能反而会产生不利的影响。一、什么是线程池为了避免系统频繁的创建和销毁线程,我们可以让创建的线程复用。如果你写过数据库方便的代码,那你肯定知道数据库连接池。或者是发送http请求时候的,http连接池。亦或者是发送mq消息时候的连接池。线程池于他们的作用是一样的,线

2017-03-09 17:52:30 2116

原创 JDK并发包(concurrent) - 线程控制工具类

CountDownLatch是一个非常实用的多线程控制工具类,这个工具通常用来控制线程等待,他可以让某一个线程等待直到倒计时结束,在开始执行。就像火箭点火发射一样,为了确保发射的成功,在发射之前要进行一系列的检查,只有所有的检查都完成之后,才能进行发射,下面用CountDownLatch来模拟一下这个过程。package com.example.thread;import java.util.Ran

2017-03-09 11:48:24 588

原创 JDK并发包(concurrent) - 读写锁(ReadWriteLock)

ReadWriteLock是JDK1.5中提供的读写分离锁。读写分离可以有效的减少锁竞争,以此来高系统的性能。 读写锁允许多个线程同时读,但是考虑到数据完整性,写写操作,和读写操作依然是需要相互等待和持有锁的。如下图:如果在系统中,读操作次数远远大于写操作,则读写锁就可以发挥最大的功效了。上代码:package com.example.thread;import java.util.Random;

2017-03-09 10:47:08 1129

原创 JDK并发包(concurrent) - 重入锁(ReentrantLock)

重入锁是可以完全替代synchronized关键字的,在jdk 5.0的早期版本中,重入锁的性能远远高于synchronized的,但是从JDK 6.0开始,jdk在synchronized上做了大量优化,使得两者的性能差距并不是很大。 重入锁使用java.util.concurrent.locks.ReentrantLock类来实现的,先看个例子package com.example.threa

2017-03-08 17:46:40 415

原创 java多线程基础知识

一、线程的状态线程的所有状态都在Thread类中State枚举中 NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATEDNEW:表示线程刚刚创建,还没有开始执行RUNNABLE:表示已经创建好的线程,调用start()方法后,并且线程所需要的资源都已准备好BLOCKED:表示正在执行的线程遇到synchronized同步快,就会进入BLOC

2017-03-03 17:13:40 800

原创 监控一个方法的执行时间(不用抛出InterruptedException异常)

在一个调用链上,往往有多个方法或者应用协同来处理,那么如果在一个方法上耗时比较长的话,往往会导致整体响应时间过长,或者导致系统错误,http调用还可以设置超时时间,如果一个方法处理某个东西时间过长了怎么办,网上找到很多监控方法,大多都是要抛一个可中断的异常才能行,下面介绍一个不用抛InterruptedException异常的方法。直接上代码,很容易懂,就不啰嗦了。package com.examp

2017-03-02 17:47:27 1438

原创 windows系统背景淡绿护眼色设置

windows 系统 淡绿色背景设置

2017-03-02 10:52:03 13674 1

原创 GOF设计模式-命令模式

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。Client类:最终的客户端调用类。Invoker类:调用者,负责调

2017-03-01 14:53:46 414

原创 (十七)命令模式

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。Client类:最终的客户端调用类。Invoker类:调用者,负责调

2017-03-01 14:50:40 268

原创 (十七)命令模式

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。Client类:最终的客户端调用类。Invoker类:调用者,负责调

2017-03-01 14:49:37 196

原创 (十七)命令模式

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。Client类:最终的客户端调用类。Invoker类:调用者,负责调

2017-03-01 14:47:22 202

原创 (十七)命令模式

将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。Command类:是一个抽象类,类中对需要执行的命令进行声明,一般来说要对外公布一个execute方法用来执行命令。ConcreteCommand类:Command类的实现类,对抽象类中声明的方法进行实现。Client类:最终的客户端调用类。Invoker类:调用者,负责调

2017-03-01 14:46:12 232

原创 GOF设计模式-桥接模式

桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用Bridge模式。例如汽车在路上行驶的来说。即有小汽车又有公共汽

2017-03-01 14:12:47 340

原创 GOF设计模式-迭代模式

迭代子模式又叫游标(Cursor)模式,是对象的行为模式。迭代子模式可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象(internal representation)。抽象迭代子(Iterator)角色:此抽象角色定义出遍历元素所需的接口。具体迭代子(ConcreteIterator)角色:此角色实现了Iterator接口,并保持迭代过程中的游标位置。聚集(Aggregate)角色:此抽象

2017-02-27 15:13:40 271

原创 GOF设计模式-组合模式

组合模式:将对象合成树形结果以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。像xml的结构就是组合组合,dom4j解析xml的时候,就是这样的。Company:是一个抽象接口,实现所有类共有接口的默认行为。ConcreteCompany: 实现类执行具体的添加节点,删除节点,等操作,FinanceDepartment,HRDepartment:一个具体的

2017-02-27 14:11:39 382

原创 GOF设计模式-备忘录模式

备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。备忘录模式所涉及的角色有三个:备忘录(Memento)角色、发起人(Originator)角色、负责人(Caretaker)角色。发起人角

2017-02-17 15:17:48 330

原创 GOF设计模式-适配器模式

适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。就像很多购买港版的电子设备一样,直接买来是没有办法充电的,因为港版的插头,全部都是那种很大的三孔的,大陆这边有2空的,有小三孔的。所以在买电子设备的时候,最好再买一个转换插头,可以插在我们这边的小插孔上,另一头可以插上港版的那种大插头(其实有那种通用的插排的,深圳比较多,因为深圳距

2017-02-17 13:51:54 280

原创 GOF设计模式-状态模式

状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。环境(Context)角色,也成上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个具体状态类的实例给出此环境对象的现有状态。抽象状态(State)角色:定义一个接口,用以封装环境(Context)对象的一个特定的状态所对应的行为。具体状态(ConcreteState)角色:每一个具体状态

2017-02-16 17:19:06 591

原创 GOF设计模式-抽象工厂

抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据LSP原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽

2017-02-16 16:18:22 278

原创 GOF设计模式-观察者模式

观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察

2017-02-16 14:37:10 899

原创 GOF设计模式-建造者模式(builder)

建造者模式(builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Dirextor: 指挥者类,用于统一组装流程Builder:抽象Builder类,规范产品的组建,一般是由子类实现。DFCarBuilder: 抽象Builder类的实现类,实现抽象Builder类定义的所有方法,并且返回一个组建好的对象Car:产品类举个建造汽车的例子,现在要建造一辆汽

2017-02-16 13:39:07 699

原创 GOF设计模式-外观模式(Facade)

Facade模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。Facade模式提供一个高层次的接口,使得子系统更易于使用。在给外部系统提供接口时,要一个接口做一件事,但是必须要把事情做完,也就是禁止踢皮球,防止客户端调用了我的A方法,还要在调用B方法才能完成想做的事,其实对于客户端来说,调用一下结果得到相应的回应结果就好了,具体怎么做,不需要知道细节,这样设计,有助于程序

2017-02-15 17:30:30 564

原创 GOF设计模式-模板方法模式

模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。简单的说,就是把公用的一些东西放到父类,留下钩子函数,让子类去实现自己独特的地方。Refit:抽象父类,封装了一些公用方法HomeCar:子类,只需要实现自己

2017-02-15 16:40:59 324

原创 GOF设计模式-工厂模式

工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。既然说到工厂模式,简单回顾一下简单工厂模式在简单工厂模式中,如果我们要添加一个产品,比如日产,那么除了要添加一个日产产品类还要再修改一下case分支,那么这就和开山篇 中的开闭原则冲突了,即对修改关闭,对扩展开放,工厂模式就能很好的解决这个问题。UML图:Car,是产品的抽象类Ho

2017-02-14 16:07:12 414

原创 GOF设计模式-代理模式

代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。Subject:抽象主题类,声明真实主题与代理的共同接口方法。RealSubject:真实主题类,定义了代理所表示的真实对象,客户端通过代理类间接的调用真实主题类的方法。ProxySubject:代理类,持有对真实主题类的引用,

2017-02-10 17:31:51 356

原创 GOF设计模式-装饰模式

在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。Component:抽象组件,给对象动态的添加职责。ConcreteComponent:组件具体实现类。Decorator:抽象装饰者,继承Component,从外类来拓展Component类的功能,但对于Component来说无需知道Decorator的存在。Concrete

2017-02-10 10:50:13 329

原创 GOF设计模式-策略模式

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化,降低了各种算法类与使用算法类之间的耦合。Strategy:模拟客户端调用 Trip :出行方式接口 TripByBoot,TripByCar,TripByTrain,Trip接口的实现类模拟一个去西藏的例子,去西藏的方式有很多,可以步行,可以开车去,可以坐火车。 去西藏的

2017-02-09 18:28:32 360

原创 GOF设计模式--简单工厂模式

简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 ——360百科简单的说工厂是用来接收订单,生产产品的地方,简单工厂,就是说这个工厂有点简陋功能设备比较少。举个生产汽

2017-02-09 17:15:35 419

JRebel 插件 破解

JRebel 热部署 破解版

2017-03-22

JRebel 插件

JRebel 插件

2017-03-22

spring security 4 小例子带自定义过滤器

spring security 4 小例子带自定义过滤器

2017-03-20

GOF设计模式-java

GOF23设计模式大全 java

2017-03-01

导出excl源代码实例

导出excle利用apache提供的poi导出

2013-01-14

java导出exclejar包

java jsp导出excl文件需要的jar包

2013-01-14

空空如也

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

TA关注的人

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