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

C语言笔记(指针题目)例题+图解

        本文分为两部分 ,第一部分为数组、字符串、字符指针在sizeof和strlen中的辨析,第二部分是一些笔试题目。若有错误,请批评指正。

目录

1.第一部分

1.1.数组名的使用

1.1.1一维整型数组在sizeof中的使用

1.1.2一维字符数组在sizeof中的使用

1.1.3一维字符数组在strlen中的使用

1.1.4.一字符串在sizeof中的使用

1.1.5.一字符串在strlen中的使用

1.2字符指针在sizeo和strlen中的使用

1.2.1 字符指针在sizeof中的使用

1.2.2 字符指针在strlen中的使用

2.第二部分(指针笔试题)


1.第一部分

注意:

1.sizeof()是操作符,只关注占用的内存空间的大小,单位是字节,不访问内存中的存储的内容。
2.strlen()是库函数,用来求字符串的长度,统计的是字符'\0'出现之前的字符的个数,当函数在内存中找到’\0‘才算结束,所以strlen可能会越界访问。

3.以下所有的代码均在32位的环境中,因此地址为4个字节。

3.数组名字的意义

        1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。
        2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址。
        3. 除此之外所有的数组名都表示首元素的地址。

1.1.数组名的使用
1.1.1一维整型数组在sizeof中的使用
int main()
{int a[] = { 1,2,3,4 };printf("%d\n", sizeof(a));  //16 ()中只有数组名,表示整个数组,所测量的是整个数组printf("%d\n", sizeof(a + 0));//a+0就是数组首元素的地址,地址的大小为4个字节printf("%d\n", sizeof(*a));//*a表是的数组首元素,是一个整型变量 4个字节//a不是单独存在时,表示的首元素地址,*a就是元素  1 printf("%d\n", sizeof(a + 1));//a为首元素地址,+1之后还是地址  4个字节printf("%d\n", sizeof(a[1]));// 数组第二个元素  4个字节printf("%d\n", sizeof(&a));//&a数组指针,地址为 4个字节printf("%d\n", sizeof(*&a));// * & 两者相互抵消,是整个数组, 16个字节printf("%d\n", sizeof(&a + 1));//是地址,指向的是第二个元素, 4个字节printf("%d\n", sizeof(&a[0])); //首元素地址  4个字节printf("%d\n", sizeof(&a[0] + 1)); //第二个元素地址  4个字节return 0;
}
1.1.2一维字符数组在sizeof中的使用
int main()
{char arr[] = { 'a','b','c','d','e','f' };//char类型数据大小为一个字节printf("%d\n", sizeof(arr));// 6个字节,arr单独存放,是整个数组printf("%d\n", sizeof(arr + 0));//4个字节,(arr+0)表示为首元素地址printf("%d\n", sizeof(*arr));// 1个字节 ,arr表示首元素地址,*arr为首元素'a'printf("%d\n", sizeof(arr[1]));// 1个字节,第二个元素'b'printf("%d\n", sizeof(&arr));//4个字节  数组指针,&arr为地址printf("%d\n", sizeof(&arr + 1));//4个字节  地址加1还是地址,数据类型不变printf("%d\n", sizeof(&arr[0] + 1));//4个字节 取首元素的地址,+1还是地址return 0;
}
1.1.3一维字符数组在strlen中的使用

        strlen 的返回值是字符的个数,形式参数是字符指针

size_t strlen ( const char * str );

  size_t                无符号整型,返回值

 const char * str  字符指针,形式参数  const为关键字限定str无法修改

