主頁 >  其他 > 程式員的bug修復寶典

程式員的bug修復寶典

2020-12-29 14:00:54 其他

前言

bug, 又名程式缺陷或者程式漏洞, 是每個程式員每天都回避不了的東西,程式員對bug的感情可謂是五味雜陳:一方面bug非常可惡,尤其是一些偶現的bug,它強大到可以摧毀一個優秀程式員的意志;另一方面很多bug又是程式員自己親手寫下的,無奈之余只能自嘲一句:不寫bug我們就要失業了!

作為一名職業程式員,同時也是一名開源創作者, 夸張點說,我解過的bug可以繞地球一圈, 每天寫bug解bug幾乎是我的日常,

但是,作為一個善于思考和總結的技術up主,我怎么能止步于每天寫bug和解bug呢?更何況,人生在世,總得有點追求,既然我不能夠阻止bug的產生,那么就讓我總結一點bug的修復技巧,讓bug消失地更快點吧!


1.bug修復的生命周期

中醫講究"望聞問切",其實修復一個bug就像給病人看一場病,本質上是相通的,

當我們遇到一個bug(問題)的時候,一般我們需要經歷如下6個步驟:

  • 1.了解bug,我們首先需要到底出了什么bug,現象是什么,怎樣發生的,
  • 2.復現bug,在了解了bug的大致情況之后,我們需要能夠找到復現的路徑,這就為后面bug的定位提供可靠的依據,
  • 3.定位bug,當有了穩定的復現途徑之后,要做的就是打斷點、打日志進行除錯,來一步一步分析和定位bug,到底是那塊代碼導致的錯誤,
  • 4.確認bug,當我們定位到bug出錯的地方之后,我們就需要分析這到底是不是bug,如果是bug,那么這個bug出現的根源是什么,到底能不能解決,
  • 5.修復bug,在明確了bug的根本原因之后,下面就需要發揮我們的聰明才智去修復這個bug了,
  • 6.驗證bug,并不是每次我們修復完bug之后就可以萬事大吉了,此時我們還需要去重現bug以確保bug被真正修復,除此之外,有條件的我們還需要去驗證相關場景,以保證修復該bug不會引入其他bug,

以上可以總結為12字方針–"了解、復現、定位、確認、修復、驗證"bug,一般在稍微大一點的公司,都會有對應的流程對bug的修復進行流程控制,最終形成倍訓,

可以看到的是,其實修復bug只是解決一個bug的6個步驟中的其中一步,很多剛剛參與作業的程式員經常犯的錯誤就是一遇到bug,就開始漫無目的地看代碼或者是上網各種瞎搜索,又或者各種無腦問,最后搞了一圈可能連自己要解決的bug到底是什么都不知道,這樣解決bug的效率可想而知,

可能讀到這的你此刻非常想問:怎樣才可以更快地修復一個bug呢?那么下面我就根據上面講的六個步驟來分別講解一下對應的技巧,


2.解決bug的藝術

在我看來,修復一個bug是相對容易的,因為修復一個bug的方法可能有很多種,但是如何從根本上解決一個bug,并保證這個bug下次不再復現的話,其實是非常難的,這就需要我們學習一下解決bug的藝術,

2.1 了解bug

俗話說,知己知彼百戰不殆,bug修復的第一步當然是先了解bug了,

了解bug是解決bug最重要的一步,它直接決定了后面五步執行的效率和質量,糟糕的錯誤報告和不負責任的問題描述都是埋葬程式員修復bug意志的罪魁禍首,

在了解bug之前,我們需要收集足夠的資訊,了解它產生的現象、描述、復現步驟、以及解決后的預期是什么等等,那么我們應該怎么做才能更加全面地了解它呢?

下面我給幾點建議供大家參考:

2.1.1 觀察現象

光憑文字說明是無法準確領悟到bug的精髓的,因為每個人思考問題的角度以及文字表達描述都是千差萬別的,

