Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d8974b2

Browse files
committed
Java
1 parent 668470a commit d8974b2

36 files changed

+3545
-188
lines changed

‎docs/HTTP/5_get和post比较.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#九、GET 和 POST 比较
1+
#GET 和 POST 比较
22

33
## Http报文层面:
44

‎docs/Maven/1_Maven.md‎

Lines changed: 266 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,266 @@
1+
# Maven
2+
3+
Maven 是基于**项目对象模型(POM)**,可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
4+
5+
[Maven 下载](http://maven.apache.org/download.cgi)
6+
7+
[Maven 官网](https://maven.apache.org/)
8+
9+
10+
11+
## Maven 目录结构
12+
13+
```html
14+
src
15+
|- main
16+
|--java
17+
|-- packages
18+
|-- resources
19+
|- test
20+
|--java
21+
|-- packages
22+
```
23+
24+
25+
26+
## Maven 坐标和仓库
27+
28+
### 坐标
29+
30+
- groupID
31+
32+
**项目组织**的唯一标识符,实际对应 java 的包的结构,即 main目录里 java 的目录结构。
33+
34+
- artifactID
35+
36+
**项目**的唯一标识符,实际对应项目的名称,就是项目根目录的名称。
37+
38+
groupId 和 artifactId 被统称为**坐标**。构件通过坐标作为其唯一标识。
39+
40+
groupId 一般为 `组织名+公司地址反写+项目名`,比如 `com.southeast.myprojects`
41+
42+
artifactId 一般为 `项目名-模块名`,比如`myprojects-demo`
43+
44+
则相应的 package 为 `com.southeast.myprojects.demo`
45+
46+
### 镜像仓库
47+
48+
setting.xml 文件中配置:
49+
50+
```html
51+
<mirror>
52+
<id>maven.net.cn</id>
53+
<mirrorOf>central</mirrorOf>
54+
<name>central mirror in china</name>
55+
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
56+
</mirror>
57+
```
58+
59+
### 修改本地仓库位置
60+
61+
setting.xml 文件中配置:
62+
63+
```html
64+
<localRepository>F:/Java/apache-maven-3.6.2-bin/repo</localRepository>
65+
```
66+
67+
68+
69+
## Maven 常用构建命令
70+
71+
### 1. 查看版本
72+
73+
```html
74+
mvn - v
75+
```
76+
77+
### 2. 编译
78+
79+
```html
80+
mvn compile
81+
```
82+
83+
### 3. 测试
84+
85+
```html
86+
mvn test
87+
```
88+
89+
### 4. 打包
90+
91+
```html
92+
mvn package
93+
```
94+
95+
### 5. 清除 target
96+
97+
```html
98+
mvn clean
99+
```
100+
101+
### 6. 安装 jar
102+
103+
```html
104+
mvn install
105+
```
106+
107+
### 7. 自动创建目录骨架
108+
109+
```html
110+
mvn archetype:generate
111+
# 按照提示进行选择
112+
```
113+
114+
```html
115+
mvn archetype:generate -DgroupId=组织名,公司网址反写+项目名
116+
-DartifactId=项目名-模块名
117+
-Dversion=版本号
118+
-Dpackage=代码所存在的包名
119+
```
120+
121+
122+
123+
## pom.xml 解析
124+
125+
- 指定当前 pom 版本
126+
127+
```html
128+
<modelVersion>
129+
```
130+
131+
- 坐标
132+
133+
```html
134+
<groupId>反写公司网址+项目名</groupId>
135+
<artifactId>项目名+模块名</artifactId>
136+
<!--
137+
第一个 0 表示大版本号
138+
第二个 0 表示分支版本号
139+
第三个 0 表示小版本号
140+
snapshot 快照
141+
alpha 内部测试
142+
beta 公测
143+
Release 稳定
144+
GA 正式发布
145+
-->
146+
<version>0.0.1snapshot</version>
147+
<!--
148+
默认是 jar
149+
war
150+
zip
151+
pom
152+
-->
153+
<packaging>jar</packaging>
154+
<!--
155+
项目描述名
156+
-->
157+
<name></name>
158+
<!--
159+
项目地址
160+
-->
161+
<url></url>
162+
```
163+
164+
- 依赖列表
165+
166+
```html
167+
<dependencies>
168+
<dependency>
169+
<groupId></groupId>
170+
<artifactId></artifactId>
171+
<version></version>
172+
<type></type>
173+
<!--
174+
依赖范围:
175+
compile 默认的范围,编译测试运行都有效
176+
provided 编译测试时有效
177+
runtime 测试运行时有效
178+
test 只在测试时有效
179+
system 与本机系统相关联,可移植性差
180+
import 导入的范围,只使用在 dependencyManagement 中,表示从其他的 pom 中导入 dependency 的配置
181+
-->
182+
<scope>test</scope>
183+
<!--
184+
设置依赖是否可选
185+
-->
186+
<optional></optional>
187+
<!--
188+
排除依赖
189+
-->
190+
<exclusions>
191+
<exclusion>
192+
<!--
193+
坐标
194+
-->
195+
</exclusion>
196+
</exclusions>
197+
</dependency>
198+
</dependencies>
199+
```
200+
201+
- 依赖管理
202+
203+
```html
204+
<dependencyManagement>
205+
<dependencies>
206+
<dependency></dependency>
207+
</dependencies>
208+
</dependencyManagement>
209+
```
210+
211+
- build 标签
212+
213+
```html
214+
<build>
215+
<!--
216+
插件列表
217+
-->
218+
<plugins>
219+
<plugin>
220+
<groupId></groupId>
221+
<artifactId></artifactId>
222+
<version></version>
223+
</plugin>
224+
</plugins>
225+
</build>
226+
```
227+
228+
- parent 标签(继承)
229+
230+
```html
231+
<parent>
232+
<!--
233+
坐标
234+
-->
235+
</parent>
236+
```
237+
238+
- modules 标签(聚合)
239+
240+
```html
241+
<modules>
242+
<module></module>
243+
</modules>
244+
```
245+
246+
## 依赖冲突
247+
248+
### 1. 短路优先
249+
250+
```html
251+
路径1:A -> B -> C -> X(jar)
252+
路径2:A -> D -> X(jar)
253+
```
254+
255+
这里优先选择路径 2。
256+
257+
### 2. 先声明先优先
258+
259+
如果路径长度相同,则谁先声明,先解析谁。
260+
261+
262+
263+
264+
265+
266+
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# 主流消息中间件
2+
3+
## 1. ActiveMQ
4+
5+
ActiveMQ 是 Apache 出品的最流行的、性能强劲的开源消息总线,并且其是一个完全支持 JMS 规范的消息中间件。其丰富的 API、多种集群构建模式使得它成为业界老牌消息中间件,广泛应用于中小型企业。
6+
7+
## 2. Kafka
8+
9+
Kafka 是 LinkedIn 开源的分布式发布-订阅消息系统,目前属于 Apache 顶级项目。
10+
11+
Kafka 主要特点是基于 Pull 的模式来处理消息消费,追求高吞吐量,一开始的目的就是用于日志收集和传输。0.8 版本开始支持复制,不支持事务,对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务。
12+
13+
## 3. RocketMQ
14+
15+
RocketMQ 是阿里开源的消息中间件,目前也已经孵化为 Apache 顶级项目,它是纯 Java 开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。
16+
17+
RocketMQ 思路起源于 Kafka,它对消息的可靠传输及事务性做了优化,目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog 分发等场景。
18+
19+
## 4. RabbitMQ
20+
21+
RabbitMQ 是使用 Erlang 语言开发的开源消息队列系统,基于 AMQP 协议来实现。
22+
23+
AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。AMQP 协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次。
24+
25+
## 对比
26+
27+
| 消息中间件 | ActiveMQ | Kafka | RocketMQ | RabbitMQ |
28+
| :----------------------: | :-----------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | :------------------------------------------------: |
29+
| *吞吐量* | 万数量级 | 十万级,高吞吐 | 十万级,高吞吐 | 万数量级 |
30+
| *Topic 数量对吞吐量影响* | / | Topic 从几十到几百时,吞吐量会大幅度下降,<br/>在同等机器下,Kafka 尽量保证 Topic 数量不要过多,如果要支撑大规模的 Topic,需要增加更多的机器 | Topic 可达百/千级,吞吐量下降幅度小<br/>在同等机器下,可以支撑大量的 Topic | / |
31+
| *时效性* | 毫秒级 | 毫秒级 | 毫秒级 | 微秒级 |
32+
| *可用性* | 高<br/>基于主从架构实现高可用高 | 非常高<br/>分布式架构 | 非常高<br/>分布式架构 | 高<br/>基于主从架构实现高可用高 |
33+
| *可靠性* | 丢失数据的概率低 | 优化参数配置,<br/>可以做到零丢失 | 优化参数配置,<br/>可以做到零丢失 | 基本不会丢失数据 |
34+
| *功能* | 功能较完备 | 功能较为简单,主要支持简单的 MQ 功能,在大数据领域的实时计算以及日志采集被大规模使用 | MQ 功能较为完善,还是分布式的,扩展性好 | 基于 ErLang 开发,并发能力很强,性能极好,延时很低 |

‎docs/MySQL/RabbitMQ/2_RabbitMQ整合SpringBoot.md‎

Whitespace-only changes.
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# RabbitMQ 概述
2+
3+
## 简介
4+
5+
RabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用中间共享数据,RabbitMQ 是使用 **Erlang 语言**来编写的,并且 RabbitMQ 是基于 AMQP 协议的。
6+
7+
特点:
8+
9+
- 开源、性能优秀,稳定性好
10+
- 提供可靠性消息投递模式(confirm)、返回模式(return)
11+
- 与 SpringAOP 完美的整合、API 丰富
12+
- 集群模式丰富,表达式配置,HA 模式,镜像队列模型
13+
- 保证数据不丢失的前提做到高可靠性、可用性
14+
15+
RabbitMQ 高性能的原因:
16+
17+
**Erlang 语言**最初用在交换机的架构模式,这样使得 RabbitMQ 在 Broker 之间进行数据交互的性能时非常优秀的。Erlang 的优点:Erlang 有着和原生 Socket 一样的延迟。
18+
19+
## AMQP 协议
20+
21+
AMQP(Advanced Message Queuing Protocol)协议,即高级消息队列协议。
22+
23+
AMQP 是具有现在特征的二进制协议。是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
24+
25+
### 协议模型
26+
27+
28+
29+
### 核心概念
30+
31+
32+
33+
34+
35+
![1574044351197](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574044351197円.png)
36+
37+
38+
39+
40+
41+
![1574044966299](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574044966299円.png)
42+
43+
44+
45+
46+
47+
![1574045181833](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045181833円.png)
48+
49+
50+
51+
![1574045266808](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045266808円.png)
52+
53+
![1574045345331](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045345331円.png)
54+
55+
![1574045528395](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045528395円.png)
56+
57+
![1574045635960](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045635960円.png)
58+
59+
60+
61+
![1574045733769](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045733769円.png)
62+
63+
64+
65+
![1574044393028](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574044393028円.png)
66+
67+
![1574045701316](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045701316円.png)
68+
69+
70+
71+
![1574045865612](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574045865612円.png)
72+
73+
74+
75+
![1574044458688](C:\Users\DHA\AppData\Roaming\Typora\typora-user-images1574044458688円.png)
76+

‎docs/MySQL/RabbitMQ/3_消息可靠性投递的解决方案实现.md‎

Whitespace-only changes.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /