241124学习日志——[CSDIY] [ByteDance] 后端训练营 [14]

CSDIY:这是一个非科班学生的努力之路,从今天开始这个系列会长期更新,(最好做到日更),我会慢慢把自己目前对CS的努力逐一上传,帮助那些和我一样有着梦想的玩家取得胜利!!!
第一弹:Cpp零基础学习【30 DAYS 从0到1】
第二弹:Cpp刷题文档【LeetCode】
第三弹:Go开发入门【字节后端青训营】
第四弹:Cpp简单项目开发【黑马Rookie】
第五弹:数据结构绪论【数据结构与算法】
第六弹:Go工程实践【字节后端青训营】
第七弹:高质量编程和性能调优【字节后端青训营】
第八弹:Linux 基础知识【书生大模型训练营】
第九弹:Python 基础知识【书生大模型训练营】
第十弹:Git 基础知识【书生大模型训练营】
第十一弹:玩转HF/魔搭/魔乐社区【书生大模型训练营】
第十二弹:书生大模型全链路开源体系【书生大模型训练营】
第十三弹:玩转书生「多模态对话」与「AI搜索」产品【书生大模型训练营】
第十四弹:浦语提示词工程实践【书生大模型训练营】
第十五弹:HTTP 框架修炼之道【字节后端青训营】

课程背景:

  • HTTP 请求(一)
    • API 接口层
    • 状态管理
    • 页面
    • 前端路由
    • 终端
  • HTTP 请求(二)
    • 请求解析
    • 后端路由
    • 业务逻辑
    • 数据库

01. 再谈 HTTP 协议

1991年,开始大规模使用…三十多岁还在更新…可见生命力之强

1.1 HTTP 协议是什么

HTTP:超文本传输协议(Hypertext Transfer Protocol)

1.2 为什么需要协议

需要明确的边界

  • 开始和结束 [协议开始] [协议结束]

1.3 协议里有什么

发送端

POST /sis HTTP/1.1
Who: Alex
Content-Type: text/plain
Host:17.0.0.1:8888
Content-Lenth: 28Let's watch a movie together

接受端

HTTP/1.1 200 OK
Server: hertz
Date: Thu, 21 Apr 2022 11:46:32 GMT
Content-Type: text/plain; charse=utf-8
Content-Length: 2
Upstream-Caught: 1650541592984580OK

内容

请求行 / 状态行:

  • 方法名 - URL - 协议版本
  • 协议版本 - 状态码 - 状态码描述

请求头 / 响应头:

请求体 / 响应体:

1.4 请求流程

服务端

客服端

业务层 - 服务治理层/中间件层 - 路由层 - 协议编/解码层 - 传输层

1.5 不足和展望

HTTP1:
  • 队头阻塞

  • 传输效率低

  • 明文传输不安全

HTTP2:
  • 多路复用
  • 头部压缩
  • 二进制协议
QUIC:
  • 基于 UDP 实现

  • 解决队头阻塞

  • 加密减少握手次数

  • 支持快速启动

02. HTTP 框架的设计与实现

2.1 分层设计

OSI 七层网络模型、TCP/IP 四层概念模型

  • 专注性
  • 扩展性
  • 复用性

高内聚 低耦合 易复用 高扩展性

2.2 应用层 API 设计

提供合理地 API

  • **可理解性。**命名合理易理解
  • **简单性。**尽量简介
  • **冗余性。**做同样地事情地接口只保留一个
  • 兼容性。
  • 可测性。
  • 可见性。

不要试图在文档中说明,很多用户不看。

2.3 中间件设计

中间件需求

洋葱模型:核心逻辑与通用逻辑分离

调用链

2.4 路由设计

  • 静态路由
  • 参数路由
  • 路由修复
  • 冲突路由以及优先级
  • 匹配 HTTP 方法
  • 多处理函数:方便添加中间件

青铜:map[string]handlers
黄金:前缀匹配树

站在巨人的肩膀上

2.5 协议层设计

抽象出合适的接口

2.6 网络层设计

网络模型

03. 性能修炼之道

3.1 针对网络库的优化

  • go net
  • netpoll
  • netpoll with nocopy peek
    • 分配足够大的 buffer
    • 限制最大的 buffer size

不同网络库的优势

go net:流式友好、小包性能高

netpoll:中大包性能高、时间延迟低

