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

C++与C的基本不同

文章目录

      • 变量定义规则
        • 1. 基本语法
        • 2. 初始化
        • 3. 作用域
        • 4. 存储类别
      • 函数定义规则
        • 1. 基本语法
        • 2. 函数声明和定义
        • 3. 默认参数
        • 4. 内联函数
    • 解析
      • 输出流
      • void BluetoothA2DPSink::start(const char* name)
      • class BluetoothA2DPSink : public BluetoothA2DPCommon

C++是在C语言基础上发展而来的,它保留了C语言的大部分特性,同时增加了许多新特性。下面详细介绍C++定义函数与变量的基本规则,并与C语言进行对比。

变量定义规则

1. 基本语法

C和C++在变量定义的基本语法上是相同的,都是类型 变量名; 。例如:

// C语言示例
int num;
float price;
// C++示例
int num;
float price;
2. 初始化
  • C语言:可以在定义变量时进行初始化,也可以后续赋值。例如:
// 定义时初始化
int a = 10;
// 后续赋值
int b;
b = 20;
  • C++:除了上述方式,还支持使用构造函数语法进行初始化,同时引入了列表初始化(C++11及以后)。例如:
// 传统初始化
int a = 10;
// 构造函数语法初始化
int b(20);
// 列表初始化
int c{30};
3. 作用域
  • C语言:变量的作用域主要分为局部作用域和全局作用域。局部变量在函数内部定义,只能在函数内部使用;全局变量在函数外部定义,可以在整个程序中使用。
#include <stdio.h>// 全局变量
int global_var = 100;void test() {// 局部变量int local_var = 200;printf("Global var: %d, Local var: %d\n", global_var, local_var);
}int main() {test();return 0;
}
  • C++:除了局部和全局作用域,还引入了命名空间作用域和类作用域。命名空间可以避免全局命名冲突,类作用域用于类的成员变量。
#include <iostream>// 命名空间
namespace MyNamespace {int var = 10;
}class MyClass {
public:int member_var = 20;
};int main() {// 使用命名空间中的变量std::cout << "Namespace var: " << MyNamespace::var << std::endl;// 使用类的成员变量MyClass obj;std::cout << "Class member var: " << obj.member_var << std::endl;return 0;
}
4. 存储类别
  • C语言:有四种存储类别,分别是autostaticregisterextern
#include <stdio.h>// extern声明外部变量
extern int external_var;void test() {// auto变量auto int local_auto = 10;// static变量static int local_static = 20;printf("Local auto: %d, Local static: %d\n", local_auto, local_static);local_static++;
}int main() {test();test();return 0;
}// 外部变量定义
int external_var = 30;
  • C++:保留了这些存储类别,同时增加了一些新的特性,如constexpr(C++11及以后)用于定义编译时常量。
#include <iostream>// constexpr常量
constexpr int constant_value = 40;int main() {std::cout << "Constant value: " << constant_value << std::endl;return 0;
}

函数定义规则

1. 基本语法

C和C++在函数定义的基本语法上也是相同的,都是返回类型 函数名(参数列表) { 函数体 } 。例如:

// C语言示例
int add(int a, int b) {return a + b;
}
// C++示例
int add(int a, int b) {return a + b;
}
2. 函数声明和定义
  • C语言:函数可以先声明后定义,也可以直接定义。声明时需要指定函数的返回类型和参数列表。
#include <stdio.h>// 函数声明
int subtract(int a, int b);int main() {int result = subtract(10, 5);printf("Result: %d\n", result);return 0;
}// 函数定义
int subtract(int a, int b) {return a - b;
}
  • C++:同样支持函数声明和定义的分离,并且可以使用函数重载(C语言不支持)。函数重载允许定义多个同名函数,但参数列表不同。
#include <iostream>// 函数声明
int add(int a, int b);
double add(double a, double b);int main() {int int_result = add(1, 2);double double_result = add(1.1, 2.2);std::cout << "Int result: " << int_result << std::endl;std::cout << "Double result: " << double_result << std::endl;return 0;
}// 函数定义
int add(int a, int b) {return a + b;
}double add(double a, double b) {return a + b;
}
3. 默认参数
  • C语言:不支持默认参数。
  • C++:允许在函数声明或定义时为参数指定默认值。调用函数时,如果没有提供该参数的值,则使用默认值。