int main()
{char arr[] = { 'a','b','c','d','e','f' };printf("%d\n", strlen(arr));	//随机值,arr为数组的首元素地址,但是数组中没有'\0'printf("%d\n", strlen(arr + 0));//arr+0,arr是地址+0之后还是地址,函数无法接受,printf("%d\n", strlen(*arr));	//表示是'a'— 97,非法访问,printf("%d\n", strlen(arr[1])); //表示是'b'— 98,非法访问printf("%d\n", strlen(&arr));   //数组指针,是指针会报警的,但是从数组指针开始计算还是随机值printf("%d\n", strlen(&arr + 1));// 数组指针,+1 之后地址跳过数组,随机值printf("%d\n", strlen(&arr[0] + 1));//表示的是第二个元素的地址,也是随机值return 0;
}
1.1.4.一字符串在sizeof中的使用
int main()
{char arr[] = "abcdef";//数组中的元素是 a b c d e f \0  共7个元素printf("%d\n", sizeof(arr));	// 7个字节,数组名字单独存放就是整个数组printf("%d\n", sizeof(arr + 0));//4个字节 arr+0表示&arr[0],首元素地址printf("%d\n", sizeof(*arr));	// 一个字节printf("%d\n", sizeof(arr[1])); // 一个字节printf("%d\n", sizeof(&arr));	// 四个字节printf("%d\n", sizeof(&arr + 1));// 四个字节printf("%d\n", sizeof(&arr[0] + 1));// 四个字节return 0;
}
1.1.5.一字符串在strlen中的使用

        数组名在strlen函数中仍然是首个元素的地址。

int main()
{char arr[] = "abcdef";//数组中的元素是 a b c d e f \0  共7个元素printf("%d\n", strlen(arr)); // 6 字符串中有6个字符 '\0' 不算在内printf("%d\n", strlen(arr + 0));//6 表示&arr[0],首元素的地址,printf("%d\n", strlen(*arr));//*arr是'a',非法访问 printf("%d\n", strlen(arr[1]));//arr[1]是'b',属于非法访问printf("%d\n", strlen(&arr));//6  &arr是数组指针,printf("%d\n", strlen(&arr + 1));// 5 &arr是数组指针,但是其指向的仍然是数组的首元素处// +1 之后指向数组的第二个元素,跳过了第一个元素  printf("%d\n", strlen(&arr[0] + 1));// 5  一个元素的地址 +1 跳过了 第一个元素return 0;
}

1.1.6二维数组在sizeof中的使用

        二维数组的数组名表示的是首行元素的地址,是数组指针。arr[0]是第一行数组。

int main()
{int a[3][4] = { 0 };printf("%d\n", sizeof(a));// 48个字节,一共12个元素,一个元素 4个字节printf("%d\n", sizeof(a[0][0]));// 第一个元素, 4 个字节printf("%d\n", sizeof(a[0]));// 第一行数组  a[0]是第一行数组的名字,单独存在即一个数组  16个字节printf("%d\n", sizeof(a[0] + 1));//a[0]为首元素地址,+1跳到第二个元素地址,4个字节printf("%d\n", sizeof(*(a[0] + 1)));// 4个字节  第二个元素printf("%d\n", sizeof(a + 1));// a + 1表示是a[1]是第二行地址 4个字节printf("%d\n", sizeof(*(a + 1)));// 表示的是第二行的数组, 16个字节printf("%d\n", sizeof(&a[0] + 1));// &a[0]是第一行的地址,+1 指是第二行的地址, 4个字节printf("%d\n", sizeof(*(&a[0] + 1)));//第二行有四个元素, 16个字节printf("%d\n", sizeof(*a));//a为首元素地址,就是第一行的地址, 16个字节printf("%d\n", sizeof(a[3]));//访问的是数组的第四行元素,数组越界,但是可以计算,//sizeof()中表达式是不会计算的,不会访问真是的空间,按照类型出的结果。// *a -- *(a+0) -- a[0]return 0;
}
1.2字符指针在sizeo和strlen中的使用
1.2.1 字符指针在sizeof中的使用
int main()
{char *p = "abcdef";printf("%d\n", sizeof(p));//p为指针 4个字节printf("%d\n", sizeof(p + 1));// +1 跳出整个字符串地址4个字节printf("%d\n", sizeof(*p));// p 指向的第一个元素 *p 就为 'a'  1个字节printf("%d\n", sizeof(p[0]));// p[0] --*(p+0),首个元素   1个字节printf("%d\n", sizeof(&p));//  二级指针   4个字节 printf("%d\n", sizeof(&p + 1));// 二级指针 +1 还是指针 4个字节printf("%d\n", sizeof(&p[0] + 1));//第一个元素的指针 +1 表示的第二个元素的指针 4个字节 return 0;
}
1.2.2 字符指针在strlen中的使用
int main()
{char *p = "abcdef";printf("%d\n", strlen(p));// p是一个指向'a'的一个字符指针, 6printf("%d\n", strlen(p + 1));// 5 指针+1  指针指向的是 'b'printf("%d\n", strlen(*p));// 非法访问printf("%d\n", strlen(p[0]));// 相当于 *(p+0)非法访问printf("%d\n", strlen(&p));// 二级指针 随机值printf("%d\n", strlen(&p + 1));// 随机值 printf("%d\n", strlen(&p[0] + 1)); //5 &p[0]相当于p了 , p+1指向第二个元素return 0;
}

