原创 鏈表有環找入口的問題

之前遇到過這個問題,記得方法是先分別用兩個快、慢指針,讓他們在環中相遇,然後一個從頭結點,一個從相遇點,都一次走一步,相遇點即爲入口點。 但是關於這個結論的證明,看了網上好幾個博客,感覺都說的不夠清晰,印象中有一篇講得還不錯,還

原创 Ubuntu下用fn調節亮度沒有反應

參考資料: http://www.cnblogs.com/droidxin/p/3695174.html http://www.cnblogs.com/congbo/archive/2012/09/12/2682308.htm

原创 Java泛型中遇到的協變問題

學習Java的泛型寫程序時經常出現編譯器報錯,對於數據類型的轉換安全問題。以下爲轉載: 原文地址:http://www.cnblogs.com/en-heng/p/5041124.html 看下面一段代碼 Number num

原创 Java線程池核心類ThreadPoolExecutor

  通常,當需要同時處理的任務比較多時,爲了避免爲每個任務開一個線程(因爲這樣會導致頻繁的線程開啓和銷燬,開銷較大),採用線程池技術來進行線程資源的複用。   在應用中,我們通常使用Executors類提供的靜態方法來使用線程池

原创 Java阻塞隊列與管程

由於Java提供的用戶級線程,這使得在Java中我們可以看到更多的關於線程的東西。 最近看操作系統,在生產者消費者模型中,經典的信號量、互斥量解決方式之外,還有一種管程的解決方案。管程實際上是比信號量更高級的一種同步原語。 發現在

原创 CountDownLatch、CyclicBarrier和Semaphore

三個併發編程中的輔助類 CountDownLatch 主要實現類似計數器的功能,比方說共有N個工作線程,主線程需要等待N個工作線程都完成之後才能繼續運行,類似這樣的場景就可以用到CountDownLatch。 主要有兩個方法:c

原创 Runnable、Callable和Future

  我們通常說,在Java裏面起多線程有兩種方法:直接繼承Thread類或者是實現Runnable接口。但是這兩種方法都不能有直接的返回值,因爲run方法是void類型,也沒有提供其他的可以返回某類型的方法,我們可以通過線程間通信

原创 併發:阻塞隊列與生產者消費者模型

  對於生產者消費者模型,如果我們採用常規的容器,那麼我們需要同步,並且需要在生產者線程和消費者線程之間做wait和notify的線程間通信。而阻塞隊列將同步操作和生產者和消費者間的通信在容器內部實現,使用起來就不需要我們自己做同

原创 操作系統---線程

POSIX線程 線程包的實現 1.用戶級線程包 線程的創建在用戶空間中完成,多線程的存在對內核透明 優點: 線程的創建、撤銷、切換 快 允許定製調度算法 缺點: 阻塞的系統調用的問題,採用select方式效率也不夠高,

原创 操作系統---相關概念

1. 進程和地址空間的概念 進程包括: 地址空間:代碼段、數據段、堆棧段 相關的資源集(對應的數據結構—進程表 process table):存放在操作系統中(內核空間?) 2. 系統調用 系統調用? 系統調用就像進

原创 測試

public Future<?> submit(Runnable task) { if (task == null) throw new NullPointerException(); Runnab

原创 LeetCode Medium : Search Insert Position

題目:https://leetcode.com/problems/search-insert-position/ 典型的二分查找實現思路 但是需要注意,這裏相當於要在數組中查找最小的、大於等於目標值的元素下標,注意更新左邊界條

原创 String,StringBuffer,StringBuilder 三者的區別

String,StringBuffer,StringBuilder 三者的區別? String是final的,當對String進行改變的時候,其實會生成一個新對象:經常改變的對象建議不要使用String,而是使用StringBu

原创 操作系統---進程/線程 間通信

進程間通信 三個問題: 進程間的信息傳遞方式 對共享變量的訪問 進程間執行順序的問題 競爭條件:多個進程訪問共享變量,結果取決於進程運行時的精確時序。 臨界區: 互斥訪問 忙等待互斥:屏蔽中斷、鎖變量、嚴格輪換、Per

原创 JavaIO之OJ上面的輸入輸出

Scanner類 Q:nextInt()、nextLine()、next()三個典型的方法有何區別? A:nextInt()讀取下一個int型標誌的token,焦點不會移動到下一行,使用nextLine()方法時會讀取該行剩餘的所有的內