关于Docker如何使容器可以访问外部ip port 因为RocketMQ Dashboard 是我在docker上运行的,rocketmq是我在本地运行的,我要怎么解决网络问题?在这种情况下,Docker 容器中的 RocketMQ Dashboard 无法直接访问到本地主机的 RocketMQ NameServer。为了解决这个网络连接问题,可以使用 Docker 提供的地址,或者直接使用本地网络的 IP 地址。
RocketMQ架构设计 无序消息即普通、定时、延时、事务消息,当consumer消费消息失败时,可以通过设置返回状态实现消息重试注意:无序消息的重试只针对集群消费方式(非广播方式)生效广播方式不提供失败重试特性,即消费失败后,失败的消息不再重试,而是继续消费新消息延时消息:Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费, 该消息即延时消息。死信队列用于处理无法被正常消费的消息。当一条消息初次消费失败,消息队列MQ。
探寻Redis的世界:Redis常见面试题总结(下) Redis 事务提供了一种将多个命令请求打包的功能。然后,再按顺序执行打包的所有命令,并且不会被中途打断。Redis 事务实际开发中使用的非常少,功能比较鸡肋,不要将其和我们平时理解的关系型数据库的事务混淆了。除了不满足原子性和持久性之外,事务中的每条命令都会与 Redis 服务器进行网络交互,这是比较浪费资源的行为。明明一次批量执行多个命令就可以了,这种操作实在是看不懂。因此,Redis 事务是不建议在日常开发中使用的。
探寻Redis的世界:Redis常见面试题总结(上) RedisREmoteDIctionaryServer)是一个基于 C 语言开发的开源 NoSQL 数据库(BSD 许可)。与传统数据库不同的是,Redis 的数据是保存在内存中的(内存数据库,支持持久化),因此读写速度非常快,被广泛应用于分布式缓存方向。并且,Redis 存储的是 KV 键值对数据。为了满足不同的业务场景,Redis 内置了多种数据类型实现(比如 String、Hash、Sorted Set、Bitmap、HyperLogLog、GEO)。
探寻Redis的世界: Redis持久化机制详解 Redis 可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。Redis 创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis 主从结构,主要用来提高 Redis 性能),还可以将快照留在原地以便重启服务器的时候使用。快照持久化是 Redis 默认采用的持久化方式,在redis.confsave 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,Redis就会自动触发bgsave命令创建快照。
探寻Redis的世界:Redis内存碎片详解 你可以将内存碎片简单地理解为那些不可用的空闲内存。举个例子:操作系统为你分配了 32 字节的连续内存空间,而你存储数据实际只需要使用 24 字节内存空间,那这多余出来的 8 字节内存空间如果后续没办法再被分配存储其他数据的话,就可以被称为内存碎片。Redis 内存碎片虽然不会影响 Redis 性能,但是会增加内存消耗。
探寻Redis的世界:Redis 3 种特殊数据类型详解 根据官网介绍:Bitmap 不是 Redis 中的实际数据类型,而是在 String 类型上定义的一组面向位的操作,将其视为位向量。由于字符串是二进制安全的块,且最大长度为 512 MB,它们适合用于设置最多 2^32 个不同的位。Bitmap 存储的是连续的二进制数字(0 和 1),通过 Bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,key 就是对应元素本身。我们知道 8 个 bit 可以组成一个 byte,所以 Bitmap 本身会极大的节省储存空间。
探寻Redis的世界:Redis 5 种基本数据类型详解 String 是 Redis 中最简单同时也是最常用的一个数据类型。String 是一种二进制安全的数据类型,可以用来存储任何类型的数据比如字符串、整数、浮点数、图片(图片的 base64 编码或者解码或者图片的路径)、序列化后的对象。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串表示,而是自己构建了一种简单动态字符串SDS。
探寻Redis的世界:Redis常见阻塞原因总结 Swap 直译过来是交换的意思,Linux 中的 Swap 常被称为内存交换或者交换分区。类似于 Windows 中的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。因此,Swap 分区的作用就是牺牲硬盘,增加内存,解决 VPS 内存不够用或者爆满的问题。Swap 对于 Redis 来说是非常致命的,Redis 保证高性能的一个重要前提是所有的数据在内存中。
探寻Redis的世界:3种常用的缓存读写策略详解 看到很多小伙伴简历上写了“”,但是被我问到“”的时候却一脸懵逼。在我看来,造成这个问题的原因是我们在学习 Redis 的时候,可能只是简单了写一些 Demo,并没有去关注缓存的读写策略,或者说压根不知道这回事。但是,搞懂 3 种常见的缓存读写策略对于实际工作中使用缓存以及面试中被问到缓存都是非常有帮助的!
探寻Mysql的世界:MySQL事务隔离级别详解 READ-UNCOMMITTED(读取未提交):最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读取已提交):允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。REPEATABLE-READ(可重复读):对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。SERIALIZABLE(可串行化):最高的隔离级别,完全服从 ACID 的隔离级别。
探寻Mysql的世界:MySQL日期类型选择建议 MySQL 中时间到底怎么存储才好?Datetime?Timestamp?还是数值时间戳?并没有一个银弹,很多程序员会觉得数值型时间戳是真的好,效率又高还各种兼容,但是很多人又觉得它表现的不够直观。《高性能 MySQL 》这本神书的作者就是推荐 Timestamp,原因是数值表示时间不够直观。下面是原文:每种方式都有各自的优势,根据实际场景选择最合适的才是王道。类型存储空间日期格式日期范围是否带时区信息DATETIME5~8 字节否TIMESTAMP4~7 字节是数值型时间戳。
探寻Mysql的世界: MySQL常见面试题总结 顾名思义,关系型数据库(RDB,Relational Database)就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。大部分关系型数据库都使用 SQL 来操作数据库中的数据。并且,大部分关系型数据库都支持事务的四大特性(ACID)。有哪些常见的关系型数据库呢?
探寻Mysql的世界: MySQL执行计划分析 执行计划是指一条 SQL 语句在经过MySQL 查询优化器的优化会后,具体的执行方式。执行计划通常用于 SQL 性能分析、优化等场景。通过EXPLAIN的结果,可以了解到如数据表的查询顺序、数据查询操作的操作类型、哪些索引可以被命中、哪些索引实际会命中、每个数据表有多少行记录被查询等信息。
寻Mysql的世界: MySQL查询缓存详解 MySQL 体系架构如下图所示:为了提高完全相同的查询语句的响应速度,MySQL Server 会对查询语句进行 Hash 计算得到一个 Hash 值。MySQL Server 不会对 SQL 做任何处理,SQL 必须完全一致 Hash 值才会一样。得到 Hash 值之后,通过该 Hash 值到查询缓存中匹配该查询的结果。如果匹配(命中),则将查询的结果集直接返回给客户端,不必再解析、执行查询。如果没有匹配(未命中),则将 Hash 值和结果集保存在查询缓存中,以便以后使用。也就是说,
探寻Mysql的世界: MySQL三大日志(binlog、redo log和undo log)详解 MySQL日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志binlog(归档日志)和事务日志redo log(重做日志)和undo log(回滚日志)。今天就来聊聊redo log(重做日志)、binlog(归档日志)、两阶段提交、undo log(回滚日志)。这部分内容为 JavaGuide 的补充:MySQL InnoDB 引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)来保证事务的原子性。MySQL。
探寻Mysql的世界: MySQL索引详解 索引是一种用于快速查询和检索数据的数据结构,其本质可以看成是一种排序好的数据结构。索引的作用就相当于书的目录。打个比方: 我们在查字典的时候,如果没有目录,那我们就只能一页一页的去找我们需要查的那个字,速度很慢。如果有目录了,我们只需要先去目录里查找字的位置,然后直接翻到那一页就行了。索引底层数据结构存在很多种类型,常见的索引结构有: B 树, B+树 和 Hash、红黑树。在 MySQL 中,无论是 Innodb 还是 MyIsam,都使用了 B+树作为索引结构。
探寻Mysql的世界: MySQL高性能优化规范 除非有特别的原因使用 NULL 值,应该总是让字段保持 NOT NULL。索引 NULL 列需要额外的空间来保存,所以要占用更多的空间;进行比较和计算时要对 NULL 值做特别的处理。技术分享 | MySQL 默认值选型(是空,还是 NULL)。
探寻Mysql的世界: MySQL自增主键一定是连续的吗 作者:飞天小牛肉众所周知,自增主键可以让聚集索引尽量地保持递增顺序插入,避免了随机查询,从而提高了查询效率。但实际上,MySQL 的自增主键并不能保证一定是连续递增的。