原创 Java實現anagram算法

最近碰見一道面試題,是關於anagram算法的,問題很簡單:給定兩個字符串,每個字符包含中英文,空格,大小寫等等,如果這兩個字符串在忽略大小寫和空格的情況下,如果相同字符出現的次數相同,則互爲anagram。 例如 “我愛 中華 I lo

原创 術語Override,Overload,Hide,Shadow,Obscure的解釋

Override,即重寫,Java最基礎的編程技巧之一。僅針對實例方法,並且能夠被子類所訪問, 且子類該方法的訪問權限至少大於父類。遵循運行期綁定原則。 Overload,即重載,Java最基礎的編程技巧之一。要求方法名相同,簽名不同(參

原创 瞭解intern(),瞭解字符串常量池

intern()是String一個api,平時不常用,但是面試可能會考,掌握intern可避免被面試官問到時大眼瞪小眼的尷尬局面。 當一個String對象調用intern()方法時,會首先檢查字符串常量池中是否存在equals相等的字符串

原创 Java模擬ReentrantLock實現自己的顯示鎖BooleanLock

一、前言 Java通過synchronized關鍵字來爲我們提供線程安全的保證,大多數情況下使用synchronized是沒有問題的,然而synchronized有自身的缺陷。例如:當其它線程持有鎖時,當前請求獲取鎖的線程必須等待。等待的

原创 阿里雲CentOs7部署Tomcat運行shutdown.sh報錯

大概提示SEVERE: Could not contact localhost:8005. Tomcat may not be running.這個錯誤消息。搗鼓一番,發現是tomcat根本就沒有啓動成功導致的。 1.驗證tomcat是否

原创 execute和submit的區別與聯繫

execute和submit都屬於線程池的方法,execute只能提交Runnable類型的任務,而submit既能提交Runnable類型任務也能提交Callable類型任務。 execute會直接拋出任務執行時的異常,submit會吃

原创 Java正確地終止線程

首先要明確的是Java沒有提供任何機制來安全的終止線程。 Java雖然提供了stop方法來終止線程,但是這種方式簡單粗暴,很可能造成數據不一致的情況,因此stop方法已經棄用了。 目前較爲安全地終止線程方式有兩種: 1)使用標誌位,讓線程

原创 瞭解循環屏障CyclicBarrier

CyclicBarrier是常用的同步輔助工具類,它的作用是讓一組線程達到屏障點時被阻塞,直到指定數量的線程都達到屏障點,才取消阻塞,此時被阻塞的線程才能繼續執行。循環屏障可以重複使用。 SyclicBarrier構造方法有兩個Cycli

原创 瞭解join()和CountDownLatch的差異

一、join() join()是線程對象的成員方法,功能是等待調用join()的線程對象執行完畢,才執行其它的邏輯。 假設我們有三個線程, 主線程,子線程B和C。在主線程中若調用了子線程的join方法,則必須等待子線程執行完畢,纔會繼續執

原创 Windows下使用Apache運行本地Python腳本和訪問html教程

最近學習到Python的cgi編程,搗鼓了一番,把自己的學習經驗放出來。一、安裝Apache2.4服務器你需要去官網下載。地址:https://www.apachehaus.com/cgi-bin/download.plx或者http:/

原创 初探RestTemplate--解決中文亂碼問題

本文完全承接上一篇文章:初探RestTemplate--postForObject方法直接傳遞對象,如果你還沒有看過,建議先閱讀完再看下去。如果你沒有興趣也可以直接拉到本文末尾,查看我對中文亂碼的解決方案。我們在TestControlle

原创 非線程安全的ListHelper

Java併發編程實戰這本書裏提到了使用Collections.synchronizedList可以創建線程安全的容器,同時給了一個沒有正確使用該容器的反例ListHelper,這個反例看起來實現了同步,然而由於鎖不一致導致它並不是一個線程

原创 瞭解信號量Semaphore和線程池的差異

一、首先要明白Semaphore和線程池各自是幹什麼? 信號量Semaphore是一個併發工具類,用來控制可同時併發的線程數,其內部維護了一組虛擬許可,通過構造器指定許可的數量,每次線程執行操作時先通過acquire方法獲得許可,執行完畢

原创 Java等待線程池終止

1、輪詢isTerminated: while (!service.isTerminated()) { TimeUnit.SECONDS.sleep(1); } 2、輪詢await

原创 RestTemplate報錯:no suitable HttpMessageConverter found for request type

某天試用RestTemplate調試,瀏覽器直接提示: This application has no explicit mapping for /error, so you are seeing this as a fallback.