如果說這個時候能提供一段出錯的視頻或者問題截圖,又或者能夠現場演示錯誤的話,這樣觀察現象,然后再結合問題描述之后,一定能夠幫助你快速地了解這個bug,

2.1.2 詢問相關人員

這里你詢問的可以不僅限于發現bug的人(一般是測驗人員),當然你首先應當詢問的還是這個發現bug的人,

這里你需要著重詢問bug報告上你覺得迷惑的點,比如出現bug的應用版本、設備型號、bug出現的頻率、bug產生的步驟和恢復的途徑、bug修復的預期效果等,這里你需要進行刨根問底地詢問,因為可能bug發現人覺得一些無關緊要的細節,對你來說卻是至關重要的點,

問完發現bug的人之后,我們還可以向bug對應模塊的負責人(測驗、開發、產品)詢問該模塊的業務邏輯,說不定能夠獲取到有價值的資訊哦,

2.1.3 提供bug報告模板

一份優秀的bug報告模板,可以讓程式員直接跳過bug修復的前三步,直接進入到確認bug步驟,從而能夠極大地提高bug修復的效率,那么一份優秀的bug報告模板應當具備哪些內容呢?

  • bug的標題和問題描述
  • 出現bug的應用版本
  • 出現bug的設備資訊(型號、版本等)
  • bug產生相關的視頻、截圖和錯誤日志
  • bug復現的步驟
  • bug出現的必要條件(環境)和恢復途徑
  • bug修復后的預期效果
  • bug對應的模塊或者關聯bug

有了以上的內容之后,相信程式員能夠很快地了解這個bug,定位出bug產生的原因并予以解決,

2.2 復現bug

如果你在第一步了解bug中獲得了良好的bug報告的話,則此部分可以很容易,你只需要按照bug報告中的bug復現步驟,按順序操作即可穩定復現bug,

當然,很多時候往往并不是一帆風順的,即使你手握bug報告,做了非常詳細的調查作業,然而bug就是無法復現,那么這個時候我們應該怎么做呢?

2.2.1 重新了解bug

此時為了能夠復現bug,你可能需要回到上一步,重現去了解bug,因為你之前對bug的理解可能產生偏差,又或者你第一步并沒有做好才導致了bug未能復現,這個時候帶著疑問去重現了解bug,可能你會發現新的大陸,

2.2.2 將偶現bug轉為必現bug

偶現bug算是bug家族中最調皮的一個了,它們以沒有規律,難以復現等特性,經常能把以一個好好的程式員給逼瘋,

但是既然是要復現bug,那么肯定要找到bug穩定復現的路徑,這樣才能方便下面bug的定位,這里我推薦大家的一個做法就是想辦法把偶現的bug轉化為必現的bug,因為即使是偶現的bug,很多也是特定條件下必現的bug,只不過此時你還沒發現這個特定條件而已,

那么怎樣才能將偶現bug轉為必現bug呢?這里我簡單介紹一下我常用的技巧:

  • 1.對比法:觀察并對比復現和不復現的各方面條件,找到那個必現的特定條件,

  • 2.注釋(洗掉)代碼法:對懷疑的代碼進行注釋(洗掉),直到徹底將偶現bug轉變為必現bug,

2.3 定位bug

一旦我們找到了bug穩定復現的步驟之后,下面的作業就是開始定位bug產生的地方了,

這一步可以說是解決bug的關鍵環節,這一步驟的難易程度一般取決于以下幾個因素:

  • 1.程式員自身的代碼量(作業經驗)
  • 2.對專案代碼(業務)的熟悉程度,
  • 3.分析問題和解決問題的能力

