java ×Ô¼ºÊµÏÖ ReadWriteLock £¨Ò»£©
¶àÏ̶߳Áдͬһ¸ö¶ÔÏóµÄÊý¾ÝÊÇºÜÆÕ±éµÄ£¬Í¨³££¬Òª±ÜÃâ¶Áд³åÍ»£¬±ØÐë±£Ö¤ÈκÎʱºò½öÓÐÒ»¸öÏß³ÌÔÚдÈ룬ÓÐÏß³ÌÕýÔÚ¶ÁÈ¡µÄʱºò£¬Ð´Èë²Ù×÷¾Í±ØÐëµÈ´ý¡£¼òµ¥Ëµ£¬¾ÍÊÇÒª±ÜÃâ“д-д”³åÍ»ºÍ“¶Á-д”³åÍ»¡£µ«ÊÇͬʱ¶ÁÊÇÔÊÐíµÄ£¬ÒòΪ“¶Á-¶Á”²»³åÍ»£¬¶øÇҺܰ²È«¡£
ҪʵÏÖÒÔÉϵÄReadWriteLock£¬¼òµ¥µÄʹÓÃsynchronized¾Í²»ÐУ¬ÎÒÃDZØÐë×Ô¼ºÉè¼ÆÒ»¸öReadWriteLockÀ࣬ÔÚ¶Á֮ǰ£¬±ØÐëÏÈ»ñµÃ“¶ÁËø”£¬Ð´Ö®Ç°£¬±ØÐëÏÈ»ñµÃ“Ð´Ëø”¡£¾ÙÀý˵Ã÷£º
DataHandler¶ÔÏó±£´æÁËÒ»¸ö¿É¶ÁдµÄchar[]Êý×飺
package com.crackj2ee.thread;
public class DataHandler {
// store
data:
private
char[] buffer = "AAAAAAAAAA".toCharArray();
private
char[] doRead() {
char[] ret = new char[buffer.length];
for(int i=0; i<buffer.length; i++) {
ret[i] = buffer[i];
sleep(3);
}
return ret;
}
private void
doWrite(char[] data) {
if(data!=null) {
buffer = new char[data.length];
for(int i=0; i<buffer.length; i++) {
buffer[i] = data[i];
sleep(10);
}
}
}
private void
sleep(int ms) {
try {
&nb
Ïà¹ØÎĵµ£º
ÕâÆªÎÄÕ²¢Ã»Óиø³öÈçºÎʹÓÃResultSetµÄ¾ßÌåÀý×Ó£¬Ö»ÊÇ´ÓResultSetµÄ¹¦ÄÜÐÔÉϽøÐÐÁËÏêϸµÄ½²Êö¡£Ï£ÍûÕâÆªÎÄÕ¶Դó¼ÒÀí½âResultSetÄܹ»ÓÐËù°ïÖú¡£ÏÂÃæ¾ÍÊÇÕâÆªÎÄÕµľßÌåÄÚÈÝ¡£
½á¹û¼¯(ResultSet)ÊÇÊý¾ÝÖвéѯ½á¹û·µ»ØµÄÒ»ÖÖ¶ÔÏ󣬿ÉÒÔ˵½á¹û¼¯ÊÇÒ»¸ö´æ´¢²éѯ½á¹ûµÄ¶ÔÏó£ ......
java ¼¯ºÏ¿ò¼Ü(Collection)ºÍÊý×éµÄÅÅÐò
¸ù¾ÝÔ¼¶¨£¬ÔÚʹÓÃjava±à³ÌµÄʱºòÓ¦¾¡¿ÉÄܵÄʹÓÃÏÖÓеÄÀà¿â£¬µ±È»ÄãÒ²¿ÉÒÔ×Ô¼º±àдһ¸öÅÅÐòµÄ·½·¨£¬»òÕß¿ò¼Ü£¬µ«ÊÇÓм¸¸öÈËÄÜдµÃ±ÈJDKÀïµÄ»¹ÒªºÃÄØ£¿Ê¹ÓÃÏÖÓеÄÀàµÄÁíÒ»¸öºÃ´¦ÊÇ´úÂëÒ×ÓÚÔĶÁºÍά»¤£¬ÕâÆªÎÄÕÂÖ÷Òª½²µÄÊÇÈçºÎʹÓÃÏÖÓеÄÀà¿â¶ÔÊý×éºÍ¸÷ÖÖCollectionÈÝÆ÷½ø ......
1. ÑéÖ¤Âë(2)
dsnaValidateCode.jar
dsnaValidateCode_src.rar
ValidateCode.java ÑéÖ¤ÂëÉú³ÉÀà
Java´úÂë
package cn.dsna.util.images;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;   ......
***´ËÌâÒÔ¿¼²ì»ù´¡Îª×¼,±±¾©µÄ±ÊÊÔÌâ,¿ÉÄÜÓÐÈË×ö¹ý
Ìâ:дһ¸ö³ÌÐò£¬½âÎöÈçϸñʽµÄ×Ö·û´®£¬²¢½«½âÎöµÄÊý×ÖÐòÁдòÓ¡³öÀ´¡£
×Ö·û´®¸ñʽ¾ÙÀý£º -1~2, 3~3, 5~10, 7~15x3
~ ´ú±íÊý×ֵķ¶Î§£¬ -1~2 ´ú±í´Ó-1¿ªÊ¼µ½2Ö®¼äµÄËùÓÐÊý×Ö¡£ 3~3 ´ú±í´Ó3¿ªÊ¼µ½3µÄËùÓÐÊý×Ö£¬Ò²¾ÍÊÇ3
7~15x3´ú ......