#include <iostream>// 带有默认参数的函数
int multiply(int a, int b = 1) {return a * b;
}int main() {int result1 = multiply(5);  // 使用默认参数int result2 = multiply(5, 2);  // 提供参数值std::cout << "Result 1: " << result1 << std::endl;std::cout << "Result 2: " << result2 << std::endl;return 0;
}
4. 内联函数
  • C语言:没有内联函数的概念,但可以使用宏来实现类似的功能。
#include <stdio.h>// 宏定义
#define MAX(a, b) ((a) > (b) ? (a) : (b))int main() {int max_val = MAX(10, 20);printf("Max value: %d\n", max_val);return 0;
}
  • C++:引入了内联函数的概念,使用inline关键字声明。编译器会尝试将内联函数的代码直接嵌入到调用处,以减少函数调用的开销。
#include <iostream>// 内联函数
inline int max(int a, int b) {return (a > b) ? a : b;
}int main() {int max_val = max(10, 20);std::cout << "Max value: " << max_val << std::endl;return 0;
}

综上所述,C++在变量和函数定义方面保留了C语言的基本规则,同时增加了许多新特性,如命名空间、类作用域、函数重载、默认参数和内联函数等,这些特性使得C++更加灵活和强大。

解析

输出流

 std::cout << "Namespace var: " << MyNamespace::var << std::endl;

把一条信息输出到标准输出流(通常为控制台)。输出的信息包含一段固定的字符串 "Namespace var: " 以及命名空间 MyNamespace 里变量 var 的值,最后换行

  1. std::cout

    std::cout 是 C++ 标准库 iostream 中的一个对象,其类型为 std::ostream,它代表标准输出流,一般和控制台屏幕相关联。
    std 是 C++ 标准库所使用的命名空间,借助作用域解析运算符 :: 能够访问该命名空间里的元素。

  2. << 运算符

    << 是输出流插入运算符,在 C++ 里被重载用于 std::ostream 对象。它的作用是把右侧的数据插入到左侧的输出流里。
    此运算符能够进行链式调用,也就是可以在同一个语句中多次使用,从而把多个数据依次插入到输出流。

  3. "Namespace var: "

    这是一个字符串字面量,其类型为 const char[]。借助 << 运算符,这个字符串会被插入到 std::cout 输出流中。

  4. MyNamespace::var

    MyNamespace 属于用户自定义的命名空间,用于防止全局命名冲突。
    var 是定义在 MyNamespace 命名空间中的变量。通过作用域解析运算符 ::,能够访问这个命名空间里的 var 变量。
    这个变量的值会被插入到 std::cout 输出流中。

  5. std::endl

    std::endl 同样是 C++ 标准库 iostream 中的一个操纵符,其类型为 std::ostream& (*)(std::ostream&)。
    它的作用有两个:一是向输出流插入换行符 ‘\n’;二是刷新输出流缓冲区,确保数据立即被输出。

输出结果会是:

Namespace var: 10

void BluetoothA2DPSink::start(const char* name)

成员函数的声明,函数名为 start,它属于 BluetoothA2DPSink 类。此函数的返回类型为 void,意味着它不会返回任何值,并且它接收一个 const char* 类型的参数 name。

BluetoothA2DPSink::

BluetoothA2DPSink 是一个类名,表明 start 函数是 BluetoothA2DPSink 类的成员函数。
:: 是作用域解析运算符,其作用是明确指定函数所属的类。借助这个运算符,能够在类的外部定义类的成员函数。

start

start 是函数的名称。通常,函数名会反映其功能,从这个名称推测,这个函数可能用于启动蓝牙 A2DP 接收器的相关操作。

(const char* name)

这是函数的参数列表,该函数接收一个参数。const char* 是参数的类型,它代表一个指向常量字符的指针,也就是指向一个以 '\0' 结尾的字符串。const 关键字表明这个指针所指向的字符内容不能被修改。name 是参数的名称,在函数内部可以使用这个名称来引用传入的字符串。
#include <iostream>
#include <cstring>// 定义 BluetoothA2DPSink 类
class BluetoothA2DPSink {
public:// 成员函数声明void start(const char* name);
};// 成员函数定义
void BluetoothA2DPSink::start(const char* name) {std::cout << "Starting Bluetooth A2DP Sink with name: " << name << std::endl;// 这里可以添加更多的启动逻辑
}int main() {BluetoothA2DPSink sink;const char* deviceName = "MyBluetoothDevice";sink.start(deviceName);return 0;
}

