主頁 >  其他 > DDD領域驅動篇——第一章(一文帶你領略DDD、微服務和中臺設計)

DDD領域驅動篇——第一章(一文帶你領略DDD、微服務和中臺設計)

2021-12-13 07:52:54 其他

在講DDD之前,我對領域驅動曾經有過一段時間的了解,其實這個概念當我第一次聽的時候發現很泛化,而且很抽象甚至難以理解,后來我發現這個玩意得需要很多時間、很多框架、技術的演進、軟體迭代到了一定的瓶頸,業務愈發復雜而帶來一系列架構轉變和業務重構的捶打,才可以更好的體會和理解這些新詞的意思,本章我就講下我對DDD的理解和認識,也需要讀者能夠熟悉一些常用的設計模式,希望你不是個小白而是一個在業務或者技術有一定的認識,這樣可能看起來不會費勁,也為后面更好的應用于大型互聯網實戰中更上一層

1、前言

說起DDD的實踐,那就不得不提微服務了,2016年,我剛開始接觸微服務,那時候但是那個時候對技術的熱衷,和身邊的人聊微服務的設計理念,接受度并不高,自己對微服務的理解也沒有現在熟悉,畢竟大家普遍采用的還是集中式架構,

早在今年中旬,為了應對市場需求,我很幸運的參加了公司大型互聯網的架構到當下主流微服務架構轉變的程序,業務的日漸復雜也是可以預見的,微服務的價值確確實實存在,而這個程序中,我和我的技術團隊踩過不少坑,最尖銳的一個問題是:“微服務到底怎么拆分 和設計才算合理,拆多小才叫微服務?”而微服務的邊界歷來也是最容易產生爭議的地方,

隨著阿里巴巴成功完成了中臺戰略轉型,于是,很多大型公司也開啟了中臺數字化戰略轉型,中型公司也根據自身需求躍躍欲試,但也有很多公司由于歷史原因,存在著大量系統重復建設的問題,

作為中臺,需要將通用的可復用的業務能力沉淀到中臺業務模型,實作企業級能力復用,因此中臺面臨的首要問題就是中臺領域模型的重構,而中臺落地時,依然會面臨微服務設計和拆分的問題,這兩個問題一前一后,放在任何一家公司,我想都是一個不小的挑戰,這也是我一直在探索和解決的問題,這兩年,中臺越來越火,微服務越來越熱,參與的人越 來越多,那是否有好的方法來指導中臺和微服務的設計呢?一次偶然的機會我接觸到了 DDD,深入研究后,我發現,運用 DDD 設計思想實作的微服務邊界確實清晰很多,業務領域劃分也十分合理,而我也希望能夠運用在未來我所在的任何一個領域中,古話說,山不向我走來,我便向它走去,哈哈

2、初探DDD

早在2003年就誕生的DDD,06年Eric Evans就著出《領域驅動設計》一書,怎么會“遲到”近20年才大熱的微服務設計呢?DDD全稱是Domain Driven Design,叫領域,驅動,設計;那和我們常說的中臺,微服務之間的關系是什么樣的呢,我想很多人是不明白的甚至會混為一談,

  • 中臺的本質是業務模型
  • 微服務是業務模型的系統落地
  • DDD是一種設計思想,它可以同時指導中臺業務建模和微服務設計

三個概念轉為我們可以理解的一句話:我們要用DDD的設計理念,搭建一個一個的中臺業務模型(業務中臺,技術中臺,資料),最終以微服務相關的技術實作系統落地!!

它們之間就是這樣的一個鐵三角關系,DDD 強調領域模型和微服務設計的一體性,先有領域模型然后才有微服務,而不是脫離領域模型來談微服務設計

通過戰術設計,我們會從領域模型轉向微服務設計和落地,此時,邊界清晰、可持續演進的微服務架構雛形就在你面前了,

所以DDD概念老早提出,Get到他的思想,卻到現在很多公司沒有按照它的方法去實踐,這是為什么呢?主要因為復雜度,

