分類: 3C資訊

  • NetAnalyzer筆記 之 十四 NetAnalyzer 6.0 的使用方法 — 3.協議分析與統計

    NetAnalyzer筆記 之 十四 NetAnalyzer 6.0 的使用方法 — 3.協議分析與統計

    數據分析

    完成了數據的抓取,那麼接下來就是NetAnalyzer的第二個重點部分了,協議分析作為整個軟件的核心之一,在最新的NetAnalyzer中已經得到了巨大的提升。NetAnalyzer中協議分析分為單數據包分析,和聯合分析兩種分析方式,對於聯合分析會根據不同的協議特性進行形成不同的分析方案,目前支持傳輸協議(TCP/UDP)協議分析, HTTP協議分析。在數據統計部分部分還增加了針對ARP協議的圖形化分析。對於協議分析,需要了解相關的網絡知識或是有相關專業背景支持。

    單數據包分析,在獲取到數據包后,軟件工作界面數據包列表框中會显示所獲取的所用數據包,並且對這次數據做了一些簡單的分析,我們可以憑藉這些數據簡單判斷所對應的的數據包類型。

     

    數據包列表

    當我們選中一行,即選中一個數據包,我們可以看到對該數據包詳細的數據分析信息,並一樹狀結構樹呈現出來,並在右側显示該數據包原始信息。當我們選中協議樹中一個字段時,右側的數據就會定位到當前字端所分析數據的位置。

     

    數據分析

    然後通過對應的協議格式進行匹配與分析,如這部分的IP協議。

     

    IPv4協議格式

    需要注意的是,NetAnalyzer目前對於選中的字段只能精確到字節層次,對於一些協議,其中一個字節可能包含了多個字段,或是跨字節的字段,則會選擇全部的字節數據,比如IPv6協議。

     

    IPv6協議格式

    其中的版本字段只佔用了4bit(1字節為8bit),通信類型佔了8bit 也就是1字節,但是因為其中前面部分使用了版本字段所在字節後面的4bit,所以改字段為一個典型的跨字節字段,同樣流標籤字段使用了20bit,佔用第二個字節的4bit加上後面自身的2個字節(16bit)。

     

    解析后的IPv6數據

    對於類型的字段因為NetAnalyzer使用十六進制显示數據,並不能清晰表達bit層次的信息所以當選定字段后默認選中改字段所在的字節,如點擊版本選中方式如下,

     

    IPv6版本信息

    選中通信類型和流標籤則呈現方式如下。

     

    通信類型和流標籤共用數據

    數據分析標籤

    雖然NetAnalyzer盡可能多分析每個數據包所包含的信息,但是依舊存在很多數據需要我們手動去解析。所以軟件增加了數據標籤。

     

    數據分析

    數據標籤頁點擊 显示 按鈕 就可以打開數據轉換窗口,當然也可以在常規轉換中點擊任意功能可以打開轉換窗口

     

    轉換窗口管理

     

    關閉按鈕為關閉轉換窗口,清空則是清空當前窗口內的數據。

    點擊清空按鈕,則清空轉換信息。

     

    常規轉換工具

    NetAnalyzer中提供了一部分簡單的轉換功能,這些功能只有在載荷數據被選中的情況的才可以啟用,

    如點擊二進制按鈕,則對所選的數據轉換為對應的二進制字符串。如下圖所示。

     

    常規數據轉換窗口

    除了一些簡單的轉換功能,還集成了MangoScript擴展方式和插件擴展方式(無可用插件的

    時候不显示)的轉換。

     

    擴展MangoScript的解析

    如下面通過MangoScript針對某即時通信軟件的數據分析。

    針對於MangoScript和插件兩種方式的轉換,將會在在《NetAnalyzer使用說明書 二 擴展與開發》中詳細說明,此處不再贅述。

     

     

    定位轉換功能需要配合常規轉換進行使用,有時候我們確定某個字節會在一個確定的位置出現,比如IP地址字段,我們選中該位置,位置字段就會出現一串代碼 (10,1) [26]-4

    (x,y)[offset] – length

     x: 十六進制編輯器水平方向的偏移量

     y :   十六進制編輯器垂直方向的偏移量

    offset : 字節偏移量,offset = y * 16 + x

    length :  當前選擇的數據長度

     

    數據轉換

    所以代碼 (10,1) [26]-4 確定了當前IP地址的位置,此時點擊 常規轉換 -> IPv4地址 則會在模式中記錄當前的轉換模式,然後點擊定位轉換,就會在當前數據包列表中針對每個數據包這個位置執行定位操作,這對於尋找所需要的數據非常重要。

     

    選擇了IPv4轉換

     

    執行定位轉換

    對於MangoScript和插件擴展依然支持定位轉換。

     

    區塊複製,主要是對一些已經選中的字節進行複製轉為代碼,字節數組,以及保存的功能,以及數據做手動分析,腳本分析以及自定義轉換等,後續將會說明,此處不再詳細介紹。

     

    數據塊操作

     

    字節定位,與定位轉換類似,但是字節定位主要是用來在數據包列表中查找相同位置出現相同字節序列的數據包。算作一個查找功能。

     

    字節定位

    分析標籤

    分析標籤下個功能依託於數據包列表,分別有載荷數據提取,數據包標記,編碼轉換,數據查找,統計等相關功能,是聯合分析的主要功能,下面將會着重對一下功能進行說明。

     

    數據分析標籤

    TCP/UDP協議分析   前面介紹的都是基於單包的數據分析,而在協議分析中,我們大部分分析的數據都是依託於TCP/UDP的長連接數據,這部分數據的特點就是有多個數據包通過tcp或udp相關協議完成數據重組后才可以使用(基於udp的連接數據可能不是很嚴格)。

    NetAnalyzer 除了提供基於單包的數據分析,更提供了基於連接數據的分析,而分析出來的數據不僅僅是在窗口上呈現一堆亂碼,更可以通過DocBar將獲取的數據提取出來進行使用。

    開始 標籤最後一部分就是基於長連接的分析。點擊TCP/UDP 按鈕

     

    基於TCP/UDP載荷數據查看

    此時NetAnalyzer便會切換到載荷數據模式(該過程可以通過配置,使用獨立窗口打開)。在該模式下會打開專有的載荷數據菜單,數據區域也會變為對於載荷數據的分析,這裏先介紹一個NetAnalyzer中的DocBar工具,如下圖

     

    DocBar

    在文本模式下,分析載荷數據會显示該工具條,該工具條會提供針對當前數據塊的各種操作,當然在不動情況下,显示的工具和數量,都有所不同,下面是對當前各個功能的說明。

    l   對當前數據塊進行摺疊

    l   選中當前的分析數據

    l   保存當前原始數據

    l   查看原始數據(bytes數據)

    l   MangScript解析數據

    l   手動測試數據

     

    對於其他情況下的工具在這裏不會一一介紹,但是碰到的時候會有說明,並且隨着後續功能點的增加,DocBar可能會有更多的功能添加進來。

     

    tcp/udp 的分析分為 文本模式原始模式 ,文本模式主要是用於分析載荷數據為文本的數據,我們可以通過下面兩種方式更改文本編碼方式,分析數據。

    文本模式下,呈現方式如下:

     

    查看載荷數據

    原始模式分析如下,可用通過TCP/UDP的下拉菜單命令 字節數據 切換為原始數據

     

     

    字節查詢方式

     

    字節方式呈現

    對於在該功能下針對TCP的所有數據都已經進行過TCP重組,所以最終分析完成的數據並不是按照數據包方式做簡單呈現就可以的,都會做數據的篩查與整理。如果需要單包分析的使用者需要注意一下。

     

    HTTP數據分析 http作為最有網絡代表意義的協議,NetAnalyzer提供了更加完善的分析,http基於tcp協議,所以數據還原等都建立在tcp數據還原的基礎之上。通過http分析,我們可以還原很多有意義的數據,如獲取到Http所傳輸的的html、js、css數據文件,還可以獲取到基於http協議分析得到的圖片,文件等信息,如下圖分別為還原后的圖片和zip壓縮包。

     

    http方式分析出的圖片

     

    http方式分析出的文件

    對於常規的字符串或圖片可以直接在NetAnalyzer呈現,但是對於其他類型的文件,如視頻、音樂、以及上面提到的zip壓縮包文件,在在NetAnalyzer會簡單显示為二進制數據,該數據如果過長,則會截斷显示,但是在後面會加入【全部數據】下鑽選項,當點擊該數據后則會打開原始數據對話框,並且會完整显示當前的數據,如下圖所示。

     

    查看原始數據

    原始數據對話框中,提供了簡單的數據另存為和數據識別相關的功能。

     

    原始數據保存

    保存 保存當前窗口中的數據為一個文件。

    保存選擇數據 是當選擇對話框中其中的一段數據保存為文件,有時候數據可能存在偏差,或者我們需要提取選定的數據保存為文件,可以通過下拉保存選定的數據進行保存。

    數據識別功能。

    轉為… 則是將當前的數據轉到編碼轉換工具中進行進一步分析。

    自動識別 為了更加快速的實現數據提取,NetAnalyzer增加了數據識別模塊,通過整理不同文件的頭部或尾部字節形成數據識別特徵,當進行自動識別的時候,可以快速定位字節。

     

    文件識別

    添加特徵 將選定的指定字節添加為文件識別頭,並且添加相關信息,形成一個特徵。

     

    添加文件識別

    識別管理 管理特徵庫,在後續將詳細介紹該功能點。

     

    載荷數據分析出的文件

    除了使用常規的識別方式,在載荷數據提取中也加入了數據識別功能。在使用的時候點擊數據識別就可以在下方显示被識別到的數據類型,有時候可能會存在多個類型和誤識別的情況,使用的時候請務必注意。

    有時候通過HTTP協議還原部分二進制數據,如下面還原ZIP文件,文檔會以二進制數據呈現,而我們可以通過0x50 0x4B(PK)推斷出該文件很有可能是zip文件 ,所以我們點擊全部數據 ,打開原始數據窗口,這部分數據正好是zip的全部數據。

       

    保存的zip文件內容

    此時點擊將當前數據保存為zip文件。減壓就可以看到對應的文件內容。

     

    在載荷數據模式下,菜單會自動切換為,載荷模式菜單

     

    載荷數據標籤

    該菜單下提供了很多常用的字符串轉換工具

     

    格式轉換工具

    如下面通過通過Cookie格式化,格式化了http頭中的cookie字段

     

    Cookie格式化

    需要注意的是使用這些字段首先需要選中被轉換的文本,然後點擊需對應的功能項。其中如果點擊轉換為…,則啟動NetAnalyzer附帶的編碼轉換工具,進行集中處理。

     

    編碼轉換工具

    針對html字符串數據,還提供了過濾標籤和HTML預覽功能,因為該部分功能都很類型,且使用簡單,用戶自行嘗試使用即可。

     

     

    時序圖 在數據分析中,除了對於數據本身的分析之外,有時候我們還要去評測一些數據質量等方面的內容。並且可以通過圖像化的方式表現出來。

     

    TCP時序圖分析

    時序圖模擬TCP/UDP在數據網絡中的數據傳輸過程,還原網絡通信場景,如該圖可以完整的反映TCP三次握手以及斷開連接四次揮手的情景。可以作為對當前分析數據從另外一個方面的反饋,更具有參考意義。

    點擊

     

    時序圖選項

    就可以看到針對於當前tcp/udp 數據交互的情況。

     

     

    數據標記

    在分析標籤下面,有標記功能,實現對當前採集會話數據連接的進行快速識別。

     

    數據標記

    NetAnalyzer提供了四中顏色對數據包鏈接進行區分。

    如TCP數據包,就會通過源IP地址+源端口地址+目標IP地址+目標端口 作為一個特徵來進行識別,此處的源和目標具有相對性。

    注*  ctrl+鼠標左鍵 可以實現對數據會話的快速標記 顏色為紅色

     

    標記完成的數據

    通過點擊清理標記,可還原數據。

     

     

    數據包查找 

     

    數據包查找

    在數據包列表模式下使用Ctrl+F即可以打開數據包查找功能。

    該功能主要是實現快速查找數據包的功能,可以通過編號,協議,地址(mac/ip),端口,關鍵字等五種方式查找數據包。還可以通過數據列表導航按鈕進行數據包列表瀏覽。

     

     

    編碼方式

    在通過TCP/UDP 或HTTP 功能還原數據的時候,有時候會出現亂碼,尤其是對非英文字符。在HTTP協議中通常都會在頭部信息中攜帶編碼方法,通過提取就可以獲取到編碼方式,但是仍然後部分服務並不提供編碼字段,這時候就需要我們通過手動切換,來嘗試還原相關信息。

    通過菜單欄或者是狀態欄都可以對編碼方案進行切換

     

    字符編碼

     

    狀態欄字符編碼

    這裏需要注意的是如果http頭部包含了編碼方式,則使用頭部提供的編碼方式。

     

     

    數據統計

    目前NetAnalyzer显示了大量的統計方式,涵蓋了數據報表、流量分析、主機通信矩,傳輸報告、ARP報告等多種統計方式。

     

    數據報表

     

    報表信息

    對當前捕獲的數據表中的數據進行統計與歸類。呈現方式如有圖所示。

     

    報表內容

    包含一些基本信息,數據量與時間直線圖,數據量佔比,關係圖等信息

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

    ※回頭車貨運收費標準

  • 為什麼阿里巴巴Java開發手冊中不允許魔法值出現在代碼中?

    為什麼阿里巴巴Java開發手冊中不允許魔法值出現在代碼中?

    在閱讀《阿里巴巴Java開發手冊》時,發現有一條關於關於常量定義的規約,具體內容如下:

    圖中的反例是將數據緩存起來,並使用魔法值加鏈路 id 組成 key,這就可能會出現其他開發人員在複製粘貼的時候,少複製 _ 的情況發生,這種錯誤很難去檢查到,因為讀取緩存不存在,可能會去數據庫讀取,很難察覺到。

    如果在生產環境中,大量的請求進來,緩存全部失效,直接請求數據庫,導致數據庫連接過多,查詢效率變低的問題發生,因此看來魔法值確實應該避免出現在代碼中。

    另外在 《Clean Code》 和 《重構》 等書中也提到了類似的問題,在代碼中出現原始形態数字通常來說是壞現象,應該用命名良好的常量類隱藏它。

    靜態常量取代魔法值

    像下面這個例子:

    if (billCount > 75) {
        //todo
    } else {
        //todo
    }
    

    如果在不了解這塊的業務的同事,在讀到這塊代碼的時候,可能會想,75 是什麼鬼,為啥和這個數比較,背後深藏着什麼秘密嗎?可能只有當時的開發人員記得了,導致代碼可讀性和可維護性極差。

    如果聲明一個常量,來替換該魔法值,可能就會使代碼的可讀性和可維護性大大增加。

    static final Integer BASIC_BILL_COUNT = 75;
    

    還有些魔法表達式,比如:

    if (value > 60 && value <= 80 && type = 1) {
        // todo
    }
    

    比如這個表達式是表示狀態為正常且項目活躍,就可以定義:

    boolean isActiveProject = value > 60 && value <= 80 && type = 1;
    

    這樣是不是可讀性就提高了,一眼就可以看出來這塊代碼的邏輯。

    枚舉類取代魔法值

    還有一種消除魔法值的方式是使用枚舉類代替,下面讓我們舉個例子:

    if (eventId == 1) {
        System.out.println("睡覺");
    } else if (eventId == 2) {
        System.out.println("吃飯");
    } else if (eventId == 3) {
        System.out.println("打豆豆");
    }
    

    如上代碼是針對事件 id 去執行相應的事件,如果事件比較少,大家還可以勉強記住每個 eventId 對應的含義,但是隨着事件 id 的增多,很可能會發生,新來的員工把事件 id 給搞混了,導致執行錯誤的事件,發生 bug。

    那麼我們可以使用枚舉類來表示相應的事件:

    public enum EventEnum {
    
        /**
         * 睡覺
         */
        SLEEP_EVENT(1, "睡覺"),
    
        /**
         * 吃飯
         */
        EAT_EVENT(2, "吃飯"),
    
        /**
         * 打豆豆
         */
        FIGHT_PEA_EVENT(3, "打豆豆");
    
        private int eventId;
        private String desc;
    
        EventEnum(int eventId, String desc) {
            this.eventId = eventId;
            this.desc = desc;
        }
    
        public int getEventId() {
            return eventId;
        }
    
        public String getDesc() {
            return desc;
        }
    }
    

    修改完之後的代碼如下:

    if (eventId == EventEnum.SLEEP_EVENT.getEventId()) {
        System.out.println("睡覺");
    } else if (eventId == EventEnum.EAT_EVENT.getEventId()) {
        System.out.println("吃飯");
    } else if (eventId == EventEnum.FIGHT_PEA_EVENT.getEventId()) {
        System.out.println("打豆豆");
    }
    

    是不是可讀性急劇提升,還不快看看自己代碼中有沒有這樣的魔法值出現,有的話趕緊改造起來。

    還有如果你需要在不同的地點引用同一數值,魔法數會讓你煩惱不已,因為一旦這些数字發生改變,就必須在程序中找到所有的魔法值,並將它們全部修改一遍,這樣就太費時費力了。

    其實不只是 Java 不應該在代碼中使用魔法值,其他語言亦是如此。

    總結

    本文主要介紹了為什麼不允許在代碼中出現魔法值以及如何將代碼中已有的魔法值去除掉。

    代碼可讀性還是比較重要的,你肯定不希望別人在接手你的代碼的時候,罵到這数字啥意思,這代碼寫得跟粑粑一樣。

    最好的關係就是互相成就,大家的在看、轉發、留言三連就是我創作的最大動力。

    參考

    《Java開發手冊》泰山版

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計最專業,超強功能平台可客製化

    ※回頭車貨運收費標準

  • 最近面試遇到的種種應聘者,你是這樣的嗎?

    最近面試遇到的種種應聘者,你是這樣的嗎?

    原文鏈接

    很久沒有寫文章了,一時間竟不知如何開篇?為什麼沒有寫呢?是因為太忙了。最近在忙什麼呢?工作學習還有就是招人。上班時間不忙的時候大多是在看技術文章、技術文檔,上下班公交車上也是,還有就是最近兩個月在面試一些人。其實我是不太想面的,原因有三。一是耽誤我自己的時間,二是面了十幾個只有一兩個能讓我很稱心的。還有就是太費錢了公司又不給報銷,所以我最近都會用一些會議軟件來面試。

     

    昨天面試了一個2012年開始工作的30歲程序員,面試前我心裏打鼓,畢竟我才工作三年但是說實話面下來不太理想,首先簡歷寫的一般,簡歷排版格式有點亂,多處字體不一致,還有技術棧很老,項目很小大多是內部用的,沒用過Redis,分佈式相關的東西沒有,也沒自己去了解過項目之外的東西,其次面試問到的問題回答的不到一半,但是態度還是不錯的,臨了還問我面試情況,我說了我的感受,也給了一些建議。

     

    其實稍微看看他的簡歷,待過的公司,做過的項目也,就能知道為什麼工作七八年的30歲程序員水平這麼一般了。工作這麼多年一共待過兩個公司,看樣子都是外包公司,寫的幾個項目也大多數是內部使用的一些管理系統,併發量不大,沒有技術挑戰,對自己提升不高。

     

    那麼程序員如何突破自己呢?怎麼才能擺脫中年危機呢?首先要跳出舒適圈,人都是有惰性的,都喜歡安逸的活着,如果生活過得去,沒有太大的壓力,誰又願意再努力一把呢?但是成功往往屬於那些肯逼迫自己的人,肯走出舒適圈、有目標的人。即使是30多了也是可以拼一把的,如果你是該技術的,那也可以再把技術深造深造,搞的紮實一點;如果你已經考慮轉管理了,那你就往管理方面靠,多看看管理方面的書籍,有空再考個管理的證,但是技術你也不能落下,不要求你把技術搞的多精通,但最起碼你要知道這個技術,了解一下他的基本原理,要不然有一天你要你下屬引進一個技術,他告訴你太難要花好多時間,或者說搞不了,你都不知道他說的是真的還是假的,如果你相信了,那他以後背地里就笑話你不懂技術,那以後這樣的事情還會多着呢。

     

    另外不建議搞技術的過早的去轉管理,比如你剛工作3年,你的經理建議你去轉管理,這是不建議的,原因上面也說了,你的技術還不透徹,對技術的把控你完全不懂,到時候讓你評估一個技術引入的工作量,難度等,你搞不定的話又可能還會鬧出笑話。

     

     

     

    今天遇到一個應聘者,工作經歷三年,四個項目全都是管理類的、內部使用的項目,但是人家簡歷寫的技術都是熟悉啊,符合公司的招聘標準啊。OK,面吧,來唄。

     

    專業技能這塊寫的都是熟悉,我一看會這麼多還挺棒的GOOD BOY

     

     

     

     

    廢話不多說,上來我就問,Java基礎你掌握的熟練嗎?對方說還行吧,我就先問了幾個Java語法的概念,然後問了HashMap的put操作的流程、擴容機制,什麼時候擴容的?做什麼操作的時候會發生線程不安全?統統回答的不好。

     

    我:如果想使用線程安全的Map,用哪個?

    應聘者:ConcurrentHashMap

     

    我:ConcurrentHashMap怎麼保證線程安全的?

    應聘者:這個…我平時用的少,不太知道底層

     

    然後接着我就問什麼是Spring?對方的回答是Spring是一個框架,核心是AOP和IOC。這就回答完了。

     

    我:spring有什麼優點呢?

    應聘者:有 什麼優點?…嗯…這些概念性的東西我忘了…

     

    我:那你說一下什麼是Spring AOP,可以干什麼用?使用什麼技術實現的?

    應聘者:AOP就是面向切面編程,可以用來記錄日誌,安全管理,用動態代理實現的

     

    我:Spring AOP使用的哪種動態代理?

    應聘者:JDK動態代理,CGLIB動態代理

     

    我:什麼時候用JDK動態代理,什麼還是用CGLIB動態代理

    應聘者:它有一個判斷,好像是沒有繼承類時用JDK動態代理

     

    我:BeanFactory和ApplicationContext有什麼區別?

    應聘者:….我們項目spring用的很少,用的是springboot

     

    然後我簡單的問了幾個springboot的基礎問題,還都能回答上來,可以看出來確實用了springboot。

    看他簡歷上寫的熟悉spring cloud,我心想做這些管理系統還需要微服務嗎?就問他在哪個項目里用到了,他說沒用過,是自己自學過。

     

    因為我們也沒有這套技術,我就沒再問。

    我對MQ感興趣,就問他RabbitMQ的問題。

    我:使用RabbitMQ有什麼好處啊?

    應聘者:我們發郵件使用了RabbitMQ,往MQ里發郵件。

     

    我:為什麼要用RabbitMQ啊?(我問有什麼好處,他剛沒回答,我換個問法)

    應聘者:你是說為什麼不用別的MQ嗎?項目里用的就是RabbitMQ我就用了

     

    我:發郵件不用MQ也能實現,為什麼要引入MQ呢?有什麼好處嗎?

    應聘者:不用MQ也能實現嗎?我不知道,我們發郵件就是用RabbitMQ,我就用了。

    我:(跳過這個問題吧)那你能說一下RabbitMQ的消息是基於什麼傳輸的?

    應聘者:基於什麼傳輸?你這問的好官方啊,我不知道問的啥,你能問的通俗點嗎?

     

    我:(算了跳過)那你知道RabbitMQ它的消息怎麼路由嗎?

    應聘者:這個…我不太清楚,記不清了,上個項目用到了,好久沒有用了,但是我如果有項目要使用的話,基本上再看看就能很快上手了。

     

    我:哦,我看你技術寫的都是熟悉。那你Redis用的多嗎?

    應聘者:用的少,我買過視頻看過。

     

    我:那你說一下Redis的數據類型都有哪些?各自的使用場景

    應聘者:string,hash,list,set,zset

     

    我:(這就完了?明明問的還有使用場景呢)怎麼使用Redis實現分佈式鎖呢?

    應聘者:這…嗯…我不太清楚,項目中不怎麼用redis,都是內部使用的很少用redis

     

    我:redis有哪幾種架構模式啊?

    應聘者:架構模式…呃…不知道,對redis了解的不多。你問我點業務。(老是問我不會的,你問點業務啊?)

     

    (不多,你簡歷寫熟悉⊙﹏⊙b汗,還教我問你,你是面試官還是我是啊?你的項目有毛的業務)

     

    我:那你說一下你在項目中怎麼使用Spring security的

    應聘者:….

     

    我:那你講一下SSO的流程

    應聘者:….

     

    這幾個問題,我已經沒仔細在聽他回答的是什麼了

    最後又問了幾個問題,我已經不想問了,已經快四十分鐘了。

     

    我:我今天就這麼多問題,你有什麼要問我的嗎?

    應聘者:咱們公司是在北京嗎我看手機號是北京的(…等一些關於項目的幾個問題)

     

    這個應聘者存在一個什麼問題?眼高手低,高估自己,面試準備不充分。建議近期找工作的把Java基礎,JVM,集合,併發,數據庫,redis,框架,dubbo,zookeeper弄懂,準備充分,這樣才能百戰不殆,成為offer收割機。

     

    還有的應聘者問題回答的賊6,問道到在項目中怎麼使用的,哪些地方用到了,就卡殼了。很顯然這樣的就是簡單粗暴的背面試題,所以也要結合自己的項目去準備面試,把面試題嵌入到項目中,能說出在項目里哪些地方用到了,有什麼優點等,盡量準備充分。

     

    好了今天就分享到這裏,有什麼需要交流的歡迎留言哦~

     

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    南投搬家公司費用需注意的眉眉角角,別等搬了再說!

    ※教你寫出一流的銷售文案?

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

  • Azure AD(四)知識補充-服務主體

    Azure AD(四)知識補充-服務主體

    一,引言

      又到了新的一周了,也到了我新的分享的時間了,還記得上一周立得Flag,其中 “保證每周輸出一篇文章” ,讓我特別“在意”(這裏用詞不太恰當)。主要是我的一個大學舍友,他突然問了我一個關於寫博的事情,自己也在上周開通了賬號,也想着堅持寫博客。在我看來,這確實是一件好事,寫博不僅僅是分享的過程;也是自己提煉寫博的一個過程,以及文章組織的能力,對自己還是很有好處的。這不僅僅要寫內容要精鍊,同時也要讓別人能看的懂。加油,默默的在這裏給他打氣。(ง •_•)ง

    好了,開始今天的分析

    ————————————我是分割線————————————

      上一周有介紹到Azure AD資源託管標識的內容,其實就包括如何去操作開啟系統分配的託管標識,以及通過開啟託管標識,VM如何去訪問Azure 中的一些資源,如 “Key Vault” 等。今天去分析一波關於“Service Principal”(服務主體)。

    二,正文

    1,服務主體對象

      若要訪問受 Azure AD 租戶保護的資源,需要訪問的實體必須由安全主體來表示。 這同時適用於用戶(用戶主體)和應用程序(服務主體)。安全主體定義 Azure AD 租戶中用戶/應用程序的訪問策略和權限。 這樣便可實現核心功能,如在登錄時對用戶/應用程序進行身份驗證,在訪問資源時進行授權。當應用程序被授予了對租戶中資源的訪問權限時(根據註冊或許可),將創建一個服務主體對象。 Microsoft Graph ServicePrincipal 實體定義服務主體對象屬性的架構。

    2,應用程序和服務主體的關係

    可以將應用程序對象視為應用程序的全局表示形式(供所有租戶使用),將服務主體視為本地表示形式(在特定租戶中使用)。

    應用程序對象用作模板,常見屬性和默認屬性從其中派生,以便在創建相應服務主體對象時使用。 因此,應用程序對象與軟件應用程序存在 1 對 1 關係,而與其對應的服務主體對象存在 1 對多關係。

    必須在將使用應用程序的每個租戶中創建服務主體,讓它能夠建立用於登錄和/或訪問受租戶保護的資源的標識。 單租戶應用程序只有一個服務主體(在其宿主租戶中),在應用程序註冊期間創建並被允許使用。 多租戶 Web 應用程序/API 還會在租戶中的某個用戶已同意使用它的每個租戶中創建服務主體。

    下圖演示了應用程序的應用程序對象和對應的服務主體對象之間的關係,其上下文是在名為 HR 應用的示例多租戶應用程序中。 此示例方案中有三個 Azure AD 租戶:

    • Adatum -開發HR 應用的公司使用的租戶
    • Contoso -contoso 組織使用的租戶,即HR 應用的使用者
    • Fabrikam -fabrikam 組織使用的租戶,它也使用HR 應用

    在此示例方案中:

    表 1

    步驟 說明
    1 是在應用程序的宿主租戶中創建應用程序對象和服務主體對象的過程。
    2 當 Contoso 和 Fabrikam 的管理員完成同意並嚮應用程序授予訪問權限時,會在其公司的 Azure AD 租戶中創建服務主體對象,並向其分配管理員所授予的權限。 另請注意,HR 應用可能配置/設計為允許由用戶同意以供個人使用。
    3 HR 應用程序的使用者租戶(例如 Contoso 和 Fabrikam)各有自己的服務主體對象。 每個對象代表其在運行時使用的應用程序實例,該實例受相關管理員同意的權限控制。

    3,使用Azure CLI創建Azure服務主體(示例)

    使用 az ad sp create-for-rbac 命令創建服務主體創建服務主體時,請選擇其使用的登錄身份驗證的類型。

     注意

    如果您的帳戶無權創建服務主體,將返回一條錯誤消息,其中包含“權限不足,無法完成操作”。請與您的Azure Active Directory管理員聯繫以創建服務主體。

    3.1,在 “azure portal” 中驗證當前的Azure訂閱

    az account show
    

    3.2,显示訂閱名稱ID值的列表

    az account list --query "[].{name:name, subscriptionId:id}"
    

     

    3.3,使用 az ad sp create-for-rbac 命令,將其替換<subscription_id>為要使用的訂閱帳戶的ID

    az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription_id>"

    注意:我們將創建一個具有 “Contributor” (貢獻者角色:默認角色)的服務主體。該 “Contributor” 角色具有完全的權限讀取和寫入到Azure的賬戶,

    成功完成后,該命令將显示幾個值,包括自動生成的密碼  

     

    同時,我們可以在 “azure portal” 中可以找到對應的設置 選擇=》Azure Active Directory

     

    點擊 “App registrations”

     

     同時,我們可以在當前訂閱下的 “IAM”中找到對應的角色訪問權限信息。當然了,上面我創建服務主體的時候給的 scope 是整個訂閱,也就是我們可以通過這個服務主體去訪問azure的任何資源。

    例如 “azure devops Pipeline” 在CD的過程,需要配置 “Service Principal”

     

     例如使用Terraform 構建基礎架構資源的時候,需要配置 Service Principal

    三,總結

      使用Azure服務的自動化工具應始終具有受限權限。Azure提供服務主體,而不是讓應用程序以完全特權用戶身份登錄。Azure服務主體是為與應用程序,託管服務和自動化工具一起使用而創建的身份,以訪問Azure資源。這種訪問受到分配給服務主體的角色的限制,使您可以控制可以訪問哪些資源以及可以訪問哪個級別。出於安全原因,始終建議將服務主體與自動化工具一起使用,而不是允許他們使用用戶身份登錄。

    服務主體的默認角色是Contributor該角色具有讀取和寫入Azure帳戶的完整權限

    參考資料:RBAC內置角色:https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles

    作者:Allen 

    版權:轉載請在文章明顯位置註明作者及出處。如發現錯誤,歡迎批評指正。

     

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※想知道最厲害的網頁設計公司"嚨底家"!

    ※別再煩惱如何寫文案,掌握八大原則!

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※回頭車貨運收費標準

    台中搬家公司費用怎麼算?

  • 將「生態滅絕」行為入罪化 法國公民會議促辦公投

    摘錄自2020年6月22日自由時報報導

    法國參與推動解決環境問題的「公民氣候公約」(Citizen’s Convention on Climate)理事會昨(21日)提出「生態滅絕」(Ecocide)提案,呼籲法國政府舉行公投,將破壞自然生態環境的行為入罪化。

    「公民氣候公約」是法國總統馬克宏(Emmanuel Macron)在2018到2019年黃背心運動(Yellow vests movement)後,回應「直接民主」的訴求下成立的理事會,以隨機的150位公民組成,旨在達成2030年的溫室氣體排放量和1990年相比減量40%。

    馬克宏上週建議理事會就各項提案舉行獨立公投,提案包括改善房屋隔熱、將高速公路限速從時速130公里調整至110公里等措施,與會人士則在會議中投票否決馬克宏的提議。馬克宏表示,將在29日於愛麗舍宮(Elysee Palace)和理事會150名成員進行會談,並針對議題做出回應。

    全球變遷
    氣候變遷
    國際新聞
    法國
    公投
    大滅絕
    氣候變遷
    全球暖化

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※別再煩惱如何寫文案,掌握八大原則!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※回頭車貨運收費標準

  • 美國早產率隨高溫與空污攀升 非裔孕婦風險更高

    環境資訊中心綜合外電;姜唯 編譯;林大利 審校

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※別再煩惱如何寫文案,掌握八大原則!

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    ※超省錢租車方案

    ※教你寫出一流的銷售文案?

    網頁設計最專業,超強功能平台可客製化

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

  • 星巴克美國分店 首度推出人造肉餐點

    摘錄自2020年6月23日中央社報導

    為降低環境衝擊盡一分心力,星巴克的美國和世界各地分店早就開始以豆漿和燕麥奶來替代牛奶,不過美國連鎖咖啡品牌星巴克(Starbucks)今(23日)表示,將首度把植物肉列入旗下美國分店的菜單中。

    美聯社報導,總部位於西雅圖的星巴克表示,一款巧巴達三明治中使用模仿肉品口感的素香腸,來自加州紅木城(Redwood City)人造肉公司Impossible Foods,配料還有雞蛋、起司,現在多數旗下美國分店都有供應。

    星巴克4月在中國市場攜手另一家人造肉公司Beyond Meat,推出起司千層麵、香蒜醬義大利麵以及酸辣玉米餅捲等人造肉餐點。星巴克2月時,也在加拿大使用Beyond Meat的人造肉提供三明治作為早餐。

    國際新聞
    美國
    星巴克
    人造肉
    生物科技

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※推薦台中搬家公司優質服務,可到府估價

  • 越野旅遊收益因疫情銳減 保育經費無以為繼

    摘錄自2020年6月24日公視報導

    非洲國家受到疫情衝擊,各國野生動物保育專案計畫的經費也被迫裁減。保育團體就擔心,盜獵象牙和犀牛角的惡習,將和疫情一起蔓延。

    根據非洲的旅行業同業公會估計,從肯亞、烏干達一路往南,到波札那和南非,這類搭車跟著野生動物觀察遷徙路線的行程,每年可以帶來總計約新台幣3670多億元的收益。但因疫情國際航空幾乎停擺,經調查顯示,超過300家大小旅行社,有9成以上業者的業績只剩原來的1/4。除了相關的產業收入銳減,有關各國的野生動物保育專案計畫也被迫裁減編制與經費。

    由於中國在2018年以維護文化傳統、充實中醫藥材為由,取消買賣犀牛角的禁令,保育團體擔心盜獵者將利用巡邏人力的缺口,把非法取得的犀牛角拿去賺黑心錢。路透社的報導指出,南非有三個頗受歡迎、又可合法狩獵的野生動物公園,採取防範措施。工作人員在讓犀牛得以存活的條件下,切除部份的犀牛角,希望減少盜獵者對這些犀牛的興趣。

    生物多樣性
    國際新聞
    非洲
    武漢肺炎
    象牙
    犀牛角
    動物與大環境變遷

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    網頁設計最專業,超強功能平台可客製化

  • 墨西哥地震規模7.4釀5死 震央附近交通中斷傷亡恐增

    摘錄自2020年6月24日中央社報導

    墨西哥南部太平洋岸今(23日)發生規模7.4強震,造成至少5人喪生,偏遠村落交通中斷,地震威力之強,連遠在震央數百公里外的首都墨西哥市(Mexico City)都有建築物受損。

    這起強震震央在瓦哈卡州(Oaxaca)附近,死傷也是在這裡傳出。由於州首府瓦哈卡市(Oaxaca)與海岸間的蜿蜒山路因落石中斷,搜救人員尚未抵達受災村落,傷亡可能更進一步攀升。

    社群媒體影像顯示,震央附近山村的診所與老舊教堂也都嚴重受損。

    美國地質調查所(USGS)表示,這起地震震源深度僅26公里,屬淺層地震。美國地質調查所初步測得規模達7.7,稍後下修為7.4。

    土地水文
    土地利用
    國際新聞
    墨西哥
    地震
    災害

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計最專業,超強功能平台可客製化

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    ※回頭車貨運收費標準

    ※推薦評價好的iphone維修中心

    ※教你寫出一流的銷售文案?

    台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

    台中搬家公司費用怎麼算?

  • 委內瑞拉燃油短缺 單車通勤成生活新常態

    摘錄自2020年6月19日公視報導

    全球儲油量第一的委內瑞拉,卻因為美國加強禁運和經濟制裁,國內陷入石油危機,民眾排隊加油竟然要等上三天三夜,也促使許多人開始改以自行車代步。

    在委內瑞拉,石油長年比水還便宜,民眾大多開車上班,現在因為沒油可買,許多民眾轉而騎單車通勤。自行車技師塞古拉表示:「修理自行車的量變多了,我計算至少多出20至30倍」

    該地煉油設備老舊到不堪使用,過去以原油和俄羅斯交換燃油,如今交易也因為受到美國制裁而停擺,面臨歷年來最嚴重的汽油短缺,更有民眾說,沒油可用比新冠病毒更讓人苦惱。

    現在委內瑞拉最低月薪3塊美金左右,台幣不到100塊,等於只夠買六公升左右的汽油,無疑是生活一大負擔,也難怪騎單車通勤,成了越來越多委內瑞拉民眾生活的新常態。

    生活環境
    能源議題
    能源轉型
    國際新聞
    委內瑞拉
    單車
    自行車
    石油危機
    石油
    交通運輸

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

    ※回頭車貨運收費標準

    ※推薦評價好的iphone維修中心

    ※超省錢租車方案

    台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

    ※推薦台中搬家公司優質服務,可到府估價