c语法高阶—(联合体,枚举,位域,编译器,宏定义,条件编译,条件编译,头文件)
目录
一 联合体(重要)
特性
总结
二 枚举(重要)
特性
总结:
三 位域(了解)
定义
特性
使用场景
优缺点分析表
位域的特点和使用方法
总结:
四 编译器(linux)(重要)
常用编译选项
分阶段编译流程
1. 预处理(此时假设要处理的文件为hello.c)
2. 编译
3. 汇编
4. 链接
基本使用流程
1. 编写源代码
2. 完整编译(一步到位)
五 宏定义加强(重要)
六 条件编译(重要)
七 头文件(重要)
项目结构
编辑
1. 创建头文件(utils.h)
2. 实现文件(utils.c)
3. 主程序(main.c)
编译与使用
八,typedef关键字
一 联合体(重要)
特性
特性 联合体(union) 结构体(struct) 定义方式 union 名称 { 类型 成员; ... };
struct 名称 { 类型 成员; ... };
内存分配 所有成员共享同一内存地址 每个成员有独立内存地址 存储空间 大小为最大成员的尺寸 大小为所有成员尺寸之和(含填充) 访问方式 同一时刻只能有效访问一个成员 可同时访问所有成员 类型安全 低(需自行管理当前有效类型) 高(成员类型明确) 典型应用 类型转换、协议解析、硬件寄存器访问 数据聚合、对象建模 赋值 当给联合一个成员赋值名,其他成员的值则失效
不会失效
总结
C 共用体 | 菜鸟教程
之上链接足可以了解,同一时间,联合体只能有效访问一个成员。
#include <stdio.h>/*
联合体与结构体非常相似,但是他们本质上完全不一样
结构体每个成员都有独立的内存
联合体的成员共用一个内存空间,因此联合体也被称为共用体语法:
union 标签{}联合体可以定义多个成员,同一时间,只有一个内存,只有一个成员的值有效1.尺寸由成员最大决定2.成员地址一样,一个内存空间3.为一个成员赋值,其他成员值失效
*/union wahaha
{int a;char c;long age;char w;
};
int main(int argc, char const *argv[])
{union wahaha www;printf("%lu\n", sizeof(www.age));return 0;
}
二 枚举(重要)
特性
特性/场景 说明 定义方式 enum 名称 { 常量1, 常量2... };
常量管理 集中管理相关常量,避免魔法数字 可读性 使用有意义的名称代替原始值 类型安全 C中本质是 int
,可隐式转换;C++中为独立类型内存占用 通常使用 int
存储(4字节),编译器可能优化适用场景 状态码、有限选项集合、模式标志、错误代码 优势 代码自文档化、易维护、避免重复值冲突 缺点 作用域污染(C中枚举常量全局可见)、无法表示复杂数据类型
总结:
#include <stdio.h>//方案1 用宏定义
// #define MON 1
// #define TUE 2
// #define WED 3
// #define THU 4
// #define FRI 5
// #define SAT 6
// #define SUN 7/*枚举C语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁,更易读。
枚举类型通常用于为程序中的一组相关的常量取名字,以便以程序的可读性和维护性;语法:enum 标签{常量1,常量2...};c语言中的枚举中的元素数据类型都必须是整型 int(有符号、无符号均可)
*//*
1.枚举中的常量第一个不赋值 默认为0
2.后续不赋值默认在前一个基础+1*/
enum DAY{MON=1,TUE=2,WED=3,THU=4,FRI=5,SAT=6,SUN
};int main(int argc, char const *argv[])
{enum DAY d1=SUN;printf("%d\n",d1);d1=MON;printf("%d\n",d1);d1=TUE;printf("%d\n",d1);//枚举的元素遍历(里面的值必须都是连续的),否则不能执行下面的遍历for (d1 = MON; d1<= SUN; d1++){printf("%d\n",d1);}return 0;
}
三 位域(了解)
定义
特性 描述 限制条件 定义方式 在结构体中使用 类型 成员名 : 位数;
声明位数需≤类型长度(int通常≤32) 内存分配 按需分配位空间,可能跨字节存储 编译器决定具体布局 取值范围 有符号类型保留1位符号位 无符号类型可多用1位 访问方式 使用成员运算符 .
访问无法取地址(&操作非法) 填充规则 相邻位域类型相同时可能合并存储 不同类型通常换存储单元 典型应用 硬件寄存器、协议字段、标志位集合 内存敏感场景 特性
维度 位域 常规变量 存储粒度 位级(1-32位) 字节级(8的倍数) 内存效率 高(紧凑存储) 低(可能浪费空间) 访问速度 较慢(需位操作) 较快(直接访问) 可移植性 低(编译器实现差异) 高(标准明确) 调试可见性 差(二进制形式) 好(直接查看值) 适用场景 硬件寄存器、协议字段 常规数据处理 使用场景
应用场景 示例说明 优势体现 硬件寄存器 外设控制寄存器位映射 精确控制硬件位 网络协议 TCP头中的标志位(SYN/ACK等) 紧凑解析协议字段 嵌入式系统 设备状态标志集合 节省有限内存资源 压缩存储 存储大量布尔值 减少内存占用(8倍于bool数组) 数据包格式 自定义二进制协议 精确控制每个位的含义 优缺点分析表
优点 缺点 1. 极致内存利用率 1. 可移植性差 2. 直观操作硬件寄存器 2. 访问速度较慢 3. 提升标志位代码可读性 3. 调试困难 4. 减少位操作代码复杂度 4. 不可取地址 5. 自动位掩码生成 5. 类型限制(通常整型) 位域的特点和使用方法
- 定义位域时,可以指定成员的位域宽度,即成员所占用的位数。
- 位域的宽度不能超过其数据类型的大小,因为位域必须适应所使用的整数类型。
- 位域的数据类型可以是
int
、unsigned int
、signed int
等整数类型,也可以是枚举类型。- 位域可以单独使用,也可以与其他成员一起组成结构体。
- 位域的访问是通过点运算符(
.
)来实现的,与普通的结构体成员访问方式相同。总结:
1.节约内存,其他还算简单。
问题一:
my.b = 10; // 有符号的
printf("b=%d\n", my.b); //输出为-6
解答:
#include <stdio.h>/*
C语言的位域(bit-field)是一种特殊的结构体成员,允许我们按位对成员进行定义,指定其占用的位数;
指定占用位数的数据类型只能是int/unsigned int;位域与共用体,其共同目的是减少内存的使用,提高运行的效率,这在板子开发中,有极其重要的作用
*/struct bf
{// 指定的位数不能超过C语言规定的位数大小int a : 4; // 指定其占用4位int b : 4; // 指定其占用4位unsigned c : 2; // 指定其占用2位// 空域,占着位数,但是不能赋值,没给名字int : 4; // 指定其占用4位// 从下一个单元开始存储新的成员数据unsigned d : 4;
};int main(int argc, char const *argv[])
{// 声明该位域的 变量struct bf my;// 1.为a赋值,a的位数为18,即 00 0000 0000 0000 0000my.a = 1;printf("a=%d\n", my.a);// 2.为b赋值,b的位数为4,即0000my.b = 5; // 有符号的printf("b=%d\n", my.b);// 3.无符号,为c赋值,c的位数为0,即00my.c = 3; // 无符号的printf("c=%d\n", my.c);// 4.无符号,为c赋值,c的位数为4,即0000my.d = 13; // 无符号的printf("d=%d\n", my.d);// 4.无符号,为c赋值,c的位数为4,即0000my.b = 10; // 有符号的printf("b=%d\n", my.b);// 4.无符号,为c赋值,c的位数为4,即0000my.d = 10; // 无符号的printf("d=%d\n", my.d);// 求其字节数,按照最大的进补原则printf("%lu\n", sizeof(my)); // 4return 0;
}
四 编译器(linux)(重要)
常用编译选项
选项 作用描述 示例 -o <file>
指定输出文件名 gcc -o demo demo.c
-Wall
开启所有警告信息 gcc -Wall test.c
-g
包含调试信息(GDB使用) gcc -g debug.c
-O<level>
优化级别(0-3,s) gcc -O2 optimize.c
-I<dir>
指定头文件搜索目录 gcc -I./include src.c
-L<dir>
指定库文件搜索目录 gcc -L./lib main.c -lmylib
-l<library>
链接指定库 gcc main.c -lm
(链接数学库)-D<macro>
定义预处理宏 gcc -DDEBUG debug.c
分阶段编译流程
1. 预处理(此时假设要处理的文件为hello.c)
gcc -E hello.c -o hello.i
作用:
展开头文件(
#include
)宏替换(
#define
)删除注释
添加行号标识
2. 编译
gcc -S hello.i -o hello.s
生成:汇编代码文件(
hello.s
)
3. 汇编
gcc -c hello.s -o hello.o
生成:目标文件(
hello.o
,二进制机器码)
4. 链接
gcc hello.o -o hello
作用:链接库文件和其他目标文件生成可执行文件
基本使用流程
1. 编写源代码
// hello.c
#include <stdio.h>
int main() {printf("Hello, Linux C!\n");return 0;
}
2. 完整编译(一步到位)
gcc hello.c -o hello # 编译生成可执行文件hello
./hello # 运行程序
输出:
Hello, Linux C!
五 宏定义加强(重要)
宏(macro)其实就是一个特定的字符串,用来直接替换,编译的时候直接替换为对应的宏的内容(字符串替换);
宏的作用:
1.使得程序的可读性有所提高,使用一个有意义的单词来表示一个无意义数字(某个值)
2.方便对代码进行迭代更新,如果代码中有多处使用到该值,则只需要修改一处即可
3.提高程序的执行效率,可以使用宏来实现一个比较简单的操作,用来替代函数的调用(宏表达式)
#include <stdio.h>
/*
宏,就是一个特定的字符串
*/// 1.无参,就是定义常量
#define a 1// 无值宏
#define NO_VALUE// 3.有参
// 宏只能写在一行(逻辑行),多行红使用转义符\来链接
// 本质是字符串替换,有时候会出现逻辑错误,需要使用()提升优先级。
#define MAX(a, b) a > b ? a : bint main(int argc, char const *argv[])
{// 1. 使用无参数宏,就是一个预处理的模板,其实就是定义常量printf("%d\n", a);// 2.无值宏int c = 1;int d = 2;int e = (c, d == 100 ? 100 : 200 ? 1000: 2000);printf("%d\n", e);return 0;
}
六 条件编译(重要)
指令 描述 #define 定义宏 #include 包含一个源代码文件 #undef 取消已定义的宏 #ifdef 如果宏已经定义,则返回真 #ifndef 如果宏没有定义,则返回真 #if 如果给定条件为真,则编译下面代码 #else #if 的替代方案 #elif 如果前面的 #if 给定条件不为真,当前条件为真,则编译下面代码 #endif 结束一个 #if……#else 条件编译块 #error 当遇到标准错误时,输出错误消息 #pragma 使用标准化方法,向编译器发布特殊的命令到编译器中
#include <stdio.h>/*
条件编译:根据某一个条件来决定,是否需要编译,不同的操作系统,编译不同*/// 1.无值宏
#define HERON ;// 有值宏 条件编译
// 使用有值红田间只能是数字bool值,不可以是字符串
#define M1 0
#define M2 0
#define M3 0int main(int argc, char const *argv[])
{/*无值宏的使用*/
#ifdef HERONprintf("已经定义无值宏\n");
#endif#ifndef HERONprintf("无定义无值宏\n");
#endif/*有值宏条件编译1*/
#if M1printf("有值0000000\n");
#elif M2printf("有值aaaaaaaa\n");
#elif M3printf("有值9999999\n");
#elseprintf("都不成立\n");
#endifreturn 0;
}
七 头文件(重要)
特性 描述 文件扩展名 .h
主要作用 声明函数原型、宏定义、类型定义等公共内容 包含方式 #include <系统头文件>
或#include "自定义头文件"
编译阶段 预处理阶段展开( gcc -E
可查看)最佳实践 1. 使用头文件守卫
2. 声明与实现分离
3. 避免包含实现代码
项目结构
1. 创建头文件(utils.h)
#ifndef UTILS_H // 头文件守卫开始
#define UTILS_H// 函数声明
int add(int a, int b);
void print_result(int result);// 宏定义
#define MAX(a, b) ((a) > (b) ? (a) : (b))// 结构体声明
struct Point {int x;int y;
};#endif // UTILS_H // 头文件守卫结束
2. 实现文件(utils.c)
#include <stdio.h>
#include "utils.h" // 包含自定义头文件int add(int a, int b) {return a + b;
}void print_result(int result) {printf("结果:%d\n", result);
}
3. 主程序(main.c)
#include <stdio.h> // 系统头文件
#include "utils.h" // 自定义头文件int main() {struct Point p = {10, 20};int sum = add(p.x, p.y);printf("最大值:%d\n", MAX(p.x, p.y));print_result(sum);return 0;
}
编译与使用
看不到问我
gcc ./file/*.c -o ./指定文件目录/自定义文件名 -I ./头文件的文件目录名
八,typedef关键字
c语言提供了typedef关键字,为类型取一个新的名字
C 语言提供了 typedef 关键字,您可以使用它来为类型取一个新的名字。下面的实例为单字节数字定义了一个术语 BYTE:
#include <stdio.h>
/*
c语言提供了typedef关键字,为类型取一个新的名字
*/// 1.1
// 关键字
typedef int my_int;// 1.2 给枚举/结构体/共用体/位域 取别名
// 共用体 联合体取别名
typedef union gift
{int a; // 4char c; // 1long age; // 8char name[32]; // 32
} gg;int main(int argc, char const *argv[])
{// 1.my_int i = 1;printf("%d\n", i);// 2.gg g1;int test = g1.a = 1;printf("%d\n", test);return 0;
}
相关文章:
c语法高阶—(联合体,枚举,位域,编译器,宏定义,条件编译,条件编译,头文件)
目录 一 联合体(重要) 特性 总结 二 枚举(重要) 特性 总结: 三 位域(了解) 定义 特性 使用场景 优缺点分析表 位域的特点和使用方法 总结: 四 编译器(linux…...
SQL Server To Paimon Demo by Flink standalone cluster mode
需求:使用 Flink CDC 测试 SQL Server 连接 Paimon 操作:启动 Flink standalone cluster 后,接着启动 Flink SQL Client,则通过 Flink SQL Client 提交 insert & select job 到该 8081 cluster Flink SQL Client 执行案例 -…...
常用设计模式在 Spring Boot 项目中的实战案例
引言 在当今的软件开发领域,Spring Boot 以其高效、便捷的特性成为构建 Java 应用程序的热门框架。而设计模式作为软件开发中的宝贵经验总结,能够显著提升代码的可维护性、可扩展性和可复用性。本文将深入探讨几种常用设计模式在 Spring Boot 项目中的…...
4、反应釜压力监控系统 - /自动化与控制组件/reaction-vessel-monitor
76个工业组件库示例汇总 反应釜压力监控组件 这是一个用于反应釜压力监控的自定义组件,专为化工厂反应釜压力监控设计。采用苹果工业风格界面,简洁优雅,功能实用,易于使用。 功能特点 实时压力可视化:直观展示反应…...
五、Hadoop集群部署:从零搭建三节点Hadoop环境(保姆级教程)
作者:IvanCodes 日期:2025年5月7日 专栏:Hadoop教程 前言: 想玩转大数据,Hadoop集群是绕不开的一道坎。很多小伙伴一看到集群部署就头大,各种配置、各种坑。别慌!这篇教程就是你的“救生圈”。 …...
详细剖析传输层协议(TCP和UDP)
详细讲解传输层的网络协议,为什么TCP是可靠连接协议,凭什么能做到不丢包,有哪些机制保证可靠呢? TCP/UDP UDPTCP**三次握手和四次挥手****滑动窗口****拥塞控制**(socket套接字)**listen的第二个参数** UD…...
ZYNQ移植FreeRTOS与OpenAMP双核开发实践指南
ZYNQ系列芯片凭借其“ARM处理器(PS)+ FPGA(PL)”的异构架构,在嵌入式系统中被广泛应用于高性能计算与实时控制场景。然而,如何高效利用其双核资源并实现实时操作系统(如FreeRTOS)的移植与双核通信,是开发者面临的关键挑战。本文将深入探讨FreeRTOS移植、双核固化启动以…...
VUE+ElementUI 使用el-input类型type=“number” 时,取消右边的上下箭头
项目场景: 提示:这里简述项目相关背景: 在项目中有时候需要输入框的type“number”,这个时候,输入框的右边就会出现两个按钮,这两个按钮可以递增/递减,但是这样输入框看上去就不太美观&#x…...
RabbitMQ高级特性
1.消息的可靠投递 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。 1.confirm 确认模式 2.return 退回模式 rabbitmq 整个消息投递的路径为: producer…...
在Python中调用C/C++函数并与MPI集成
在Python中调用C/C函数并与MPI集成 要在Python环境中调用C/C函数并让Python和C/C端都能使用MPI进行通信,有几种方法可以实现。下面我将介绍几种常见的方法。 方法一:使用mpi4py C/C MPI扩展 1. 准备工作 首先确保你已安装: MPI实现 (如OpenMPI或MP…...
软件架构评估方法全面解析
介绍 在软件开发过程中,架构设计的好坏直接影响系统的可维护性、可扩展性和性能。因此,软件架构评估(Software Architecture Evaluation)成为确保架构质量的关键步骤。本文将介绍几种主流的架构评估方法,包括ATAM、SA…...
场景可视化与数据编辑器:构建数据应用情境
场景可视化是将数据与特定的应用场景相结合,借助数据编辑器对数据进行灵活处理和调整,通过模拟和展示真实场景,使企业能够更直观地理解数据在实际业务中的应用和影响,为企业的决策和运营提供有力支持。它能够将抽象的数据转化为具…...
MATLAB导出和导入Excel文件表格数据并处理
20250507 1.MATLAB使用table函数和writetable函数将数据导出Excel表格文件 我们以高斯函数为例子,高斯函数在数学和工程领域有着广泛的应用,它的一般形式为: 其中是均值,决定了函数的中心位置; 是标准差,决…...
2025年渗透测试面试题总结-渗透岗位全职工作面试(附回答)(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 一、通用基础类问题 1. 自我介绍 2. 职业动机与规划 3. 加班/出差接受度 二、安全技术类问题 1. 漏…...
【django.db.utils.OperationalError: unable to open database file】
解决platform.sh 环境下,无法打开数据库问题 场景 在platform.sh 执行python manage.py createsuperuser是提示 django.db.utils.OperationalError: unable to open database file 错误 原因 由于settings.py文件中 本地数据库配置在线上配置后,导致…...
【人工智能】解锁AI潜能:LM Studio多模型并行运行DeepSeek与开源大模型的实践指南
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着大语言模型(LLM)的快速发展,LM Studio作为一款本地化部署工具,以其简单易用的图形化界面和强大的模型管理能力受到广泛关注。本文深…...
集群免密登录
免密登录原理 核心步骤 在hadoop100上 生成密钥对。把hadoop100的公钥发到hadoop101上。在hadoop100上登录hadoop101,验证效果 具体操作 登录 hadoop100。使用finalshell连接。在hadoop100上,运行命令:ssh-keygen -t rsa。然后根据提示连续敲…...
【C/C++】errno/strerror 和 GetLastError()/FormatMessage 的区别
strerror 和 errno 详解 printf("Error: %s\n", strerror(errno));这行代码用于在 C 语言中输出系统错误信息,但它与 Windows 的 GetLastError() 有重要区别。下面我将详细解释每个部分及其工作原理。 1. 组件解析 errno 定义:errno 是一个…...
ASP.NET MVC4 技术单选及多选题目汇编
一、单选题(共50题,每题2分) 1、ASP.NET MVC4 的核心架构模式是什么? A. MVP B. MVVM C. MVC D.三层架构 答案:C 2、在 MVC4 中,默认的路由配置文件名是? A. Global.asax B. RouteConfig.cs C.…...
趣味编程:梦幻万花筒
目录 1.效果展示 2.源码展示 3.代码逻辑详解 3.1 头文件与宏定义 3.2 HSV函数转RGB颜色函数 3.3 主函数 初始化部分 循环部分 线条绘制部分 刷新和延时部分 结束部分 4.小结 本篇博客主要介绍趣味编程用C语言实现万花筒小程序。 1.效果展示 2.源码展示 #define…...
使用 Selenium 截图功能,截不到原生 JavaScript 弹窗
本篇内容源自ai注意甄别 Selenium WebDriver 的标准截图 (getScreeenshotAs) 捕获的是浏览器渲染的 DOM 内容,而 JavaScript 的 alert()、confirm()、prompt() 这类弹窗是浏览器级别的原生 UI 元素,它们不属于页面的 DOM 结构。 为什么会这样ÿ…...
dubbo-token验证
服务提供者过滤器 import java.util.Map; import java.util.Objects;/*** title ProviderTokenFilter* description 服务提供者 token 验证* author zzw* version 1.0.0* create 2025/5/7 22:17**/ Activate(group CommonConstants.PROVIDER) public class ProviderTokenFilt…...
C++入门之认识整型
目录 一、变量 1.导入 2.变量 2.1 变量的作用 2.2 变量的定义方式 2.3 变量的“规矩” 二、数据类型 1.概念 2.int整型 三、C的常见运算 四、输入操作 4.1 cin 4.2 try 1 try 4.2.1 cin>> 4.2.2 定义的整数类型,输入字母会怎么样? …...
【数据结构入门训练DAY-28】蓝桥杯算法提高VIP-产生数
文章目录 前言一、题目二、解题思路结语 前言 本次训练内容 训练高精度乘法。训练解题思维。 一、题目 给出一个整数 n 和 k 个变换规则。规则:一位数可变换成另一个一位数:规则的右部不能为零。例如:n234。有规则(k&…...
学习笔记:黑马程序员JavaWeb开发教程(2025.3.29)
11.5 案例-文件上传-阿里云OSS-入门 出现报错:Process exited with an error: 1 (Exit value: 1),点击exec那一行,出现错误原因:Command execution failed. 在CSDN上找到了解决方法: 之后出现新的报错:Caug…...
大语言模型中的“温度”参数到底是什么?如何正确设置?
近年来,市面上涌现了大量调用大模型的工具,如 Dify、Cherry Studio 等开源或自研平台,几乎都提供了 “温度”(Temperature) 选项。然而,很多人在使用时并不清楚该如何选择合适的温度值。 今天,…...
【C++】C++中的类型转换
🚀write in front🚀 📜所属专栏: C学习 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论,是对我最大…...
Go语言基础学习详细笔记
文章目录 初步了解Go语言Go语言诞生的主要问题和目标Go语言应用典型代表Go语言开发环境搭建经典HelloWorld 基本程序结构编写学习变量常量数据类型运算符 条件语句if语句switch 语句 跳转语句常用集合和字符串数组切片Map实现Set**字符串** 函数**基本使用用例验证** 面向对象编…...
初始图形学(7)
上一章完成了相机类的实现,对之前所学的内容进行了封装与整理,现在要学习新的内容。 抗锯齿 我们放大之前渲染的图片,往往会发现我们渲染的图像边缘有尖锐的"阶梯"性质。这种阶梯状被称为"锯齿"。当真实的相机拍照时&a…...
Linux 安装交叉编译器后丢失 `<asm/errno.h>` 的问题及解决方案
前言 在 Linux (Ubuntu等)环境下安装某些软件或开发环境时,我们可能会意外地引入交叉编译工具链,尤其是用于 ARM 架构的交叉编译器,比如 gcc-arm-linux-gnueabi 等。而这种行为会修改系统原有的开发环境,甚至导致无法编译原生程序。本文记录一次在 Ubuntu 18.04 上编译 …...
无人机上的热成像相机可以单独使用吗?
想知道无人机上的热成像相机是否可以单独使用,这需要从多个方面来分析。首先,得理解热成像相机的工作原理和依赖条件。热成像本身需要传感器和处理器来捕捉和处理红外辐射,所以无人机是否必须作为载体呢? 无人机上的热成像相机是否…...
go基于redis+jwt进行用户认证和权限控制
go基于redisjwt进行用户认证和权限控制: 基于 jwt 实现用户认证 基于 redis 记录用户的角色和权限 效果 实现 用户认证 和 权限控制 核心实现 下面的例子:有三个用户,分别为三个角色:admin、user、manager 路由: …...
深入理解Java三大特性:封装、继承和多态
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
复刻低成本机械臂 SO-ARM100 上位机控制调试
视频讲解: 复刻低成本机械臂 SO-ARM100 上位机控制调试 SO-ARM100机械臂组装并且标定完成后,下一步就是整臂的调试,由于只做了follower这个从臂,所以要使用lerobot仓库中遥操作控制的方式就不行了,这里发现了bambot这个…...
代码随想录图论part4
图论part04 字符串接龙 代码随想录 该题本质是最短路径问题,方法:广搜 通过逐个修改字符完成从一点到另一点的变换 具体是通过对栈顶字符串的每个字符用26个字母逐个替换 每次替换要判断是否抵达终点 抵达终点返回结果 没有抵达终点就判断是否是已…...
台州智惠自动化签约智橙PLM,让创新持续发生
日前,台州智惠自动化科技有限公司(以下简称“智惠自动化”)正式签约了智橙PLM,本次签约是工业自动化领域的革新者和工业研发创新平台的“新新联合”,对“制造之都”台州的制造业转型有着重要意义和深远影响。 智惠自动…...
南京大学OpenHarmony技术俱乐部正式揭牌 仓颉编程语言引领生态创新
2025年4月24日,由OpenAtom OpenHarmony(以下简称“OpenHarmony”)项目群技术指导委员会与南京大学软件学院共同举办的“南京大学OpenHarmony技术俱乐部成立大会暨基础软件与生态应用论坛”在南京大学仙林校区召开。 大会聚焦国产自主编程语言…...
实现一个漂亮的Three.js 扫光地面 圆形贴图扫光
实现一个漂亮的Three.js 扫光地面 圆形贴图扫光 https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idcircleWave import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { GUI } fr…...
第16章 Python数据类型详解:列表(List)与运维开发实践
文章目录 第16章 Python数据类型详解:列表(List)与运维开发实践一、列表的基础和入门1. 基本操作2. 常用方法3. 列表推导式(List Comprehension)二、AIOps运维视角下的列表应用1. 日志分析与异常检测2. 时间序列数据处理3. 自动化决策与响应三、DevOps运维开发视角下的列表…...
浅谈广告投放从业者底层思维逻辑
世界上的人分为两种:一种是“思辨者”,而另一种就是“吃瓜群众”。——周国元 绝大多数人因潜意识懒惰和不愿走出思维舒适区放弃思考,乐于成为“吃瓜群众”。 深以为然。 工作中,我接触的投手较多,有时候和投手A交谈…...
报表的那些事:四部演进史——架构视角下的技术跃迁与实战思考
引言 作为企业数据流转的核心载体,报表系统的设计与演进始终面临高性能、灵活性、可扩展性的平衡挑战。本文从架构师视角,以四阶段演进为脉络,结合电商等高并发场景,分享报表系统从定制化开发到混合计算体系的演进实践&#x…...
Pdf转Word案例(java)
Pdf转Word案例(java) 需要导入aspose-pdf.jar 需要先手动下载jar包到本地,然后通过systemPath在pom文件中引入。 下载地址:https://releases.aspose.com/java/repo/com/aspose/aspose-pdf/25.4/ <dependency><groupId&…...
HTML基础2-空元素,元素属性与页面的结构
目录 空元素(Void Element) 元素属性 (Attribute) 页面结构 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"w…...
2025FIC初赛(手机)
前言 记录一下自己的学习过程,网上已经有很多大佬出来全篇教程,但是我还是写出小部分,希望自己可以以点破面,什么都会等于不会,肯定是拿自己和大佬比,大佬都是全栈的。 手机取证 1. 请分析检材二&#x…...
《Python星球日记》 第43天:机器学习概述与Scikit-learn入门
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、什么是机器学习?1. 机器学习的三大类型1.1 监督学习1.2 无监督学习1.3 强化学习二、Scikit…...
Carlink 技术:搭建汽车与手机的智能桥梁
随着汽车智能化浪潮的推进,手机与车机的无缝连接已成为现代出行体验的重要组成部分。在这一背景下,ICCOA联盟推出的Carlink技术应运而生。 一、什么是Carlink Carlink是由智慧车联开放联盟(ICCOA)主导开发的新一代车机互联协议,旨在实现安卓…...
嵌入式学习--江协51单片机day2
今天学的不多,内容为:静态、动态数码管的控制,模块化编程和lcd1602调试工具 数码管的控制 由于内部电路的设计,数码管每次只能显示一个位置的一个数字,动态的实现是基于不同位置的闪烁频率高。 P2_4,P2_3,P2_2控制位…...
LLaMA-Omni 2:基于 LLM 的自回归流语音合成实时口语聊天机器人
LLaMA-Omni 2 是基于 Qwen2.5-0.5B/1.5B/3B/7B/14B/32B-Instruct 模型的一系列语音语言模型。与 LLaMA-Omni 类似,它可以同时生成文本和语音应答,从而实现高质量、低延迟的语音交互。通过新引入的流式自回归语音解码器,LLaMA-Omni 2 与 LLaMA…...
CODESYS开发环境下的快捷键和软件操作汇总
CODESYS访问变量属性无需添加应用路径的方法 CODESYS访问变量(属性)无需添加引用路径的方法_attribute qualified only-CSDN博客文章浏览阅读410次。CODESYS平台下的变量相关知识介绍大家还可以参考下面文章连接:CODESYS面向对象编程:方法/动作/属性的使用-CSDN博客文章浏览阅…...
英伟达发布Llama-Nemotron系列新模型,性能超越DeepSeek-R1
近期,英伟达重磅推出开源模型系列 Llama-Nemotron,以强悍的推理能力与高效性能引发广泛关注,被认为可能重新定义开源AI的技术格局。 该系列模型在推理速度上全面超越DeepSeek-R1,内存使用效率与吞吐表现也大幅提升。其训练策略融合…...