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

『C语言』数据在内存中的存储规则

在这里插入图片描述

前言

小羊近期已经将C语言初阶学习内容与铁汁们分享完成,接下来小羊会继续追更C语言进阶相关知识,小伙伴们坐好板凳,拿起笔开始上课啦~


一、数据类型的介绍

我们目前已经学了基本的内置类型:

char       //字符数据类型
short      //短整型
int        //整形
long       //长整型
long long  //更长的整形
float      //单精度浮点数
double     //双精度浮点数

类型的基本归类

  1. 整形家族
char:unsigned charsigned char
short:unsigned short[int]signed short[int]
int:unsigned intsigned int
long:unsigned long[int]signed long[int]

unsigned:无符号数类型

当一个数是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。

signed:有符号数类型

当一个数是有符号类型时,最高数称为“符号位”。符号位为1时,表示该数为负数,为0时表示为正数。

注意:有符号类型可以表示正数,负数或0,无符号类型仅能表示大于等于0的值

  1. 浮点型家族
float
double
  1. 构造类型:
       //数组类型
struct //结构体类型
enum   //枚举类型
union //联合类型
  1. 指针类型:
int* p;
char* p;
float* p;
void* p;
  1. 空类型:
void//(空类型)

二、整型在内存中的存储

以整型int为例,我们都知道常见的编译器中int占四个字节,那么计算机中这四个字节是如何将数据存储下来的呢?
那我们先了解一下机器数真值的概念,再去了解原码,反码,补码的概念

2.1 机器数

一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机中 用机器数的最高位存放符号,正数为0,负数为1。

例如:

+ 3的机器数:0000 0011
- 3的机器数:1000 0011

2.2 真值

因为第一位是符号位,所以机器数的形式值就不等于真正的数值。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

例如:

0000 0001的真值 = +000 0001 = +1
1000 0001的真值 = -000 0001 = -1

2.3 原码、反码、补码

对于一个数,计算机要使用一定的编码方式进行存储,原码、反码、补码是机器存储一个具体数字的编码方式。

三种方式均有符号位数值位两部分,符号位都是0表示“正数”,1表示“负数”,而数值位分正负数而定。

正数的原码、反码、补码都相同,负数的原码、反码、补码各不相同

原码:
直接将数值按照正负数的形式翻译成二进制就可以得到原码
反码:
将原码的符号位不变,其他位次按位取反
补码:
反码符号位不变,数值为+1

反码回到原码的两种方式
1、补码-1后 取反得到原码
2、补码取反后 +1得到原码

对于整形来说:数据存放内存中其实存放的是补码,那这又是为什么呢?

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数
值域统一处理;同时,加法和减法也可以统一处理(CPU只有加法器 )此外,补码与原码相
互转换,其运算过程是相同的,不需要额外的硬件电路。

我们看看在内存中的存储:
在这里插入图片描述
我们知道内存中a和b存储的是补码,但我们发现存储的顺序有点不对劲。
-10在内存中存储应该是FFFFFFF6,而我们看到的是F6FFFFFF。
这里小羊呢,就为铁汁们了解一下大小端

2.4 大小端介绍

什么是大小端:

大端存储模式:指数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中
小端存储模式:指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中

例如:

数字0x12 34 56 78在内存中:

大端模式:(我们通常直观上认为的模式)

        低地址 --------------------> 高地址0x12  |  0x34  |  0x56  |  0x78

小端模式:

        低地址 --------------------> 高地址0x78  |  0x56  |  0x34  |  0x12

** 为什么会有大端和小端呢?**
因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。

如何判断大小端的代码:

#include<stdio.h>
int main()
{int i = 1;//0000 0001char* p = &i;if (*p == 1)//若第一个地址存的是1,即为小端,反则大端printf("小端");elseprintf("大端";return 0;
}

自定义函数测试:

#include<stdio.h>int check_sys()
{int a = 1;char* p = (char*)&a;if (*p == 1)return 1;elsereturn 0;
}int main()
{if (check_sys() == 1)printf("小端");elseprintf("大端");return 0;
}

三、浮点数在内存中的存储

#include<stdio.h>
int main()
{int n = 9;float* p = (float*)&n;printf("n的值为:%d\n", n);printf("*p的值为:%f\n", *p);*p = 9.0;printf("n的值为:%d\n", n);printf("*p的值为:%f\n", *p);return 0;
}

我们先试着猜一下结果
输出显示:
在这里插入图片描述
怎么样,这个结果是不是有点出乎意料!那么就跟着小羊来学习浮点数的存储规则吧。

