今天写了个简单连接数据库的程序,在远程连接mysql 时发现明显慢,后来登录mysql后查看当前连接情况,命令如下:
mysql>show processlist;
发现大量的unauthenticated user信息,如下图:
经搜索知道是因为mysql开启了反向[……]
继前两文介绍了dbcp、c3p0的使用,本文准备再介绍另一个连接池的应用:proxool
c3p0的介绍可参见:http://www.micmiu.com/j2ee/jdbc-tech/c3p0-simple
dbcp的介绍可参见:http://www.micmiu.com/j2ee/jdb[……]
继上一篇介绍dbcp的配置,本文重点介绍下c3p0的配置及实例演示。
DBCP的配置可以参见:http://www.micmiu.com/j2ee/jdbc-tech/apache-dbcp-simple
proxool的配置介绍也已经发表:http://www.micmiu.com/j[……]
本文主要介绍apache-dbcp基本参数配置和应用示例,dbcp目前最新版是1.4需要在jdk1.6的环境下运行,如果要在jdk1.4、1.5环境下运行,需要下载前一版本1.3,具体详细可以查看它的官网。
本文结构目录分两大部分:
在项目中经常会用到IP(v4)范围判定比较的功能,一般将IP转化为整数再进行比较。
一、基本知识点
IP ——> 整数:
整数 ——> IP:
java.util.concurrent.ThreadPoolExecutor相关基础介绍和使用示例。
[ 一 ]、常用线程池
最常用构造方法为:
1 2 3 4 5 6 |
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler) |
JDK自带的配置好的线程池:
[crayon-6767a1d7c33[……]
hibernate 配置启动报错,错误信息如下:
1 2 3 |
org.hibernate.HibernateException: No CurrentSessionContext configured! at org.hibernate.impl.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:540) at michael.jdbc.c3p0.C3p0HibernateExample.main(C3p0HibernateExample.java:31) |
解决办法:在配置文件:hibernate.cfg.xml 添加属性:current_session_context_class
[crayon-6767a1d7c3b423520[……]
代码及注释如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
package michael.utils; /** * 获取classpath和当前类的绝对路径的一些方法 * @see http://www.micmiu.com * @author michael sjsky007@gmail.com */ public class ClasspathUtil { /** * @param args */ public static void main(String[] args) { // 一般推荐用此方法 // 获取当前ClassPath的绝对URI路径 System.out.println("Thread.currentThread().getContextClassLoader():"); System.out.println(Thread.currentThread().getContextClassLoader() .getResource("")); System.out.println("---------------------------------------"); System.out.println("ClasspathUtil.class.getResource:"); // 获取当前类文件的URI目录 System.out.println(ClasspathUtil.class.getResource("")); // 获取当前的ClassPath的绝对URI路径。 System.out.println(ClasspathUtil.class.getResource("/")); System.out.println("---------------------------------------"); System.out.println("ClasspathUtil.class.getClassLoader().getResource:"); // 获取当前ClassPath的绝对URI路径 System.out .println(ClasspathUtil.class.getClassLoader().getResource("")); System.out.println("---------------------------------------"); // 获取当前ClassPath的绝对URI路径 System.out.println("ClassLoader.getSystemResource:"); System.out.println(ClassLoader.getSystemResource("")); System.out.println("---------------------------------------"); System.out.println("System.getProperty:"); // 对于一般项目,这是项目的根路径。对于JavaEE服务器,这可能是服务器的某个路径。 // 这个并没有统一的规范!所以,绝对不要使用“相对于当前用户目录的相对路径”。 System.out.println(System.getProperty("user.dir")); System.out.println("---------------------------------------"); } } |
运行结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Thread.currentThread().getContextClassLoader(): file:/D:/J2EE_sjsky/current/06Coding/project/target/classes/ --------------------------------------- ClasspathUtil.class.getResource: file:/D:/J2EE_sjsky/current/06Coding/project/target/classes/michael/utils/ file:/D:/J2EE_sjsky/current/06Coding/project/target/classes/ --------------------------------------- ClasspathUtil.class.getClassLoader().getResource: file:/D:/J2EE_sjsky/current/06Coding/project/target/classes/ --------------------------------------- ClassLoader.getSystemResource: file:/D:/current/06Coding/project/target/classes/ --------------------------------------- System.getProperty: D:\J2EE_sjsky\current\06Coding\project --------------------------------------- |
近期评论