自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

onefly

技术空间

  • 博客(49)
  • 资源 (4)
  • 收藏
  • 关注

原创 使用Nginx缓存静态文件

使用Nginx缓存静态文件

2017-03-30 10:48:07 3549

原创 MyBatis中#和$的区别

#{}解析为一个JDBC预编译语句(prepared statement)的参数标记符。${}仅仅为一个纯碎的string替换,在动态SQL解析阶段将会进行变量替换

2017-03-29 19:50:18 381

原创 jvm垃圾收集器配置-2

-XX:+CMSIncrementalMode

2016-07-18 22:10:09 578

原创 springmvc支持json和jsonp类型数据

在使用springmvc开发rest接口的时候很方便,可以直接使用@ResponseBody注解,直接加在springmvc的控制器类的方法上,springmvc会直接为我们将返回的对象序列化成为json类型的数据,

2016-07-14 14:31:47 4563 1

原创 java堆外内存泄漏

java堆外内存泄漏最近有个系统在做压力测试,环境配置:4核CPU 8g内存 jdk1.6.0_25,jvm配置-server -Xms2048m -Xmx2048m 出现问题如下执行并发300人,压测持续1个小时内存使用率从20%上升到100%,tps从1100多降低到600多。

2016-07-14 13:53:01 14463

原创 jvm垃圾收集器配置-1

-XX:+UseSerialGC 开启单线程、Stop-The-World的新生代和老年代垃圾收集器。它是jvm中最古老而且最成熟的垃圾收集器,一般来说,只有在客户端java程序的时候才会使用该垃圾收集器,java堆都比较小,是client模式默认使用的垃圾收集器。-XX:+UseParallelGC 开启jvm的多线程、Stop-The-World的Throughput收集器。又被称为并行收集器。使用多线程利用多CPU来提高GC的效率,主要以达到一定的吞吐量为目标。不过只是在新生代使用多线程垃圾收集器,

2016-07-10 22:22:44 1045

原创 ThreadPoolExecutor详解-FixedThreadPool

FixedThreadPool类型的线程池由Executors创建

2016-07-10 18:20:01 10889

原创 Executor框架-Executors

ThreadPoolExecutor是Executor框架的一个主要实现类,是执行具体任务的实现类。该实现类有Executor中的工厂类Executors提供的静态工厂方法负责创建。主要静态方法看

2016-07-10 17:40:04 1205

原创 Executor框架简介

Executor框架主要有3大部分组成1、任务:包括被执行任务需要实现的接口,Runnable接口或Callable接口2、任务的执行:包括任务执行机制的核心接口Executor,以及继承自Executor的ExecutorService接口。Executor框架有两个关键类实现了ExecutorSerivce接口(ThreadPoolExecutor和ScheduledThreadPoolExecutor)3、异步计算的结果:包括接口Future和实现Future接口的FutureTask类

2016-07-10 10:20:20 357

原创 常用JVM参数配置

在java启动脚本的参数配置中经常会看到一些形如:-XX:<+|->name的jvm参数,表示开启或关闭某项特性或属性,+代表开启,-代表关闭,下面介绍一些常用的内存分配配置参数

2016-07-10 09:58:53 896

原创 多线程-CountDownLatch应用

CountDownLatch是jdk1.5版本之后的并发包中提供的可以实现join类似功能的实现类,比join的功能更多,使用更方便。CountDownLatch直接一个int类型的参数构成作为计算器,,然后我们通过CountDownLatch的引用调用countDown方法,计算器就会减1。而主线程则通过CountDownLatch提供的await方法进行阻塞,等待计数器减为0之后,则主线程停止阻塞,继续运行。当然如果主线程不想永远傻等下去,也可以传入超时时间和时间单位参数,等待超时时间结束后,主线程依

2016-07-04 21:50:14 565

原创 多线程-join的应用

如果我们有多个子任务需要用多线程来处理,但是主线程又需要等待所有子线程执行完成后在返回,最简单的做法就是使用线程的join方法。

2016-07-04 21:32:47 382

原创 java原子操作类-原子数组类

java还提供了通过原子方式更新数组里的某个元素,Atomic包提供了以下4个类。AtomicIntegerArray:原子更新整型数组里的元素AtomicLongArray:原子更新长整型数组里的元素AtomicReferenceArray:原子更新引用类型数组里的元素

2016-07-04 20:58:39 911

原创 java原子操作类-基本类型类

当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i之前拿到i的值都是1,这就是线程不安全的更新操作,通常我们可以采用synchronized来解决这个问题,但是效率比较低。

2016-07-03 22:39:47 2525

原创 java并发锁-Lock之队列同步器

