当前位置: 首页 > article >正文

网络通讯知识——通讯分层介绍,gRPC,RabbitMQ分层

网络通讯分层

网络通讯分层是为了将复杂的网络通信问题分解为多个独立、可管理的层次,每个层次专注于特定功能。目前主流的分层模型包括OSI七层模型TCP/IP四层(或五层)模型,以下是详细解析:

一、OSI七层模型:理论框架

OSI(Open Systems Interconnection)模型由国际标准化组织(ISO)提出,是网络通信的理论分层框架,从下到上依次为:

1. 物理层(Physical Layer)
  • 功能:定义物理设备(如网线、光纤、网卡)的电气特性、机械接口和信号传输方式(如电压、频率)。
  • 关键技术:线缆标准(如RJ45)、信号调制(如ASK/FSK)、物理接口(如USB、HDMI)。
  • 示例:网线传输0/1电信号、光纤传输光信号。
2. 数据链路层(Data Link Layer)
  • 功能:在相邻节点间传输数据帧,处理物理层的错误(如CRC校验),并通过MAC地址实现链路管理。
  • 子层
    • MAC层(介质访问控制):定义设备如何接入物理介质(如以太网的CSMA/CD协议)。
    • LLC层(逻辑链路控制):建立逻辑连接,封装上层数据。
  • 关键技术:以太网协议(Ethernet)、PPP(点对点协议)、VLAN划分。
  • 示例:交换机通过MAC地址转发数据帧。
3. 网络层(Network Layer)
  • 功能:通过IP地址实现跨网络的数据路由和寻址,处理数据包的分片与重组。
  • 关键协议
    • IP协议(IPv4/IPv6):定义数据包格式和路由规则。
    • ICMP协议:用于网络故障检测(如Ping命令)。
    • 路由协议(如RIP、OSPF、BGP):计算最佳路径。
  • 示例:路由器根据IP地址将数据包转发到不同网络。
4. 传输层(Transport Layer)
  • 功能:为端到端通信提供可靠或不可靠的数据传输,定义端口号(如HTTP的80端口)。
  • 关键协议
    • TCP协议(传输控制协议):面向连接,保证数据有序、无丢失(如文件下载)。
    • UDP协议(用户数据报协议):无连接,传输效率高但不保证可靠性(如视频直播、DNS)。
  • 示例:TCP三次握手建立连接,UDP直接发送数据包。
5. 会话层(Session Layer)
  • 功能:建立、管理和终止应用程序间的会话(如登录认证、断点续传)。
  • 关键技术:会话超时管理、会话恢复(如FTP的断点续传)。
  • 示例:Web浏览器与服务器的会话保持(Cookie/Session)。
6. 表示层(Presentation Layer)
  • 功能:处理数据格式转换(如加密、压缩、编码),确保不同系统间的数据兼容性。
  • 关键技术
    • 加密算法(如SSL/TLS)、压缩算法(如ZIP)。
    • 数据格式(如JSON、XML、JPEG)。
  • 示例:HTTPS通过TLS加密传输数据,图片以JPEG格式编码。
7. 应用层(Application Layer)
  • 功能:为用户提供直接可见的应用服务(如网页浏览、文件传输),定义应用接口和协议。
  • 关键协议
    • HTTP/HTTPS(网页访问)、FTP(文件传输)、SMTP(邮件发送)。
    • DNS(域名解析)、SSH(远程登录)、gRPC(RPC框架)。
  • 示例:浏览器通过HTTP请求访问网页,邮件客户端用SMTP发送邮件。

二、TCP/IP四层(或五层)模型:实际应用模型

TCP/IP模型是互联网实际采用的分层模型,更简洁,将OSI七层模型合并为四层(或五层):

四层模型(从下到上)
  1. 网络接口层(Network Interface Layer)

    • 合并OSI的物理层和数据链路层,处理硬件接口和链路通信(如以太网、WiFi)。
  2. 网络层(Internet Layer)

    • 同OSI网络层,核心协议为IP,负责路由和寻址。
  3. 传输层(Transport Layer)

    • 同OSI传输层,核心协议为TCP和UDP。
  4. 应用层(Application Layer)

    • 合并OSI的会话层、表示层和应用层,包含HTTP、FTP等具体应用协议。
