百度golang研發一面面經

輸入一個網址,到顯示界面,中間的過程是怎樣的

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

IP 報文段的結構是什么

在這里插入圖片描述

Innodb 的底層結構

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

知道幾種設計模式

  • 工廠模式
    • 簡單工廠模式:根據傳入類型參數判斷創建哪種類型對象
    • 工廠方法模式:由子類決定實例化哪個類
    • 抽象工廠模式:創建一系列相關或互相依賴對象的接口,而無需指定它們具體的類
      在這里插入圖片描述
  • 單列模式:確保一個類只有一個實例,并提供一個全局訪問點來訪問該實例。
  • 建造者模式:在軟件系統中,一個復雜對象的創建通常由多個部分組成,這些部分的組合經常變化,但組合的算法相對穩定。
  • 觀察者模式:創建了對象間的一種一對多的依賴關系,當一個對象狀態改變時,所有依賴于它的對象都會得到通知并自動更新。

單例模式的應用場景

單例模式的核心在于確保一個類只有一個實例,并提供全局訪問點。它適用于那些需要嚴格控制資源訪問、保證狀態一致或避免重復創建開銷的場景。以下是其典型使用場景:

  1. 訪問共享資源或硬件:

    • 數據庫連接池: 創建多個數據庫連接開銷巨大。單例的數據庫連接池管理所有連接,確保高效復用,避免資源耗盡。
    • 日志記錄器: 應用所有部分都需要寫入同一個日志文件。單例日志器保證所有日志消息被順序、一致地寫入同一個目標文件,避免并發寫入沖突。
    • 打印機后臺處理程序: 多個打印任務需要有序排隊處理同一個物理打印機。單例的后臺處理程序管理隊列,確保一次只有一個任務訪問打印機。
    • 文件系統/硬件驅動: 訪問物理資源(如特定硬件設備、配置文件)通常需要唯一訪問點,單例確保請求被有序處理且狀態一致。
  2. 全局配置管理器:

    • 應用配置(如數據庫URL、API密鑰、應用設置)通常只需加載一次并在全局共享。單例配置管理器在啟動時加載配置,并提供全局訪問點,確保所有組件使用同一份、最新的配置信息,避免重復讀取文件或解析的開銷。
  3. 緩存:

    • 應用級緩存(如內存緩存)需要被所有組件訪問和更新。單例緩存實例確保所有組件共享同一份緩存數據,提高訪問速度,并可通過單例集中管理緩存的失效、刷新策略。
  4. 上下文對象:

    • 運行時上下文信息(如Web應用中的當前用戶會話、應用上下文、線程池)通常在整個應用生命周期或特定作用域內需要唯一且全局可訪問。單例(或結合ThreadLocal實現的線程單例)能有效管理這類狀態。

關鍵特征總結(判斷是否適用單例):

  • 全局唯一性: 系統中確實必須只有一個該類的實例存在。
  • 全局訪問: 該實例需要被系統中的許多不同部分方便地訪問。
  • 控制共享資源: 需要管理對共享資源(數據庫、文件、硬件)的并發訪問。
  • 集中管理狀態: 需要維護一份全局共享、一致的狀態或配置信息。
  • 昂貴初始化: 對象創建和銷毀開銷非常大,需要嚴格控制創建次數。

重要注意事項(避免濫用):

  • 測試困難: 單例的全局狀態使得單元測試復雜化(測試之間狀態污染)。可通過依賴注入(注入單例接口的模擬實現)或提供重置機制來緩解。
  • 隱藏依賴: 單例通過全局訪問點引入依賴,破壞了代碼的顯式依賴關系,降低了可讀性和可維護性。
  • 違反單一職責原則: 單例類除了自身業務邏輯,還承擔了控制實例化的責任。
  • 潛在并發問題: 多線程環境下需要小心實現(雙重檢查鎖定、靜態內部類、枚舉等),確保線程安全。
  • 過度全局化: 不是所有“只需要一個”的對象都適合單例。如果對象作用域有限(如請求作用域),考慮其他模式(如依賴注入容器管理作用域)。

觀察者模式

拍賣系統:拍賣師作為主題,競價者作為觀察者,拍賣價格更新時通知所有競價者。
觀察者模式(Observer Pattern)是一種行為設計模式,用于定義對象之間的一對多依賴關系,使得當一個對象的狀態發生變化時,所有依賴于它的對象都會得到通知并自動更新。以下是對觀察者模式的詳細介紹:

1. 結構

觀察者模式主要包含以下幾個角色:

  • 主題(Subject): 被觀察的對象,維護觀察者的列表,并提供添加、刪除觀察者的方法。
  • 觀察者(Observer): 依賴于主題的對象,定義一個更新接口,以便在主題狀態改變時進行通知。
  • 具體主題(Concrete Subject): 實現主題接口,維護狀態并在狀態變化時通知所有觀察者。
  • 具體觀察者(Concrete Observer): 實現觀察者接口,接收主題的通知并作出相應的處理。