那么我們如何才能更快地定位出bug產生的位置呢?下面我提供一些思路供大家參考:

  • 1.斷點除錯法,這是程式員通用,同時也是最有效的定位問題的方式,一個不會斷點除錯的程式員和瞎子沒有本質上的區別,
  • 2.日志分析法,其實并不是所有bug都可以進行斷點除錯的,比如在一些回圈呼叫或者業務較為復雜的場景下,打日志分析定位是較為適合的方式,
  • 3.排除法,如果一個bug產生的原因可能有多種情況的時候,這個時候采取排除法的方式是最優的,你可以把可能導致bug產生的代碼塊都打上日志或者斷點,然后重現一下bug進行問題的定位,
  • 4.代碼回滾法,如果你這個bug在之前的版本是好的,但是在現在版本上又出現了,這個時候就可以使用代碼回滾大法,把你的代碼回滾到你懷疑的版本,運行看bug是否消失,然后對兩個版本之前代碼有何區別,最終定位出bug產生的位置,這里我們可以使用二分法來提高代碼的回滾效率,
  • 5.注釋(洗掉)代碼法,這個我在上一個步驟中也提到過,對于一些難以理解和定位的bug,我們可以使用這個方法進行嘗試,不過這個方法使用起來有一定的風險,因為可能你洗掉的那一串代碼雖然能夠解決bug,但是卻不是bug產生的根源,這個時候你可能會將必現bug改成了偶現bug,讓問題變得更加復雜,
  • 6.原始碼分析法,有的時候有些bug可能并不是你的代碼導致的問題,可能是第三方庫本身的bug,又或者是系統本身的bug,又或者是你誤用api導致的問題,這個時候就需要你擁有原始碼分析的能力,深入原始碼中,一層層分析直到最終找到bug產生的原因,
  • 7.聯想法,通過一些類似的bug修改經驗從而聯想猜測出bug產生的位置,這個方法對使用者本身有較高的要求,需要使用者對專案代碼和業務邏輯非常熟悉,同時對問題分析的能力有較高的要求,這就是我們常說的牛人能夠一眼就能看出問題,他們常用的就是這種方式,
  • 8.場外支援法,這是實在定位不出bug才采取的下下策,因為它并不能提高你定位bug的能力,同時請別人幫忙定位bug,你就需要把你之前所做的作業都要全盤地向他表述一遍,這樣不僅會降低bug修復的效率,同時還不一定能保證定位出bug產生的位置,它取決于你表述問題的能力和幫你的人分析和解決問題的能力,

2.4 確認bug

在我們定位出bug產生的位置后,下面的作業就是分析bug產生的根源了,

這一步可以說是bug修復6個步驟中最為關鍵的一步,這一步直接決定了這個bug能否被徹底地解決,同時也是最能體現bug修復藝術的步驟,

但是很遺憾的是,這一步往往被很多人給忽視了,我為什么會這樣說呢?因為很多時候我們修復bug的時候,都會受到各方面的限制:

  • 1.自身經驗水平的限制:一些初入專案的程式員經常因為修復一個bug而導致了另一個bug,又或者只是看到了bug的表象卻不能感知到bug產生更深層次的原因,所以10種產生bug的情況他可能只改了一種,將必現問題改成了偶現問題,讓bug變得更加復雜,
  • 2.時間限制:這是我們程式員經常碰到的限制,這在互聯網企業非常普遍,通常解決一個bug是有時間限制的,例如:這個專案明天就要上線了,并強制要求你今晚就得想辦法解決,這個時候你可能就被逼無奈,采取硬編碼的方式去臨時把這個bug給按住,其實這樣雖然bug是被臨時解決了,但是卻會讓這個bug變得愈加復雜,很多公司出現的那些祖傳代碼就是在這種情況下產生的,動一下就可能產生無數未知的bug,令人絕望,
  • 3.業務限制:很多時候導致代碼邏輯非常復雜難懂的罪魁禍首就是這種業務限制,我們在修復一個bug的時候,很多時候就是因為這種業務的限制,導致bug的修復一種不能從根源上予以解決,只要業務一調整就可能導致這個bug反復地出現,

