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

【Java ee初阶】网络原理

应用层

由于下面的四层都是系统已经实现好了的,但是应用层是程序员自己写的,因此应用层是程序员最重要的一层。

应用层中,程序员通常需要定义好数据传输格式,调用传输层api(socket api)进行真正的网络通信,这就相当于在“自定义应用层协议”。

工作中更多的称为“约定前后端交互接口”,客户端、服务器。

示例:通过QQ发送一个hello给对方

 发送者的id,接受者的id,时间,正文。

 这里的格式和内容怎么定,都是程序员自行约定的

 示例:1234,5678,2025-04-17 21:25:00,hello;

 自定义协议的过程,主要是约定两件事: 1. 通信的信息是什么。 2. 通信的数据格式是什么。

1. 通信的信息是根据需求来确定的

以外卖为例:

点开外卖界面的请求

点开具体商家的需求

2. 通信的数据格式是什么,这是由程序员自行定义,既可以是客户端程序员定义的,也可以是服务器程序员定义的。 

1) 行文本方式

 1234,5678,2025-04-17 21:25:00,hello;

 缺点:可读性很差。以前这种方案比较流行,现在越来越少了。

2) XML 通过成对的标签,来对数据内容进行解释说明

 示例:

xml <request></request>

<from>1234</from>

<to>5678</to>

<time>2025-04-17 21:25:00</time>

<message>hello</message>

有点像HTML ,但是HTML的标签名字是标准规定的,都是有特殊含义的,XML标签的名字都是程序员自定义的。

这种方案越来越少了。一般很少用于“网络通信”

使用xml更多是作为本地的配置文件(maven

优点:可读性好了很多。

缺点:引入了很多标签,也需要占用网络带宽。对于服务器的硬件来说,最贵的资源其实是网络带宽。CPU、内存、硬盘,都不贵。真正贵的是网络带宽。

3) JSON 当前最流行的一种方案。

示例:

json { "from": "1234", "to": "5678", "time": "2025-04-17 21:25:00", "message": "hello" }

不是特别缺网络带宽

后面JavaEE进阶,未来的项目中,都会经常用到

以后实际开发中,也会经常用到。

后来又有了一些yaml / toml替代方案……

4) google protobuffer

二进制压缩的方案。 把要传输的数据按照一定规则编码成二进制比特位,然后再进行传输。 可读性非常差,但是网络带宽消耗的最少。 特别缺网络带宽的时候可以考虑本方案。

肉眼无法阅读,只能靠代码来解析。

学习网络协议,主要就是在学习协议格式

UDP协议

理解成类似于“字符串”只不过里面的数据是“二进制”

端口号是一个整数。2个字节,无符号(不分正负),取值范围为0 - 65535。网络协议,是有专门的组织来负责制定标准的。

此处UDP长度是2个字节,表示的数据范围0 - 65535,最大为 64KB。一个UDP数据报,最大长度就是64KB。而我们知道,现在手机拍的一个照片,尺寸就有10MB左右。如果需要传输比较大的数据,就可能装不下。

现在,计算机内存动不动就是16GB,32GB…… 为什么大佬们不把UDP协议扩充一下呢?这是因为从技术上来说,改一下格式,两个字节变为四个字节…… 但是具体实施上就费劲。 通信双方的设备,都得一起升级,才能有效。世界上的任意两个设备之间都可能使用UDP进行通信 一旦进行升级,一定会出现,一部分设备是新版本,一部分设备是旧版本的情况,新版设备和旧版设备就无法正确通信了……造成的后果难以估量。 协议标准好升级,协议具体的实现,是在各种操作系统厂商手里。 需要这些厂商配合你升级 可以预见短期之内,UDP都很难得到升级。相比于升级UDP,搞一个新的协议代替UDP可能是成本更低的做法。

如果64kb 上限很快就要达到了,那么由两种做法:

