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

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

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

    巷尾的酒吧

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      64 Posts :: 0 Stories :: 5 Comments :: 0 Trackbacks

    2013年8月26日 #

    返回上次訪問目錄,在命令行輸入:
    cd -
    posted @ 2014-05-22 16:21 abing 閱讀(213) | 評論 (0)編輯 收藏

    一、Java基礎知識
    1.Java有那些基本數據類型,String是不是基本數據類型,他們有何區別。
    2.字符串的操作:
      寫一個方法,實現字符串的反轉,如:輸入abc,輸出cba
      寫一個方法,實現字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。
    3.數據類型之間的轉換
      如何將數值型字符轉換為數字(Integer,Double)
      如何將數字轉換為字符
      如何取小數點前兩位,并四舍五入。
    4.日期和時間
      如何取得年月日,小時分秒
      如何取得從1970年到現在的毫秒數
      如何獲取某個日期是當月的最后一天
      如何格式化日期
    5.數組和集合
    6.文件和目錄(I/O)操作
      如何列出某個目錄下的所有文件
      如何列出某個目錄下的所有子目錄
      判斷一個文件或目錄是否存在
      如何讀寫文件
    7.Java多態的實現(繼承、重載、覆蓋)
    8.編碼轉換,怎樣實現將GB2312編碼的字符串轉換為ISO-8859-1編碼的字符串。
    9.Java中訪問數據庫的步驟,Statement和PreparedStatement之間的區別。
    10.找出下列代碼可能存在的錯誤,并說明原因:



    一、問答題

    1、面向對象的特征有哪些方面?
    2、abstract class和interface有什么區別?
    3、short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
    4、JSP的內置對象有哪些?
    5、MVC模式的工作原理?
    6、HashMap和Hashtable的區別?
    7、String 和StringBuffer的區別?
    8、說出Servlet的生命周期,并說出Servlet和CGI的區別
    9、簡述SSH概念及原理?
    10、概述存儲過程的優點和缺點及怎么優化存儲過程?
    二、查錯題
    1、abstract class Name {
    private String name;
    public abstract boolean isStupidName(String name) {}
    }
    2、public class Something {
    void doSomething () {
    private String s = “”;
    int l = s.length();
    }}
    3.、abstract class Something {
    private abstract String doSomething ();
    }
    4、public class Something {
    public int addOne(final int x) {
    return ++x;
    } }

    5、public class Something {
    public static void main(String[] args) {
    Something s = new Something();
    System.out.println(“s.doSomething() returns ” +doSomething());
    }

    public String doSomething() {
    return “Do something …”;
    }
    }
    三、設計題
    1、設計4個線程,其中兩個線程每次對j增加1,另外兩個線程對j每次減少1。寫出程序
    2、現在輸入n個數字,以逗號,分開;然后可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什么排序,結果為,提供reset
    四、編程題
    1、寫一個Singleton出來
    2、字符串的操作:
    寫一個方法,實現字符串的反轉,如:輸入abc,輸出cba
    寫一個方法,實現字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。
    五、邏輯思維分析題
    1、一個小偷被警察發現。警察就追小偷,小偷就跑,跑著跑著,前面出現一條河,這河寬12米,河在小偷和警察這面有棵樹,樹高12米,書上葉子都光了。小偷圍著個圍脖長6米,請問小偷如何過河跑?
    2、燒一根不均勻的繩子要用一個小時,如何用它來判斷半個小時?燒一根不均勻的繩,從頭燒到尾總共要一個小時,現在有若干條材質相同的繩子,問如何用燒繩子的方法計時一個小時十五分鐘呢?
    六、綜合題
    1、請用不超過30個字給出一個最能讓我們錄用你的理由
    2、如果我們錄用你,你將怎樣去開展工作
    3、當你與上級意見不一致的時,你將怎么辦
    4、你對于開發這一職位加班有什么看法









    posted @ 2013-12-20 14:35 abing 閱讀(190) | 評論 (0)編輯 收藏

    二叉樹算法資料收集:
    http://blog.sina.com.cn/s/blog_ba46b52b0101i6mj.html

    http://blog.sina.com.cn/s/blog_70600f720100ujnp.html

    http://blog.csdn.net/kiritor/article/details/8892648 
     
    http://iask.sina.com.cn/b/9950186.html
    http://blog.csdn.net/kangojian/article/details/3990212

    http://blog.csdn.net/kangojian/article/details/3990206

    http://wenwen.soso.com/z/q69052983.htm
    http://justsee.iteye.com/blog/1097176


    平衡二叉樹:
    http://blog.csdn.net/zxman660/article/details/7940190



    二叉樹的深度:
    http://blog.163.com/xiaopengyan_109/blog/static/14983217320108168618624/


    二叉樹刪除:
    http://www.cnblogs.com/xunmengyoufeng/archive/2012/10/01/BityTree.html
    http://marcospring.iteye.com/blog/1623571
    http://www.cnblogs.com/KeenLeung/archive/2012/11/03/2750545.html


    二叉樹查找節點:
    http://www.cnblogs.com/KeenLeung/archive/2012/11/03/2750545.html
















    posted @ 2013-11-25 21:28 abing 閱讀(198) | 評論 (0)編輯 收藏

    原文地址:http://apmblog.compuware.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms/

    ========================================================================================

     

    Hotspot JVM使用和 IBM Websphere OracleWeblogic不同的垃圾回收機制,但是垃圾回收的概念和算法是相通的。

     

    HotSpotJVM

     

    1HotSpotJVM使用內存分區(如永久perm區和分代Generation Heap區),分代區(Generation Heap)又包括新生Yong老生Old/Tenured區,Yong區中又分為Eden Survior區(2塊);


    2Yong GC:對象先在Yong區的Eden中得到分配,任何時候Eden區滿了就會觸發YongGC (Minor GC?),會把YongEden中仍存活的Live對象拷貝到空的那個Survior區,除此之外,另外一個Survior區中的對象也會被檢查和拷貝(在2Survior區之間拷貝對象的頻率是可配置的),其結果就是對象僅存在于一個Survior區中,而Eden區和另一塊Survior區是空的。這種形式的GC叫“拷貝收集(Copy Collection)”。Yong區中多次GC后仍存活的對象會被提升/拷貝到Old區。

     

    3 Old GC:標記和打掃(Mark & Sweep)算法是老生區(OldHeap)使用的GC算法,與新生代Yong區算法不同的地方在于它不拷貝對象。對象越多GC消耗時間越長,因此老生區GC代價很高并盡量避免,因此我們需要保證對象僅僅從Yong區拷貝到Old區并保證Old區不被填滿,因此,代區的大小是Hotspot JVM中單一的一個最重要的優化參數。如果我們不能阻止對象從Yong區拷貝到Old區,我們可以使用“并發標記和打掃算法”(CMS -Concurrent Mark and Sweep),此算法可以并行的進行收集操作。(停頓時間:串行(Serial) <平行(Parallel) <并發(Concurrent))。

     

    OldGC還有其他問題,比如“碎片問題”會導致“慢分配”,更長的打掃時間并最終會導致OOM(當分配大對象而遇到的全是小空間時).

     

    碎片問題可通過被稱為“壓縮”的方法來解決。“串行和平行算法(Serialand Parallel)”會在每次Old區進行GC時進行壓縮,它不對整個Old區壓縮而只對Old區中碎片程度達到一定Level的區域區進行。相比之下,“并發標記和打掃算法CMS”根本就不會進行壓縮。當對象不能再被分配時,一個串行的“主要MajorGC”會被觸發。

     

    因此,HotSpot 的第二個調整參數是選擇正確的GC策略,GC策略的選擇會影響應用的性能,HotSpot中的大部分GC策略調整選項參數是是關于分片和壓縮的, HotspotJVM沒有提供太多調整參數,因此,唯一的方法是優化代碼減少申請對象的次數。

     

    4) Permanent Generation 永久區:保存屬于類的(靜態的)屬性和字符串常量等,永久區的GC只會發生在“主要Major GC”時(Major GC很少發生),因此很多人認為Hotspot JVM在永久區根本不會GC

     

    Major GC - Stops the world andcost much time, e.g. Full GC.

     

    OracleJRockit

     

    1) Oracle WebLogic使用的JVM,將來會和Hotspot合并

     

    2) Heap策略 -也使用“分代Heap”,而且支持一個所謂的“連續Heap”。分代Heap分為:老生區(Old/Tenured)和苗圃/新生區(Nursery),當對象被申請時,他們被放在一個新生區中稱為Keep Area的地方,GC時,Keep Area不會被考慮而其它仍然存活的對象會被馬上移到老生區。因此,新生區的大小是JRockit很重要的參數。JRockit在第二次新生代GC時就會拷貝那些對象到Old區。

     

    JRockit的“連續Heap”不區分“新”和“老”的對象,常常在特定的情況下比如以大吞吐量下的批量任務會產生很好的性能,它是JRockit Server JVM模式下的默認設置,而且往往不是正確的選擇,因為典型的Web應用不是面向吞吐量而是面向響應時間,因此人們往往會選擇低停頓時間模式和分代GC策略。

     

    3) CMS -

    大部分的CMS標記階段可分為4個部分

        1. 初始標記 -標記生成Live對象的Root集合 - Java Thread會被paused

        2 并發標記 -根據root集合中的對象查找并標記其引用的Live對象 -- Java Thread正常運行

        3 預清理 -找出“并發標記”發現的需要修改的地方并發現和標記其它額外的Live對象-- Java Thread正常運行
        4 
    最終標記-找出在預清理階段發現的需要改變的地方并發現和標記其它額外的Live對象 -- Java Thread會被Paused

     

    CMS 打掃階段也和 Application并發執行,  但和Hotspot JVM的分2個階段相比,JRockit會先清掃Heap的第一半部分,在此階段,線程會被允許在Heap的第二半部分進行對象申請。在一個短暫的同步停頓后,會打掃第二半部分然后會有一個短暫的最后的停頓期。

    因此,JRockit的算法比HotSpot的算法停頓更多,但是標記階段會短一些。而且它不像HotSpot JVM那樣可以通過調整未用內存的百分比來觸發GC

     

    4) 壓縮

    JRockit 在所有的Old老生區GC進行壓縮,包括CMS它通過一種按Heap中分區增量的模式進行的,這些各類參數可以調整,比如按堆百分比壓縮,或最大多少對象會被壓縮,而且你可以完全把壓縮關掉或者在GC時進行“完全壓縮”。因此可配置性比HotSpot更強。

     

    5) 線程本地分配TLAThread Local Allocation)

    JRockit默認使用線程本地分配TLA,這允許線程不需要同步即可分配對象,這將有利于分配速度,TLA的大小而且可以配置,大的TLA可以優化使用大量線程本地分配對象的應用,另一方面,太大的TLA會導致更多的碎片,因為TLA是被線程以排斥的方式獨有的,因此受限于線程數并依賴于應用的架構。

     

    6) 大對象和小對象

    JRockit在分配大對象和小對象時區別對待,大小的定義在JVM的版本不同而不同,常常2-128Kb之間,大對象在線程本地意外的Old區分配,而新生Yong區使用“拷貝收集-Copy Collection (見Hotspot YongGC)”,在某些點,拷貝一個對象變得比它被GC更消耗。

     

    7) 沒有永久區 -- JRockit JVM沒有永久區所有類的屬性和字符串常量放在通常的Heap區域,因此如果它不再被使用,會被馬上回收。

     

    IBM JVM

     

    IBM JVM IBMWebsphere使用,它和JRockit有很多相同地方,它默認的使用一個“連續的Heap”,特別是在Websphere安裝過程中,這往往是導致最初的低性能的原因。它和JRockit一樣區分大小對象,并默認使用線程本地分配TLA它也沒有“永久區”,但是IBM JVM也支持分代模型并且看起來更像HotSpot JVM比如它的分代模型包括“新生區”“老生區”,新生區又分為“分配區(Allocate)”Survior區”,新對象在Allocate區分配并在GC時拷貝到Survior區,這意味著一個對象在被移動到Old區時會被在2個區之間多次拷貝.JRockit一樣,IBM JVM有多個選項可以配置“壓縮”階段,可以配置為“關閉”或“每次GC都進行壓縮”,JRockit相比,默認的觸發條件是由于一系列的觸發而不是導致“完全”壓縮,而且這個可以被配置選項更改。

     

     

    Java 7會宣稱“G1 - Production Ready,而且G1是不同的。

    posted @ 2013-11-09 11:32 abing 閱讀(5499) | 評論 (0)編輯 收藏

    數據庫系統中事務的ACID原則是什么啊??
    事務的原子性、一致性、獨立性及持久性
    事務的原子性是指一個事務要么全部執行,要么不執行.也就是說一個事務不可能只執行了一半就停止了.比如你從取款機取錢,這個事務可以分成兩個步驟:1劃卡,2出錢.不可能劃了卡,而錢卻沒出來.這兩步必須同時完成.要么就不完成.
    事務的一致性是指事務的運行并不改變數據庫中數據的一致性.例如,完整性約束了a+b=10,一個事務改變了a,那么b也應該隨之改變.
    事務的獨立性是指兩個以上的事務不會出現交錯執行的狀態.因為這樣可能會導致數據不一致.
    事務的持久性是指事務運行成功以后,就系統的更新是永久的.不會無緣無故的回滾.

    spring事務傳播屬性和隔離級別
    1 事務的傳播屬性(Propagation) 

    1) REQUIRED ,這個是默認的屬性 
    Support a current transaction, create a new one if none exists. 
    如果存在一個事務,則支持當前事務。如果沒有事務則開啟一個新的事務。 
    被設置成這個級別時,會為每一個被調用的方法創建一個邏輯事務域。如果前面的方法已經創建了事務,那么后面的方法支持當前的事務,如果當前沒有事務會重新建立事務。 
    如圖所示: 

    2) MANDATORY 
    Support a current transaction, throw an exception if none exists.支持當前事務,如果當前沒有事務,就拋出異常。 

    3) NEVER 
    Execute non-transactionally, throw an exception if a transaction exists. 
    以非事務方式執行,如果當前存在事務,則拋出異常。 

    4) NOT_SUPPORTED 
    Execute non-transactionally, suspend the current transaction if one exists. 
    以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。 

    5) REQUIRES_NEW 
    Create a new transaction, suspend the current transaction if one exists. 
    新建事務,如果當前存在事務,把當前事務掛起。 
    如圖所示: 

    6) SUPPORTS 
    Support a current transaction, execute non-transactionally if none exists. 
    支持當前事務,如果當前沒有事務,就以非事務方式執行。 

    7) NESTED 
    Execute within a nested transaction if a current transaction exists, behave like PROPAGATION_REQUIRED else. 
    支持當前事務,新增Savepoint點,與當前事務同步提交或回滾。 
    嵌套事務一個非常重要的概念就是內層事務依賴于外層事務。外層事務失敗時,會回滾內層事務所做的動作。而內層事務操作失敗并不會引起外層事務的回滾。 

    8) PROPAGATION_NESTED 與PROPAGATION_REQUIRES_NEW的區別 
    它們非常 類似,都像一個嵌套事務,如果不存在一個活動的事務,都會開啟一個新的事務。使用PROPAGATION_REQUIRES_NEW時,內層事務與外層事務就像兩個獨立的事務一樣,一旦內層事務進行了提交后,外層事務不能對其進行回滾。兩個事務互不影響。兩個事務不是一個真正的嵌套事務。同時它需要JTA 事務管理器的支持。 
    使用PROPAGATION_NESTED時,外層事務的回滾可以引起內層事務的回滾。而內層事務的異常并不會導致外層事務的回滾,它是一個真正的嵌套事務。 

    2 事務的隔離級別(Isolation Level) 

    1) 首先說明一下事務并發引起的三種情況 

    i. Dirty Reads 臟讀 
    一個事務正在對數據進行更新操作,但是更新還未提交,另一個事務這時也來操作這組數據,并且讀取了前一個事務還未提交的數據,而前一個事務如果操作失敗進行了回滾,后一個事務讀取的就是錯誤數據,這樣就造成了臟讀。

    ii. Non-Repeatable Reads 不可重復讀 
    一個事務多次讀取同一數據,在該事務還未結束時,另一個事務也對該數據進行了操作,而且在第一個事務兩次次讀取之間,第二個事務對數據進行了更新,那么第一個事務前后兩次讀取到的數據是不同的,這樣就造成了不可重復讀。

    iii. Phantom Reads 幻像讀 
    第一個數據正在查詢符合某一條件的數據,這時,另一個事務又插入了一條符合條件的數據,第一個事務在第二次查詢符合同一條件的數據時,發現多了一條前一次查詢時沒有的數據,仿佛幻覺一樣,這就是幻像讀。

    iv. 非重復度和幻像讀的區別 
    非重復讀是指同一查詢在同一事務中多次進行,由于其他提交事務所做的修改或刪除,每次返回不同的結果集,此時發生非重復讀。(A transaction rereads data it has previously read and finds that another committed transaction has modified or deleted the data. )

    幻像讀是指同一查詢在同一事務中多次進行,由于其他提交事務所做的插入操作,每次返回不同的結果集,此時發生幻像讀。(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additional rows that satisfy the condition. )

    表面上看,區別就在于非重復讀能看見其他事務提交的修改和刪除,而幻像能看見其他事務提交的插入。 

    2) DEFAULT (默認) 
    這是一個PlatfromTransactionManager默認的隔離級別,使用數據庫默認的事務隔離級別.另外四個與JDBC的隔離級別相對應 

    3) READ_UNCOMMITTED (讀未提交) 
    這是事務最低的隔離級別,它允許另外一個事務可以看到這個事務未提交的數據。這種隔離級別會產生臟讀,不可重復讀和幻像讀。 

    4) READ_COMMITTED (讀已提交) 
    保證一個事務修改的數據提交后才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的數據。這種事務隔離級別可以避免臟讀出現,但是可能會出現不可重復讀和幻像讀。 

    5) REPEATABLE_READ (可重復讀) 
    這種事務隔離級別可以防止臟讀,不可重復讀。但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未提交的數據外,還保證了不可重復讀 

    6) SERIALIZABLE(串行化) 
    這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止臟讀,不可重復讀外,還避免了幻像讀。 

    7) 隔離級別解決事務并行引起的問題 
    Dirty reads non-repeatable reads phantom reads 
    Serializable 不會 不會 不會 
    REPEATABLE READ 不會 不會 會 
    READ COMMITTED 不會 會 會 
    Read Uncommitted 會 會 會





    事務的隔離級別

    注:Spring中事務的隔離級別是由數據庫實現的


    ISOLATION_DEFAULT
        這是一個PlatfromTransactionManager默認的隔離級別,使用數據庫默認的事務隔離級別.另外四個與JDBC的隔離級別相對應
    ISOLATION_READ_UNCOMMITTED 這是事務最低的隔離級別,它充許別外一個事務可以看到這個事務未提交的數據。這種隔離級別會產生臟讀,不可重復讀和幻像讀

    ISOLATION_READ_COMMITTED
        保證一個事務修改的數據提交后才能被另外一個事務讀取。另外一個事務不能讀取該事務未提交的數據。這種事務隔離級別可以避免臟讀出現,但是可能會出現不可重復讀和幻像讀。

    ISOLATION_REPEATABLE_READ
        這種事務隔離級別可以防止臟讀,不可重復讀。但是可能出現幻像讀。它除了保證一個事務不能讀取另一個事務未提交的數據外,還保證了避免下面的情況產生(不可重復讀)。

    ISOLATION_SERIALIZABLE
        這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。除了防止臟讀,不可重復讀外,還避免了幻像讀。

    臟讀:
        一個事務讀取到另一個事務未提交的更新數據。
    不可重復讀:
        在同一事務中,多次讀取同一數據返回的結果有所不同,即后續讀取可以讀取到另一事務已提交的更新數據;相反,"可重復讀"是指在同一事務中多次讀取數據時,能夠保證所讀取的數據是一樣,即后續讀取不能讀到另一事務已提交的數據。
    幻讀:
        一個事務讀取到另一事務已提交的insert數據。 

    posted @ 2013-09-08 17:00 abing 閱讀(200) | 評論 (0)編輯 收藏

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Javascript RegExp</title>
    </head>
    <script type="text/javascript">
    function judge(){
     try {
      var parameter;
      var regex='^([0-9]+)$';
      var pp;
      var flag=false;
      parameter=document.getElementById("parameter").value;
      pp=new RegExp(regex,'gi');
      flag=pp.test(parameter);
      document.getElementById("spanId").innerHTML=flag;
     } catch (e) {
      document.write('e.name='+e.name+',e.message='+e.message);
     }
     
    }
    </script>
    <body>
     <div id="div1">
      INPUT:<br/>
      <input id="parameter" type="text" /><br/>
      <input id="button" type="button" onclick="javascript:judge();" value="猛擊我"/><br/>
     </div>
     <span id="spanId"></span>
    </body>
    </html>

    下面是目前本人知道的幾種jQuery的ready ()的寫法.如果還有其他的寫法,望告知
    1.最常用也是最標準的 
    $(document).ready(){ 
    }); 
    2.是上面的簡寫: 
    $(function(){ 
    }) 
    3.這個方式:
    jQuery(document).ready(function(){ 
    }); 
    4. 這個方式:
    jQuery(function($){ 
    alert($("#ready1").html()); 
    }); 


    posted @ 2013-08-30 14:39 abing 閱讀(187) | 評論 (0)編輯 收藏

    使用jquery真的很方便,比如要控制div的顯示與隱藏,一句話就搞定了,請看下面使用說明。

    $("#id").show()表示display:block,

    $("#id").hide()表示display:none;

    $("#id").toggle()切換元素的可見狀態。如果元素是可見的,切換為隱藏的;如果元素是隱藏的,切換為可見的。

    $("#id").css('display','none'); 
    $("#id").css('display','block'); 
    或 
    $("#id")[0].style.display = 'none';

    posted @ 2013-08-29 23:47 abing 閱讀(361) | 評論 (0)編輯 收藏

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charsetUTF-8">
    <title>Jquery Test</title>
    <style type="text/css">
    .class1 {left: 0px;top: 0px;height: 180px;width: 240px;display: block;background-color: blue;color: black;}
    .class2 {left: 0px;top: 300px;height: 100px;width: 240px;display: none;background-color: blue;color: black;}
    .spans {left: 0px;top: 300px;height: 100px;width: 240px;display: none;background-color: blue;color: black;}
    </style>
    </head>
    <script type="text/javascript" src="../js/jquery/jquery-1.7.2.js"></script>
    <script type="text/javascript">
    $(function(){
    $("#buttonId").click(function(){
    var userName=$("input[name='userName']").val();
    var passWord=$("input[name='passWord']").val();
    if(userName=='abin'&&passWord=='lee'){
    $("#div1").hide();
    $("#div2").show();
    $("#spanId").show();
    $("#spanId").html('userName='+userName+",passWord="+passWord);
    }else{
    $("#div1").toggle();
    $("#div2").toggle();
    $("#spanId").show();
    $("#spanId").html('userName='+userName);
    }
    });
    });
    </script>
    <body>
    <div id="div1" class="class1">
    UserName:<br/>
    <input id="userId" name="userName" type="text"/><br/>
    PassWord:<br/>
    <input id="passId" name="passWord" type="text"/><br/>
    <input id="buttonId" name="buttonName" type="button" value="猛擊我"/>
    </div>
    <div id="div2" class="class2">
    <span id="spanId" class="spans"></span>
    </div>
    </body>
    </html>
    posted @ 2013-08-29 23:45 abing 閱讀(238) | 評論 (0)編輯 收藏

    【搭建環境】Linux (Fedora 16)

    【基本實現】在自己的電腦上搭建ftp,實現同一網段匿名登錄,并能上傳下載文件。

    【涉及技術】vsftpd,iptables

    【方法】

    1. 先查看自己的機子上是否已安裝vsftpd (very secure FTP Daemon),這是linux上常用的ftpd技術,配置方法比較類似配置Apache。命令行輸入:

    #rpm -qa | grep vsftp

    若出現內容,則表示已安裝;若無,則手動抓包下載:

    # sudo yum install vsftpd

     

    2 .啟動vsftpd服務。很多教程寫的是/etc/init.d/vsftpd start,但是我試了下后發現不行,應該如下輸入:

    # sudo service vsftpd start

    相應的,start 可換成stop,restart等,從字面意思就知道其意思。

    查看是否有啟動vsftpd:

    # pstree | grep vsftpd

    若有則表示啟動成功。至此,可通過#ftp 主機名/localhost/127.0.0.1 來測試ftp是否正常工作。

     

    3. 配置 相關文件。vsftpd.conf 全局配置文件放在/etc/vsftpd/下。為了防止配置錯了,先拷貝一份副本,之后進入文檔進行編輯。完成后重啟ftp即可。

    #cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd1.conf

    #sudo vim /etc/vsftpd/vsftpd.conf

    為了允許匿名登錄,則anonymous_enable必須等于YES,其他相應的配置屬性簡單列表如下:

    anonymous_enable=YES              允許匿名登錄
    Local_enable=YES                       允許本地用戶登錄
    write_enable=YES                        開放本地用戶的寫權限
    dirmessage_enable=YES              當切換到目錄時,顯示該目錄下的.message隱含文件的內容
    xferlog_enab1e =YES                   激活上傳和下載日志
    connect_from_port_20 = YES      啟用FTP數據端口的連接請求
    xferlog_std_format =YES            使用標準的ftpd xferlog日志格式
    pam_service_name=vsftpd           設置認證服務的配置文件名稱,該文件存放在/etc/pam.d/
    userlist_enable=YES                   激活vsftpd檢查userlist_file指定用戶是否可以訪問vsftpd服務器

     

    4. 本機進行測試。在瀏覽器上輸入ftp://localhost或者ftp://127.0.0.1,若搭建成功,則會有相應的文件夾,而這文件夾是默認在/var/ftp/下,當然以后你還可以進行修改。另一個方法是可以直接在命令行輸入:

    #ftp 127.0.0.1

    因為匿名登錄,跳過輸入用戶名和密碼后輸入:

    ftp>user anonymous

    再次跳過輸入密碼,此時會顯示登錄成功的字樣。

     

    5. 關閉防火墻。此時去同一網段的主機訪問ftp,會發現一直鏈接不上。暫時了解到的是現在的linux系統為了更好地控制 IP 信息包過濾和防火墻配置,使用了iptables的東西。首先得關閉SElinux,該配置文件在/etc/selinux/下:

    #vim /etc/selinux/config

    找到相應語句,將其改成:SELINUX=disabled

    重啟之后,如果發現還不行,則暫時的辦法可以關閉整個防火墻(不推薦):

    #sudo service iptables stop

    到了此步則肯定能從別的主機訪問自己搭建的ftp的,只是可能還需要涉及文件夾權限問題,修改之后就能實現文件上傳下載了。

    完畢。

     

    【補充】

    若出現vsftpd: refusing to run with writable anonymous root的錯誤,大概是ftp目錄權限問題,修正方法:

    chown root:root /var/ftp
    chmod 755 /var/ftp

    posted @ 2013-08-26 22:31 abing 閱讀(276) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 青草草色A免费观看在线| 亚洲最大在线观看| 亚洲高清视频一视频二视频三| 毛片基地免费观看| 成年女性特黄午夜视频免费看 | 青青免费在线视频| 337p日本欧洲亚洲大胆人人| 亚洲av无码日韩av无码网站冲| 亚洲AⅤ男人的天堂在线观看| 亚洲а∨精品天堂在线| 国内成人精品亚洲日本语音 | 精品亚洲AV无码一区二区 | 国产亚洲人成无码网在线观看| 亚洲老妈激情一区二区三区| 亚洲第一AAAAA片| 亚洲嫩模在线观看| 亚洲黄色网址大全| 久久久久精品国产亚洲AV无码| 亚洲精品综合在线影院| 精品亚洲av无码一区二区柚蜜| 一本到卡二卡三卡免费高| 香蕉视频在线免费看| 鲁丝片一区二区三区免费| 最好看最新的中文字幕免费 | a视频免费在线观看| 2021在线永久免费视频| 曰批视频免费30分钟成人| 精品国产免费一区二区| 亚洲国产成人久久精品99| 国产亚洲精品无码成人| 亚洲精品韩国美女在线| 亚洲日产乱码一二三区别| 全部在线播放免费毛片| 国产午夜无码精品免费看| 一色屋成人免费精品网站| 国产无遮挡裸体免费视频| 最新精品亚洲成a人在线观看| 亚洲欧洲免费视频| 亚洲精品无码你懂的| 久久毛片免费看一区二区三区| 91成人在线免费视频|