Skip to content

Commit a2c7293

Browse files
authored
Merge pull request #1 from Snailclimb/master
Merge with Original repo on 9/12/2019
2 parents 101e1a8 + 94b9948 commit a2c7293

File tree

5 files changed

+297
-10
lines changed

5 files changed

+297
-10
lines changed

docs/database/Redis/Redis.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
**高性能:**
3434

35-
假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在数缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可!
35+
假如用户第一次访问数据库中的某些数据。这个过程会比较慢,因为是从硬盘上读取的。将该用户访问的数据存在缓存中,这样下一次再访问这些数据的时候就可以直接从缓存中获取了。操作缓存就是直接操作内存,所以速度相当快。如果数据库中的对应数据改变的之后,同步改变缓存中相应的数据即可!
3636

3737
![](http://my-blog-to-use.oss-cn-beijing.aliyuncs.com/18-9-24/54316596.jpg)
3838

@@ -254,7 +254,6 @@ Redis 通过 MULTI、EXEC、WATCH 等命令来实现事务(transaction)功能。
254254
补充内容:
255255

256256
> 1. redis同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚。(来自[issue:关于Redis事务不是原子性问题](https://github.com/Snailclimb/JavaGuide/issues/452)
257-
> 2.
258257
259258
### 缓存雪崩和缓存穿透问题解决方案
260259

docs/java/Java基础知识.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有
123123
124124
**总结:**
125125

126-
1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;
126+
1. Oracle JDK大概没6个月发一次主要版本,而OpenJDK版本大概每三个月发布一次。但这不是固定的,我觉得了解这个没啥用处。详情参见:https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence。
127127
2. OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的;
128128
3. Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎相同,但Oracle JDK有更多的类和一些错误修复。因此,如果您想开发企业/商业软件,我建议您选择Oracle JDK,因为它经过了彻底的测试和稳定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程序崩溃的问题,但是,只需切换到Oracle JDK就可以解决问题;
129129
4. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;

docs/java/Java疑难点.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
- [1. 基础](#1-基础)
44
- [1.1. 正确使用 equals 方法](#11-正确使用-equals-方法)
5-
- [1.2. 整形包装类值的比较](#12-整形包装类值的比较)
5+
- [1.2. 整型包装类值的比较](#12-整型包装类值的比较)
66
- [1.3. BigDecimal](#13-bigdecimal)
77
- [1.3.1. BigDecimal 的用处](#131-bigdecimal-的用处)
88
- [1.3.2. BigDecimal 的大小比较](#132-bigdecimal-的大小比较)
@@ -62,12 +62,12 @@ public static boolean equals(Object a, Object b) {
6262
Reference:[Java中equals方法造成空指针异常的原因及解决方案](https://blog.csdn.net/tick_tock97/article/details/72824894)
6363

6464
- 每种原始类型都有默认值一样,如int默认值为 0,boolean 的默认值为 false,null 是任何引用类型的默认值,不严格的说是所有 Object 类型的默认值。
65-
- 可以使用==或者!=操作来比较null值,但是不能使用其他算法或者逻辑操作。在Java中`null==null`将返回true。
65+
- 可以使用 == 或者 != 操作来比较null值,但是不能使用其他算法或者逻辑操作。在Java中`null == null`将返回true。
6666
- 不能使用一个值为null的引用类型变量来调用非静态方法,否则会抛出异常
6767

68-
## 1.2. 整形包装类值的比较
68+
## 1.2. 整型包装类值的比较
6969

70-
所有整形包装类对象值的比较必须使用equals方法
70+
所有整型包装类对象值的比较必须使用equals方法
7171

7272
先看下面这个例子:
7373

docs/system-design/framework/spring/springboot-questions.md

Lines changed: 82 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,91 @@
2020
7. Spring Boot提供命令行接口(CLI)工具,用于开发和测试Spring Boot应用程序,如Java或Groovy。
2121
8. Spring Boot提供了多种插件,可以使用内置工具(如Maven和Gradle)开发和测试Spring Boot应用程序。
2222

23-
### 为什么需要Spring Boot?
23+
### 3. 为什么需要Spring Boot?
2424

2525
Spring Framework旨在简化J2EE企业应用程序开发。Spring Boot Framework旨在简化Spring开发。
2626

2727
![why-we-need-springboot](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/why-we-need-springboot.png)
2828

29-
### 什么是 Spring Boot Starters?
29+
### 4. 什么是 Spring Boot Starters?
30+
31+
Spring Boot Starters 是一系列依赖关系的集合,因为它的存在,项目的依赖之间的关系对我们来说变的更加简单了。举个例子:在没有Spring Boot Starters之前,我们开发REST服务或Web应用程序时; 我们需要使用像Spring MVC,Tomcat和Jackson这样的库,这些依赖我们需要手动一个一个添加。但是,有了 Spring Boot Starters 我们只需要一个只需添加一个**spring-boot-starter-web**一个依赖就可以了,这个依赖包含的字依赖中包含了我们开发REST 服务需要的所有依赖。
32+
33+
```xml
34+
<dependency>
35+
<groupId>org.springframework.boot</groupId>
36+
<artifactId>spring-boot-starter-web</artifactId>
37+
</dependency>
38+
```
39+
40+
### 如何在Spring Boot应用程序中使用Jetty而不是Tomcat?
41+
42+
Spring Boot Web starter使用Tomcat作为默认的嵌入式servlet容器, 如果你想使用 Jetty 的话只需要修改pom.xml(Maven)或者build.gradle(Gradle)就可以了。
43+
44+
**Maven:**
45+
46+
```xml
47+
<!--从Web启动器依赖中排除Tomcat-->
48+
<dependency>
49+
<groupId>org.springframework.boot</groupId>
50+
<artifactId>spring-boot-starter-web</artifactId>
51+
<exclusions>
52+
<exclusion>
53+
<groupId>org.springframework.boot</groupId>
54+
<artifactId>spring-boot-starter-tomcat</artifactId>
55+
</exclusion>
56+
</exclusions>
57+
</dependency>
58+
<!--添加Jetty依赖-->
59+
<dependency>
60+
<groupId>org.springframework.boot</groupId>
61+
<artifactId>spring-boot-starter-jetty</artifactId>
62+
</dependency>
63+
```
64+
65+
**Gradle:**
66+
67+
```groovy
68+
compile("org.springframework.boot:spring-boot-starter-web") {
69+
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
70+
}
71+
compile("org.springframework.boot:spring-boot-starter-jetty")
72+
```
73+
74+
说个题外话,从上面可以看出使用 Gradle 更加简洁明了,但是国内目前还是 Maven 使用的多一点,我个人觉得 Gradle 在很多方面都要好很多。
75+
76+
### 介绍一下@SpringBootApplication注解
77+
78+
```java
79+
package org.springframework.boot.autoconfigure;
80+
@Target(ElementType.TYPE)
81+
@Retention(RetentionPolicy.RUNTIME)
82+
@Documented
83+
@Inherited
84+
@SpringBootConfiguration
85+
@EnableAutoConfiguration
86+
@ComponentScan(excludeFilters = {
87+
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
88+
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
89+
public @interface SpringBootApplication {
90+
......
91+
}
92+
```
93+
94+
```java
95+
package org.springframework.boot;
96+
@Target(ElementType.TYPE)
97+
@Retention(RetentionPolicy.RUNTIME)
98+
@Documented
99+
@Configuration
100+
public @interface SpringBootConfiguration {
101+
102+
}
103+
```
104+
105+
可以看出大概可以把 `@SpringBootApplication `看作是 `@Configuration``@EnableAutoConfiguration``@ComponentScan ` 注解的集合。根据 SpringBoot官网,这三个注解的作用分别是:
106+
107+
- `@EnableAutoConfiguration`:启用 SpringBoot 的自动配置机制
108+
- `@ComponentScan`: 扫描被`@Component` (`@Service`,`@Controller`)注解的bean,注解默认会扫描该类所在的包下所有的类。
109+
- `@Configuration`:允许在上下文中注册额外的bean或导入其他配置类
30110

31-
Spring Boot Starters 是一系列

0 commit comments

Comments
 (0)