開發與維運

開發與維運

萬字長文帶你徹底理解synchronized關鍵字(上)

一、簡介 Synchronized一句話來解釋其作用就是:能夠保證同一時刻最多隻有一個線程執行該段代碼,以達到併發安全的效果。也就是說Synchronized就好比是一把鎖,某個線程把資源鎖住了之後,別人就不能使用了,只有當這個線程用完了別人才能用。 對於Synchronized關鍵字來說,它是併發編程中一個元老級角色,也就是說你只要學習併發編程,就必須要學習Synchronized關鍵字。由此可見其地位。 說了這麼多,好像我們還沒體驗過它的威力。我們就直接舉個例子,來分析一下。 public class SynTest01 implements Runnable{ static int a=0; public static void main(String[] args) throws InterruptedException { […]

開發與維運

clickhouse與火焰圖

最近再對clickhouse hive engine進行一些調優工作。本文將總結調優過程中常用的一些工具和命令。 火焰圖 火焰圖 (Flame Graph) 是性能優化大師 Bredan Gregg 創建的一種性能分析圖標,因為它的樣子近似火焰而得名。使用火焰圖能夠非常快速的定位到代碼中的瓶頸,它就像一個在代碼之海中航行的程序員的地圖,指引著性能優化的方向。下圖是clickhouse的一張火焰圖。 火焰圖的上下表示調用關係,下層的函數調用上層的函數。每個函數對應一個等高的長條,這個長條對應著該函數的某項指標,如cpu time/real time/memory allocate. 根據不同的指標,火焰圖可以分為: cpu火焰圖。顯示代碼中函數的cpu耗時,函數寬度與cpu time成正比。主要用於分析進程中的cpu瓶頸 real火焰圖。顯示代碼中函數的duration耗時,函數寬度與real time成正比。與cpu火焰圖結合可用於分析進程中的io瓶頸

開發與維運

【圖像去噪】基於變分偏微分方程HNHOTV_OGS算法實現稀疏圖像去噪附matlab代碼

1 簡介 如今,人類已進入圖像的大數據時代,圖像處理技術深入到生物醫學、天文觀測、 社交通信、電影製作和視頻監控等各個領域。諸如武器的制導、偵測目標和打擊評估等軍事任務,數字成像技術和圖像處理技術在軍事領域發揮了至關重要的作用。可見光、紅外和合成孔徑雷達等成像技術,在歷次高科技戰爭中,始終貫穿始末,軍事裝備的信息化水平被大大提高,傳統的作戰,無論是方式,還是理念,都被根本地顛覆。因為不確定的成像環境和採集過程的隨機性,往往獲得的圖像不清晰,視覺效果差。圖像去模糊(反捲積)往往存在病態性,且這種病態性是本質上的,在無正則化措施的前提下無法消除,從而使我們獲得的復原圖像不夠清晰。由噪聲引起的圖像退化,造成分辨率下降,嚴重影響後續的判讀分析、模式識別和特徵提取等工作。真實可靠的信息,我們都希望獲得,為了對圖像進行後續的高級處理和應用,需對其進行預處理,如去噪、去模糊、壓縮感知重建等。我們可以基於硬件和軟件的角度對圖像實施去噪處理,比如使用質量更好的 CCD 和 CMOS 傳感器來採集圖像,改善成像系統,但不夠靈活而且價格較高,所以往往傾向於基於軟件層面對算法進行改進以達到去除圖像噪聲的目的。例如,利用紅外製導技術的超聲速巡航武器,其光學探頭與大氣的劇烈作用,會產生複雜的湍流場並使氣體密度發生改變,對成像系統造成干擾,並影響圖像的傳輸,所成的像,就會發生偏移和模糊。 基於偏微分方程的濾波方法作為一種有效的圖像去噪方法,受到了學者們的廣泛研 究。傳統的濾波方法在一定程度上能夠消除噪聲,但在保持圖像特徵信息方面的效果不太理想,基於偏微分方程的圖像去噪方法能夠有效地平衡去除噪聲和保持圖像結構信息方面之間的矛盾,使去噪圖像能夠得到很好的視覺效果。本文主要研究的是將偏微分方程應用於圖像去噪,這類方法的優點在於: (1)具有良好的理論支撐,在傳統濾波方法的基礎上,結合了成熟的微分幾何、統計學、應用數學等學科知識; (2)模型簡單,去噪效果好,將模型稍作改變即可推廣到解決高維及流形問題上; (3)具有較強的擴展性,可以將多種圖像處理理論(如多尺度分析、奇異值分解等)很好地結合到偏微分方程的理論框架下。基於偏微分方程的圖像去噪方法大致可以分為三類:基於變分偏微分方程的去噪方法;基於微分幾何的偏微分方程的去噪方法;基於擴散偏微分方程的去噪方法。基於偏微分方程的圖像去噪方法具有模型簡單,擴展性強,去噪效果好等優點,已被廣泛應用於圖像去噪。 全變分(total variation,TV)模型在圖像的每一點上都僅沿著垂直於圖像梯度的方向擴散,即是沿著邊緣方向擴散,而在梯度方向是不擴散的,從而解決了過度平滑的問題,也有效地保護了圖像邊緣的信息,因此該模型能較好地保留圖像的邊緣細節。但對於圖像的平坦區域,它的邊緣方向實際上是不明顯甚至是不存在的,此時沿著圖像邊緣方向擴散就會導致平坦區域的去噪能力不足,容易把平坦區域的噪聲誤當成圖像邊緣處理,導致出現虛假邊緣,從而產生階梯效應。基於變分法和偏微分方程的圖像去噪方法能夠有效地平衡去除噪聲和保持圖像結構信息方面之間的矛盾,使復原圖像能得到很好的視覺效果。本文主要研究的是將變分偏微分方程方法應用於灰度圖像中加性高斯噪聲的去除。本文針對經典的全變分模型所存在的缺點,藉助變分法和偏微分方程的理論優勢, 圍繞圖像去噪問題,提出 HNHOTV-OGS(hybrid non-convexhigher order total variation overlapping group sparsity)算法.HNHOTV-OGS 算法同時使用了重疊群稀疏(overlapping group

開發與維運

Superset BI 數據可視化平臺,可視化組件二次開發之集成 Echarts 圖表

前置基礎 Flask 是什麼? Flask 是一個使用 Python 編寫的輕量級 Web 應用框架。 官方文檔 https://flask.palletsprojects.com/en/1.1.x/ 中文文檔 https://dormousehole.readthedocs.io/en/latest NumPy 是什麼? NumPy是Python的一個用於科學計算的基礎包。它提供了多維數組對象,多種衍生的對象(例如隱藏數組和矩陣)和一個用於數組快速運算的混合的程序,包括數學,邏輯,排序,選擇,I/O,離散傅立葉變換,基礎線性代數,基礎統計操作,隨機模擬等等。 官網 https://numpy.org Pandas 是什麼?

開發與維運

一文搞定快速使用 Docker Compose 玩轉 Traefik v2(一)

Traefik 路由到 Docker 容器 創建一個新的 docker 網絡 docker network create traefik_net Traefik 和 containers(容器)需要在同一網絡上。Compose 會自動創建一個,但事實是隱藏的,以後可能會發生混亂。最好僅創建自己的網絡並將其設置為每個 compose 文件中的默認網絡。 使用 docker network inspect

開發與維運

阿里雲ECS雲服務器使用體驗

本人現在大二,是一名來自於天津濱海職業學院人工智能學院計算機應用專業的一名學生。之前學習了很多關於計算機方面的知識,本學期我們開設了雲計算課程,同時也在這個學期經過學院帶課老師的介紹瞭解到了阿里雲。平心而論,大學時期的學生大多數擁有的資源並不是很多,雲計算學習過程中理論顯的很空洞,理解起來比較困難,所以還是希望能夠上手實踐一下。但一個雲服務器的價格和費用不是一個普通大學生可以輕易負擔的起的,同時雲服務器很多時候只是用來完成作業和日常實踐和鞏固所學的知識,並沒有什麼實際上的收益。這時候聽到代課老師說阿里雲有相關和高校大學生有關的項目,於是我便在老師的指導下開始瞭解阿里雲的飛天加速計劃。在瞭解到可以免費領用兩星期,而且完成續領任務可以續領,時間方面雖然不是很長但足夠我本學期的學習,而且服務器的配置也十分不錯,對於我的日常學習的各種需求而言是完全夠用的,真的是十分良心。在完成學生資質認證後按照步驟學習並且完成了阿里雲的新手訓練營,雖然不是很長,但對於我這個接觸雲服務器的新人來說也足夠用了,讓我對阿里雲的雲服務器有了一個初步的認識。因為我目前主要接觸的是ECS雲服務器,所以在領到兩個星期的服務器後迫不及待創建了一個雲主機試試,並且在上面實驗自己之前的所學知識。有一說一阿里雲的雲服務器使用起來感覺是相當方便快捷的,自帶的監控虛擬機性能功能和遠程部署訪問阿里雲服務器功能讓我的學習方便了不少。因為對雲服務器瞭解的不是很多,所以在使用過程中也是有很多不懂的地方或者操作卡住的地方,但幸好阿里雲上面有很多針對新人而作的文章,裡面不乏一些大佬做的詳細且實用新手教程,這給了我很大的幫助。最後感謝阿里雲給我們這些大學生提供了學習實踐平臺,讓我收穫頗豐,也希望阿里雲可以越辦越好。

開發與維運

萬字長文帶你徹底理解synchronized關鍵字(下)

三、6個常見的使用情況 我們先給出這6種常見的情況,然後一個一個分析。 1、兩個線程同時訪問一個對象的同步方法。 2、兩個線程訪問的是兩個對象的同步方法。 3、兩個線程訪問的是synchronized的靜態方法。 4、兩個線程同時訪問同步方法與非同步方法。 5、一個線程訪問一個類的兩個普通同步方法。 6、同時訪問靜態同步方法和非靜態同步方法。 為了對這6種情況做到心中有數,不至於搞混了,我們畫一張圖,對每一種情況進行分析。 上面是框架圖,下面我們基於開始來分析: 1、兩個線程同時訪問一個對象的同步方法 這種情況對應於以下這張圖: 這種情況很簡單,我們在上面也演示過,結果就是同一個時刻只能有一個方法進入。這裡就不再演示了。 2、兩個線程訪問的是兩個對象的同步方法 這種情況對應於下面這種: 也就是一個方法有兩把鎖,線程1和線程2互不干擾的訪問。鎖是不起作用的。 3、兩個線程訪問的是synchronized的靜態方法 這種情況對應於下面這種情況: 我們對這種情況來測試一下吧。 public

開發與維運

一文搞定快速使用 Docker Compose 玩轉 Traefik v2(二)

Let’s Encrypt 證書,HTTP challenge LE – Let’s Encrypt. 提供免費證書的服務 Certificate – 存儲在服務器文件中的加密密鑰,允許進行加密通信並確認身份 ACME – 一種協議(精確商定的通信方式),以協商來自 LE 的證書。它是 traefik 的一部分。 DNS – 互聯網上的服務器,將域名轉換為 IP 地址

開發與維運

學習報告2

物聯網時代,Linux人才不可或缺,物聯網、大數據、雲計算等主流行業大多數都是依靠Linux操作系統。主流的互聯網應用都基於Linux平臺:網站、數據庫、網絡遊戲、即時通訊。主流的服務器操作系統都採用Linux。主流的軟件開發環境都是在Linux操作系統上:Java,嵌入式C/C++、Python、PHP。 第二期我們學習了Linux基礎命令。 0 查找find 1 別名alias 2 變量的設置 3 常用的系統變量 4 通配符及組合按鍵 5 指令之間的分隔符(;&||) 6 輸出重定向(>,>>,1>,2>) 7 管道 通過本問還能瞭解到 env,set,export

Scroll to Top