class BluetoothA2DPSink : public BluetoothA2DPCommon

定义了一个名为 BluetoothA2DPSink 的类,并且采用了继承机制,继承自 BluetoothA2DPCommon 类。

class 关键字

  • class 是 C++ 中用于定义类的关键字。当使用 class 定义一个类时,会创建一个新的数据类型,这个类型可以包含数据成员(变量)和成员函数(方法)。

BluetoothA2DPSink

  • 这是定义的类的名称。在 C++ 里,类名遵循标识符的命名规则,通常采用大写字母开头的驼峰命名法,以提高代码的可读性。这里的 BluetoothA2DPSink 可能代表蓝牙 A2DP(Advanced Audio Distribution Profile,高级音频分发配置文件)的接收器类。

: 符号

  • 在类定义中,: 符号用于表示继承关系,它表明 BluetoothA2DPSink 类将继承自另一个类。
    public 访问说明符

public 是一种访问说明符,它决定了基类的成员在派生类中的访问权限。当使用 public 继承时:

基类的 public 成员在派生类中仍然是 public 的,这意味着派生类的对象和外部代码都可以访问这些成员。
基类的 protected 成员在派生类中仍然是 protected 的,派生类的成员函数可以访问这些成员,但外部代码无法访问。
基类的 private 成员在派生类中仍然是不可访问的,即使是派生类的成员函数也不能直接访问。

BluetoothA2DPCommon

  • 这是基类的名称。BluetoothA2DPSink 类将继承 BluetoothA2DPCommon 类的所有 public 和 protected 成员。BluetoothA2DPCommon 可能包含了蓝牙 A2DP 相关的通用功能和属性,BluetoothA2DPSink 类可以在此基础上添加或重写特定的功能,以实现蓝牙 A2DP 接收器的具体功能。

相关文章:

C++与C的基本不同

文章目录 变量定义规则1. 基本语法2. 初始化3. 作用域4. 存储类别 函数定义规则1. 基本语法2. 函数声明和定义3. 默认参数4. 内联函数 解析输出流void BluetoothA2DPSink::start(const char* name)class BluetoothA2DPSink : public BluetoothA2DPCommon C是在C语言基础上发展而…...

React19源码系列之createRoot的执行流程是怎么的?

2024年12月5日&#xff0c;react发布了react19版本。后面一段时间都将学习它的源码&#xff0c;并着手记录。 react官网&#xff1a;react19新特性 https://react.dev/blog/2024/12/05/react-19 在用vite创建react项目的使用&#xff0c;main.tsx主文件都会有以下代码。 //i…...

【CXX-Qt】1.5 使用CMake构建

在本示例中&#xff0c;我们将演示如何使用CMake将CXX-Qt代码集成到C应用程序中。Cargo将CXX-Qt代码构建为静态库&#xff0c;然后CMake将其链接到C可执行文件中。 我们首先需要修改项目结构&#xff0c;以分离项目的不同部分。 tutorial cpp qml rust将Rust项目移动到rust文…...

前端面试项目拷打

Axios相关 1.在Axios二次封装时&#xff0c;具体封装了哪些内容&#xff0c;如何处理请求拦截和响应拦截&#xff1f; axios二次封装的目的&#xff1a;为了统一处理请求和响应拦截器、错误处理、请求超时、请求头配置等&#xff0c;提高代码可维护性和复用性。 首先创建axios…...

“Ubuntu禁止root用户通过SSH直接登录”问题的解决

目录 1 前言 2 问题的解决 2.1 修改sshd_config文件 2.2 重启 SSH 服务 1 前言 最近在做毕设的时候&#xff0c;由于使用普通用户&#xff0c;在MobaXterm的图形界面上&#xff0c;无法正常查看/root文件夹内容&#xff0c;如下图所示&#xff1a; 于是我就想直接想用oot…...

Kafka的零拷贝

