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

计算机组成原理—— 总线系统(十一)

在追求梦想的旅途中,我们常常会遇到崎岖的道路和难以预料的风暴。然而,正是这些挑战塑造了我们的坚韧和毅力,使我们能够超越自我,触及那些看似遥不可及的目标。不要因为一时的困境而气馁,也不要因为他人的质疑而动摇自己的信念。你的价值不由外界定义,而是由你内心深处对理想的执着所决定。

想象一下,站在高山之巅俯瞰世界的感觉,那是经过无数次攀登、滑倒再站起后才能体会到的壮丽景象。每一次的努力都是向着这个目标迈进的一小步,无论多么微小的进步,都是通向成功的宝贵积累。即使前路漫漫,即使希望渺茫,心中的火焰也不应熄灭,因为它代表着你的热情、你的决心以及你对未来无限的可能。

记住,在这漫长的旅途中,最重要的是过程而非结果。享受每一个学习的机会,珍惜每一段成长的经历,让它们成为你心中最宝贵的财富。即使最终没有达到预期的目标,但只要你在过程中尽力了、奋斗了,那么你就已经赢得了属于自己的胜利。

因此,请继续怀揣着梦想,勇敢地向前迈进。用你的行动证明给世界看,你可以超越一切限制,实现心中所愿。因为在你的心中,蕴藏着改变世界的无限力量,只要你愿意挖掘并释放它,没有什么是不可能的。未来正等待着你去书写,而你是那个唯一能够创造属于自己辉煌篇章的人。

计算机组成原理资源网

https://www.wenjingketang.com/这里面有ppt课后习题及答案,需要的可以自行下载

目录

7.2 总线接口

7.2.1 信息传送方式

同步传输

异步传输

半同步传输

7.2.2 总线接口的基本概念

功能模块详解

7.3 总线仲裁

7.3.1 集中式仲裁

链式查询(Daisy Chaining)

计数器定时查询

独立请求(Independent Request)

7.3.2 分布式仲裁

CAN总线仲裁机制

CSMA/CD协议

案例分析与扩展

PCI Express总线

HyperTransport总线

总结


7.2 总线接口

7.2.1 信息传送方式
同步传输

技术细节
同步传输依赖全局时钟信号(如CPU主时钟)协调所有操作。每个时钟周期完成固定操作,如地址发送、数据读写等。时序要求严格,所有设备必须同步。

时序图示例

plaintext

时钟周期: | 1 | 2 | 3 | 4 |  
地址线:  | A | A | B | B |  
数据线:  | D | D | X | X |  
控制线:  | Write | Read | Idle | Idle |  

Verilog代码实现

verilog

module sync_transfer (input clk,input [7:0] data_in,output reg [7:0] data_out,input write_en
);reg [7:0] buffer;always @(posedge clk) beginif (write_en) beginbuffer <= data_in;  // 写入数据data_out <= 8'bz;    // 输出高阻态end else begindata_out <= buffer;  // 读取数据endend
endmodule

案例:SDRAM控制器
SDRAM通过同步接口与CPU交互,时钟频率为133MHz。每个时钟周期完成一次突发传输(Burst Transfer),连续传输4/8/16个数据。


异步传输

技术细节
异步传输使用握手协议(Req/Ack)协调设备。无全局时钟,设备根据自身速度调整时序。

时序图示例

plaintext

Req:  __/‾‾‾\____  
Ack:  ____/‾‾‾\__  
数据有效区间: 在Req和Ack同时有效时  

C代码模拟握手协议

c

void async_transfer(uint8_t* data) {// 发送方set_req_high();while (!check_ack());  // 等待接收方应答send_data(data);set_req_low();while (check_ack());   // 等待接收方释放Ack// 接收方if (req_is_high()) {read_data(data);set_ack_high();while (req_is_high()); // 等待发送方释放Reqset_ack_low();}
}

案例:RS-232串口通信
波特率9600bps,起始位1位,数据位8位,停止位1位。通过UART控制器实现异步数据传输。


半同步传输

