onefly

技术空间

使用Nginx缓存静态文件

使用Nginx缓存静态文件

2017-03-30 10:48:07

阅读数 2597

评论数 0

MyBatis中#和$的区别

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

2017-03-29 19:50:18

阅读数 213

评论数 0

jvm垃圾收集器配置-2

-XX:+CMSIncrementalMode

2016-07-18 22:10:09

阅读数 374

评论数 0

springmvc支持json和jsonp类型数据

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

2016-07-14 14:31:47

阅读数 4141

评论数 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

阅读数 8230

评论数 0

jvm垃圾收集器配置-1

-XX:+UseSerialGC 开启单线程、Stop-The-World的新生代和老年代垃圾收集器。它是jvm中最古老而且最成熟的垃圾收集器,一般来说,只有在客户端java程序的时候才会使用该垃圾收集器,java堆都比较小,是client模式默认使用的垃圾收集器。 -XX:+UseParalle...

2016-07-10 22:22:44

阅读数 803

评论数 0

ThreadPoolExecutor详解-FixedThreadPool

FixedThreadPool类型的线程池由Executors创建

2016-07-10 18:20:01

阅读数 8247

评论数 0

Executor框架-Executors

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

2016-07-10 17:40:04

阅读数 933

评论数 0

Executor框架简介

Executor框架主要有3大部分组成 1、任务:包括被执行任务需要实现的接口,Runnable接口或Callable接口 2、任务的执行:包括任务执行机制的核心接口Executor,以及继承自Executor的ExecutorService接口。Executor框架有两个关键类实现了Execut...

2016-07-10 10:20:20

阅读数 206

评论数 0

常用JVM参数配置

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

2016-07-10 09:58:53

阅读数 634

评论数 0

多线程-CountDownLatch应用

CountDownLatch是jdk1.5版本之后的并发包中提供的可以实现join类似功能的实现类,比join的功能更多,使用更方便。 CountDownLatch直接一个int类型的参数构成作为计算器,,然后我们通过CountDownLatch的引用调用countDown方法,计算器就会减1。而...

2016-07-04 21:50:14

阅读数 377

评论数 0

多线程-join的应用

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

2016-07-04 21:32:47

阅读数 271

评论数 0

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

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

2016-07-04 20:58:39

阅读数 419

评论数 0

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

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

2016-07-03 22:39:47

阅读数 1942

评论数 0

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

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

2016-07-03 18:20:18

阅读数 1014

评论数 0

java并发锁-Lock接口

并发锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。在Lock接口出现之前,java主要依靠synchronized的关键字来实现多线程的同步功能。而从JDK1.5之后,并发包中新增了Lock接口来实现并发锁的功能,它提供了与synchronized关键字...

2016-07-02 22:19:15

阅读数 483

评论数 0

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

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

2016-06-29 22:11:56

阅读数 1474

评论数 0

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

管道输入/输出流和普通的文件输入/输出流或者网络输入/输出流不同之处在于,它主要用于线程直接的数据传输,而传输的媒介为内存。 管道输入/输出流主要包括了如下4钟具体实现:PipedOutputStream、PipedInputStream、PipedReader和PipedWriter,前两种面向...

2016-06-28 22:43:57

阅读数 818

评论数 0

wait notify notifyAll

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

2016-06-28 22:16:00

阅读数 208

评论数 0

volatile的应用

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

2016-06-26 15:06:24

阅读数 293

评论数 0

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