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

C++中const与constexpr的区别

在C++中,`const`和`constexpr`都用于定义常量,但它们的用途和行为有显著区别:

### 1. **初始化时机**
- **`const`**:表示变量是只读的,但其值可以在**编译时或运行时**初始化。
  ```cpp
  const int a = 5;              // 编译时初始化
  const int b = some_function(); // 运行时初始化(合法)
  ```

- **`constexpr`**:变量必须在**编译时**初始化,且初始化表达式必须是常量。
  ```cpp
  constexpr int c = 5;          // 合法
  constexpr int d = some_function(); // 仅当 some_function() 是 constexpr 函数时合法
  ```

---

### 2. **应用场景**
- **`const`**:用于声明运行时常量,确保值不可修改。
  ```cpp
  int x = 10;
  const int y = x;  // 合法,但 y 的值在运行时确定
  ```

- **`constexpr`**:用于需要编译时常量的场景(如数组大小、模板参数)。
  ```cpp
  constexpr int size = 10;
  int arr[size];  // 合法,size 是编译时常量

  int x = 10;
  constexpr int invalid_size = x; // 错误:x 不是常量表达式
  ```

---

### 3. **函数与对象**
- **`constexpr` 函数**:可以在编译时求值(若参数是常量)。
  ```cpp
  constexpr int square(int x) { return x * x; }
  constexpr int val = square(5); // 编译时计算(val = 25)
  int y = square(10);           // 运行时计算
  ```

- **`const` 成员函数**:表示函数不会修改对象状态,但调用时机不限定于编译时。
  ```cpp
  class MyClass {
  public:
      int getValue() const { return value; } // 运行时调用
  private:
      int value;
  };
  ```

- **`constexpr` 对象**:允许在编译时构造对象。
  ```cpp
  class Point {
  public:
      constexpr Point(int x, int y) : x(x), y(y) {}
      constexpr int getX() const { return x; }
  private:
      int x, y;
  };

  constexpr Point p(3, 4);          // 编译时构造
  constexpr int x = p.getX();       // x = 3(编译时获取值)
  ```

---

### 4. **指针与引用**
- **`const` 指针**:指针本身或指向的值不可修改。
  ```cpp
  const int* ptr1 = &a;  // 指向的值不可变
  int* const ptr2 = &b;  // 指针本身不可变
  ```

- **`constexpr` 指针**:必须指向编译时确定的地址(如全局变量或静态变量)。
  ```cpp
  constexpr int* ptr3 = nullptr; // 合法
  int global = 42;
  constexpr int* ptr4 = &global; // 合法(全局变量地址在编译时确定)
  ```

---

### 总结
| **特性**               | `const`                          | `constexpr`                     |
|------------------------|----------------------------------|---------------------------------|
| **初始化时机**          | 编译时或运行时                   | 必须编译时                      |
| **用途**               | 运行时常量                       | 编译时常量、模板元编程          |
| **函数修饰**           | 表示函数不修改对象状态           | 函数可在编译时求值              |
| **对象构造**           | 运行时构造                       | 允许编译时构造(需 constexpr 构造函数) |
| **指针/引用**          | 可指向动态内存                   | 必须指向编译时确定的地址        |

- **优先使用 `constexpr`**:当需要编译时常量或优化性能时(如数组大小、模板参数)。
- **使用 `const`**:当仅需运行时常量(如函数参数、返回值保护)。

在编程中,「编译时」和「运行时」是两个关键阶段,它们的区别直接影响了代码的行为和结果。以下是它们的核心区别:

---

### **1. 时间与操作**
- **编译时 (Compile Time)**  
  - **时间点**:代码被编译器处理(生成可执行文件前)。  
  - **操作内容**:  
    - 语法检查(如括号是否匹配、变量是否声明)。  
    - 类型检查(如 `int x = "hello"` 会报错)。  
    - 优化(如删除未使用的变量、内联函数)。  
    - 生成机器码或中间代码。  
  - **示例**:  
    ```cpp
    int x = 5;
    std::string s = x; // 编译错误:类型不匹配
    ```

- **运行时 (Runtime)**  
  - **时间点**:程序实际执行时(用户运行可执行文件后)。  
  - **操作内容**:  
    - 内存分配(如 `new` 和 `malloc`)。  
    - 动态逻辑(如用户输入、文件读写)。  
    - 异常处理(如除以零、空指针访问)。  
  - **示例**:  
    ```cpp
    int x = 0;
    std::cin >> x;      // 运行时输入
    int y = 10 / x;     // 运行时可能崩溃(如果 x=0)
    ```

