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

解码C语言数组

一维数组

数组相同类型数据元素的有序集合,通过下标(索引)访问元素,内存中连续存储。

数组名表示首元素地址,sizeof(arr) 返回整个数组的字节大小

核心特点

  • 元素类型一致:所有元素必须为同一数据类型(如 intfloat)。
  • 固定大小:数组长度在声明时确定,静态数组无法动态调整。
  • 下标访问:下标从 0 开始,最大下标为 长度-1

一维数组的定义与初始化

1. 基本语法

数据类型 数组名[长度];// 声明未初始化的数组
数据类型 数组名[长度] = {值列表};// 声明并初始化
  • 示例

    int numbers[5];// 声明长度为5的整型数组(元素值不确定)
    float scores[3] = {8.5, 9.0, 7.8};// 完全初始化
    char vowels[] = {'a', 'e', 'i', 'o', 'u'};// 自动推断长度为5
    

2. 初始化规则

  • 未完全初始化:剩余元素自动填充零(数值类型)或空字符(字符类型)。

    int arr[5] = {1, 2};// [1, 2, 0, 0, 0]
    char str[10] = "Hi";// ['H','i','\0',0,...,0],\0是字符串数组的结束符(必须有)
    
  • 静态初始化(全局数组):未显式初始化时,默认全零。

    static int global_arr[3];// [0, 0, 0]
    

3.逐个赋值

声明数组后,通过循环或直接索引为每个元素赋值:

int arr[5];// 声明未初始化的数组
// 逐个赋值
arr[0] = 10;// 第一个元素
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;// 或通过循环赋值
for (int i = 0; i < 5; i++) {arr[i] = (i + 1) * 10;// 赋值 10, 20, 30, 40, 50
}

4. 数组越界初始化

在C语言中,数组的初始化分为声明时初始化动态初始化。越界问题在这两种情况下有不同的表现。

a) 声明时的初始化(使用初始化列表)

定义:指在声明数组的同时用大括号 {} 提供初始值列表时,提供的值的个数超过了数组声明的长度。

例子

c

#include <stdio.h>int main() 
{
// 声明一个长度为5的数组,但尝试用6个值初始化它
int arr[5] = {1, 2, 3, 4, 5, 6};// 编译器会报错!return 0;
}
  • 后果:这是一种编译时错误。编译器(如GCC)会直接报错,提示类似 excess elements in array initializer(初始化列表中的元素超出了数组的范围)。程序无法通过编译,无法生成可执行文件。
  • 原因:数组的大小在编译时是固定的,编译器可以明确检查出初始值的数量是否匹配。

b) 动态初始化(运行时赋值)

定义:指在程序运行时,通过循环或其他逻辑为数组元素赋值时,循环变量或索引计算错误,导致试图对数组范围之外的内存进行赋值。

例子

c

#include <stdio.h>int main() {int arr[5];int i;// 错误:循环了6次 (i从0到5),最后一次arr[5]是越界写入for(i = 0; i <= 5; i++) {// 应该是 i < 5arr[i] = i * 10;}return 0;
}
  • 后果:这是一种运行时错误,属于未定义行为。编译器通常不会报错(最多可能给出警告),但程序运行时的行为是不可预测的。它可能会覆盖其他重要的数据(如其他变量、函数调用的返回地址),导致程序崩溃或产生诡异的结果。

二、数组元素的操作

1. 访问元素

通过下标(索引)访问,范围从 0 到 长度-1

int data[4] = {10, 20, 30, 40};
printf("%d\n", data[0]);// 输出10
data[3] = 50;// 修改最后一个元素为50

2. 遍历数组

使用 for 循环遍历所有元素:

for (int i = 0; i < sizeof(data)/sizeof(data[0]); i++) {printf("data[%d] = %d\n", i, data[i]);
}
  • 关键技巧:用 sizeof(data)/sizeof(data[0]) 计算数组长度。

字符数组字符串 的对比

