代码改变世界

随笔分类 -  java

【转】DataSource高级应用

2014-02-21 16:50 by Loull, 382 阅读, 收藏, 编辑
摘要: 我们知道 DataSource能提供最高性能的对数据库的并发访问,但是,对DataSource的引用,也还有很多知识要弄清楚,获取Connection的方式是数据库性能最相关的技术,而对DataSource的调用对数据库性能起着很大的决定作用。一般对于DataSource的引用是通过以下流程来进行: Context ct = new InitialContext(); DataSource ds = (DataSource) ct.lookup(sourceUrl); 就这么简单的两行,但其调用条件不同却可以产生性能上巨大的差别。因为一个取得Connect的封装类(Bean)要对DataSo. 阅读全文

java中DriverManager跟DataSource获取getConnection有什么不同?

2014-02-21 14:42 by Loull, 6174 阅读, 收藏, 编辑
摘要: 1、datasource是与连接池获取连接,而DriverManager是获取与数据库的连接!DriverManager类的主要作用是管理注册到DriverManager中的JDBC驱动程序,并根据需要使用JDBC驱动程序建立与数据服务器的网络连接。但是建立与数据库的连接是一项较耗资源的工作,频繁的进行数据库连接建立操作会产生较大的系统开销,为了解决上述问题,可以采用数据库连接池技术。2、datasource内部封装了DriverManager的使用。。。DataSource主要是为了方便配置使用。。。作为OO概念上也需要有这个类和对象来表示数据的来源。。。3、c3p0是一个连接池同样常用还有 阅读全文

理解JDBC和JNDI

2014-02-21 14:24 by Loull, 1939 阅读, 收藏, 编辑
摘要: 下面的英文是我找过来的,因为是英文所以不敢翻译出来误导别人,但是它描述的确实恰到好处,比所谓网上的JNDI和JDBC云云的解释要精辟很多,如果遇到不认识的单词,用有道吧~~:)The Java Naming and Directory Interface (JNDI) is an application programming interface (API) for accessing different kinds of naming and directory services. JNDI is not specific to a particular naming or director 阅读全文

JDBC

2014-02-21 13:54 by Loull, 331 阅读, 收藏, 编辑
摘要: 一、什么是JDBC? Java语言访问数据库的一种规范,是一套API JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库。比如建立数据库连接、执行SQL语句进行数据的存取操作。 JDBC规范采用接口和实现分离的思想设计了Java数据库编程的框架。接口包含在java.sql及javax.sql包中,其中java.sql属于JavaSE,javax.sql属于JavaEE。这些接口的实现类叫做数据库驱动程序,由数据库的厂商或其它的厂商或个人... 阅读全文

java 笔记(5) —— 线程,yield,join

2014-01-13 16:47 by Loull, 875 阅读, 收藏, 编辑
摘要: 一、线程各个状态与转换:新建状态:用new语句创建的线程对象处于新建状态,此时它和其它的java对象一样,仅仅在堆中被分配了内存 。就绪状态:当一个线程创建了以后,其他的线程调用了它的start()方法,该线程就进入了就绪状态。处于这个状态的线程位于可运行池中,等待获得CPU的使用权运行状态:处于这个状态的线程占用CPU,执行程序的代码阻塞状态:当线程处于阻塞状态时,java虚拟机不会给线程分配CPU,直到线程重新进入就绪状态,它才有机会转到运行状态。阻塞状态的三种情况1、 位于对象等待池中的阻塞状态:当线程运行时,如果执行了某个对象的wait()方法,java虚拟机就回把线程放到这个对象的等 阅读全文

java 笔记(4) —— java I/O 流、字节流、字符流

2014-01-11 19:51 by Loull, 401 阅读, 收藏, 编辑
摘要: Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节。JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据,而字符流主要用于处理文本字符等类型的输入输出。流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。流分为字节流和字符流。字节流也称为原始数据,需要用户读入后进行相应的编码转换。而字符流的实现是基于自 阅读全文

Java命令参数说明大全

2014-01-11 19:29 by Loull, 1111 阅读, 收藏, 编辑
摘要: Java 在运行已编译完成的类时,是通过 java 虚拟机来装载和执行的,java 虚拟机通过操作系统命令 JAVA_HOME\bin\java –option 来启动,-option 为虚拟机参数,JAVA_HOME 为JDK安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握参数的含义可对虚拟机的运行模式有更深入理解。一、 查看参数列表:虚拟机参数分为基本和扩展两类,在命令行中输入 JAVA_HOME\bin\java 就可得到基本参数列表,在命令行输入 JAVA_HOME\bin\java –X 就可得到扩展参数列表。二、 基本参数说明:1. -client,-server这两个参数 阅读全文

java 笔记(3) —— 动态代理,静态代理,cglib代理

2014-01-11 19:05 by Loull, 724 阅读, 收藏, 编辑
摘要: 0、代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口。代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的... 阅读全文

java 笔记(2) —— 内部类的作用