---

### **2. 输入依赖**
- **编译时**:  
  - 所有数据必须是已知的、固定的(如常量表达式)。  
  - 示例:数组大小、模板参数、`constexpr` 值。  
  ```cpp
  constexpr int size = 10;
  int arr[size]; // 合法:size 是编译时常量
  ```

- **运行时**:  
  - 数据可以是动态的(如用户输入、随机数)。  
  ```cpp
  int size;
  std::cin >> size;   // 运行时输入
  int* arr = new int[size]; // 动态内存分配(运行时确定大小)
  ```

---

### **3. 错误类型**
- **编译时错误**:  
  - 由编译器发现(如语法错误、类型不匹配)。  
  - 必须修复后才能生成可执行文件。  
  ```cpp
  int x = "hello"; // 编译错误:类型不匹配
  ```

- **运行时错误**:  
  - 程序执行时发生的错误(如内存泄漏、空指针访问)。  
  - 可能通过测试或异常处理捕获。  
  ```cpp
  int* ptr = nullptr;
  *ptr = 5; // 运行时崩溃(空指针解引用)
  ```

---

### **4. 性能影响**
- **编译时计算**:  
  - 由编译器完成(如 `constexpr` 函数),减少运行时开销。  
  ```cpp
  constexpr int factorial(int n) { return (n <= 1) ? 1 : n * factorial(n-1); }
  constexpr int result = factorial(5); // 编译时计算(result = 120)
  ```

- **运行时计算**:  
  - 在程序执行时完成,可能占用 CPU 和内存资源。  
  ```cpp
  int x = 5;
  int result = 1;
  for (int i = 1; i <= x; i++) { result *= i; } // 运行时计算
  ```

---

### **5. 实际应用场景**
- **编译时需要确定的场景**:  
  - 数组大小、模板参数、`static_assert` 断言。  
  ```cpp
  template <int N>
  struct Array { int data[N]; }; // N 必须是编译时常量
  ```

- **运行时需要处理的场景**:  
  - 用户交互(输入/输出)、网络请求、动态内存分配。  
  ```cpp
  std::string name;
  std::cout << "Enter your name: ";
  std::cin >> name; // 运行时输入
  ```

---

### **总结**
| **特性**         | **编译时**                          | **运行时**                          |
|------------------|-------------------------------------|-------------------------------------|
| **时间点**       | 代码编译阶段                        | 程序执行阶段                        |
| **输入依赖**     | 必须已知(常量)                    | 可以是动态的(变量或用户输入)      |
| **错误类型**     | 语法错误、类型错误                  | 崩溃、内存泄漏、逻辑错误            |
| **性能优化**     | 通过编译时计算减少运行时开销        | 依赖算法和硬件性能                  |
| **典型操作**     | 静态类型检查、模板实例化            | 内存分配、异常处理、I/O 操作        |

---

### **为什么程序员需要关注两者的区别?**
1. **优化性能**:将能提前计算的任务放在编译时(如 `constexpr`)。  
2. **避免错误**:通过编译时检查(如类型安全)减少运行时崩溃风险。  
3. **灵活设计**:区分静态(编译时)和动态(运行时)逻辑,提高代码可维护性。

相关文章:

C++中const与constexpr的区别

在C中&#xff0c;const和constexpr都用于定义常量&#xff0c;但它们的用途和行为有显著区别&#xff1a; ### 1. **初始化时机** - **const**&#xff1a;表示变量是只读的&#xff0c;但其值可以在**编译时或运行时**初始化。 cpp const int a 5; // 编译…...

长亭2月公开赛Web-ssrfme

环境部署 拉取环境报错&#xff1a; 可以尝试拉取一下ubuntu:16.04&#xff0c;看是否能拉取成功 将wersion&#xff1a;"3"删掉 我拉去成功之后&#xff0c;再去拉取环境&#xff0c;成功&#xff01; 访问环境 测试ssrf 源码 <?php highlight_file(__file__…...

AI日报 - 2025年4月18日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI探讨 | 专家激辩AGI定义与实现时间点&#xff0c;Causal AI被视为关键一步&#xff0c;o3模型预测2027年实现引关注。 Causal AI强调因果关系而非模式&#xff1b;专家清单推荐不同模型适用场景&#xff1b;AGI定义及何时…...