2.第二部分(指针笔试题)

本部分共八个题目

1.

int main()
{int a[5] = { 1, 2, 3, 4, 5 };int *ptr = (int *)(&a + 1);           // &a+1 已经跳出整个数组了 //强制转换成int*类型的指针 printf("%d,%d", *(a + 1), *(ptr - 1));//(a+1)中的a为首元素地址 a+1 只想第二个元素return 0;							  
}
//结果为 2,5  

分解

(1)第4行

int *ptr = (int *)(&a + 1);    

        &a为数组指针,指向的是数组的首元素地址;所以&a+1就可以跳出整个数组,+1它的步长就是整个数组的长度。

        (int*)为强制转换类型,(int *)(&a + 1)可以把数组指针&a+1强制转换成整型指针,并且将指针的值赋予ptr,那么ptr的值和(&a+1)是一样的,但是其类型,步长是不一样的

printf("%d,%d", *(a + 1), *(ptr - 1))

        a+1中的a表示首元素的地址,a+1表示是第二个元素的地址,*(a+1)解引用的就是 2

*(ptr-1),ptr的地址向低地址移动四个字节,指向的是第五个元素。*(ptr-1)为5。

2.

#include <stdio.h>
struct Test
{int Num;char *pcName;short sDate;char cha[2];short sBa[4];
}*p;
//假设p 的值为0x100000。 如下表表达式的值分别为多少?
//结构体的大小是20字节
int main()
{int p = 0x100000;printf("%p\n", p + 0x1);//p+1 0x100000+0x1=0x100001printf("%p\n", (unsigned long)p + 0x1);//强制转换成 无符号整型 0x100001printf("%p\n", (unsigned int*)p + 0x1);//强制转换成无符号整型指针 +1 就是+0x4  结果为 0x100004 return 0;
}

     上述程序结果为0x00100001 0x00100001 0x00100004 

         *p为结构体指针,但是此题中根本没有使用到结构体指针的大小和指向等问题,

printf("%p\n", p + 0x1);

        0x1对于十进制来说就是1;但是输出的是%p形式,以地址的方式输出,要输出8位数字。

p=0x100000+0x1=0x100001;输出的是0x00100001。

printf("%p\n", (unsigned long)p + 0x1);

        (unsigned long)p 将p强制转换成无符号整型,但是输出的仍然是地址的形式,因此和上面+1计算一样,结果都是 0x00100001。

printf("%p\n", (unsigned int*)p + 0x1);

     (unsigned int*)p 将p强制转换成无符号指针类型,其大小为4个字节,+1步长为4个字节,

因此p+1就是指针加4,结果就是0x00100001+0x4,输出为0x00100001。

3.

//机器为小端存储
int main()
{int a[4] = { 1, 2, 3, 4 };int *ptr1 = (int *)(&a + 1);int *ptr2 = (int *)((int)a + 1);//a为数组的第一个元素的指针,强制转换成int 图解//数组a 的存储方式 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00printf("%x,%x", ptr1[-1], *ptr2);//ptr[-1]-- *(ptr-1)return 0;
}
//结果 0x4 ,0x2000000//%x就是打印16进制的字符

        数组元素的存储方式为小端存储,小端存储就是数据低位放在地址值,数据高位放在高地址。

a[4]数组在内存中的存储方式:每一个小方块为一个字节,有8个bit的内存。

       

int *ptr1 = (int *)(&a + 1);

            &a为数组指针,指向的是数组的首元素地址;所以&a+1就可以跳出整个数组,+1它的步长就是整个数组的长度。