2. 工作原理

  1. 注冊觀察者: 觀察者通過主題的注冊方法訂閱主題。
  2. 狀態變化: 當主題的狀態發生變化時,主題會調用所有注冊觀察者的更新方法。
  3. 通知觀察者: 觀察者在收到通知后,可以獲取主題的新狀態并作出相應的反應。

3. 使用場景

  • 事件驅動系統: 例如 GUI 組件中的事件監聽。
  • 數據模型: 在 MVC(模型-視圖-控制器)架構中,模型狀態變化時通知視圖更新。
  • 消息推送: 實現消息訂閱和推送機制,如社交媒體應用中的通知。
  • 實時數據監控: 例如股票價格變化時通知投資者。

4. 優缺點

優點
  • 解耦: 觀察者與主題之間松散耦合,易于擴展和維護。
  • 動態性: 可以在運行時動態添加或移除觀察者。
缺點
  • 性能問題: 如果觀察者數量眾多,通知所有觀察者可能會造成性能開銷。
  • 循環依賴: 如果觀察者與主題之間存在循環依賴,可能導致不必要的復雜性。

總結

觀察者模式是一種強大且靈活的設計模式,適用于需要實現對象間動態交互的場景。通過定義清晰的接口和方法,觀察者模式能夠有效地管理對象之間的關系,提高代碼的可維護性和可擴展性。

既然 IP 層會分片,為什么 TCP 層還需要 MSS 呢?

在這里插入圖片描述

如何優化 TIME_WAIT?

  • 復用處于 TIME_WAIT 的 socket 為新的連接所用
  • 當系統中處于 TIME_WAIT 的連接一旦超過net.ipv4.tcp_max_tw_buckets(默認18000)值時, 系統就會將后面的 TIME_WAIT 連接狀態重置
  • 程序中使用 SO_LINGER跳過time_wait 直接調用close 發送RST

服務器出現大量 TIME_WAIT 狀態的原因有哪些?

  • http沒有使用長連接
  • http長連接超時
  • 長連接數量請求達到上限

服務器出現大量 CLOSE_WAIT 狀態的原因有哪些?

在這里插入圖片描述
在這里插入圖片描述

如果已經建立了連接,但是客戶端突然出現故障了怎么辦?

保活機制,探測報文
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/82304.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/82304.shtml
英文地址,請注明出處:http://en.pswp.cn/web/82304.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 HTML + JavaScript 實現圖片裁剪上傳功能

本文將詳細介紹一個基于 HTML 和 JavaScript 實現的圖片裁剪上傳功能。該功能支持文件選擇、拖放上傳、圖片預覽、區域選擇、裁剪操作以及圖片下載等功能,適用于需要進行圖片處理的 Web 應用場景。 效果演示 項目概述 本項目主要包含以下核心功能: 文…

GO+RabbitMQ+Gin+Gorm+docker 部署 demo

更多個人筆記見: (注意點擊“繼續”,而不是“發現新項目”) github個人筆記倉庫 https://github.com/ZHLOVEYY/IT_note gitee 個人筆記倉庫 https://gitee.com/harryhack/it_note 個人學習,學習過程中還會不斷補充&…

【安全】VulnHub靶場 - W1R3S

【安全】VulnHub靶場 - W1R3S 備注一、故事背景二、Web滲透1.主機發現端口掃描2.ftp服務3.web服務 三、權限提升 備注 2025/05/22 星期四 簡單的打靶記錄 一、故事背景 您受雇對 W1R3S.inc 個人服務器進行滲透測試并報告所有發現。 他們要求您獲得 root 訪問權限并找到flag&…

WEB安全--SQL注入--MSSQL注入

一、SQLsever知識點了解 1.1、系統變量 版本號:version 用戶名:USER、SYSTEM_USER 庫名:DB_NAME() SELECT name FROM master..sysdatabases 表名:SELECT name FROM sysobjects WHERE xtypeU 字段名:SELECT name …

工作流引擎-18-開源審批流項目之 plumdo-work 工作流,表單,報表結合的多模塊系統

工作流引擎系列 工作流引擎-00-流程引擎概覽 工作流引擎-01-Activiti 是領先的輕量級、以 Java 為中心的開源 BPMN 引擎,支持現實世界的流程自動化需求 工作流引擎-02-BPM OA ERP 區別和聯系 工作流引擎-03-聊一聊流程引擎 工作流引擎-04-流程引擎 activiti 優…

Docker 筆記 -- 借助AI工具強勢輔助

常用命令 鏡像管理命令: docker images(列出鏡像) docker pull(拉取鏡像) docker build(構建鏡像) docker save/load(保存/加載鏡像) 容器操作命令 docker run&#…

5G-A時代與p2p

