原创 java併發編程實踐學習(2)共享對象

一.可見性 當對象在從工作內存同步到主內存之前,那麼它就是不可見的。若有其他線程在存取不可見對象就會引發可見性問題,看下面一個例子: public class NoVisibility { private static boo

原创 java併發編程實踐學習(1)線程安全

編寫線程安全的代碼就是管理對線程中的數據 共享是指一個變量可以被多個線程訪問 可變是指變量的值可以在其生命週期內改變 一.線程安全性** 線程安全是指多個線程在訪問一個類時,如果不需要額外的同步,這個類的行爲仍然是正確的。

原创 java網絡爬蟲學習記錄(二)抓包分析

一、網絡抓包工具介紹和選擇 1.1 按面向的對象分類 瀏覽器抓包工具和全局抓包工具 瀏覽器抓包工具: IE Developer(自帶) Chrome Developer(自帶)

原创 java併發編程實踐學習(3)組合對象

一.設計線程安全的類 設計線程安全類的過程應該包括下面3個基本要素 確定對象狀態是由哪些變量構成 確定限制狀態變量不受約束 制定一個管理併發訪問對象狀態的策略 對象的狀態首先要從域說起,如果對象的域都是基本類型,那麼這些域就組

原创 java併發編程實踐學習(4)構建塊

一.同步容器 同步容器包括倆部分Vector和HashTable,這些類由Collection.synchronizedxxx工廠方法創建,這些類通過封裝他們的狀態,並對每一個公共方法進行同步而實現了線程的安全,這樣一次只能有一個

原创 java併發編程實踐學習(6 )任務執行

一.在線程中執行任務 圍繞執行任務來管理應用程序時,首先要清晰任務邊界。理想情況下,任務是獨立的活動:它的工作並不依賴於其他任務的狀態,結果,或者邊界效應。獨立有利於併發性,如果能得到相應的處理器資源,獨立的任務可以並行執行。

原创 java併發編程實踐學習(5)構建塊爲計算結果建立高效,可伸縮的高速緩存

幾乎每一個服務器應用程序都會使用某種形式的高速魂村。複用已有的計算結果可以縮短等待時間,提高吞吐量,代價是佔用更多的內存。 在下面例子中Computerable public interface Computable<A,V>{

原创 java網絡爬蟲學習記錄(一)概述

在學習爬蟲之前首先得了解爬蟲,爬蟲是什麼,爬蟲就是一種按照一定的規則,自動地抓取萬維網信息的程序 或者腳本。 注:下面的內容轉自教程中老師的筆記 一、網絡爬蟲原理 1.1 等同於瀏覽器訪問網頁的原理 (1)真人行爲驅動

原创 mysql查詢插入如果重複就更新

在MySQL中插入如果存在就更新,可以使用 ON DUPLICATE KEY UPDATE 當有唯一索引時,如果唯一索引重複就會執行更新操作 也可以使用分佈式鎖進行先查詢在判斷不存在再插入,存在更新.但是這只是一個簡單業務,爲了方便

原创 MySQL更新時根據條件判斷是否要更新,解決併發場景下重複問題

在工作中遇到這樣一個場景,老師可以在多個課程中選擇自己可以上課的時間,但是當學生約老師的這個時間的時候就要求時間不可以有衝突(在相同的時間內只能有一個課程被約) 數據庫設計如下 appointment表 id teacher_i

原创 Dubbo tomcat啓動報錯

Dubbo tomcat啓動報錯 Tomcat中duboo啓動時候報錯 Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type:

原创 緩存行、cpu僞共享和緩存行填充

由於在看disruptor時瞭解到緩存行,以及緩存行填充的問題,所以各處瞭解記在這裏 一、緩存行 CPU 爲了更快的執行代碼。於是當從內存中讀取數據時,並不是只讀自己想要的部分。而是讀取足夠的字節來填入高速緩存行。根據不同的 CPU ,高

原创 java併發編程實踐學習(14 ) 構建自定義的同步工具

##一.管理狀態依賴性 在單線程化的程序中,如果調用一個方法時,依賴於狀態的先驗條件爲滿足(比如連接池非空),那麼這個先驗條件就無法變爲真。但是在併發程序中,基於狀態的先驗條件會在其他線程的活動中被改變。對於併發對象,依賴於狀態的方法有

原创 java併發編程實踐學習(8) 應用線程池

一.任務執行策略間的隱性耦合 Executor框架可以將任務的提交和執行策略解耦,但是並非能夠適合所有的執行策略。有些任務需要明確指定一個執行策略: 依賴性任務。如果你提交給線程池的任務要依賴於其它的任務,你就隱式的給執行策略帶來了約束

原创 創建型模式(一)ABSTRACT FACTORY(抽象工廠)-對象創建型模式

1.意圖 提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類, 2.別名 Kit 3.動機 我的工廠需要生產的產品是一系列的對象,而不是一個單一的對象時需要抽象工廠來解決。 首先我們先來了解倆個概念 1)產品等級結構