五层模型(更细化的版本)
  • 在四层模型基础上,将网络接口层拆分为物理层数据链路层,形成五层:
    1. 物理层
    2. 数据链路层
    3. 网络层
    4. 传输层
    5. 应用层

三、两种模型的对比与映射

OSI七层模型TCP/IP四层模型TCP/IP五层模型核心功能举例
物理层网络接口层物理层线缆传输电信号、光信号
数据链路层数据链路层以太网帧传输、MAC地址寻址
网络层网络层网络层IP路由、数据包分片
传输层传输层传输层TCP/UDP数据传输、端口号管理
会话层应用层应用层会话管理(如登录认证)
表示层数据加密、格式转换(如JSON/SSL)
应用层HTTP访问网页、FTP传输文件

四、分层模型的核心优势

  1. 解耦复杂性:各层独立设计,修改某层不影响其他层(如物理层升级为5G,不改变应用层协议)。
  2. 标准化接口:层间通过固定接口交互(如传输层为应用层提供Socket接口),便于跨平台兼容。
  3. 简化开发:开发者只需关注特定层的功能(如Web开发专注应用层的HTTP协议)。

五、实际应用中的分层示例:网页访问流程

以浏览器访问网页为例,数据在各层的流转过程:

  1. 应用层:浏览器发送HTTP请求,封装为HTTP报文。
  2. 传输层:HTTP报文被封装为TCP数据包(目标端口80),添加源/目标端口号。
  3. 网络层:TCP数据包封装为IP数据包,添加源/目标IP地址(如192.168.1.1 → 百度服务器IP)。
  4. 数据链路层:IP数据包封装为以太网帧,添加源/目标MAC地址,通过网线传输。
  5. 物理层:电信号通过网线传输到路由器,经多层路由转发后到达服务器,反向解封装后处理请求。

gRPC

gRPC 是一种高性能、开源的远程过程调用(Remote Procedure Call,RPC)框架,它基于 HTTP/2 通讯层构建,能够在不同服务与语言之间实现高效的通信。以下是关于 gRPC 的详细介绍:

一、gRPC 的本质:远程过程调用(RPC)框架

  • 核心功能:允许开发人员像调用本地函数一样调用远程服务器上的函数,无需手动处理网络通信细节(如序列化、传输、反序列化等)。
  • 应用场景
    • 微服务架构:用于服务间的通信,支持多语言服务协同工作(如 Java 服务与 Go 服务交互)。
    • 跨平台通信:可在移动端(Android/iOS)、浏览器、服务器等不同平台间建立高效连接。
    • 高性能需求场景:相比传统 RESTful API,gRPC 在传输效率、连接复用等方面更具优势。

二、gRPC 基于的通讯层:HTTP/2

gRPC 选择 HTTP/2 作为底层通讯协议,主要基于以下特性:

  1. 二进制分帧
    • HTTP/2 将数据分割为二进制帧(Frame),而非 HTTP/1.x 的文本格式,解析效率更高。
    • 示例:请求和响应可拆分为头部帧(Headers Frame)和数据帧(Data Frame),实现更灵活的传输。
  2. 多路复用
    • 单个 TCP 连接可同时处理多个请求和响应,避免 HTTP/1.x 中的“队头阻塞”问题。
    • 例如:客户端可在一个连接中同时发送多个 RPC 调用,服务器按顺序或并行处理后返回结果。
  3. 头部压缩
    • 使用 HPACK 算法压缩 HTTP 头部,减少数据传输量,尤其适合频繁发送小数据包的场景(如 RPC 调用)。
  4. 服务器推送
    • 服务器可主动向客户端推送资源(如图片、静态文件),减少客户端二次请求,提升性能。
  5. 流模式支持
    • HTTP/2 支持双向流(Stream),gRPC 基于此实现四种通信模式:
      • Unary(一元调用):客户端发送一个请求,服务器返回一个响应(类似传统 RPC)。
      • Server Streaming(服务器流):客户端发送一个请求,服务器返回多个响应(如实时数据推送)。
      • Client Streaming(客户端流):客户端发送多个请求,服务器返回一个响应(如日志上传)。
      • Bidirectional Streaming(双向流):客户端和服务器可同时双向发送消息(如实时聊天)。

