自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 oracle数据类型和对应的java类型

SQL数据类型 JDBC类型代码标准的Java类型Oracle扩展的Java类型 1.0标准的JDBC类型:  CHARjava.sql.Types.CHARjava.lang.Stringoracle.sql.CHARVARCHAR2java.sql.Types.VARCHA...

2016-11-02 14:51:38 206

原创 PL/SQL开发 触发器调用java程序

1、创建java程序create or replace and compile java source named sms as import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import...

2014-11-07 10:58:31 200

原创 大数据

http://sishuok.com/forum/blogPost/list/5337.html

2014-02-27 21:49:47 162

原创 Oracle性能调优

前言 这次,我们将在Linux下来动手完成Oracle数据库的安装与使用。Oracle本身是可以免费下载的包括 它的企业版以及被它收购的Weblogic和Sun中的几乎任何东西你都可以拿来下载和使用,不像IBM和Tibco一些其它厂商,只有“试用版”给你下载,Oracle的东西没有时间限制,你拿来做练习,搭实验环境都是没有任何的问题的。但是,如果你出了问题,需要用到Oracle的...

2013-11-07 08:56:43 251

原创 性能调优

性能测试的目标性能测试不同于功能测试,不是对与错的检验,而是快与慢的衡量。在进行真正的性能测试之前要先搞清楚目标:1. 在确定的硬件条件下,可以支持的并发数越大越好,响应时间越快越好。具体需要达到的并发数是多大,要求的响应时间是多快,由产品经理来提出。2. 在确定的硬件条件下,测试得到最大并发数和相应的响应时间之后。如果增加硬件投入,可以得到怎样的性能提升回报? (系统扩展性和伸缩性...

2013-09-29 11:06:46 84

原创 java 堆和栈的区别

Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等 指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时 动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,...

2013-08-31 09:41:52 76

原创 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题

一.概述 定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。 二. 类的加载方式 1):本地编译好的class中直接加载2):网络加载:java.net.URLClassLoader可以加载url指定的类3):从jar、zip等等压缩文...

2013-08-31 09:41:42 88

原创 深入JVM系列(二)之GC机制、收集器与GC调优

一、回顾JVM内存分配 需要了解更多内存模式与内存分配的,请看 深入JVM系列(一)之内存模型与内存分配  1.1、内存分配:1、对象优先在EDEN分配2、大对象直接进入老年代 3、长期存活的对象将进入老年代 4、适龄对象也可能进入老年代:动态对象年龄判断动态对象年龄判断:虚拟机并不总是要求对象的年龄必须达到MaxTenuringThreshold才能晋升到老年...

2013-08-30 16:53:24 101

原创 深入JVM系列(一)之内存模型与内存分配

一、JVM内存区域划分 大多数 JVM 将内存区域划分为 Method Area(Non-Heap),Heap,Program Counter Register, Java Method Stack,Native Method Stack 和Direct Memomry(注意 Directory Memory 并不属于 JVM 管理的内存区域)。前三者一般译为:方法区、堆、程序计数器。...

2013-08-30 16:53:00 75

原创 Java多线程(十二)之线程池深入分析(下)

一、数据结构与线程构造方法 由于已经看到了ThreadPoolExecutor的源码,因此很容易就看到了ThreadPoolExecutor线程池的数据结构。图1描述了这种数据结构。图1 ThreadPoolExecutor 数据结构其实,即使没有上述图形描述ThreadPoolExecutor的数据结构,我们根据线程池的要求也很能够猜测出其数据结构出来。线程池需要支...

2013-08-30 16:52:35 157

原创 Java多线程(十一)之线程池深入分析(上)

线程池是并发包里面很重要的一部分,在实际情况中也是使用很多的一个重要组件。下图描述的是线程池API的一部分。广义上的完整线程池可能还包括Thread/Runnable、Timer/TimerTask等部分。这里只介绍主要的和高级的API以及架构和原理。大多数并发应用程序是围绕执行任务(Task)进行管理的。所谓任务就是抽象、离散的工作单元(unit of work)。把一个应用程序...

2013-08-30 16:52:09 94

原创 Java多线程(九)之ReentrantLock与Condition

一、ReentrantLock 类 1.1 什么是reentrantlock java.util.concurrent.lock 中的 Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现。这就为 Lock 的多种实现留下了空间,各种实现可能有不同的调度算法、性能特性或者锁定语义。 ReentrantLock 类实现了 Lock ...

2013-08-30 16:51:52 75

原创 Java多线程(十)之ReentrantReadWriteLock深入分析

一、ReentrantReadWriteLock与ReentrantLock    说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。ReentrantLock 实现了标准的互斥操作,也就是一次只能有一个线程持有锁,也即所谓独占锁的概念。前面的章节中一直在强调这个特点。显...

2013-08-28 09:47:58 76

原创 Java多线程(八)之Semaphore、CountDownLatch、CyclicBarrier、Exchanger

一、引言 Semaphore               :一个计数信号量CountDownLatch          :一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 CyclicBarrier           :一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点    Exchanger         ...

2013-08-28 09:46:56 86

原创 Java多线程(七)之同步器基础:AQS框架深入分析

一、什么是同步器 多线程并发的执行,之间通过某种 共享 状态来同步,只有当状态满足 xxxx 条件,才能触发线程执行 xxxx 。 这个共同的语义可以称之为同步器。可以认为以上所有的锁机制都可以基于同步器定制来实现的。  而juc(java.util.concurrent)里的思想是 将这些场景抽象出来的语义通过统一的同步框架来支持。juc 里所有的这些锁机制都...

2013-08-28 09:46:30 102

原创 Java多线程(六)之Deque与LinkedBlockingDeque深入分析

一、双向队列Deque Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque。这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂。下图描述的是Deque的完整体系图。需要说明的是LinkedList也已经加入了Deque的一部分(LinkedList是从jdk1.2 开始就存在数据结构)。 Deque在Queue的基础上增...

2013-08-28 09:45:53 82

原创 java线程安全、同步、协作、Timer和TimerTask、线程池

当我们查看JDK API的时候,总会发现一些类说明写着,线程安全或者线程不安全,比如说StringBuilder中,有这么一句,“将StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用StringBuffer。 ”,那么下面手动创建一个线程不安全的类,然后在多线程中使用这个类,看看有什么效果。 Count.java:public class...

2013-08-28 09:44:00 355

原创 Java多线程(五)之BlockingQueue深入分析

一、概述:BlockingQueue作为线程容器,可以为线程同步提供有力的保障。  二、BlockingQueue定义的常用方法 1.BlockingQueue定义的常用方法如下: 抛出异常特殊值阻塞超时插入add(e)offer(e)put(e)offer(e, time, unit)移除remove(...

2013-08-26 15:32:24 79

原创 Java多线程(四)之ConcurrentSkipListMap深入分析

一、前言 concurrentHashMap与ConcurrentSkipListMap性能测试在4线程1.6万数据的条件下,ConcurrentHashMap 存取速度是ConcurrentSkipListMap 的4倍左右。但ConcurrentSkipListMap有几个ConcurrentHashMap 不能比拟的优点:1、ConcurrentSkipListMap ...

2013-08-26 15:31:54 162

原创 Java多线程(三)之ConcurrentHashMap深入分析

一、Map体系Hashtable是JDK 5之前Map唯一线程安全的内置实现(Collections.synchronizedMap不算)。Hashtable继承的是Dictionary(Hashtable是其唯一公开的子类),并不继承AbstractMap或者HashMap。尽管Hashtable和HashMap的结构非常类似,但是他们之间并没有多大联系。ConcurrentHa...

2013-08-26 15:31:10 73

原创 Java多线程(二)之Atomic:原子变量与原子类

一、何谓Atomic?  Atomic一词跟原子有点关系,后者曾被人认为是最小物质的单位。计算机中的Atomic是指不能分割成若干部分的意思。如果一段代码被认为是Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中断,直到其执行完成)  在x86 平台上,CPU提供了在指令执行期间对总线加锁...

2013-08-26 15:30:28 71

原创 Java多线程(一)之volatile深入分析

volatile 变量提供了线程的可见性,并不能保证线程安全性和原子性。什么是线程的可见性: 锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数...

2013-08-26 15:29:54 76

原创 Java并发编程: 使用Exchanger实现线程间的数据交换

本文介绍Exchanger工具类, 然后采用Exchanger给出一个两个线程交换数值的简单实例。 1. Exchanger介绍 Java代码  /**  * A synchronization point at which two threads can exchange objects.  * Each thread presents some object o...

2013-08-25 17:32:53 113

原创 同步和异步与阻塞和非阻塞的区别

同步和异步与阻塞与非阻塞是在通信和I/O中常用的字眼,之前在许多地方同步与阻塞,异步与非阻塞常常被混为一谈,带来了许多混乱,其实同步、异步和阻塞、非阻塞是两个不同的概念。最近随着异步IO(AIO)越来越多的应用,对这两个概念进行区分和解释的文章也越来越多,但是问起身边的同学,能说清楚的倒也不多,所以我就顺便跟风写一篇科普文吧(越来越水了=_=)。同步(synchronous)和异步(asyn...

2013-08-25 17:32:30 67

原创 Java并发编程: 使用Semaphore限制资源并发访问的线程数

本文将介绍用来控制资源同时访问个数的Semaphore工具类, 然后采用Semaphore给出一个泊车的实例,最后给出Semaphore和CountDownLatch的几点比较. 1. Semaphore工具类介绍 Java代码  /**  * A counting semaphore.  Conceptually, a semaphore maintains a ...

2013-08-24 08:18:04 236

原创 Java并发编程: Volatile不能保证数据同步

在本篇博文中,将给出一个实例去验证volatile修饰的变量并不能保证其数据同步. Java内存模型规定了所有变量都存储在主内存中,每条线程都有自己的工作内存,线程的工作内存保存了被该线程使用到变量的主内存副本拷贝,线程对变量的所有操作(读取,赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程也不能直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,线程...

2013-08-24 08:17:28 259

原创 Java并发编程: CyclicBarrier让多线程齐步走

以前在<<编写高质量代码-改善Java程序的151个建议>>一书中看到有一节的标题是“CyclicBarrier让多线程齐步走”,觉得这标题挺不错的,所以在写这篇博文的时候也采用了这个名字。 本文首先会介绍CyclicBarrier辅助工具类,其次将用CyclicBarrier工具类来完成一个实例,最后将给出CyclicBarrier和CountDownLatch的几点...

2013-08-24 08:16:29 142

原创 Java并发编程: 使用CountDownLatch协调子线程

本文将介绍CountDownLatch工具类,并采用这个工具类给出一个实例。 1. CountDownLatch工具类介绍 CountDownLatch是一个同步工具类,它允许一个或多个线程处于等待状态直到在其它线程中运行的一组操作完成为止。CountDownLatch用一个给定的计数来实现初始化。Await方法会一直处于阻塞状态,直到countDown方法调用而使当前计数达到零。当计数为零之...

2013-08-24 08:15:19 112

原创 Java并发编程-Executor框架+实例

Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。运用该框架能够很好的将任务分成一个个的子任务,使并发编程变得方便。该框架的类图(方法并没有都表示出来)如下: 创建线程池的介绍,摘自http://...

2013-08-24 08:14:23 266

原创 java中堆和堆栈的区别

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。    2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共 享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集...

2013-08-23 10:47:46 114

原创 Java内存泄露原因详解

一、Java内存回收机制 不论哪种语言的内存分配方式,都需要返回所分配内存的真实地址,也就是返回一个指针到内存块的首地址。Java中对象是采用new或者反射的方法创建的,这些对象的创建都是在堆(Heap)中分配的,所有对象的回收都是由Java虚拟机通过垃圾回收机制完成的。GC为了能够正确释放对象,会监控每个对象的运行状况,对他们的申请、引用、被引用、赋值等状况进行监控,Java会使用有向图的方法...

2013-08-23 10:47:24 67

原创 JVM加载class文件的原理机制

1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中 2.java中的类大致分为三种:     1.系统类     2.扩展类     3.由程序员自定义的类 3.类装载方式,有两种     1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中,  ...

2013-08-23 10:46:29 82

原创 java.util.ResourceBundle使用详解

一、认识国际化资源文件 这个类提供软件国际化的捷径。通过此类,可以使您所编写的程序可以:         轻松地本地化或翻译成不同的语言         一次处理多个语言环境         以后可以轻松地进行修改,支持更多的语言环境 说的简单点,这个类的作用就是读取资源属性文件(properties),然后根据.properties文件的名称信息(本地化信息),匹配...

2013-08-23 09:21:29 77

原创 java代理

一、代理类 代理类的概念与作用: 1、 作用:      要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,      例如:异常处理,日志,计算方法的运行时间,事务管理等等。2、 实现方式:        编写一个与目标类具有相同接口的代理类(容易实现已实现类的切换), 代理类的每个方法调用目标类的相同方法,并在调用方法时加上        系统...

2013-08-23 09:09:37 86

原创 谈谈分布式事务(Distributed Transaction)[共5篇]

   http://rdc.taobao.com/blog/cs/?cat=81  http://ray-yui.iteye.com/blog/1928170

2013-08-21 22:19:51 243

原创 关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究...

1.XA XA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁。XA之所以需要引入事务管理器...

2013-08-21 22:17:14 85

原创 JTA 深度历险 - 原理与实现

利用 JTA 处理事务什么是事务处理事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元人民币转移到用户 B 的账户中,其操作流程如下 1. 将 A 账户中的金额...

2013-08-21 22:16:05 63

原创 自适应网页设计(Responsive Web Design)

随着3G的普及,越来越多的人使用手机上网。移动设备正超过桌面设备,成为访问互联网的最常见终端。于是,网页设计师不得不面对一个难题:如何才能在不同大小的设备上呈现同样的网页?手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果,并不是一件容易...

2013-08-19 10:49:39 67

原创 数据库连接池技术

连接池原理连接池技术的核心思想是:连接复用,通过建立一个数据库连接池以及一套连接使用、分配、治理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。另外,由于对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的使用(非凡是对于事务处理),提高了开发效率,也正是因为这个封装层的存在,隔离了应用的本身的处理逻辑和具体数据库访问逻辑,使应用本身的...

2013-08-15 22:00:05 80

原创 JDBC连接池的并发设计

Apache Tomcat 7系列的版本中使用了JDBC Connection Pool替代传统的commons-dbcp作为新的数据库连接池。其中很重要的一个原因是,commons-dbcp是单线程的,为了保证线程安全它必须将整个线程池上锁,并且它在对高并发的支持方面表现很差。JDBC Connection Pool一个很重要的新特性就是它对高并发环境和多核/多处理器系统的支持。下面将通过对...

2013-08-15 21:59:55 708

空空如也

空空如也

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

TA关注的人

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