对比项 字符数组 字符串
本质 存储字符序列的一维数组,元素类型为 char 以 '\0' 结尾的字符数组(本质是字符数组的特殊形式)。
终止符 可无 '\0'(若仅作字符集合使用)。 必须 以 '\0' 结尾,否则字符串操作函数可能出错。
初始化方式 char arr1[] = {'H','i'};(无终止符,长度2)char arr2[] = "Hi";(自动添加 '\0',长度3) 必须包含 '\0'char str[] = "Hello";(隐式添加 '\0'
内存占用 长度由显式定义或初始化列表决定。 长度 = 字符数 + 1(多1字节存放 '\0')。
操作函数 需手动遍历处理字符。 可用标准库函数(如 strlenstrcpystrcat)。
常见用途 原始字节缓冲区、非文本数据存储。 文本处理、文件读写、用户输入输出。
长度计算 sizeof(arr) 返回数组总字节数。 strlen(str) 返回 '\0' 前的字符数(不含终止符)。
修改权限 可自由修改内容(非 const 时)。 字符串字面量(如 "Hello")存储在常量区,不可修改。
输入输出 需逐个处理字符或自定义格式。 可直接用 %s 格式化输入输出。

4. 数组访问越界

这是C语言中最常见且最危险的错误之一。

定义:指在使用数组时,下标索引的值不在 [0, 数组长度 - 1] 这个有效范围内。包括读越界写越界

例子

c

#include <stdio.h>
int main() 
{int arr[5] = {10, 20, 30, 40, 50};// 有效索引: 0, 1, 2, 3, 4// 1. 读越界 - 读取不存在的数据printf("越界读取: %d\n", arr[5]);// 索引5无效printf("越界读取: %d\n", arr[-1]);// 索引-1无效// 2. 写越界 - 向非法内存地址写入数据(极其危险!)arr[5] = 100;// 破坏未知的内存arr[100] = 200;// 更严重的破坏return 0;
}

二维数组

二维数组的定义与初始化

1. 基本语法

数据类型 数组名[行数][列数];// 声明未初始化的二维数组
数据类型 数组名[行数][列数] = {初始化值};// 声明并初始化
  • 示例

    int matrix[3][4];// 声明3行4列的整型数组(元素值不确定)
    float grid[2][3] = {{1.1, 2.2, 3.3}, {4.4, 5.5, 6.6}};// 完全初始化
    char chessboard[][3] = {{'X', 'O'}, {'O', 'X'}};// 自动推断行数为2(列数表示元素类型列数不能不声明)
    

2. 初始化规则

  • 逐行初始化:内层花括号对应行,可省略内部括号(按顺序填充)。

    int arr[2][3] = {1, 2, 3, 4, 5, 6};// 等效于 {{1,2,3}, {4,5,6}}
    
  • 部分初始化:未初始化的元素自动填充零。

    int arr[2][3] = {{1}, {4, 5}};// 第一行 [1,0,0],第二行 [4,5,0]
    

二、二维数组的内存布局

1. 存储方式

二维数组在内存中按 行优先顺序 连续存储:

int arr[2][3] = {{1,2,3}, {4,5,6}};

内存布局(假设 int 占4字节):

地址: 0x1000 → 1 (arr[0][0])
地址: 0x1004 → 2 (arr[0][1])
地址: 0x1008 → 3 (arr[0][2])
地址: 0x100C → 4 (arr[1][0])
地址: 0x1010 → 5 (arr[1][1])
地址: 0x1014 → 6 (arr[1][2])

2. 计算元素地址

对于 arr[row][col],其内存地址为:

基地址 + (row * 列数 + col) * sizeof(数据类型)

三、二维数组的常见操作

1. 遍历数组

嵌套循环访问所有元素:

for (int i = 0; i < 行数; i++) {for (int j = 0; j < 列数; j++) {printf("arr[%d][%d] = %d\n", i, j, arr[i][j]);}
}

变长数组

核心特性:一旦创建,其大小就固定了,不能再改变。 这里的“变长”指的是“长度由变量决定”,而不是“长度可以变化”。

基本语法和示例

#include <stdio.h>int main() 
{int size;printf("请输入数组的大小: ");scanf("%d", &size);// 运行时才确定大小// 声明一个变长数组 (Variable-Length Array, VLA)// 其长度由变量size的值决定int myArray[size];// 像普通数组一样使用for (int i = 0; i < size; i++) {myArray[i] = i * 2;}for (int i = 0; i < size; i++) {printf("myArray[%d] = %d\n", i, myArray[i]);}return 0;
}

主要特点

  1. 长度由变量决定:数组的长度可以是任何整数表达式(只要结果为正数),而不仅仅是常量。

    int n = 10;
    int m = 5;
    float arr1[n];// 合法
    float arr2[n*2 + 1];// 合法
    float arr3[m*n];// 合法
    
  2. 通常分配在栈上:与普通自动(局部)数组一样,VLA通常在函数调用栈上分配内存。这是其最大的限制之一。

  3. 作用域和生命周期:VLA是自动存储期的对象。它的生命周期仅限于其所在的作用域(例如,函数内部或块内部)。当程序离开声明它的块时,数组占用的内存会自动被释放。

  4. 不允许在文件作用域或静态存储期使用

    // int global_vla[n]; // 错误!VLA不能是全局的
    // static int static_vla[n]; // 错误!VLA不能是static的
    int main() 
    {// 只能在块作用域内使用int n = 5;int vla[n];// 正确
    }
    
  5. 不能初始化:声明VLA时不能同时进行初始化。

    int n = 5;
    int vla[n] = {1, 2, 3, 4, 5};// 错误!编译不通过
    

零长数组

零长数组是一种在结构体中声明的、长度为零的数组。它的主要用途是作为结构体的最后一个成员,指向一段动态分配的内存空间,从而使整个结构体能够容纳可变长度的数据。

基本形式:

struct my_struct 
{int some_data;char flexible_data[0];// 这就是零长数组
};

在C语言中,结构体的大小通常是固定的。但有时我们需要一个结构体来存储一个可变长度的数据(例如,一个可变长度的字符串、一个动态数量的数组等)。

不优雅的解决方案(过去):

在零长数组出现之前,程序员常用一种称为“struct hack”的技巧,即声明一个长度为1的数组。

struct my_struct 
{int length;char data[1];// 长度为1的数组
};

然后动态分配内存时,分配 sizeof(struct my_struct) + (actual_length - 1) 的大小。这种方法可行,但语法上不美观,且标准未明确支持。

零长数组的解决方案:

零长数组让这个“Hack”变得更加直观和自然。它明确表示:“这个数组没有占用结构体本身的空间,它只是另一个内存区域的起点”。

使用零长数组的标准步骤是:

  1. 定义结构体:将零长数组作为最后一个成员。
  2. 动态分配内存:为结构体本身 加上 你希望零长数组拥有的实际长度分配内存。
  3. 使用数据:像使用普通数组一样使用零长数组成员。

示例代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义包含零长数组的结构体
struct line 
{int length;char contents[0];// 零长数组
};int main() 
{int desired_length = 20;
// 动态分配内存:结构体基础大小 + 所需的数组大小struct line *thisline = (struct line *)malloc(sizeof(struct line) + desired_length * sizeof(char));thisline->length = desired_length;
// 现在可以使用 contents 数组了,它拥有 20 个字符的空间strncpy(thisline->contents, "Hello, World!", desired_length);printf("Content: %s\n", thisline->contents);printf("Length: %d\n", thisline->length);// 释放内存free(thisline);return 0;
}

数组与数组名

1. 数组名(Array Name)

数组名是一个标识符,它代表整个数组。但在大多数表达式中,它会自动转换为指向其首元素的指针。

int arr[5] = {10, 20, 30, 40, 50};

arr 的含义:

  • 类型int* (指向整型的指针)
  • &arr[0] (数组第一个元素的地址)
  • 指针运算:以单个元素为单位进行偏移

示例:

printf("arr:     %p\n", (void*)arr);// 输出数组首元素地址
printf("&arr[0]: %p\n", (void*)&arr[0]);// 输出数组首元素地址
// 两者输出相同printf("*arr: %d\n", *arr);// 输出 10 (解引用得到第一个元素)
printf("*(arr + 1): %d\n", *(arr + 1));// 输出 20 (向后移动一个int的大小)

2. &数组名(Address of Array Name)

&arr 获取的是整个数组的地址。

&arr 的含义:

  • 类型int (*)[5] (指向长度为5的整型数组的指针)
  • :与 arr 相同(因为数组的地址就是其首元素的地址)
  • 指针运算:以整个数组为单位进行偏移

示例:

printf("&arr:    %p\n", (void*)&arr);// 输出整个数组的地址// 这个值与 arr 相同,但类型不同// 指针运算的差异:
printf("arr + 1: %p\n", (void*)(arr + 1));// 地址增加 4 字节(一个int的大小)
printf("&arr + 1: %p\n", (void*)(&arr + 1));// 地址增加 20 字节(5个int的大小,即整个数组的大小)

3. 对比表格

特性 arr (数组名) &arr (数组的地址)
类型 int* int (*)[5]
指向对象 第一个元素 arr[0] 整个数组 arr
值(地址) 与 &arr[0] 相同 与 arr 相同
+1 的偏移量 sizeof(int) 字节 sizeof(int[5]) 字节(即20字节)
主要用途 访问数组元素 操作整个数组(如传递给函数)

相关文章:

解码C语言数组

一维数组 数组是相同类型数据元素的有序集合,通过下标(索引)访问元素,内存中连续存储。 数组名表示首元素地址,sizeof(arr) 返回整个数组的字节大小 核心特点元素类型一致:所有元素必须为同一数据类型(如 int, float)。 固定大小:数组长度在声明时确定,静态数组无法动…...

github启用Disscussions讨论功能

配置步骤 1. 设置GitHub仓库并启用Discussions功能 首先需要为你的GitHub仓库启用Discussions功能:访问你的GitHub仓库: https://github.com/KkaiFang/my_notes点击 Settings 标签页向下滚动找到 Features 部分勾选 Discussions 复选框来启用讨论功能2. 配置Giscus评论系统 访…...

RWA技术规范解读:如何实现现实世界资产的合规代币化

RWA技术规范解读:如何实现现实世界资产的合规代币化 近日,深圳市信息服务业区块链协会发布了《RWA技术规范》(T/SZBA-2025),这是国内首个针对现实世界资产代币化的团体标准。本文将深入解读该规范的核心内容,帮助读者全面了解RWA代币化的技术框架和实施要点。 1. 什么是RWA…...

干货预警!Apache SeaTunnel 助力多点 DMALL 构建数据集成平台,探索AI新零售行业应用!

🎉亲爱的社区朋友们,数据集成领域的一场知识盛宴即将来袭!9 月 30 日下午 2 点,Apache SeaTunnel 社区精心策划的又一场线上 Meetup 将准时与大家云端相见!🎉亲爱的社区朋友们,数据集成领域的一场知识盛宴即将来袭!9 月 30 日下午 2 点,Apache SeaTunnel 社区精心策…...

Apache SeaTunnel 2.3.12 发布!核心引擎升级、连接器生态再扩张

近期,Apache SeaTunnel 2.3.12 正式发版。这是继 2.3.11 之后的又一次迭代,本周期合并 82 个 PR,提供 9 项新特性、30+ 项功能增强、20+ 处文档修正,并修复 43 个 Bug。核心改进集中在 SensorsData 与 Databend 生态接入,Paimon、ClickHouse、MaxCompute 等连接器读写能力…...

详细介绍:对于牛客网—语言学习篇—C语言入门—链表的题目解析

详细介绍:对于牛客网—语言学习篇—C语言入门—链表的题目解析pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New&quo…...

Day17Arrays类的初步认识

package com.cc.array;import java.util.Arrays;public class ArrayDem6 {public static void main(String[] args) {int[] a = {12, 3, 43, 4, 235, 5, 6, 45, 7, 7};System.out.println(a);//[I@f6f4d33//打印数组元素System.out.println(Arrays.toString(a));//toString:以字…...

小学生模拟赛题解

A 正常做这题显然 \(10^{18}\) 是不可做的,所以问题一定出现在 gen 上。 注意到 \(7\mid2009\),换句话说,若 \(t_1=3k(k\in\mathbb N_+)\),那么 \(t_2=t_1+9\),这就导致 \(3\mid t_2\)。以此类推,会发现对于 \(\forall i\in[2,n]\),满足 \(t_i-t_{i-1}=9\),答案就是 \(…...

服务器安装docker、mysql、redis、nginx、nacos、jdk等

一、安装docker 1.1、安装必要工具 sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm21.2、进行仓库源设置 sudo yum-config-manager \ --add-repo \ https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo1.3、docker安装安装最新…...

StringComparer.OrdinalIgnoreCase

StringComparer.OrdinalIgnoreCase 是 .NET 提供的不区分大小写、且按 Unicode 码位排序的字符串比较器,适用于哈希表、字典、集合、排序等需要显式指定比较规则的地方。1. 核心特点特性说明比较规则 不区分大小写(A == a)排序规则 纯 Unicode 码位顺序(文化无关)性能 比文…...

LLM大模型:Qwen3-Next-80B中的next究竟是个啥?

1、近期,国内LLM头号玩家阿里发布了Qwen3-Next-80B模型,但从名字上看就和其之前发布的模型不同:多了next!这就奇怪了:为啥会多出一个next?这个next究竟是啥意思了?2、自从3年前 chatGPT 3.5发布后,AI又开始大火,就是因为效果比传统的机器学习好10倍!效果为啥好了,核…...

中了勒索病毒 peng

中了勒索病毒 peng一,中招 早上一上班,看到电脑屏幕显示这样的壁纸。 居然中招了?不敢相信。 我发现自己的网盘里的所有文件,都被加密并改名,形如 aaaa.jpg.[[VlDy9dk2RaQ1F]].[[Ruiz@firemail.cc]].peng 而且这些文件,都已同步到了网盘,通过手机app访问,也只能看到这些…...

在 WSL 中通过 Bash 函数快速转换 Windows 路径为 Ansible/WSL 路径 - 教程

在 WSL 中通过 Bash 函数快速转换 Windows 路径为 Ansible/WSL 路径 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Cour…...

金融租赁公司厂商租赁业务调研报告

厂商租赁金融租赁公司厂商租赁业务调研报告 报告摘要 本报告旨在全面、深入地分析中国金融租赁公司(下称“金租公司”)厂商租赁业务的现状、模式、市场环境、监管动态、数字化转型路径及绩效评估体系。截至2025年,厂商租赁作为一种深度绑定产业的业务模式,正日益成为金租公…...

普科科技PKC7030H交直流电流探头应用指南​​

普科PKC7030H探头支持DC-120MHz带宽、1%精度,30A连续电流测量,适用于高频大电流交直流混合信号测试。在现代电力电子、新能源及高速数字系统的设计与调试中,对复杂电流波形的精准测量是分析效率、优化性能与保障可靠性的基石。​​普科科技(PRBTEK)PKC7030H高频交直流电流…...

从“分散”到“统一”,中控技术利用SeaTunnel构建高效数据采集框架,核心数据同步任务0故障运行!

本文将深入探讨中控技术基于 Apache SeaTunnel 构建企业级数据采集框架的实践,重点分享集群高可用配置、性能调优、容错机制及数据质量监控等方面的具体思考与方案。作者 | 崔俊乐引言:对企业而言,数据采集的核心挑战从来不仅仅是“同步”,而是如何在大规模、多元异构的复杂…...

再见 Cursor,Qoder 真香!这波要改写 AI 编程格局

如果把未来 AI 编程工具的核心竞争力用一句话总结,那就是:能不能让开发者在透明化的协作中,信任它、依赖它,并且和它一起把项目养大。作者:loonggg 真心建议大家去使用一下这段时间最新推出的一款 AI 编程工具:Qoder 。 真的是太好用了,一点也不比 Cursor 差。 为什么这…...

T/B cell subtype marker - un

B cell ref: https://www.abcam.cn/primary-antibodies/b-cells-basic-immunophenotypingT cell ref: https://www.abcam.cn/primary-antibodies/t-cells-basic-immunophenotyping作者:un-define出处:https://www.cnblogs.com/mmtinfo/p/19099331本文版权归作者和博客园共有,…...

SAP FICO 完全凭证替代

GGB1 这个参数是获取所有行项目的关键USING bool_data TYPE gb002_015*&---------------------------------------------------------------------* *& Form u902 *&---------------------------------------------------------------------* * text *…...

K8s Application模式下的flink任务执行精要

本文分享自天翼云开发者社区《K8s Application模式下的flink任务执行精要》,作者:l****n 构键k8s集群在这里,我们需要搭建一个K8S环境用于提供flink任务的运行时环境。在这里推荐使用kubeadm或者一些脚本工具搭建,可参考本自动k8s脚本工具。具体过程在这里省略,可以参考上…...

从0打造一个TTS语音合成引擎:原理与实现

语音合成技术(Text-to-Speech, TTS)近年来发展迅猛,从早期机械感十足的合成音到如今几乎可以以假乱真的人声,背后是深度学习技术的巨大进步。本文将带你了解现代语音合成的基本原理,并尝试用Python实现一个简易版的TTS系统。 语音合成技术演进图1:语音合成技术发展历程,…...

莫队

Argvchs 说我不会根号算法,把之前的博客搬过来,然后再补点东西。 一种离线算法,可以用 \(O(n\sqrt n)\) 的复杂度处理区间查询问题,当然,也可以带修,下文也会提到。 关于复杂度 莫队优化的关键是排序 + 分块,将每个询问离线下来,按照左端点所在块从小到大排序,假如左端…...

0voice-2.1.1-网络io与io多路复用select/poll/epoll

测试...

Java基本语句-分支语句

Java基本语句-分支语句Day05 如何在API字典中寻找自己想要的Scanner类型 1.点击搜索 输入Scanner 2.字典中回显示各种类型的获取方式: nextByte()、nextShort()、nextInt()、nextLong()、nextdouble()、nextFloat()、next()多种引用使用。 3.调用Scanner类的相关方法,来获取指定…...

丘成桐谈AI

很多重要的科学发现,是在平凡的事情里面突然有个突破。 观念上的突破,在我看人工智能有困难做不到,现在全民学人工智能, 听起来很好听,但是师资不够, 跟数学的整个合作是刚开始, AI看见万千数据 记者:您第一次感觉到AI的冲击时什么时候 Yau:哈哈我坦白跟你讲,我从来没…...

异常检测在网络安全中的应用 - 实践

异常检测在网络安全中的应用 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important; …...

大文件分片上传

分片:// 获取文件对象const inputFile = document.querySelector(input[type="file"]);// 设置分片大小:5MBconst CHUNK_SIZE = 5 * 1024 * 1024;// 文件上传事件inputFile.onchange = async (e) => {// 获取文件信息const file = e.target.files[0];// 获取文件…...

人小鼠免疫细胞maker基因 - un

人小鼠ref:https://www.abcam.cn/primary-antibodies/immune-cell-markers-poster作者:un-define出处:https://www.cnblogs.com/mmtinfo/p/19099316本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究…...

HyperWorks许可配置

在工程设计和仿真领域,正确的软件许可配置是确保工作流程顺畅、提高生产效率和实现最佳投资回报的关键。HyperWorks作为业界领先的工程仿真软件,其灵活的许可配置功能为用户提供了广泛的定制选项,确保软件能够完全满足各种业务需求。 什么是HyperWorks许可配置? HyperWorks…...

国标GB28181视频平台EasyGBS如何解决安防视频融合与级联管理的核心痛点?

国标GB28181视频平台EasyGBS如何解决安防视频融合与级联管理的核心痛点?在平安城市、雪亮工程等大型安防项目中,如何解决不同品牌设备与平台之间的互联互通难题?本文深度解析基于国标GB/T28181协议的EasyGBS视频平台的核心特点与技术优势,阐述其如何通过标准化协议,实现大…...

python基础-推导式

1.列表推导式 : 有规律的快速创建或者控制列表1.1 创建列表 eg: list1 = [ i for i in range(10)]1.2 带条件判断的列表推导式eg: list1 = [ i for i in range(50) if i % 3 == 0]3.多个for循环实现的列表推导式eg: list1 = [(item1, item2) for item1 in list2 for item2 in…...

人 CD 抗原完全指南 - un

设立分化簇 (CD) 命名系统的目的是对白细胞表面抗原进行分类。 最初,表面抗原是根据与它们结合的对应单克隆抗体进行命名。随着各实验室逐渐发现抗原常能刺激产生多种单克隆抗体,因此需要采用一种统一的命名系统。1982 年于巴黎举行的第 1 届国际人类白细胞分化抗原专题讨论会…...

Java入门知识

Java的特性和优势 简单性 面向对象 可移植性 (“Write once ,run anywhere”) 高性能 分布式 动态性 (反射机制) 多线程 (同时进行) 安全性 (异常机制,防病毒防篡改) 健壮性 在学习过程中爱上它,能够不断主动学习 在机遇来临之前,不断健壮自己 Java的三大版本 “Wri…...

AUTOSAR网络管理

汽车行业的网络管理一般有两种,一种是AutoSar另一种是OSEK,为啥汽车要网络管理,其实是为了降低车辆电池消耗,当车辆不工作时所有总线上的ECU通讯模块或整个ECU处于低功耗状态。网络管理一般用在电池供电的ECU,比如车上CAN上的ECU。为了避免通讯错误,需要网络管理来协调网…...

写用例注意点

写用例注意点: 1、测试标题 明确测试点 2、写用例的前几条用例都是主要场景的用例先写 微信个人能发微信红包 微信群发能发拼手气红包 微信群发能发拼手气红包 微信群发能发专属气红包 3、测试标题尽量写内容不要写案例: 例如验证标题能修改密码为:6666 4、相同的模块可以进…...

12 路低延迟推流!米尔 RK3576 赋能智能安防 360 环视

在智慧城市建设加速与社区安防需求升级的双重驱动下,“360 无死角监控 + 实时响应” 已成为安防领域的核心诉求。传统监控方案常受限于摄像头接入数量不足、编解码效率低、推流延迟高三大痛点,难以覆盖社区、园区等复杂场景的全点位监控,更无法满足应急事件 “毫秒级响应” …...

A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?

A公司一面:类加载的过程是怎么样的? 双亲委派的优点和缺点? 产生fullGC的情况有哪些? spring的动态代理有哪些?区别是什么? 如何排查CPU使用率过高?摘要 A公司的面经JVM的类加载的过程是怎么样的? 双亲委派模型的优点和缺点? 产生fullGC的情况有哪些? spring的动态代…...

Alternating Subsequence

CF1343C Alternating Subsequence 题目描述 回忆一下,如果序列 \(b\) 是序列 \(a\) 的一个子序列,那么 \(b\) 可以通过从 \(a\) 中删除零个或多个元素(不改变剩余元素的顺序)得到。例如,如果 \(a=[1, 2, 1, 3, 1, 2, 1]\),那么可能的子序列有:\([1, 1, 1, 1]\),\([3]\)…...

白鲸开源“创客北京2025”再摘殊荣,聚焦Agentic AI时代数据基础设施建设

近日,“创客北京2025”创新创业大赛海淀区级赛圆满落幕,经过最终比拼,北京白鲸开源科技有限公司凭借 「Agentic AI时代下的数据基础设施平台」(白鲸数据集成调度平台/WhaleStudio) 脱颖而出,荣获企业组二等奖。近日,“创客北京2025”创新创业大赛海淀区级赛圆满落幕,经…...

python基础-公共操作

数据类型间公共支持的操作符运算: + ,* ,in , not in‘+’ :支持的容器类型 字符串、列表、元组 ,实现两个容器的合并‘*’ : 支持的容器类型 字符串、列表、元组, 赋值容器内容str1 = q str1* 5 =qqqqqlist1 = [hello] list1*5 = [hello, hello, hello,…...

天翼云第九代弹性云主机:让每一次计算快人一步

随着数字化转型进程不断深入,云计算已成为推动千行百业智能化升级的核心引擎。弹性计算服务凭借其灵活扩展、高可用和高性能等特点,正持续为企业提供关键基础设施支持。面对日益复杂的业务场景与持续增长的计算需求,天翼云始终致力于通过持续创新和技术升级,推动弹性计算服…...

若依(RuoYi)框架漏洞总结

0x01 特征 绿若依 icon_hash=”706913071”蓝若依 icon_hash=” -1231872293”0x02 漏洞 弱口令 用户:admin ruoyi druid 密码:123456 admin druid admin123 admin888若依前台默认shiro key命令执行漏洞 若依默认使用shiro组件,所以可以试试shiro经典的remember…...

第一次个人项目作业_论文查重

第一次项目作业这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477这个作业的目标 实现一个3000字以上论文查重程序github连接:…...

2025年版《中科院期刊分区表》与2023年版对比表,附名单可直接查阅

2025年版《中科院期刊分区表》与2023年版相比,主要有以下几个变化‌: ‌1、发布时间提前‌:2025年版分区表从12月提前至3月发布,与投稿周期同步,学者可以尽早锁定期刊最新分区,避免“投稿后降区”的风险‌。 ‌2、增加ESCI期刊收录‌:2025年版分区表增加了ESCI期刊的收录…...

对马岛之魂

护身符 稻荷神护身符----增加资源的获取 aa...

2019年双因素认证最佳实践指南

本文深入探讨2019年双因素认证的正确实现方式,对比TOTP与WebAuthn技术优劣,分析用户行为模式,并提供实际部署建议,帮助开发者构建更安全的认证系统。2019年正确实现双因素认证 - Trail of Bits博客 自3月起,Trail of Bits一直与Python软件基金会合作,为Warehouse(PyPI的…...

Account Kit(华为账号服务)再进化,开发者接入效率飙升!

Hi 各位开发者朋友~👋 为持续优化开发体验,提升集成效率,Account Kit接入体验再升级,助力构建更流畅、更安全的登录体验,让开发效率火力全开!😎 【体验升级】华为账号相关权益申请入口统一迁移至AGC华为账号一键登录权益实时审批华为账号一键登录支持三方开发框架01 …...

软件工程个人项目

软件工程个人项目3123004548软件工程个人项目这个作业属于哪个课程 <https://edu.cnblogs.com/campus/gdgy/SoftwareEngineering2024>这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13477这个作业的目标 <设计一个…...

学习道路道阻且长 希望自己坚持下去

本人是一名专升本的大三学生 现在专业是软件工程专业 从今天开始学习java 翻了一下资料 发现很多人建议从前端开始学习 在专科学习中 也学过相应的基础知识,不过遗忘程度可能有点严重。对于语言的基本语法掌握需要加强巩固,希望自己好好坚持下去,努力学习。...

2025/9/18 总结

A 用时:2h 预期:100pts 实际:100pts 求出前缀和,\(s_k+s_i \text{xor} s_k\),考虑从高到低贪心,如果 \(s_i\) 的 \(j\) 位为 \(1\),不管如何贡献都有 \(2^j\),如果 \(s_i\) 的第 \(j\) 位为 \(0\),则 \(s_k\) 的第 \(j\) 位为 \(1\) 有 \(2_{j+1}\) 贡献,用高维前缀和…...