3.1浮点数存储规则

浮点数存储形式:

根据国际标准IEEE(电子和电子工程协会)754,任意一个二进制浮点数V可以表示为下面的形式:

(-1) ^ S * M * 2 ^ E

 1.  (-1) ^ S 表示符号位,当S=0时,V为正数;当S=1时,V为负数
 2.  M 表示有效数字,且1 <= M <2
 3.  2 ^ E表示指数位

例如:

  1. 十进制的5.0,写成二进制是0101 ------> 1.10x2^2
    可以得出s=0,M=1.01,E=2
  2. 十进制的-7.0,写成二进制是0111 ------->1.11x2^2
    可以得出s=-1,M=1.11,E=2

IEEE 754 规定:

对于 32 位的浮点数(单精度),最高的 1 位是符号位 s ,接着的 8 位是指数 E ,剩下的 23位为有效数字 M 。

在这里插入图片描述

对于 64 位的浮点数(双精度),最高的 1 位是符号位S,接着的 11 位是指数 E ,剩下的 52 位为有效数字 M 。
在这里插入图片描述
IEEE 754 对有效数字** M **和指数 E ,还有一些特别规定。
前面说过, 1≤M<2 ,也就是说, M 可以写成 1.xxxxxx 的形式,其中 xxxxxx 表示小数部分。
IEEE 754 规定,在计算机内部保存 M 时,默认这个数的第一位总是 1 ,因此可以被舍去,只保存后面的xxxxxx部分。比如保存 1.01 的时候,只保存01 ,等到读取的时候,再把第一位的 1 加上去。这样做的目的,是节省 1 位有效数字。以 32 位浮点数为例,留给M 只有 23 位,将第一位的1 舍去后等于可以保存 24 位有效数字。

至于指数 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。

3.2 浮点型的读取

我们知道浮点型在内存中的存储后,将步骤反过来就是取出的过程。
1、有效数字M:

IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存小数部分。比如保存1.0110001101时,只保存0110001101,后面的位数补0就可以了,等到读取的时候,再把第一位的1补上去。

2、指数E

E为一个无符号整数(unsigned int)根据指数域不同取值分为一下三种情况:

1)E不全为0或不全为1(规格化值)

这是最常见情况,取出内存中的数时,指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。

2)E全为0(非规格化值)

这时,浮点数的指数E等于1-127(或1-1023)即为真实值,有效数字M不再加上第一位的1,而是还原为0.xxxxxxx的小数。这样做是为了表示正负零,以及接近于0的很小的数字。

3)E全为1(特殊数值)

当指数域全为1时属于这种情形。此时,如果小数域全为0且符号域S=0,则表示正无穷,如果小数域全为0且符号域S=1,则表示负无穷。如果小数域不全为0时,浮点数将被解释为NaN, 即不是一个数(Not a Number)

解释前面的题目

整形9以浮点型打印
整形存储,浮点型打印
0000  0000 0000 0000 0000 0000 0000 1001
浮点型读取:
s=0,M=000 0000 0000 0000 0000 0110,E=0000 0000(E全为0)
所以结果为:0.0000(近于0的很小的数字)现在看例题的第二部:
浮点数9.0以整形打印
9.0 -> 1001.0 -> (-1)^0*1.001*2^3 -> s=0,M=1.001,E=3+127=130
所以第一位的符号位s=0,有效数字M为001后面在加200,凑满23位,指数E为3+127=130,即10000010
所以写成S+E+M:
0 10000010 001 0000 0000 0000 0000 000032位的二进制数,还原成十进制,正是1091567616

总结

希望看完这篇文章对铁汁们有所帮助,小羊后续还会持续更新C语言的学习知识,希望小伙伴们给个支持,来个一键三连~
在这里插入图片描述

相关文章:

『C语言』数据在内存中的存储规则

前言 小羊近期已经将C语言初阶学习内容与铁汁们分享完成&#xff0c;接下来小羊会继续追更C语言进阶相关知识&#xff0c;小伙伴们坐好板凳&#xff0c;拿起笔开始上课啦~ 一、数据类型的介绍 我们目前已经学了基本的内置类型&#xff1a; char //字符数据类型 short …...

基于ssm+vue的新能源汽车在线租赁管理系统源码和论文PPT

