資安

資安

發送問題排查 | 《Rocket MQ 使用排查指南》第二章

上一章:什麼是消息隊列Rocket MQ| 《Rocket MQ 使用排查指南》第一章>>> 下一章:消費問題排查 | 《Rocket MQ 使用排查指南》第三章>>> 點擊免費下載《Rocket MQ 使用排查指南》>>> 也可以PC端點擊https://developer.aliyun.com/topic/download?id=820下載 發送問題排查 客戶端發送性能問題 發送消息耗時久 【問題描述】:通過消息軌跡查詢到,MQ 消息發送的耗時達到秒級之上。 【排查步驟】: […]

資安

共享鎖和排它鎖

@[toc] 共享鎖和排它鎖 以 ReentranReadWriteLock 讀寫鎖為例 什麼是共享鎖和排它鎖 排它鎖,又稱獨佔鎖,獨享鎖 synchronized就是一個排它鎖 共享鎖,又稱為讀鎖,獲得共享鎖後,可以查看,但無法刪除和修改數 據, 其他線程此時業獲取到共享鎖,也可以查看但是 無法修改和 刪除數據 共享鎖和排它鎖典型是ReentranReadWriteLock 其中,讀鎖是共享鎖,寫鎖是 排它鎖 讀寫鎖的作用 在沒有讀寫鎖之前,我們使用的是ReentrantLock ,雖然我們保證了線程安全,,但是業浪費了一定的資源,多個讀操作同時進行,是不會出現線程安全問題 讀寫鎖的規則

資安

設計模式–單例模式

@[toc] 什麼是單例 保證一個類只有一個實例,並且提供一個訪問該全局訪問點 1.Windows的Task Manager(任務管理器)就是很典型的單例模式2.windows的Recycle Bin(回收站)也是典型的單例應用。在整個系統運行過程中,回收站一直維護著僅有的一個實例3.數據庫連接池,線程池,spring(默認單例模式)都是單例 為什麼要設計成單例 ?單例的好處?優缺點? **單例好處:節約內存,只有一個實例,重複利用,方便管理 缺點:線程安全問題** 單例創建方式 **1.餓漢式:類初始化時,會立即加載該對象,線程天生安全,調用效率高。2.懶漢式: 類初始化時,不會初始化該對象,真正需要使用的時候才會創建該對象,具備懶加載功能。3.靜態內部方式:結合了懶漢式和餓漢式各自的優點,真正需要對象的時候才會加載,加載類是線程安全的。 4.枚舉單例: 使用枚舉實現單例模式 優點:實現簡單、調用效率高,枚舉本身就是單例,由jvm從根本上提供保障!避免通過反射和反序列化的漏洞, 缺點沒有延遲加載。** 1.餓漢式實現 2.懶漢式實現 3.枚舉創建單例

資安

Atomic原子類-1

@[toc] 什麼是原子類 不可分割的 一個操作是不可中斷的,即使多線程的情況下業可以保證 java.util.concurrent.atomic 原子的作用和鎖類似,是為了保證線程併發情況下線程安全,不過原子類相比於鎖,有一定的優勢 優勢:粒度更細,原子變量可以吧競爭範圍縮小到便倆個級別,這就是我們可以獲取哦最細粒度的,通常鎖的粒度大於鎖的粒度 優勢:效率更高 原子類 java.util.concurrent.atomic包:原子類的小工具包,支持在單個變量上解除鎖的線程安全編程原子變量類相當於一種泛化的 volatile 變量,能夠支持原子的和有條件的讀-改-寫操作。AtomicInteger 表示一個int類型的值,並提供了 get 和 set 方法,這些 Volatile 類型的int變量在讀取和寫入上有著相同的內存語義。它還提供了一個原子的 compareAndSet

資安

併發編程–三大特性

@[toc] 多線程有三大特性 原子性、可見性、有序性 1.什麼是原子性 即一個操作或者多個操作 要麼全部執行並且執行的過程不會被任何因素打斷,要麼就都不執行。一個很經典的例子就是銀行賬戶轉賬問題: 比如從賬戶A向賬戶B轉1000元,那麼必然包括2個操作:從賬戶A減去1000元,往賬戶B加上1000元。這2個操作必須要具備原子性才能保證不出現一些意外的問題。我們操作數據也是如此,比如i = i+1;其中就包括,讀取i的值,計算i,寫入i。這行代碼在Java中是不具備原子性的,則多線程運行肯定會出問題,所以也需要我們使用同步和lock這些東西來確保這個特性了。 原子性其實就是保證數據一致、線程安全一部分, 2.什麼是可見性 當多個線程訪問同一個變量時,一個線程修改了這個變量的值,其他線程能夠立即看得到修改的值。若兩個線程在不同的cpu,那麼線程1改變了i的值還沒刷新到主存,線程2又使用了i,那麼這個i值肯定還是之前的,線程1對變量的修改線程沒看到這就是可見性問題。 3.什麼是有序性 程序執行的順序按照代碼的先後順序執行。一般來說處理器為了提高程序運行效率,可能會對輸入代碼進行優化,它不保證程序中各個語句的執行先後順序同代碼中的順序一致,但是它會保證程序最終執行結果和代碼順序執行的結果是一致的。如下:int a = 10; //語句1int r =

資安

多線程–JUC-安全

@[toc] 從底層原理來進行分類 互斥同步 **使用各種互斥鎖 Synchronized ReentrantLock Readwritelock** **使用同步工具Collections.synchronized(new ArrayList)等Vector deng** 非互斥同步 原子類 atomic包 原子類 基本類型 :AtomicInteger 整形,AtomicLong 長整型AtiomicBoolean 布爾 Array數組

資安

視覺AI應用開發創物營開營啦!5天時間帶你體驗視覺AI開發的無限魅力!

