百度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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…