Spring IoC 详解

在 Spring IoC& DI 详解 中对 IoC已经有了介绍&#xff0c;下面对 IoC 进行详细介绍。 IoC&#xff0c;即控制反转&#xff0c;在之前我们编写程序的时候&#xff0c;我们都是自己 new 出来一个对象&#xff0c;然后自己去管理这个对象&#xff0c;但是这有时候有些麻烦&a…...

oracle查询当前用户所有字段和表

在 Oracle 数据库中&#xff0c;可以通过查询数据字典视图来获取某个表的字段&#xff08;列&#xff09;信息。以下是常用的查询方法&#xff1a; 查询当前用户下的表字段 如果您想查看当前用户下某个表的字段信息&#xff0c;可以查询 USER_TAB_COLUMNS 视图&#xff1a; SE…...

ACL(访问控制列表)

ACL(访问控制列表&#xff09; 1、基础内容 访问控制列表ACL(Access ControlList)是由一条或多条规则组成的集合。所谓规则&#xff0c;是指描述报文匹配条件的判断语句&#xff0c;这些条件可以是报文的源地址、目的地址、端口号等。通过一系列规则来匹配报文&#xff0c;如…...

C语言数据结构---二叉树---堆的应用

1.建堆&#xff08;向上调整&#xff09; 1.1大堆 #include<stdio.h> void swap(int *p1,int *p2) {int temp *p1;*p1 *p2;*p2 temp; } void Ajustup(int *a,int child)//向上调整 {int parent (child - 1) / 2;while (child > 0){if (a[child] > a[parent]…...

在Linux下安装Gitlab

在Cenos7下安装GitLab 在ssh下安装 官方安装文档:https://gitlab.cn/install/?versionce 1. 使用阿里YUM 镜像云 下载 https://mirrors.aliyun.com/repo/Centos-7.repo替换 /etc/yum.repos.d/CentOS-Base.repo在目录/etc/yum.repos.d/下执行如下命令&#xff1a; curl …...

【算法】快速排序、归并排序(非递归版)

目录 一、快速排序&#xff08;非递归&#xff09; 1.原理 2.实现 2.1 stack 2.2 partition(array,left,right) 2.3 pivot - 1 > left 二、归并排序&#xff08;非递归&#xff09; 1.原理 2.实现 2.1 gap 2.1.1 i 2*gap 2.1.2 gap * 2 2.1.3 gap < array.…...

如何自学机器学习?零基础到实战的完整路径

机器学习作为人工智能的核心领域&#xff0c;已成为技术人必备的硬实力。本文为自学者梳理出一条从零基础到项目落地的系统学习路线&#xff0c;涵盖知识框架、工具链与实战技巧。 一、构建三大基础模块&#xff08;1-2个月&#xff09; 数学基石&#xff1a;线性代数重点掌握…...

PHP开发环境搭建(Hbuider+phpstudy)

目录 1.Hbuider下载 Hbuider的网址 2.Hbuilder的安装 1-首先找到刚刚下载的安装包 2-然后进行解压 3-进入解压后的文件夹HBuilderX&#xff0c;找到HBuilderX这一项&#xff0c;双击打开 4-选择你喜欢的风格,任意选择一个就可以了 5-选择你选快捷键的方案 6-点击开始体验就可了…...

【4.1.-4.20学习周报】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract一、方法介绍1.1HippoRAG 1.2HippoRAG2二、实验2.1实验概况2.2实验代码2.3实验结果 总结 摘要 本博客介绍了论文《From RAG to Memory: Non-Parametri…...

vim笔记

vim三种模式切换 命令常用 复制粘贴...

【JAVA】基础知识“抽象类”详解,从入门到理解~

目录 1. 抽象类 1.1 什么是抽象类❓ 1.2 为什么需要抽象类❓ 1.3 抽象类语法 1.4 抽象类特征 ① 抽象类是被abstract修饰的 ② 被abstract修饰的方法称为抽象方法&#xff0c;这个方法可以没有具体的实现 ③ 当一个类中含有抽象方法的时候&#xff0c;该类必须使用abst…...

docker 启动mysql9认证失败

docker compose 启动mysql9认证失败 随着mysql更新到了9版本&#xff0c;在docker中相较于8减少了一些体积&#xff0c;很吸引人尝试&#xff0c; 但是在使用原本的配置文件拉起mysql&#xff0c;连接时却提示权限认证失败 1045 - Access denied for user root172.18.0.1 (…...

【Axure绘制原型】图片切割、交互动效、热区、动态面板、元件显示隐藏、表单元件、表格、内联框架

切割 功能&#xff1a;将图片切成多部分。 通过移动鼠标可以调整两条虚线的位置&#xff0c;点击。虚线相当于切割刀&#xff0c;被虚线分离的部分将变成单独的图 切割后的图片&#xff1a; 交互 交互动效的构成&#xff1a; 目标&#xff1a;谁触发交互&#xff08;元…...

DeepSeek智能时空数据分析(一):筛选特定空间范围内的POI数据

时空数据分析很有用&#xff0c;但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要&#xff0c;尤其在数据驱动决策的当下&#xff0c;其价值正随大模型时代的到来进一步凸显。然而&#xff0c;三大挑战仍制约其发展&#xff1a;技术门槛高&#xff0c;需…...

使用mybatisPlus自带的分页方法+xml实现数据分页

&#xff1a;因为需要实现多表关联分页&#xff0c;原本想的是直接使用selectpagehelper&#xff0c;但是pagehelper只对xml文件生效&#xff1b;后面发现可以直接使用mybatisplus自带的分页&#xff0c;不依靠pagehelper实现多表关联分页&#xff1b; 实现类&#xff1a;关键…...

第六节:React Hooks进阶篇-自定义Hook设计

实战题&#xff1a;实现一个useWindowSize或useFetch 自定义 Hook 设计实战&#xff1a;useWindowSize 与 useFetch 实现详解 一、useWindowSize&#xff1a;实时监听窗口尺寸 1. 基础实现&#xff08;TypeScript 版&#xff09; import { useState, useEffect } from react…...

Mybatis--XML映射文件配置和动态SQL

XML文件配置 MyBatis中文网 动态SQL...

【Java学习笔记】位运算

位运算 一、原码&#xff0c;反码&#xff0c;补码 (1) 二进制的最高位是符号位&#xff1a;0 表示正数&#xff0c;1 表示负数&#xff08;怎么记&#xff1f; 1旋转一下变成-&#xff09; (2) 正数的原码、反码、补码都一样&#xff08;三码合一&#xff09; (3) 负数的反码…...

循环队列的实现

循环队列 实现一个循环队列&#xff1a;C语言代码解析与设计思路1. 循环队列的基本概念2. 数据结构设计3. 初始化队列4. 入队操作5. 出队操作6. 获取队列头部和尾部元素7. 判断队列是否为空或满8. 释放队列资源9. 总结 实现一个循环队列&#xff1a;C语言代码解析与设计思路 在…...

案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.2 技术决策民主化-5.2.1案例:架构设计评审的“七人决策制“

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 案例驱动的 IT 团队管理&#xff1a;创新与突破之路 - 第五章 创新管理&#xff1a;从机制设计到文化养成5.2 技术决策民主化5.2.1 案例&#xff1a;架构设计评审的“七人决…...

数据库—MySQL游标详解笔记

一、游标是什么&#xff1f; 游标&#xff08;Cursor&#xff09; 是数据库中用于逐行遍历查询结果集的数据库对象。它允许开发者像操作指针一样逐行读取数据&#xff0c;适用于需要对查询结果逐行处理的复杂业务逻辑。 核心特点&#xff1a; 逐行操作&#xff1a;类似编程中…...

Genspark:重新定义AI搜索与代理的全能型工具

在当今快速发展的AI技术领域&#xff0c;搜索工具正在经历前所未有的变革。Genspark&#xff0c;这家由前百度高管景鲲和朱凯华创立的AI公司&#xff0c;为我们带来了全新的AI代理引擎体验。作为一位专注于AI工具分享的博主&#xff0c;今天我将为大家详细介绍这款强大的工具&a…...

深入理解设计模式之模板方法模式 1d87ab8b42e98069b6c2c5a3d2710f9a

深入理解设计模式之模板方法模式 深入理解设计模式之模板方法模式 在软件开发的漫长征程中&#xff0c;我们常常会遇到各种复杂的业务逻辑&#xff0c;其中部分逻辑具有相似的流程框架&#xff0c;但在具体细节上又有所不同。这种情况下&#xff0c;模板方法模式就如同一位得…...

Cursor + MCP,实现自然语言操作 GitLab 仓库

本分分享如何使用 cursor mcp 来操作极狐GitLab 仓库&#xff0c;体验用自然语言在不接触极狐GitLab 的情况下来完成一些仓库操作。 极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitL…...

界面开发框架DevExpress XAF实践:如何在Blazor项目中集成.NET Aspire?(一)

DevExpress XAF是一款强大的现代应用程序框架&#xff0c;允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计&#xff0c;开发人员可以选择内建模块&#xff0c;也可以自行创建&#xff0c;从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 .NET As…...

【C++】特化妙技与分文件编写 “雷区”

目录 目录非类型模板参数非类型模板参数vs宏代换 模板的特化函数模板的特化函数模板特化的坑 类模板特化全特化偏特化 模板分离编译原理解决方案 end 目录 非类型模板参数 模板参数可分为类型形参和非类型形参。 类型形参&#xff1a; 出现在模板参数列表中&#xff0c;跟在…...

qt+mingw64+cmake+libqrencode项目编译和搭建成功记录

最近要使用高拍仪拍照获取照片&#xff0c;然后识别照片中的二维码数据、使用QZxing只能识别出一个条码、另外一个条码准备测试用其他的开源项目&#xff08;如libqrencode-4.1.1&#xff09;来进行测试&#xff0c;故进行本文的项目环境搭建测试&#xff0c;最后成功。 本机开…...

观察者设计模式详解:解耦通知机制的利器

在面向对象设计中&#xff0c;设计模式为我们提供了通用的解决方案&#xff0c;以应对常见的开发问题。观察者设计模式是其中非常经典且实用的一种模式&#xff0c;广泛应用于GUI系统、事件处理、消息推送等场景。今天&#xff0c;我们就深入探讨观察者模式的概念、结构和特点&…...

Vim使用完全指南:从基础到高效编辑

Vim使用完全指南&#xff1a;从基础到高效编辑 一、Vim简介与基本概念 Vim&#xff08;Vi IMproved&#xff09;是从vi发展出来的一个功能强大的文本编辑器&#xff0c;以其高效性和灵活性著称&#xff0c;特别适合程序开发和系统管理任务。与常规文本编辑器不同&#xff0c;…...

C语言——数组

在C语言中&#xff0c;数组是一组相同类型元素的集合&#xff0c;并且每个数据都有自己对应的一个序号&#xff0c;我们称之为数组下标或者索引。接下来我们就来看看数组是如何定义的吧&#xff01; 目录 1.一维数组 1.1 定义与初始化 1.2 一维数组的使用 1.3 一维数组在内…...

电商|基于java+vue的农业电商系统(源码+数据库+文档)

农业电商系统 目录 基于java的农业电商系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 前台&#xff1a; 后台&#xff1a; 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️…...

ServletContextAttributeListener 的用法笔记250417

ServletContextAttributeListener 的用法笔记250417 以下是关于 ServletContextAttributeListener 的用法详解&#xff0c;涵盖核心方法、实现场景、注意事项及最佳实践&#xff0c;帮助您有效监听应用级别属性&#xff08;ServletContext&#xff09;的变化&#xff1a; 1. 核…...

iptables 防火墙

目录 熟悉Linux防火墙的表&#xff0c;链结构 理解数据包匹配的基本流程 学会编写iptables规则 前言 在当今信息化时代,网络安全已成为企业和个人不可忽视的重要议题。随着网络攻击手段的不断升级,构建一个坚固的网络安全防线显得尤为迫切。在Linux系统中,iptables作为一款…...

【厦门大学】DeepSeek大模型及其企业应用实践

DeepSeek大模型及其企业应用实践 前言1. 大模型&#xff1a;人工智能的前沿1.1 大模型的概念1.2 大模型的发展历程1.3 人工智能与大模型的关系1.4 大模型的分类 2. 大模型产品2.1 国外的大模型产品2.2 国内的大模型产品2.3 主流大模型“幻觉”评测 3. 大模型的行业应用3.1 自然…...

解锁智能制造:PLC远程下载如何让设备运维效率提升10倍?

一、2025年远程运维的三大变革驱动力 政策强制&#xff1a; 欧盟CE新规要求&#xff1a;2025年起工业设备必须具备远程审计接口 中国等保2.0&#xff1a;工业控制系统远程访问需达到三级防护 技术成熟&#xff1a; 5G专网边缘计算实现ms级响应 算法自动诊断PLC程序异常&#x…...

卷积神经网络CNN(李宏毅)

目录 怎么把一张影响当成一个模型输入&#xff1f; 同样的 pattern出现在图片不同的位置。 第三个问题&#xff1a;Pooling&#xff1a; 阿尔法Go是怎么下围棋的&#xff1a; CNN不能处理的问题 CNN专门用在影像辨识方面 怎么把一张影响当成一个模型输入&#xff1f; 一张…...

URL / GET请求 中文UTF-8编码JS转化

以长颈鹿为例 decodeURIComponent 将编码转为中文 encodeURIComponent 会对整个参数字符串转义&#xff08;包括 :// 等符号&#xff09;。 encodeURI 仅转义非合法 URL 字符&#xff08;不转义 :/?& 等保留字符&#xff09;。 decodeURIComponent("%E9%95%BF%E9…...

Flink 内部通信底层原理

Flink 集群内部节点之间的通信是用 Akka 实现,比如 JobManager 和 TaskManager 之间的通信。而 operator 之间的数据传输是用 Netty 实现。 RPC 框架是 Flink 任务运行的基础,Flink 整个 RPC 框架基于 Akka 实现。 一、相关概念 RPC(Remote Procedure Call) 概念 定义:…...

async-profiler火焰图找出耗CPU方法

事情起于开发应用对依赖的三方包&#xff08;apache等等&#xff09;进行了升级后&#xff08;主要是升级spring&#xff09;&#xff0c;CPU的使用率较原来大幅提升&#xff0c;几个应用提升50%-100%。 查找半天&#xff0c;对比每次版本的cpu火焰图&#xff0c;看不出有什么…...

深入理解Qt状态机的应用

深入理解Qt状态机的应用 Chapter1 深入理解Qt状态机的应用&#xff08;一&#xff09;什么是有限状态机&#xff1f;状态机的组成应用示例交通信号控制灯系统简单在线购物流程系统 Qt状态机框架Qt状态机框架组成常用接口说明 应用示例源码 Chapter2 深入理解Qt状态机的应用&…...

Python入门安装和语法基础

1.Python简介 Python是解释型语言, ython就为我们提供了非常完善的基础代码库&#xff0c;覆盖了网络、文件、GUI、数据库、文本等大量内容&#xff0c;被形象地称作“内置电池&#xff08;batteries included&#xff09;”。用Python开发&#xff0c;许多功能不必从零编写&am…...

Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(四)

一、无覆盖和放弃 在基于磁贴的延迟呈现 (TBDR) 体系结构上呈现内容&#xff1a; Direct3D 11.1 中的呈现目标现在可以使用一组新的资源 API 来支持放弃行为。 开发人员必须了解此功能&#xff0c;并调用额外的 Discard () 方法&#xff0c;以在 TBDR 体系结构 (更高效地运行…...

如何分析服务器日志以追踪黑客攻击行为

分析服务器日志是追踪黑客攻击行为的关键手段。通过系统性地检查日志文件&#xff0c;可以发现异常访问模式、入侵痕迹和后门活动。以下是详细的日志分析方法&#xff1a; 一、重点日志文件定位 Web服务器日志 Nginx: /var/log/nginx/access.log&#xff08;访问日志&#xff0…...

React 对state进行保留和重置

对 state 进行保留和重置 各个组件的 state 是各自独立的。根据组件在 UI 树中的位置&#xff0c;React 可以跟踪哪些 state 属于哪个组件。你可以控制在重新渲染过程中何时对 state 进行保留和重置。 开发环境&#xff1a;Reacttsantd 学习内容 React 何时选择保留或重置状态…...

EmbeddingBag介绍与案例

我们可以用一个具体的例子来说明 EmbeddingBagCollection 的核心作用和它如何处理用户特征。假设我们的用户特征包括 “item_id” 和 “cate_id” 两个字段&#xff0c;每个字段都有各自的离散取值&#xff0c;也就是一些整数 ID。为了让模型能处理这些离散数据&#xff0c;我们…...

css button 点击效果

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>button点击效果</title><style>#container {display: flex;align-items: center;justify-content: center;}.pushable {position: relat…...

Missashe考研日记-day22

Missashe考研日记-day22 1 专业课408 学习时间&#xff1a;3h学习内容&#xff1a; 先把昨天关于进程调度的课后习题做了&#xff0c;然后花了挺长时间预习OS的最最最最重要的一部分——同步与互斥问题&#xff0c;这部分大二上课的时候就懵懵懂懂的&#xff0c;得认真再领悟…...