技术细节
在同步传输基础上添加等待信号(Wait),允许从设备延长时钟周期。

时序图示例

plaintext

时钟:   | 1 | 2 | 3 | 4 |  
Wait:    | __/‾‾‾\________ |  
数据线: | X | D | D | X |  

VHDL代码实现

vhdl

process(clk)
beginif rising_edge(clk) thenif wait_signal = '0' thendata_out <= internal_buffer;else-- 保持当前状态end if;end if;
end process;

案例:PCI总线
PCI总线支持半同步传输,从设备通过DEVSEL#信号声明响应,TRDY#信号控制数据传输节奏。


7.2.2 总线接口的基本概念
功能模块详解
  1. 地址译码器

    • 实现方式:基于比较器或可编程逻辑阵列(PLA)。

    • 示例:

      verilog

      module address_decoder (input [15:0] addr,output reg select_device1,output reg select_device2
      );always @(*) beginselect_device1 = (addr[15:12] == 4'b0001);select_device2 = (addr[15:12] == 4'b0010);end
      endmodule
  2. 数据缓冲器

    • 类型:单向缓冲(如74LS244)、双向缓冲(如74LS245)。

    • FIFO实现:循环队列管理读写指针。

      c

      #define FIFO_SIZE 16
      uint8_t buffer[FIFO_SIZE];
      int head = 0, tail = 0;void fifo_write(uint8_t data) {buffer[head] = data;head = (head + 1) % FIFO_SIZE;
      }
  3. 错误检测算法

    • CRC-32计算(以太网标准):

      python

      def crc32(data):crc = 0xFFFFFFFFpoly = 0xEDB88320for byte in data:crc ^= bytefor _ in range(8):crc = (crc >> 1) ^ poly if (crc & 1) else crc >> 1return crc ^ 0xFFFFFFFF

7.3 总线仲裁

7.3.1 集中式仲裁
链式查询(Daisy Chaining)

电路设计

plaintext

仲裁器 → Grant → Device1 → Grant → Device2 → ... → DeviceN
每个设备的Grant输入连接到前一个设备的Grant输出。

优先级问题

  • 固定优先级:Device1 > Device2 > ... > DeviceN

  • 故障影响:若Device3损坏,后续设备无法获得授权。

Verilog实现

verilog

module daisy_chain_arbiter (input clk,input [3:0] req,output reg [3:0] grant
);always @(posedge clk) begingrant[0] = req[0];grant[1] = req[1] & ~grant[0];grant[2] = req[2] & ~grant[1];grant[3] = req[3] & ~grant[2];end
endmodule

计数器定时查询

算法流程

  1. 仲裁器维护一个计数器(0到N-1循环)。

  2. 收到请求后,从当前计数值开始扫描设备。

  3. 第一个遇到请求的设备获得授权。

动态优先级示例

c

int current_device = 0;int arbitrate(int requests[]) {for (int i = 0; i < MAX_DEVICES; i++) {int device = (current_device + i) % MAX_DEVICES;if (requests[device]) {current_device = (device + 1) % MAX_DEVICES;return device;}}return -1; // 无请求
}

独立请求(Independent Request)

硬件设计
每个设备有独立的Req和Grant线,仲裁器使用优先级编码器。

优先级编码器示例(4设备)

verilog

module priority_encoder (input [3:0] req,output reg [1:0] grant
);always @(*) begincasex(req)4'b1xxx: grant = 2'b00; // Device0优先级最高4'b01xx: grant = 2'b01;4'b001x: grant = 2'b10;4'b0001: grant = 2'b11;default: grant = 2'b00;endcaseend
endmodule

7.3.2 分布式仲裁
CAN总线仲裁机制

非破坏性逐位仲裁

  • 每个节点发送ID的同时监听总线。

  • 若发现更高优先级ID(二进制0),则退出发送。

ID比较逻辑

c