三、gRPC 的其他关键组件与特性

  1. Protocol Buffers(Protobuf)
    • 作为默认的数据序列化格式,比 JSON/XML 更高效(体积小、解析快)。
    • 通过 .proto 文件定义服务接口和消息结构,支持自动生成多语言代码(如 Java、Python、Go 等)。
  2. 跨平台与多语言支持
    • 官方支持 C++、Java、Python、Go、Node.js 等语言,社区也提供对 Ruby、PHP 等语言的扩展。
  3. 连接管理与负载均衡
    • 支持长连接(Persistent Connection),减少连接建立开销。
    • 可与服务发现组件(如 Consul、etcd)集成,实现客户端侧的负载均衡。
  4. 拦截器(Interceptor)
    • 支持在 RPC 调用前后添加自定义逻辑(如认证、日志、重试机制),提升框架扩展性。

四、gRPC 与传统通讯方式的对比

维度gRPC(基于 HTTP/2 + Protobuf)传统 RESTful(基于 HTTP/1.x + JSON)
传输效率二进制格式,压缩率更高,适合小数据包文本格式,体积较大,解析开销更高
连接方式多路复用,单个连接处理多请求每个请求单独建立连接,效率较低
流模式原生支持双向流,适合实时通信需通过 WebSockets 等额外协议实现流
接口定义强类型(Protobuf),代码生成更规范弱类型(JSON),接口文档需手动维护
浏览器支持需通过 gRPC-Web 插件适配原生支持,浏览器兼容性更好

gRPC 通过结合 HTTP/2 的高性能传输能力和 Protobuf 的高效序列化机制,成为微服务架构中服务间通信的优选方案。其核心优势在于高效性、跨平台性和流通信支持,尤其适合对性能要求高、需要多语言协同的场景。如果需要在项目中集成 gRPC,可先通过 .proto 文件定义服务接口,再利用代码生成工具快速实现各语言客户端与服务器的开发。

所属分层

gRPC 属于网络通讯中的 应用层协议,它构建在传输层(如 TCP)之上,为应用程序提供远程过程调用(RPC)的通信能力。以下是关于其层级定位及同类型通信方式的详细说明:

一、gRPC 的网络层级定位:应用层

  1. OSI 七层模型与 TCP/IP 四层模型对比

    • OSI 七层模型中,gRPC 位于第 7 层(应用层),直接为应用程序提供服务接口。
    • TCP/IP 四层模型中,gRPC 同样属于应用层,其底层依赖传输层的 TCP 协议(通过 HTTP/2 实现传输)。
  2. 应用层协议的核心特征

    • 面向具体应用场景(如 RPC、文件传输、邮件服务等),定义应用程序间交互的语义和格式。
    • gRPC 基于 HTTP/2 传输层协议,并通过 Protobuf 定义数据格式,属于应用层的业务逻辑封装。

二、同类型的应用层通信方式(RPC 框架与协议)

(1)传统 RPC 框架
  • 特点:与 gRPC 类似,均提供“本地函数调用”式的远程通信抽象,但底层协议和实现方式不同。
  • 代表类型
    • Thrift
      • 由 Apache 开发,支持多语言,使用二进制格式序列化数据,底层可基于 TCP 或 HTTP 传输。
      • 应用场景:Hadoop、Cassandra 等大数据组件的服务通信。
    • gRPC 的前身:Google Stubby
      • Google 内部使用的 RPC 框架,gRPC 是其开源后的演进版本,继承了 Protobuf 和 HTTP/2 特性。
    • Dubbo
      • 阿里巴巴开源的 RPC 框架,基于 Java 生态,早期使用自定义二进制协议,后期支持 HTTP/2 和 gRPC。
      • 应用场景:国内互联网微服务架构(如电商、金融系统)。
(2)基于 HTTP 的 RPC 协议
  • 特点:以 HTTP 为底层传输协议,部分框架兼容 REST 风格,但更注重 RPC 的接口抽象。
  • 代表类型
    • RESTful API
      • 严格来说属于 API 设计风格,而非专门的 RPC 框架,但常用于轻量级服务通信(基于 HTTP/1.x + JSON)。
      • 应用场景:前端与后端的接口交互、开放 API 服务(如 GitHub API)。
    • gRPC-Web
      • gRPC 在浏览器端的适配方案,通过 HTTP/2 或 HTTP/1.1 模拟 gRPC 调用,解决浏览器兼容性问题。
      • 应用场景:前端 JavaScript 与 gRPC 服务的直接通信。