3、令人心塞的遺留系統

DDD是軟體核心復雜性的應對之道,而每家公司都在忙著開發新專案,快速迭代新功能快速上線才是王道!領域驅動對公司,客戶群體來說,太慢了,并且那個時代,業務也沒有這么復雜,DDD遠遠發揮不出來應有的優勢,但是最近幾年,事情卻慢慢發生了變化,很多公司的產品迭代至今,程式以及凌亂不堪,維護成本越來越高,需要重構優化改造,

許多動輒數千行甚至上萬行的大函式和大物件,是軟體退化的重災區,為什么會這樣?深刻思考后很快意識到了根源:這是軟體業務由簡單像復雜轉變的必然結果,軟體會越來越復雜,代碼會越來越多,這樣就不能在原有的程式結構里塞代碼,而是要調整程式結構,該解耦的解耦,該拆分的拆分,再實作新功能才能保證設計質量

那么怎樣調整呢,也許第一次第二次我們想的清楚,但是第十次三十次我們就想不清楚了,設計開始迷失方向怎么辦?再次陷入了沉思;這個時候,DDD就可以很好的解決這些問題,業務越來越復雜而難以理解,這不是個例而是當今所有軟體都必須面對的難題,運用DDD當系統業務變得越來越復雜時,將我們對業務的理解繪制成【領域模型】可以正確的指導軟體開發,

當系統變更時,將變更業務通過領域模型,還原到真實世界,再根據真實世界去變更領域模型,根據領域模型的變更指導程式變更,從而低成本的維護一個系統達到快速迭代,快速交付的合格軟體,這是DDD的設計核心,這么說是比較抽象的,我舉個例子,如果我要設計一個支付交易系統,從應用代碼層面,如果我要扣款的時候新增加很多功能如vip,限時折扣,某個/類商品折扣,很快就迎來了第一次的需求變更,我們最大概率會這么做,在原有的付款方法中加入if陳述句,然后判斷邏輯;如果對于領域驅動的思想,還原成真實世界,再去修改領域模型,分析付款和折扣之間在現實世界的關系,你可能會認為折扣是在付款程序中進行的,所以你會認為折扣應該寫在付款中,這樣思考對嗎,回顧下我們軟體設計的【單一職責】原則,軟體系統中每個元素只完成自己職責范圍的事情,而將其他的事情交給別人去做,我只是呼叫,重要是我們如何理解這個【職責】,以往的理解是我要做某件事,那么與此相關的所有事情都是它的職責,因為這個錯誤理解帶來了很多錯誤設計,從而將折扣寫到付款功能中,

一個職責是一個軟體變化的原因,當用戶提出一個需求變更時,為了實作這個變更,而修改的軟體成本越低,軟體設計質量就越高,如果為實作這個需求,需要修改三個模塊,完后這三個模塊都要集體測驗,其維護成本非常高,而怎么樣才能把修改降到最低呢,最現實的方法就是只修改一個模塊,怎么樣才能在每次變更的時候就修改一個模塊實作新需求呢?這就需要平時不斷的整理代碼,將因同一個原因而變更的代碼都放在一起,將因不同原因而變更的代碼放在不同的模塊、類中,

回到剛剛的案例中,只需要回答兩個問題:

  • 當付款發生變更時,折扣是不是一定要變?(否)
  • 當折扣發生變更時,付款是不是一定要變?(否)

當這兩個問題的答案都是否定的時候,那付款和折扣就是這個軟體變化的不同原因,那放在同一個方法,同一個類中合適嗎?很明顯不合適,就應該將折扣從付款中提取出來,單獨放在一個類中,所以根據折扣我們可以單獨拆出來形成一個獨立的真實世界,來繪制領域模型,如下:

沒有領域驅動之前添加折扣,很多人會把折扣寫在付款邏輯中,

