主頁 >  其他 > 面對復雜業務,if-else coder 如何升級?

面對復雜業務,if-else coder 如何升級?

2020-09-29 02:18:54 其他

簡介:針對業務在不同場景下的差異,我們常常會習慣性地使用if-else來實作不同的業務邏輯,久而久之代碼越來越難以維護,那么如何消除這些if-else?面對復雜業務應如何思考和分析?本文分享阿里高級技術專家張建飛(Frank)關于復雜業務治理的方法論,介紹一種多維度分析問題的方法:矩陣分析法,

image.png

You should not be a if-else coder, should be a complexity conquer.
——Frank

這篇文章,是對之前我在《阿里高級技術專家方法論:如何寫復雜業務代碼?》說的“自上而下的結構化分解 + 自下而上的抽象建模”方法論的升級,因為在之前的方法論中,我們缺少一個多維度看問題的視角,這種維度思維的缺失,可能會導致miss掉一些重要的業務資訊,從而使我們制定軟體設計策略的時候,陷入困難,

有了維度思維,我們便可以更加方面的去看清業務的全貌,更加全面的掌握業務資訊,從而幫助我們更加體系化的去治理復雜性,

從if-else說起

我經常說,我們不要做一個if-else coder,這里的if-else,不是說我們在coding的時候不能使用if-else,而是說我們不應該簡陋地用if-else去實作業務的分支流程,因為這樣隨意的代碼堆砌很容易堆出一座座“屎山”,

業務的差異性是if-else的根源,以零售通的商品業務為例,不同的處理場景,其業務邏輯實作是有差異性的,如下圖所示,商品業務的差異性,主要體現在商品型別、銷售方式和倉儲方式的不同,

image.png

這三個維度上的差異組合起來,有 2 3 2 = 12 之多,這就是為什么在老代碼中,到處可以看到 if(組合品) blabla,if(贈品) blabla,if(實倉) blabla 之類的代碼,

那么,要如何消除這些討厭的if-else呢?我們可以考慮以下兩種方式:

  • 多型擴展:利用面向物件的多型特性,實作代碼的復用和擴展,
  • 代碼分離:對不同的場景,使用不同的流程代碼實作,這樣很清晰,但是可維護性不好,

多型擴展

多型擴展可以有繼承和組合兩種方式,繼承勿用多言,組合有點像策略模式,也就是把需要擴展的部分封裝、抽象成需要被組合的物件,然后對其進行擴展,比如星環的能力擴展點就是這種方式,

這里,我們舉一個繼承的例子,商品在上架的時候要檢查商品的狀態是否可售,普通商品(Item)檢查自己就好了,而組合商品(CombineItem)需要檢查每一個子商品,

用程序式編碼的方式,很容易就能寫出如下的代碼:

public void checkSellable(Item item){
    if (item.isNormal()){
        item.isSellable(); 
        //省略例外處理
    }
    else{
        List<Item> childItems = getChildItems();
        childItems.forEach(childItem -> childItem.isSellable()); 
        //省略例外處理
    }
}

然而,這個實作不優雅,不滿足OCP,也缺少業務語意顯性化的表達,更好的做法是,我們可以把CombineItem和Item的關系通過模型顯性化的表達出來,

image.png

這樣一來,一方面模型正確的反應了物體關系,更清晰了,另一方面,我們可以利用多型來處理CombineItem和Item的差異,擴展性更好,重構后,代碼會變成:

public void checkSellable(Item item){
    if (!item.isSellable()){
        throw new BizException("商品的狀態不可售,不能上架");
    }
}

代碼分離

所謂的代碼分離是指,對于不同的業務場景,我們用不同的編排代碼將他們分開,以商品上架為例,我們可以這樣寫:

/**
* 1. 普通商品上架
*/
public void itemOnSale(){
    checkItemStock();//檢查庫存
    checkItemSellable();//檢查可售狀態
    checkItemPurchaseLimit();//檢查限購
    checkItemFreight();//檢查運費
    checkItemCommission();//檢查傭金
    checkItemActivityConflict();//檢查活動沖突

    generateCspuGroupNo();//生成單品組號
    publishItem();//發布商品
}