(3)消息队列与异步通信
  • 特点:虽非严格意义上的 RPC(同步调用),但常用于服务间通信,属于应用层的解耦方案。
  • 代表类型
    • Apache Kafka
      • 分布式消息队列,基于 TCP 传输,支持高吞吐量的异步消息传递,适用于日志处理、流计算场景。
    • RabbitMQ
      • 基于 AMQP 协议的消息中间件,支持多种消息模式(如发布-订阅、路由队列),用于微服务异步通信。

三、不同通信方式的对比与适用场景

类型代表框架/协议底层传输序列化方式性能适用场景
gRPCgRPCHTTP/2 + TCPProtobuf微服务、跨语言、高性能实时通信
传统 RPCThrift/Dubbo自定义协议/TCP二进制中高单一语言生态、大数据组件通信
RESTfulSpring MVCHTTP/1.xJSON/XML中低前端接口、开放 API、轻量级服务
消息队列Kafka/RabbitMQTCP二进制/文本异步任务、流量削峰、日志收集

四、总结:gRPC 在应用层的定位与优势

作为应用层的 RPC 框架,gRPC 通过 HTTP/2 + Protobuf 的组合,在性能、跨平台性和流通信能力上优于传统 RESTful 和部分 RPC 框架。同类型的通信方式中,Thrift 和 Dubbo 更适合单一语言或特定生态,而消息队列则适用于异步解耦场景。选择时需根据业务对实时性、跨语言支持、接口规范的需求综合考量。

后期的开发经验将会继续分享,可添加UavFree95,或博主其他文章也在持续更新

相关文章:

网络通讯知识——通讯分层介绍,gRPC,RabbitMQ分层

网络通讯分层 网络通讯分层是为了将复杂的网络通信问题分解为多个独立、可管理的层次,每个层次专注于特定功能。目前主流的分层模型包括OSI七层模型和TCP/IP四层(或五层)模型,以下是详细解析: 一、OSI七层模型&#…...

Linux与Windows切换使用Obsidian,出现 unexplained changes 问题的解决

如果你的Obsidian文档在Linux与Windows间来回切换,可能会涉及到文件的保存换行符问题,但这样的话就容易导致一个问题,那就是内容无差异,Obsidian却提示unexplained changes,Windows系统下的解决方法如下,找…...

基于VMD-LSTM融合方法的F10.7指数预报

F10.7 Daily Forecast Using LSTM Combined With VMD Method ​​F10.7​​ solar radiation flux is a well-known parameter that is closely linked to ​​solar activity​​, serving as a key index for measuring the level of solar activity. In this study, the ​​…...

35 C 语言字符串转数值函数详解:strtof、strtod、strtold(含 errno 处理、ERANGE 错误)

1 strtof() 函数 1.1 函数原型 #include <stdlib.h> // 必须包含这个头文件才能使用 strtof() #include <errno.h> // 包含 errno 和 ERANGE #include <float.h> // 包含 FlOAT_MAX 和 FLOAT_MIN #include <math.h> // 包含 HUGE_VALF(inf)float…...

解决 idea提示`SQL dialect is not configured` 问题

前言 在 Java 开发中&#xff0c;尤其是使用 IntelliJ IDEA 或 MyBatis 等框架时&#xff0c;开发者常会遇到 SQL dialect is not configured 的警告或错误。这一问题不仅影响代码的高亮和智能提示功能&#xff0c;还可能导致表结构解析失败、语法校验失效等问题。 一、问题分…...

springboot的test模块使用Autowired注入失败

springboot的test模块使用Autowired注入失败的原因&#xff1a; 注入失败的原因可能是用了junit4的包的Test注解 import org.junit.Test;解决方法&#xff1a;再加上RunWith(SpringRunner.class)注解即可 或者把Test由junit4改成junit5的注解&#xff0c;就不用加上RunWith&…...

日志收集工具-Filebeat

提示&#xff1a;windows 环境下 Filebeat 的安装与使用 文章目录 前言一、安装二、配置部署三、启动测试 前言 Filebeat 一般用于日志采集&#xff0c;由两部分组成 &#xff1a;Harvesters 和 prospector Harvesters采集器&#xff1a;逐行读取单个文件的内容&#xff0c;并…...

【PCIe总线】 -- PCI、PCIe相关实现