// CAN标准ID为11位
#define ID_MASK 0x7FFvoid can_arbitrate(uint16_t my_id) {transmit_id(my_id);for (int i = 10; i >= 0; i--) {bool bit = (my_id >> i) & 1;bool bus_bit = read_bus_bit();if (bit != bus_bit) {if (bus_bit == 0) {// 检测到更高优先级ID,停止发送enter_listen_mode();return;}}}// 仲裁胜利,继续发送数据transmit_data();
}

CSMA/CD协议

冲突检测与退避算法

  1. 发送前监听总线(Carrier Sense)。

  2. 检测到冲突后发送Jam信号。

  3. 退避时间计算:二进制指数退避(0 ~ 2^k -1时隙,k为冲突次数)。

退避算法代码

python

import randomcollision_count = 0def backoff_time():max_slots = 2 ** min(collision_count, 10) - 1return random.randint(0, max_slots) * slot_time

案例分析与扩展

PCI Express总线

分层协议架构

  • 事务层:处理TLP(Transaction Layer Packet)。

  • 数据链路层:错误检测与重传(Ack/Nak机制)。

  • 物理层:差分信号传输,支持多通道绑定。

TLP包格式

字段长度(字节)说明
Header12或16包含路由、操作类型等
Payload0-4096传输数据
ECRC4端到端CRC校验

HyperTransport总线

点对点传输

  • 双向链路上行与下行分离。

  • 基于包的路由:直接内存访问(DMA)和中断传递。

  • 带宽计算:

    带宽=频率×位宽×2(双工)带宽=频率×位宽×2(双工)

    例如:1.6GHz × 16位 × 2 = 6.4GB/s。


总结

总线技术是计算机系统的核心,其设计需平衡速度、可靠性和复杂度。现代系统倾向于使用高速串行总线(如PCIe)和分布式仲裁(如以太网),而嵌入式领域仍依赖CAN等实时性协议。理解总线接口与仲裁机制,是优化系统性能的关键。

相关文章:

计算机组成原理—— 总线系统(十一)

在追求梦想的旅途中&#xff0c;我们常常会遇到崎岖的道路和难以预料的风暴。然而&#xff0c;正是这些挑战塑造了我们的坚韧和毅力&#xff0c;使我们能够超越自我&#xff0c;触及那些看似遥不可及的目标。不要因为一时的困境而气馁&#xff0c;也不要因为他人的质疑而动摇自…...

电子制造企业数字化转型实战:基于Odoo构建MES平台的深度解决方案

作者背景 拥有8年乙方项目经理经验、8年甲方信息化管理经验&#xff0c;主导过12个Odoo制造业项目落地&#xff0c;服务客户涵盖消费电子、汽车电子、工业设备等领域。本文基于华东某电子企业&#xff08;以下简称"A公司"&#xff09;的实战案例&#xff0c;解析行业…...

【Python爬虫(4)】揭开Python爬虫的神秘面纱:基础概念全解析

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…...

kafka为什么这么快?

前言 Kafka的高效有几个关键点&#xff0c;首先是顺序读写。磁盘的顺序访问速度其实很快&#xff0c;甚至比内存的随机访问还要快。Kafka在设计上利用了这一点&#xff0c;将消息顺序写入日志文件&#xff0c;这样减少了磁盘寻道的时间&#xff0c;提高了吞吐量。与传统数据库的…...

书籍推荐:《书法课》林曦

记得樊登老师说过&#xff0c;如果你想了解一个事物&#xff0c;就去读5本相关的书&#xff0c;你会比大部分人都更了解它。这是我读的第4本和“书法”有关的书&#xff0c;作为一个零基础的成年人&#xff0c;林曦这本《书法课》非常值得一读。&#xff08;无论你是否写字&…...

位图(C语言版)

文章目录 位图模型基本操作实现代码运行结果 应用存储只有两种状态的数据排序并去重 位图 模型 位图是“位”的数组。 为什么需要构建一个专门的数据结构来表示位的数组&#xff1f;&#xff1a;因为计算机最小的寻址单位是字节&#xff0c;而不是位。 位图是一种内存紧凑的…...

使用C#元组实现列表分组汇总拼接字段

