原创 2.2線程的併發工具類-CountDownLatch、CyclicBarrier

一、CountDownLatch 1、作用 一組線程等待其他線程完成工作之後再執行,比較像加強版的join 下面演示下用法,5個線程6個扣除點,等待5個線程工作完成後,業務線程才進行自己的邏輯處理。 package cn.enjo

原创 2.1 線程的併發工具類-fork/join

一、fork/join框架的理念 1、分而治之 規模爲N的問題,當N<閾值的時候,可以直接處理解決。當N>閾值,將N分解爲K個小規模子問題。子問題需互相獨立,要與原問題形式相同,遞歸的解決子問題,合併子問題的解,得到原問題的解。

原创 Kafka入門-認知+配置優化

1.kafka整體概念 不僅僅是一個消息中間件, 可以看作是一個流平臺、可以訂閱發佈數據流,並且把數據保存起來進行處理。是一個分佈式的以集羣形式運行的中間件。kafka的低延時所以被用來作爲核心的業務應用上。消息天生持久化:數據存

原创 二、mysql權限系統

前言:Mysql重要性、安裝等本大章節不做闡述。主要講述mysql使用mysql權限、架構與存儲引擎、業務設計、mysql優化 一、簡單的權限使用 grant SELECT on mall.* TO 'dev'@'192.168.

原创 1.3 線程間共享於協作-等待通知機制、等待超時機制實現數據庫連接池。wait、notify、notifyAll,join

一、等待與通知機制、等待超時機制 前言 本文主要是講述等待與通知機制和等待與超時機制,三者都是利用wait(),notify(),notifyAll()的使用來實現的。java中的這三個併發屬性是屬於對象的。所以各個線程在操作時候

原创 1.2 java線程間的共享與協作

java線程中斷機制 一、java線程的工作方式 java線程之間的工作方式是協作式的,需要自己手動去結束線程,獲取中斷標誌位,進而進行處理,或者判斷當前中斷標誌位是否是true,false就繼續執行自己的業務代碼,不是就直接跳出

原创 3.1 原子操作CAS

一、原子操作 1、概念 原子操作就是在執行某一操作時,不會被打斷。不會存在中間態,所以就不會存在併發引起的數據不一致問題。 對於arm來說,單條彙編指令都是原子的,多核smp也是,因爲有總線仲裁所以cpu可以單獨佔用總線直到指令結

原创 七、編寫高效優雅的java程序

一、面向對象 1、構造器參數太多 如果參數很多,會導致構造方法非常多,拓展性差,代碼難編寫,且難以看懂。 用 JavaBeans 模式,get 和 set 一行構造編程多行代碼實現,需要使用額外機制確保一致性和線程安全。 用 bu

原创 一、Mysql 架構體系

前言 瞭解Mysql的架構體系,對mysql的學習以及性能優化有很大的幫助。比如很多查詢優化工作實際上就是遵循服務層的一些原則讓mysql優化器能夠按照預想的合理方式運行。mysql整體架構分爲4層,如下圖。 自頂向下分別爲:網絡

原创 4.2 java併發容器 concurrentSkipListMap、concurrentSkipListSet、寫時複製容器、阻塞隊列、延時訂單的實現

一、concurrentSkipListMap、concurrentSkipListSet concurrentSkipListMap、concurrentSkipListSet是兩個有序的容器,可以理解爲是treeMap和tre

原创 2.3 線程的併發工具類-Semaphore(信號量)、Exchanger

一、Semaphore 1、作用 控制訪問某一特定資源的線程數量,例如數據庫連接、mq連接等等 2、舉例說明 1)下面舉個例子,讓兩個線程交替打印ABABABABABAB,不能同時打印AA或者BB package cn.enjoy

原创 三、Mysql數據類型

一、Int類型 /前後分別爲有符號和無符號大小 類型 字節 最小值 最大值 TINYINT 1 -128/0 127/255 SMALLINT 2 -32768/0 32767/65535 MEDIUMINT

原创 四、mysql核心-鎖與事務

前言: 關於什麼是鎖,爲什麼需要鎖等概念這裏不做解釋了,可以看下我的另一諞關於jdk中併發的欄目,其中介紹了併發的各種只是框架,包括鎖以及jdk的鎖實現等等。併發編程、鎖等知識框架 一、mysql中的鎖 本章節講述表鎖和行鎖,g

原创 六、mysql性能優化

一、慢查詢 1、慢查詢日誌 是指 mysql 記錄所有執行超過long_query_time參數設定的時間閾值的 SQL 語句的日誌。 2、慢查詢配置 # 默認 10 秒,這裏爲了演示方便設置爲 0 set global lon

原创 2.4線程併發工具-Callable、Future和FutureTask原理+源碼解析

一、Callable、Future和FutureTask概述 1、Callable和Runnable的區別 Executor框架使用Runnable作爲其基本的任務表示形式。Runnable是一種侷限性很大的抽象,它沒有返回值並且