Kafka的零拷贝&#xff08;Zero-Copy&#xff09;技术是其实现高吞吐量的关键优化之一&#xff0c;主要通过减少数据在内核空间和用户空间之间的冗余复制及上下文切换来提升性能。以下是其核心要点&#xff1a; 1. 传统数据拷贝的问题 多次复制&#xff1a;传统文件传输需经历…...

《大语言模型》学习笔记(三)

GPT系列模型的技术演变 2022 年11月底&#xff0c;OpenAI推出了基于大语言模型的在线对话应用—ChatGPT。由于具备出色的人机对话能力和任务解决能力&#xff0c;ChatGPT一经发布就引发了全社会对于大语言模型的广泛关注&#xff0c;众多的大语言模型应运而生&#xff0c;并且…...

华为OD机试 - 最长回文字符串 - 贪心算法(Java 2024 E卷 100分)

题目描述 如果一个字符串正读和反读都一样(大小写敏感),则称之为一个「回文串」。例如: level 是一个「回文串」,因为它的正读和反读都是 level。art 不是一个「回文串」,因为它的反读 tra 与正读不同。Level 不是一个「回文串」,因为它的反读 leveL 与正读不同(因大小…...

K8S-etcd服务无法启动问题排查

一、环境、版本信息说明 k8s&#xff1a;v1.19.16 etcdctl version: 3.5.1 3台etcd&#xff08;10.xxx.xx.129、10.xxx.xx.130、10.xxx.xx.131&#xff09;组成的集群。 二、问题根因 129节点的etcd数据与其他两台数据不一致&#xff0c;集群一致性校验出错导致无法加入集…...

基于WebRTC的嵌入式音视频通话SDK:EasyRTC跨平台兼容性技术架构实时通信的底层实现

EasyRTC的核心架构围绕WebRTC技术构建&#xff0c;同时通过扩展信令服务、媒体服务器和NAT穿透机制&#xff0c;解决了WebRTC在实际部署中的痛点。其架构可以分为以下几个核心模块&#xff1a; 1&#xff09;WebRTC基础层 媒体捕获与处理&#xff1a;通过getUserMediaAPI获取…...

SpringBoot-已添加并下载的依赖,reload和mvn clean 后还是提示找不到jar包问题

背景&#xff1a; 添加spring-jdbc依赖时&#xff0c;原来是指定版本的&#xff0c;担心版本冲突&#xff0c;就改成依赖托管&#xff0c;悲剧的是反复reload和mvn clean&#xff0c;import到类的该包一直标红&#xff0c;提示jar包找不到。。。 解决方案&#xff1a; Idea左上…...

HTML5扫雷游戏开发实战

HTML5扫雷游戏开发实战 这里写目录标题 HTML5扫雷游戏开发实战项目介绍技术栈项目架构1. 游戏界面设计2. 核心类设计 核心功能实现1. 游戏初始化2. 地雷布置算法3. 数字计算逻辑4. 扫雷功能实现 性能优化1. DOM操作优化2. 算法优化 项目亮点技术难点突破1. 首次点击保护2. 连锁…...

机器学习——数据清洗(缺失值处理、异常值处理、数据标准化)

数据清洗(缺失值处理、异常值处理、数据标准化) 在数据处理与分析流程中,数据清洗占据着极为关键的地位。原始数据往往充斥着各种问题,如缺失值、异常值,且数据的尺度和分布也可能存在差异,这些问题会严重影响后续数据分析和机器学习模型的准确性与性能。因此,有效的数据…...

【综述】An Introduction to Vision-Language Modeling【一】

介绍 发表在预印本上的综述&#xff0c;长达76页&#xff0c;其中正文46页。 来自Meta 在Meta工作期间完成 ‡蒙特利尔大学, Mila ♡麦吉尔大学, Mila †多伦多大学 ♠卡内基梅隆大学 ♣麻省理工学院 ∧纽约大学 △加州大学伯克利分校 ▽马里兰大学 ♢阿卜杜拉国王科技大学 •…...

MySQL常用函数详解及SQL代码示例

MySQL常用函数详解及SQL代码示例 引言当前日期和时间函数字符串函数数学函数聚合函数结论 引言 MySQL作为一种广泛使用的关系型数据库管理系统&#xff0c;提供了丰富的内置函数来简化数据查询、处理和转换。掌握这些函数可以大大提高数据库操作的效率和准确性。本文将详细介绍…...

Unity教程(二十二)技能系统 分身技能

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…...

‌RTSPtoWeb, 一个将rtsp转换成webrtc的开源项目

RTSPtoWeb是一个开源项目&#xff0c;旨在将RTSP流转换为可在现代web浏览器中消费的格式&#xff0c;如Media Source Extensions &#xff08;MSE&#xff09;、WebRtc或HLS。该项目完全使用golang编写&#xff0c;不依赖于ffmpeg或gstreamer&#xff0c;确保了高效的性能和轻量…...

AIAgent有哪些不错的开源平台

AIAgent领域有许多优秀的开源平台和框架&#xff0c;以下是一些值得推荐的开源平台&#xff1a; AutoGPT AutoGPT 是一个基于 OpenAI 的 GPT-4 和 GPT-3.5 大型语言模型的开源框架&#xff0c;能够根据用户给定的目标自动生成所需提示&#xff0c;并利用多种工具 API 执行多步骤…...

Java---JavaSpringMVC解析(1)

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc)&#xff0c;但它通常被称为"Spring MVC" 1.MVC MVC是Model View Controller的缩写&#…...

