shellbye
shellbye
``` 第 1 章 Maven 简介 1.1 何为 Maven 1.1.1 何为构建 1.1.2 Maven 是优秀的构建工具 1.1.3 Maven 不仅仅是构建工具 约定优于配置 Convention over Configuration 1.2 为什么需要 Maven 1.2.1 组装 PC 和品牌 PC 1.2.2...
### 题目描述 > 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 > 说明:解集不能包含重复的子集。 > 示例: >> 输入: nums = [1,2,3] >>输出: >>``` >>[ >> [3], >> [1], >> [2], >> [1,2,3], >> [1,3], >> [2,3], >>...
`RocketMQ`默认是不带有任何认证的,部署在公网的话是不安全的,以下是一些我在尝试添加认证时的一些笔记 ### `Broker`端配置 首先需要在 `conf/broker.conf`里面打开`acl`的配置,如下 ``` aclEnable=true ``` 然后在`conf/plain_acl.yml`进行相应的配置,如下 ``` globalWhiteRemoteAddresses: accounts: - accessKey: RocketMQ secretKey: 12345678 whiteRemoteAddress: admin: false defaultTopicPerm: DENY defaultGroupPerm: SUB topicPerms: - topicA=DENY - topicB=PUB|SUB -...
### 差别 因为项目原因,需要在启动`jar`包的时候,指定 `application.properties` 和 `bootstrap.properties` 的位置,因此简单了解了一下这两者的[差别](https://stackoverflow.com/questions/32997352/what-is-the-difference-between-putting-a-property-on-application-yml-or-bootstra),概括来讲: 1. `application.properties` 是 `Spring Boot` 里面提供的(而不是 `Spring` ),这也正是 `Spring Boot` “约定优于配置”的体现,也是它试图减少 `Spring` 的大量配置的一次成功尝试; 2. `bootstrap.properties` 是 `Spring Cloud` 中的,它先于 `application.properties` 加载,并且一般用于设置配置中心的地址,比如 ``` spring.cloud.config.uri...
### 问题描述 在我们的项目中使用[`rocketmq-spring-boot-starter`](https://github.com/apache/rocketmq-spring)时,我们消费者如下 ```java package com.example.demo; import org.apache.rocketmq.spring.annotation.MessageModel; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; import org.apache.rocketmq.spring.annotation.SelectorType; import org.apache.rocketmq.spring.core.RocketMQListener; import org.springframework.stereotype.Service; /** * RocketMQMessageListener */ @Service @RocketMQMessageListener( topic = "${rocketmq.topic}", consumerGroup = "ConsumerGroup001", messageModel =...
不得不承认,我对读算法书还是有些抵触或者说是畏惧的,或许一切都始于大一时买了又退了的那本英文版的[《Introduction to Algorithms》(《算法导论》)](https://book.douban.com/subject/3904676/)。忘了是啥时候,老婆给买了本[《编程珠玑》](https://book.douban.com/subject/26302533/),反正是好长时间了,我却一直没勇气读。最近为了某些原因,终于鼓起勇气断断续续开始读了。有意思的是,每次读,其实都有收获,那么这次我就把它记录下来,算是一个开头。 书中第二章的`2.4 排序`讲到了一个叫`变位词`的概念,也就是`leetcode`上的`字母异位词`:`字母相同,但排列不同的字符串`。顺着这个概念,我在`leetcode`上找到了如下一个比较简单的题 ### 题目 > 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 > 示例 1: >> 输入: s = "anagram", t = "nagaram" >> 输出:...
### 题目 > 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身)。 > “最近的”定义为两个整数差的绝对值最小。 > 示例 1: >> 输入: "123" >> 输出: "121" > 注意: >> n 是由字符串表示的正整数,其长度不超过18。 >> 如果有多个结果,返回最小的那个。 ### 初步分析 如果这个题目教会了我什么,那一定是“认真审题”。其中有三个点是我一开始没有注意到,以至于我走了很多弯路,浪费了不少精力,现在我把它们罗列出来,避免大家也走弯路: > 1. 不包括自身...
### 问题描述 在[上一篇](#69 )文章中,我记录了两台机器交叉部署 `RocketMQ` 集群时遇到 `` 这个错误时的解决方案,那么解决了这个问题之后再次启动,又遇到了新的问题,报错如下 ``` java.net.BindException: Address already in use at sun.nio.ch.Net.bind0(Native Method) at sun.nio.ch.Net.bind(Net.java:433) at sun.nio.ch.Net.bind(Net.java:425) at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74) at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67) at org.apache.rocketmq.store.ha.HAService$AcceptSocketService.beginAccept(HAService.java:177) at...
最近在调研和压测 `RocketMQ`,在压测时,异步地连续发送2w条消息,生产者就开始大量抛错,错误信息就是标题里的 ``` org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: invokeAsync call timeout ``` 在网上搜了不少资料,虽然大家很多都是`RemotingTooMuchRequestException`这个异常,但是具体的错误信息其实是不一样的,网络上的异常具体信息大多都是`sendDefaultImpl call timeout`,但是我这里是`invokeAsync call timeout`,资料比较少,后来在看了[源码](https://github.com/apache/rocketmq/blob/release-4.5.2/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettyRemotingClient.java#L527)之后,发现了如下代码: ```java public void invokeAsync(String addr, RemotingCommand request, long timeoutMillis, InvokeCallback invokeCallback) throws InterruptedException, RemotingConnectException, RemotingTooMuchRequestException, RemotingTimeoutException, RemotingSendRequestException...
### 问题描述 在上一篇文章 #66 中,我记录了解决 `Algorithm HmacSHA1 not available` 的一种方法,解决之后就可以顺利的通过 `ACL` 远程生产消息,但是在消费的时候,虽然我的 `accessKey` 和 `secretKey` 使用的都是和生产者一样的配置,但是很奇怪的问题就是我的消费者一直拿不到任何消息。在查看了一些日志之后,最后发现在 `remoting.log` 中有以下报错信息 ``` org.apache.rocketmq.acl.common.AclException: No default permission for group:ConsumerGroup001 ``` 其中的`ConsumerGroup001`是我使用的消费者的组名,看样子是权限有问题。 ### 解决方案 解决放啊就是把消费者的组名配置到...