java技术圈 为您找到相关结果 8

go 语言网络序主机序(大小端字节序)转换的问题_白鹿港的博客

go 语言大小端字节序的问题 我们一般把字节(byte)当作是数据的最小单位。当然,其实一个字节中还包含8个bit (bit = binary digit)。 在这样的CPU中,总是以4字节对齐的方式来读取或写入内存, 那么同样这4个字节的数据是以什么顺序保存在内存中的呢?我们下面详细探讨一下。 字节序包括:大端序和小端序。 而所谓大端序(big endian),便是指其“最高有效位(most significant byte)”落在低地址上的存储方式。 而对于小端序(little endian)来说就正好相反了,它把“最低有效位(least significant byte)”放在低地址上。 go处理字节序接口 Go中处理大小端序的代码位于 encoding/binary ,包中的全局变量...阅读全文

博文 2021-08-31 02:36:32 CSDN博客_go 大小端转换

一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试) - aspirant

mysql的B+树索引 查找使用了二分查找,redis 跳表也使用了二分查找法,kafka查询消息日志也使用了二分查找法,二分查找法时间复杂度O(logn); 参考:redis的索引底层的 跳表原理 实现 聊聊Mysql索引和redis跳表 ---redis的跳表原理 时间复杂度O(logn)(阿里) 参考:kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里) 参考:二分查找法:各种排序算法的时间复杂度和空间复杂度(阿里) 在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引(MyISAM 表)和R-Tree索引,本文讲的是B-Tree索引。 后面的索引原理一定要看,太重要了,阿里两个人都问这个mysql的索引原理 mysql使用了 ...阅读全文

博文 2021-04-03 05:46:30 博客园

Linux中Buffer和Cache的区别 - D_R_Y

1. Cache:缓存区,是高速缓存,是位于CPU和主内存之间的容量较小但速度很快的存储器,因为CPU的速度远远高于主内存的速度,CPU从内存中读取数据需等待很长的时间,而 Cache保存着CPU刚用过的数据或循环使用的部分数据,这时从Cache中读取数据会更快,减少了CPU等待的时间,提高了系统的性能。 Cache并不是缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache一般会用在I/O请求上,如果多个进程要访问某个文件,可以把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提高系统性能。 2. Buffer:缓冲区,用于存储速度不同步的设备或优先级不同的设备之间传输数据;通过buffer可以减少进程间通信需要等待的时间,当存储速度快的设...阅读全文

博文 2020-06-21 04:42:58 博客园

hbase2.1.x 压缩算法

说明作用减少数据体积,可以存储更多的数据 缺点压缩/解压缩需要 大量计算,消耗大量CPU资源 解压缩过程压缩在写入数据块到 HDFS 之前会首先对数据块进行 压缩,再落盘,从而可以减少磁盘空间使用量 解压缩在读数据的时候首先从 HDFS 中加载出 block 块之后进行 解压缩 压缩算法hbase2.1 支持 LZO ZSTD GZ LZ4 算法 GZ(GZIP)GZIP 压缩率最高,但是其实CPU密集型的,对CPU的消耗比其他算法要多,压缩和解压速度也慢 用于冷数据存储,要求数据访问不频繁 默认支持 LZOLZO的压缩率居中,比GZIP要低一些,但是压缩和解压速度明显要比GZIP快很多,其中解压速度快的更多 用于热数据存储,数据访问频繁时使用 zstdzstd是Facebook在2016年...阅读全文

博文 2024-01-18 19:15:36 马育民老师

7-文件IO

1. 阻塞 IO通常来说,从普通文件读数据,无论你是采用 fscanf,fgets 也好,read 也好,一定会在有限的时间内返回。但是如果你从设备,比如终端(标准输入设备)读数据,只要没有遇到换行符(’\n’),read 一定会“堵”在那而不返回。还有比如从网络读数据,如果网络一直没有数据到来,read 函数也会一直堵在那而不返回。read 的这种行为,称之为 block,一旦发生 block,本进程将会被操作系统投入睡眠,直到等待的事件发生了(比如有数据到来),进程才会被唤醒。系统调用 write 同样有可能被阻塞,比如向网络写入数据,如果对方一直不接收,本端的缓冲区一旦被写满,就会被阻塞。1.1 阻塞读终端实验代码// 文件名:blockdemo.c#include 阅读全文

博文 2023-05-15 10:06:01 阻塞与非阻塞IO_51CTO博客_阻塞io和非阻塞io区别

rbd常用的配置参数

本文分享自天翼云开发者社区《rbd常用的配置参数》,作者:l****nrbd的基本介绍rbd的架构如下图所示:​rbd采用CRUSH算法实现数据的随机分布。CRUSH算法,即Controlled Replication Under Scalable Hashing,是一种基于哈希的数据分布算法。CRUSH算法以数据唯一标识符、当前存储集群的拓扑结构以及数据备份策略作为CRUSH的输入,可以随时随地通过计算获取数据所在的底层存储设备并直接通信获取或者写入数据,从而避免查表操作,实现去中心化和高度并发,将数据均衡的存储到各个存储节点,实现数据存储的负载均衡;另外去中心化以及哈希的数据随机分布,使得rbd存储在理论上具备无限的可扩展性。CRUSH算法支持数据的多种备份策略,支持可配置副本数,支持存...阅读全文

博文 2024-07-16 16:08:32 Tianyiyun

快照技术对比学习

本文分享自天翼云开发者社区《快照技术对比学习》,作者:z****n1.快照的分类根据 SNIA 的定义, 快照有全量快照 (full snapshot) 和增量快照 (incremental snapshot) 两种类型。2.全量快照克隆(Clone):与备份操作类似,克隆技术是一种数据复制和恢复的方法,用于创建源数据的完全副本。将源数据的所有信息和状态以二进制形式进行备份,并在需要时将其恢复到相同或另一个系统中。克隆对象可以是存储卷、文件系统或者LUN,优势在于它提供了完全一致和独立的复制,不受源系统的影响。缺点就是在创建时要完整的复制一份数据,需要占用和源数据空间一样大的存储空间,资源成本高,消耗时间长。镜像分离(Split Mirror):镜像分离也属于全量快照,先创建源卷的一个镜像卷...阅读全文

Redis缓存异常及解决方案

本文分享自天翼云开发者社区《Redis缓存异常及解决方案》,作者:l****n本文向读者解释了Redis使用过程中,数据不一致、缓存雪崩、缓存击穿和缓存穿透等问题的定义,并给出对应的解决方案。1、数据不一致 一致指的是:缓存中有数据,那么,缓存的数据值需要和数据库中的值相同;缓存中本身没有数据,那么,数据库中的值必须是最新值。不一致如何发生:对于读写缓存来说,写缓存时同步写数据库,需要使用事务保证缓存和数据库的更新具有原子性。弱一致性情况下,可以使用异步写回。对于只读缓存,删改数据需要既更新数据库,又删除缓存。如果不使用事务,就会出现数据不一致。比如先更新数据库,再删除缓存。更新成功,删除缓存失败,则缓存中为旧值。如果先删除缓存再更新数据库,则缓存删除成功,数据库更新失败,再访问数据库,数据...阅读全文

博文 2024-08-16 16:29:52 Tianyiyun