文章目录 使用C#元组实现列表分组汇总拼接字段代码运行结果 使用C#元组实现列表分组汇总拼接字段 代码 string message string.empty; var tupleList new List<Tuple<string, string, string>>(); tupleList.Add(new Tuple<string, string, string>("…...

淘宝API数据采集接口||调用步骤详解

### 一、注册与认证 1. **注册淘宝开发者账号**&#xff1a; * 访问淘宝开放平台官网&#xff0c;点击“立即入驻”按钮&#xff0c;按照提示完成注册流程。注册过程中需要提供企业名称、联系人信息等基本信息。 2. **创建应用**&#xff1a; * 注册成功后&#xff0c;登录淘…...

C# 调用 C++ 动态库接口

在 C# 中调用 C 动态库接口&#xff0c;通常需要通过 P/Invoke (Platform Invocation Services) 来与 C 代码交互 1. 准备 C 动态库 假设你有一个 C 动态库&#xff0c;其中包含如下函数&#xff1a; extern "C" char* getLocationURL(const char* package_name, …...

fastadmin 接口请求提示跨域

问题描述 小程序项目&#xff0c;内嵌h5页面&#xff0c;在h5页面调用后端php接口&#xff0c;提示跨域。网上查找解决方案如下&#xff1a; 1&#xff0c;设置header // 在入口文件index.php直接写入直接写入 header("Access-Control-Allow-Origin:*"); header(&q…...

C#_文件写入读取操作

文件写入操作:--------------------------------------------------------------------------- 读取文件:---------------------------------------------------------------------------...

redis的哨兵模式和集群模式

Redis 的 哨兵模式&#xff08;Sentinel Mode&#xff09; 和 集群模式&#xff08;Cluster Mode&#xff09; 是两种常见的高可用部署方式&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的比较&#xff1a; 1. 哨兵模式&#xff08;Sentinel Mode&#…...

《open3d +pyqt》凸包计算

《open3d +pyqt》凸包计算 一、效果展示二、qt设置2.1界面设置2.2 py文件生成三、核心代码一、效果展示 二、qt设置 2.1界面设置 添加动作Qhull: 布局参数: 2.2 py文件生成 更新Mainwindow.py 生成py文件 三、核心代码 代码如下: main.py文件...

数据库报错1045-Access denied for user ‘root‘@‘localhost‘ (using password: YES)解决方式

MySQL 报错 1045 表示用户root从localhost连接时被拒绝访问&#xff0c;通常是因为密码错误、权限问题或配置问题。以下是解决该问题的常见方法&#xff1a; 方法一&#xff1a;检查用户名和密码 • 确认用户名和密码是否正确&#xff1a; 确保输入的用户名和密码完全正确&am…...

ThreadLocal为什么会内存溢出

每个线程(Thread 对象)内部维护一个 ThreadLocalMap,用于存储该线程的所有 ThreadLocal 变量的键值对: ThreadLocalMap虽然是ThreadLocal的静态内部类,但是Thread 对象的属性,当线程存活时ThreadLocalMap不会被回收。 Key:ThreadLocal 实例的 弱引用(WeakReference)。…...

数据结构------单向链表。

一.实现单向链表的头插&#xff0c;头删&#xff0c;尾插&#xff0c;尾删&#xff0c;按位置插&#xff0c;按位置删&#xff0c;按位置修改&#xff0c;按元素查找&#xff0c;按元素修改&#xff0c;按元素删除&#xff0c;单链表的逆置&#xff0c;查找倒数第几个元素&…...

Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究

基于 Python 的 Django 框架在 Web 开发中的应用研究 摘要 Django 是一个基于 Python 的高级 Web 框架,以其开发效率高、安全性和可扩展性强等特点被广泛应用于现代 Web 开发。本文首先介绍了 Django 的基本架构和核心特性,然后通过一个实际的 Web 开发项目案例,展示了 Dj…...

在 PyCharm 中接入deepseek的API的各种方法