/**
* 2. 組合商品上架
*/
public void combineItemOnSale(){
    checkCombineItemStock();//檢查庫存
    checkCombineItemSellable();//檢查可售狀態
    checkCombineItemPurchaseLimit();//檢查限購
    checkCombineItemFreight();//檢查運費
    checkCombineItemCommission();//檢查傭金
    checkCombineItemActivityConflict();//檢查活動沖突

    generateCspuGroupNo();//生成單品組號
    publishCombineItem();//發布商品
}

/**
* 3. 贈品上架
*/
public void giftItemOnSale(){
    checkGiftItemSellable();//檢查可售狀態
    publishGiftItem();//發布商品
}

這種方式,當然也可以消除if-else,彼此獨立,也還清晰,但復用性是個問題,

多維分析

細心的你可能已經發現了,在上面的案例中,普通商品和組合商品的業務流程基本是一樣的,如果采用兩套編排代碼,有點冗余,這種重復將不利于后期代碼的維護,會出現散彈式修改(一個業務邏輯要修改多處)的問題,

一個極端情況是,假如普通商品和組合商品,只有 checkSellable() 不一樣,其它都一樣,那毫無疑問,我們使用有多型(繼承關系)的CombineItem和Item來處理差異,會更加合適,

而贈品上架的情況恰恰相反,它和其他商品的上架流程差異很大,反而不適合和他們合用一套流程代碼,因為這樣反而會增加他人的理解成本,還不如單獨起一個流程來的清晰,

那么,問題來了,我們什么時候要用多型來處理差異,什么時候要用代碼分離來處理差異呢?

接下來,是我今天要給你著重介紹的多維度分析問題的方法論之一:矩陣分析法,

我們可以弄一個矩陣,縱列代表業務場景,橫列代表業務動作,里面的內容代表在這個業務場景下的業務動作的詳細業務流程,對于我們的商品業務,我們可以得到如下的矩陣:

image.png

通過上面的矩陣分析,我們不難看出普通品和組合品可以復用同一套流程編排代碼,而贈品和出清品的業務相對簡單,更適合有一套獨立的編排代碼,這樣的代碼結構會更容易理解,

維度思維

多維度的重要性

上面的案例不是我編造出來的,而是我在和張文(我同事)討論應該用哪種方式去處理業務差異的真實故事,

我記得在和大學討論完,開車回去的路上,我一直在想這個問題,然后在第二個路口等紅燈的時候,突然有一個靈感冒出來,我抑制不住興奮,一邊開車,一邊發訊息給張文說:“我想到了一個很NB的方法論,能解決在‘多型擴展’和‘代碼分離’之間如何做選擇的問題”,

其實,我知道我興奮的不僅僅是解決了這個問題,我興奮的是,我第一次真正領悟到了多維度思考的重要性,從而有機會從一個“單維度”生物,升級成一個“多維度”思考者,媽媽再也不用擔心我被“降維打擊”了 :)

結構化思維有用、很有用、非常有用,只是它更多關注的是單向維度的事情,比如我要拆解業務流程,我要分解老板給我的作業安排,我要梳理測驗用例,都是單向維度的,

而復雜性,通常不僅僅是一個維度上的復雜,而是在多個維度上的交叉復雜性,當問題涉及的要素比較多,彼此關聯關系很復雜的時候,兩個維度肯定會比一個維度要來的清晰,這也是為什么說矩陣思維是比結構化思維更高層次的思維方式,

實際上,我們從漢語的詞匯上,也不難看出一個人的思維層級,是和他的思考維度正相關的,當我們說這個人很“軸”、“一根筋”的時候,實際上是在說他只有一維的線性思維,所以,觀察事物的視角越多,維度越豐富,其思維層級也會越高,

image.png

無處不在的多維思考

有了這些感悟,我開始系統的整理關于多維度思考分析的資料,發現這種思考方式真是無處不在,發現的越多,我越是感慨,為什么如此重要的思維方式,我到現在才領悟到,