3.2 针对协议的优化 – Headers 解析

  • 核心字段快速解析
  • 使用 byte slice 存储
  • 额外存储到成员变量中

  • 普通 header 性能较低
  • 没有 map 结构

3.3 针对协议的优化 – Header key 规范化

  • 超高的转化效率
  • 比 net.http 提高40倍

  • 额外的内存开销
  • 变更困难

3.4 热点资源池化

  • 减少内存分配
  • 提高了内粗复用
  • 降低了 GC 压力
  • 性能提升

  • 额外的 Reset 逻辑
  • 请求内有效
  • 问题定位难度增加

04. 企业实践

  • 追求性能

  • 追求易用、减少误用

  • 打通内部生态

  • 文档建设、用户群建设

碎碎念:已经开始听不懂了,很多关于计算机网络的知识,一时半会是不懂得,也正常,先记下来,留个印象,总会派上用场的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478155.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言练习.if.else语句.strstr

今天在做题之前&#xff0c;先介绍一下&#xff0c;新学到的库函数strstr 想要使用它&#xff0c;要先给它一个头文件<string.h> char *strstr(const char*str1,const char*str2); 首先&#xff1a;1.strstr的返回值是char&#xff0c;字符类型的。 2.两个实参&#xff…

WebRTC音视频同步原理与实现详解(上)

第一章、RTP时间戳与NTP时间戳 1.1 RTP时间戳 时间戳&#xff0c;用来定义媒体负载数据的采样时刻&#xff0c;从单调线性递增的时钟中获取&#xff0c;时钟的精度由 RTP 负载数据的采样频率决定。 音频和视频的采样频率是不一样的&#xff0c;一般音频的采样频率有 8KHz、…

uni-app 发布媒介功能(自由选择媒介类型的内容) 设计

1.首先明确需求 我想做一个可以选择媒介的内容&#xff0c;来进行发布媒介的功能 &#xff08;媒介包含&#xff1a;图片、文本、视频&#xff09; 2.原型设计 发布-编辑界面 通过点击下方的加号&#xff0c;可以自由选择添加的媒介类型 但是因为预览中无法看到视频的效果&…

详细探索xinput1_3.dll:功能、问题与xinput1_3.dll丢失的解决方案

本文旨在深入探讨xinput1_3.dll这一动态链接库文件。首先介绍其在计算机系统中的功能和作用&#xff0c;特别是在游戏和输入设备交互方面的重要性。然后分析在使用过程中可能出现的诸如文件丢失、版本不兼容等问题&#xff0c;并提出相应的解决方案&#xff0c;包括重新安装相关…

Ubuntu,openEuler,MySql安装

文章目录 Ubuntu什么是Ubuntu概述Ubuntu版本简介桌面版服务器版 部署系统新建虚拟机安装系统部署后的设置设置root密码关闭防火墙启用允许root进行ssh安装所需软件制作快照 网络配置Netplan概述配置详解配置文件DHCP静态IP设置 软件安装方法apt安装软件作用常用命令配置apt源 d…

大数据实验4-HBase

一、实验目的 阐述HBase在Hadoop体系结构中的角色&#xff1b;能够掌握HBase的安装和配置方法熟练使用HBase操作常用的Shell命令&#xff1b; 二、实验要求 学习HBase的安装步骤&#xff0c;并掌握HBase的基本操作命令的使用&#xff1b; 三、实验平台 操作系统&#xff1…

docker pull命令拉取镜像失败的解决方案

docker pull命令拉取镜像失败的解决方案 简介&#xff1a; docker pull命令拉取镜像失败的解决方案 docker pull命令拉取镜像失败的解决方案 一、执行docker pull命令&#xff0c;拉取镜像失败 报错信息&#xff1a;error pulling image configuration: Get https://produc…

qt+opengl 三维物体加入摄像机

1 在前几期的文章中&#xff0c;我们已经实现了三维正方体的显示了&#xff0c;那我们来实现让物体的由远及近&#xff0c;和由近及远。这里我们需要了解一个概念摄像机。 1.1 摄像机定义&#xff1a;在世界空间中位置、观察方向、指向右侧向量、指向上方的向量。如下图所示: …

安宝特方案 | AR助力紧急救援,科技守卫生命每一刻!

在生死时速的紧急救援战场上&#xff0c;每一秒都至关重要&#xff01;随着科技的发展&#xff0c;增强现实&#xff08;AR&#xff09;技术正在逐步渗透到医疗健康领域&#xff0c;改变着传统的医疗服务模式。 安宝特AR远程协助解决方案&#xff0c;凭借其先进的技术支持和创新…

