- 浏览: 73551 次
- 性别:
- 来自: 北京
-
最新评论
-
shihengli2010:
赞!!!!
XSL Formatting Objects Tutorial (二) -
calosteward:
感谢楼主分享,我找的不是java代码,刚刚找到C# PDF c ...
PDF转图片
文章列表
effective java (六:枚举和注解)
- 博客分类:
- Java
枚举
什么时候需要使用枚举?
当程序中需要使用到一组常量(整型,字符串)时,就应该使用枚举对这些常量进行封装。
如,星期一到星期天、性别分男和女等
使用枚举可以带来哪些好处:
类型安全,防止传入错误的参数值
可读性好,比int值强
不易出错,比硬编码字符串到程序各个角落好
枚举实例可以具备行为,操作起来更加方便
使用枚举替换int常量和字符串常量
public enum Sex {
MALE, FEMALE;
}
用实例域替代枚举自身的序数
如果需要使用枚举常量的序数,最好自己定义,不要使用默认的ordinal实现
...
HTML 页面组成:
基本的标签 + 样式 + 行为
markup : HTML标签
style : 样式,CSS
script : 行为,jQuery
Write less, do more!
var checkedValue = jQuery('input:radio[name="someRadio"]:checked').val();
你需要什么功能?
页面事件 ...
使用ReadWriteLock模拟简单的缓存管理器
package thread.lock;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* readLock 与 readLock 不互斥
* readLocak 与 writeLock 互斥
* writeLock 与 wri ...
Java5对共享资源访问的解决方案:
1个锁上绑定多个监视器
package thread.lock;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* 使用Java5新的共享资源处理方式
* Lock
* Condition
*
* 最大的不同:1个锁上可以绑定多个监视器!
* 让线程的等待与唤醒更明确
...
多线程协作完成任务时用?如IO异步编程?
package thread.pool;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.u ...
通过Executors创建定时任务
- 博客分类:
- Java
通过Executors创建定时任务
相对时间的计算:
long period = new Date("2014-10-1").getTime - System.getCurrentTimeMills
package thread;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
impor ...
确保多线程操作的是同一个共享资源
- 博客分类:
- Java
共享资源定义为成员变量
run()定义在内部类中,这样,内部类中的线程就可以直接访问同一份资源了
package thread;
/**
* 多线程共享资源的方式一:
*
* 操作共享资源的run()放到内部类中,然后操作外部类中定义的资源
*
* 1个线程负责加,1个线程负责减
*/
public class ShareDataStyle1 {
private int sharedData = 100;
public synchronized void add() {
sharedData++;
System.o ...
模拟2个线程操作共享资源时的如何交互
- 博客分类:
- Java
模拟2个线程操作共享资源时的如何交互
package thread;
/**
* 简单的2个线程间交替执行示例
* 通过synchronized保证对资源的“原子操作”不被打断
* 通过线程通信实现切换运行
*/
public class TwoThreadsCommunication {
public static void main(String[] args) {
new TwoThreadsCommunication().justDoIt();
}
public void justDoIt() {
...
通过util.concurrent.Executors直接创建线程池,非常方便
package thread.pool;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* 使用线程池的好处:
* 线程池维护一定数量的worker线程
* 调用者只需将任务放入到线程池中即可
* 具体任务的执行交给线程池中的线程去完成
* 主要为了提高系统响应能力
* conc ...
ThreadLocal在多线程中的应用
- 博客分类:
- Java
本例充分演示了ThreadLocal在多线程环境下,与线程绑定后的数据操作是完全隔离的!
放心使用ThreadLocal吧!千万记得用完之后要remove!
package thread;
import java.util.Date;
import java.util.Random;
/**
* 线程范围内的变量,每个线程都有自己的一份数据,换不干扰
*
* 原理:
* ThreadLocal类中通过Map<Thread.currentThread(), Object>实现数据与线程绑定的!
* Map的key就是线程自己 ...
select distinct xfield from xTable fetch first 10 rows only
insert into xTable values ('值1','AAA','值3','值4');
--复制数据
insert into xTable select filed1,'BBB',field3 from xTable where field2 = 'AAA';
为Tomcat指定系统环境外的JDK版本
- 博客分类:
- Tomcat
编辑${Tomcat-Home}/bin目录下的setclasspath.bat文件
在下面的行之后加入set JAVA_HOME=D:\letter\jdk7
rem ---------------------------------------------------------------------------
rem Set CLASSPATH and Java options
rem ---------------------------------------------------------------------------
Tomcat-警惕内存溢出
- 博客分类:
- Tomcat
OutOfMemoryError: PermGen Space
先提供解决办法
Solution
By default, Tomcat is assigned a very little PermGen memory for the running process. To fix it, increase the PermGen memory settings by using the following Java VM options.
-XX:PermSize<size> - Set initial PermGen Size.
-XX:MaxPer ...
使用浏览器查看Tomcat目录下记录的日志
- 博客分类:
- Tomcat
最简陋的办法:
场景:
日志使用logback进行记录,存放位置在${Catalina_Home}/appLogs/letter目录中
如,记录的当天日志为:${Catalina_Home}/appLogs/letter/letter.log
首先修改本地Host文件,增加一个IP与网址的对应关系(网址爱怎么写怎么写)
127.0.0.1 showlogs
在server.xml中添加一个虚拟主机:showlogs
<Host name="showlogs" appBase="appLogs">
...
http://www.ibm.com/developerworks/library/j-jtp0730/index.html
学习编程的目的:解决问题/开发用户需要的功能
多线程可以解决什么问题?
将不同的子任务交给不同的线程去执行,提高系统响应速度(比单一线程执行所有任务更快)
从最简单的开始,如何创建线程!
run() : 封装线程要运行的任务,所以将线程要运行的代码封装到run()中即可!
方式一:创建一个类直接继承Thread类,并覆盖run()
方式二:创建一个类实现Runnable接口,实现run(),再将此类的实例传入Thread构造 ...