波士頓矩陣

比如,在做產品分析的時候,有對產品發展前景進行分析的波士頓矩陣,
image.png

訂單要素分析

當年,我在1688做交易下單業務的時候,有非常多的下單場景,每種場景下,買家享受的權益是不一樣的(如下表所示),我們當時也是使用了矩陣去表達這個復雜的關系,只是當時還沒有想到要將其提升到方法論的高度,

image.png

資料交叉分析

在資料分析中,維度分析是非常重要的,特別是維度很多的時候,我們可以通過皮爾遜積矩相關系數,做交叉分析,從而彌補獨立維度分析沒法發現的一些問題,

image.png

分析矩陣

最近我碰巧看到Alan Shalloway寫的《設計模式決議:Design Patterns Explained》,這是一本非常經典的關于OOP的書,里面的第十六章就是專門講“分析矩陣”的,作者創造這個方法論的初衷也是因為業務涉及的要素太多,資訊量太大,他需要一種組織海量資料的新方式,

image.png

我和Alan的路徑不一樣,但是都得出了同樣的結論,由此可見,這種矩陣分析的方式的確是對復雜業務進行分析的一把利器,業務場景越多,交叉關系越是復雜,越需要這樣的分析,

組織陣型

生產關系決定生產力,對于一個管理者來說,如何有效的設定組織結構是決定團隊是否能高效協作的關鍵,所以我們可以看到公司里面,每年都有比較大的關于組織結構和人員安排的調整,

對于技術團隊來說,我們習慣于按領域劃分作業范圍,這樣做的好處是責任到人、職責清晰,然而,領域只是一個維度,我們作業通常都是以專案的形式的開展,而專案通常是貫穿多個領域的,所以,在做團隊組織規劃的時候,我們可以通過業務領域和業務專案兩個維度去看,

比如,在我負責的商品團隊,我會按照如下的形式去做職責劃分,

image.png

時間維度

除了作業,生活中也到處可見多維思考的重要性,

比如,我們說浪費可恥,應該把盤子舔的很干凈,豈不知加上時間維度之后,你當前的舔盤,后面可能要耗費更多的資源和精力去減肥,反而會造成更大的浪費,

我們說代碼寫的丑陋,是因為要“快速”支撐業務,加上時間維度之后,這種臨時的妥協,換來的是意想不到的bug,線上故障,以及無止盡的996,

RFM模型

簡單的思考是“點”狀的,比如舔盤、代碼堆砌就是當下的“點”;好一點的思考是“線”狀,加上時間線之后,不難看出“點”是有問題的;再全面一些的思考是“面”(二維);更體系化的思考是“體”(三維);比如,RFM模型就是一個很不錯的三維模型,可惜的是,在表達上,我們人類只能在二維的空間里去模擬三維,否則四維可能會更加有用,

image.png

復雜業務治理總結

在前言部分,我已經說過了,多維分析是對之前方法論的升級,加上以前的方法論,完整的方法論應該是“業務理解-->領域建模-->流程分解-->多維分析”,

為了方便大家理解,下面我把這些方法論做一個簡單的串聯和解釋,

業務理解

理解業務是所有作業的起點,首先,我們要找到業務的核心要素,理解核心概念,梳理業務流程,

比如,在零售通的商品域,我們要知道什么是商品(Item),什么是單品(CSPU),什么是組合品(CombineItem),在下單域,我們要知道訂單(order)的構成要素是商品、優惠、支付,在CRM領域,我們要理解客戶、機會、聯系人、Leads等等,

這里,我想再次強調下語言的重要性,語言是我們思考的載體,就像維特根斯坦說的:“凡是能夠說的事情,都能夠說清楚”,

你不應該放過任何一個模糊的業務概念,一定要透徹的理解它,并給與合理的命名(Ubiquitous Language),唯有如此,我們才能更加清晰的理解業務,才能更好的開展后續的作業,

領域建模

在軟體設計中,模型是指物體,以及物體之間的聯系,這里需要我們具備良好的抽象能力,能夠透過龐雜的表象,找到事務的本質核心,