Lock接口的实现基本上都是通过聚合了一个同步器的子类赖世雄线程的访问控制的。队列同步器AbstractQueuedSynchronizer是用来构建锁或者其他同步组件的基础框架,它内部使用了一个volatiole修饰的int类型的成员变量state来表示同步状态,通过内置的FIFO队列来完成资源获取线程的排队工作。

2016-07-03 18:20:18 1244

原创 java并发锁-Lock接口

并发锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,java主要依靠synchronized的关键字来实现多线程的同步功能。而从JDK1.5之后,并发包中新增了Lock接口来实现并发锁的功能,它提供了与synchronized关键字类似的同步功能,但是需要在使用时需要显示的获取锁和释放锁。与synchronized相比缺少了隐式的获取和释放锁的便捷性,但是却拥有了锁获取和释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronize

2016-07-02 22:19:15 731

原创 等待超时模式在数据库连接池中的使用

在常用的数据库连接池中就应用了等待超时模式,在代码示例中模拟从连接池中获取连接,使用和释放连接的过程。而客户端获取连接的过程被设定为等待超时的模式,也就是在超时时间内如果无法获取到可用连接,将会返回一个null、设定令劫持的大小为10个,然后通过条件客户端的线程数来模拟无法获取连接的场景。

2016-06-29 22:11:56 1928

原创 多线程-管道输入/输出流

管道输入/输出流和普通的文件输入/输出流或者网络输入/输出流不同之处在于,它主要用于线程直接的数据传输,而传输的媒介为内存。管道输入/输出流主要包括了如下4钟具体实现:PipedOutputStream、PipedInputStream、PipedReader和PipedWriter,前两种面向字节,后两种面向字符。对于Piped类型的流,必须要先进行绑定,也就是调用connect方法,如果没有将输入/输出流进行绑定,对应流的访问会抛出异常。

2016-06-28 22:43:57 1294

原创 wait notify notifyAll

等待通知机制是指一个线程A调用了某个对象的wait的方法后进行等待状态,而另一个线程B调用了该对象的notify或者notifyAll方法,线程A收到通知后从对象的wait方法返回,进而执行后续操作,上述两个线程通过对象来完成交互,而对象上的wait和notify/notifyAll的关系就如同开关信号一样,用来完成等地方和通知方直接的交互工作。示例代码如下

2016-06-28 22:16:00 312

原创 volatile的应用

java编程语言允许线程访问共享变量,为了能够确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单点获得这个变量。java语言提供了volatile关键字,在某些情况下比锁要更加方便。如果一个自动被声明为volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。

2016-06-26 15:06:24 384

原创 利用nginx proxy_cache进行网站缓存托底配置

众所周知nginx proxy_cache可以对请求的response进行缓存,起到类似CDN的作用,甚至有比CDN提供更多的功能,还可以用来缓存托底数据,当后台tomcat挂掉的时候,nginx直接将缓存中的托底数据返回给用户。

2016-05-18 16:48:22 6993

原创 nginx proxy_cache配置说明

#定义代理缓存路径 ,缓存文件保存路径 缓存初始大小和最大值 缓存时间proxy_cache_path d:\code\cache levels=1:2 keys_zone=cache1:10m max_size=20m inactive=1m;        location / {#配置上面定义的keys_zone的值proxy_cache cache1;

2016-05-17 21:23:04 495

转载 动态缓存技术之CSI,SSI,ESI

平时我们谈页面,大都数是以页面为单位的。 一、CSI (Client Side Includes) 含义:通过iframe、javascript、ajax等方式将另外一个页面的内容动态包含进来。 原理:整个页面依然可以静态化为html页面,不过在需要动态的地方则通过iframe,javascript或ajax来动态加载! 例子: 优点:相对比较简单,不需要服务器端做改变和配置;

2015-06-03 17:04:39 570

原创 使用Java VisualVM监控远程JVM

我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面从左边Applications树中可以知道,不

2015-05-06 13:14:04 397

原创 springMVC中自定义json中数据类型

网站开发中,大家经常使用ajax请求返回json数据到前台给js使用,但是对于java中long类型的数据,如果通过json传递到前台js中时,由于js的精度不够,会造成long类型的数据丢失后面几位。所以在返回前台json数据时,我们需要把long类型的数据转成string类型的数据,这样就可以在js中丢失精度。还有java中Date类型的日期,我们需要返回json时,按照自己的日期格式就Dat

2015-04-29 15:06:23 2272

原创 springMVC实现全局异常处理

你还在为控制器和service层中的try catch代码段感到烦恼吗,每写一个方法,都要进行try catch或者抛异常处理,然而捕获到异常之后的处理无非就是告诉用户,后台程序出错了,如果请求的是页面,则返回用户一个错误页面,告诉用户后台程序出错了,如果是ajax请求呢,则要返回一个错误代码,告诉前端程序,后台运行出错了。所以综上所属,无论后台出现什么样的异常,我们只需要在后台记录下异常日志。然

