【C语言系列】数据在内存中存储
数据在内存中存储
- 一、整数在内存中的存储
- 二、大小端字节序和字节序判断
- 2.1什么是大小端?
- 2.2练习
- 2.2.1练习1
- 2.2.2练习2
- 2.2.3练习3
- 2.2.4练习4
- 2.2.5练习5
- 2.2.6练习6
- 三、浮点数在内存中的存储
- 3.1练习
- 3.2浮点数的存储
- 3.2.1 浮点数存的过程
- 3.2.2 浮点数取的过程
- 3.3题目解析
- 四、总结
- 4.1整数在内存中的存储
- 4.2大小端字节序
- 4.3浮点数在内存中的存储
- 4.4总结
一、整数在内存中的存储
整数的2进制表示方法有三种,即原码、反码和补码。
有符号整数,符号位 0 —— 正 1 —— 负,最高位为符号位
正整数的原、反、补码都相同。
负整数的三种表示方法各不相同,如下:
原码:直接被数值按照正负数的形式翻译成二进制得到的是原码。
反码:将原码的符号位不变,其他位次按位取反,就得到了反码。
补码:反码+1就得到补码。
注:对于整形来说:数据存放内存中其实存放的是二进制补码。
为什么呢?
在计算机系统中,数值一律用补码来表示和存储。 原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
二、大小端字节序和字节序判断
当我们了解了整数在内存中存储后,我们调试看一个细节:
int main()
{
int n = 0x11223344;
return 0;
}
调试结果如下图:
注:
1.整数在内存中存储的是二进制的补码。
2.在调试窗口中观察内存的时候,为了方便展示,显示的是16进制的值。
3.存储的顺序是倒过来的!
进行调试后,观察上述图片我们可以看到n中的 0x11223344 这个数字是按照字节为单位,倒着存储的。这是为什么呢?
2.1什么是大小端?
x86 —— 小端模式(DSP) KEIL C51 —— 大端模式
其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储。
大端字节序存储:把一个数据的低位字节的内容存储到高地址处,把高位字节的内容存储到低地址处。
小端字节序存储:把一个数据的低位字节的内容存储到低地址处,把高位字节的内容存储到高地址处。
如下图:
为什么有大小端模式之分?
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit 位,但是在C语言中除了8 bit 的char 之外,还有16 bit 的 short 型,32 bit 的 long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致大端存储模式和小端存储模式。
2.2练习
2.2.1练习1
设计一个小程序来判断当前机器的字节序:
#include <stdio.h>
int main()
{
int n = 1;
if(*(char*) & n == 1)printf("小端\n");
elseprintf("大端\n");
//0x00 00 00 01
//01 00 00 00
//00 00 00 01
return 0;
}
对于if语句阔号内的解析:(把下面的A换成n即可)
运行结果如下图:
2.2.2练习2
signed char a;//有符号的;char —— 1个字节 —— 8bit位。
unsigned char b;//无符号的; 2^8 —— 256。
如果是signed char 类型,那么内存中的最高位就被当做符号位。
signed char类型的取值范围是-128~127;对于unsigned char的取值范围是 0 ~ 255。
代码2:
#include <stdio.h>
int main()
{
//char到底是有符号的char还是无符号的char是取决于编译器的!
//在VS上char == signed char
char a = -1;
//10000﹍﹍0001
//11111﹍﹍1110
//11111﹍﹍1111
//11111111 —— a
signed char b = -1;//整型提升
//11111111 —— b
unsigned char c = -1;
//11111111 —— c
printf("a = %d,b = %d,c = %d",a,b,c);
//-1 -1 255
return 0;
}
运行结果如下图:
2.2.3练习3
代码3:
#include <stdio.h>
int main()
{
char a = -128;//1000﹍﹍10000000 —> 1111﹍﹍01111111
printf("%u\n",a);//?4294967168//—> 1111﹍﹍10000000
//%u的形式打印,是认为a中存放的是无符号数//10000000 —— a//整型提升
//a是char类型,首先要整型提升
return 0;
}
运行结果如下图:
代码4:
#include <stdio.h>
int main()
{
char a = 128;
printf("%u\n",a);//4294967168
return 0;
}
运行结果如下图:
2.2.4练习4
代码5:
//signed short -32768 ~ 32767
//unsigned char 0 ~ 65535
#include <stdio.h>
int main()
{
char a[1000];//0 ~ 999
int i;
for(i = 0;i < 1000;i++)
{
a[i] = -1-i;
}
//-1 -2 -3 -4 ﹍﹍ -127 -128 127 126 ﹍﹍ 4 3 2 1 0 -1 -2 ﹍﹍
printf("%zd",strlen(a));//求的是字符串的长度,统计的是\0(ASCII码值是0)之前的字符个数
//255
return 0;
}
运行结果如下图:
2.2.5练习5
代码6:
#include <stdio.h>
unsigned char i = 0;//unsigned char 的取值范围是0 ~ 255
int main()
{
for(i = 0;i <= 255;i++)
{
printf("hello world\n");//死循环打印
}
return 0;
}
运行结果如下图:
代码7:
#include <stdio.h>
int main()
{
unsigned int i;
for(i = 9;i >= 0;i--)//死循环
{
printf("%u\n",i);
}
return 0;
}
运行结果如下图:
2.2.6练习6
代码8:
#include <stdio.h>
//X86环境小端字节序
int main()
{
int a[4] = {1,2,3,4};//1.指针+1,取决于指针的类型;2.整数+1,就是+1。//&a —— int(*)[4]
int*ptr1 = (int*)(&a + 1);
int*ptr2 = (int*)((int)a + 1);
printf("%x,%x",ptr1[-1],*ptr2);//4 2000000
return 0;
}
三、浮点数在内存中的存储
浮点数:float、double、long double类型
浮点数表示的范围:float.h中定义;整数的取值范围:limits.h中定义。
3.1练习
练习代码如下:求其运行结果
#include <stdio.h>
int main()
{//说明:整数和浮点数在内存中的存储方式是不一样的。
int n = 9;
float*pFloat = (float*)&n;//int*
printf("n的值为: %d\n",n);//9
printf("*pFloat的值为: %f\n",*pFloat);//0.000000
*pFloat = 9.0;
printf("n的值为: %d\n",n);//1091567616
printf("*pFloat的值为:%f\n",*pFloat);//9.000000
return 0;
}
运行结果如下图:
3.2浮点数的存储
根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成下面的形式:
V = (-1)S * M * 2E
(-1)S表示符号位,当S = 0,V为正数;当S = 1,V为负数。
M表示有效数字,M是大于等于1,小于2的。
2E表示指数位
如下图所示:
注:所以浮点数的存储,其实存储的就是S,M,E相关的值。
IEEE 754规定:
对于32位的浮点数(float),最高的1位存储符号位S,接着的8位存储指数E,剩下的32位存储有效数字M。
对于64位的浮点数(double),最高的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M。
3.2.1 浮点数存的过程
IEEE 754对有效数字M和指数E,还有一些特别规定:
1 <= M <2,M可写为1.xxxxxx的形式,其中xxxxxx表示小数部分。
IEEE754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分,比如:保存1.01时,只保存01,等读取时,再把第一位的1加上,这样做的目的是节省1位有效数字。
至于指数E,情况比较复杂:
首先,E为一个无符号整数(unsigned int) E为8位,0 ~ 255;E为11位,0 ~ 2047。
我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023.比如,2^10的E是10,所以保存32位浮点数时,必须保存成10+127=137,即10001001。即使是浮点数也是有最大值和最小值。
E也是有最大值和最小值的, E+127 E+1023
int main()
{//5.5
float f = 5.5f;
//5.5 —> 101.1 —> 1.011*2^2 —> (-1)^0*1.011*2^2
//S = 0 M = 1.011 E = 2
//2 + 127 = 129
//01 00 0000 1011 00000000000000000000
//40 B0 00 00
return 0;
}
3.2.2 浮点数取的过程
指数E从内存中取出还可以分成三种情况:
E不全为0或者不全为1
这时,浮点数就采用下面的规则表示,即指数E的计算值减去127(或者1023),得到真实值,再将有效数字M前加上第1位的1。
E全为0
这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的1,而是还原为0,xxxxxx的小数,这样做是为了表示±0,以及接近于0的很小的数字。
E全为1
这时,如果有效数字M全为0,表示±无穷大(正负取决于符号S)
3.3题目解析
代码如下:
#include <stdio.h>
int main()
{
int n = 9;
float*pFloat = (float*)&n;//int*
printf("n的值为: %d\n",n);//9
printf("*pFloat的值为: %f\n",*pFloat);//0.000000
//站在pFloat的视角,它会认为自己指向的是1个float类型的数值,当内存中的E为全0的时候,真实的E:1-127 —> -126 有效数字M,取出后不再加上第1位的1
//(-1)^0*0.0000﹍01001*2^(-126) ≈ 0
*pFloat = 9.0;
printf("n的值为: %d\n",n);//1091567616
printf("*pFloat的值为: %f\n",*pFloat);//9.000000
return 0;
}
图文解释:
四、总结
本文详细讨论了整数和浮点数在内存中的存储方式以及相关的字节序和浮点数表示方法。文章主要涉及了三部分内容:整数在内存中的存储,大小端字节序的判断与实现,以及浮点数在内存中的存储和转换。
4.1整数在内存中的存储
文章首先介绍了整数在内存中的存储方式。整数使用原码、反码和补码三种形式表示,其中,原码是最直接的表示方式,反码是通过对原码符号位之外的所有位取反得到的,而补码则是在反码的基础上加1得到。补码在计算机中被广泛应用,因为它不仅能有效表示正负数,还简化了加法和减法操作。计算机中所有整数的存储都是以补码的形式进行的,这样可以统一处理符号位和数值域,并且不需要额外的硬件支持,这使得计算更加高效。
4.2大小端字节序
文章进一步探讨了大小端字节序的问题。在计算机系统中,超过一个字节的数据如何存储在内存中,会受到字节序的影响。字节序分为大端和小端两种模式。在大端字节序中,数据的高位字节存储在低地址处,低位字节存储在高地址处;而在小端字节序中,低位字节存储在低地址处,高位字节存储在高地址处。这种存储顺序的差异,主要是由于计算机处理器的寄存器宽度大于一个字节,导致了如何安排多字节数据的问题。文章还通过代码示例,展示了如何判断当前系统的字节序。通过访问内存中的字节,判断数据的存储顺序,从而确定系统使用的是大端还是小端字节序。
4.3浮点数在内存中的存储
接着,文章讲解了浮点数在内存中的存储方式。浮点数采用IEEE 754标准来表示,在此标准下,浮点数由符号位、指数部分和有效数字部分组成。对于32位的浮点数(float类型),符号位占1位,指数占8位,有效数字占23位。对于64位的浮点数(double类型),符号位占1位,指数占11位,有效数字占52位。浮点数的表示使用科学计数法,其中符号位表示正负,指数部分表示数字的范围,有效数字则表示具体的数值。通过这种表示方法,浮点数能够有效表示非常大或非常小的数值,且能够处理精确的小数部分。
浮点数的存储与整数有所不同,尤其是在对存储内容的解读时,浮点数的指数和有效数字需要特殊处理。例如,当浮点数的指数部分全为0时,它表示的是接近于0的非常小的数字,而不是普通的0。对于有效数字部分,IEEE 754标准规定了它的存储方式,即默认保留第一位为1,因此只存储后续的小数部分。这些存储规则有助于节省内存空间,同时确保浮点数的精度和范围。
4.4总结
通过本篇文章,我们了解了整数和浮点数在内存中的存储原理,以及大小端字节序的差异。对于整数,补码的存储方式提供了一个简洁高效的处理方案,能够统一处理符号和数值域。大小端字节序的存在是由于处理器寄存器的宽度大于一个字节,在不同的系统中会有不同的存储顺序。浮点数的存储则遵循IEEE 754标准,通过符号位、指数和有效数字来表示浮动的数值范围。所有这些知识对于理解计算机内部的数据存储和处理方式至关重要,尤其是当我们需要优化程序或进行低级编程时。
相关文章:
【C语言系列】数据在内存中存储
数据在内存中存储 一、整数在内存中的存储二、大小端字节序和字节序判断2.1什么是大小端?2.2练习2.2.1练习12.2.2练习22.2.3练习32.2.4练习42.2.5练习52.2.6练习6 三、浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1 浮点数存的过程3.2.2 浮点数取的过程 3.3题目…...
qt 对QObject::tr()函数进行重定向
在 Qt 中,QObject::tr() 函数用于国际化(i18n),它用于标记需要翻译的字符串。通常情况下,tr() 函数会从翻译文件(如 .qm 文件)中查找对应的翻译字符串。如果你希望重定向 tr() 函数的行为&#…...
C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为
开场白 各位程序猿/媛们,今天我们来聊一聊编程世界里的"金钱观"。 你以为只有人类会纠结现金和存款的区别?不不不,C#中的值类型和引用类型每天都在上演这场大戏! 而我们的string同学,表面是…...
自动驾驶背后的数学:多模态传感器融合的简单建模
上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...
如何设置sudo权限
打开终端:按 Ctrl Alt T 打开终端。 编辑 sudoers 文件: 使用 visudo 命令编辑 /etc/sudoers 文件(visudo 会检查语法,避免错误): sudo visudo 添加用户权限: 在文件中找到以下行࿱…...
Codeforces Round 1012 (Div. 2) 3.23
文章目录 2025.3.23 Div2B. Pushing Balls(暴力)代码 C. Dining Hall题意思路代码 2025.3.23 Div2 Dashboard - Codeforces Round 1012 (Div. 2) - Codeforces B. Pushing Balls(暴力) 题意很好懂,每一行每一列从左…...
langfuse追踪Trace
介绍 🧠 Langfuse 是什么? Langfuse 是一个专门为 LLM 应用(如 OpenAI / LangChain / 自定义 Agent) 设计的 观测与追踪平台(Observability Platform)。 简单说,它就像是你为 AI 应用插上的 “…...
Java-模块二-2
整数类型 byte:在 Java 中占用8位(1字节),因此它的取值范围是从 -128 到 127。这是最小的整数类型,适合用于节省空间的情况。 short:这种类型的大小是16位(2字节),允许的…...
使用VS2022编译CEF
前提 选择编译的版本 CEF自动编译,在这里可以看到最新的稳定版和Beta版。 从这里得出,最新的稳定版是134.0.6998.118,对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...
大模型RLHF训练-PPO算法详解:Proximal Policy Optimization Algorithms
一、TL;DR 提出了一种新的策略梯度方法家族,用于强化学习,这些方法交替进行与环境交互采样数据提出了一个新的目标函数,使得能够进行多个小批量更新的多轮训练这些新方法为近端策略优化(Proximal Policy Optimization…...
【STM32实物】基于STM32的扫地机器人/小车控制系统设计
基于STM32的扫地机器人/小车控制系统设计 演示视频: 基于STM32的扫地机器人小车控制系统设计 简介:扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采…...
【C++初阶】从零开始模拟实现vector(含迭代器失效详细讲解)
目录 1、基本结构 1.1成员变量 1.2无参构造函数 1.3有参构造函数 preserve()的实现 代码部分: push_back()的实现 代码部分: 代码部分: 1.4拷贝构造函数 代码部分: 1.5支持{}初始化的构造函数 代码部分: …...
AI比人脑更强,因为被植入思维模型【21】冯诺依曼思维模型
定义 冯诺依曼思维模型是一种基于数理逻辑和系统分析的思维方式,它将复杂的问题或系统分解为若干个基本的组成部分,通过建立数学模型和逻辑规则来描述和分析这些部分之间的关系,进而实现对整个系统的理解和优化。该模型强调从整体到局部、再…...
Keil5调试技巧
一、引言 Keil5作为一款广泛应用于嵌入式系统开发的集成开发环境(IDE),在微控制器编程领域占据着重要地位。它不仅提供了强大的代码编辑和编译功能,还具备丰富的调试工具,帮助开发者快速定位和解决代码中的问题。本文…...
Web PKI现行应用、标准
中国现行 Web PKI 标准 中国在 Web PKI(公钥基础设施)领域制定了多项国家标准,以确保网络安全和数字证书管理的规范性。以下是一些现行的重要标准: 1. GB/T 21053-2023《信息安全技术 公钥基础设施 PKI系统安全技术要求》 该标…...
ROS多机通信(四)——Ubuntu 网卡 Mesh 模式配置指南
引言 使用Ad-hoc加路由协议和直接Mesh模式配置网卡实现的网络结构是一样的,主要是看应用选择, Ad-Hoc模式 B.A.T.M.A.N. / OLSR 优点:灵活性高,适合移动性强或需要优化的复杂网络。 缺点:配置复杂,需手动…...
【实用部署教程】olmOCR智能PDF文本提取系统:从安装到可视化界面实现
文章目录 引言系统要求1. 环境准备:安装Miniconda激活环境 2. 配置pip源加速下载3. 配置学术加速(访问国外资源)4. 安装系统依赖5. 安装OLMOCR6. 运行OLMOCR处理PDF文档7. 理解OLMOCR输出结果9. 可视化UI界面9.1 安装界面依赖9.2 创建界面应用…...
STM32单片机uCOS-Ⅲ系统11 中断管理
目录 一、异常与中断的基本概念 1、中断的介绍 2、和中断相关的名词解释 二、中断的运作机制 三、中断延迟的概念 四、中断的应用场景 五、中断管理讲解 六、中断延迟发布 1、中断延迟发布的概念 2、中断队列控制块 3、中断延迟发布任务初始化 OS_IntQTaskInit() 4…...
CTF【WEB】学习笔记1号刊
Kali的小工具箱 curl www.xxx.com:查看服务器响应返回的信息 curl -I www.xxx.com:查看响应的文件头 一、cmd执行命令 ipconfig:ip地址配置等; 二、 Kali操作 1.sudo su; 2.msfconsole 3.search ms17_010 永恒之蓝ÿ…...
cpp-友元
理解 C 中的友元(Friend) 在 C 语言中,封装(Encapsulation) 是面向对象编程的重要特性之一。它允许类将数据隐藏在私有(private)或受保护(protected)成员中,…...
Spring AOP 核心概念与实践指南
第一章:AOP 核心概念与基础应用 1.1 AOP 核心思想 面向切面编程:通过横向抽取机制解决代码重复问题(如日志、事务、安全等)核心优势:不修改源代码增强功能,提高代码复用性和可维护性 1.2 基础环境搭…...
利用ffmpeg库实现音频Opus编解码
一、编译与环境配置 libopus库集成 需在编译FFmpeg时添加--enable-libopus参数,编译前需先安装libopus源码并配置动态库路径。最新FFmpeg 7.1版本默认支持Opus的浮点运算优化和VBR/CVBR模式。 多平台兼容性 Opus支持Windows/Linux/macOS平台࿰…...
深入理解指针(1)(C语言版)
文章目录 前言一、内存和地址1.1 内存1.2 究竟该如何理解编址 二、指针变量和地址2.1 取地址操作符&2.2 指针变量和解引用操作符*2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针-整数3.3 voi…...
计算机网络——通信基础和传输介质
物理层任务:实现相邻节点之间比特(0或1)的传输 到了数据链路层之后,它会以帧为单位,把若干个比特交给物理层,物理层需要把这些比特信息转化成信号,在物理传输媒体上进行传输 通信基础基本概念 信…...
【橘子网络】关于网络分层以及协议的全局讲解
一、网络设备 1、硬件网络设备 1.1、主机(host) 主机的定义比较广泛,所有的接收流量或者发送流量的设备都可以被称之为主机。可以是电脑,手机,服务器。在当今云服务大行其道的局面下,各种云设备也可以被称之为主机。 基于这个…...
macOS 使用 enca 识别 文件编码类型(比 file 命令准确)
文章目录 macOS 上安装 enca基本使用起因 - iconv关于 enca安装 Encaenca & enconv 其它用法 macOS 上安装 enca brew install enca基本使用 enca filepath.txt示例 $ enca 动态规划算法.txt [0] Simplified Chinese National Standard; GB2312CRLF line terminat…...
MySQL 字符集
目录 字符集的基本概念 常见MySQL字符集 ascii(单字节字符集) latin1(单字节字符集) utf8(多字节字符集) utf8mb4(多字节字符集) MySQL默认字符集 MySQL字符集的层次级别 服务器级别 数据库级别 表级别 列级别 连接字符集 字符集是计算机科学中的一个重要概念&…...
Linux shell脚本3-if语句、case语句、for语句、while语句、until语句、break语句、continue语句,格式说明及程序验证
目录 1.if 控制语句 1.1 if 语句格式 1.2 程序验证 2.case语句 2.1case语句格式 2.2程序验证 2.2.1 终端先执行程序,在输入一个数 2.2.2 终端执行程序时同时输入一个预设变量 2.2.3 case带有按位或运算和通配符匹配 3.for语句 3.1for语句格式 3.2程序验…...
基于虚拟知识图谱的语义化决策引擎
在数字化转型浪潮中,企业数据资产的价值释放面临两大挑战:海量异构数据的整合困局与业务-技术语义鸿沟。本文解析飞速创软灵燕智能体平台的创新解决方案——通过构建业务语义驱动的虚拟知识图谱系统,实现企业数据的智能认知与决策赋能。 一、…...
Unity Shader 的编程流程和结构
Unity Shader 的编程流程和结构 Unity Shader 的编程主要由以下三个核心部分组成:Properties(属性)、SubShader(子着色器) 和 Fallback(回退)。下面是它们的具体作用和结构: 1. Pr…...
C++ 继承
目录 一、继承的概念与定义 1.1 继承的概念 1.2 继承的定义 1.2.1 语法 1.2.2 继承关系和访问限定符 1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 五、C11 final 六、继承与友元 七、继承与静态成…...
XSS Game(DOM型) 靶场 通关
目录 靶场网址 Ma Spaghet! 分析 解题 Jefff 分析 解题 方法一 方法二 Ugandan Knuckles 分析 解题 Ricardo Milos 分析 解题 Ah Thats Hawt 分析 解题 方法一 方法二 Ligma 分析 解题 Mafia 分析 解题 方法一:构造函数 方法二…...
XSS基础靶场练习
目录 1. 准备靶场 2. PASS 1. Level 1:无过滤 源码: 2. level2:转HTML实体 htmlspecialchars简介: 源码 PASS 3. level3:转HTML深入 源码: PASS 4. level4:过滤<> 源码: PASS: 5. level5:过滤on 源码…...
leetcode-200.岛屿数量
首先,想要找岛,肯定是要逐个遍历的,否则肯定会漏岛。 其次,我怎么知道两个点是否属于一个岛?只有一个方法,我踏上一个岛的某个点时,我就分别往四周走,且把当前地块毁掉,就…...
Linux | ubuntu安装 SSH 软件及测试工具
01 windows 要怎么和 ubuntu 互传文件呢,我们可以使用 ssh 软件。 终端输入 sudo apt-get install openssh-server ,输入登录 Ubuntu 用户的密码,这里我们输入 y 确认安装。如下图所示。 接着继续改 ssh 配置文件,因为 ssh 默认…...
组件日志——etcd
目录 一、简介 二、安装【Ubuntu】 安装etcd 安装CAPI 三、写一个示例 3.0写一个示例代码 3.1获取一个etcd服务 3.2获取租约(写端操作) 3.3使用租约(写端操作) 3.4销毁租约(写端操作) 3.5获取etcd服务中的服务列表(读端操作) 3.6监听状态变化(读端操作) 一、简介 Et…...
search_fields与filterset_fields的使用
在Django中,search_fields 和 filterset_fields 可以在视图类中使用,尤其是在 Django REST Framework (DRF) 中。它们分别用于实现搜索和过滤功能。以下是它们在视图类中的具体使用方法。 1. search_fields 在视图类中的使用 search_fields 是 DRF 中 S…...
SQLite Delete 语句详解
SQLite Delete 语句详解 SQLite 是一种轻量级的数据库管理系统,广泛应用于移动设备、嵌入式系统和服务器端应用。在数据库管理中,删除数据是一项基本操作。SQLite 提供了强大的删除功能,本文将详细介绍 SQLite 的 Delete 语句及其用法。 1.…...
通往自主智能之路:探索自我成长的AI
1. 引言:当前AI范式与自我成长智能的愿景 当前的人工智能领域在很大程度上由大型语言模型(LLM)的卓越能力所定义。这些模型,例如OpenAI的GPT系列和谷歌的BERT,已经展示了前所未有的理解和生成类人文本的能力。LLM通常…...
[自动化] 【八爪鱼】使用八爪鱼实现CSDN文章自动阅读脚本
在CSDN上,文章的阅读量往往是衡量内容影响力的一个重要指标。为了测试自动化手段能否提高阅读数,我尝试使用网页自动化工具来模拟人工阅读某个ID的文章。 1. 网页自动化的常见方案 谈到网页自动化,Selenium 是一个最常见的选择。它可以通过…...
Kafka消息序列化深度革命:构建高性能、高安全的自定义编码体系
一、突破默认序列化的桎梏 1.1 原生序列化器的致命缺陷 Kafka默认提供的StringSerializer/ByteArraySerializer在复杂场景下暴露三大痛点: 类型安全黑洞:字节流缺乏元数据描述,消费端解析如履薄冰版本兼容困境:数据结构变更导致…...
2025年如何避免使用验证码求解器时被IP封禁
引言 2025年,验证码求解器已成为自动化网络抓取和其他在线流程的关键工具。然而,自动化用户面临的一个常见挑战是IP封禁。当网站检测到自动化活动时,通常会阻止发出请求的IP地址,导致验证码挑战无法解决。本文将探讨使用验证码求…...
前端 AI IDE应用优缺点
嗯,用户问了三个前端面试的问题,我需要仔细分析每个问题,并结合提供的搜索结果来给出全面且准确的回答。 第一个问题是关于开发工具Cursor或Vim的Windurf在开发中的占比以及它们的缺点。从搜索结果里看,网页3提到了Trae对标Curso…...
银河麒麟桌面版包管理器(二)
APT包管理器 APT是Debian及其派生系统的包管理器,构建在dpkg之上,以其强大的依赖性处理能力和丰富的软件仓库而闻名。APT具有自动解决依赖关系、提供易于使用的命令行工具(如apt-get、apt-cache等),以及稳定的软件更新…...
Leetcode 3494. Find the Minimum Amount of Time to Brew Potions
Leetcode 3494. Find the Minimum Amount of Time to Brew Potions 1. 解题思路2. 代码实现 题目链接:3494. Find the Minimum Amount of Time to Brew Potions 1. 解题思路 这道题虽说算是搞定了,通过了全部的测试样例,不过还是很暴力的求…...
制作Oracle11g Docker 镜像
基于Linux系统,宿主主机要设置如下环境变量,oracle为64位版本 dockerfile中需要的数据库安装包可从csdn下载内找到 #!/bin/bash # 在宿主机上运行以设置Oracle所需的内核参数 # 这些命令需要root权限cat > /etc/sysctl.d/99-oracle.conf << EO…...
rocky linux下载软件
一、配置国内镜像源加速下载 Rocky Linux 默认使用国外软件源,国内用户可通过替换为阿里云镜像提升下载速度: 备份原配置文件: cp -r /etc/yum.repos.d /etc/yum.repos.d.backup 修改镜像源: sed -e s|^mirrorlist|#mirrorli…...
JVM的组成--运行时数据区
JVM的组成 1、类加载器(ClassLoader) 类加载器负责将字节码文件从文件系统中加载到JVM中,分为:加载、链接(验证、准备、解析)、和初始化三个阶段 2、运行时数据区 运行时数据区包括:程序计数…...
SpringBoot中安全的设置阿里云日志SLS的accessKey
众所周知,阿里云的服务都是基于accesskeyId和accesskeySecret来进行身份鉴权的,但唯独日志因为需要写入到.xml文件里对于accesskeyId和accesskeySecret需要进行一定程度的改进,尤其是使用了jasypt进行加密的参数传递进去logback.xml更是会遇到需要对参数进行解密的问题,而官网只…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例11,TableView15_11带分页的导出表格示例
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...