再復雜的業務領域,其核心概念都不應該太復雜,抓住了核心,我們就抓住了主線,業務往往都是圍繞著這些核心物體展開的,

比如,商品域雖然很復雜,但其核心的領域模型,無外乎就如下圖所示:
image.png

流程分解

關于流程分解,在《阿里高級技術專家方法論:如何寫復雜業務代碼?》里面已經有非常詳細的闡述,這里就不贅述了,

簡單來說,流程分解就是對業務程序進行詳細的分解,使用結構化的方法論(先演繹、后歸納),最后形成一個金字塔結構,

比如,在商品領域,有創建商品、商品上架、上架審核、商品下架、下架審核、修改商品、洗掉商品等一些列動作(流程),每個動作的背后都有非常復雜的業務邏輯,我們需要對這些流程進行詳細的梳理,然后按步驟進行分解,最后形成一個如下的金字塔結構:

image.png

多維分析

關于多維分析,我以二維的矩陣分析為例,我想我前面應該已經說清楚了,

業務的復雜性主要體現在流程的復雜性和多維度要素相互關聯、依賴關系上,結構化思維可以幫我們梳理流程,而矩陣思維可以幫忙我們梳理、呈現多維度關聯、依賴關系,二者結合,可以更加全面的展現復雜業務的全貌,從而讓我們的治理可以有的放矢、有章可循,

既然是方法論,在這里,我會嘗試給出一個矩陣分析的框架,試想下,如果我們的業務很簡單,只有一個業務場景,沒有分支流程,我們的系統不會太復雜,之所以復雜,是因為各種業務場景互相疊加、依賴、影響,

因此,我們在做矩陣分析的時候,縱軸可以選擇使用業務場景,橫軸是備選維度,可以是受場景影響的業務流程(如文章中的商品流程矩陣圖),也可以是受場景影響的業務屬性(如文章中的訂單組成要素矩陣圖),或者任何其它不同性質的“東西”,

image.png

通過矩陣圖,可以清晰的展現不同場景下,業務的差異性,基于此,我們可以定制滿足差異性的最佳實作策略,可能是多型擴展,可能是分離的代碼,也可能是其它,

這就是矩陣分析的要義,其本質是一種多維度思考的方法論,

篇后寄語

最后,我想說世界是熵增的(即萬物都在緩慢的分崩離析),控制復雜度是我們這些從業者無法推卸的責任和使命,

軟體行業的發展才幾十年,還是一門年輕的學科,軟體工程就像一個剛學會走路的小孩,還很不成熟,有時還很幼稚,

但畢竟還是有幾十年的沉淀,還是有一些好的方法和實踐可以參考,我的這些總結沉淀只是在前人的基礎上,多走了一點點而已,但就是這一點點,也實屬來自不易,其中冷暖,只有自己能體會,可以說,這一路走來,是一場對心力、腦力和體力的持續考驗,

image.png

  • 心力是指不將就的匠心,不妥協的決心,不滿足的好奇心、以及不放棄的恒心,
  • 腦力是指那些必要的思維能力、學習能力、思考能力、思辨能力,
  • 之所以說“業務理解-->領域建模-->流程分解-->多維分析”是體力,是因為實作它們就像是在做填空題,只要你愿意花時間,再復雜的業務都可以按部就班的清晰起來,

梳理清晰了,再配合COLA(https://start.aliyun.com/)的指導,我們就有可能寫出清晰、易讀的代碼,就有可能從一個if-else coder升級為一個complexity conquer,

而這不正是我們工程師孜孜不倦的追求嗎?

原文鏈接:https://developer.aliyun.com/article/773590?

著作權宣告:本文內容由阿里云實名注冊用戶自發貢獻,著作權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任,具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》,如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻洗掉涉嫌侵權內容,

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

標籤:其他

上一篇:鴻蒙OS開源代碼精要解讀之——init

下一篇:值得一談的鴻蒙2.0,程式員們拿起你們手中的編譯器擼一下hello world

標籤雲
其他(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