Vector 的模拟实现:从基础到高级

文章目录 1. 引言2. vector的核心设计3. vector的常用接口介绍3.1 构造函数和析构函数3.1.1 默认构造函数3.1.2 带初始容量的构造函数3.1.3 析构函数 3.2 拷贝构造函数和拷贝赋值运算符3.2.1 拷贝构造函数3.2.2 拷贝赋值运算符 3.5 数组长度调整和动态扩容3.5.1 调整大小&#…...

【大模型科普】大模型:人工智能的前沿(一文读懂大模型)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…...

[漏洞修复]用yum update修openssh漏洞

[漏洞修复]用yum update修openssh漏洞 1. 需求2. 更新Yum仓库2.1 生成本地仓库2.2 生成内网仓库2.3 将Openssh的包更新到仓库 3. 客户端升级3.1 客户端repo文件配置3.2 升级Openssh3.3 升级后的确认 1. 需求 最近经常有朋友问Openssh 漏洞修复的问题,我也在自己的gitee仓库里更…...

[RH342]iscsi配置与排错

[RH342]iscsi配置与排错 1. 服务端配置1.1 安装targetcli1.2 准备磁盘1.3 服务端配置1.4 防火墙配置 2. 客户端配置2.1 安装客户端软件2.2 配置客户端2.3 连接登录服务端2.4 挂载使用 3. 安全验证扩展3.1 服务端3.2 客户端 4. 常见的排错点4.1 服务端常见错误4.2 客户端常见错误…...

Nginx 代理访问一个 Web 界面时缺少内容

1. 资源路径问题 Web 页面中的静态资源&#xff08;如图片、CSS、JavaScript 文件&#xff09;可能使用了相对路径或绝对路径&#xff0c;而这些路径在代理后无法正确加载。 解决方法&#xff1a; 检查资源路径&#xff1a;打开浏览器的开发者工具&#xff08;按 F12&#xf…...

HOVER:人形机器人的多功能神经网络全身控制器

编辑&#xff1a;陈萍萍的公主一点人工一点智能 HOVER&#xff1a;人形机器人的多功能神经网络全身控制器HOVER通过策略蒸馏和统一命令空间设计&#xff0c;为人形机器人提供了通用、高效的全身控制框架。https://mp.weixin.qq.com/s/R1cw47I4BOi2UfF_m-KzWg 01 介绍 1.1 摘…...

SEO新手基础优化三步法

内容概要 在网站优化的初始阶段&#xff0c;新手常因缺乏系统性认知而陷入技术细节的误区。本文以“三步法”为核心框架&#xff0c;系统梳理从关键词定位到内容布局、再到外链构建的完整优化链路。通过拆解搜索引擎工作原理&#xff0c;重点阐明基础操作中容易被忽视的底层逻…...

遨游科普:三防平板是哪三防?有哪些应用场景?

