docs: update documents

pull/132/head
yanglbme 2 years ago
parent 2d4ee6f2a0
commit 4e8642240c

@ -1,25 +0,0 @@
name: Prettier
on:
pull_request:
push:
branches:
- main
jobs:
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}
- name: Prettify code
uses: creyD/prettier_action@v3.3
with:
prettier_options: --write **/*.{md}
commit_message: "style: prettify code or document"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

@ -279,10 +279,10 @@
- [RocketMQ 生产者启动流程](docs/rocketmq/rocketmq-producer-start.md)
- [RocketMQ 消息发送流程](docs/rocketmq/rocketmq-send-message.md)
- [RocketMQ 消息发送存储流程](docs/rocketmq/rocketmq-send-store.md)
- [RocketMQ MappedFile内存映射文件详解](docs/rocketmq/rocketmq-mappedfile-detail.md)
- [RocketMQ ConsumeQueue详解](docs/rocketmq/rocketmq-consumequeue.md)
- [RocketMQ CommitLog详解](docs/rocketmq/rocketmq-commitlog.md)
- [RocketMQ IndexFile详解](docs/rocketmq/rocketmq-indexfile.md)
- [RocketMQ MappedFile 内存映射文件详解](docs/rocketmq/rocketmq-mappedfile-detail.md)
- [RocketMQ ConsumeQueue 详解](docs/rocketmq/rocketmq-consumequeue.md)
- [RocketMQ CommitLog 详解](docs/rocketmq/rocketmq-commitlog.md)
- [RocketMQ IndexFile 详解](docs/rocketmq/rocketmq-indexfile.md)
- [RocketMQ 消费者启动流程](docs/rocketmq/rocketmq-consumer-start.md)
- [RocketMQ 消息拉取流程](docs/rocketmq/rocketmq-pullmessage.md)
- [RocketMQ Broker 处理拉取消息请求流程](docs/rocketmq/rocketmq-pullmessage-processor.md)
@ -387,6 +387,10 @@ GitHub 技术社区 [Doocs](https://github.com/doocs),致力于打造一个内
</tr>
</table>
<<<<<<< HEAD
关注公众号「**Doocs**」,回复 **PDF**,即可获取 [互联网 Java 工程师进阶知识完全扫盲](https://github.com/doocs/advanced-java) 项目离线 PDF 文档283 页精华),学习更加方便!
=======
关注「**Doocs**」公众号,回复 **PDF**,即可获取 [互联网 Java 工程师进阶知识完全扫盲](https://github.com/doocs/advanced-java) 项目离线 PDF 文档283 页精华),学习更加方便!
>>>>>>> d309ac0 (docs: update documents)
![](./images/pdf.png)

@ -145,7 +145,7 @@ sds sdsnewlen(const void *init, size_t initlen) {
}
```
创建 SDS 的大致流程是这样的:首先根据字符串长度计算得到 type根据 type 计算头部所需长度然后动态分配内存空间。通过计算出指向header的指针sh指向buf的指针s对结构体各字段进行赋值。
创建 SDS 的大致流程是这样的:首先根据字符串长度计算得到 type根据 type 计算头部所需长度,然后动态分配内存空间。通过计算出指向 header 的指针 sh指向 buf 的指针 s对结构体各字段进行赋值。
注意:
@ -180,10 +180,10 @@ void sdsclear(sds s) {
}
```
### 3. 更新len
### 3. 更新 len
因为sdsnewlen函数返回的是char* 类型的buf所以兼容了c语言操作字符串的函数
那么当 `s = ['a', 'b', 'c', '\0']` 时, 再操作`s[2] = '\0'`, 这个时候`sdslen(s)`得到的结果是3因为len字段没有更新如果直接更新`'\0'`需要调用以下函数更新len
因为 sdsnewlen 函数返回的是 char\* 类型的 buf所以兼容了 c 语言操作字符串的函数,
那么当 `s = ['a', 'b', 'c', '\0']` 时, 再操作`s[2] = '\0'`, 这个时候`sdslen(s)`得到的结果是 3因为 len 字段没有更新,如果直接更新`'\0'`,需要调用以下函数更新 len
```c
void sdsupdatelen(sds s) {

@ -18,7 +18,7 @@ if (group.length() >CHARACTER_MAX_LENGTH) {
}
```
消费组名称只能包含数字、字母、%、-、_、|
消费组名称只能包含数字、字母、%、-、\_、|
```java
// regex: ^[%|a-zA-Z0-9_-]+$
@ -129,7 +129,7 @@ private void copySubscription() throws MQClientException {
`3、初始化MqClientInstance、RebalanceImpl、PullApiWrapper`
创建`MqClientInstance` 无论在生产者端还是消费者端都是一个很重要的类, 封装了Topic信息、broker信息当然还有生产者和消费者的信息。
创建`MqClientInstance` 无论在生产者端还是消费者端都是一个很重要的类, 封装了 Topic 信息、broker 信息,当然还有生产者和消费者的信息。
```java
public MQClientInstance getOrCreateMQClientInstance(final ClientConfig clientConfig, RPCHook rpcHook) {

@ -28,7 +28,7 @@ org.apache.rocketmq.store.index.IndexFile#putKey
如果当前 Index 文件未满,则根据 key 计算出哈希码,然后对槽数量取余定位到某一个哈希槽位置,
哈希槽的物理偏移量 = IndexHeader 的大小(默认 40Byte + 哈希槽位置 * 每个哈希槽的大小4 字节)
哈希槽的物理偏移量 = IndexHeader 的大小(默认 40Byte + 哈希槽位置 \* 每个哈希槽的大小4 字节)
```java
int keyHash = indexKeyHashMethod(key);
@ -61,7 +61,7 @@ if (this.indexHeader.getBeginTimestamp() <= 0) {
}
```
新添加的消息 index 的物理偏移量 = IndexHeader 大小40Byte + Index 文件哈希槽的数量 * 哈希槽的大小4Byte + Index 文件索引数量 * 索引大小20Byte
新添加的消息 index 的物理偏移量 = IndexHeader 大小40Byte + Index 文件哈希槽的数量 _ 哈希槽的大小4Byte + Index 文件索引数量 _ 索引大小20Byte
将消息哈希码、消息物理偏移量、消息存储时间戳与 Index 文件第一条消息的时间戳的差值、当前哈希槽的值、当前 Indexfile 的索引个数存入 mappedByteBuffer
@ -115,7 +115,7 @@ long end: 结束时间戳
根据 key 计算哈希码,哈希码与哈希槽的数量取余得到哈希槽的索引
哈希槽的物理地址 = IndexHeader40byte + 哈希槽索引 * 每个哈希槽的大小4byte
哈希槽的物理地址 = IndexHeader40byte + 哈希槽索引 \* 每个哈希槽的大小4byte
```java
int keyHash = indexKeyHashMethod(key);

Loading…
Cancel
Save