redis有五种基本数据结构:字符串、hash、set、zset、list。但是你知道构成这五种结构的底层数据结构是怎样的吗? 今天我们来花费五分钟的时间了解一下。 1、string 这里不得不提动态字符串 SDS,即 ”simple dynamic string" 的缩写。redis 中所有场景中 ...
分类:
其他好文 时间:
2020-05-19 20:26:46
阅读次数:
59
一、使用碎片来进行一个最佳实践,即我们写一个新闻的app 1.首先先建立一个新闻类 package com.example.fragmentbestpractice; ? public class News { private String title; private String content ...
分类:
移动开发 时间:
2020-05-17 01:21:27
阅读次数:
78
对于redis来说,什么是最重要的? 毋庸置疑,是内存。 一、reids 内存分析 redis内存使用情况:info memory 示例: 可以看到,当前节点内存碎片率为226893824/209522728≈1.08,使用的内存分配器是jemalloc。 used_memory_rss 通常情况下 ...
分类:
其他好文 时间:
2020-05-16 12:23:18
阅读次数:
84
所谓并发编程,所谓有其三 一、高速缓存的两面性 cpu->高速缓存->内存 高速缓存:平衡cpu和内存之间的速度差异,变量从内存首先加载到高速缓存然后以供cpu计算使用。 对于同一个cpu来说,存储于其高速缓存中的变量,对于使用其时间碎片的线程来说,都是原子可见的,任何的变更都能及时的感知到其所被使 ...
分类:
编程语言 时间:
2020-05-14 22:40:48
阅读次数:
94
1:复制算法 将内存平均分为两份:A和B。当A部分内存使用完了,将A部分内存中还在使用的对象copy到B部分内存中,然后清空A部分内存。以此类推... 这种算法缺点是内存利用率只用50%;2:标记-清除算法 先标记所有要回收的对象,然后在清除所有标记好的对象;这种算法的缺点是会有大量的不连续内存碎片... ...
分类:
编程语言 时间:
2020-05-14 15:07:30
阅读次数:
56
垃圾回收算法: 标记-清除法:当发现需要回收的内容时,标记并直接清除。 缺点:需要遍历全堆,复杂度高,并且会带来内存碎片等问题 标记-整理法:将不需要回收的内容标记并整理到一起,然后清除剩下的部分 优缺点:没有内存碎片问题;但是如果存活的多,会产生多次搬运,降低效率。 复制法:将内存分两块,每次将存 ...
分类:
其他好文 时间:
2020-05-14 11:05:38
阅读次数:
63
发现MySQL 中一个表xxx.idb只有6条数据,空间却占了40G。原因:MySQL执行命令delete语句时,如果包括where条件,并不会真正的把数据从表中删除,而是将数据转换成了碎片,通过下面的命令可以查看表中的碎片数量和索引等信息:mysql> show table status like ...
分类:
数据库 时间:
2020-05-12 11:38:05
阅读次数:
139
碎片产生的原因 (1)表的存储会出现碎片化,每当删除了一行内容,该段空间就会变为空白、被留空,而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大; (2)当执行插入操作时,MySQL会尝试使用空白空间,但如果某个空白空间一直没有被大小合适的数据占用,仍然无法将其彻底占 ...
分类:
数据库 时间:
2020-05-12 09:33:11
阅读次数:
80
今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁盘碎片、内存碎片产生原理是类似的,这些存储碎片不仅占用了存储空间,而且降低了数据库运行的速度。如果发现索引中存在过多的存储碎片的话就要进行“碎片整 ...
分类:
其他好文 时间:
2020-05-11 23:34:39
阅读次数:
89
一、高速缓存的两面性 cpu->高速缓存->内存 高速缓存:平衡cpu和内存之间的速度差异,变量从内存首先加载到高速缓存然后以供cpu计算使用。 对于同一个cpu来说,存储于其高速缓存中的变量,对于使用其时间碎片的线程来说,都是原子可见的,任何的变更都能及时的感知到其所被使用的线程。 但是对于不同c ...
分类:
其他好文 时间:
2020-05-10 15:12:58
阅读次数:
67