PCI、PCIe相关概念和知识点 【PCIe总线】-- PCI、PCIe基础知识点整理 【PCIe】非常适合初学的pcie博客(PCIe知识整理) PCIe具体实现 【PCIe】如何获取PCIe的BAR空间大小&#xff1f;...

Vue3学习(4)- computed的使用

1. 简述与使用 作用&#xff1a;computed 用于基于响应式数据派生出新值&#xff0c;其值会自动缓存并在依赖变化时更新。 ​缓存机制​&#xff1a;依赖未变化时直接返回缓存值&#xff0c;避免重复计算&#xff08;通过 _dirty 标志位实现&#xff09;。​响应式更新​&…...

手机上网可以固定ip地址吗?详细解析

在移动互联网时代&#xff0c;手机已成为人们日常上网的主要设备之一。无论是工作、学习还是娱乐&#xff0c;稳定的网络连接都至关重要。许多用户对IP地址的概念有所了解&#xff0c;尤其是固定IP地址的需求。那么&#xff0c;手机上网能否固定IP地址&#xff1f;又该如何实现…...

电脑同时连接内网和外网的方法,附外网连接局域网的操作设置

对于工作一般都设置在内网网段中&#xff0c;而同时由于需求需要连接外网&#xff0c;一般只能通过内网和外网的不断切换进行设置&#xff0c;如果可以同时连接内网和外网会更加便利&#xff0c;同时连接内网和外网方法具体如下。 一、电脑怎么弄可以同时连接内网和外网&#…...

如何在Unity中实现点击一个按钮跳转到哔哩哔哩

1.创建一个按钮 2.编写一个脚本&#xff08;你可以把链接改成你想要跳转的网站&#xff09; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class JumpToBilibili : MonoBehaviour {void Start(){gameObject.…...

DHCP 动态主机配置协议(Dynamic host configuration protocol)逐层封装过程: DHCP --> UDP --> IP

&#x1f4e6; DHCP 报文逐层封装结构&#xff08;自上而下&#xff09; 应用层&#xff08;DHCP 报文&#xff09; ↓ 传输层&#xff08;UDP 首部&#xff09; ↓ 网络层&#xff08;IP 首部&#xff09; ↓ 数据链路层&#xff08;以太网帧头&#xff09; ↓ 物理层&#x…...

PySide6 GUI 学习笔记——常用类及控件使用方法(单行文本控件QLineEdit)

文章目录 QLineEdit 介绍常用方法QLineEdit.EchoMode 取值光标相关方法文本选择方法输入格式化字符&#xff08;Input Mask&#xff09;常用信号QLineEdit 实例 QLineEdit 介绍 QLineEdit 是 PySide6&#xff08;Qt for Python&#xff09;中用于单行文本输入的控件。它支持文本…...

【数据结构】6. 时间与空间复杂度

文章目录 一、算法效率1、算法的复杂度 二、时间复杂度1、时间复杂度的概念2、大O的渐进表示法3、常见时间复杂度计算1&#xff09;实例12&#xff09;实例23&#xff09;实例34&#xff09;实例45&#xff09;实例56&#xff09;实例67&#xff09;实例78&#xff09;实例8 三…...

Python 函数全攻略:函数进阶(生成器、闭包、内置函数、装饰器、推导式)

一、默认参数中的易错点 问题: 当函数的默认参数是可变类型(如 list, dict)时,存在“坑”。 现象: def func(a2=[]): # a2 默认是一个空列表a2.append(2)print(a2)func() # 第一次调用,a2 默认为 [],输出 [2] func([]) # 传入新列表,输出 [2] func([1]) # 传入带元素的…...

基于springboot的藏文古籍系统

博主介绍&#xff1a;高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实实在…...

重构城市应急指挥布控策略 ——无人机智能视频监控的破局之道

在突发事件、高空巡查、边远区域布控中&#xff0c;传统摄像头常常“看不到、跟不上、调不动”。无人机智能视频监控系统&#xff0c;打破地面视角局限&#xff0c;以“高空布控 AI分析 实时响应”赋能政企单位智能化管理。在城市应急指挥中心的大屏上&#xff0c;一场暴雨正…...

声音信号的基频检测(python版本)

import math import wave import array import functools from abc import ABC, abstractmethod import matplotlib import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec import os import sys# 设计模式部分 class PreprocessStrategy(ABC):"&q…...