2020年9月有兩件值得大家關注的事情,蘋果發佈會以及雲棲大會,兩個科技向大會今年全部將在線上舉行,用技術力向大家展現一場視覺盛宴。本次雲棲大會將會發布大量達摩院未公開的黑科技,其中視覺AI將會作為人工智能的基石開啟人工智能新時代。本次視覺AI應用開發創物營將給大家介紹如何以最快最方便的方式調用達摩院的視覺API調用視覺AI能力。 報名時間:8月11日-8月18日上課時間:8月19日-8月23日 課程亮點:達摩院限時開放所有視覺API免費調用,包括人臉識別、文字識別、圖像識別、內容安全、視頻技術等13大類120+能力供開發者免費使用!阿里雲開發者社區聯合達摩院精心打造本期視覺AI應用開發創物營,5天時間帶你體驗視覺AI開發的無限魅力! 課程一覽:Day1 視覺智能入門Day2 電子書學習Day3 身份證識別Day4 電子相冊Day5 玩轉百寶箱 打卡獎勵:訓練營課程期間,在授課日當天完成課程學習並在課程頁面完成打卡,連續打滿5天即可獲得視覺AI應用開發創物營電子證書一張!更有精彩活動贏取精美禮品。具體打卡獎勵規則以報名頁面及班群通知為準。 視覺AI應用開發創物營報名直通二維碼: 視覺AI應用開發創物營班級釘群二維碼:

資安

數據庫–一條SQL查詢語句是如何執行的?

01 | 基礎架構:一條SQL查詢語句是如何執行的? 這是專欄的第一篇文章,我想來跟你聊聊 MySQL 的基礎架構。我們經常說,看一個事兒千萬不要直接陷入細節裡,你應該先鳥瞰其全貌,這樣能夠幫助你從高維度理解問題。同樣,對於 MySQL 的學習也是這樣。平時我們使用數據庫,看到的通常都是一個整體。比如,你有個最簡單的表,表裡只有一個 ID 字段,在執行下面這個查詢語句時: mysql> select * from T where ID=10; 我們看到的只是輸入一條語句,返回一個結果,卻不知道這條語句在 MySQL 內部的執行過程。

資安

Linux萌芽 | 計算機百年趣味史(下)第11篇

上一篇:PC時代 | 計算機百年趣味史(上)第9-10篇 本文作者:衍雲 從上篇計算機硬件發展歷史中,我們知道1962年MIT計算中心使用IBM 7094研發了Compatible Time-Sharing System (CTSS)兼容的分時操作系統,當時硬件條件不符合,所以並不流行。 而當1964年,System/360發佈後,硬件具備保護機制後CTSS開始逐步流行。 1965年,隨著CTSS的成功,人們也開始試圖使用一臺計算機來滿足波士頓地區所有用戶的計算需求,因此貝爾實驗室(Bell Labs)加入了由通用電氣(General Electric)和麻省理工學院(MIT)合作的計劃;該項目要建立一套多使用者、多任務、多層次(multi-user、multi-processor、multi-level)的MULTICS(Multiplexed Information and Computing Service縮寫)操作系統,我們可以從名字看到起要實現的目標(不過這也應了《三國演義》中的一句老話,天下大勢久分必合久合必分,當時MULTICS的設計目標不就是現在的雲計算想做的嗎,一個數據中心向整個地區提供計算相關服務,不過雲計算不是一臺機器而是一大群)。 11.1 UNIX誕生 由於MULTICS的工作進度太慢,該計劃在1969年就被停下來了。雖然MULTICS商業上失敗了,但是需要肯定的是,在MULTICS中產生了大量的概念和雛形,影響著後來的操作系統。最後一個MULTICS的用戶是加拿大國防部,其在2000年10月停止了該系統。

資安

初心迥異 | ARM和X86的系統架構差異分析(篇一)

作者 | 衍雲 本週項目組有探討到ARM和X86的架構最大差異點是什麼? 差異很可能在最早的時候就已經確定了,那就是他們的初“心”(體系架構)。 ARM和X86之間的體系架構分歧明顯,架構的各自優點也確定了它們各自在市場中的地位。而如今處理器的底層技術卻又不斷的在融合,市場也出現了交集。 曾經的兩條平行線,如今終於要交叉,面臨廝殺。現在ARM讓IntelX86感到了壓力,但是螳螂捕蟬黃雀在後,新出來的RISV-V卻又讓ARM難受很多。 本系列分析這三者體系架構差異和具體處理器微架構之間的差異,也是《國產處理器的架構現狀和演進》續,也是又一次探討和進一步拋磚,那麼讓“初心”開始,也迴歸技術的初心。 PS:ARM架構和優化專題:https://www.atatech.org/specials/698?spm=ata.13269424.0.0.83c15f857Fk0zv 本系列涉及的面比較多,有些點到為止,有些則有細化討論。都是在週末連續的大塊時間中素材提煉和文字整理的,信息量個人感覺還有挺多,建議同學們進行收藏,茶餘飯後慢慢看。 初心迥異——篇一 處理器(Central Processing Unit)本身其主要由運算器、控制器、寄存器三部分組成,完成程序控制、操作控制、時間控制、數據加工,所有設備都圍繞它展開。大邏輯上其實非常簡單,但細化開來確是那麼的複雜,其主要組成部分如下圖所示。正如很多疑難問題,從頂層設計向下看底層的時候可以抽象的相對簡單,但是當立足底層視角的時候,總會碰到一些難題。 上篇中,我們先來看看ARM和Intel,他們的迥異初心。 ARM ARM公司最早是由赫爾曼·豪澤(Hermann Hauser)和工程師Chris Curry在1978年創立(早期全稱是 Acorn

Scroll to Top