如何发挥一个字节的极限,存储大量内容

在当前的硬件发展阶段,存储空间已经是非常廉价的了,普通硬盘都是以T来计量,内存以G来计量,服务器内存16G,64G已经普及,所以我们在开发的时候,很少去考虑数据是否有足够的空间存储。

可以定义成byte,short的字段,我们为了方便,会定义成int,这对业务来讲,并没有什么区别。甚至会定义成varchar,完全不用考虑空间是否有浪费。

但是在某些特殊业务场景,对性能和网络传输有苛刻的要求时,我们需要使用最小的空间存储最多的内容。

业务场景:

一个设备有8个插口,每个插口有一个状态(可用,不可用),一个字节是8位,

假如1号,4号,5号,7号插口可用,2号,3号,6号,8号插口不可用,

那么二进制数据是"10011010",转换成2进制就是154,转成16进制就是9A,那么我们只需要存储9A就可以代表当前这个设备8个插口的状态。

"10011010"也可以每两位表示一个值,每两位转成10进制就是2122,再转成16进制是84A

时间: 2024-12-07 19:01:10

如何发挥一个字节的极限,存储大量内容的相关文章

一个字节是多少?

字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位. 字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制. 在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 符号:英文标点占一个字节,中文标点占两个字节.举例:英文句号"."占1个字节的大小,中文句号"."占2个字节的大小 一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,如一个ASCII码就是一个

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

【输出一个整数的二进制存储形式】

// 输出一个整数的二进制存储形式void putBinary(int n){ int bits = sizeof(n) * 8; while (bits-->0) { printf("%d", n>>bits&1); if (bits%4==0) printf(" "); } printf("\n");}

一个字节中存在着多少个二进位1

一个字节中二进位1的个数 两个相似的方法,一个右移所查看的字节:一个查看左移1. #include <stdio.h> int getOneBits(unsigned char num) { int count = 0; for(int i = 0; i < 8; i++) { if((num & (1 << i)) != 0) count++; } return count; } int main(void) { printf("%d\n", g

Java基础知识强化之IO流笔记27:FileInputStream读取数据一次一个字节数组byte[ ]

1. FileInputStream读取数据一次一个字节数组byte[ ]  使用FileInputStream一次读取一个字节数组: int read(byte[]  b) 返回值:返回值其实是实际读取的字节个数 . 2. 代码示例: 1 package com.himi.fileinputstream; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 6 7 8 /** 9 * 10 * 使用FileIn

java文件流之copy文件(用一次读取一个字节数组方式)

package fileoutputstream; import java.io.FileInputStream; import java.io.FileOutputStream; public class CopyFileDemo { public static void main(String[] args) throws Exception { //封装数据源 FileInputStream fis = new FileInputStream("fos.txt");//fos.t

slideshare原本是一个专业的幻灯片存储与展示的网站

slideshare就是其中一个.slideshare原本是一个专业的幻灯片存储与展示的网站,它支持扩展名为ppt.pps和odp三种格式的幻灯片,用户上传成功以后slideshare会提供给用户一个基于flash的展示平台,同时它还会提供一段代码,方便用户将这些内容放置到自己的博客中. 可能是觉得自己提供的服务太过单一,slideshare最近开始支持doc和xls格式文件,使自己成为全面的文档分享服务提供商.由于slideshare在幻灯片分享方面颇具盛名,并且二者在使用和体验方面差别不大,

如何判断一个字节是否是一个汉字中的一部分

UNICODE是万能编码,包含了所有符号的编码,它规定了所有符号在计算机底层的二进制的表示顺序. 在UTF-8编码中一个中文占三个字节 比如 汉字 "张" 对应的三字节编码是[229 188 160] 但是如何判断,229 188 160 是组合的呢,这里涉及到一套规则 UTF规定: 如果一个符号只占一个字节,那么这个8位字节的第一位就为0. 如果为两个字节,那么规定第一个字节的前两位都为1,然后第一个字节的第三位为0,第二个字节的前两位为10 然后如果是三个字节的话,那么第一个字节的

SharePoint 2013 使用 RBS 功能将二进制大型对象 BLOB 存储在内容数据库外部。

为每个内容数据库设置 BLOB 存储 启用并配置 FILESTREAM 之后,请按照以下过程在文件系统中设置 BLOB 存储.必须为要对其使用 RBS 的每个内容数据库设置 BLOB 存储. 设置 BLOB 存储 确认执行这些步骤的用户帐户是要为其配置 RBS 的每个数据库上 db_owner 固定数据库角色的成员. 依次单击"开始"."所有程序"."Microsoft SQL Server 2008"和"SQL Server Mana