添加折扣后我重新折扣進行了分析,對領域模型進行了修改,以折扣介面為基礎,以此設計了很多不同型別的折扣方式,這樣的設計當付款功能發生變更時,不會影響折扣,而折扣發生變更時也不會影響付款,而折扣之間也不會存在相互影響,其實這就是策略模式的體現!!

緊接著會在這個版本的基礎上進行程式設計,設計的時候加入設計模式的內容,將折扣功能做成了折扣策略介面,與各種折扣策略的實作類,當哪個折扣型別發生變更時,就修改哪個折扣策略的實作類,當要增加新的型別就再寫一個新的策略實作類,從而設計質量得到提高,

于是第二個業務場景過來了,我要增加vip會員功能,對不同型別的vip會員進行不同折扣,付款的時候為vip發福利,享受特權等,

拿到這個需求我們又應該如何設計呢?同樣先回到領域模型,分析用戶和vip會員的關系,付款與vip會員的關系,回答兩個問題:

  • 用戶發生變更時,vip會員是否一定要變(否)
  • vip會員發生變更時,用戶是否一定要變(否)

結合真實世界,很明顯這兩個答案又是否,用戶和vip是兩個不同的事物,用戶要做的是用戶注冊,變更注銷等,vip要做的是折扣,福利,特權,而付款與vip會員的關系呢?

  • 付款發生變更時,vip會員是否一定要變(否)
  • vip會員發生變更時,付款是否一定要變(否)

付款和vip之間也是兩個不同的事物,之間也是呼叫關系,在付款中呼叫會員折扣,福利和特權,那么vip自然也就是獨立出來的一個領域模型

同理如果增加支付方式,我們也要分析扣款和支付方式之間的關系

  • 付款發生變更時,支付方式是否一定要變(否)
  • 支付方式發生變更時,付款是否一定要變(否)

自然也是獨立出來的兩個物體和現實世界的場景,我們一樣可以設計

因為是要和外部系統進行對接,為了避免外部系統對我們的影響最小化,我們可以加入配接器模式,訂單Service在進行支付的時候,不再是一個一個外部的支付介面,而是支付方式介面,與外部系統解耦保證支付方式介面是穩定的,那么訂單Service介面就是穩定的,比如支付寶支付介面發生變更時,影響的只限于支付寶的Adapter,當要增加一個新的支付方式就增加一個Adapter就可以,日后修改范圍就縮小了,

講到這里,是不是對遺留系統的問題來深刻領會到【領域驅動】的核心思想?

4、轉型利器微服務

上面曾說過,微服務是業務模型的系統落地,微服務本身不是一項技術,而是對業務模型的系統實際解決方案,可是微服務不是銀彈,也有很多坑,當按照模塊拆分的時候,每次變更都需要修改很多的微服務,不但多個團隊都要變更,還要同時打包同時升級,沒有降低維護成本,反而使得發布比過去更麻煩,那不如不用微服務?那是微服務不好嗎,我又一度陷入了沉思,這個時候我去翻閱一些資料的時候,Martin Flower定義微服務時提到的“小而專”,我們Get到了“小”,缺忽略了“專”,這里的專就是要小團隊專業維護,就是盡量讓每次的需求變更,交給小團隊獨立完成,讓需求變更落到某個微服務變更,這樣才可以發揮微服務的優勢,

經過深入想后才發現,微服務的設計真的不僅僅是一個技術架構更進的事,而是對原有設計提出了更高的要求,即服務內高內聚,服務間低耦合,而我們沒有過硬的能力和設計經驗,就不能把微服務帶來的復雜度歸咎于微服務的弊相關,只能說我們沒有更好的理解到微服務核心給我們解決了什么問題,那么誰來拯救微服務現在的情況?

同樣還是DDD,我們轉型微服務的重要根源,就是系統的復雜性,即系統規模越來愈大,維護越來越困難,才需要拆分微服務,然而拆分每個微服務不代表都各自運行,而是彼此協同組織在一起,而DDD恰恰就是幫助我們組織微服務的實作方法,