在工业智能化与数字化转型的浪潮中&#xff0c;电子设备的耐用性和环境适应性成为关键需求。普通消费级平板电脑虽然功能强大&#xff0c;但在极端环境下往往“水土不服”。而三防平板凭借其独特的防护性能&#xff0c;正逐步成为“危、急、特”场景的核心工具。 AORO P300 Ult…...

Etcd 服务搭建

&#x1f4a2;欢迎来到张胤尘的开源技术站 &#x1f4a5;开源如江河&#xff0c;汇聚众志成。代码似星辰&#xff0c;照亮行征程。开源精神长&#xff0c;传承永不忘。携手共前行&#xff0c;未来更辉煌&#x1f4a5; 文章目录 Etcd 服务搭建预编译的二进制文件安装下载 etcd 的…...

C++《红黑树》

在之前的篇章当中我们已经了解了基于二叉搜索树的AVL树&#xff0c;那么接下来在本篇当中将继续来学习另一种基于二叉搜索树的树状结构——红黑树&#xff0c;在此和之前学习AVL树类似还是通过先了解红黑树是什么以及红黑树的结构特点&#xff0c;接下来在试着实现红黑树的结构…...

Axios 请求取消:从原理到实践

Axios 请求取消&#xff1a;从原理到实践 在现代前端开发中&#xff0c;网络请求是不可或缺的一部分。Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;广泛应用于浏览器和 Node.js 环境中。然而&#xff0c;在某些场景下&#xff0c;我们可能需要取消正在进行的请求&…...

【css酷炫效果】纯CSS实现照片堆叠效果

【css酷炫效果】纯CSS实现照片堆叠效果 缘创作背景html结构css样式完整代码基础版进阶版(增加鼠标悬停查看) 效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492022 缘 创作随缘&#xff0c;不定时更新。 创…...

论文精度:Transformers without Normalization

前言 论文题目:Transformers without Normalization 作者:Jiachen Zhu 1,2 , Xinlei Chen 1 , Kaiming He 3 , Yann LeCun 1,2 , Zhuang Liu 1,4,† 论文地址:https://arxiv.org/pdf/2503.10282 摘要 这篇论文探讨了现代神经网络中广泛使用的归一化层是否是必不可少的。…...

基于香橙派 KunpengPro学习CANN(3)——pytorch 模型迁移

通用模型迁移适配可以分为四个阶段&#xff1a;迁移分析、迁移适配、精度调试与性能调优。 迁移分析 迁移支持度分析&#xff1a; 准备NPU环境&#xff0c;获取模型的源码、权重和数据集等文件&#xff1b;使用迁移分析工具采集目标网络中的模型/算子清单&#xff0c;识别第三方…...

微软远程桌面即将下架?Splashtop:更稳、更快、更安全的 RDP 替代方案

近日&#xff0c;Windows 官方博客宣布&#xff1a;将于2025年5月27日起&#xff0c;在 Windows 10 和 Windows 11 应用商店中下架“Microsoft 远程桌面”应用&#xff0c;建议用户迁移至新的 Windows App。这一变动引发了广大用户对远程访问解决方案的关注。作为全球领先的远程…...

【Python】Python与算法有应用关系吗?

李升伟 整理 是的&#xff0c;Python与算法有着密切的应用关系。Python作为一种高级编程语言&#xff0c;因其简洁的语法和强大的库支持&#xff0c;被广泛应用于算法设计、实现和应用中。以下是Python与算法之间的一些主要应用关系&#xff1a; 1. 算法学习与教学&#xff1…...

js,html,css,vuejs手搓级联单选

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>级联选择器</title><script src"h…...

将Django连接到mysql

将Django连接到mysql 文章目录 将Django连接到mysql一.按照我的文章 在Django模型中的Mysql安装 此篇 的步骤完成mysql的基础配置二.Django配置 一.按照我的文章 ‘在Django模型中的Mysql安装’ 此篇 的步骤完成mysql的基础配置 基础配置具体内容 1.打开PowerShell 安装mysql的…...

每天五分钟深度学习框架pytorch:基于pytorch搭建循环神经网络RNN