(1)应用层,对数据进行拆分。
否决,开发量很大,拆成多个之后,如果其中一部分丢包了咋办?
如果其中某个部分出错了咋办?
如果发送顺序和接收顺序不一致咋办,接收方如何重组?
……

(2)换成 TCP 协议 (没有明确的上限)

校验和

校验和用来验证UDP数据报是否在传输中出错。网络数据包传输中是否会出错?肯定会有一定概率。因为比特翻转(1 -> 0,0 -> 1) 本质上是电信号/光信号/电磁波环境的影响。 低电平、高电平与光/电磁波频率、磁场、高能粒子流(太空中)等概率性事件有关。比特翻转,客观存在的,无法100%避免,只能甄别出,当前数据是否是出错的。比如进行转账操作,本来转账100块钱, 因为数据传输出错,100 -> 10000 及时发现传输的输出出错,让转账失败,好过错误的转账10000的。

校验和,就是用来甄别数据是否出错的有效方案。发送方,构造UDP数据报,构造完成之后,把数据报的每个字节的数据,都进行累加,结果累加到一个16位的整数上。溢出,就溢出。 此时得到的结果,就是校验和check1,填充到UDP报头的校验和字段。check1 接收方收到UDP数据报之后,就会按照相同的算法,再计算一遍校验和 check2 接收方。就可以比较check1 == check2。如果相等,就可以视为 数据传输是正确的。 如果不相等,说明数据传输出错了。 CRC校验和,循环冗余校验,是一种简单,有效的做法 如果发送的数据和接收到的数据,每个字节都一致,计算得到的校验和就一定一致。 反之,发现校验和不一致,就意味着一定是发送的数据和接收的数据其中的某个字节/比特位 出现问题了。 虽然不知道是哪个比特位出错了,但是可以知道 出错/没出错,如果出错了就把数据丢弃掉即可。

那么,是否存在极端情况,恰好使得两个bit位发生翻转,导致翻转后算出来的校验和和翻转前算出来的校验和碰巧一样呢?这种情况,理论上会存在,实践中,概率非常非常小,忽略不计了。如果对于准确性要求特别敏感的场景,当然也有其他的校验和算法,做一个更精准的甄别。包括还有一些校验和算法,可以识别出是哪一位出现翻转,自动纠错,例如“计组”中讲到的海明码。

又比如把一个很大的文件,通过网络传给另一台机器,通过校验和的方式,验证文件是否出错了。

基于UDP的应用层协议:

- NFS:网络文件系统

- TFTP:简单文件传输协议

- DHCP:动态主机配置协议(你的电脑,查到路由器上 路由器通过DHCP协议给你的电脑自动分配IP地址 不需要手动配置)

- BOOTP:启动协议(用于无盘设备启动)

- DNS:域名解析协议

这里的协议很多都是比较生僻的。

使用UDP更多的场景,主要是在分布式系统中,服务器之间的通信:

1. 这些服务器在同一个机房,网络环境简单,出现丢包的概率比较小

2. UDP传输效率比较高

TCP协议

有连接,可靠传输,面向字节流…更多的差别

16位源端口号

16位目的端口号

4位首部长度  报头的长度 报头中包含了“选项”optional => 可选的 0-15 4字节 TCP报头的最大长度是60字节

保留(6位)   UDP想升级,非常费劲,就导致UDP的报文长度始终受到64KB的限制。 保留位,现在不使用,但是先占个位置,说不定以后就会使用。

6个最关键的标志位。

16位校验和 和UDP一样了

需要结合TCP的特性来进行理解。

可靠传输

什么是可靠传输? 可靠传输,能否做到数据100%到达对方呢?不能做到的!

发送的数据,能够知道对方是否收到,就可以认为是“可靠传输”

1) 如果知道对方收到了,传输成功

2) 如果知道对方没收到(丢包),采取其他措施补救

核心机制一:确认应答

实现让发送方知道接收方是否收到数据。 发送方发了数据之后,接收方接受。一旦受到了,就给发送方返回一个“应答报文”告诉发送方,“我收到了”

