亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbcache.java

?? iiitAccessServer是一個用Java編寫的基于規則的企業鑒別系統。它作為一個服務器工作
?? JAVA
字號:
/******************************************************************************* * Copyright (C) 2002, 2003 * ingenieurbuero fuer innovative informationstechnik (iiit) * Dipl.-Ing. Joerg Beckmann, Dortmund, Germany * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. *  * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * * version $Id: DbCache.java,v 1.18 2003/04/14 20:39:18 joerg Exp $ ******************************************************************************/package de.iiit.access.server.plugins.cache;import de.iiit.access.common.cache.*;import de.iiit.access.server.*;import de.iiit.access.server.api.*;import de.iiit.access.server.util.*;import de.iiit.access.server.util.db.cachedb.*;import de.iiit.xmlconfig.*;import de.iiit.util.*;import de.iiit.jdbc.*;import de.iiit.cache.*;import org.apache.log4j.Logger;import java.util.*;import java.security.*;/** This cache can be loaded into the AccessServer as a plug-in to accelerate the * evaluation of expressions. It uses one or more MySQL databases as 2<sup>nd</sup>-level * caches. */public class DbCache implements CachePluginIf{    /** CVS Version Tag */    private static final String vcid = "$Id: DbCache.java,v 1.18 2003/04/14 20:39:18 joerg Exp $";        private static final String INVALIDATION_TIMEOUT = "InvalidationTimeout";    private static final String LRU_TIMEOUT          = "LRUTimeout";    private static final String SLEEP_TIME           = "SleepTime";    private static final String MD5PATTERN_LENGTH  = "Md5PatternLength";        private static final String JDBC_DRIVER        = "ClassName";    private static final String JDBC_URL           = "Url";    private static final String JDBC_USERNAME      = "UserName";    private static final String JDBC_PASSWORD      = "Password";    private static final String JDBC_CONNECTIONS   = "Connections";        private static final String JDBC_DRIVER_CONFIG = "JdbcDriver";    private static final String CACHE_DATABASE_CONFIG = "CacheDatabase";    private static final char[] hexadecimal =             {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',              'a', 'b', 'c', 'd', 'e', 'f'};    private Configuration config                = null;    private Vector        cacheDbConfigVector   = null;    private Vector        jdbcConfigVector      = null;    private Vector cachePools = new Vector();    private Hashtable md5PatternIndex = new Hashtable();    private int md5PatternLength = 0;    private int invalidationTimeout;    private int lruTimeout;    private int sleepTime;    private boolean ignoreCase;    private Logger logger = Logger.getLogger(this.getClass());    UserRightsCache cache = null;    /** Creates a new instance of DbCachePlugin */    public DbCache()    {    }        /** Initializes the cache     * @param config the configuration of the cache.     */        public void initialize(Configuration config)    {        boolean cfgError = false;        this.config = config;        ignoreCase = AccessServer.getIgnoreCase();                invalidationTimeout = Integer.parseInt(config.getAttribute(INVALIDATION_TIMEOUT, "1800")) * 1000; // 30 Min        lruTimeout          = Integer.parseInt(config.getAttribute(LRU_TIMEOUT         , "1800")) * 1000; // 30 Min        sleepTime           = Integer.parseInt(config.getAttribute(LRU_TIMEOUT         ,   "10")) * 1000; // 10 Sec                md5PatternLength = Integer.parseInt(config.getAttribute(MD5PATTERN_LENGTH, "0"));                cacheDbConfigVector = config.getSubConfigurations(CACHE_DATABASE_CONFIG);                if (cacheDbConfigVector == null)        {            logger.fatal("No configuration for cache db found");            cfgError = true;        }                jdbcConfigVector = config.getSubConfigurations(JDBC_DRIVER_CONFIG);        if (jdbcConfigVector == null)        {            logger.fatal("No JDBC configuration found");              cfgError = true;        }                if (cfgError)            System.exit(1);        try        {            JdbcUtil.registerJdbcDriver(jdbcConfigVector);        }        catch(Exception e)        {            System.exit(1);        }                initializeCacheDb();    }        /** Starts the cleaner thread. This method is called by the AccessServer after the     * initialization of all sub-moduls     */        public void start()    {        cache = new UserRightsCache(lruTimeout, invalidationTimeout, sleepTime);    }        /** This method is called by the AccessServer when the background threads should     * stop because of a shutdown of the AccessServer itself.     */    public void shutdown()    {        if (cache != null)            cache.shutdown();    }        /** Adds the result of one expression to the cache of the user.     * @param user The name of the user     * @param expression The expression     * @param isAllowed The result of the expression     */        public void addUserRight(String user, String expression, boolean isAllowed)    {        if (ignoreCase)        {            user = user.toLowerCase();            expression = expression.toLowerCase();        }                        cache.addUserRight(user, expression, isAllowed);    }        /** Retrieves the result of an expression from the cache.     * @param user The name of the user     * @param expression The expression     * @throws CacheFaultException if the result is not found in the cache     * @return the result of the expression     */        public boolean getUserRight(String user, String expression) throws CacheFaultException    {        boolean answer = false;                if (ignoreCase)        {            user = user.toLowerCase();            expression = expression.toLowerCase();        }                        try        {            answer = cache.getUserRight(user, expression);        }        catch(CacheFaultException e)        {            JdbcConnectionPool pool = null;                        try            {                if (expression.matches("^\\s*([a-zA-Z0-9_]+)\\s*$"))  // Is it a single argument ?                {                    boolean debug = logger.isDebugEnabled();                                        if (debug)                        logger.debug("Start reading cache");                                        String md5 = Md5Cache.get(expression);                                        if (md5 == null)                    {                        md5 = StringUtil.md5Sum(expression);                        Md5Cache.put(expression, md5);                    }                                        pool = getCacheConnectionPool(md5);                    if (debug)                        logger.debug("Got pool");                                IndexTable index = IndexTable.selectIndex(pool, md5);                    if (debug)                        logger.debug("Got index");                                    if (index == null)                        throw new CacheFaultException();                    if (debug)                        logger.debug("Requesting user");                                        answer = CacheTable.searchCacheTable(pool, index.getTableName(), user);                                        if (debug)                        logger.debug("got answer");                                        cache.addUserRight(user, expression, answer);                                        if (debug)                        logger.debug("written into 1st-level cache");                }                else // Real expressions can't be found in the databases                    throw new CacheFaultException();            }            catch(JdbcException se)            {                logger.error("SQL error while reading from cache db", se);                throw new CacheFaultException();            }            catch(NoSuchAlgorithmException nsae)            {                logger.fatal("Initialisation of MD5 digest failed.", nsae);                System.exit(1);            }        }                return answer;    }    /**     * @param md5sum     * @return     */        private JdbcConnectionPool getCacheConnectionPool(String md5sum) // throws JdbcException    {        String key = md5sum.substring(md5sum.length() - 2);        int dbnum = ((Integer) md5PatternIndex.get(key)).intValue();        logger.debug("DB = <" + dbnum + ">");        return (JdbcConnectionPool) cachePools.get(dbnum);    }       /**     * @param md5sum     * @return     */        private int getDbNum(String md5sum)    {         String key = md5sum.substring(md5sum.length() - 2);        int value = ((Integer) md5PatternIndex.get(key)).intValue();                return value;    }        private void initializeCacheDb()    {        JdbcConnectionPool pool = null;                int pattern = 1 << md5PatternLength;        int iMax = cacheDbConfigVector.size();        if (iMax < pattern)        {            logger.fatal("Not enough cache databases configured for md5PatternLength =  <" + md5PatternLength + ">.");            System.exit(1);        }        for (int i = 0; i < iMax; i++)        {            Configuration cfg = (Configuration) cacheDbConfigVector.get(i);                        String jdbcUrl         = cfg.getAttribute(JDBC_URL);            String jdbcUsername    = cfg.getAttribute(JDBC_USERNAME);            String jdbcPassword    = cfg.getAttribute(JDBC_PASSWORD);            int    jdbcConnections = cfg.getIntAttribute(JDBC_CONNECTIONS);            pool = new JdbcConnectionPool(jdbcUrl, jdbcUsername, jdbcPassword, jdbcConnections);            cachePools.add(i, pool);        }        for (int i = 0; i < 256; i++)        {            int low  = i & 0x0f;            int high = (i & 0xf0) >> 4;            String key = "" + hexadecimal[high] + hexadecimal[low];            Integer value = new Integer(i % pattern);                        md5PatternIndex.put(key, value);        }    }}/** * $Log: DbCache.java,v $ * Revision 1.18  2003/04/14 20:39:18  joerg * Initializing JdbcConnectionPools with pre-opened connections. * * Revision 1.17  2003/04/13 20:28:01  joerg * Package structure modified * * Revision 1.16  2003/04/13 20:16:41  joerg * Package structure modified * * Revision 1.15  2003/01/29 20:31:53  joerg * MD5-Summen werden zuerst im Cache gesucht. * * Revision 1.14  2003/01/17 19:58:36  joerg * Zusaetzliche Debug-Ausgaben * * Revision 1.13  2003/01/04 17:15:43  joerg * Zus鋞zliche Config-Option IgnoreCase * * Revision 1.12  2003/01/01 21:04:17  joerg * Copyright-Statement aktualisiert * * Revision 1.11  2002/12/24 21:04:33  joerg * Umbau der Paketstruktur * iiitLdapPlugin integriert * JavaDoc-Kommentare weiter vervollstaendigt. * * Revision 1.10  2002/12/23 11:24:09  joerg * Diverse kleine Korrekturen * * Revision 1.9  2002/12/23 10:02:39  joerg * Klasse umbenannt in DbCachePlugin, * shutdown()-Methode hinzugefuegt. * * Revision 1.8  2002/12/21 19:55:03  joerg * Nicht mehr benoetigte Methoden entfernt, interne Methoden auf * private oder protected geaendert. * JavaDoc Kommentare ergaenzt. * * Revision 1.7  2002/12/19 15:54:33  joerg * Paket umbenannt in iiitLdapPlugin * * Revision 1.6  2002/12/08 19:33:58  joerg * Auskommentierten Code entfernt * * Revision 1.5  2002/12/08 16:37:32  joerg * Aufraeumungsarbeiten nach dem grossen Umbau * * Revision 1.4  2002/12/08 16:09:46  joerg * Paket-Struktur ueberarbeitet * * Revision 1.3  2002/11/27 22:31:51  joerg * Aufteilung der Cache-Daten auf verschiedene Datenbanken * * Revision 1.2  2002/11/21 21:49:45  joerg * Umstellung auf JdbcConnectionPool * * Revision 1.1  2002/11/21 08:38:56  joerg * Neues CachePlugin mit 2nd-level-Cache. In den 1st-level * Cache wird noch nicht geschrieben, um Tests zu vereinfachen * */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精彩视频在线| 国产精品成人一区二区艾草| 精品日韩成人av| 亚洲欧美综合另类在线卡通| 日本免费新一区视频| 93久久精品日日躁夜夜躁欧美| 欧美日韩国产大片| 国产精品久久久久久亚洲毛片 | 亚洲精品va在线观看| 久久国产三级精品| 欧美日韩中字一区| 中文字幕一区二区三区在线不卡| 美女一区二区三区在线观看| 91同城在线观看| 国产精品少妇自拍| 狠狠色综合日日| 欧美一区国产二区| 亚洲国产精品麻豆| 欧美中文字幕一二三区视频| 欧美高清在线精品一区| 九九精品视频在线看| 欧美日韩国产免费| 亚洲一区二区成人在线观看| 色综合久久天天综合网| 欧美激情一区二区三区蜜桃视频| 久久99精品国产| 欧美r级在线观看| 麻豆一区二区99久久久久| 91麻豆精品国产91久久久久久久久 | 一本一道波多野结衣一区二区| 久久这里只精品最新地址| 精品在线观看视频| 精品国产亚洲在线| 国产大片一区二区| 亚洲国产高清aⅴ视频| 色成年激情久久综合| 一区二区国产盗摄色噜噜| 91亚洲精品久久久蜜桃| 国产精品久久久久久久裸模 | 国产日韩精品久久久| 国产一区二区不卡老阿姨| 久久综合久久久久88| 成人小视频免费观看| 国产精品第四页| 欧美性xxxxxxxx| 日韩精品电影在线观看| 欧美一级二级三级乱码| 美女任你摸久久| 国产色产综合色产在线视频| 成+人+亚洲+综合天堂| 国产精品传媒视频| 在线亚洲高清视频| 麻豆中文一区二区| 欧美韩日一区二区三区| 色哟哟一区二区| 亚洲黄色av一区| 中文字幕亚洲不卡| 国内精品在线播放| 久久久久久久久岛国免费| 粉嫩欧美一区二区三区高清影视| 国产精品另类一区| 欧美精品一二三| 国产一区二区电影| 亚洲三级免费观看| 日韩色视频在线观看| 国产99精品视频| 亚洲国产成人精品视频| 久久婷婷国产综合国色天香 | 亚洲成av人片在线| 久久精品人人做人人综合| 在线一区二区三区四区| 麻豆专区一区二区三区四区五区| 亚洲国产精品黑人久久久 | 成人免费看视频| 午夜免费久久看| 国产欧美1区2区3区| 欧美日韩在线电影| av电影天堂一区二区在线观看| 成人免费视频网站在线观看| 亚洲综合精品自拍| 久久精品视频在线免费观看| 欧美日韩精品欧美日韩精品一 | 日韩久久久精品| 欧美亚洲综合网| 粉嫩绯色av一区二区在线观看 | 国产一区二区三区高清播放| 一区二区三区波多野结衣在线观看 | 中文字幕 久热精品 视频在线| 欧美日韩一二三区| 99久久精品国产网站| 国产乱人伦偷精品视频不卡 | 欧美午夜电影在线播放| 成人免费看片app下载| 精品一区二区三区在线播放视频| 一区二区三区美女| 亚洲欧美一区二区三区国产精品| 久久亚洲精品小早川怜子| 91精品婷婷国产综合久久竹菊| 色综合咪咪久久| av在线一区二区| 丰满岳乱妇一区二区三区| 国产一区二区三区视频在线播放| 丝袜亚洲另类欧美综合| 亚洲综合在线视频| 日韩美女精品在线| 18成人在线视频| 成人免费在线视频| 亚洲日本韩国一区| 中文字幕在线观看不卡| 国产女人aaa级久久久级| 久久精品一级爱片| 国产亚洲欧美日韩日本| 国产色综合一区| 国产偷v国产偷v亚洲高清| 一区二区三区中文字幕精品精品| 中国av一区二区三区| 欧美激情一区二区三区四区| 国产区在线观看成人精品| 久久久五月婷婷| 日本一区二区成人| 国产精品麻豆99久久久久久| 国产欧美日韩精品a在线观看| 国产亚洲人成网站| 中国av一区二区三区| 亚洲欧洲制服丝袜| 亚洲国产一区二区在线播放| 亚洲高清免费视频| 美女脱光内衣内裤视频久久网站| 久久精品国产99久久6| 国产专区欧美精品| 99视频精品在线| 日本高清不卡aⅴ免费网站| 欧美日韩精品一二三区| 日韩欧美美女一区二区三区| 久久综合一区二区| 亚洲婷婷综合色高清在线| 一区二区三区四区不卡视频| 日韩av一区二| 国产老妇另类xxxxx| 色综合天天综合网天天看片| 欧美日韩在线播放一区| 日韩一区二区三区免费看| 久久久不卡影院| 一区二区理论电影在线观看| 欧美a一区二区| 粉嫩在线一区二区三区视频| 欧美性受xxxx| 久久久久久99精品| 一区二区欧美国产| 国产美女视频91| 在线观看亚洲a| 久久综合九色综合欧美98| 国产精品九色蝌蚪自拍| 日日嗨av一区二区三区四区| 国产成人av自拍| 欧美日本不卡视频| 国产婷婷色一区二区三区四区| 亚洲一区二区三区四区在线观看| 久久超碰97中文字幕| 色婷婷香蕉在线一区二区| 精品三级av在线| 亚洲国产毛片aaaaa无费看| 国产一区二区三区四| 在线观看欧美日本| 欧美极品美女视频| 日本美女一区二区| 91久久免费观看| 国产亚洲综合av| 免费不卡在线观看| 在线欧美一区二区| 国产精品欧美久久久久无广告| 三级一区在线视频先锋| 一本大道久久a久久综合| 久久久久久免费网| 麻豆精品在线视频| 国产精品欧美极品| 国产一区二区三区高清播放| 欧美绝品在线观看成人午夜影视| 国产精品国产三级国产有无不卡| 久久se精品一区二区| 欧美日韩国产成人在线91| 有码一区二区三区| 91在线你懂得| 国产精品欧美一区喷水| 国产精品一区二区在线观看不卡| 欧美精品乱码久久久久久 | 91香蕉视频污在线| 日本一区二区免费在线观看视频| 美腿丝袜亚洲综合| 欧美二区乱c少妇| 亚洲gay无套男同| 欧洲亚洲精品在线| 亚洲影视在线观看| 色综合天天做天天爱| 国产精品白丝在线| 91农村精品一区二区在线| 国产精品美女一区二区| 成人午夜精品在线| 中文字幕一区在线观看| youjizz久久|