int *ptr2 = (int *)((int)a + 1)

        a为数组名,是首元素地址,强制转化成int类型,+1就是数字+1,强制转换成int*类型,a在原来地址的基础上向高地址挪动一个字节,相当于指向第一个整型元素的第2个字节。*ptr,输出的是整型元素,需要从低地址到高地址四个字节,从第一个元素的第二个字节,到第二个元素的第一个字节,因此 *ptr就是 0x2000000 。

4.

#include <stdio.h>
int main()
{int a[3][2] = { (0, 1), (2, 3), (4, 5) };//int a[3][2] = {1,3,5};int *p;p = a[0];//a[0]是第一行的数组名,是第一行的首元素地址printf("%d", p[0]);//p[0] -- *(p+0)return 0;
}

   结果为 1 。

int a[3][2] = { (0, 1), (2, 3), (4, 5) }

         (0,1)逗号表达式,表达式从左向右,最后表达式的结果就是整个表达式的结果。那么得出:

int a[3][2] = { 1, 3, 5 }
p = a[0]

        a[0]为二维数组首行数组的名字,数组名字就是首元素的地址,将首元素地址赋值给p,输出的自然是首元素1啊。

5.

int main()
{int a[5][5];int(*p)[4];//数组指针p = a;//printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);return 0;//二者的步长一致,相差为4  图解//fffffffc  -4
}

a等价于 int (*)[5] 指向是元素为5的数组
p等价于 int (*)[4] 指向是元素为4的数组
根据图&p[4][2] - &a[4][2]相差四个元素 结果为-4
-4 的原码 10000000 00000000 00000000 00000100反码 10000000 00000000 00000000 00000011补码 11111111 11111111 11111111 111111100 地址不会区分原码、反码 、补码,地址就是内存中存储的补码。转换成16进制 ff ff ff fc 
p = a;

        将a的int (*)[5]的数值强行赋值给了p;p的类型是int (*)[4],指向的是四个指针的数组。

a为首元素地址,是第一行的数组指针,类型是int (*)[5]。

数组在内存中存储的排序为

        强制复制后p就为a地址,但是p指向的是int[4]类型的数组,因此步长为4个整型数据,假设所模拟后的数组为4个元素为一行。

图解

 &p[4][2] - &a[4][2],

        可以看出,其中间相差4个步长,数值为-4。

6.

7.

8.

相关文章:

C语言笔记(指针题目)例题+图解

本文分为两部分 &#xff0c;第一部分为数组、字符串、字符指针在sizeof和strlen中的辨析&#xff0c;第二部分是一些笔试题目。若有错误&#xff0c;请批评指正。 目录 1.第一部分 1.1.数组名的使用 1.1.1一维整型数组在sizeof中的使用 1.1.2一维字符数组在sizeof中的使用…...

从零开始的 vue项目部署到服务器详细步骤(vue项目build打包+nginx部署+配置ssl证书)

从零开始的 vue项目部署到服务器详细步骤&#xff08;vue项目build打包nginx部署配置ssl证书&#xff09; 文章目录 从零开始的 vue项目部署到服务器详细步骤&#xff08;vue项目build打包nginx部署配置ssl证书&#xff09;一、前言二、vue项目部署前配置1、vite.config.js 增加…...

[OceanBase-不止于记录]:揭秘双引擎战略,共探AI时代数据架构未来

前言 又到了一年一度大家最爱的探会文章&#xff0c;非常荣幸收到OceanBase官方的邀请参加2024 OceanBase 年度发布会&#xff0c;作为一个经常参加线下探会的博主&#xff0c;每一次体验都有所不同&#xff0c;每一次新技术的突破都让人感到无比兴奋。同时&#xff0c;作为数…...

项目:抽奖系统

文章目录 1. 项目&#xff1a;抽奖系统 1. 项目&#xff1a;抽奖系统 from faker import Fakerfk Faker(localezh_CN)name_list [] for i in range(100):name_list.append(fk.name()) print(name_list)import randomclass MyFrame(wx.Frame):def __init__(self):wx.Frame.__…...

synchronized进阶原理

