C语言面试题/笔试题/高频面试题
一、C:
1.static和const的作用优缺点
限制作用域:
static声明中使用全局变量、函数 ,仅当前文件内可用,其他文件不能引用
static修饰的局部变量只能在本函数中使用.
延长生命周期:
static修饰的变量生命周期为整个程序
存放位置:
static修饰的变量存放在静态区
初始化:
- static变量未赋初值时初值为0,且只初始化一次
const 是常量化的意思;
可以修饰变量,可以修饰指针。
当修饰变量的时候,因为不可以通过变量名对变量的值进行修改所以在定义变量的时候需要给变量初始化;
当修饰指针的时候,const位置不同,修饰的指针的指向或内容不能改变。
char *const a 指向不可修改,内容可以修改
char const *a 内容不可以修改,指向可以修改
const char *a 内容不可以修改,指向可以修改
2.typedef和define的区别
1.处理时机:
typedef:typedef 创建类型别名,编译器在编译时会对其进行处理。
#define:创建宏定义,预处理器在预处理阶段会对其进行处理。即在编译之前 ,预处理器会将代码中的宏定义替换为相应的内容。
3.作用范围:
typedef:typedef 定义的类型别名在作用域内有效,并且可以在多个函数或文件中使用。
#define:#define 定义的宏定义在定义位置后全局有效,可以在整个代码中使用,直到遇到 #undef 指令或代码结束。
4.语法格式:
typedef:typedef 的语法格式为:typedef <existing_type>
<new_type>;
#define:#define 的语法 <macro_name> <replacement>
5.类型安全:
typedef:typedef 创建的别名是类型安全的,因为它们实际上是原类型的别名。
#define:#define 创建的宏定义不进行类型检查,它仅仅是简单的文本替换。
6.适用场景:
typedef:typedef 通常用于创建复杂类型的别名,使代码更易读和可维护。
#define:#define 主要用于创建简单的常量或函数宏,用于简化
代码或定义一些特定的标识符
枚举(enum);
枚举是一种用户自定义的数据类型,它为一组相关的整数常量赋予了有意义的名称,枚举里成员系统会自动赋初值,第一个成员为0,依次类推;如果程序员想赋值的,假设第一个成员赋值为1,那么第二个成员系统会赋值为2,依次类推
3.volatile作用、Extern作用
volatile 主要有以下作用:
volatile是一个关键字,用于在 C 和 C++ 中修饰变量,它主要用于告诉编译器该变量的值可能在程序执行期间发生变化,从而禁止编译器对该变量进行优化。
- 告知编译器不要优化: 优化代码时,会对变量进行优化,如寄存器优化、常量传
- 播等,以提高执行效率。但对于被 volatile 修饰的变量,编译器会认为其值可能在程序执行期间被意外地更改,因此不会进行优化,确保变量的值每次都从内存中读取。
- 防止可能会存在多个线程或处理器同时访问同一个变量。如果该变量不使用 volatile 修饰,编译器可能会将其缓存到寄存器或者优化编译器缓存变量值: 在多线程或中断处理程序中,为常量,这样可能导致线程间不同步或者中断处理程序无法正确获取最新的变量值。而使用 volatile 修饰后,编译器每次都会从内存中读取变量的值,确保变量的值始终是最新的。
- 外部设备的交互与: 当程序与外部设备进行交互时,如硬件寄存器或存储映射 I/O 等,外部设备可能会在任何时候更改这些变量的值。在这种情况下,使用 volatile 修饰这些变量可以确保程序正确读取设备的状态,而不会受到编译器的优化干扰。
Extern
外部引用,引用其他文件中的全局变量或函数
4.sizeof和strlen区别
strlen是函数,用于计算字符串的长度;不包含`\0`;
sizeof是关键字,用于计算变量、数组、其他数据类型所占内存空间的大小;当sizeof计算字符串长度的时候,包含`\0`;
5.数组和链表的区别
数组
数组是一个相同类型的数据集合
数组元素可以使用数组索引随机访问
数组的数据元素在内存中连续存储
插入和删除非常耗时,时间复杂度为O(n)
数组的内存是静态分配的,在编译期间完成
数组的大小必须在数组的声明或初始化的时候指定
链表
链表是一个有相同数据类型的有序集合,其中每个元素使用指针链接
链表不允许随机访问,链表创建一个指针指向相应的数据
链表的插入和删除非常快,时间复杂度为O(1)
链表的内存分配-是动态的,在运行时动态分配
链表的大小随元素的插入或删除动态变化
链表和内核链表的区别:
- 内核链表和链表的区别:“内核链表”特指在操作系统内核环境中使用的链表,它可能有一些针对操作系统需求的特殊设计或优化;
- 而“链表”则是一个更通用的概念,可以应用于任何软件开发场景。
- 内核链表通常是由操作系统内核提供的,并且有一套封装好的函数来支持其操作。
- 当我们在用户空间的程序中使用链表时,通常需要自己定义链表的数据结构以及相关的操作函数。
6.指针相关
指针就是地址,指针变量就是存放地址的变量;指针可以使用简单的运算符操作;指针加一或者自加,代表指向下一个元素;对于32位系统,指针占4字节
数组是同名类型是数组数据的集合,内存连续。数组的首地址,是地址常量,不可以进行自加等操作;
指针数组的本质是数组,数组里存放的是指针。int *p[3]
数组指针的本质是指针,指向数组的指针称为数组指 针。int (*p)[3]可以间接访问二维数组。
函数指针本质是指针,指向函数的指针 ,一般用做函数的参数,实现代码复用,也可以作为结构体成员,指向某个函数。 int (*p)(int,int)
函数指针数组:本质上是一个数组,存储多个类型相同的函数指针
格式: 存储类型 数据类型 (*函数指针数组变量名[常量表达式])(参数列表)
7.结构体和共用体区别
二者都是构造数据类型
1)结构体:让C语言实现面向对象的思想。结构体使用的时候,结构体中每一个成员都有自己的内存空间,计算结构体大小的时候要注意内部字节对齐;
2)共用体又叫联用体,大小等于成员中占内存最大的那个大小。合体,每一个成员都共享内存空间。因此共用体大小等于成员中占内存最大的那个大小。
结构体 (struct)
- 内存分配:每个成员变量都有其自己的内存空间。
- 内存是连续分配的,但可能由于对齐规则导致有填充字节。
- 访问成员:可以同时访问所有成员。
- 大小:结构体的总大小等于所有成员所占空间之和加上任何对齐填充的空间。
结构体的大小并不是简单的将每个成员的大小相加就能得到的
sizeof(struct 结构体名); // 结构体类型的大小
结构体内存对齐规则
- 第一个成员在结构体变量偏移量为0的地址处。(及结构体的首地址处)
- 个数字(对齐数)的整其他成员变量要对齐到某数倍
- 如果嵌套了结构体,嵌套的结构体对齐到自己的最大整数的倍数处,结构体整体的大小就是所有最大对齐数的整数倍
对齐数:该结构体成员变量自身的大小与编译器默认(64位是8、32位是4)的一个大小比较,取小值
- 用途:
- 用于组合不同类型的变量以形成一个复合数据类型。
- 常用于表示复杂的数据结构,例如一个人的信息包含姓名、年龄和身高。
共用体 (union)
- 内存分配:所有成员共享同一段内存空间。
- 访问成员:不能同时访问所有成员,因为它们共享相同的内存位置。
- 当改变一个成员的值时,会 影响其他成员的值。
- 大小:共用体的大小等于最长的成员所占的空间。
- 用途:
- 用于节省内存,当多个数据成员不可能同时使用时。
- 常用于实现动态数据类型,如变长数组或实现多态性。
结构体大小计算(字节对齐)
#pragma 是一个预处理指令,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作,#pragma pack 的 主要作用就是改变编译器的内存对齐方式
(1)结构体各个成员变量的首地址必须是 min{自身对齐值,指定对齐值的整数倍。
(2)结构体各个成员相对于结构体起始地址的偏移量(offset)是 min{该成员数据类型大小,指定对齐值} 的整数倍,如有需要,编译器会在成员之间加上填充字节。
(3)结构体分配的总空间大小必须是 min {其最宽基本数据类型成员,指定对齐值} 的整数倍,如有需要编译器会在最末一个成员之后加上填充字节。
堆和栈的区别
(1)管理方式不同。
栈编译器自动管理,无需程序员手动控制;
堆空间的申请释放工作 由程序员控制,通过 malloc/free申请释放空间,容易产生内存泄漏。
(2)空间大小不同。
栈是向低地址扩展的数据结构,是一块连续的内存区域。
堆是向高地址扩展的数据结构,是不连续的内存区域。
(3)是否产生碎片。
对于堆来讲,频繁的malloc/free(new/delete)势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低(虽然程序在退出后操作系统会对内存进行回收管理)。对于栈来讲,则不会存在这个问题。
(4)增长方向不同。
堆的增长方向是向上的,即向着内存地址增加的方向;栈的增长方向是向下的,即向着内存地址减小的方向。
栈区存放局部变量,函数形参,函数返回值。
用户空间划分:
代码段(Text Segment):存放程序的机器指令。
数据段(Data Segment):存放已初始化的全局变量和静态变量。
BSS段(BSS Segment):存放未初始化的全局变量和静态变量。
堆(Heap):动态分配的内存区域,如使用malloc或new分配的内存。
栈(Stack)-099:用于局部变量、形参、返回值存储。
相关文章:
C语言面试题/笔试题/高频面试题
一、C: 1.static和const的作用优缺点 限制作用域: static声明中使用全局变量、函数 ,仅当前文件内可用,其他文件不能引用 static修饰的局部变量只能在本函数中使用. 延长生命周期: static修饰的变量生命周期为整个程序 存放位置&a…...
rust websocket Echo server高性能服务器开发
最近在学习websocket时,一直没有发现好的websocket server工具来调试,于是就自己做了一个websocket server用来学习和调试。因为rust性能遥遥领先,所以就采用了rust来搭建服务器。废话不多说直接上代码main.rs: use tokio::net::TcpListener; use tokio_tungstenite::tung…...
Docker打包SpringBoot项目
一、项目打成jar包 在进行docker打包之前,先确定一下,项目能够正常的打成JAR包,并且启动之后能够正常的访问。这一步看似是可有可无,但是能避免后期的一些无厘头问题。 二、Dockerfile 项目打包成功之后,需要编写Doc…...
ViT学习笔记(二) Patch+Position Embedding阶段的详细推演与理解
我认为讲得最好的一个文章:Vision Transformer详解-CSDN博客 有很多文章,自己并没有完全正确理解。 我的笔记,以ViT的标准应用为例: • 输入图像:输入图像的尺寸是224x224,且是RGB图像,因此输…...
Elasticsearch 单节点安全配置与用户认证
Elasticsearch 单节点安全配置与用户认证 安全扫描时发现了一个高危漏洞:Elasticsearch 未授权访问 。在使用 Elasticsearch 构建搜索引擎或处理大规模数据时,需要启用基本的安全功能来防止未经授权的访问。本文将通过简单的配置步骤,为单节…...
【PHP项目实战】活动报名系统
目录 项目介绍 开发语言 后端 前端 项目截图(部分) 首页 列表 详情 个人中心 后台管理 项目演示 项目介绍 本项目是一款基于手机浏览器的活动报名系统。它提供了一个方便快捷的活动报名解决方案,无需下载和安装任何APP,…...
ASP.NET Core8.0学习笔记(二十五)——EF Core Include导航数据加载之预加载与过滤
一、导航属性数据加载 1.在EF Core中可以使用导航属性来加载相关实体。 2.加载实体的三种方式: (1)预先加载:直接在查询主体时就把对应的依赖实体查出来(作为初始查询的一部分) (2)显式加载:使用代码指示稍后显式的从…...
【RK3562J开发笔记】MCP2518FD外部CAN-FD控制器的调试方法
“SPI转CAN-FD”是嵌入式开发领域的常用方法,它极大地促进了不同通信接口之间的无缝连接,并显著降低了系统设计的复杂性。飞凌嵌入式依托瑞芯微RK3562J处理器打造的OK3562J-C开发板因为内置了SPI转CAN-FD驱动,从而原生支持这一功能。该开发板…...
docker安装Emqx并使用自签名证书开启 SSL/TLS 连接
docker安装Emqx并使用自签名证书开启 SSL/TLS 连接 一、获取自签名证书1、创建openssl.cnf文件2、生成证书自签名证书 二、docker安装EMQX1、初始化目录2、加载镜像文件并挂载相应的文件目录3、启动docker容器4、EMQX加载自签名证书 三、客户端MQTTX连接测试四、Springboot整合…...
AI驱动的低代码平台:解密背后的算法与架构创新
引言 在如今的数字化浪潮中,企业对软件的需求正以前所未有的速度增长。传统的开发方式由于开发周期长、成本高,已逐渐无法满足市场的快速变化。而低代码平台的出现,使得开发者和业务人员能够以极简的方式快速构建应用。然而,随着企…...
ruoyi的excel批量导入
最简单方式 若依的官方文档提供了教程,可以按照起前后端的教学,进行代码编写 前段 组件 <!-- 导入对话框 --><el-dialogtitle"导入数据"v-model"openImport"width"500px"append-to-body><el-uploadref&quo…...
大数据-244 离线数仓 - 电商核心交易 ODS层 数据库结构 数据加载 DataX
点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! 目前开始更新 MyBatis,一起深入浅出! 目前已经更新到了: Hadoop࿰…...
Spring Security
一.权限控制 1.1 认证和授权概念 问题1:在生产环境下我们如果不登录后台系统就可以完成这 些功能操作吗? 答案显然是否定的,要操作这些功能必须首先登录到系统才可 以。 问题2:是不是所有用户,只要登录成功就都可以操…...
OpenAI 正式发布 o1 完整版
OpenAI 在 o1 模型完整版,该模型相较于之前的 o1-preview 版本在智能能力上有所提升,特别是在编程能力方面,并且能够根据问题的难度智能调节响应速度。此外还新增了图像识别功能,但目前仍然不支持网页浏览、文件上传等功能 o1 模…...
Ubuntu22.04搭建LAMP环境(linux服务器学习笔记)
目录 引言: 一、系统更新 二、安装搭建Apache2 1.你可以通过以下命令安装它: 2.查看Apache2版本 3.查看Apache2运行状态 4.浏览器访问 三、安装搭建MySQL 1.安装MySQL 2.查看MySQL 版本 3.安全配置MySQL 3.1是否设置密码?(按y|Y表…...
C#与PLC通讯时,数据读取和写入浮点数,字节转换问题(ModbusTCP)
在与PLC进行通讯时,会发现一个问题,浮点数1.2接收过来后,居然变成了两个16位的整数。 经过一系列的分析,这是因为在PLC存储浮点数时32位,我们接收过来的数据会变成两个16位的高低字节,而且我们进行下发数据…...
synchronized的特性
1.互斥 对于synchronized修饰的方法及代码块不同线程想同时进行访问就会互斥。 就比如synchronized修饰代码块时,一个线程进入该代码块就会进行“加锁”。 退出代码块时会进行“解锁”。 当其他线程想要访问被加锁的代码块时,就会阻塞等待。 阻塞等待…...
NLP与LLM的工程化实践与学习思考 - 说说知识图谱
NLP与LLM的工程化实践与学习思考[24年半年工作总结] - 说说知识图谱 0 真的就是先说说1 为什么知识图谱什么是知识图谱?基于图的数据结构?基于数据结构的图?知识图谱的技术要点两个技术维度:知识、图七个技术要点:表示…...
php 系统函数 记录
PHP intval() 函数 PHP函数介绍—array_key_exists(): 检查数组中是否存在特定键名 如何使用PHP中的parse_url函数解析URL PHP is_array()函数详解,PHP判断是否为数组 PHP函数介绍:in_array()函数 strpos定义和用法 strpos() 函数查找字符串在另一字符串…...
游戏引擎学习第38天
仓库: https://gitee.com/mrxiao_com/2d_game 回顾上次的内容。 我们之前讨论了将精灵放在屏幕上,但颜色错误的问题。问题最终查明是因为使用了一个调整工具,导致文件的字节顺序发生了变化。重新运行“image magic”工具对一些大图像进行重新处理后&am…...
Android 15 行为变更:所有应用
Android 15 平台包含一些可能会影响您的应用的行为变更。以下行为变更将影响在 Android 15 上运行的所有应用,无论采用哪种 targetSdkVersion 都不例外。您应该测试您的应用,然后根据需要进行修改,以适当地支持这些变更。 此外,请…...
基于pytorch的深度学习基础4——损失函数和优化器
四.损失函数和优化器 4.1 均值初始化 为减轻梯度消失和梯度爆炸,选择合适的权重初值。 十种初始化方法 Initialization Methods 1. Xavie r均匀分布 2. Xavie r正态分布 4. Kaiming正态分布 5. 均匀分布 6. 正态分布 7. 常数分布 8. 正交矩阵初…...
《Clustering Propagation for Universal Medical Image Segmentation》CVPR2024
摘要 这篇论文介绍了S2VNet,这是一个用于医学图像分割的通用框架,它通过切片到体积的传播(Slice-to-Volume propagation)来统一自动(AMIS)和交互式(IMIS)医学图像分割任务。S2VNet利…...
Webpack Source Map 配置详解与优化策略
前言 Source Map 是前端开发和调试中的核心工具之一,它可以显著提高我们在代码调试和错误追踪方面的效率。随着 JavaScript 应用越来越复杂,代码打包和优化成为必然,而这一过程会使得调试变得异常困难。Source Map 的出现,为我们…...
el-tree组件刷新指定id的节点数据
示例 封装一个可以刷新多个指定id的节点数据。 <template><el-tree ref"treeRef"></el-tree> </template><script lang"ts" setup> const treeRef ref()function refreshTreeById(nodeIds: number[]) {nodeIds.forEach((…...
深入 Java 基础 XML:高级特性与最佳实践
在上一篇文章中,我们对 Java 基础 XML 有了一个初步的认识,了解了 XML 的基本结构以及在 Java 中常见的解析方式。今天,我们将进一步深入探讨 Java 与 XML 的结合,包括一些高级特性和最佳实践。 一、XML 命名空间 在复杂的 XML …...
aws(学习笔记第十六课) 使用负载均衡器(ELB)解耦webserver以及输出ELB的日志到S3
aws(学习笔记第十六课) 使用负载均衡器(ELB)以及输出ELB的日志到S3 学习内容: 使用负载均衡器(ELB)解耦web server输出ELB的日志到S3 1. 使用负载均衡器(ELB) 全体架构 使用ELB(Elastic Load Balancer)能够解耦外部internet访问和web server之间的耦合,…...
Ubuntu与Centos系统有何区别?
Ubuntu和CentOS都是基于Linux内核的操作系统,但它们在设计理念、使用场景和技术实现上有显著的区别。以下是详细的对比: 1. 基础和发行版本 Ubuntu: 基于Debian,使用.deb包管理系统。包含两个主要版本: LTSÿ…...
【OpenDRIVE_Python】使用python脚本读取txt指定内容,输出OpenDRIVE数据中对应的信息
示例代码说明: 读取txt指定内容如地物id,输出OpenDRIVE数据中的对应地物id和名称name信息为xml文件 import xml.dom.minidom from xml.dom.minidom import parse from xml.dom import Node import sys import os # 读取OpenDRIVE文件路径 xml_filepath…...
Qt入门8——Qt文件
1. Qt文件概述 文件操作是应用程序必不可少的部分。Qt作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。 2. 输入输出设备类 在…...
【每天一道面试题】JWT是什么?Java-jwt是什么?(2024/12/7)
【每天一道面试题】JWT是什么?Java-jwt是什么?(2024/12/7) JWT:JSON Web Token 俗称令牌 当我们想实现: 1.用户不用输入用户名和密码就可以登录(不用每次都输入用户名和密码) 2.用户的信息在传…...
ORB-SLAM3源码学习:ImuTypes.cc:Eigen::Matrix3f RightJacobianSO3计算右雅可比矩阵
前言 计算右雅可比矩阵这个函数涉及到了函数重载,可以接受不同的参数来实现计算右雅可比矩阵。 代码分析 右雅可比矩阵: /** * brief 计算右雅可比* param xyz 李代数* return Jr*/ Eigen::Matrix3f RightJacobianSO3(const float &x, const fl…...
电子公文交换系统设计 ——基于商用密码标准的密码模块的应用
文章目录 《密码系统设计》实验实验项目实验四 密码模块的应用实践要求(40 分) 《密码系统设计》实验 实验项目 实验序号实验名称实验学时数实验目的实验内容实验类型学生学习预期成果实验四密码模块的应用6基于商用密码标准的密码模块的应用对电子公文…...
java抽象类
目录 一.抽象类 1.什么是抽象类 2.抽象类特点 (1)抽象类不能直接实例化对象 (2)可以包含抽象方法和具体方法 (3)可以有构造方法 (4)抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修…...
渤海证券基于互联网环境的漏洞主动防护方案探索与实践
来源:中国金融电脑 作者:渤海证券股份有限公司信息技术总部 刘洋 伴随互联网业务的蓬勃发展,证券行业成为黑客进行网络攻击的重要目标之一,网络攻击的形式也变得愈发多样且复杂。网络攻击如同悬于行业之上的达摩克利斯之剑&…...
ClouderaManager 集群搭建
前提:服务器之前做过域名映射、免密登录 ClouderaManager 集群 1. 组件分布规划 服务器服务器h1zk、hdfs(dn)、yarn(nm)、spark、kafka、flumeh2hdfs(nn-standy)、yarn(rm-active)、sparkh3hdfs(nn-active)、yarn(rm-standy)、hive、sparkh4zk、hdfs(dn)、yarn(n…...
Nginx部署PHP服务端跨域以及跨域携带cookie
🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 ✨一、前言 前端技术栈Vue+后端技术栈PHP+Mysql鉴权以及存储信息用…...
流量转发利器之Burpsuite概述(1)
目录 一、Burpsuite Burp Suite Spider 的主要特点: 在 Burp Suite 中使用 Spider: Spider 的用例: 限制: 声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 声明:本文主要用作技…...
【优选算法 二分查找】二分查找算法入门详解:二分查找小专题
x 的平方根 题目解析 算法原理 解法一: 暴力解法 如果要求一个数(x)的平方根,可以从 0 往后枚举,直到有一个数(a),a^2<x,(a1)^2>x,a即为所求; 解法二:二分查找 …...
LeetCode—56. 合并区间(中等)
题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例1: 输入&#x…...
SHELL----正则表达式
一、文本搜索工具——grep grep -参数 条件 文件名 其中参数有以下: -i 忽略大小写 -c 统计匹配的行数 -v 取反,不显示匹配的行 -w 匹配单词 -E 等价于 egrep ,即启用扩展正则表达式 -n 显示行号 -rl 将指定目录内的文件打…...
web斗地主游戏实现指北
前后端通信 作为一个即时多人游戏,不论是即时聊天还是更新玩家状态,都需要服务端有主动推送功能,或者客户端轮询。轮询的时间间隔可能导致游玩体验差,因为不即时更新,而且请求数量太多可能会打崩服务器。 建议在cs间…...
ES(elasticsearch)整合Spring boot使用实例
1.1通过docker安装es详细教程参考 docker部署elasticsearch(内涵集群部署的compose文件)-CSDN博客 2.1创建MySQL数据库,通过sql命令进行表的创建与数据的写入(sql命令如下) /*Navicat Premium Data TransferSource Server : localSo…...
创建简单的 PL/pgSQL 存储过程
文章目录 创建简单的 PL/pgSQL 存储过程CREATE OR REPLACE FUNCTIONadd_two_numbers(a integer, b integer)RETURNS integerAS$$ ... $$函数体LANGUAGE plpgsql 创建带有 IN 和 OUT 参数的存储过程创建修改数据的存储过程创建带有异常处理的复杂存储过程 在 PostgreSQL 中&…...
前端路径“@/“的使用和配置
环境:vitets 需要安装types/node npm install types/node --save-dev在tsconfig.json中添加 如果有tsconfig.app.json和tsconfig.node.json文件,则在app.json中添加 "compilerOptions": {"baseUrl":".","paths&q…...
彻底理解ThreadLocal的应用场景和底层实现
一.概念 定义: ThreadLocal 是 Java 中所提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意方法中获取缓存的数据。 其实是可以通过调用 Set() 方法往里面存入值,存入的值是每个线程互…...
机器学习(5)无监督模型之降维PCA算法
主成分分析(Principal Component Analysis, PCA) 是一种经典的无监督学习算法,主要用于数据降维、特征提取和数据可视化。它通过线性变换将数据从原始空间映射到一个新的空间,使得数据的方差最大化,从而实现降维。PCA …...
React 组件中 State 的定义、使用及正确更新方式
🌈个人主页:前端青山 🔥系列专栏:React篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容React 组件中 State 的定义、使用及正确更新方式 前言 在 React 应用开发中,state …...
18 设计模式之迭代器模式(书籍遍历案例)
一、什么是迭代器模式 迭代器模式(Iterator Pattern)是一种行为型设计模式,允许客户端通过统一的接口顺序访问一个集合对象中的元素,而无需暴露集合对象的内部实现。这个模式主要用于访问聚合对象(如集合、数组等&…...
Springboot3介绍
一、Springboot3简介: https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html?spmwolai.workspace.0.0.68b62306Q6jtTw#getting-started.introducing-spring-boot 无论使用XML、注解、Java配置类还是他们的混合用法,配置文件过于…...