在 PyCharm 中接入 DeepSeek 的 API&#xff0c;通常需要以下步骤&#xff1a; 1. 获取 DeepSeek API 密钥 首先&#xff0c;确保你已经在 DeepSeek 平台上注册并获取了 API 密钥&#xff08;API Key&#xff09;。如果没有&#xff0c;请访问 DeepSeek 的官方网站注册并申请 …...

当扩展屏显示【输入不支持】怎么解决?!

1、why? 当你遇到这个问题的时候&#xff0c;那就表示您的扩展屏偏老旧&#xff0c;这时候需要进行一些参数设置 2、直接改变桌面模式解决不了问题 你是不是尝试过直接在缩放和布局这里设置&#xff1f;在这里直接设置的话&#xff0c;设置的是桌面模式,屏幕大小是会变化但…...

深入剖析 Python 类属性与对象的底层创建与内存分析

各类资料学习下载合集 ​​https://pan.quark.cn/s/8c91ccb5a474​​ 在 Python 中,类和对象是面向对象编程(OOP)的核心组成部分。类属性与实例属性的存储和管理方式,以及类和对象在内存中的分布和结构,对于深入理解 Python 的底层机制至关重要。 本文将带你详细解析 P…...

pdf文件的读取,基于深度学习的方法

需要安装一些依赖解析 PDF 文件的详细指南_unstructured.partition.pdf-CSDN博客文章浏览阅读1.3k次&#xff0c;点赞13次&#xff0c;收藏9次。通过 unstructured.partition.pdf 函数&#xff0c;可以方便地解析 PDF 文件并提取其中的文本和表格内容。尽管在使用过程中可能会遇…...

【指令集】Nginx

本文作者&#xff1a; slience_me 【指令集】Nginx 1. 目录结构 Nginx 的基础目录结构通常包括以下几个主要目录&#xff1a; Nginx的目录结构大致如下&#xff08;以Linux系统为例&#xff09;&#xff1a; /etc/nginx/ # Nginx的配置文件目录 ├── ngin…...

蓝耘云智算|使用 Deepseek R1 模型优化 BERT 在 NLP 任务中的表现

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;已成为许多文本分类任务的基准模型。然而&#xff0c;随着新模型的出现和技术的不断进步&#xff0c;BERT在某些情况下可能不…...

LINUX常用命令学习

查看系统版本 使用hostnamectl命令检查。hostnamectl显示了CentOS的版本以及操作系统的相关信息&#xff0c;非常方便 设置linux机器别名称 hostnamectl set-hostname 机器别名 --static 华为云 centos 命令&#xff1a;lsb_release -a linux:cat /proc/version 查看进程路…...

【java面向对象的三大特性】封装、继承和多态

目录标题 一、封装&#xff08;Encapsulation&#xff09;&#xff1a;二、继承&#xff08;Inheritance&#xff09;&#xff1a;三、多态&#xff08;Polymorphism&#xff09;&#xff1a;1. 多态的三个必要条件&#xff1a;2.多态的具体实现&#xff1a;3.多态的使用场景&a…...

【开源免费】基于SpringBoot+Vue.JS校园商铺管理系统(JAVA毕业设计)

本文项目编号 T 191 &#xff0c;文末自助获取源码 \color{red}{T191&#xff0c;文末自助获取源码} T191&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

日常故障排查 - Java程序故障排查

Java程序故障 无论对于任何的故障而言&#xff0c;恢复可用性都是首要目标。但作为一个技术匠人&#xff0c;不能让同一个问题导致多次故障&#xff0c;因此故障的根因剖析以及解决也是很重要的。但是故障根因剖析是需要现场数据来进行分析&#xff0c;因此在故障恢复之前要尽…...

ai数字人分身系统开发源码saas化

#数字人分身系统# #数字人系统源码# #ai数字人123 123# 云罗抖去推数字人分身系统是一款融合了形象克隆、声音克隆、AI数字人分身、AI智能剪辑、智能文案等各种AI技术一体化的短视频营销工具&#xff0c;其核心功能优势主要体现在以下几方面&#xff1a; 真实度高&#xf…...

DeepSeek免费部署到WPS或Office