基于ssmvue的新能源汽车在线租赁管理系统源码和论文PPT010 开发环境&#xff1a; 开发工具&#xff1a;idea 数据库mysql5.7(mysql5.7最佳) 数据库链接工具&#xff1a;navcat,小海豚等 开发技术&#xff1a;java ssm tomcat8.5 摘 要 随着科学技术的飞速发展&#xff0…...

深入解析IDS/IPS与SSL/TLS和网络安全

目录 防火墙 IDS IPS DMZ VPN VPS SSL/TLS 动态IP 静态IP 防火墙 防火墙是一种网络安全设备&#xff0c;用于监控和控制网络流量&#xff0c;保护网络免受未经授权的访问、恶意攻击和威胁。防火墙可以基于规则进行数据包过滤&#xff0c;允许或阻止特定类型的流量通过…...

在Visual Studio上,使用OpenCV实现人脸识别

1. 环境与说明 本文介绍了如何在Visual Studio上&#xff0c;使用OpenCV来实现人脸识别的功能 环境说明 : 操作系统 : windows 10 64位Visual Studio版本 : Visual Studio Community 2022 (社区版)OpenCV版本 : OpenCV-4.8.0 (2023年7月最新版) 实现效果如图所示&#xff0…...

搭建openGauss 5.0 一主一从复制集群

openGauss是一款支持SQL2003标准语法&#xff0c;支持主备部署的高可用关系型国产数据库。 多种存储模式支持复合业务场景&#xff0c;新引入提供原地更新存储引擎。NUMA化数据结构支持高性能。Paxos一致性日志复制协议&#xff0c;主备模式&#xff0c;CRC校验支持高可用。支…...

Docker碎碎念

docker和虚拟机的区别 虚拟机&#xff08;VM&#xff09;是通过在物理硬件上运行一个完整的操作系统来实现的。 每个虚拟机都有自己的内核、设备驱动程序和用户空间&#xff0c;它们是相互独立且完全隔离的。 虚拟机可以在不同的物理服务器之间迁移&#xff0c;因为它们是以整…...

【C++】extern

目录 1. 变量声明和定义的关系 2. 默认状态下&#xff0c;const对象仅在文件内有效 3. 链接指示&#xff1a;extern "C" 3.1 声明一个非C的函数 3.2 链接指示与头文件 3.3 指向extern "C"函数的指针 3.4 链接指示对整个声明都有效 3.5 导出C函数到…...

2023全网Mysql 合集(25w字)附课程 从安装到高级,实战

mysql学习 1.安装mysql 安装教程 2.mysql的详细学习教程 mysql的详细教程 3.mysql 的高级优化 MySQL高级篇&#xff08;SQL优化、索引优化、锁机制、主从复制&#xff09; 4.MySQL 面试 MySQL数据库面试题总结 二.mysql实战 一、创建数据表并插入数据 1、学生表 Stud…...

张俊林:由ChatGPT反思大语言模型(LLM)的技术精要

转自&#xff1a;https://mp.weixin.qq.com/s/eMrv15yOO0oYQ-o-wiuSyw 导读&#xff1a;ChatGPT出现后惊喜或惊醒了很多人。惊喜是因为没想到大型语言模型&#xff08;LLM,Large Language Model&#xff09;效果能好成这样&#xff1b;惊醒是顿悟到我们对LLM的认知及发展理念&a…...

单机编排docker compose

Docker之旅(8)-单机编排docker compose 当在宿主机启动较多的容器时候&#xff0c;如果都是手动操作会觉得比较麻烦而且容易出错&#xff0c; 并且每个容器之间也会有先后启动的顺序依赖等。这个时候推荐使用 docker 单机 编排工具 docker-compose&#xff0c;docker-compose …...

C++ 面向对象三大特性——多态

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C 继承 ☂️<3>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;面向对象三大特性的&#xff0c;封装&#xff0c;继承&#xff0c;多态&#xff…...

相同数字的积木游戏

题目描述 题目描述 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木&#xff0c;每个积木块上都有一个数字&#xff0c;积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排&#xff0c;请小薇找到这排积木中数字相同目所处位置最远的2块积木块&#xff0c;计算…...

安防监控视频云存储EasyCVR平台H.265转码功能更新:新增分辨率配置

安防视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求&#xff0c;让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上&#xff0c;视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储…...

图数据库_Neo4j学习cypher语言_常用函数_关系函数_字符串函数_聚合函数_数据库备份_数据库恢复---Neo4j图数据库工作笔记0008