說了這么多限制,那么我們如何才能找到問題的根源呢?

  • 1.多積累經驗,提升自身的水平:這是打破自身經驗水平的限制,
  • 2.及時處理bug:在收到bug報告的第一時間就去處理,盡可能打破時間的限制,
  • 3.多熟悉業務:有時間就多去了解和梳理業務,深入研究專案代碼,這樣我們在解決bug的時候也不會因為對業務不熟悉而無法分析出bug產生的根源,
  • 4.準確定位bug:bug定位的準確性直接決定了你能否分析出bug產生的根源,因此你需要仔細分析和定位bug,使用我上面介紹的8種方式去定位bug,

2.5 修復bug

其實前面的四步都是為這一步所做的鋪墊,有了前面四步的作業,相信到這兒也是相對微不足道的了,剩下的就是如何優美地解決這個bug了,

到了這個階段,bug通常不需要大的修改來修復,因此這一步往往會非常快,當然也就沒有什么好的技巧啦,

2.6 驗證bug

作為bug修復的最后一步,它是確保bug被真正修復的最后保障,

在這里需要我們著重注意以下幾點:

  • 1.重復之前復現bug的步驟來驗證bug是否被徹底解決,
  • 2.驗證bug修復可能改動到的相關模塊是否正常,保證bug修復不引入新的bug,

如果上述有任何一點沒有達到的話,請回傳步驟四和步驟五,重新修復bug!


3.如何提高bug修復的效率

上文我們著重講解了解決bug的藝術,為的是能夠更好地解決bug,但是如何才能保證既有效,又快速地修復bug,提高bug修復的效率呢?

通過上面對于解決bug的藝術的講解,我們可以總結出以下影響bug修復效率的幾個關鍵點:

  • 1.bug資訊收集的效率以及有效性,
  • 2.時間限制的壓力,
  • 3.人員對專案代碼(業務)的熟悉程度,
  • 4.人員自身經驗和分析問題的能力,

以上4點可以說直接決定了bug修復的效率,那么如何才能提高bug修復的效率呢?下面我將一一給出我的看法,

3.1 建立健全的資訊收集機制

bug資訊的收集可以說是修復bug程序中最為耗時的環節,提升bug資訊收集的效率以及有效性可以大幅度地提升我們修復bug的效率,

那么我們應該如何建立健全的資訊收集機制呢?這里我給出我的幾點建議:

3.1.1 提供優秀的bug報告模板

上文我們在了解bug一步中提到過:一份優秀的bug報告模板,可以讓程式員直接跳過bug修復的前三步,直接進入到確認bug步驟,從而能夠極大地提高bug修復的效率,

這里我再次重復一步,一份優秀的bug報告模板應當具備哪些內容:

  • bug的標題和問題描述
  • 出現bug的應用版本
  • 出現bug的設備資訊(型號、版本等)
  • bug產生相關的視頻、截圖和錯誤日志
  • bug復現的步驟
  • bug出現的必要條件(環境)和恢復途徑
  • bug修復后的預期效果
  • bug對應的模塊或者關聯bug

3.1.2 建立完備的日志體系

一套完備的日志體系,可以讓我們更加清晰地知道用戶到底做了什么才導致bug的出現,

在專案的初期,我們可能為了趕工期而常常忽視了日志列印的重要性,這很可能就會導致該專案日后的維護將非常得艱難,

那么我們為什么要建立一套完備的日志體系呢?

  • 1.并不是所有的用戶(測驗)都能夠給你描述清楚bug產生的資訊,
  • 2.即使用戶(測驗)給你描述了bug產生相關的資訊,但是他們并不理解你的代碼邏輯,他們只能根據bug出現的現象告訴你問題,可能他們的表述和你的理解不在一個頻道,

如果你有這么一套完備的日志體系,那么你就可以在用戶(測驗)不用開口的情況下,直接get到用戶的操作行為以及對于的代碼邏輯,同時,可能一句關鍵點的報錯日志就可以幫你直接定位到bug產生的位置,從而直接進入第四步確認bug