synchronized进阶原理 1.轻量级锁 轻量级锁的使用场景:如果一个对象虽然有多个线程访问,但多线程访问的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化(如果出现竞争,操作系统会将轻量级锁升级为重量级锁)。轻量级锁对使用者是透明的(由操作系统控制),即语法仍是s…...

C++,STL 052(24.10.29)

内容 1.对map容器的大小进行操作。 2.map容器的交换操作。 运行代码 #include <iostream> #include <map>using namespace std;void printMap(map<int, int> &m) {for (map<int, int>::iterator it m.begin(); it ! m.end(); it){cout <<…...

git下载和配置

git是什么&#xff1f; Git是一种分布式版本控制系统&#xff0c;用于跟踪文件的变化&#xff0c;尤其是源代码。它允许多个开发者在同一项目上进行协作&#xff0c;同时保持代码的历史记录。Git的主要特点包括&#xff1a; 分布式&#xff1a;每个开发者都有项目的完整副本&a…...

Linux基础—基础命令及相关知识5(ubuntu网络配置)

网络的配置方法 centos网络配置 centos的网卡位置 /etc/sysconfig/network-scripts/ifcfg-ens33(centos网卡文件) bootproto表示获得IP地址的方式是静态的还是动态 onboot表示启动系统时是否激活该网络接口 设置IP地址&#xff0c;子网掩码&#xff0c;网关&#xff0c;dns…...

使用 firewall-cmd 管理 Linux 防火墙

firewalld-cmd命令翻译<一> Linux 系统中&#xff0c;firewalld 是一个流行的动态防火墙管理工具&#xff0c; firewall-cmd 是它的命令行接口。通过 firewall-cmd&#xff0c;可以轻松地管理防火墙规则、配置区域&#xff08;zones&#xff09;、处理端口等。 这篇文章…...

鸿蒙OS试题

哪些是持续部署最佳实践? A. 灰度发布:先在小部分用户或区域进行部署&#xff0c;观察没问题后再全面推广 B.手工部署:持续部署可以采用手工部署的方式发布软件: 1、有一份非常详尽的文档&#xff0c;该文档描述了执行步骤及每个步骤中易出错的地方; 2、以手工测试来确认该…...

Flutter InkWell组件去掉灰色遮罩

当InkerWell组件内部获取到焦点时&#xff0c;会展示一层灰色遮罩 将focusColor属性设置为透明即可 Flutter InkWell焦点效果源码分析 问题描述 当 InkWell 组件获得焦点时&#xff0c;会显示一层灰色遮罩效果。需要找出这个效果是由哪些组件控制的&#xff0c;以及具体的…...

Android——metaData

获取元数据信息的步骤&#xff1a; 调用 getPackageManager 方法获得当前应用的包管理器调用包管理器的 getActivityInfo 方法获得当前活动的信息对象活动信息对象的 metaData 是 Bundle 包裹类型&#xff0c;调用包裹对象的 getString 即可获得指定名称的参数值 配置 metaDa…...

SLAM|1. 相机投影及相机畸变

一个能思考的人&#xff0c;才真是一个力量无边的人。——巴尔扎克 本章主要内容&#xff1a; 1.针孔相机模型 2.相机成像的几个坐标系图像 3.畸变及相机标定 本节主要介绍在照相机拍摄过程中&#xff0c;现实物体如何跟照片上的像素关联起来&#xff0c;具体涉及相机成像的物…...

nginx配置及虚拟主机

nginx配置及虚拟主机 一、http协议介绍1、网站类型2、涉及的软件3、http协议介绍 二、nginx安装、启动1、nginx介绍2、nginx安装3、nginx启动管理 三、nginx配置文件1、配置文件语法结构2、全局配置3、事件驱动模型的配置4、http的配置 四、虚拟主机配置1、类型2、基于名称的虚…...

ElasticSearch - Bucket Script 使用指南

文章目录 官方文档Bucket Script 官文1. 什么是 ElasticSearch 中的 Bucket Script&#xff1f;2. 适用场景3. Bucket Script 的基本结构4. 关键参数详解5. 示例官方示例&#xff1a;计算每月 T 恤销售额占总销售额的比率百分比示例计算&#xff1a;点击率 (CTR) 6. 注意事项与…...