然后再来看一些常用函数,和字符串函数,这里举个例子,然后其他的 类似 可以看到substring字符串截取函数 可以看到截取成功 聚合函数 这里用了一个count(n) 统计函数,可以看到效果 关系函数,我们用过就是id(r) 可以取出对应的r的id来这样.....

LeetCode150道面试经典题-- 加一(简单)

1.题目 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 2.示例 示例 1&#xff1a; 输入&am…...

Centos7 配置Docker镜像加速器

docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六):docker 网络及数据卷设置 docker实战(七):docker 性质及版本选择 认知升…...

微信小程序中pdf的上传、下载及excel导出

微信小程序中pdf的上传、下载及excel导出 pdf上传上传1&#xff1a;上传2&#xff1a; pdf下载导出excel pdf上传 上传两种方法&#xff1a; 上传1&#xff1a; 1.用vant weapp组件&#xff1a; //pdf上传--vant weapp组件 <view class"content"><van-u…...

Python_11 类的方法

一、查缺补漏 1. 实例方法必须用类实例化对象()来调用&#xff0c;用类来调用时会执行&#xff0c;但是self中不是实例化类地址而是传的字符串 二、类中的方法 1. 实例方法 1. 定义在类里面的普通方法(函数) 2. 第一个参数必须是类实例&#xff0c;在方法调用的时候会自动…...

CentOS系统环境搭建(一)——Centos7更新

Centos7更新 更新 yum&#xff08;包括centos内核&#xff09; yum update执行后&#xff0c;系统将更新到centos 7.9。 从这一篇文章开始开始&#xff0c;我将开始在centos系统环境搭建&#x1f517;https://blog.csdn.net/weixin_43982359/category_12411496.html中开始对C…...

Mariadb高可用MHA

目录 前言 一、概述 &#xff08;一&#xff09;、概念 &#xff08;二&#xff09;、组成 &#xff08;三&#xff09;、特点 &#xff08;四&#xff09;、工作原理 二、案例 &#xff08;一&#xff09;、构建MHA 1.所有节点ssh免密登录 2、MySQL主从复制 &#x…...

SASS 学习笔记 II

SASS 学习笔记 II 上篇笔记&#xff0c;SASS 学习笔记 中包含&#xff1a; 配置 变量 嵌套 这里加一个扩展&#xff0c;嵌套中有一个 & 的用法&#xff0c;使用 & 可以指代当前 block 中的 selector&#xff0c;后面可以追加其他的选择器。如当前的 scope 是 form&a…...

提高 Snowflake 工作效率的 6 大工具

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 Snowflake 彻底改变了企业存储、处理和分析数据的方式&#xff0c;提供了无与伦比的灵活性、可扩展性和性能。但是&#xff0c;与任何强大的技术一样&#xff0c;要真正利用其潜力&#xff0c;必须拥有…...

选项方式读取配置IOption、IOptionSnapshot、IOpstionMonitor的区别

IOption, IOptionsSnapshot, 和 IOptionsMonitor 都是 ASP.NET Core 中用于访问配置选项的接口。它们在不同的场景下用于获取配置选项值,并具有不同的生命周期和行为。 IOption: IOption 是一个泛型接口,表示一个配置选项的包装器。它通常在应用程序启动时被解析并注入到需…...

linux基础面试题整理

目录标题 1.说下企业为什么用linux而不用windows&#xff1f;2.linux学过什么&#xff0c;怎么学习的&#xff1f;3.linux基本命令4.linux查看端口、进程、文件类型、挂载5.使用top命令之后前五行会显示什么内容&#xff1f;6.linux怎么查找一个文件7.vim进去后的各种操作 1.说…...

IDEA开发项目时一直出现http404错误的解决方法

系列文章目录 安装cv2库时出现错误的一般解决方法_cv2库安装失败 SQL&#xff1e; conn sys/root as sysdbaERROR:ORA-12560: TNS: 协议适配器错误的解决方案 虚拟机启动时出现“已启用侧通道缓解”的解决方法 Hypervisor launch failed&#xff1b; Processor does not pr…...

NLPR、SenseTime 和 NTU 加速自动视频纵向编辑

视频人像编辑技术已经在电视、视频和电影制作中得到了应用&#xff0c;并有望在不断发展的网真场景中发挥关键作用。最先进的方法已经可以逼真地将同源音频合成为视频。现在&#xff0c;来自北京模式识别国家实验室&#xff08;NLPR&#xff09;、商汤科技研究和南洋理工大学的…...

layui下拉框select 弹出层在最外层

