数据的存储---整型、浮点型
目录
一、整型在内存中的存储
1. 原码、反码、补码
2. 大端与小端
二、浮点数在内存中的存储
1.浮点数的存
2. 浮点数的取
3. 题目解析
一个变量的创建需要在内存中开辟空间,而开辟的空间大小是由数据类型决定的。下面我们就来讨论一下整型、浮点型在内存中的储存。
一、整型在内存中的存储
1. 原码、反码、补码
整数的2进制表述方法有三种:原码、反码、补码
对于有符号整数,这三种表示形式均有两部分组成:(1)符号位,(2)数值位。
而对于无符号整数,则只有数值位。
在2进制序列中最高位是符号位,其余都是数值位。对于符号位而言,用 “ 0 ” 表示正,用 “ 1 ” 表示负。
正数的原、反、补码都相同。
负整数的三种表示方法各不相同。
对于负数而言:
原码
直接将数值按照正负数的形式翻译成二进制就可以得到原码。
反码
将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码
反码+1就得到补码。
当然,反码到原码也可以先取反,再+1。
原码、反码、补码三则之间的转换方法:
对于整形来说:数据存放内存中其实存放的是补码 。
这是因为:
使用补码,可以将符号位和数值域统 一处理。
同时,由于中央处理器(CPU)只有加法器,这样加法和减法就可以统一处理了。
此外,补码与原码相互转换,其运算过程 是相同的,不需要额外的硬件电路。
示例:
#include <stdio.h>
int main()
{int a = 20;int b = -10;int c = a + b;printf("%d\n", c);return 0;
}
这个代码的计算过程:
但是如果你用原码来计算:
这样计算的结果为:20 - 10 = -30 ,明显不成立。所以在内存中存放的是补码,计算时是有补码来计算的。
2. 大端与小端
知道了整型数字在内存中的存储形式之后,那也要知道它在内存中的存储位置。下面就来讨论一下它在内存中的存储位置关系。
对于存储16进制的a变量的存储方式的理解,就需要理解大端与小端的介绍。
首先需要了解一下,大端与小端的存储概念。
大端字节存储:是指低位字节的数据保存在内存的高地址中,而高位字节的数据保存在内存的低地址中。简称 大端;
小端字节存储:是指低位字节的数据保存在内存的低地址中,而高位字节的数据保存在内存的高地址中。简称 小端。
图解:
下图是编译器中一个小端存储的示例:
为什么会出现大小端的区分呢?
这是因为在计算机系统中,是以字节为单位的, 每个地址单元都对应着⼀个字节 ,⼀个字节为8bit位,但是在C语言中除了8bit的 char 之外,还有16bit的 short 型,32bit的 int 型等,所以只有char型的数据能在一个地址单元中存储,而大于8bit的类型就需要分配到多个地址单元中。
另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着⼀个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。
我们常用的 X86 结构是小端模式,而 KEIL C51 则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是 大端模式还是小端模式。
下面的一个练习可以很好的体现出大小端的应用。
- 题目:用一个小程序来拍段当前机器的字节序(即判断大端与小端)。
这个问题可以这样解决:
先定义一个 int a = 1,由于1的16进制是00 00 00 01,然后再用char型的指针去取出这个int型的1的第一个字节数据。若这个指针指向的数据是1,则为小端,若为0,则为大端。
#include<stdio.h>
int main()
{int a = 1;char* p = (char*)&a;if (*p == 1)printf("小端\n");elseprintf("大端\n");return 0;
}
二、浮点数在内存中的存储
首先来看以下代码及其运行结果:
为什么会出现这种情况呢?
这其实是因为浮点型与整型的存储方式是不同的。
1.浮点数的存
要理解上述这个结果,⼀定要搞懂浮点数在计算机内部的表示方法,即浮点数是怎么存的?
根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数 V 可以表成下面的形式:V = (−1)^S ∗ M ∗ 2^E
- (−1) ^S表示符号位,当S=0,V为正数;当S=1,V为负数
- M表示有效数字,M是大于等于1,小于2的
- 2^E表示指数位
比如:根据上述规则,十进制的5.5,写成二进制是101.1,则二进制的科学计数法为:1.011*2^2,相当于:(-1)^0*1.011*2^2,那么S=0,M=1.011,E=2 。
正因为任意一个二进制浮点数都可以用S,M,E这三个字母来表示,所以就有了以下规定:
IEEE754规定:
- 对于32位的浮点数(float),最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字 M
- 对于64位的浮点数(double),最高的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M
当然在这之中,对于存的“ M ”和“ E ”也有一些特别的规定:
1. 对于 M
看到上面的规定,可以发现二进制 M 的范围是:1~2 ,所以M就可以写成 1.xxxxxxx 的形式,其中 xxxxxxx 是小数部分。也就是说,对于任意的M,其中要改变的只有它的小数部分。
所以IEEE 754又有规定:
在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的 xxxxxx部分,所以内存中保存的M只有小数部分。
比如在保存1.01的时候,只保存01,等到读取的时候,才会把第一位的1加上去。
这样做的目的是:节省1位有效数字。
对32位浮点数来说,留给M只有23位,将第一位的1舍去以后,就等于可以保存24位有效数字(23位的小数部分+1位隐含的1)。
对64位浮点数来说,留给M只有52位,将第一位的1舍去以后,就等于可以保存53位有效数字(52位的小数部分+1位隐含的1)。
2. 对于 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
知道了上述关于M和E的特点,就可以掌握 浮点数的存 的操作了。来看下面的一个示例:
2. 浮点数的取
知道了浮点数的存,那么就应该也要知道浮点数时怎么取出来的。
对于S和M来说,怎么存的就怎么取出去。但是对于E来说,就要分三种情况。
E不全为0或不全为1(常规情况)
这时需要采用以下规则:
指数E的计算值减去127(32位的浮点数)或1023(64位的浮点数),得到真实值,再将有效数字M前加上第⼀位的1。
比如:
32位的浮点数。存操作:0.5的二进制为:0.1,由于M的规定整数部分一定为1,则需要将小数点向右移动一位,即1.0*2^(-1) ,此时的 E = -1 + 127(中间值) = 126 ,表示为:01111110,而尾数1.0去掉整数部分为0,补齐23位,所以保存的M为:00000000000000000000000
0,5的在内存即为: 0 01111110 00000000000000000000000
取的操作:第一位为0,则S=0;中间的8为01111110,即为126,这时需要减去127,得到-1,故E= -1,最后23为均为0,则M的小数部分就为0,再将有效数字M前加上第⼀位的1。,得到M=1.0,最后代入公式:V = (−1)^S ∗ M ∗ 2^E, 得到二进制:0.1,再转化为十进制为:0.5。
E全为0
这时,浮点数的指数E规定等于1-127(或者1-1023)即为真实值,有效数字M不再加上第⼀位的1,而是还原为0.xxxxxx的小数,正负取决于符号位s。这样做只能表示±0,以及接近于0的很小的数字。
如:
在内存中的存储:0 00000000 00100000000000000000000
现在要将它取出来,通过这32位二进制,可以得到S=0,M=1.001,由于这里的E保存的是全0,所以,E的真实值被规定等于1-127,即为-126,这时若通过公式来算:V = (−1)^S ∗ M ∗ 2^E = (-1)^0*0.001*2^(-126),可以发现,此时V是一个及其小的数,无限接近于0了,所以在编译器中会把它默认为是0。
E全为1
这时,表示的是正负无穷大(正负取决于符号位s);
0 11111111 00010000000000000000000
3. 题目解析
回顾刚刚的问题:
现在对这个应该有了很好的理解了吧。
首先,由于n是整型,所以n的二进制补码就为:0000 0000 0000 0000 0000 0000 0000 1001
以%d打印就是打印这个补码的原码的十进制数。
当它强制性转化为浮点数后,再用%f打印,就会对这个二进制进行拆分,可以得到S=0,E=1-127=-126,M=000 0000 0000 0000 0000 1001,E为全0,所以这个浮点数是一个无限接近0的数,所以打印的就是0.000000.
当它以浮点数的形式存进去,根据公式,则S=0,M=1.001,E=3+127=130,则得到的二进制为:0 10000010 001 0000 0000 0000 0000 0000
当它以%d的形式打印时,会认为它是补码0100 0001 0001 0000 0000 0000 0000 0000
所以会打印出1,091,567,616
当以%f打印时,则会以0 10000010 001 0000 0000 0000 0000 0000,先得到S=0,M=1.001,E=130-127=3,然后再以公式计算得到并输出9.000000
本篇文章到此结束!
相关文章:
数据的存储---整型、浮点型
目录 一、整型在内存中的存储 1. 原码、反码、补码 2. 大端与小端 二、浮点数在内存中的存储 1.浮点数的存 2. 浮点数的取 3. 题目解析 一个变量的创建需要在内存中开辟空间,而开辟的空间大小是由数据类型决定的。下面我们就来讨论一下整型、浮点型在内存中的…...
鲸鱼算法WOA对风电场风电机组一次二次调频参数进行全局最优辨识,二次调频参数辩识matlab/simulink,也可进一步修改成一次调频参数辩识
模型为二次调频模型,也可修改为一次调频模型参数辩识 随着风电在电力系统中占比提高,其调频特性对电力系统频率稳定性的影响增大,例如,随着风电渗透水平不断提升,系统惯量不断增加,电力系统频率不断下降,在…...
Spring 中 SmartInitializingSingleton 的作用和示例
一、 接口定义 SmartInitializingSingleton 是 Spring 框架提供的一个 单例 Bean 全局初始化回调接口,用于在 所有非延迟单例 Bean 初始化完成后 执行自定义逻辑。 核心方法: public interface SmartInitializingSingleton {void afterSingletonsInsta…...
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现
《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现 《TCP/IP网络编程》学习笔记 | Chapter 18:多线程服务器端的实现线程的概念引入线程的背景线程与进程的区别 线程创建与运行pthread_createpthread_join可在临界区内调用的函数工作&#…...
Unity AI 技术浅析(三):智能代理(Agents)
Unity AI的智能代理(Agents)技术是实现游戏和虚拟现实应用中非玩家角色(NPC)、敌人、盟友等智能行为的核心。通过智能代理,开发者可以为虚拟角色赋予感知、决策和行动的能力,使其能够与环境和其他角色进行复杂的交互。 一、智能代理的基本原理 智能代理是能够在特定环境…...
加油站~~
求最少加油次数就是一个贪心问题,这里也不需要证明,根据我们的常识也知道就是走到油不够的时候就加油就好了,这里的no solution这有在两个加油站之间的距离大于了加满油后的行驶距离才会存在,其他情况都是可以计算的。代码有很多细…...
【商城实战(24)】商城性能大揭秘:压力测试与性能监控实战
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配…...
Linly-Talker:开源数字人框架的技术解析与影响
一、引言:AI 数字人的发展趋势 近年来,数字人(Digital Human) 技术迅速发展,从最早的 2D 虚拟主播,到如今能够进行实时交互的 3D 智能助手,AI 在多模态交互领域的应用愈发广泛。各大互联网公司…...
【Nexus】Maven 私服搭建以及上传自己的Jar包
Nexus 安装 docker run -d -uroot --name nexus3 --restartalways -p 8081:8081 -v /data/nexus-data/blobs:/nexus-data/blobs -v /etc/localtime:/etc/localtime sonatype/nexus3这里也提供一下docker-composer的方法 .env 文件 VERSIONlatest CONTAINER_NAMECONTAINER_N…...
wlwrap 与 rlwrap 的区别对比:图形显示协议的演变
在 Linux 系统中,许多工具和程序依赖于命令行界面(CLI)来进行交互,尤其是对于那些没有图形用户界面的应用程序。在这种情况下,命令行编辑、历史记录和自动补全等功能是提升工作效率和用户体验的关键。rlwrap 和 wlwrap…...
矩阵交换行(信息学奥赛一本通-1119)
【题目描述】 给定一个55的矩阵(数学上,一个rc的矩阵是一个由r行c列元素排列成的矩形阵列),将第n行和第m行交换,输出交换后的结果。 【输入】 输入共6行,前5行为矩阵的每一行元素,元素与元素之间以一个空格分开。 第6行包含两个整…...
CP210x 驱动秘籍:打通 Windows 11 端口的任督二脉
前言 江湖上,众多电脑侠客在安装 Windows 11 时,遭遇“端口失踪案”。原来,这是缺少 CP210x 驱动的“内功心法”。今日,贫道便传授一套独门秘籍,助你打通端口“任督二脉”,让数据流畅如江湖中轻功高手。 …...
IDEA集成git,项目的克隆,远程仓库中文件的添加删除
目录 一、克隆项目 二、使用IDEA完成文件的上传和删除 1.配置git 2.上传 3.删除(通过git bash) 一、克隆项目 点击克隆,复制url ,如下 打开你想要克隆到哪里,右击,选择 open Git Bash here 这一步之后…...
分治构造格雷码
题目描述 格雷码是一种二进制编码方式,其特性是任意两个相邻的码只有一位二进制位不同。给定一个整数 n,表示格雷码的位数,请生成所有 n 位格雷码,并按照格雷码的标准顺序输出。 输入格式 输出样例输入包含一个整数 n,…...
区跨链知识和概念
1、以太坊 Geth 源码解析 Geth(Go Ethereum)是以太坊官方提供的 Go 语言实现的客户端,广泛用于以太坊全节点运行、挖矿、DApp 开发等。理解 Geth 的源码有助于掌握以太坊区块链底层逻辑,如区块同步、EVM 执行、P2P 交互等。 2、…...
C# net deepseek RAG AI开发 全流程 介绍
deepseek本地部署教程及net开发对接 步骤详解:安装教程及net开发对接全流程介绍 DeepSeekRAG 中的 RAG,全称是 Retrieval-Augmented Generation(检索增强生成),是一种结合外部知识库检索与大模型生成能力的技术架构。其…...
REST 请求返回 Invalid Credentials
REST 请求返回 “Invalid Credentials”(无效凭据),通常表示身份验证失败。可能的原因和解决方案如下: 可能的原因 & 解决方案 用户名或密码错误 确保使用正确的用户名和密码。如果 API 需要 Base64 编码的 Authorization 头…...
方案推介:206页WORD版ERP系统软件投标书整体解决方案
(推介资料包含于绑定资源内) 该文档是一份 ERP 系统软件投标书,围绕ERP 系统展开,全面阐述了其为机械加工企业提供的整体解决方案、应用价值、行业成功案例及标准功能,旨在助力企业实现信息化管理升级 。 ERP 软件系统…...
WebSocket生命周期和vue中使用
ing。。。晚点更新 进入页面,生命周期挂载后,window监听ws连接online 正常情况,心跳包检测避免断开 非正常情况,ws.onclose断开, 判断1000状态吗,触发重连函数。 定时器,重连,判断…...
RabbitMQ消息持久化与Lazy模式对比分析
RabbitMQ消息持久化与Lazy模式对比分析 在RabbitMQ中,消息持久化与Lazy模式是两种不同的机制,分别针对消息可靠性、存储优化等不同维度设计。以下从六个层面进行深度对比: 一、核心目标与作用对象差异 维度消息持久化(delivery_…...
Springboot中的异常处理
ControllerAdvice虽然只是在处理Controller注解的类,在Service层抛出的异常如果没有在Service层被处理的话,会向上抛出到到Controller层,再被异常处理器捕获 1. 全局异常处理 ControllerAdvice:全局处理器,处理有Con…...
深入解析Go语言Channel:源码剖析与并发读写机制
文章目录 Channel的内部结构Channel的创建过程有缓冲Channel的并发读写机制同时读写的可能性发送操作的实现接收操作的实现 并发读写的核心机制解析互斥锁保护环形缓冲区等待队列直接传递优化Goroutine调度 实例分析:有缓冲Channel的并发读写性能优化与最佳实践缓冲…...
C++中虚析构函数的作用是什么?为什么基类需要虚析构函数?
C中虚析构函数的作用是什么?为什么基类需要虚析构函数? 在C中,虚析构函数(virtual destructor)的作用是确保在通过基类指针或引用删除派生类对象时,能够正确调用派生类的析构函数,从而避免资源…...
ClickHouse合并任务与查询延迟专项测试
ClickHouse合并任务与查询延迟专项测试 1. 测试目的 验证周期性高延迟(~900ms)是否由后台合并任务(Merge)引起。 2. 测试环境 组件配置ClickHouse版本24.8.3.13服务器硬件8核CPU / 32GB内存 / NVMe SSD测试表log_test 3. 测试…...
3.14学习总结
今天完成了几道关于二叉树的算法题 关于二叉树的最小最大深度和数据流中的第k大元素,用到优先队列,学习了有关java的基础知识,学习了双指针法。...
OpenHarmony自定义子系统、部件与模块
如图所示,OpenHarmony系统源码中,大体上按照不同种类的功能分成多个子系统,然后一个子系统内部进一步在同类功能上的差异性划分成一个或多个部件,也就是说一个部件表示一个具体功能的源码集合。最后一个部件的源码再划分成一个或多…...
PPT 相关资料介绍
文章目录 一、iSlide 工具二、免费 PPT 模板下载三、Kimi 一键生成 PPT 一、iSlide 工具 iSlide 官网 二、免费 PPT 模板下载 7个完全免费的PPT模板下载网站 优品PPT 第一PPT 三、Kimi 一键生成 PPT ☆...
C# 发送邮件 报错:此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。
C# 发送邮件 报错:此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。 报错信息分析 当你遇到如下报错时: 此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。…...
大数据-spark3.5安装部署之standalone模式
真实工作中还是要将应用提交到集群中去执行,Standalone模式就是使用Spark自身节点运行的集群模式,体现了经典的master-slave模式。集群共三台机器,具体如下 u22server4spark: master worker u22server4spark2: worke…...
接口自动化入门 —— Jmeter实现在接口工具中关联接口处理方案
1. JMeter 接口关联处理的核心概念 接口关联是指在多个接口请求之间共享数据,例如将一个接口的返回值作为另一个接口的输入参数。常见的场景包括: 使用登录接口返回的 Token 作为后续接口的认证信息。 将一个接口返回的 ID 作为另一个接口的请求参数。…...
WebForms HTML:深入理解与高效运用
WebForms HTML:深入理解与高效运用 引言 随着互联网技术的飞速发展,WebForms HTML作为Web开发中的一种重要技术,已经成为了许多开发者日常工作中不可或缺的一部分。本文将深入探讨WebForms HTML的原理、应用场景以及高效运用技巧࿰…...
VSCode 搭建C++编程环境 2025新版图文安装教程(100%搭建成功,VSCode安装+C++环境搭建+运行测试+背景图设置)
名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、VScode下载及安装二、安装 MinGW-w64 工具链三、Windows环境变量配置四、检查 M…...
【Linux 内核 | 操作系统 | 内核编译】内核编译中与锁调试相关的设置有哪一些?内核 Debug 选项中 LockDep 和其他锁调试选项详解
问题描述: 我在看内核锁调试的信息时,看到了一些内核编译参数相关的设置,开启这些信息可以帮助我们在测试环境中调试锁的竞争情况,可以详细的打印出来一些线程持有锁,一些线程争抢锁的信息。 以下是我的配置&#…...
LinuX---Shell---变量
系统预定义变量 常用系统变量 PATH、HOME、PWD、SHELL、USER等 获取变量的值 语法:$变量名 $和变量名之间不能有空格。 案例实操 查看系统变量的值 fengubuntu:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/u…...
深入理解Spring MVC:构建灵活的Web应用
大家好!今天我们来聊聊Spring框架中的一个重要模块——Spring MVC。Spring MVC是一个基于MVC(Model-View-Controller)架构的Web框架,它提供了强大的功能来处理HTTP请求、生成动态内容以及管理Web应用程序的流程。无论是构建RESTfu…...
详解SQL数据查询功能
数据查询 一、 单表查询1. 选择表中的若干列2. 选择表中的若干元组3. ORDER BY 子句4. 聚合函数5. GROUP BY 子句6. LIMIT 子句综合示例: 二、 多表查询1. 等值连接查询 (Equi-Join)2. 非等值连接查询 (Non-Equi Join)3. 自然连接查询 (Natural Join)4. 复合条件连接…...
ArcGIS Pro 车牌分区数据处理与地图制作全攻略
在大数据时代,地理信息系统(GIS)技术在各个领域都有着广泛的应用,而 ArcGIS Pro 作为一款功能强大的 GIS 软件,为数据处理和地图制作提供了丰富的工具和便捷的操作流程。 车牌数据作为一种重要的地理空间数据…...
Git 本地常见快捷操作
Git 本地常见快捷操作 📌 1. 基本操作 操作命令初始化 Git 仓库git init查看 Git 状态git status添加所有文件到暂存区git add .添加指定文件git add <file>提交更改git commit -m "提交信息"修改最后一次提交信息git commit --amend -m "新…...
大视频背景暗黑风格的wordpress企业主题免费下载
整体风格是黑色的,首页首屏大视频背景,动态效果非常好。向下滚动时,滚动的特效也不错。 原文 https://www.bixugao.com/wp/26.html...
Apache Tomcat漏洞,对其进行升级
我们付出一些成本,时间的或者其他,最终总能收获一些什么。 升级背景: 近日,新华三盾山实验室监测到 Apache 官方修复了一个远程代码执行漏洞 (CVE-2025-24813) ,其CVSS3 漏洞评分为 7.5 。 影响范围 9.0.0.M1 ≤…...
fs的proxy_media模式失效
概述 freeswitch是一款简单好用的VOIP开源软交换平台。 在fs的使用过程中,某些场景只需要对rtp媒体做透传,又不需要任何处理。 在fs1.6的版本中,我们可以使用proxy_media来代理媒体的转发,媒体的协商由AB路端对端处理ÿ…...
Spring Boot与Apache Ignite集成:构建高性能分布式缓存和计算平台
1. 前言 1.1 什么是Apache Ignite Apache Ignite是一个高性能的分布式内存计算平台,支持内存缓存、分布式计算、流处理和机器学习等功能。它提供了低延迟的数据访问和强大的计算能力,适用于需要高性能和可扩展性的应用。 1.2 为什么选择Apache Ignite 高性能:Ignite利用内…...
深度学习优化-Gradient Checkpointing
数学原理参考: 梯度检查点技术(Gradient Checkpointing)详细介绍:中英双语-CSDN博客 视频讲解参考: 用梯度检查点来节省显存 gradient checkpointing_哔哩哔哩_bilibili Gradient Checkpointing(梯度检查…...
Linux内核实时机制19 - RT调度器3 - 实时任务出入队
Linux内核实时机制19 - RT调度器3 - 实时任务出入队 1、enqueue_task_rt和dequeue_task_rt都会调用dequeue_rt_stack接口, 当请求的rt_se对应的是任务组时,会从顶部到请求的rt_se将调度实体出列。 2、任务添加到rt运行队列时, 如果存在多个…...
CRM企业客户关系管理系统产品原型方案
客户关系管理系统(CRM)是企业产品应用中的典范,旨在通过信息技术和互联网技术提升企业核心竞争力,优化企业与顾客在销售、营销和服务方面的互动。本作品提供了一套通用型的CRM系统原型模板,涵盖数据管理、审批流程、统…...
HashMap ,HashTable , ConcurrentHashMap 面试
双列集合 HashMap 线程不安全的 HashMap 允许键和值为 null。不过要留意,HashMap 并非线程安全的,在多线程环境下使用可能会出现问题。 数组链表红黑树 jdk1.8 双列集合 存储keyvalue 底层数组的形式存在,初始值 为16 也可以在new HashMap…...
PyTorch 系列教程:探索自然语言处理应用
本文旨在介绍如何使用PyTorch进行自然语言处理(NLP)的基础知识,包括必要的库、概念以及实际代码示例。通过阅读本文,您将能够开始您的NLP之旅。 1. 理解PyTorch PyTorch是一个开源的机器学习库,基于Torch库࿰…...
【操作系统安全】任务2:用户与用户组
目录 一、用户与用户组介绍 1.1 用户 1.2 用户组 1.3 用户与用户组的关系 二、用户与用户组管理 2.1 用户管理 2.1.1 创建用户 2.1.2 设置用户密码 2.1.3 删除用户 2.2 用户组管理 2.2.1 创建用户组 2.2.2 删除用户组 2.2.3 将用户添加到用户组 三、影子账户创建…...
DeepSeek技术解析:MoE架构实现与代码实战
以下是一篇结合DeepSeek技术解析与代码示例的技术文章,重点展示其核心算法实现与落地应用: DeepSeek技术解析:MoE架构实现与代码实战 作为中国AI领域的创新代表,DeepSeek在混合专家模型(Mixture of Experts, MoE&…...
LLM对齐方法作用:主要解决大型语言模型(LLMs)输出与人类价值观、需求和安全规范不一致的问题
LLM对齐方法作用:主要解决大型语言模型(LLMs)输出与人类价值观、需求和安全规范不一致的问题 对齐方法(Alignment Methods) 主要解决大型语言模型(LLMs)输出与人类价值观、需求和安全规范不一致的问题。其核心目标是让模型生成的内容更符合人类预期,同时确保伦理合规性…...