Android的SQLiteOpenHelper类 笔记241027

SQLiteOpenHelper SQLiteOpenHelper是Android开发中用于管理SQLite数据库的一个非常重要的工具类。以下是对SQLiteOpenHelper的详细介绍&#xff1a; 一、基本概念 SQLiteOpenHelper是一个抽象类&#xff0c;它主要用于管理数据库的创建和版本管理。通过继承这个类&#xff…...

「Mac畅玩鸿蒙与硬件10」鸿蒙开发环境配置篇10 - 项目实战:计数器应用

本篇将通过一个简单的计数器应用,带你体验鸿蒙开发环境的实际操作流程。本项目主要练习组件的使用、事件响应和状态管理,帮助开发者熟悉基本的应用构建流程。 关键词 计数器应用组件操作事件响应状态管理HarmonyOS 应用开发一、创建计数器项目 1.1 在 DevEco Studio 中新建项…...

安卓逆向之ARM汇编寻址,汇编指令

一&#xff1a;ARM汇编寻址 1. 立即数寻址 (Immediate Addressing) 指令中直接给出一个常数值&#xff08;立即数&#xff09;&#xff0c;并对其进行操作。 MOV R0, #5 ; 将立即数5载入寄存器R02. 直接寻址 (Direct Addressing) 指令中给出的地址直接指定了内存中的一…...

Idea常见插件(超级实用)

文章目录 Idea好用的插件推荐Idea插件安装Chinese(中文版)Alibaba Java Coding Guidelines&#xff08;代码规范&#xff09;Auto Filling Java Arguments&#xff08;自动补全参数&#xff09;CamelCase&#xff08;变量名称格式转换&#xff09;CodeGeeX&#xff08;智能&…...

C++中如何获取时间并格式化为字符串?

在C中&#xff0c;你可以使用标准库中的 <chrono> 和 <iomanip> 头文件来获取当前时间并将其格式化为字符串。以下是一个简单的示例&#xff0c;展示了如何获取当前时间并将其格式化为一个可读的字符串&#xff08;例如&#xff1a;YYYY-MM-DD HH:MM:SS&#xff09…...

项目1 yolov5鱼苗检测计数

yolov5鱼苗检测 1. yolov5鱼苗检测1.1. 环境配置1.2 Predict1.3 Validate1.4 Train1.5 生成 ONNX 2 代码解析2.1 模型2.2 数据集2.3 损失函数2.4 训练2.5 预测 之前做的项目&#xff0c;再回顾一下 环境&#xff1a;GPU1卡&#xff0c;CPU4核&#xff0c;每显卡12GB&#xff0c…...

GPU 学习笔记三:GPU多机多卡组网和拓扑结构分析(基于数据中心分析)

文章目录 一、概述二、数据中心&#xff08;DC&#xff09;2.1 数据中心简介2.2 传统数据中心的网络模型2.3 脊叶网络模型&#xff08;Spine-Leaf&#xff09;2.4 Facebook的Fabric网络架构 三、基于数据中心的多机多卡拓扑3.1 Spine-Leaf 架构网络规模测算方法3.2 NVIDIA多机多…...

各编程语言处理HTTP状态码的库推荐

Http 状态码用那个库 备注 Spring 的状态码库为 org.springframework.http.HttpStatus Apache 的状态码库为&#xff1a; org.apache.http.HttpStatus 通常这 2 个库都差不多。 如你的项目中已经用了 Spring 的代码的话&#xff0c;那么就用 Spring 的库吧。 不管是那个库…...

【Mac】Python 环境管理工具

一、pyenv 1、安装 &#xff08;1&#xff09;安装 brew install pyenv&#xff08;2&#xff09;环境配置 查看系统使用 shell 是 bash 还是 zsh bash 配置文件&#xff1a;~/.bash_profile zsh 配置文件&#xff1a;~/.zshrc userMac ~ % echo $SHELL /bin/zsh userMa…...

大语言模型数据流程源码解读(基于llama3模型)

文章目录 前言一、数据进入LlamaForCausalLM(LlamaPreTrainedModel)类二、数据进入LlamaModel(LlamaPreTrainedModel)类1、input_ids的embedding编码2、position_ids位置获取3、causal_mask因果mask构建1、causal_mask调用2、因果mask代码解读(_update_causal_mask)4、hidden_s…...