出现问题如图所示 想要的效果是如下 这样的效果只需一行代码就能解决 .layui-layer-page .layui-layer-content{overflow: visible!important;}...

fnn手动实现和nn实现(包括3种激活函数、隐藏层)

原文网址&#xff1a;https://blog.csdn.net/m0_52910424/article/details/127819278 fnn手动实现: import time import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn import torchvision from torch.nn.functional import cross_entrop…...

Lua + mysql 实战代码

--[[luarocks lua语言的包管理器luasql https://luarocks.org/brew install luarocksluarocks install luasql-mysql 注意此处&#xff0c;如果你是 mariadb&#xff0c;然后要求指定 MYSQL_DIR 参数的时候&#xff0c;千万不要指到 mariadb 的安装目录&#xff0c;而是要指…...

智慧工地监管云平台源码 建筑施工一体化信息管理系统源码

智慧工地管理云平台系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段&#xff0c;实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 智慧工地平台系统工作原理&#xff1a; 1、感知设备的…...

三.net core 自动化发布到docker (创建一个dotnet工程发布)

创建Jenkins-create a job 输入名称&#xff08;建议不要带“”这类的字符&#xff09;&#xff0c;选择自由风格的类型&#xff08;红框标注的&#xff09;&#xff0c;点击确定 用于测试,下面选项基本没有选择-配置代码地址 选择执行shell #!/bin/bash # 获取短版本号 GITHA…...

【Spring Cloud 八】Spring Cloud Gateway网关

gateway网关 系列博客背景一、什么是Spring Cloud Gateway二、为什么要使用Spring Cloud Gateway三、 Spring Cloud Gateway 三大核心概念4.1 Route&#xff08;路由&#xff09;4.2 Predicate&#xff08;断言&#xff09;4.3 Filter&#xff08;过滤&#xff09; 五、Spring …...

Android JNI传递CallBack接口并接收回调

在JNI中&#xff0c;可以通过传递一个Java接口对象的引用给C代码&#xff0c;并在C代码中调用该接口对象的方法&#xff0c;实现JAVA层监听C数据变化&#xff0c;下面是一个简单的示例&#xff1a; 在Java代码中定义一个CallBack接口和JNI方法 class TestLib {companion objec…...

机器学习:特征工程之特征预处理

目录 特征预处理 1、简述 2、内容 3、归一化 3.1、鲁棒性 3.2、存在的问题 4、标准化 ⭐所属专栏&#xff1a;人工智能 文中提到的代码如有需要可以私信我发给你&#x1f60a; 特征预处理 1、简述 什么是特征预处理&#xff1a;scikit-learn的解释&#xff1a; provide…...

高级艺术二维码制作教程

最近不少关于二维码制作的&#xff0c;而且都是付费。大概就是一个好看的二维码&#xff0c;扫描后跳转网址。本篇文章使用Python来实现&#xff0c;这么简单花啥钱呢&#xff1f;学会&#xff0c;拿去卖便宜点吧。 文章目录 高级二维码制作环境安装普通二维码艺术二维码动态 …...

每日一题leetcode--使循环数组所有元素相等的最少秒数

相当于扩散&#xff0c;每个数可以一次可以扩散到左右让其一样&#xff0c;问最少多少次可以让整个数组都变成一样的数 使用枚举&#xff0c;先将所有信息存到hash表中&#xff0c;然后逐一进行枚举&#xff0c;计算时间长短用看下图 考虑到环形数组&#xff0c;可以把首项n放…...

tauri-react:快速开发跨平台软件的架子,支持自定义头部UI拖拽移动和窗口阴影效果

tauri-react 一个使用 taurireacttsantd 开发跨平台软件的模板&#xff0c;支持窗口头部自定义和窗口阴影&#xff0c;不用再自己做适配了&#xff0c;拿来即用&#xff0c;非常 nice。而且已经封装好了 tauri 的 http 请求工具&#xff0c;省去很多弯路。 开原地址&#xff…...

k8s 自身原理之 Service

好不容易&#xff0c;终于来到 k8s 自身的原理之 关于 Service 的一部分了 前面我们用 2 个简图展示了 pod 之间和 pod 与 node 之间是如何通信息的&#xff0c;且通信的数据包是不会经过 NAT 网络地址转换的 那么 Service 又是如何实现呢&#xff1f; Service 我们知道是用…...

arduino Xiao ESP32C3 oled0.96 下雪花

Xiao ESP32C3使用oled 0.96实现下雪的功能 雪花下落的时候, 随机生成半径和位置 sandR和sandX,sandY 保存雪花下落位置的时候, 将其周边一圈设置为-1, 标记为有雪花 其他雪花下落的时候, 其他雪花的一圈如果遇到-1, 则停止下落, 并重复2 #include "oled.h" void …...

ElasticSearch索引库、文档、RestClient操作

文章目录 一、索引库1、mapping属性2、索引库的crud 二、文档的crud三、RestClient 一、索引库 es中的索引是指相同类型的文档集合&#xff0c;即mysql中表的概念 映射&#xff1a;索引中文档字段的约束&#xff0c;比如名称、类型 1、mapping属性 mapping映射是对索引库中文…...

Effective Java 案例分享(九)

46、使用无副作用的Stream 本章节主要举例了Stream的几种用法。 案例一&#xff1a; // Uses the streams API but not the paradigm--Dont do this! Map<String, Long> freq new HashMap<>(); try (Stream<String> words new Scanner(file).tokens()) …...

SpringBoot复习:(56)使用@Transactional注解标记的方法的执行流程

首先&#xff0c;如果在某个类或某个方法被标记为Transactional时&#xff0c;Spring boot底层会在创建这个bean时生成代理对象&#xff08;默认使用cglib) 示例&#xff1a; 当调用studentService的addStudent方法时&#xff0c;会直接跳到CglibAopProxy类去执行intercept方…...

JVM——引言+JVM内存结构

引言 什么是JVM 定义: Java VirtualMachine -java 程序的运行环境 (ava 二进制字节码的运行环境) 好处: 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收功能数组下标越界检查&#xff0c;多态 比较: jvm jre jdk 学习jvm的作用 面试理解底层实现原理中…...

open cv学习 (十)图形检测

图形检测 demo1 # 绘制几何图像的轮廓 import cv2img cv2.imread("./shape1.png")gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 将图像二值化 t, binary cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)# 检测图像中的所有轮廓 contours, hierarchy cv2.f…...

【C语言】字符函数和字符串函数

目录 1.求字符串长度strlen 2.长度不受限制的字符串函数 字符串拷贝strcpy 字符串追加strcat 字符串比较strcmp 3.长度受限制的字符串函数介绍strncpy strncat ​编辑strncmp 4.字符串查找strstr 5.字符串分割strtok 6.错误信息报告 strerror perror 7.字符分类函…...

前馈神经网络正则化例子

直接看代码&#xff1a; import torch import numpy as np import random from IPython import display from matplotlib import pyplot as plt import torchvision import torchvision.transforms as transforms mnist_train torchvision.datasets.MNIST(root…...

spring的核心技术---bean的生命周期加案例分析详细易懂

目录 一.spring管理JavaBean的初始化过程&#xff08;生命周期&#xff09; Spring Bean的生命周期&#xff1a; 二.spring的JavaBean管理中单例模式及原型&#xff08;多例&#xff09;模式 2.1 . 默认为单例&#xff0c;但是可以配置多例 2.2.举例论证 2.2.1 默认单例 2.2…...

【Maven教程】(一)入门介绍篇:Maven基础概念与其他构建工具:理解构建过程与Maven的多重作用,以及与敏捷开发的关系 ~

Maven入门介绍篇 1️⃣ 基础概念1.1 构建1.2 maven对构建的支持1.3 Maven的其他作用 2️⃣ 其他构建工具2.1 IDE2.2 Make2.3 Ant2.4 Jenkins 3️⃣ Maven与敏捷开发&#x1f33e; 总结 1️⃣ 基础概念 "Maven"可以翻译为 “知识的积累者” 或 “专家”。这个词源于波…...

今天,谷歌Chrome浏览器部署抗量子密码

谷歌已开始部署混合密钥封装机制&#xff08;KEM&#xff09;&#xff0c;以保护在建立安全的 TLS 网络连接时共享对称加密机密。 8月10日&#xff0c;Chrome 浏览器安全技术项目经理Devon O’Brien解释说&#xff0c;从 8 月 15 日发布的 Chrome 浏览器 116 开始&#xff0c;谷…...

SUMO traci接口控制电动车前往充电站充电

首先需要创建带有停车位的充电站(停车场和充电站二合一)&#xff0c;具体参考我的专栏中其他文章。如果在仿真的某个时刻&#xff0c;希望能够控制电动车前往指定的充电站充电&#xff0c;并且在完成充电后继续前往车辆原来的目的地&#xff0c;那么可以使用以下API&#xff1a…...