2014-01-11 18:20 by Loull, 333 阅读, 收藏, 编辑
摘要: 一、内部类简介个人觉得内部类没多少研究价值,GUI中的事件响应算是非常典型的应用了。Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理。其实,做非GUI编程,内部类完全可以不用。内部类的声明、访问控制等于外部类有所不同,要灵活使用内部类来编写程序,还是有相当难度的,Java发明了这种难懂的玩意儿,在其他语言中是没有的,但是在Java中,内部类也相当的重要,尤其做GUI开发时候,事件的响应处理全靠内部类了。内部类所做的功能使用外部类也同样可以实现,只是有时候内部类做的更巧妙些。内部类按照其所在位置不同,可分为以下几种:1、(普通的)内部类(最常见的内部类 阅读全文

java 笔记(1)-—— JVM基础,内存数据,内存释放,垃圾回收,即时编译技术JIT,高精度类型

2014-01-11 15:41 by Loull, 1147 阅读, 收藏, 编辑
摘要: 1、java中5个存放数据的地方:(1).寄存器(Registers):位于CPU内部,是速度最快的存储区,但是数量和容量有限。在java中不能直接操作寄存器。(2).栈(Stack):栈位于通用随机访问存储器 (General random-access memory,RAM,内存) 中,通过处理器的栈指针访问,栈指针从栈顶向栈底分配内存,从栈底向栈顶释放内存。栈是仅次于寄存器的速度第二快的存储器,在java程序中,一般的8种基本类型数据和对象的引用通常存放在栈内存中,不通过new关键字的字符串对象也是存放在栈的字符串池中。栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是 阅读全文

JAVA字符串的GZIP压缩解压缩

2013-12-13 12:32 by Loull, 15497 阅读, 收藏, 编辑
摘要: package com.gzip;import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; // 将一个字符串按照zip方式压缩和解压缩 public class ZipUtil2 { // 压缩 public static String compress(... 阅读全文

kmeans聚类源代码

2013-12-06 19:12 by Loull, 1008 阅读, 收藏, 编辑
摘要: 代码是在weka上二次开发的,但没有使用原来的kmeans代码,只是用了它的数据类Intances,先说下与它相关的几点东西。一、KMeans算法简介输入:聚类个数k,以及包含n个数据对象的数据库。输出:满足方差最小标准的k个聚类。处理流程:(1)从n个数据对象任意选择k个对象作为初始聚类中心.(2)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;(3)重新计算每个(有变化)的聚类的均值。(4)重复(2)(3),直到聚类不发生改变。划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相 阅读全文

java map.entry

2013-12-04 17:19 by Loull, 393 阅读, 收藏, 编辑
摘要: 我希望要一个ArrayList,类似C++中的pair,但是Map.Entry是个接口,不能实例化,可以像下面这样写HashMap G = new HashMap();G.put(1, 9); G.put(4, 6); G.put(2, 8);G.put(3, 7); ArrayList> arrayList = new ArrayList(G.entrySet());但是这个map完全不是我需要的,然后看到这里http://stackoverflow.com/questions/3110547/java-how-to-create-new-entry-key-value... 阅读全文

java生成验证码

2013-11-23 15:12 by Loull, 310 阅读, 收藏, 编辑
摘要: import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.IOException;import java.util.Random;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletResponse;public class RandImgCreater { //默认字符列表 private static final Stri... 阅读全文

JavaWeb 服务启动时,在后台启动加载一个线程

2013-11-11 19:05 by Loull, 406 阅读, 收藏, 编辑
摘要: JavaWeb 服务启动时,在后台启动加载一个线程。目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet。下面对这两种方法做一简单的介绍,(Mark一下,防止以后急用又忘记了):1、监听(Listener)首先,我们创建一个监听的类,继承ServletContextListener,如下:package com.wxp.thread;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;/** * Listener的方式在 阅读全文

Java多线程的下载器(1)

2013-11-06 11:13 by Loull, 831 阅读, 收藏, 编辑
摘要: 实现了一个基于Java多线程的下载器,可提供的功能有:1. 对文件使用多线程下载,并显示每时刻的下载速度。2. 对多个下载进行管理,包括线程调度,内存管理等。一:单个文件下载的管理1. 单文件下载类层次首先简要介绍一下单个文件下载管理的类层次:来一张图来表示。为需要下载的文件创建一个Download类,Download负责管理该文件下载时的线程管理、文件管理、当前速度计算等操作。根据线程的数目tNum,将该文件分为tNum段,每段为一个DownloadBlock。在实际下载的过程中,并不是一次把所有的东西下载完,而是每次下载固定size的一段Di。所以每个DownloadBlock又会分成n段 阅读全文

ArrayList序列化

2013-09-25 15:11 by Loull, 1268 阅读, 收藏, 编辑
摘要: ArrayList源代码中的private transient E[] elementData; 声明为transient,为什么还可以序列化成功呢?ArrayList重写了private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ int expectedModCount = modCount; // Write out element count, and any hidden stuff s.defaultWriteObject(); ... 阅读全文

Java序列化总结

2013-09-25 15:05 by Loull, 457 阅读, 收藏, 编辑
摘要: 什么是序列化? 序列化是将对象的状态信息转化为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后可以通过存储区中读取或反序列化对象的状态重新创建对象。 为什么要序列化? 有两个最重要的原因促使对序列化的使用:一个原因是将对象的状态保持在存储媒体中,以便可以在以后重新创建精确的副本;另一个原因是通过值将对象从一个应用程序域发送到另一个应用程序域中。例如,在网络中传输的数据都必须要序列化。 Java中的序列化 Java中的序列化机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输或者持久化存储到数据库或文件系统中,然后... 阅读全文

【java】System.out重定向到文件,并重定向会console上

2013-09-09 01:20 by Loull, 1315 阅读, 收藏, 编辑
摘要: 重定向到文件:System.setOut(new PrintStream(new File("data\\train.1.scale")));重定向回console://把输出重定向会console上System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out))); 阅读全文

Java陷阱之assert关键字

2013-09-05 13:19 by Loull, 756 阅读, 收藏, 编辑
摘要: Java陷阱之assert关键字一、概述在C和C++语言中都有assert关键,表示断言。在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。二、语法在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候,所有的断言语句都 将忽略!),如果要开启断言检查,则需要用开关-enableassertions或-ea来开启。assert关键字语法很简单,有两种用法:1、assert 如果为true,则程序继续执行。如果为false,则程序抛出Asser 阅读全文