5G-A時代正在走來,那么對P2P的影響有多大。 5G-A作為5G向6G過渡的關鍵技術,將數據下載速率從千兆提升至萬兆,上行速率從百兆提升至千兆,時延降至毫秒級。這種網絡性能的跨越式提升,為P2P提供了更強大的底層支撐&#x…

Redis-6.2.9 主從復制配置和詳解

1 主從架構圖 192.168.254.120 u24-redis-120 #主庫 192.168.254.121 u24-redis-121 #從庫 2 redis軟件版本 rootu24-redis-121:~# redis-server --version Redis server v6.2.9 sha00000000:0 malloclibc bits64 build56edd385f7ce4c9b 3 主庫redis配置文件(192.168.254.1…

004 flutter基礎 初始文件講解(3)

之前,我們正向的學習了一些flutter的基礎,如MaterialApp,Scaffold之類的東西,那么接下來,我們將正式接觸原代碼: import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyAp…

Linux 系統 Docker Compose 安裝

個人博客地址:Linux 系統 Docker Compose 安裝 | 一張假鈔的真實世界 本文方法是直接下載 GitHub 項目的 release 版本。項目地址:GitHub - docker/compose: Define and run multi-container applications with Docker。 執行以下命令將發布程序加載至…

Tree 樹形組件封裝

整體思路 數據結構設計 使用遞歸的數據結構(TreeNode)表示樹形數據每個節點包含id、name、可選的children數組和selected狀態 狀態管理 使用useState在組件內部維護樹狀態的副本通過deepCopyTreeData函數進行深拷貝,避免直接修改原始數據 核…

tortoisegit 使用rebase修改歷史提交

在 TortoiseGit 中使用 rebase 修改歷史提交(如修改提交信息、合并提交或刪除提交)的步驟如下: --- ### **一、修改最近一次提交** 1. **操作**: - 右鍵項目 → **TortoiseGit** → **提交(C)** - 勾選 **"Amend…

中科院報道鐵電液晶:從實驗室突破到多場景應用展望

2020年的時候,相信很多關注科技前沿的朋友都注意到,中國科學院一篇報道聚焦一項有望改寫顯示產業格局的新技術 —— 鐵電液晶(FeLC)。這項被業內稱為 "下一代顯示核心材料" 的研究,究竟取得了哪些實質性進展…

論文閱讀(六)Open Set Video HOI detection from Action-centric Chain-of-Look Prompting

論文來源:ICCV(2023) 項目地址:https://github.com/southnx/ACoLP 1.研究背景與問題 開放集場景下的泛化性:傳統 HOI 檢測假設訓練集包含所有測試類別,但現實中存在大量未見過的 HOI 類別(如…

74道Node.js高頻題整理(附答案背誦版)

簡述 Node. js 基礎概念 ? Node.js是一個基于Chrome V8引擎的JavaScript運行環境。它使得JavaScript可以在服務器端運行,從而進行網絡編程,如構建Web服務器、處理網絡請求等。Node.js采用事件驅動、非阻塞I/O模型,使其輕量且高效…

年齡是多少

有5個人坐在一起,問第五個人多少歲?他說比第四個人大兩歲。問第四個人歲數,他說比第三個人大兩歲。問第三個人,又說比第二個人大兩歲。問第二個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問他們…

華為OD機試真題——模擬消息隊列(2025A卷:100分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 A卷 100分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 2025華為OD真題目錄+全流程解析/備考攻略/經驗分享 華為OD機試真題《模擬消息隊列》: 目錄 題…

LangChain-結合GLM+SQL+函數調用實現數據庫查詢(三)

針對 LangChain-結合GLM+SQL+函數調用實現數據庫查詢(二)-CSDN博客 進一步簡化 通過 LangChain 和大語言模型(GLM-4)實現了一個 AI 代理,能夠根據自然語言提問自動生成 SQL 查詢語句,并連接 MySQL 數據庫執行查詢,最終返回結果。 整個流程如下: 用戶提問 → AI 生成 SQ…

ZLG ZCANPro,ECU刷新,bug分享

文章目錄 摘要 ??問題的起因bug分享 ?思考&反思 ??摘要 ?? ZCANPro想必大家都不陌生,買ZLG的CAN卡,必須要用的上位機軟件。在汽車行業中,有ECU軟件升級的需求,通常都通過UDS協議實現程序的更新,滿足UDS升級的上位機要么自己開發,要么用CANoe或者VFlash,最近…

第2期:APM32微控制器鍵盤PCB設計實戰教程

第2期:APM32微控制器鍵盤PCB設計實戰教程 一、APM32小系統介紹 使用apm32鍵盤小系統開源工程操作 APM32是一款與STM32兼容的微控制器,可以直接替代STM32進行使用。本教程基于之前開源的APM32小系統,鏈接將放在錄播評論區中供大家參考。 1…