原创 軟件測試——黑盒測試基本方法

黑盒測試的定義 黑盒測試又稱功能測試,它是通過一系列測試用例來檢測軟件的功能是否正常。在黑盒測試中,我們把軟件看成是一個黑盒子(不關注內部的實現原理),通過關注軟件的輸入輸出結果,來判斷軟件是否存在問題。 黑盒測試主要有以下幾種方

原创 編譯原理——文法的基本概念

文法的概念 每一種自然語言或者是編程語言都需要文法來描述,文法相當於語言學的語義分析,即分析每一句話所表示的含義,編譯器需要利用文法來完成其語法分析和語義分析。 在目前編程語言領域,上下文無關文法作爲程序語言的描述工具,比如a =

原创 操作系統知識總結——進程

1 進程的概念 進程是程序的一次執行過程,是一個動態的概念,是操作系統進行資源分配和調度的基本單位。 每個進程都有自己的地址空間,一般包含文本區域、數據區域和堆棧。 2 進程的狀態 一個進程有五種基本狀態:運行態、就緒態、阻塞態

原创 2020年蘑菇街春招Java後端開發實習崗面經(一面+二面+HR面)

一面(視頻面試,50分鐘) 實習經歷(20分鐘) 介紹一下Spring AOP,AOP是如何實現的。JDK動態代理和CGLIB動態代理的區別? 思考:public class ServiceA { public void

原创 ZooKeeper Leader服務器選舉流程

進行前提 進行Leader選舉的前提是ZooKeeper必須是集羣,即至少2臺以上ZooKeeper服務器。滿足集羣的條件後,Leader的選舉在以下情況下發生: ZooKeeper服務器進程啓動 ZooKeeper服務器進程在

原创 Elasticsearch 7.x 檢索文檔的三種方式:全文搜索、詞項搜索、複合搜索

Elasticsearch 7提供了多種檢索文檔的方式,我們可以通過Restful API的方式來搜索索引中的文檔。Elasticsearch的搜索可以分爲以下幾個類型: 全文搜索 詞項搜索 複合搜索 嵌套搜索 位置搜索 特殊搜

原创 編譯原理——將代碼翻譯成四元式序列

四元式的定義 四元式的一般形式爲(op, arg1, arg2, result),其中: op爲一個二元(也可以是零元或一元)運算符 arg1和arg2爲兩個運算對象,可以是變量、常數或者系統定義的臨時變量名 result爲運算

原创 Elasticsearch 7.x 常用指標聚合、桶聚合搜索RESTful API

Elasticsearch的聚合搜索用於對數據做一些複雜的分析統計,主要分爲指標聚合、桶聚合、管道聚合、矩陣聚合。其中指標聚合、桶聚合最常使用。 本文測試數據採用官方測試數據庫shakespeare(莎士比亞),可在Elastic

原创 WebSocket協議規範淺析

初識WebSocket WebSocket是一個持久化應用層協議,隨HTTP2.0協議標準發佈,客戶端(瀏覽器)和服務端可以維持一個長連接,雙方均可自由地發送、接收數據(全雙工),從而真正實現雙向通信。WebSocket不像HTT

原创 Spark 2.4 RDD操作API(Java語言描述)

Map Map的作用就是將RDD中的值逐一轉換爲另外一個值,例如下面將一個數組[1,2,3,4,5]中每個元素都計算平方並返回: public class SparkDemo { public static void ma

原创 Linux操作系統進程間通信方式:消息隊列

什麼是消息隊列 Linux內核提供的消息隊列可以達到一個進程向另外一個進程發送消息的目的,並且消息隊列可以根據消息中的類型字段自動爲消息歸類,接收進程可以通過指定類型字段來接收指定的消息,也可不區分類型接收隊首的消息。 消息隊列的

原创 2020年美團點評春招後端開發實習崗面經(一面+二面+HR面,已收到Offer)

一面(電話,48min): 自我介紹 懟項目,懟了30分鐘(基本就是問項目是如何實現的,沒有問Netty) 爲什麼使用NIO而不是BIO,NIO快在哪裏? MySQL的索引爲什麼使用B+樹,而不使用B樹或者紅黑樹? 線程池構造參

原创 Servlet 3.1中的WebSocket編程規範

如果不是很清楚WebSocket協議,可以參考這篇博客。 包結構 Servlet 3.1以上的版本制定了WebSocket的編程規範,位於包javax.servlet中: javax.servlet.websocket下包含了客

原创 Kafka 事務以及冪等

Kafka提供了生產者發送消息的冪等性和事務特性來阻止消息的重複,這兩種方式均適用於不同的應用場景,其中: 消息的冪等性 適用於消息在寫入到服務器日誌後,由於網絡故障,生產者沒有及時收到服務端的ACK消息,生產者誤以爲消息沒有持

原创 Linux 文本修正工具sed的使用

何爲sed sed是Stream Editor的簡稱,是Linux自帶的一個文本處理工具,以行爲單位,對文本進行處理,可以對每行的內容做替換、刪除、新增、選取等操作。 sed在處理文本時,會把當前行讀入到緩衝區,這個緩衝區稱爲模版