AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

springboot 2.x 如何设置应用启动完成监听器?

只需要定义一个 `listener`, 让它来实现 `ApplicationListener<ApplicationStartedEvent>` 接口,在 `onApplicationEvent()` 方法内,写上的订阅逻辑即可,代码如下: @Component @Slf4j public class ApplicationStartupListener implements ApplicationListener<ApplicationStartedEvent> { @Override public void onApplicationEvent(Applic ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

RocketMQ 官网提供的顺序消息 demo 运行报错:No route info for this topic, TopicTestjjj ?

几番排查后,发现一个很坑的问题,`producer` 并未调用 `setNamesrvAddr()` 方法来指定 Name Server 的 ip 和 端口,当然找不到 topic 相关的路由信息了,有点坑,RocketMQ 文档维护人员都不自己跑一下 demo 的嘛? **解决方案:** 需要更改代码如下,显示去指定一下 Name Server 的地址: //Instantiate with a producer group name. DefaultMQProducer producer = new DefaultMQProducer("my-group1"); ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

mac 启动 RocketMQ Name Server 报错:Please set the JAVA_HOME variable in your environment, We need java(x64)! !!?

首先我用的是 mac, 当初安装 jdk dmg 文件,安装完成就能用了,所以一直没有配置环境变量这块,所以报这个错: 接下来开始配置 mac 的 java 环境变量: 1.找到已经安装好的 jdk 位置,通过命令:`/usr/libexec/java_home`; 2.拿到 jdk 安装位置后,打开 `.bash_profile` 文件,通过命令:`vim ~./bash_profile`; > 注意:若没有 `.bash_profile` 文件,需要手动创建,创建命令为:`touch ~./bash_profile` 3.添加如下,jdk 位置更换成你的安装位 ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

mac 上如何配置 maven 环境变量?

1.首先去 maven 官网下载安装包,官网地址:[http://maven.apache.org/download.cgi](http://maven.apache.org/download.cgi) ,这里我下载的是 3.5.3 版本; 2.然后你需要确定是否安装 jdk, java 环境变量是否配置好,打开终端,输入 `java -version`,是否有版本信息输出,有则表明环境已经配置好了; 3.将安装包安装到你想要的目录下; 4.接下来开始配置 maven 的环境变量: 5.在终端输入 `vim ~/.bash_profile`, 开始编辑,进入后,是 re ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

Netty 粘包分包现象及解决方案

## 前言 今天主要说说 Netty 什么是粘包分包现象,产生的原因是什么,以及粘包分包现象演示,最后给出相关的解决方案。 ## 粘包分包现象 先上一张图: ![](https://exception-image-bucket.oss-cn-hangzhou.aliyuncs.com/154017705548616) 上面是粘包现象,假设有两个客户端,分别发送 `hello, I am client 1` 和 `hello, I am client 2` 数据流,当发生粘包现象后,后台拿到的是一条数据流,且粘在一起。 ![](https://exceptio ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

spring boot 和 spring cloud 的版本对应关系是怎样的?

| spring boot 版本 | spring cloud 版本 | | ------------ | ------------ | | 1.2.x | Angel 版本 | | 1.3.x | Brixton 版本 | | 1.4.x | Camden 版本 | | 1.5.x | Dalston 版本、Edgware 版本 | | 2.0.x | Finchley 版本 | > Note: 版本不对应可能会导致 maven 编译报错 ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

如何在启动 spring boot 时,给 main 方法传入参数?

`java -jar xxx.jar hello java` 通过上面的命令,我们为 main() 传入了两个字符串数组,分别是: - hello - java ![](https://exception-image-bucket.oss-cn-hangzhou.aliyuncs.com/153924123995668) 这样,我们就能能够在 `args` 中获取到,命令行启动传入的参数。 ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

BIO/NIO 线程模型以及高性能通讯框架 Netty Reactor 模型初探

![](https://exception-image-bucket.oss-cn-hangzhou.aliyuncs.com/153862342369097) ## 前言 今天我们主要来看看线程模型的发展历史,以及为什么会出现高性能通讯框架 `Netty`. ## 线程模型的演进 - 1.传统的 BIO 线程模型(阻塞) - 2.多线程 BIO - 3.NIO(Non Block IO/ New IO)线程模型 (基于 Reactor 多路复用模型) - 4.Netty (主从多线程 Reactor 多路复用模型) ## 从代码入手,逐步分析 ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

一道简单的面试题 - Mysql 的索引和约束的区别

今天去面试 Java, 被面试官问了这道很基础的概念题,一时很是懵逼,平时用索引用的很多,但是约束的概念并不是特别清晰 (其实工作中经常用到,结果却不知道那玩意被定义为约束,尴尬),完了,面试被问后,不能给一个很全面的总结。 ## 什么是约束 作用:是为了保证数据完整性的一种机制。 mysql 中的主要约束有下面这些: - 1.非空约束:`not null` - 2.唯一约束:`unique` > `unique` 约束的字段必须是唯一的,但是 `null` 除外 - 3.主键约束:`primary key` > 主键约束 = not null ...
AllenJiang  ,  非著名 Java 工程师,欢迎关注微信公众号 : Java技术说

说说 Mysql 事务的隔离级别,以及乐观锁和悲观锁

![](https://exception-image-bucket.oss-cn-hangzhou.aliyuncs.com/153734115401241) ## 什么是隔离级别? 所谓隔离级别,就是在数据库事务中,为**保证并发数据读写的正确性而提出的定义**,其实,隔离级别也并不是 mysql 专有的概念,而是源于 ANSI/IOS 制定的 SQL-92 标准。 实际上每种关系型数据库都有着各自特色的隔离级别实现,它们底层通常都是以锁为实现单元,但是实际上的实现也是千差万别的。我们拿 Mysql InnoDB 引擎为例,它是基于 [MVCC](https://dev. ...