說了這么多,我們應該如何列印高效的日志呢?

  • 1.在例外分支回傳前列印日志,
  • 2.在復雜業務流程的關鍵點列印日志,
  • 3.在對外互動或者模塊互動點列印日志,
  • 4.在用戶互動或者生命周期的關鍵點列印日志,
  • 5.對重要的資訊點列印日志,記錄用戶畫像,
  • 6.按重要性分等級列印日志,
  • 7.禁止在回圈中列印日志,禁止列印無效的日志,
  • 8.禁止列印用戶隱私相關的資訊,

3.2 建立自動化測驗機制

建立自動化測驗機制,可以讓突破時間限制成為可能,

3.2.1 更早地發現bug

很多時候來自時間限制的壓力,往往是測驗不充分導致的,很多bug直到產品臨近上線或者交付的時候才被發現,這個時候唯一解決問題的方式就是在時間上做出限制,無情壓迫我們這些活在公司權力最底層的程式員們,

如果這個時候能有一套自動化測驗機制,每天下班后都進行自動測驗的話,那樣很多bug就能被提前發現,從而為我們修復bug預留了不少寶貴的時間,

3.2.2 節約bug驗證的時間

對于一些復雜難解、偶現的bug,我們往往會在確認bug驗證bug之間花費大量的時間,這個時候如果有一套自動化測驗機制或者工具幫助我們驗證bug的話,就可以極大地縮減我們修復bug的時間,

3.3 提高專案代碼(業務)的熟悉程度

提高人員對專案代碼(業務)的熟悉程度,這樣就可以極大地提高人員定位bug的效率,

3.3.1 建立豐富的知識庫體系

建立一套豐富的知識庫體系,可以幫助我們加深對自己責任內專案代碼(業務)的理解,同時還能幫助我們快速了解我們所不了解的業務模塊,

那么如何才能建立起豐富的知識庫體系呢?下面我給出我的幾點建議:

  • 1.對知識進行分類,
  • 2.定期添加和更新知識庫的內容,
  • 3.提高知識庫的檢索效率,
  • 4.定期組織知識的分享,
  • 5.激勵貢獻知識庫的人員,

3.3.2 建立責任田劃分機制

劃分責任田的目的就是:讓專業的人做專業的事情,

劃分責任田的好處:

  • 1.專業的人做專業的事情,劃分完責任田后,田主需要對自己負責的模塊負責,這就必然要求其對模塊內的代碼(業務)更加熟悉,
  • 2.責任到人利于追責和bug跟蹤,

當然責任田也不是想象中的那么完美,它也存在一定的缺陷:

  • 1.職責明確之后可能導致缺少全域視野,一些復雜的bug可能是幾個模塊共同作用下才產生的,對于這類bug的定位勢必會大大增加難度,
  • 2.劃分責任田之后,可能導致踢皮球的情況,

責任田劃分機制,它是一把雙刃劍,所以是否需要建立責任田劃分機制,還是需要結合企業自身的情況而定的,

3.4 提高人員的綜合素質

提高人員的綜合素質,可以幫助我們提高定位bug確認bug以及修復bug三個步驟下的效率,

  • 1.建立公平的員工晉升制度,這樣可以充分調動人員的主動性的積極性,提升人員的個人素質和業務能力,
  • 2.建立崗位輪換制度,讓人員定期負責不同的模塊,可以極大地提升人員的綜合素質和全域視野,
  • 3.定期組織培訓學習

4.最后

以上內容,是我參與作業五年,開源六年以來所總結下來的全部經驗,喜歡的可以點擊收藏或者三連支持一下!最后,還是祝福大家從此代碼無bug,哈哈哈!!!

5.微信公眾號

更多資訊內容,歡迎搜索我的微信公眾號:【我的Android開源之旅】

xuexiangjys CSDN認證博客專家 Java Android 架構設計
微信公眾號:我的Android開源之旅,
專注Android移動開發技術,擅長設計模式,架構設計,移動設備通訊,App快捷開發,

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

標籤:其他

上一篇:我與CSDN的2020

下一篇:開源 – “這是最好的時代,這是最壞的時代”

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