要讓DDD在團隊中用的好,需要一個支持DDD與微服務的技術中臺!有了技術中臺,開發團隊就有更多的精力放在對用戶業務的理解,對業務痛點的理解快速開發交付,這樣不僅撰寫代碼門檻減少了技術降低了,還使得日后變更更加容易,

那么DDD具體如何解決微服務拆分難題呢?在下一章節我會深入講述【領域模型】的眾多名詞,概念比如限界背景關系,聚合,倉庫,工廠等,這些名詞告訴我們【領域模型】會將一個系統劃分成多個子域,每個子域都是一個一個獨立業務場景;同時每個子域實作的就是“限界背景關系”等等類似這樣的抽象世界,

5、技術中臺又是什么

在以往建設的系統中,基本都分為前臺和后臺,前臺一般指用戶互動的UI界面,后臺是指服務端完成業務邏輯的操作,然而在開發很多業務系統中,有一些內容是共用的部分,甚至在未來的開發系統中也會使用到,所以如果我們能把這些內容提取出來做成公用組件,那未來開發系統就簡單了,不用每次重復開發,直接復用這些組件就可以,那么這些復用的組件到除錯于前臺還是后臺呢?其實都不屬于,既包含前臺的界面,也包含后臺的邏輯,這就是中臺的概念!

中臺:將以往業務系統中可以復用的前臺與后臺代碼剝離個性,提取共性,形成公用組件,

所以阿里提出了小前臺,大中臺的戰略得到了業界普遍的認可,從分類上看,中臺分為業務中臺,技術中臺,資料中臺;

那么清楚這些概念后,自然就會知道DDD與微服務底層技術進行封裝,從而支持開發團隊在未來實作快速交付,以應對激烈競爭的市場,所以首先要清楚實作快速交付的技術特點,才能清楚這個技術中臺如何建設,

我們大多數公司的團隊是這樣的,從需求交付的整個程序,要經歷多個部門的互動,才能完成最終交付,大量的時間被耗費在了部門之間的溝通協調中, 這樣的團隊叫做煙囪式開發團隊,

這樣的開發團隊會導致煙囪式的軟體開發,每個功能都要設計大量的controller,service,dao需要撰寫大量的代碼,很多是重復的,量越大bug越多,變更困難,

統一的發布制約了交付速度,對于業務負責人把需求交給多個團隊開發時,A團隊發布的可能需要1周就可以完成,但是A團隊完成后無法立即交付,而B團隊要開發兩周,必須要等B開發完成后再一起交付給客戶,即便開發速度再快,不能立即交付,就無法帶來價值

如何解決這個問題?將桶裝的煙囪橫著來,將所有的需求,ui,資料庫,運維等作業都交給這些模塊單獨的特性團隊,所有與購物相關的功能都是這個團隊來維護,每個這樣的團隊負責整個模塊的交付程序,不再需要等待其他團隊每個功能都要一起發布,這就是特性團隊,而這樣的團隊成本是非常高的,幾乎每個成員都是全堆疊工程師,

通過對技術的選型,構建技術中臺比如UI,應用,資料庫進行了封裝,然后以API介面的方式開放給上層業務,這就是大前端,是一種職能的轉變,不是我們業界說的“前端”,而是業務人員更加關注業務,深刻理解業務并快速應對市場需求的變化,架構團隊從業務開發角度進行提煉共性,保留個性,將這些共性沉淀到技術中臺中,

如何打造一個強大的技術中臺呢?在Martin Flower《企業應用架構模式》中指出一個概念,叫命令與查詢職責分離模式,命令就是增刪改操作,其中指出所有命令的增刪改操作,應當采用【領域驅動】設計思想進行軟體設計,所有查詢的功能應當采用事務腳本模式,即直接通過SQL陳述句進行查詢,