部署到WPS - 通过OfficeAI插件接入&#xff1a; - 准备工作&#xff1a;安装最新版本的WPS Office软件&#xff1b;访问DeepSeek官网&#xff0c;点击右上角的“API开放平台”&#xff0c;登录账号&#xff08;若无账号需先注册&#xff09;&#xff0c;登录成功后&#xff0c;…...

vue2和vue3插槽slot最通俗易懂的区别理解

在 Vue 的组件通信中&#xff0c;slot&#xff08;插槽&#xff09;的编译优化是一个重要的性能提升点。以下是 Vue2 和 Vue3 在 slot 处理上的差异及优化原理&#xff0c;用更直观的方式解释&#xff1a; Vue2 的 Slot 更新机制 想象一个父子组件场景&#xff1a; 父组件&am…...

生成式人工智能:技术革命与应用图景

(这文章有些地方看不懂很正常&#xff0c;因为有太多生词&#xff0c;需要对 计算机/人工智能 研究至深的人才能看懂&#xff0c;遇到不会的地方用浏览器搜索或跳过&#xff09; 引言 2023年被称我们为"生成式AI元年"&#xff0c;以GPT-4、DALL-E 3、Stable Diffusi…...

关于Dest1ny:我的创作纪念日

Dest1ny 因为这是csdn任务&#xff0c;我就稍微“写”了一下&#xff01; 如果大家真的有什么想聊的或者想一起学习的&#xff0c;欢迎在评论区或者私信中与我讨论&#xff01; 2025想说的话 我就把我想说的写在前面&#xff01; 不用对未来焦虑&#xff0c;不要觉得自己走…...

AI学习记录 - 最简单的专家模型 MOE

代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的&#xff0c; linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层&#xff08;active function 设…...

【C++内存管理】—— 策略、陷阱及应对之道

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…...

分布式版本控制系统---git

Git&#xff1a;从基础到进阶的全面指南 Git 是一个分布式版本控制系统&#xff0c;广泛应用于软件开发中&#xff0c;用于跟踪文件的更改、支持团队协作以及管理项目代码。通过 Git&#xff0c;开发者可以在本地拥有完整的项目历史记录&#xff0c;进行离线开发&#xff0c;并…...

pg_sql关于时间的函数

1、时间戳和日期之间的相互转换 时间戳转日期&#xff08;时间戳为数值类型&#xff0c;若为字符型需进行转换&#xff09; # 保留到秒&#xff1a;2025-10-02 04:46:40 &#xff08;字符型转换数值型&#xff09; select to_timestamp(1759351600::bigint)# 保留到日&#x…...

【Kafka】Windows下安装Kafka(全面)

目录 1.前提条件 2.下载 3.安装 4.环境变量配置 5.验证 1.前提条件 参考版本&#xff1a;zookeeper为3.6.4 kafka版本为3.5.1 1.先安装zookeeper&#xff1a; 【Zookeeper】Windows下安装Zookeeper&#xff08;全面&#xff09;-CSDN博客https://blog.csdn.net/…...

【Qt】:概述(下载安装、认识 QT Creator)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 介绍 &#x1f98b; 什么是 QT&#x1f98b; QT 发展史&#x1f98b; Qt版本&#x1f98b; QT 优点 一&#xff1a;&#x1f525; 搭建Qt开发环境 &#x1f9…...

Netty源码解析之异步处理(二):盛赞Promise中的集合设计

前言 在阅读Netty源码的过程中&#xff0c;我越来越相信一句话&#xff1a;“Netty的源码非常好&#xff0c;质量极高&#xff0c;是Java中质量最高的开源项目之一”。如果认真研究&#xff0c;会有一种遍地黄金的感觉。 本篇文件我将记录一下鄙人在Promise的实现类DefaultPr…...

Spring Boot 的约定优于配置,你的理解是什么?

“约定优于配置” 是 Spring Boot 极为重要的设计理念&#xff0c;它极大地简化了 Spring 应用的开发流程&#xff0c;下面从多个方面详细解释这一理念&#xff1a; 减少配置复杂性 传统开发的痛点 在传统的 Spring 开发里&#xff0c;配置工作相当繁琐。以配置 Spring MVC …...

图形渲染(一)——Skia、OpenGL、Mesa 和 Vulkan简介

1.Skia —— 2D 图形库 Skia 是一个 2D 图形库&#xff0c;它的作用是为开发者提供一个高层次的绘图接口&#xff0c;方便他们进行 2D 图形渲染&#xff08;比如绘制文本、形状、图像等&#xff09;。Skia 本身不直接管理 GPU 或进行底层的渲染工作&#xff0c;而是通过 底层图…...

git使用,注意空格

第一节 安装完成后&#xff0c;找个目录用于存储,打开目录右击选择git bash here 命令1 姓名 回车 git config --global user.name "li" 命令2 邮箱 回车 git config --global user.email "888163.com" 命令3 初始化新仓库&#xff0c;下载克隆 回…...

以用户为中心,汽车 HMI 界面设计的创新之道

在汽车智能化飞速发展的当下&#xff0c;汽车 HMI&#xff08;人机交互界面&#xff09;成为连接人与车的关键桥梁。如何打造出优秀的 HMI 界面&#xff1f;答案是以用户为中心&#xff0c;探索创新之道。 用户需求是汽车 HMI 界面设计的指南针。在设计前期&#xff0c;深入调…...

CentOS安装Docker,Ubuntu安装Docker,Docker解决方案

文章目录 CentOS7安装DockerUbuntu修改Docker镜像源docker设置容器自动启动启动时加--restartalways如果已经过运行的项目docker compose设置容器自启动 docker file修改时区docker在容器执行命令简单粗暴的办法安装curl docker compose命令安装docker compose Docker WEB 图形…...

c#中“事件-event”的经典示例与理解

在C#编程语言中&#xff0c;事件&#xff08;Event&#xff09;是一个非常重要的概念&#xff0c;它提供了一种松耦合的方式&#xff0c;让对象间能够通知彼此&#xff0c;而无需直接联系。事件的使用可以让我们的代码更加灵活、可扩展且易于维护。 事件可以视作委托的实例&…...

git bash在github的库中上传或更新本地文件

一、将本地文件上传到 GitHub 仓库 1. 创建 GitHub 仓库 如果你还没有在 GitHub 上创建仓库&#xff0c;首先需要创建一个新的仓库&#xff1a; 登录到 GitHub。点击右上角的 按钮&#xff0c;选择 New repository。给你的仓库起个名字&#xff0c;并选择 Public 或 Privat…...

【编程实践】vscode+pyside6环境部署

1 PySide6简介 PySide6是Qt for Python的官方版本&#xff0c;支持Qt6&#xff0c;提供Python访问Qt框架的接口。优点包括官方支持、LGPL许可&#xff0c;便于商业应用&#xff0c;与Qt6同步更新&#xff0c;支持最新特性。缺点是相比PyQt5&#xff0c;社区资源较少。未来发展…...

vue 文件下载(导出)excel的方法

目前有一个到处功能的需求&#xff0c;这是我用过DeepSeek生成的导出&#xff08;下载&#xff09;excel的一个方法。 1.excel的文件名是后端生成的&#xff0c;放在了响应头那里。 2.这里也可以自己制定文件名。 3.axios用的是原生的axios&#xff0c;不要用处理过的&#xff…...

服务器延迟给视频网站造成的影响

在数字化时代中&#xff0c;网络视频已经成为人们日常娱乐和获取信息的重要平台&#xff0c;网络视频的流畅性会影响着用户的体验度&#xff0c;那么&#xff0c;当服务器出现延迟会对视频网站造成哪些影响呢&#xff1f;本文就来共同了解一下吧&#xff01; 当所使用的服务器由…...

django上传文件

1、settings.py配置 # 静态文件配置 STATIC_URL /static/ STATICFILES_DIRS [BASE_DIR /static, ]上传文件 # 定义一个视图函数&#xff0c;该函数接收一个 request 参数 from django.shortcuts import render # 必备引入 import json from django.views.decorators.http i…...