2015-04-29 14:38:54 448

原创 HTTP响应代码中文详解

1xx - 信息提示这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。 · 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新) · 101 - Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新) 2xx - 成功这类状态代码表

2015-04-24 09:34:05 577

原创 mybatis中传入String类型参数异常

Mybatis查询sql传入一个字符串传参数,报There is no getter for property named 'ids' in 'class java.lang.String'。

2015-04-22 10:14:12 17673 1

原创 SpringMVC设置默认请求首页

做web项目的时候,上线部署都是通过域名之间访问的,也就是访问路径没有上下文,原来设置web项目的默认首页的时候在web.xml中可以直接指定静态HTML页面和jsp页面,代码如下 /index.html 但是,welcome-file-list一般情况下只能使用静态网页,如果非要把他配置成SpringMVC的控制器URL就会报错。所以又会有另一种实现

2015-04-16 12:49:27 2167

原创 netty服务端开发-绑定监听

上一篇文章介绍了服务端的消息处理,这篇文章则主要介绍端口监听、连接的建立和消息处理类的注册使用等,直接贴上demo代码package com.jd.time.server;import com.jd.time.handler.TimeServerHandler;import io.netty.bootstrap.ServerBootstrap;import io.netty.chann

2015-04-11 11:00:53 9289 1

原创 netty服务端开发-I/O处理

使用netty开发服务端程序,主要包括一个服务端程序类,主要负责监听端口,建立连接;还有一个服务端数据处理类,负责处理服务端接收到的业务数据,并进行响应,先贴上一段负责处理接收数据的demo类package com.jd.time.handler;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;impor

2015-04-11 10:44:38 701

原创 java反射工具类

Java反射工具类,有时候可能会用到package com.framelib.utils;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Modifier;

2015-04-02 23:08:47 615

原创 java读取properties文件

Java项目经常使用properties文件,提供一个读取properties文件工具类,可以方便获取文件内容,package com.framelib.utils;import java.io.IOException;import java.io.InputStream;import java.util.Properties;import org.slf4j.Logger;im

2015-04-02 23:05:37 545

原创 http请求工具类

本工具类是根据apache的开源框架httpClient4基础上进行封装的,可以很方便的使用!直接贴上代码package com.framelib.utils;import java.io.BufferedInputStream;import java.io.IOException;import java.io.UnsupportedEncodingException;import

2015-04-02 22:47:34 547

原创 遍历Map方法汇总

public static void main(String[] args) { Map map = new HashMap(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "value3"); //第一种:普遍使用,二次取值 System.out.println("通过Map.key

2015-04-02 19:08:29 294

原创 本地缓存工具类

项目中经常可能需要用到本地缓存来提高效率,自己写缓存又太麻烦,而且还有内存溢出的问题。本工具类是通过goole的开源框架Guava来实现的本地缓存,使用方式很简单,可以自己进行扩展。当缓存达到最大值时,会自动根据lru算法对数据进行淘汰。package com.jd.crius.cache.local;import com.google.common.cache.CacheBuilder;

2015-03-27 10:11:07 662

原创 Guava cache实现本地缓存

缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的瓶颈出现。缓存的作用就是将这些来自不易的数据保存在内存中,当有其他线程或者客户端需要查询相同的数据资源时,直接从缓存的内存块中返回数据,这样不但可以提高系统的响应时间,同时也可以节省对这些数据的处理流程的资源消耗,整体上来说,系统性能会有大大

2015-03-26 14:50:19 1216

原创 java解压缩工具类

啥也不说了,直接上代码,使用很方便,不过需要添加依赖jar包antant1.6.5代码如下package com.jd.heads.common.utils;import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.File; import jav

2015-03-25 14:37:46 506

原创 java导出Excel工具类

springmvc通过excel工具类实现的excel导出功能。

2015-03-25 10:30:33 2742

原创 通配符比较工具类

项目中经常会用到通配符匹配的功能,虽然写法没有那么负责,但是spring已经给我们提供好了一个用于通配符匹配的工具类,我们可以不用再重复造轮子,以免出现各种bug,可以直接使用该类。该类位于spring-core.jar包中,该类是一个抽象类,可以方便开发人员自己进行继承和扩展。具体代码如下:packageorg.springframework.util; /*

2015-03-25 10:06:27 650

mybatis分页配置

mybatis分页的配置方法,可以实现物理分页

2014-12-10

mybatis代码生成工具

mybatis代码生成工具,可以直接生成mapper,sql配置文件

2014-12-10

开发框架-springmvc,mybatis

springmvc/spring/mybatis

2014-12-10

Java通过内容模板发送邮件,支持附件

支持通过模板定义邮件内容然后发送邮件,这是一个工具栏,打包后即可使用

2014-06-28

空空如也

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

TA关注的人

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