技術中臺的實作只存在統一的一個Controller和單個Dao,和以往不同的是,每個功能有各自的前端UI,呼叫后臺的邏輯時不再呼叫各自的Controller,而是統一呼叫一個Controller,每個功能的前端呼叫這個Controller傳遞的引數是不一樣的,將Service和Dao裝配起來后,形成一個一個的bean,前端只知道呼叫的是bean,并不需要知道呼叫的是哪個Service,這樣的設計既保證了安全性,實作前后端分離,也實作解耦,緊接著前端還要傳遞一個Method,即呼叫的是哪個方法和哪個json物件,這樣Controller就可以通過反射進行相應的操作,通過規范和契約,我們認為前端開發人員已經知道呼叫后端的哪個bean,哪個method,以及什么格式的json,

舉個例子:前端統一只訪問ORMController,訪問localhost:9003/orm/{bean}/method,bean是Spring的bean的id,method是bean中需要呼叫的方法(此處不支持方法的重寫,如果是重寫,則會呼叫同名方法中的最后一個),如果呼叫的方法有值物件,必須將值物件放在方法的第一個引數上;如果呼叫的方法既有值物件,又有其他引數,則值物件中的屬性與其他引數都放在該json物件中,如果要進行權限校驗,需要在ORMController之前做,建議在網關或者filter校驗,

具體的流程是

那么單Dao怎么設計,比如下面的圖,將每個值物件對應的表通過xml的方式進行對應,并最終完成資料庫的持久化操作,值物件中有很多屬性變數,最終只有需要持久化的屬性變數才需要配置,

有了以上的設計,每個Service在Spring中都是統一注入BasicDao,如果要使用DDD的功能支持,注入通用倉庫Repository,如果要使用Redis快取,注入Redis相關的Repository就可以,這里要注意,基于這類技術中臺框架的業務開發,包括Spring配置,Mybatis配置,vObj的配置建議都采用XML檔案的形式,不要采用注解,

單Dao設計流程:

  • 單Dao呼叫vObjFactory.getVObj(class)獲取配置資訊vObj
  • 根據vObj.getTable()獲得對應的表名
  • for回圈拿到vObj.getProperties().getColumn()獲得值物件對應的欄位,反射拿到具體欄位對應到的值,拼接成sql
  • 進行資料庫操作

接下來看下查詢功能的技術中臺設計

與增刪改不同的是,Service只有一個,往Service中注入的是不同的Dao,可以裝配成不同的bean,查詢部分不需要傳遞method引數,這樣前端查詢的時候傳遞不同的json引數就可以實作不同的查詢,

比如進行查詢的時候,前端輸入localhost:9003/query/{bean},如下圖

前端個Service查詢互動如下圖

所有的查詢都是一個Service,注入了不同的Dao,配置成不同的Bean完成不同的查詢,每個Dao可以通過Mybatis框架注入,配置不同的mapper完成不同的查詢,然后將其注入Spring中完成配置,

對于Service和Dao的互動如下

但是在某些業務中需要個性的在查詢前進行某些處理,現在設計中只有一個Service,怎么辦呢?

我們提個概念,叫鉤子Hook,在QueryService中設計成空方法,因此呼叫他們跟沒有呼叫是一樣的,如果需要在查詢前后添加某些處理,則撰寫一個QueryService的子類并重寫這兩個方法,只要在Spring配置中配置這個子類即可,

通過以上中臺設計,會簡化很多,設計一個普通的查詢,只需要制作一個Mybatis的查詢陳述句配置,在Spring中配置一個bean,就可以通過前端進行查詢,甚至不需要新增class,除非在查詢前后要做些什么,

本章可能最后一個章節比較抽象,后續我會拿實戰案例Demo來演示技術中臺是如何落地,初探了DDD,理論一定要具備,才有更好的實踐,

下一章節,走進DDD如何指導架構和業務設計的,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379503.html

標籤:其他

上一篇:初識kafka,環境部署與(Springboot+SpringCloud+Eurka)應用(Linux)

下一篇:【Hadoop專案:萬字圖文開發總結】全國各省市酒店資料的分析與處理

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more