网络中时常出现“先发后置”的问题,网络中,路由器交换机就像端口红绿灯,一系列的数据包传输过程中,不一定是按照相同的路线转发的。不同的路线,有的可能堵,有的可能通畅。

TCP是字节流传输

序号和确认序号是针对“字节”进行编号的。

一个TCP数据报,包含多个字节, 如何体现所有的编号呢? 编号是连续递增的。只要知道TCP载荷的第一个字节的编号是多少,后面的每个字节的编号就都知道了

同一个TCP连接内, 序号会持续累加。下一个数据报的序号在上一个数据报最后一个字节的序号基础上继续递增,确认序号只在应答报文中生效。确认序号根据收到的数据的 最后一个字节的序号 + 1 进行填充。

这一位为1,确认序号字段就会有效,否则属于是“无效字段”

确认序号的含义: 

1. 所有 < 确认序号的数据,接收方已经收到了

2. 发送方接下来应该从确认序号位置,继续发送数据 

确认应答,关键是,数据顺利到达,通过ack告知发送方。

实际传输中,很可能丢包的。 

TCP核心机制二:超时重传

确认应答的重要补充,针对丢包的场景的。

超时:发送方,判定是否出现丢包的条件

重传:发现数据丢包,就再发一次

这是一个概率问题,假设一个数据包,传输过程中,丢包的概率是10%(相当大的数字

连续传输两次,数据包至少一次到达对方的概率是多少呢? 1 - 10% * 10% => 99%

传输次数的增加,数据报到达对方的概率大幅度增加

计算机中,一般不喜欢“无限的等”

最大等待时间“超时时间”

只要超过超时时间,还没有收到ACK就可以视为是丢包了

不同系统上,超时时间都是可能不同的(可配置的参数)

没有收到ack,有两种情况:

这种情况丢包之后重传,理所应当的

B已经收到过一份数据了 接下来又重传一次, B这边同样的数据收到两份

超时重传的超时时间不是固定的,动态变化。

假设,发的数据是一个“转账数据”

TCP协议已经处理了上述情况

TCP,在接受到数据的时候,会在操作系统内核中 维护一个“接收缓冲区”(内存空间)

如果又收到了同一个数据,此时就可以根据数据的序号 来在接受缓冲区中进行“去重”

确保应用程序,在进行read操作的时候,读到的数据不会出现重复

TCP也会针对收到的数据在接收缓冲区中进行重新排序

数据传输可能出现“后发先至” 1-1000先发的 1001-2000后发的

接收方先收到了1001-2000 后收到了1-1000

TCP的处理方式是在 接收缓冲区里,针对收到的数据进行排序

随着超时重传的进行,如果还是没有收到ack仍然要继续重传

但是等待的超时时间会逐渐变长

通过重传之后,大幅度提升数据到达对方的概率

但是重传之后,还是没有收到ack,只能说明,当前网络的丢包概率,远远不止10%了

此时,网络大概率出现非常严重的故障了,再频繁重传,非但不会解决问题,甚至可能会加重网络故障的程度

没指望重传能成功,死马当活马医了
超时重传处理丢包的情况

重置涉及到“复位报文”

RST

触发一个复位报文,意味着这个连接就不要了

单方面的通知

“释放连接”就相当于删除掉之前保存的对方的信息。

重传次数/总的重传时间,是存在上限的。

达到上限,重传还没有成功,tcp连接就会被“重置” => 单方面的断开连接了。

超时重传,TCP中,进行可靠传输的重要机制之一 是确认应答的补充。

确认应答处理传输顺利的情况

“TCP的可靠性是通过三次握手实现的” 实际上不是这样的。 三次握手只是在连接建立之初,涉及到的环节。 一旦连接建立好了,后序就没有 握手的事情了......

相关文章:

【Java ee初阶】网络原理

应用层 由于下面的四层都是系统已经实现好了的&#xff0c;但是应用层是程序员自己写的&#xff0c;因此应用层是程序员最重要的一层。 应用层中&#xff0c;程序员通常需要定义好数据传输格式&#xff0c;调用传输层api&#xff08;socket api&#xff09;进行真正的网络通信…...

Makefile中 链接库,同一个库的静态库与动态库都链接了,生效的是哪个库

Makefile中 链接库&#xff0c;同一个库的静态库与动态库都链接了&#xff0c;生效的是哪个库 在 Makefile 中同时链接同一个库的静态库&#xff08;.a&#xff09;和动态库&#xff08;.so&#xff09;时&#xff0c;具体哪个库生效取决于链接顺序和编译器行为。以下是详细分析…...

【AI提示词】金字塔模型应用专家

提示说明 专业运用金字塔原理优化信息结构与逻辑表达&#xff0c;实现高效精准的思维传达。 提示词 # Role: 金字塔模型应用专家 ## Profile - **language**: 中文/英文 - **description**: 专业运用金字塔原理优化信息结构与逻辑表达&#xff0c;实现高效精准的思维传…...

电子电器架构 --- 车载以太网拓扑

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

使用FastAPI微服务在AWS EKS上实现AI会话历史的管理

架构概述 本文介绍如何使用FastAPI构建微服务架构&#xff0c;在AWS EKS上部署两个微服务&#xff1a; 服务A&#xff1a;接收用户提示服务B&#xff1a;处理对话逻辑&#xff0c;与Redis缓存和MongoDB数据库交互 该架构利用AWS ElastiCache(Redis)实现快速响应&#xff0c;…...

Flutter PIP 插件 ---- 为iOS 重构PipController, Demo界面,更好的体验

接上文 Flutter PIP 插件 ---- 新增PipActivity&#xff0c;Android 11以下支持自动进入PIP Mode 项目地址 PIP&#xff0c; pub.dev也已经同步发布 pip 0.0.3&#xff0c;你的加星和点赞&#xff0c;将是我继续改进最大的动力 在之前的界面设计中&#xff0c;还原动画等体验一…...

vue开发用户注册功能

文章目录 一、开发步骤二、效果图三、搭建页面创建views/Login.vue在App.vue中导入Login.vue 四、数据绑定五、表单校验六、访问后端 API 接口&#xff0c;完成注册七、完整的Login.vue代码八、参考资料 一、开发步骤 二、效果图 三、搭建页面 创建views/Login.vue 完整内容在…...

Qt中的RCC

Qt资源系统(Qt resource system)是一种独立于平台的机制&#xff0c;用于在应用程序中传输资源文件。如果你的应用程序始终需要一组特定的文件(例如图标、翻译文件和图片)&#xff0c;并且你不想使用特定于系统的方式来打包和定位这些资源&#xff0c;则可以使用Qt资源系统。 最…...

muduo源码解析

1.对类进行禁止拷贝 class noncopyable {public:noncopyable(const noncopyable&) delete;void operator(const noncopyable&) delete;protected:noncopyable() default;~noncopyable() default; }; 2.日志 使用枚举定义日志等级 enum LogLevel{TRACE,DEBUG,IN…...

Qt QCheckBox 使用

1.开发背景 Qt QCheckBox 是勾选组件&#xff0c;具体使用方法可以参考 Qt 官方文档&#xff0c;这里只是记录使用过程中常用的方法示例和遇到的一些问题。 2.开发需求 QCheckBox 使用和踩坑 3.开发环境 Window10 Qt5.12.2 QtCreator4.8.2 4.功能简介 4.1 简单接口 QChec…...

【工具记录分享】提取bilibili视频字幕

F12大法 教程很多 但方法比较统一 例快速提取视频字幕&#xff01;适用B站、AI字幕等等。好用 - 哔哩哔哩 无脑小工具 哔哩哔哩B站字幕下载_在线字幕解析-飞鱼视频下载助手 把链接扔进去就会自动生成srt文件 需要txt可以配合&#xff1a; SRT转为TXT...

设计模式【cpp实现版本】

文章目录 设计模式1.单例模式代码设计1.饿汉式单例模式2.懒汉式单例模式 2.简单工厂和工厂方法1.简单工厂2.工厂方法 3.抽象工厂模式4.代理模式5.装饰器模式6.适配器模式7.观察者模式 设计模式 1.单例模式代码设计 ​ 为什么需要单例模式&#xff0c;在我们的项目设计中&…...

Python数据分析案例74——基于内容的深度学习推荐系统(电影推荐)

背景 之前都是标准的表格建模和时间序列的预测&#xff0c;现在做一点不一样的数据结构的模型方法。 推荐系统一直是想学想做的&#xff0c;以前读研时候想学没多少相关代码&#xff0c;现在AI资源多了&#xff0c;虽然上班没用到这方面的知识&#xff0c;但是还是想熟悉一下…...

C PRIMER PLUS——第8节:字符串和字符串函数

目录 1. 字符串的定义与表示 2. 获取字符串的两种方式 3.字符串数组 4. 字符串输入函数 4.1 gets()&#xff08;不推荐使用&#xff0c;有缓冲区溢出风险&#xff09; 4.2 fgets()&#xff08;推荐使用&#xff09; 4.3 scanf() 4.4 gets_s()&#xff08;C11 标准&…...

Dia浏览器:AI驱动浏览网页,究竟怎么样?(含注册申请体验流程)

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、Dia浏览器简介1. 什么是Dia浏览器2. 开发背景与公司简介3. 与传统浏览器的区别 …...

milvus+flask山寨复刻《从零构建向量数据库》第7章

常规练手&#xff0c;图片搜索山寨版。拜读罗云大佬著作&#xff0c;结果只有操作层的东西可以上上手。 书中是自己写的向量数据库&#xff0c;这边直接用python拼个现成的milvus向量数据库。 1. 创建一个向量数据库以及对应的相应数据表&#xff1a; # Milvus Setup Argume…...

【大数据技术-HBase-关于Hmaster、RegionServer、Region等组件功能和读写流程总结】

Hmaster的作用 负责命名空间、表的创建和删除等一些DDL操作、region分配和负载均衡,并不参与数据读写,相比与其他大数据组件,如hdfs的namenode,在hbase中,Hmaster的作用是比较弱化的,即使挂掉,也暂时不影响现有表的读写。 RegionServer的作用 一个机器上一个regionse…...

用c语言实现——一个交互式的中序线索二叉树系统,支持用户动态构建、线索化、遍历和查询功能

知识补充&#xff1a;什么是中序线索化 中序遍历是什么 一、代码解释 1.结构体定义 Node 结构体&#xff1a; 成员说明&#xff1a; int data&#xff1a;存储节点的数据值。 struct Node* lchild&#xff1a;该节点的左孩子 struct Node* rchild&#xff1a;该节点的右孩子…...

Pale Moon:速度优化的Firefox定制浏览器

Pale Moon是一款基于Firefox浏览器的定制版浏览器&#xff0c;专为追求速度和性能的用户设计。它使用开放源代码创建&#xff0c;经过高度优化&#xff0c;适用于现代处理器&#xff0c;提供了更快的页面加载速度和更高效的脚本处理能力。Pale Moon不仅继承了Firefox的安全性和…...

广东省省考备考(第七天5.10)—言语:逻辑填空(每日一练)

错题 解析 第一空&#xff0c;搭配“各个环节”&#xff0c;根据“我国已经形成了相对完善的中药质量标准控制体系”可知&#xff0c;横线处应体现“包含”之意&#xff0c;C项“涵盖”指包括、覆盖&#xff0c;D项“囊括”指把全部包罗在内&#xff0c;均与“各个环节”搭配得…...

Gartner《Container发布与生命周期管理最佳实践》学习心得

近日&#xff0c;Gartner发布了《Best Practices for Container Release and Life Cycle Management》&#xff0c; 报告为技术专业人士提供了关于容器发布和生命周期管理的深入指导。这份报告强调了容器在现代应用开发和部署中的核心地位&#xff0c;并提供了一系列最佳实践&…...

内存、磁盘、CPU区别,Hadoop/Spark与哪个联系密切

1. 内存、磁盘、CPU的区别和作用 1.1 内存&#xff08;Memory&#xff09; 作用&#xff1a; 内存是计算机的短期存储器&#xff0c;用于存储正在运行的程序和数据。它的访问速度非常快&#xff0c;比磁盘快几个数量级。在分布式计算中&#xff0c;内存用于缓存中间结果、存储…...

SpringCloud之Eureka基础认识-服务注册中心

0、认识Eureka Eureka 是 Netflix 开源的服务发现组件&#xff0c;后来被集成到 Spring Cloud 生态中&#xff0c;成为 Spring Cloud Netflix 的核心模块之一。它主要用于解决分布式系统中​​服务注册与发现​​的问题。 Eureka Server 有必要的话&#xff0c;也可以做成集群…...

MySQL 中如何进行 SQL 调优?

在MySQL中进行SQL调优是一个系统性工程&#xff0c;需结合索引优化、查询改写、性能分析工具、数据库设计及硬件配置等多方面策略。以下是具体优化方法及案例说明&#xff1a; 一、索引优化&#xff1a;精准提速的关键 索引类型选择 普通索引&#xff1a;加速频繁查询的列&…...

Linux平台下SSH 协议克隆Github远程仓库并配置密钥

目录 注意&#xff1a;先提前配置好SSH密钥&#xff0c;然后再git clone 1. 检查现有 SSH 密钥 2. 生成新的 SSH 密钥 3. 将 SSH 密钥添加到 ssh-agent 4. 将公钥添加到 GitHub 5. 测试 SSH 连接 6. 配置 Git 使用 SSH 注意&#xff1a;先提前配置好SSH密钥&#xff0c;然…...

Android平台FFmpeg音视频开发深度指南

一、FFmpeg在Android开发中的核心价值 FFmpeg作为业界领先的多媒体处理框架&#xff0c;在Android音视频开发中扮演着至关重要的角色。它提供了&#xff1a; 跨平台支持&#xff1a;统一的API处理各种音视频格式完整功能链&#xff1a;从解码、编码到滤镜处理的全套解决方案灵…...

QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口

常用的光模块结构形式&#xff1a; 1&#xff09;QSFP等效于4个SFP&#xff0c;支持410Gbit/s通道传输&#xff0c;可通过4个通道实现40Gbps传输速率。与SFP相比&#xff0c;QSFP光模块的传输速率可达SFP光模块的四倍&#xff0c;在部署40G网络时可直接使用QSFP光模块&#xf…...

MySQL事务和JDBC中的事务操作

一、什么是事务 事务是数据库操作的最小逻辑单元&#xff0c;具有"全有或全无"的特性。以银行转账为例&#xff1a; 典型场景&#xff1a; 从A账户扣除1000元 向B账户增加1000元 这两个操作必须作为一个整体执行&#xff0c;要么全部成功&#xff0c;要么全部失败…...

Linux系统下安装mongodb

1. 配置MongoDB的yum仓库 创建仓库文件 sudo vi /etc/yum.repos.d/mongodb-org.repo添加仓库配置 根据系统版本选择配置&#xff08;以下示例为CentOS 7和CentOS 9的配置&#xff09;&#xff1a; CentOS 7&#xff08;安装MongoDB 5.0/4.2等旧版本&#xff09;&#xff1a; In…...

JavaScript篇:async/await 错误处理指南:优雅捕获异常,告别失控的 Promise!

大家好&#xff0c;我是江城开朗的豌豆&#xff0c;一名拥有6年以上前端开发经验的工程师。我精通HTML、CSS、JavaScript等基础前端技术&#xff0c;并深入掌握Vue、React、Uniapp、Flutter等主流框架&#xff0c;能够高效解决各类前端开发问题。在我的技术栈中&#xff0c;除了…...

智能时代下,水利安全员证如何引领行业变革?

当 5G、AI、物联网等技术深度融入水利工程&#xff0c;传统安全管理模式正经历颠覆性变革。在这场智能化浪潮中&#xff0c;水利安全员证扮演着怎样的角色&#xff1f;又将如何重塑行业人才需求格局&#xff1f; 水利工程智能化转型对安全管理提出新挑战。无人机巡检、智能监测…...

使用FastAPI和React以及MongoDB构建全栈Web应用03 全栈开发快速入门

一、什么是全栈开发 A full-stack web application is a complete software application that encompasses both the frontend and backend components. It’s designed to interact with users through a web browser and perform actions that involve data processing and …...

NHANES稀有指标推荐:HALP score

文章题目&#xff1a;Associations of HALP score with serum prostate-specific antigen and mortality in middle-aged and elderly individuals without prostate cancer DOI&#xff1a;10.3389/fonc.2024.1419310 中文标题&#xff1a;HALP 评分与无前列腺癌的中老年人血清…...

软考错题集

一个有向图具有拓扑排序序列&#xff0c;则该图的邻接矩阵必定为&#xff08;&#xff09;矩阵。 A.三角 B.一般 C.对称 D.稀疏矩阵的下三角或上三角部分包含非零元素&#xff0c;而其余部分为零。一般矩阵这个术语太过宽泛&#xff0c;不具体指向任何特定性 质的矩阵。对称矩阵…...

llama.cpp无法使用gpu的问题

使用cuda编译llama.cpp后&#xff0c;仍然无法使用gpu。 ./llama-server -m ../../../../../model/hf_models/qwen/qwen3-4b-q8_0.gguf -ngl 40 报错如下 ggml_cuda_init: failed to initialize CUDA: forward compatibility was attempted on non supported HW warning: n…...

[面试]SoC验证工程师面试常见问题(五)TLM通信篇

SoC验证工程师面试常见问题(五) 摘要:UVM (Universal Verification Methodology) 中的 TLM (Transaction Level Modeling) 通信是一种用于在验证组件之间传递事务(Transaction)的高层次抽象机制。它通过端口(Port)和导出(Export)实现组件间的解耦通信,避免了信…...

Spring循环依赖问题

个人理解&#xff0c;有问题欢迎指正。 Spring 生命周期中&#xff0c;首先使用构造方法对 bean 实例化&#xff0c;实例化完成之后才将不完全的 bean放入三级缓存中提前暴露出 bean&#xff0c;然后进行属性赋值&#xff0c;此时容易出现循环依赖问题。 由此可见&#xff0c;…...

AtCoder Beginner Contest 405(CD)

C - Sum of Product 翻译&#xff1a; 给你一个长为N的序列。 计算的值。 思路&#xff1a; 可使用前缀和快速得到区间和&#xff0c;在遍历 i 即可。&#xff08;前缀和&#xff09; 实现&#xff1a; #include<bits/stdc.h> using namespace std; using ll long lon…...

MindSpore框架学习项目-ResNet药物分类-模型优化

目录 5.模型优化 5.1模型优化 6.结语 参考内容&#xff1a; 昇思MindSpore | 全场景AI框架 | 昇思MindSpore社区官网 华为自研的国产AI框架&#xff0c;训推一体&#xff0c;支持动态图、静态图&#xff0c;全场景适用&#xff0c;有着不错的生态 本项目可以在华为云modelar…...

C. scanf 函数基础

scanf 函数 1. scanf 函数基础1.1 函数原型与头文件1.2 格式化输入的基本概念2.1 常见格式说明符整数格式说明符浮点数格式说明符字符和字符串格式说明符其他格式说明符2.2 格式说明符的高级用法宽度修饰符精度修饰符跳过输入字段宽度组合修饰符对齐修饰符实际应用示例3.2 精度…...

《C++探幽:模板从初阶到进阶》

文章目录 :red_circle:一、模板基础&#xff1a;开启泛型编程之门&#xff08;一&#xff09;泛型编程的必要性&#xff08;二&#xff09;函数模板1. 函数模板概念2. 函数模板定义格式3. 函数模板原理4. 函数模板实例化5. 模板参数匹配原则 &#xff08;三&#xff09;类模板1…...

画立方体软件开发笔记 js three 投影 参数建模 旋转相机 @tarikjabiri/dxf导出dxf

gitee&#xff1a; njsgcs/njsgcs_3d mainwindow.js:4 Uncaught SyntaxError: The requested module /3dviewport.js does not provide an export named default一定要default吗 2025-05-10 14-27-58 专门写了个代码画立方体 import{ scene,camera,renderer} from ./3dviewp…...

LVGL图像导入和解码

LVGL版本&#xff1a;8.1 概述 在LVGL中&#xff0c;可以导入多种不同类型的图像&#xff1a; 经转换器生成的C语言数组&#xff0c;适用于页面中不常改变的固定图像。存储系统中的外部图像&#xff0c;比较灵活&#xff0c;可以通过插卡或从网络中获取&#xff0c;但需要配置…...

Win10无法上网:Windows 无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目找不到域 TEST 的域控制器DNS 解析存在问题

目录 一.先看问题 二.解决问题 三.补充备用 一.先看问题 Win08有网且已经加入域 Win10无网并且找不到域&#xff08;说明&#xff1a;Win10我之前已经加入过域的&#xff0c;并且能够上网&#xff0c;但每次在宿舍和教室切换校园网&#xff0c;就会导致只有Win10无网&#…...

开疆智能Canopen转Profinet网关连接工博士GBS20机器人配置案例

本案例是介绍将支持canopen通信协议的机器人机器人接入到西门子Profinet网络中&#xff0c;由于两种协议不能直接通讯&#xff0c;故选择了canopen转Profinet网关进行通讯协议转换。 配置过程&#xff1a; 首先打开Profinet主站配置软件&#xff0c;新建项目并导入网关GSD文件…...

物业企业绩效考核制度与考核体系

物业企业绩效考核制度旨在通过建立科学、公正的绩效管理体系,提升员工的工作效率、激发团队的潜力,并通过对绩效结果的合理运用来推动公司可持续发展。该制度覆盖了公司全体员工,并明确规定了不同岗位、不同部门的考核内容、周期以及绩效考核的标准操作流程。通过月度、季度…...

expo多网络请求设定。

在使用 npx expo start 启动 Expo 开发服务器时&#xff0c;你可以通过设置网络模式来控制你的应用如何连接到开发服务器。Expo 提供了几种网络模式供你选择&#xff1a; LAN (Default): 这是默认模式。在这种模式下&#xff0c;你的应用会通过本地局域网 (LAN) 连接到你的开发…...

M0基础篇之ADC

本节课使用到的例程 一、例程基本配置的解释 在例程中我们只使用到了PA25这一个通道&#xff0c;因此我们使用的是Single这个模式&#xff0c;也就是我们在配置模式的时候使用的是单一转换。 进行多个通道的测量我们可以使用Sequence这个模式。 二、例程基本代码讲解 DL_ADC12_…...

Cadence 高速系统设计流程及工具使用三

5.8 约束规则的应用 5.8.1 层次化约束关系 在应用约束规则之前&#xff0c;我们首先要了解这些约束规则是如何作用在 Cadence 设计对象上的。Cadence 中对设计对象的划分和概念&#xff0c;如表 5-11 所示。 在 Cadence 系统中&#xff0c;把设计对象按层次进行了划分&#…...

gitkraken 使用教程

一、安装教程 安装6.5.3&#xff0c;之后是收费的&#xff0c;Windows版免安装 二、使用教程 0. 软件说明 gitkraken是一个git本地仓库管理软件&#xff0c;可以管理多个仓库&#xff0c;并且仓库可以属于多个网站多个账户。 1. 克隆仓库 选择要克隆到什么位置&#xff0…...