[蓝桥杯 2015 省 A] 饮料换购

题目描述 乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料&#xff0c;凭 3 个瓶盖可以再换一瓶 C 型饮料&#xff0c;并且可以一直循环下去(但不允许暂借或赊账)。 请你计算一下&#xff0c;如果小明不浪费瓶盖&#xff0c;尽量地参加活动&#xff0c;那么&#xff…...

K8S测试pod内存和CPU资源不足

只设置requests参数 mysql主从pod启动后监控 读压测之后 同时设置limits和requests&#xff0c;只调低内存值 监控 压力测试 同时设置limits和requests&#xff0c;只调低CPU值 初始状态 开始压测 结论 对于CPU&#xff0c;如果pod中服务使用CPU超过设置的limits&…...

rabbitmq 使用注意事项

1&#xff0c;注意开启的端口号&#xff0c;一共四个端口号&#xff0c;1883是mqtt连接的端口号&#xff0c;如果没开&#xff0c;是连接不上的需要手动起mqtt插件。 //开始mqtt插件服务 rabbitmq-plugins enable rabbitmq_mqtt 2&#xff0c;15672端口是http网页登录的管理后…...

<项目代码>YOLOv8 夜间车辆识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…...

xterm.js 库作用

前言&#xff1a;xterm.js 是一个用于在网页上模拟终端的强大 JavaScript 库。 一、在网页中实现终端模拟 1. 提供类似终端的界面 xterm.js可以在浏览器中创建一个看起来和行为都类似于传统终端的界面。这包括显示命令行提示符、接受用户输入、显示命令输出等。 例如&#…...

WordPress版块隐藏/搜索引擎优化的含义

背景 早期互联网只是用来访问查看&#xff0c;不需要关心谁在访问查看。HTTP是一种无状态的协议&#xff0c;每个请求都是完全独立的&#xff0c;服务端无法确认当前访问者的身份信息&#xff0c;为了标示用户&#xff0c;就出现了Cookie&#xff0c;而Cookie、Token、JWT 都是…...

免费简历制作网站推荐/营销方式有哪几种

3.hibernate 进行多表查询每个表中各取几个字段&#xff0c;也就是说查询出来的结果集没有一个实体类与之对应如何解决&#xff1f; 可以将查询返回一个DynaBean比如List<DynaBean>liststatement.executeSQLQuery("select a.aa,b.bb from a,b");for(DynaBean d…...

唐山做网站企业/优化师

什么是FireMonkey的Winsoft条形码? Winsoft Barcode v6.1用于FireMonkey的Delphi和C Builder条形码组件。 Winsoft Barcode for FireMonkey v6.1的Winsoft条码主要功能&#xff1a; 利用Zint条形码生成器 支持50多种符号&#xff0c;包括Code 128&#xff0c;Data Matrix&…...

江苏建设信息网站/职业培训机构哪家最好

调用函数和交换数据从 C 调用 MATLAB 函数&#xff0c;从而将变量传递给 MATLAB 并将变量返回给 C。Evaluate MATLAB expression from C and write variables into the MATLAB base workspace.Pass variables from C to MATLAB as function arguments or by placing those vari…...

网站解析是做a记录吗/网上怎么发布广告

目录 1 BIO基本介绍 2 BIO工作机制 3 同步阻塞案例 4 BIO模式多发和多收消息 1 BIO基本介绍 BIO是就是传统的io编程&#xff0c;其相关的类和接口在Java.io BIO:同步阻塞&#xff0c;服务器实现模式为一个线程一个连接&#xff0c;即客户端有连接请求时服务器端就需要启动一个…...

做网站用php哪些知识点/自己建网站怎么建

声明&#xff1a; ● 本专栏是自己在学习慕课网Liuyubobobo老师的《算法与数据结构体系课》 时&#xff0c;自己做的笔记&#xff1b; ● 主要目的是供自己学习、总结、回顾之用&#xff0c;其中很多内容书写记录的时候包含了很多个人语言&#xff1b; ● 读者如果想更好的理解…...