本文重点 我们前面介绍了循环神经网络RNN,主要分析了它的维度信息,其实它的维度信息是最重要的,一旦我们把维度弄清楚了,一起就很简单了,本文我们正式的来学习一下,如何使用pytorch搭建循环神经网络RNN。 RNN的搭建 在pytorch中我们使用nn.RNN()就可以创建出RNN神经网络…...

【力扣刷题实战】无重复的最长字串

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 力扣题目&#xff1a; 无重复的最长字串 题目描述 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C&#xff09; 兄弟们共勉 &#xff01;&#xff01;&#xff01; 每篇前言 博客主页&#x…...

vulhub/joker 靶机----练习攻略

1. 靶机下载地址 https://download.vulnhub.com/ha/joker.zip 下载下来是ova文件&#xff0c;直接双击&#xff0c;在VMware打开&#xff0c;选择保存位置&#xff0c;点击导入。 2. 设置网卡模式为NAT&#xff0c;打开靶机 3.老规矩&#xff0c;打开kali&#xff0c;扫同C…...

Nuxt2 vue 给特定的页面 body 设置 background 不影响其他页面

首先认识一下 BODY_ATTRS 他可以在页面单独设置 head () {return {bodyAttrs: {form: form-body}};},设置完效果是只有这个页面会加上 接下来在APP.vue中添加样式...

【Go】运算符笔记

基本数学运算 Go 语言支持常见的 算术运算符&#xff0c;用于执行数学计算。 运算符说明加法-减法*乘法/除法%取余自增--自减 整数运算只能得到整数部分 package mainimport ("fmt""math" )func main() {go_math() }func go_math() {x, y : 8, 5fmt.Pr…...

常见的前端安全问题

前端安全是 Web 开发中至关重要的一环&#xff0c;以下是常见的前端安全问题及对应的防御措施&#xff1a; 1. XSS&#xff08;跨站脚本攻击&#xff09; 攻击原理 攻击者向页面注入恶意脚本&#xff08;如 JavaScript&#xff09;&#xff0c;在用户浏览器中执行&#xff0c;…...

基于Spring Boot的项目申报系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

SPI驱动(九) -- SPI_Master驱动程序

文章目录 参考资料&#xff1a;一、SPI传输概述二、SPI传输的两种方法2.1 旧方法2.2 新方法 参考资料&#xff1a; 参考资料&#xff1a; 参考内核源码: drivers\spi\spi.c 一、SPI传输概述 SPI控制器的作用是发起与它下面挂接的SPI设备之间的数据传输&#xff0c;那么控制…...

Transformer网络发展概述2025.3.18

一.Transformer概述 1.1 定义与原理 Transformer是一种基于自注意力机制的深度学习模型&#xff0c;在处理序列数据时表现卓越。其核心原理包括&#xff1a; 自注意力机制 &#xff1a;允许模型同时考虑输入序列中的所有位置&#xff0c;捕捉语义关系多头注意力 &#xff1a…...

3.4 二分查找专题:LeetCode 69. x 的平方根

1. 题目链接 LeetCode 69. x 的平方根 2. 题目描述 给定一个非负整数 x&#xff0c;计算并返回 x 的平方根的整数部分&#xff08;向下取整&#xff09;。 示例&#xff1a; 输入&#xff1a;x 4 → 输出&#xff1a;2输入&#xff1a;x 8 → 输出&#xff1a;2&#xff0…...

机器人曲面跟踪Surface-Tracking

定义 机器人曲面跟踪&#xff08;Surface-Tracking&#xff09;是指机器人通过实时感知工件曲面的三维形貌&#xff0c;动态调整运动轨迹和位姿&#xff0c;以精确跟随曲面进行加工&#xff08;如打磨、抛光、喷涂等&#xff09;的技术。 力 - 位姿协同控制 力控模式&#xff…...

opencv中stitch图像融合

openv版本: opencv249 vs &#xff1a;2010 qt : 4.85 #include "quanjing.h"#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <open…...

深入解析ES6+新语法:复杂的迭代器与生成器

一、迭代器&#xff08;Iterator&#xff09;&#xff1a;数据遍历的统一协议 1. 迭代器协议的本质 **迭代器协议&#xff08;Iterator Protocol&#xff09;** 是一种标准化的数据访问接口&#xff0c;它要求对象实现一个 next() 方法&#xff0c;每次调用返回包含 { valu…...