
Java
文章平均质量分 81
micky2046
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
利用NIO建立Socket服务器
传统的Java 的IO,利用Socket建立服务器,接收客户端连接,一般都是为每一个连接建立一个线程,如果连接数巨大,那么服务器开销也将巨大。。NIO的原理,可以参照图:http://new.51cto.com/files/uploadimg/20080912/150103487.jpgSocket的Channel在Selector上注册某一种动作,Selector通过select操作,监视...2011-10-20 09:35:35 · 132 阅读 · 0 评论 -
有关Java序列化(三)——使用Externalizable
JDK中提供了另一个序列化接口--Externalizable,使用该接口之后,之前基于Serializable接口的序列化机制就将失效。Externalizable继承于Serializable,当使用该接口时,序列化的细节需要由程序员去完成。测试代码:import java.io.Externalizable;import java.io.IOException;impor...原创 2013-09-27 21:48:21 · 208 阅读 · 0 评论 -
有关Java序列化(二)
还是上一篇日志的测试代码:import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class Person implements Serializable { p...原创 2013-09-27 21:10:32 · 149 阅读 · 0 评论 -
有关Java序列化(一)
“序列化是将对象状态转换为可保持或可传输的格式的过程”。为什么要序列化,说的很清楚了,就是为了将对象状态进行持久化或者进行传输。注意这里说的是对象状态,所以只有对象的属性变量才会进行序列化,方法是不会序列化的。Java中所有实现Serializable接口的对象就表明是可序列化的。 示例代码:import java.io.Serializable;public class ...原创 2013-09-27 20:12:31 · 136 阅读 · 0 评论 -
使用Spring的事务管理----传播性和隔离性
在上面几篇日志配置Spring事务的时候都涉及到了事务的传播和隔离性,这里具体深入理解一下。当多个事务嵌套时,某个事务的propagation事务传播将会直接影响最终的执行效果。具体propagation的解释如下:propagation属性说明 REQUIRED 无论当前事务上下文中有没有事务,都会创建一个新的事务。也即逻辑需要在一个事务中运行,如果方法运行...原创 2014-07-18 16:46:42 · 214 阅读 · 0 评论 -
使用Spring的事务模板
整体的工程代码跟上一篇日志的工程差不多。服务类StudentService.java的代码如下:package com.mysrc.service;import java.sql.Date;import java.util.List;import org.springframework.transaction.TransactionStatus;import o...原创 2014-07-17 20:33:58 · 524 阅读 · 0 评论 -
使用Spring的声明式事务----AOP方式
类似于上一篇日志,这里使用AOP的方式来配置。工程结构:大部分代码跟上一个工程类似。 服务类StudentService.java代码如下:package com.mysrc.service;import java.sql.Date;import java.util.List;import com.mysrc.dao.StudentDao;imp...原创 2014-07-17 17:35:59 · 611 阅读 · 0 评论 -
使用Spring的声明式事务----Annotation注解方式
这里列一个小的demo工程,直接利用Spring的jdbcTemplate访问Mysql数据库。工程结构: 数据库中的tbl_student表结构如下: 数据实体类Student.java代码如下: package com.mysrc.entity;import java.sql.Date;public class Student { priva...原创 2014-07-17 17:15:15 · 1100 阅读 · 0 评论 -
Java处理正则表达式
Java本身的Util包里面就有提供处理正则表达式的工具类,当然还有很多第三方正则表达式处理包,反正到目前为止,用java.util.regex就已经能满足我的需求了。示例如下:import java.util.regex.Matcher;import java.util.regex.Pattern;public class Hello { public static vo...原创 2013-09-05 15:01:41 · 210 阅读 · 0 评论 -
Java线程通信实现生产者-消费者
生产者消费者是经典的线程之间同步通信问题,生产者线程只有在产品仓库中没有产品的时候才生产产品,当它生成完一个产品以后唤醒消费者线程,消费者线程只有在产品仓库中有产品的时候才能取走产品,然后唤醒生产者线程。Java可以有好几种方法解决这个问题。首先基础的当然是用Object的wait()、notify()和notifyAll()。产品仓库类://产品仓库public class ...原创 2013-09-04 20:02:22 · 185 阅读 · 0 评论 -
使用Java的BlockingQueue实现生产者-消费者
BlockingQueue也是java.util.concurrent下的主要用来控制线程同步的工具。BlockingQueue有四个具体的实现类,根据不同需求,选择不同的实现类1、ArrayBlockingQueue:一个由数组支持的有界阻塞队列,规定大小的BlockingQueue,其构造函数必须带一个int参数来指明其大小.其所含的对象是以FIFO(先入先出)顺序排序的。2、Li...原创 2013-09-04 16:00:58 · 620 阅读 · 0 评论 -
Java调用Python
今天遇到Java调用一个Python脚本的问题,纠结了大半天,遇到各种问题。网上搜索的大部分都是用jython,但是我想要调用的python脚本里有import urllib,这个urllib也不是什么第三方扩展库,在python的安装path下的Lib下就有,在python命令行下肯定是能找到的。但是用jython的话,sys的path里面就太少了。示例代码:import org.pyth...原创 2013-08-02 19:51:07 · 1145 阅读 · 0 评论 -
学习MongoDB(二)——用Java对数据库进行增删改查
MongoDB已经支持很多种语言的数据访问,官方提供的API参考 http://www.mongodb.org/display/DOCS/Drivers值得一提的是还有JavaScript的访问API,当然是在服务器端用JavaScript来访问MongoDB数据库,必然就得利用Node.js了。下载Java的驱动Jar包:https://github.com/mongodb/mongo-...原创 2012-09-27 20:19:58 · 173 阅读 · 0 评论 -
Java中使用Lock控制线程同步
紧接着Callable和线程池,再次接触java.util.concurrent并发包下的东西。Lock提供比synchronized更灵活的并发控制。Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题。使用最多的Lock类是ReentrantLoc...原创 2013-05-27 21:42:12 · 130 阅读 · 0 评论 -
Java中使用synchronized控制线程同步
Java线程之间控制占用临界资源(共享资源)用的最多就是synchronized,首先获得资源访问权的线程给资源对象加锁,使用完毕以后再释放对象锁。例如打印机的例子:public class Printer { public void printLetters(char c) { for(int i = 0; i<5; i++) { System...原创 2013-05-27 20:32:05 · 144 阅读 · 0 评论 -
Java中使用Timer和TimerTask实现多线程
Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。测试代码:import java.util.TimerTask;public class OneTask extends TimerTask{...原创 2013-05-24 21:32:44 · 690 阅读 · 0 评论 -
使用Java的Callable接口运行线程
Runnable和Callable的区别:(1)Runnable是自从java1.1就有了,而Callable是1.5之后才加上去的(2)Callable规定的方法是call(),Runnable规定的方法是run()(3)Callable的任务执行后可返回值,而Runnable的任务是不能返回值(是void)(4)call方法可以抛出异常,run方法不可以(5)运行Callable任务可以拿...原创 2013-05-23 16:51:16 · 406 阅读 · 0 评论 -
使用Java线程池
线程池的接口和类位于java.util.concurrent并发包中。真正的线程池接口是ExecutorService。有四种类型的线程池:newSingleThreadExecutor:创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。 ...原创 2013-05-23 15:17:58 · 103 阅读 · 0 评论 -
Java中的ThreadLocal
再了解ThreadLocal之前先看一个简单的Java线程示例。线程类:public class TestThread2 extends Thread { int a; String b = "a"; @Override public void run() { for (int i = 1; i <= 3; i++) { System.out.p...原创 2013-09-28 16:21:39 · 125 阅读 · 0 评论