原创 Java挑戰併發(1):可重入內置鎖

每個Java對象都可以用做一個實現同步的鎖,這些鎖被稱爲內置鎖或監視器鎖。線程在進入同步代碼塊之前會自動獲取鎖,並且在退出同步代碼塊時會自動釋放鎖。獲得內置鎖的唯一途徑就是進入由這個鎖保護的同步代碼塊或方法。 當某個線程請求一個由

原创 Java挑戰高併發(2):線程中斷

] 使用interrupt()中斷線程 當一個線程運行時,另一個線程可以調用對應的Thread對象的interrupt()方法來中斷它,該方法只是在目標線程中設置一個標誌,表示它已經被中斷,並立即返回。這裏需要注意的是,如果只是單

原创 linux網絡編程之 select 機制的使用

select機制簡介: 在傳統的網絡編程方式中,在使用accept和recv等阻塞函數的時候,會造成應用程序阻塞,進而造成程序響應不及時(比如服務器在等待一個客戶端發送數據,那麼沒有被等待的另一個客戶端此時發送給服務器的數據

原创 springboot下配置junit測試環境

項目中使用到了spring_boot,我想在項目中寫一些單元測試,但是由於對springboot 不熟悉並且springboot的中文資料非常的少,所以花了很長的時間才把springboot的junit測試環境搭好,雖然很簡單,但是也發出

原创 java造輪子之自己寫簡單的HTTP服務器

大概介紹一下原理吧,瀏覽器打開網頁可以簡單分爲3個階段: 1.通過socket向服務器發送一個符合一定格式的請求字符串(裏面包含了用戶輸入的網址),比如: Accept text/html,application/xhtml+

原创 Java挑戰高併發(3) 線程掛起、恢復與終止的正確方法(含代碼)

掛起和恢復線程     Thread 的API中包含兩個被淘汰的方法,它們用於臨時掛起和重啓某個線程,這些方法已經被淘汰,因爲它們是不安全的,不穩定的。如果在不合適的時候掛起線程(比如,鎖定共享資源時),此時便可能會發生死鎖條件——其

原创 java字符串 輸入流 相互轉換

/** * 將一個字符串轉化爲輸入流 */ public static InputStream getStringStream(String sInputString){ if (sInputString != nu

原创 java-web之servlet中的線程安全問題

一,servlet容器如何同時處理多個請求。 Servlet採用多線程來處理多個請求同時訪問,Servelet容器維護了一個線程池來服務請求。 線程池實際上是等待執行代碼的一組線程叫做工作者線程(Worker Thread),Serv

原创 在解析XML文件的時候報出異常,應該有爲僞屬性名!!!

先看我的一個xml文件的片段: <?xml version="1.0" encoding="UTF-8" ><音樂庫>   <音樂 格式="mp3">      <名稱>愛是最大權利</名稱>   <位置>C:\chengxu\ec

原创 java7新特新(一) Try-with-resources (TWR)

Try-with-resources (TWR)  在處理IO的代碼中,我們會使用大量的try...catch()...finally...語法,其中會在finally進行IO的close操作,寫過python的都知道,這種操作可以使

原创 正則表達式之密碼效驗(檢驗密碼是含有小寫字母、大寫字母、數字、特殊符號的兩種及以上)

背景: 公司新系統需要實現一個註冊功能,需要寫一個正則表達式來檢驗一個密碼是否含有小寫字母、大寫字母、數字、特殊符號的兩種及以上 答案: ^(?![A-Z]+$)(?![a-z]+$)(?!\d+$)(?![\W_]+$)\S{6,16

原创 java挑戰高併發(7):java 線程中yield的用法

Thread.yield()方法作用是:暫停當前正在執行的線程對象,並執行其他線程。   yield()應該做的是讓當前運行線程回到可運行狀態,以允許具有相同優先級的其他線程獲得運行機會。因此,使用yield()的目的是讓相同優先級的線程