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

set_clock_groups

一、命令参数与工具处理逻辑

核心参数定义

参数定义工具行为工具兼容性
-asynchronous完全异步时钟组,无任何相位或频率关系(如独立晶振、不同时钟树)工具完全禁用组间路径的时序分析,但需用户自行处理跨时钟域(CDC)问题 Xilinx Vivado、Intel Quartus、Gowin(等效参数-Exclusive
-logically_exclusive逻辑互斥时钟组,同一时刻仅一个有效(如MUX选择时钟)工具认为组间路径逻辑上无法同时激活,直接跳过时序分析,但保留物理路径检查 Vivado、PrimeTime、Synplify Pro
-physically_exclusive物理互斥时钟组,硬件上无法共存(如不同配置模式、电源域隔离)工具认为组间路径物理不存在,彻底忽略路径分析,包括时序和串扰 Vivado(需配合-add生成多源时钟)、PolarFire

工具差异说明

  • Gowin:仅支持 -Exclusive 参数,同时覆盖逻辑与物理互斥场景 。
  • Intel Quartus-exclusive 是 -logically_exclusive 的别名,与 -asynchronous 效果相同 。
  • PrimeTime-physically_exclusive 禁用串扰分析,-logically_exclusive 仅禁用时序分析 。

二、全场景应用与命令详解

基础异步时钟组

场景:FPGA外部输入的两个独立晶振时钟(50MHz和100MHz)。
约束

create_clock -period 20 -name clk_50m [get_ports clk_ext1]
create_clock -period 10 -name clk_100m [get_ports clk_ext2]
set_clock_groups -asynchronous  -group clk_50m  -group clk_100m

解释

  • 命令作用:禁用clk_50mclk_100m之间的所有路径分析,包括跨时钟域路径。

  • 替代方案:若使用set_false_path,需双向约束:

set_false_path -from [get_clocks clk_50m]   -to [get_clocks clk_100m]
set_false_path -from [get_clocks clk_100m] -to [get_clocks clk_50m ]
优劣对比set_clock_groups更高效,避免遗漏路径;set_false_path适合局部例外路径

多级MUX生成时钟

场景:两级MUX串联选择时钟,第一级选clk0/clk1,第二级选clk2/clk3
约束

# 第一级MUX生成时钟
create_generated_clock -name mux1_clk0  [get_pins mux1/Y]  -source clk0 -add
create_generated_clock -name mux1_clk1  [get_pins mux1/Y]  -source clk1 -add
# 第二级MUX生成时钟
create_generated_clock -name mux2_clk2  [get_pins mux2/Y]  -source clk2 -add
create_generated_clock -name mux2_clk3  [get_pins mux2/Y]  -source clk3 -add
# 设置互斥组
set_clock_groups -logically_exclusive -group {mux1_clk0 mux1_clk1} -group {mux2_clk2 mux2_clk3}
 

解释

  • 关键点:必须为每个MUX输出定义生成时钟,否则工具无法识别互斥关系 。
  • 工具行为:仅分析同一级MUX的输出时钟路径,跨级路径(如mux1_clk0mux2_clk2)自动忽略 

 动态部分重配置(Partial Reconfiguration)

场景:模块A使用clk_fast运行,模块B重配置时使用clk_slow
约束

create_clock -name clk_fast -period 5 [get_ports clk_fast]  -add
create_clock -name clk_slow -period 20 [get_ports clk_slow]  -add
set_clock_groups -physically_exclusive -group clk_fast -group clk_slow
 

解释

  • 物理互斥必要性:重配置模式下两个模块的时钟物理隔离,路径不存在 。
  • 工具行为:彻底跳过路径分析,时序报告中不显示相关路径,减少报告噪声

测试模式与功能模式时钟

场景:测试时钟TestClk与系统时钟SysClk分时复用同一端口。
约束

create_clock -name TestClk -period 50 [get_ports clk]  -add
create_clock -name SysClk -period 10 [get_ports clk]  -add
set_clock_groups -physically_exclusive -group TestClk -group SysClk
 

解释

  • 替代方案:使用set_case_analysis强制选择模式,但需额外约束且无法动态切换 。
  • 优势:简化约束流程,无需依赖外部条件配置 

生成时钟依赖关系

场景:主时钟clk_main分频生成clk_div,需约束两者为异步。
错误示范

create_clock -name clk_main -period 10 [get_ports clk_in]
create_generated_clock -name clk_div [get_pins div/Q] -source clk_main -divide_by 2
set_clock_groups -asynchronous -group clk_main  # 未包含clk_div,约束不生效!


正确约束

set_clock_groups -asynchronous -group {clk_main clk_div}  -group clk_ext

解释

  • 生成时钟需显式包含:主时钟的set_clock_groups不会自动继承到生成时钟 。
  • 工具行为:若未包含clk_div,工具仍会分析clk_mainclk_div的同步路径。

三、时钟列表设计规范与限制

 时钟列表完整性规则

  • 单组覆盖性:同一时钟不可分属多个互斥组,否则工具报错。

  • 示例错误

set_clock_groups -asynchronous -group clkA -group clkB
set_clock_groups -logically_exclusive -group clkA -group clkC  # clkA重复约束!
 

  • 解决方法:通过多组约束覆盖复杂关系:

set_clock_groups -asynchronous -group {clkA clkB} -group clkC
set_clock_groups -logically_exclusive -group clkD -group clkE
 

 组内时钟关系限制

  • 异步组内时钟同步性:同一异步组内的时钟默认同步,需避免混用不同源时钟。

# 错误:clk1与clk2异步,但被置于同一组
set_clock_groups -asynchronous -group {clk1 clk2} -group clk3
 

  • 正确设计:异步组间时钟必须跨组,组内时钟需同步:

set_clock_groups -asynchronous -group clk1 -group {clk2 clk3}  # clk2与clk3需同步
 

四、工具处理机制深度解析

1. 参数优先级与覆盖性

约束类型优先级覆盖范围典型应用
set_clock_groups全局禁用组间所有路径多时钟域交互、复杂时钟拓扑
set_false_path特定起点/终点的路径局部路径例外(如复位信号)
set_case_analysis基于逻辑条件的路径使能模式选择、测试信号固定

工具行为示例
若同时存在以下约束:

set_clock_groups -asynchronous -group clkA -group clkB
set_false_path -from clkA -to clkC

工具会优先执行set_clock_groups,忽略clkAclkB间路径,但clkAclkC的路径仍受set_false_path约束 。

2. 物理互斥与串扰分析

  • PrimeTime特殊处理
    使用-physically_exclusive时,工具跳过串扰(crosstalk)分析,而-logically_exclusive仅跳过时序分析 。
  • 示例
    set_clock_groups -physically_exclusive -group clk1 -group clk2  # 禁用时序和串扰分析
    set_clock_groups -logically_exclusive -group clk3 -group clk4  # 仅禁用时序分析

五、替代约束策略与选择建议

1. set_clock_groups vs set_false_path

维度set_clock_groupsset_false_path
约束效率一次性约束所有组间路径需手动指定起点/终点
维护成本时钟拓扑变化时仅需修改组定义路径增减需重新约束
适用场景多时钟交互、全局时钟域隔离局部路径例外(如跨模块信号)

选择建议

  • 当超过3个时钟需要两两互斥时,优先使用set_clock_groups
  • 若需保留部分跨时钟域路径(如异步FIFO),配合set_false_path局部禁用 。

2. 物理互斥与set_case_analysis对比

方法优势劣势
-physically_exclusive无需外部条件,自动全局禁用路径无法动态切换时钟组
set_case_analysis支持动态模式切换(如Test vs Normal)需额外约束信号状态,增加复杂度

典型选择

  • 静态配置场景(如烧录模式)用-physically_exclusive
  • 动态切换场景(如运行时模式选择)用set_case_analysis 。

六、总结与最佳实践

  1. 参数选择铁律

    • 异步时钟 → -asynchronous
    • MUX生成时钟 → -logically_exclusive
    • 物理隔离时钟 → -physically_exclusive
  2. 时钟列表设计

    • 确保组内时钟同步,组间时钟异步/互斥。
    • 显式包含所有生成时钟,避免遗漏。
  3. 工具兼容性

    • Gowin统一使用-Exclusive,Vivado区分逻辑/物理互斥 。
    • Intel Quartus中-exclusive等价于逻辑互斥 。
  4. 验证与调试

    • 使用report_clock_interaction检查组间路径是否禁用。
    • 配合report_cdc验证跨时钟域约束完整性 。

相关文章:

set_clock_groups

一、命令参数与工具处理逻辑 核心参数定义 参数定义工具行为工具兼容性-asynchronous完全异步时钟组,无任何相位或频率关系(如独立晶振、不同时钟树)工具完全禁用组间路径的时序分析,但需用户自行处理跨时钟域(CDC&a…...

QT创建项目(项目模板、构建系统、选择类、构建套件)

1. 项目模版 项目类型界面技术适用场景核心依赖模块开发语言Qt Widget ApplicationC Widgets传统桌面应用(复杂控件)Qt WidgetsCQt Console Application无 GUI命令行工具、服务Qt CoreCQt Quick ApplicationQML/Quick现代跨平台应用(动画/触…...

麒麟系统利用pycharm生成deb文件

在麒麟系统(Kylin OS)上使用 PyCharm 进行 Python 开发并生成 .deb 可安装软件包,可以按照以下步骤进行操作: 1. 准备工作 安装 PyCharm:确保已经在麒麟系统上安装了 PyCharm,可以使用官方提供的安装包进…...

超声重建,3D重建 超声三维重建,三维可视化平台 UR 3D Reconstruction

1. 超声波3D重建技术的实现方法与算法 技术概述 3D超声重建是一种基于2D超声图像生成3D体积数据的技术,广泛应用于医学影像领域。通过重建和可视化三维结构,3D超声能够显著提高诊断精度和效率,同时减少医生的脑力负担。本技术文档将详细阐述…...

Qt 信号与槽

目录 Qt信号和槽 connect函数 connect使用方法 自定义信号 与 自定义槽 Qt界面化工具自动生成的槽 自定义信号 带参数的信号和槽 信号与槽的断开 Qt信号和槽 谈到信号,设计3个要素 信号源:谁发出了信号 信号触发条件:哪个控件的哪个…...

卷积神经网络 - 卷积的变种、数学性质

本文我们来学习卷积的变种和相关的数学性质,为后面学习卷积神经网络做准备,有些概念可能不好理解,可以先了解其概念,然后慢慢理解、逐步深入。 在卷积的标准定义基础上,还可以引入卷积核的滑动步长和零填充来增加卷积…...

ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9

最近需要交叉编译mosquitto,遇到一些小问题记录一下。 1.众所周知使用它自带的Makefile编译的时候,只需要在编译前,指定它config.mk中的变量:CFLAGS头文件路径 和 LDFLAGS库文件路径就ok,例子如下: expor…...

从零开始学习机器人---如何高效学习机械原理

如何高效学习机械原理 1. 理解课程的核心概念2. 结合图形和模型学习3. 掌握公式和计算方法4. 理论与实践相结合5. 总结和复习6. 保持好奇心和探索精神 总结 机械原理是一门理论性和实践性都很强的课程,涉及到机械系统的运动、动力传递、机构设计等内容。快速学习机械…...

STM32 RS232通信开发全解析 | 零基础入门STM32第五十九步

主题内容教学目的/扩展视频RS232串口电路原理,跳线设置,驱动程序。与超级终端通信。了解电路原理和RS232协议。 师从洋桃电子,杜洋老师 📑文章目录 一、RS232通信系统架构二、RS232核心原理与硬件设计2.1 电气特性对比2.2 典型电路…...

文献分享: 对ColBERT段落多向量的剪枝——基于学习的方法

原论文 1. 导论 & \textbf{\&} &方法 1️⃣要干啥:在 ColBERT \text{ColBERT} ColBERT方法中,限制每个段落要保留的 Token \text{Token} Token的数量,或者说对段落 Token \text{Token} Token进行剪枝 2️⃣怎么干:注…...

(已解决)aws 上 部署Splunk 负载均衡unhealthy

在AWS 部署Splunk 服务,instance 是后端的EC2, 我把splunk 服务起好后,发现port : 8000 是listening: #netstat -an | grep 80 tcp 0 0 127.0.0.1:8065 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:8089 0.0.0.0:* …...

C# 异步编程

概述 同步:指必须等待前一个操作完成,后续操作才能继续。同步操作会阻塞线程直到任务完成。 异步:异步操作不会阻塞线程,允许程序在等待某个任务完成的同时,继续执行其他任务。 异步编程适用场景: 1、从…...

缓存之美:Guava Cache 相比于 Caffeine 差在哪里?

大家好,我是 方圆。本文将结合 Guava Cache 的源码来分析它的实现原理,并阐述它相比于 Caffeine Cache 在性能上的劣势。为了让大家对 Guava Cache 理解起来更容易,我们还是在开篇介绍它的原理: Guava Cache 通过分段(…...

Go string 字符串底层逻辑

在 Go 语言中,string 类型的底层结构是一个结构体,包含两个字段:一个指向字节数组的指针和该字节数组的长度。以下是其在 Go 源码中的大致定义:type stringStruct struct {str unsafe.Pointerlen int } str:这是一个指…...

高效集成聚水潭采购退货数据到MySQL的最佳实践

聚水潭数据集成到MySQL:采购退货单的高效对接方案 在企业的数据管理和分析过程中,数据的准确性和实时性至关重要。本文将分享一个具体的系统对接集成案例:如何通过轻易云数据集成平台,将聚水潭中的采购退货单数据高效地集成到MyS…...

STM32步进电机S型与T型加减速算法

目录 一、基本原理 二、常见类型 三、算法详解 四、应用场合 五、代码实现 1、main...

centos操作系统上传和下载百度网盘内容

探序基因 整理 进入百度网盘官网百度网盘 客户端下载 下载linux的rpm格式的安装包 在linux命令行中输入:rpm -ivh baidunetdisk_4.17.7_x86_64.rpm 出现报错: 错误:依赖检测失败: libXScrnSaver 被 baidunetdisk-4.17.7-1.x8…...

深入 Python 网络爬虫开发:从入门到实战

一、为什么需要爬虫? 在数据驱动的时代,网络爬虫是获取公开数据的重要工具。它可以帮助我们: 监控电商价格变化抓取学术文献构建数据分析样本自动化信息收集 二、基础环境搭建 1. 核心库安装 pip install requests beautifulsoup4 lxml …...

网络爬虫【简介】

我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲爬虫 一、网络爬虫的定义 网络爬虫(Web Crawler),又称为网络蜘蛛、网络机器人等,是一种按照一定规则自动抓取互联网信息的程序或脚本。它…...

Linux:Ubuntu server 24.02 上搭建 ollama + dify

一、安装Ubuntu 具体的安装过程可以参见此链接:链接:Ubuntu Server 20.04详细安装教程,这里主要记录一下过程中遇到的问题。 安装时subnet如何填写 在Ubuntu中subnet填写255.255.255.0是错误的,其格式为 xx.xx.xx.xx/yy &#…...

【生日蛋糕——DFS剪枝优化】

题目 分析 代码 #include <bits/stdc.h> using namespace std;const int N 24; const int inf 0x3f3f3f3f;int mins[N], minv[N]; int R[N], H[N]; int n, m, ans inf;void dfs(int u, int v, int s) {if(v minv[u] > n) return;if(s mins[u] > ans) return;…...

RabbitMq C++客户端的使用

1.RabbitMq介绍 RabbitMQ 是一款开源的消息队列中间件&#xff0c;基于 AMQP&#xff08;高级消息队列协议&#xff09;实现&#xff0c;支持多种编程语言和平台。以下是其核心特点和介绍&#xff1a; 核心特点 多语言支持 提供 Java、Python、C#、Go、JavaScript 等语言的客…...

入门基础项目-前端Vue_02

文章目录 1. 用户信息1.1 整体设计1.2 完整代码 User.vue1.2.1 数据加载1.2.2 表格 el-table1.2.2.1 多选1.2.2.2 自定义列的内容 Slot1.2.2.3 图片 el-image1.2.2.4 分页 el-pagination 1.2.3 编辑1.2.3.1 弹出框 el-dialog1.2.3.2 上传 el-upload 1.2.4 新增1.2.5 删除1.2.6 …...

C#中SerialPort 的使用

最近在学习C#的SerialPort &#xff0c;关于SerialPort 的使用&#xff0c;做如下总结&#xff1a; 1.可以通过函数System.IO.Ports.SerialPort.GetPortNames() 将获得系统所有的串口名称。C#代码如下&#xff1a; string[] sPorts SerialPort.GetPortNames(); foreach(stri…...

使用py-ffmpeg批量合成视频的脚本

我有一个小米摄像头&#xff0c;用它录出来的视频全部都是3s一段3s一段的。其中有几个小时的视频我需要保存&#xff0c;当初直接把摄像头的卡文件导出来重命名掉了&#xff0c;那时候没有注意&#xff0c;之后想剪辑/发送给别人的时候发现疯了&#xff1a; 1.剪辑的话&#x…...

mac安装navicat及使用

0.删除旧的 sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexF…...

织梦dedecmsV5.7提示信息提示框美化(带安装教程和效果展示)

一、效果展示 1、安装前效果 2、安装后效果 二、安装说明 1、安装测试版本&#xff1a;DedeCMS-V5.7.117-UTF8&#xff1b; 2、必须在修改代码之前请做好文件备份&#xff0c;以免误操无法恢复&#xff1b; 3、为了兼容其他版本&#xff0c;请在安装时&#xff0c;最好将替…...

【知识迁移的底层逻辑:从符号到语义的升维】

大语言模型&#xff08;LLMs&#xff09;能够通过有限语料库实现广泛知识迁移并回答多样化问题&#xff0c;其核心机制在于抽象模式学习、上下文推理能力及知识组合泛化&#xff0c;而非简单的数据记忆。以下是具体实现路径与技术原理&#xff1a; 一、知识迁移的底层逻辑&…...

Windows根据文件名批量在文件夹里查找文件并复制出来,用WPF实现的详细步骤

项目前言 在日常工作和生活中&#xff0c;我们常常会遇到需要从大量文件中根据文件名批量查找特定文件并复制到指定位置的情况。手动一个个查找和复制文件不仅效率低下&#xff0c;还容易出错。使用 Windows Presentation Foundation (WPF) 可以创建一个用户友好的图形界面应用…...

Certbot实现SSL免费证书自动续签(CentOS 7版 + Docker部署的nginx)

前置安装&#xff0c;可参考Certbot实现SSL免费证书自动续签&#xff08;CentOS 7 nginx/apache&#xff09; 如果是通过 Docker 运行 Nginx&#xff0c; certbot 无法直接检测到本地的 Nginx 配置。解决方案是 使用 standalone 模式 或 挂载 Webroot 方式获取 SSL 证书&…...

一周学会Flask3 Python Web开发-SQLAlchemy查询所有数据操作-班级模块

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们来新建一个的蓝图模块-班级模块&#xff0c;后面可以和学生模块&#xff0c;实现一对多的数据库操作。 blueprint下新建g…...

工程实践:如何使用SU17无人机来实现室内巡检任务

阿木实验室最近发布了科研开发者版本的无人机SU17&#xff0c;该无人机上集成了四目视觉&#xff0c;三维激光雷达&#xff0c;云台吊舱&#xff0c;高算力的机载计算机&#xff0c;是一个非常合适的平台用于室内外巡检场景。同时阿木实验室维护了多个和无人机相关的开源项目。…...

14.使用各种读写包操作 Excel 文件:辅助模块

一 各种读写包 这些是 pandas 在底层使用的各种读写包。无须安装 pandas&#xff0c;直接使用这些读写包就能够读写 Excel 工作簿。可以尽可能地使用 pandas 来解决这类问题&#xff0c;只在 pandas 没有提供你所需要的功能时才用到读写包。 表中没有 xlwings &#xff0c;因为…...

深入理解 Maven BOM 及其继承特性

深入理解 Maven BOM 及其继承特性 一、什么是 Maven BOM&#xff1f; Maven BOM&#xff08;Bill Of Materials&#xff0c;物料清单&#xff09;是一种特殊的 Maven 项目&#xff0c;用于集中管理依赖项的版本信息。BOM 项目本身并不包含实际的代码或资源&#xff0c;而仅仅…...

责任链模式如何减少模块之间的耦合

责任链模式如何减少模块之间的耦合 在复杂的软件系统中&#xff0c;模块之间的耦合是一个常见的问题。高耦合的代码不仅增加了维护成本&#xff0c;还会导致系统的扩展性和灵活性受限。当我们需要为不同的请求设计灵活的处理逻辑时&#xff0c;传统的硬编码方式会将请求的发送…...

Java面试:集合框架体系

一、ArrayList 1.数组&#xff08;Array&#xff09; 是一种用连续的内存空间存储相同数据类型数据的线性数据结构 数组如何获取其他元素的地址值&#xff1f; 寻址公式&#xff1a;a[i] baseAddress i * dataTypeSize baseAddress&#xff1a;数组的首地址dataTypeSize&am…...

【八股文】ArrayList和LinkedList的区别

先讲讲两者是如何实现的 ArrayList public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, java.io.Serializable {transient Object[] elementData; private int size; } 通过源码可以看出&#xff0c;ArrayLis…...

sentinel限流算法

限流算法&#xff1a;固定窗口算法、滑动时间窗口、令牌桶和漏桶这四种常见限流算法的原理&#xff1a; 限流算法原理 固定窗口&#xff1a; 固定窗口算法将时间划分为固定大小的窗口&#xff0c;并在每个窗口内限制请求的数量。在每个窗口开始时&#xff0c;计数器重置&#…...

Spring生态下的中台架构设计:如何构建可扩展业务系统?

一、中台战略的架构觉醒 在数字化转型的浪潮中,企业面临的核心矛盾日益凸显:前端业务的快速迭代需求与后端系统刚性架构之间的矛盾。中台架构的提出,本质上是对传统单体架构和过度微服务化的辩证扬弃。Spring生态以其模块化设计理念,恰好为中台建设提供了绝佳的技术土壤。…...

Project回调函数qsort②进阶应用

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h>//库函数strcmp头文件 //使用qsort排序结构体 struct Stu { char name[20]; int age; }; //按照年龄排序 int cmp_stu_by_age(const void* e1,const void* e2) { return ((struc…...

【推荐项目】052-用水监控管理系统

052-用水监控管理系统 介绍 用水监控管理系统 springboot java vuejs jdk1.8 当然&#xff0c;以下是一个简洁的用水监控管理系统的功能模块划分&#xff0c;基于Spring Boot&#xff08;JDK 1.8&#xff09;后端和Vue.js前端&#xff1a; 用水监控管理系统功能模块 后端&…...

Hive SQL 精进系列:PERCENTILE_APPROX 搞定分位数

目录 一、引言二、percentile_approx 函数基础2.1 基本语法参数解释返回值简单示例 三、应用场景3.1 数据分析与报告3.2 数据清洗与异常值检测3.3 性能监控与优化 四、使用注意事项4.1 数据类型要求4.2 精度与性能平衡4.3 空值处理 五、总结 一、引言 百分位数作为一种常用的统…...

使用Hbuilder发布小程序显示发布失败?

接受了一个新uniapp项目 但是在Hbuilder中发行报错 小程序发行失败 试了几次还是不行 写代码的人也走了&#xff0c;头疼。 不用Hbuilder小程序的主包体积又太大哎 开发工具无法上传~ 后来想看一下 这个发布失败到底有没有生成打包好的文件 如果生成了可以试一下 直接导入到微信…...

甲骨文找回二次验证的方法(超简单)

因为更换手机丢失了二次验证。 然后给客服沟通&#xff0c;获得了找到二次验证的办法&#xff0c;希望对你有用。 1、登录到账号登陆界面&#xff0c;查看地址栏当中自己的IDCE地址&#xff08;yourIDCS_Stripe_here&#xff09;部分&#xff0c;并复制。 https://idcs-yourID…...

Tcp网络通信的基本流程梳理

先来一张经典的流程图 接下介绍一下大概流程&#xff0c;各个函数的参数大家自己去了解加深一下印象 服务端流程 1.创建套接字&#xff1a;使用 socket 函数创建一个套接字&#xff0c;这个套接字后续会被用于监听客户端的连接请求。 需要注意的是&#xff0c;服务端一般有俩…...

C++相关基础概念之入门讲解(上)

1. 命名空间 C中的命名空间&#xff08;namespace&#xff09;是用来避免命名冲突问题的一种机制。通过将类、函数、变量等封装在命名空间中&#xff0c;可以避免不同部分的代码中出现相同名称的冲突。在C中&#xff0c;可以使用namespace关键字来定义命名空间。 然后我们在调…...

Redis能否替代MySQL作为主数据库?深入解析两者的持久化差异与适用边界——基于AOF持久化与关系型数据库的对比

一、Redis的持久化机制与可靠性分析 ​AOF持久化原理与策略 Redis的AOF&#xff08;Append Only File&#xff09;通过记录所有写操作命令实现持久化&#xff0c;支持三种策略&#xff1a; ​**always模式**&#xff1a;每条命令执行后立即同步到磁盘&#xff0c;理论上数据丢失…...

Hive函数大全:从核心内置函数到自定义UDF实战指南(附详细案例与总结)

目录 背景‌一、Hive函数分类与核心函数表‌1. 内置函数分类‌2. 用户自定义函数(UDF)分类二、常用函数详解与实战案例‌1. 数学函数‌2. 字符串函数‌3. 窗口函数‌4. 自定义UDF实战‌三、总结与优化建议‌1. 核心总结2. 性能优化建议‌3. 常问问题背景‌ Hive作为Hadoop生…...

如何修改 Ubuntu 软件源(镜像源)

如何修改 Ubuntu 软件源&#xff08;镜像源&#xff09; 前言 在使用 Ubuntu 时&#xff0c;默认的软件源可能速度较慢&#xff0c;影响软件安装和系统更新的效率。我们可以通过修改 sources.list 文件或使用图形界面更换更快的镜像源&#xff0c;提升软件包管理的速度。 本…...

在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢

文章目录 引言1. 什么是DeepSeek&#xff1f;2. 准备工作2.1 注册DeepSeek账号 3.实战演示3.1 application增加DS配置3.2 编写service3.3 编写controller3.4 编写前端界面chat.html3.5 测试 总结 引言 在当今快速发展的数据驱动时代&#xff0c;企业越来越重视数据的价值。为了…...