掌握C语言内存布局:数据存储的智慧之旅
大家好,这里是小编的博客频道
小编的博客:就爱学编程
很高兴在
CSDN
这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!!
目录
- 引言
- 正文
- 一、数据类型介绍
- 1.内置类型
- 2.自定义类型
- 3.指针类型
- 4.空类型(void)
- 二、数据在内存中的存储规则
- 1.整型数据在内存中的存储
- 原码 、反码 、补码
- 2.整型数据的运算与打印
- (1)占位符
- (2)数据范围
- (3)整型提升
- (4)数据截断
- 三、大小端介绍
- 1.来历
- 2.模式介绍及效果
- 3.模式判断
- 快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞和收藏支持一下,在此非常感谢!!!
引言
本文主要讲述了数据在内存中的存储位置,存储方法以及如何读取内存中的数据。如果你对其有困惑,不妨好好阅读,也许会有新的体会和感悟。
那接下来就让我们开始遨游在知识的海洋!
正文
一、数据类型介绍
1.内置类型
整型家族
疑惑点:为什么char类型属于整型家族?
解释:这是因为char类型的数据在存储的时候,是以它的ASCLL值进行存储的,本质是一个整型。
浮点型家族
注意:浮点型都是有符号的。
2.自定义类型
3.指针类型
4.空类型(void)
常用于表示函数不需要参数
例:
#include<stdio.h>
int main(void) {printf("hello,world!");return 0;
}
运行结果:
当然,这常适用于非主函数。
二、数据在内存中的存储规则
符号位:对于一个有符号的的数来说,最高位就是符号位,c语言中规定1表示负,0表示正。
1.整型数据在内存中的存储
原码 、反码 、补码
原码
把一个十进制数直接转化为它的二进制,就是这个数的原码。
反码
正数:还是原码
负数:符号位不变,其他位按位取反
补码
正数:还是原码
负数:反码+1
我们要注意:
- 对于有符号整型数据:只有屏幕上打印的是原码,而在内存中进行存储和表示的都是补码。
为什么?
序号 | 原因 |
---|---|
1. | 使用补码,可以将符号位和数值域统一处理 |
2. | 加减法也可以统一用加法处理(CPU只有加法器) |
凭什么这么说?我们可以用一个简单的例子佐证我们的说法
例:
- 写一个代码打印-1+1的结果
代码:
#include<stdio.h>
int main() {printf("%d", -1 + 1);return 0;
}
运行结果:
思考 | 讨论 |
---|---|
到这里,你可能会想:这不就理应如此吗? | 但事实上,这是我们c语言设计好的用补码进行运算的结果。不信?你看:如果我们用原码进行计算,我们会惊奇的发现发现:最后的打印结果应为-2。但是这就与常理违背了,-1 + 1 == -2 , 离之大谱! |
所以通过这个例子,我们就不难发现:
- 对于整型数据来说,只有屏幕上打印的是原码,而在内存中进行存储和表示的都是补码的智慧和原因。
序号 | 注意 |
---|---|
1. | 原码,反码,补码的概念主要针对有符号的整型家族(signed int或int)类型的数据,而对于其他类型的数据,有其相应的存储方式 |
2. | 特殊地:我们把无符号的整型家族可以看做正数(有符号的数)进行处理,只不过这个正数没有符号位 |
2.整型数据的运算与打印
但是,掌握了以上的知识点之后,我们其实还并不能完全预见和理解整型数据运算屏幕上打印的结果,还得掌握一些占位符的作用,整型提升,数据截断,数据范围:
(1)占位符
占位符 | 作用 |
---|---|
%d | 打印有符号整型数据 |
%u、%zd | 打印无符号整型数据 |
例:
#include<stdio.h>
int main() {int a = 2147483647;int b = 1;printf("%d %u", a + b, a + b);return 0;
}
运行结果:
思考:为什么同样是a + b,打印的结果确一正一负呢?
- 这里其实涉及了后文要讲的数据范围,但我们通过这个例子依旧是能够感受到占位符不同所带来的不同打印结果,该题我们在后文再进一步剖析。
(2)数据范围
我们知道:
1.每个数据类型都有其对应的字节长度,1字节 == 8bit 位
详见:
数据类型 | 字节 |
---|---|
char | 1 |
short(int) | 2 |
(long) int | 4 |
float | 4 |
long long | 8 |
double | 8 |
那这些bit位是用来干嘛的呢?
2.实际上,这些bit位就是用来存放数字1或0来表示数据大小的。由此我们可以想到:那既然表示数据大小的位数是有限的,那每个类型的数据大小也应该是在一个范围内的。
详见:
数据类型 | 范围 |
---|---|
char | -128 ~ 127, 0 ~ 255 |
short(int) | - 2^15 ~ 2^15 - 1, 0 ~ 2^16 - 1 |
(long) int | - 2^31 ~ 2^31 - 1, 0 ~ 2^32 - 1 |
注:有负号的为有符号数据类型数据的范围
那如果一个数据超过了其范围,怎么计算?
我们可以用圆环的思想去考虑:
- 每一个无符号的数据类型从大到小都是bit位全0–>bit位全1,而到了最大的时候,也就是bit位全1,再加1就会发生数据越位,所有bit位变成全0,然后再由bit全0–>bit位全1,构成了一个头尾相交的圆环。
以unsigned char为例:
等价于:
而每一个符号的数据类型从大到小都是bit位全0–>bit位除了首位全1,而到了最大的时候,也就是bit位除了首位全1,再加1就会变成bit位除了首位全0,然后再变成bit位全1,再加1就会发生数据越位,所有bit位变成全0,然后再由bit全0–>bit位全1,构成了一个头尾相交的圆环。
但是和无符号数据类型不同的是:
- 有符号的数它的二进制位比无符号的数少了一位数值位,并且我们规定1000…0000000表示的是最小的负数。
但我们应注意:
- 二进制数存储和表示无论是正数还是负数都是采用补码的方式,而只是因为我们把无符号数据看做正数,原码和补码一样,且多了一位数值位才导致了表示和存储方式看起来不同,实际都是一样用补码的形式进行存储和表示。
无符号和有符号数的异同 | 详述 |
---|---|
不同 | 无符号数多了一位数值位 |
相同 | 实际都是一样用补码的形式进行存储和表示 |
重要规定(有符号的数) | 1000…0000000表示的是最小的负数 |
以signed char为例:
等价于:
了解这些,我们就可以把上面的例子剖析
例子:
#include<stdio.h>
int main() {int a = 2147483647;int b = 1;printf("%d %u", a + b, a + b);return 0;
}
运行结果:
疑惑 | 剖析 |
---|---|
为什么用占位符%d打印的结果是负数? | (1)十进制:2147483648–>二进制(补码):01111111111111111111111111111111;十进制:1–>二进制(补码):00000000000000000000000000000001;相加得:10000000000000000000000000000000(补码)(2)又用%d进行打印,%d是用来打印int类型数据的,所以我们要把相加得的结果转换为原码打印出来(这里要用重要规定) |
为什么用占位符%u打印的结果是正数? | (1)同上;(2)又用%u进行打印,%u是用来打印无符号整数的,无符号整数的特别之处——就在于我们是把它看作有符号整数中的正数,就导致:它的原码和反码是一样的,所以打印在屏幕上的数就是相加结果的十进制数 |
对于占位符的思考 | 占位符给了我们一个理解和读取二进制数(补码)的视角和方式 |
(3)整型提升
问题 | 答案 |
---|---|
什么叫整型提升? | c语言的整型算术运算总是至少缺省(默认)整型类型的精度进行计算。为了获得这个精度,表达式中字符型(char)和短整型(short)在使用之前就被系统自动转换为普通整型(int),这种转换就叫整型提升。 |
整型提升的意义是什么? | 表达式的整型运算要在CPU的加法器和其他运算器件中进行,而该运算器的操作数的字节长度就为int的字节长度。 |
数据提升的条件和对象 | 发生在小于整型类型的数据类型上。 |
提升规则
本质就是看补码的最高位是1还是0,是1补1,是0补0。
(4)数据截断
问题 | 答案 |
---|---|
什么是数据截断? | 就是一个字节长度较小的数据类型在接收一个字节长度较大的数据类型时只会从字节长度较大的数据的数据低位开始接收,直至填满自己的所有二进制位 |
会有什么结果? | 可能会导致数据的丢失,一定会导致字节的减少 |
熟练掌握这些,我们就基本能预见和理解整型数据运算屏幕上打印的结果,下面就以一些例子来加深和巩固对以上知识的理解
例:
#include<stdio.h>
int main() {char a = 3;//00000011char b = 127;//01111111char c = a + b;//因a和b参加运算,所以要发生整型提升//整型提升规则:高位补符号位(在大部分编译器中,char等价于signed char,即有符号,最高位为符号位,范围为:-128~127;无符号的char类型数据范围为:0~255;//整型提升://00000000000000000000000000000011//00000000000000000000000001111111
//结果00000000000000000000000010000000//截断(发生在高字节类型转化为低字节)://10000000 补码//10000011printf("%d", c);//打印结果为:-126return 0;
}
//也可以用圆环秒解:0 1 2 ~ 126 127 ~-1 -2 -3 ~ -127 -128 ~ 0 1 2 ~~
- 注释的解析很全,不用再过多解释,对照上面的知识点进行理解
三、大小端介绍
1.来历
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit位。但是在c语言中除了8bit的char之外,还有16bit位的short型,32位的long型(取决于具体编译器);另外,对于位数大于8位的处理器(16bit或32bit),由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排进内存中存储的问题。由此产生了大端和小端。
2.模式介绍及效果
模式(全称) | 效果 |
---|---|
大端字节序存储 | 数据的低位字节存放在高地址 |
小端字节序存储 | 数据的低位字节存放在低地址 |
实际效果:
自己模拟
VS2022上的内存窗口
3.模式判断
我们可以借助一个2015年百度的笔试题观察大小端的区别
题目:写一个代码,实现大小端的判断
代码:
#include<stdio.h>
int main() {int a = 1;char* p = (char*)&a;if (*p == 1) {printf("是小端\n");} else {printf("是大端\n");}return 0;
}
思路:
序号 | 步骤 |
---|---|
1 | 用char*类型的指针一个一个字节地访问int类型变量a的各个字节 |
2 | 我们可以把a赋值为只有第一个字节有值的整数,这里赋值为1 |
3 | 前提:我们知道指针访问内存的习惯是从低地址到高地址 |
4 | 如果*p == 1,说明低地址存放的字节是低位字节,也就是小端存储 |
5 | 如果*p == 0,说明低地址存放的字节是高位字节,也就是大端存储 |
快乐的时光总是短暂,咱们下篇博文再见啦!!!不要忘了,给小编点点赞和收藏支持一下,在此非常感谢!!!
相关文章:
掌握C语言内存布局:数据存储的智慧之旅
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 目录 引言正文一、数据类型介绍1.内置类型2.自定义…...
一键化配置java环境
一键化配置java环境 下载javaPathConfig 打开,将java的jdk路径写进去 例如我的路径就是 C:\Program Files\Java\jdk-1.8点击确认设置即可...
【I/O编程】UNIX文件基础
IO编程的本质是通过 API 操作 文件。 什么是 IO I - Input 输入O - Output 输出 这里的输入和输出都是站在应用(运行中的程序)的角度。外部特指文件。 这里的文件是泛指,并不是只表示存在存盘中的常规文件。还有设备、套接字、管道、链接…...
leetcode 面试经典 150 题:汇总区间
链接汇总区间题序号228题型数组解法一次遍历法难度简单熟练度✅✅✅ 题目 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属…...
联想Android面试题及参考答案
请介绍一下 Android 的架构,并谈谈对 Linux 的了解。 Android 架构主要分为四层,从下往上依次是 Linux 内核层、系统运行库层、应用框架层和应用层。 Linux 内核层是 Android 系统的基础。它提供了底层的硬件驱动程序,包括显示驱动、摄像头驱动、音频驱动等多种硬件设备的驱…...
redux 结合 @reduxjs/toolkit 的使用
1,使用步骤 使用React Toolkit 创建 counterStore(store目录下) --> 为React注入store(src下面的index) --> React组件使用store中的数据(组件) 2,例如下面有一个简单加减的…...
【鱼皮大佬API开放平台项目】Spring Cloud Gateway HTTPS 配置问题解决方案总结
问题背景 项目架构为前后端分离的微服务架构: 前端部署在 8000 端口API 网关部署在 9000 端口后端服务包括: api-backend (9001端口)api-interface (9002端口) 初始状态: 前端已配置 HTTPS(端口 8000)后端服务未配…...
PHP反序列化
一、PHP面向对象的基础知识 基本概念 1、面向过程VS面向对象 以做饭为例,面向过程是自己从原材料到成品全部自己做,面向对象相当于去饭店,点菜,等待结果(上菜)。 2、类的定义 类是定义了一件事物的抽象…...
6、原来可以这样理解C语言_函数(7/8)嵌套调⽤和链式访问
目录 七、嵌套调⽤和链式访问 七、(1)、嵌套调⽤ 七、(2)、链式访问 七、嵌套调⽤和链式访问 七、(1)、嵌套调⽤ 嵌套调⽤就是函数之间的互相调⽤,每个函数就⾏⼀个乐⾼零件,正是因…...
安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?
Jenkins 是一款功能强大的自动化服务器,在持续集成与交付(CI/CD)领域应用广泛。不过,用户在使用过程中,尤其是首次接触该系统或系统重启后,常常会遇到登录方面的问题。要是 Jenkins 突然要求输入用户名和密…...
VIVADO FIFO (同步和异步) IP 核详细使用配置步骤
VIVADO FIFO (同步和异步) IP 核详细使用配置步骤 目录 前言 一、同步FIFO的使用 1、配置 2、仿真 二、异步FIFO的使用 1、配置 2、仿真 前言 在系统设计中,利用FIFO(first in first out)进行数据处理是再普遍不过的应用了,…...
49_Lua调试
Lua提供了debug库用于创建自定义调试器,尽管Lua本身没有内置的调试器1。这个库允许开发者在程序运行时检查和控制执行流程,这对于开发过程中的错误查找和修复非常有用。 1.Debug库概述 debug库提供的函数可以分为两类:自省函数(introspection functions)和钩子函数(hoo…...
SR-BE 笔记和实验
一、笔记: SR不需要mpls,但要配置 mpls lsr-id 不需要MPLS LDP分标签,但仍然需要依赖IGP来分标签 fish—TE问题 SPF:Shortest Path First 最短路径算法 CSPF:Constrained SPF 受约束的SPF算法 BGP-LS: SR…...
实力认证 | 海云安入选《信创安全产品及服务购买决策参考》
近日,国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》,报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…...
pytorch张量分块投影示例代码
张量的投影操作 背景 张量投影 是深度学习中常见的操作,将输入张量通过线性变换映射到另一个空间。例如: Y=W⋅X+b 其中: X: 输入张量(形状可能为 (B,M,K),即批量维度、序列维度、特征维度)。W: 权重矩阵((K,N),将 K 维投影到 N 维)。b: 偏置向量(可选,(N,))。Y:…...
Elasticsearch二次开发:实现实时定时同步同义词、近义词与停用词
Elasticsearch二次开发:实现实时定时同步同义词、近义词与停用词 引言 Elasticsearch(ES)作为开源搜索引擎的典范,以其强大的全文搜索、结构化搜索以及分析能力,在各个领域得到了广泛应用。在复杂的搜索场景中&#…...
Linux 常用文件查看命令
目录 cat 命令:连接与查看 more/less 命令:分页查看 tail 命令:实时追踪 cat 命令:连接与查看 基本功能:用于连接文件并打印到标准输出设备上,常用于查看文件内容。当有多个文件作为参数时,会…...
智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学
智能家居篇 一、Win10 VM虚拟机安装 Home Assistant 手把手教学 文章目录 [智能家居篇]( )一、Win10 VM虚拟机安装 Home Assistant 手把手教学 前言一.下载Vm版本的HomeAsistant安装包 二.打开Vmware选择新建虚拟机1.选择自定义高级2.选择16.x及以上3.选择稍后安装4.根据官网的…...
端口镜像和端口安全
✍作者:柒烨带你飞 💪格言:生活的情况越艰难,我越感到自己更坚强;我这个人走得很慢,但我从不后退。 📜系列专栏:网络安全从菜鸟到飞鸟的逆袭 目录 一,端口镜像二…...
打造更安全的Linux系统:玩转PAM配置文件
在Linux系统中,用户认证是确保系统安全的关键步骤。PAM(可插拔认证模块)为我们提供了一个非常灵活的框架,帮助我们管理各种服务的认证过程。其中,/etc/pam.d目录是PAM配置的核心部分,这里存放了每个服务所需…...
猫咪智商相当于人的几岁?
猫咪,这个神秘又高冷的物种,总能让我们又爱又恨。它们时而撒娇卖萌,时而独立自主,让人琢磨不透。那么,问题来了,猫咪的智商到底相当于人的几岁呢?今天,就来给大家好好揭秘一下喵星人…...
软件设计大致步骤
由于近期在做软件架构设计,这里总结下大致的设计流程 软件设计流程 1 首先要先写系统架构图,将该功能在整个系统的位置以及和大致的内部模块划分 2 然后写内部的结构图,讲内部的各个子系统,模块,组件之间的关系和调用…...
Elasticsearch入门学习
Elasticsearch是什么 Elasticsearch 是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展的数据存储和矢量数据库。 它针对生产规模工作负载的速度和相关性进行了优化。 使用 Elasticsearch 近乎实时地搜索、索引、存储和分析各种形状和大小的数据。 特点 分布式&a…...
Mac安装配置使用nginx的一系列问题
brew安装nginx https://juejin.cn/post/6986190222241464350 使用brew安装nginx,如下命令所示: brew install nginx 如下图所示: 2.查看nginx的配置信息,如下命令: brew info nginxFrom:xxx 这样的,是n…...
Elasticsearch Python 客户端是否与自由线程 Python 兼容?
作者:来自 Elastic Quentin_Pradet 在这篇文章中,我们将进行一些实验,看看 Python Elasticsearch 客户端是否与新的 Python 3.13 自由线程(free-threading)版本兼容,其中 GIL 已被删除。 介绍 但首先&…...
ROS2 的所有控制台命令
以下是 ROS2 的控制台命令: 编译 colcon是ros的构建工具 sudo apt install python3-colcon-common-extensions 如只编译 turn_robot colcon build --packages-select turn_robot 编译全部功能包 colcon build source source /home/sukai/turn_robot/install…...
深入理解 Entity、VO、QO、DTO 的区别及其在 MVC 架构中的应用
文章背景 在现代软件开发中,我们经常会接触到各种数据结构的概念,比如 Entity、VO(Value Object)、QO(Query Object)、DTO(Data Transfer Object)等。这些概念尽管看似相似ÿ…...
角色认知培训
课程记录 需求传达的时候先强调重点,理清需求的过程中,大家一起分析 一开始单线程,总结复盘,提升效率,变成多线程 心态 2、复盘能力,每次优化策略 优化 团结、执行、 3、 头马的理解? 小…...
记录一次微信小程序使用云能力开发的过程
对于开发微信小程序云开发不知从何起的同学们,可以当作一次参考。虽说官方有文档,有模板示例,但是这些都是片段或者完整的结果展示。对于初学或者开发经验较少的同学们,可能不知先从那里入手进行第一步的开发。下面解析下构建微信…...
vim将一行行尾倒数第三个字符替换成1
%s/\v(.)(.)(.)(.)$/1\2\3\4\v:very magic模式,可以省略转义符 (.):圆括号的分组功能,将括号匹配内容放到第一个寄存器里面,第二个括号匹配内容放到第二个寄存器里面。 $:匹配行尾字符 \2:第二个括号匹配内容 \3:第三个…...
Kafka权威指南(第2版)读书笔记
目录 Kafka生产者——向Kafka写入数据生产者概览创建Kafka生产者bootstrap.serverskey.serializervalue.serializer 发送消息到Kafka同步发送消息异步发送消息 生产者配置client.idacks消息传递时间max.block.msdelivery.timeout.msrequest.timeout.msretries 和retry.backoff.…...
Yolov8 目标检测剪枝学习记录
最近在进行YOLOv8系列的轻量化,目前在网络结构方面的优化已经接近极限了,所以想要学习一下模型剪枝是否能够进一步优化模型的性能 这里主要参考了torch-pruning的基本使用,v8模型剪枝,Jetson nano部署剪枝YOLOv8 下面只是记录一个…...
5G+工业互联网迈入规模化发展新阶段
百度安全验证 https://blog.csdn.net/qq_25467441/article/details/145036191?sharetypeblogdetail&sharerId145036191&sharereferPC&sharesourceqq_25467441&spm1011.2480.3001.8118 好看视频-轻松有收获 产业供给加速提升。国内主流模组厂商引领全球5G模组…...
WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现)
WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现) 目录 WOA-Transformer鲸鱼算法优化编码器时间序列预测(Matlab实现)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现WOA-Transformer鲸鱼算法优化编…...
「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程(配套案例数据)》专栏上线了
「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程》全新上线了,欢迎广大GISer朋友关注,一起探索GIS奥秘,分享GIS价值! 本专栏以实战案例的形式,深入浅出地介绍了GRASS GIS的基本使用方法,用一个个实例讲…...
Spring boot面试题---- Spring boot项目运行原理
1.启动流程概述 Spring Boot 的启动是从一个带有main方法的主类开始的。这个主类通常会有一个@SpringBootApplication注解。这个注解是一个组合注解,它包含了@Configuration、@EnableAutoConfiguration和@ComponentScan。@Configuration注解表明这个类是一个配置类,它可以定义…...
HTML基础与实践
目录 HTML 结构 认识 HTML 标签 HTML 文件基本结构 标签层次结构 快速生成代码框架 HTML 常见标签 注释标签 标题标签: h1-h6 段落标签: p 换行标签: br 格式化标签 图片标签: img 超链接标签: a 编辑链接的几种形式: 表格标签 基本使用 合并单元格 …...
码编译安装httpd 2.4,测试
下载链接:https://dlcdn.apache.org/httpd/httpd-2.4.62.tar.gz [rootopenEuler-1 ~]# yum install gcc gcc-c make -y [rootopenEuler-1 ~]# ll /root total 9648 -rw-------. 1 root root 920 Jan 10 17:15 anaconda-ks.cfg -rw-r--r-- 1 root root 9872432…...
计算机网络 (45)动态主机配置协议DHCP
前言 计算机网络中的动态主机配置协议(DHCP,Dynamic Host Configuration Protocol)是一种网络管理协议,主要用于自动分配IP地址和其他网络配置参数给连接到网络的设备。 一、基本概念 定义:DHCP是一种网络协议…...
赛灵思(Xilinx)公司Artix-7系列FPGA
苦难从不值得歌颂,在苦难中萃取的坚韧才值得珍视; 痛苦同样不必美化,从痛苦中开掘出希望才是壮举。 没有人是绝对意义的主角, 但每个人又都是自己生活剧本里的英雄。滑雪,是姿态优雅的“贴地飞行”,也有着成…...
【计算机体系结构、微架构性能分析】core 与 uncore 分别是哪一些部分?区分 core 和 uncore
在计算机体系结构中,Core 和 Uncore 是描述处理器内部架构的两个重要概念,尤其在多核处理器中更为常见。 1. Core(核心) Core 指的是处理器中的计算核心,是执行指令和处理数据的基本单元。每个核心都包含独立的执行单…...
基于 K-Means 聚类分析实现人脸照片的快速分类
注:本文在创作过程中得到了 ChatGPT、DeepSeek、Kimi 的智能辅助支持,由作者本人完成最终审阅。 在 “视频是不能 P 的” 系列文章中,博主曾先后分享过人脸检测、人脸识别等相关主题的内容。今天,博主想和大家讨论的是人脸分类问题。你是否曾在人群中认错人,或是盯着熟人的…...
Ubuntu更改apache的服务端口
1.介绍 承接上文,上文介绍了如何利用apache快速部署自己的网页,直接访问localhost就能打开网页的界面,这里其实是直接用了Ubuntu的80端口访问,如果我想换一个端口访问呢?应该怎么实现? 这一篇文章就来教你&…...
9.7 visual studio 搭建yolov10的onnx的预测(c++)
1.环境配置 在进行onnx预测前,需要搭建的环境如下: 1.opencv环境的配置,可参考博客:9.2 c搭建opencv环境-CSDN博客 2.libtorch环境的配置,可参考博客:9.4 visualStudio 2022 配置 cuda 和 torch (c)-CSDN博客 3.cuda环境的配置…...
“飞的”点外卖,科技新潮流来袭
一、开篇引入 上个周末,阳光正好,我带着孩子去公园游玩。公园里绿草如茵,花朵绽放,孩子们在草地上嬉笑奔跑,好不快活。玩累了,我们便在草坪上的帐篷里休息。 就在这时,天空中突然传来一阵嗡嗡…...
kubernetes v1.29.XX版本HPA、KPA、VPA并压力测试
序言: 在大型电商、购物、直播活动期间,对于火爆流量的激增,如何保障业务稳定并且做到资源不浪费,自动回收。 场景:kubernetes 原生容器化承载业务流量(非云环境) 方案:kubernetes自…...
java使用poi-tl自定义word模板导出
文章目录 概要整体架构流程创建word模板核心代码导出结果 概要 在软件开发领域,自定义Word模板的使用是导出格式化数据的一种常见做法。poi-tl(Apache POI Template Language)作为一款基于广受认可的Apache POI库的Word模板引擎,…...
云手机技术怎么实现的?
前言 随着亚矩阵云手机在跨境电商、海外社媒矩阵搭建、出海运营、海外广告投放、国内新媒体矩阵运营、品牌应用矩阵运营等领域内的普及和使用,云手机的理念已经被越来越多人所接受和认同。今天我们就一起来浅析一下,到底云手机的技术是怎么实现的&#…...
本地部署Web-Check网站检测与分析利器并实现远程访问实时监测
文章目录 前言1.关于Web-Check2.功能特点3.安装Docker4.创建并启动Web-Check容器5.本地访问测试6.公网远程访问本地Web-Check7.内网穿透工具安装8.创建远程连接公网地址9.使用固定公网地址远程访问 前言 本文我们将详细介绍如何在Ubuntu系统上使用Docker部署Web-Check…...
简洁明快git入门及github实践教程
简洁明快git入门及github快速入门实践教程 前言git知识概要:一:什么是 Git?二:安装 Git三:配置 Git配置git的用户名和邮箱地址创建仓库 四:Git实践五:远程仓库操作(基于git命令使用G…...