生成对抗网络模拟缺失数据,辅助PAMAP2数据集仿真实验

PAMAP2数据集是一个包含丰富身体活动信息的数据集&#xff0c;它为我们提供了一个理想的平台来开发和测试HAR模型。本文将从数据集的基本介绍开始&#xff0c;逐步引导大家通过数据分割、预处理、模型训练&#xff0c;到最终的性能评估&#xff0c;在接下来的章节中&#xff0c…

使用ChatGPT生成和优化电子商务用户需求规格说明书

在电子商务项目开发中&#xff0c;用户需求规格说明书&#xff08;User Requirement Specification, URS&#xff09;是团队沟通与项目成功的基石。然而&#xff0c;面对复杂多变的需求&#xff0c;如何快速生成清晰、完整且具备说服力的文档&#xff1f;这正是AI工具的用武之地…

12-表的约束

知识背景 表的约束&#xff0c;就是在表中的数据上加上约束&#xff0c;也被称为数据完整性约束。数据完整性约束的目的是为了不被规定的、不符合规范的数据进入数据库 在录入数据库或数据发生变化时&#xff0c;DBMS(数据库管理系统)会按照一定的约束条件对数据进行监测&…

美创科技入选2024数字政府解决方案提供商TOP100!

11月19日&#xff0c;国内专业咨询机构DBC德本咨询发布“2024数字政府解决方案提供商TOP100”榜单。美创科技凭借在政府数据安全领域多年的项目经验、技术优势与创新能力&#xff0c;入选收录。 作为专业数据安全产品与服务提供商&#xff0c;美创科技一直致力于为政府、金融、…

微信小程序与公众号关联(同一主体),获取unionId并关联公众号openid

背景 有一些同学在实际开发中&#xff0c;会有通过微信的openid获取公众号的openid&#xff0c;或者其他内容&#xff0c;这几天正好在研究这个功能的实现&#xff08;已实现&#xff09;&#xff0c;现做思路上的简单分享&#xff0c;希望能对需要解决该问题的同学有所帮助&a…

SplatFormer: Point Transformer for Robust3D Gaussian Splatting 论文解读

目录 一、概述 二、相关工作 1、NVI新视角插值 2、稀疏视角重建 3、OOD-NVS 4、无约束重建下的正则化技术 5、基于学习的2D-to-3D模型 6、3D点云处理技术 三、SplatFormer 1、Point Transformer V3 2、特征解码器 3、损失函数 四、数据集 五、实验 一、概述 该论…

c++视频图像处理

打开视频或摄像头 打开指定视频 /*VideoCapture(const String &filename, apiPreference);filename:读取的视频或者图像序列的名称apiPreference&#xff1a;读取数据时设置的属性*/ VideoCapture video; //定义一个空的视频对象 video.open("H:/BaiduNetdiskDownlo…

前端三剑客(二):CSS

目录 1. CSS 基础 1.1 什么是 CSS 1.2 语法格式 1.3 引入方式 1.3.1 行内样式 1.3.2 内部样式 1.3.3 外部样式 1.4 CSS 编码规范 2. 选择器 2.1 标签选择器 2.2 id 选择器 2.3 class 选择器(类选择器) 2.4 复合选择器 2.5 通配符选择器 3. 常用 CSS 样式 3.1 c…

udp_socket

文章目录 UDP服务器封装系统调用socketbind系统调用bzero结构体清0sin_family端口号ip地址inet_addrrecvfromsendto 新指令 netstat -naup (-nlup)包装器 的两种类型重命名方式包装器使用统一可调用类型 关键字 typedef 类型重命名系统调用popen关于inet_ntoa UDP服务器封装 系…

【LLM训练系列02】如何找到一个大模型Lora的target_modules

方法1&#xff1a;观察attention中的线性层 import numpy as np import pandas as pd from peft import PeftModel import torch import torch.nn.functional as F from torch import Tensor from transformers import AutoTokenizer, AutoModel, BitsAndBytesConfig from typ…

解!决!vscode!Path Intellisense 失效!不起作用问题!!

第一步&#xff1a;找到path Intellisense插件 点击设置 第二步&#xff1a;打开settings.json文件&#xff1a; 第三步&#xff1a;配置settings.json文件内容&#xff1a; "path-intellisense.mappings": {"": "${workspaceRoot}/src",&qu…