STM32 控制12VRGB灯带颜色亮度调节,TFTLCD显示

接了一个同学的小项目&#xff0c;要实现控制一个实体&#xff0c;控制灯带的亮度为红/绿/蓝/白/黄以及亮度的叠加。 时间要的比较急&#xff0c;要两天实现&#xff0c;因此不能打板&#xff0c;只能采用现有模块拼接。 一. 实施方案 一开始觉得很简单&#xff0c;就是使用五…...

Hive开窗函数的进阶SQL案例

​一、开窗函数基础​ 1. ​定义与作用​ 开窗函数&#xff08;Window Functions&#xff09;在保留原始行数据的同时&#xff0c;对分组内的行进行聚合或排序分析&#xff0c;常用于累计计算、排名、移动平均等场景。与普通聚合函数&#xff08;如SUM、AVG&#xff09;的区别…...

【JJ斗地主-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …...

《绩效管理》要点总结与分享

目录 绩效管理与目标设定 绩效管理的循环&#xff1a;PDCA 绩效目标的设定要点 绩效设定的工具&#xff1a;SMART法则 绩效跟踪与评估 刻板印象&#xff1a;STAR法 晕轮效应&#xff1a;对比评价法 近因效应&#xff1a;关键事项评估表 绩效面谈 面谈前准备工作 汉堡…...

Microsoft前后端不分离编程新风向:cshtml

文章目录 什么是CSHTML&#xff1f;基础语法内联表达式代码块控制结构 布局页面_ViewStart.cshtml_Layout.cshtml使用布局 模型绑定强类型视图模型集合 HTML辅助方法基本表单验证 局部视图创建局部视图使用局部视图 高级特性视图组件依赖注入Tag Helpers 性能优化缓存捆绑和压缩…...

【评测】用Flux的图片文本修改的PS效果

【评测】Flux的图片文本修改的PS效果 1. 百度图库找一张有英文的图片 2. 打开https://playground.bfl.ai/image/edit上传图片 3. 输入提示词 “change brarfant to goodbeer” 图片的文字被修改了...

青少年编程与数学 01-011 系统软件简介 01 MS-DOS操作系统

青少年编程与数学 01-011 系统软件简介 01 MS-DOS操作系统 1. MS-DOS的历史背景1.1 诞生背景1.2 发展历程1.3 与Windows的关系 2. MS-DOS的技术细节2.1 系统架构2.2 启动过程2.3 内存管理2.4 设备驱动程序 3. MS-DOS的用户界面3.1 命令行界面3.2 配置文件 4. MS-DOS的应用程序与…...

数据库管理-第334期 Oracle Database 23ai测试版RAC部署文档(20250607)

数据库管理334期 2024-06-07 数据库管理-第334期 Oracle Database 23ai测试版RAC部署文档&#xff08;20240607&#xff09;1 环境与安装介质2 操作标准系统配置2.1 关闭防火墙2.2 关闭SELinux2.3 关闭avahi-daemon2.4 时间同步配置 3 存储服务器配置3.1 配置本地yum源3.2 安装…...

springCloud2025+springBoot3.5.0+Nacos集成redis从nacos拉配置起服务

文章目录 前言一、网关gateway选型1. 响应式编程模型2. 网关的特定需求3. 技术栈一致性4. 性能对比5. 实际应用场景优势 二、redis的集成1.引入库2.配置类A、自定义配置类RedisAfterNacosAutoConfigurationB、自定义配置类RedisConfig 总结 前言 最近在搭建最新的springCloud …...

AI生成的基于html+marked.js实现的Markdown转html工具,离线使用,可实时预览 [

有一个markdown格式的文档&#xff0c;手头只有notepad的MarkdownPanel插件可以预览&#xff0c;但是只能预览&#xff0c;不能直接转换为html文件下载&#xff0c;直接复制预览的内效果又不太好&#xff0c;度娘也能找到很多工具&#xff0c;但是都需要在线使用。所以考虑用AI…...

机器学习:load_predict_project

本文目录&#xff1a; 一、project目录二、utils里的两个工具包&#xff08;一&#xff09;common.py&#xff08;二&#xff09;log.py 三、src文件夹代码&#xff08;一&#xff09;模型训练&#xff08;train.py&#xff09;&#xff08;二&#xff09;模型预测&#xff08;…...