Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,6 @@

### Redis

1. [关于缓存的一些重要概念(Redis 前置菜)](docs/database/Redis/some-concepts-of-caching.md)
2. [Redis 常见问题总结](docs/database/Redis/redis-all.md)

## 系统设计
Expand Down
192 changes: 0 additions & 192 deletions docs/database/Redis/some-concepts-of-caching.md

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
request.getRequestDispatcher("login_success.jsp").forward(request, response);
```

**重定向(Redirect)** 是利用服务器返回的状态码来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过 HttpServletRequestResponse 的 setStatus(int status)方法设置状态码。如果服务器返回 301 或者 302,则浏览器会到新的网址重新请求该资源。
**重定向(Redirect)** 是利用服务器返回的状态码来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状态码。服务器通过 HttpServletResponse 的 setStatus(int status)方法设置状态码。如果服务器返回 301 或者 302,则浏览器会到新的网址重新请求该资源。

1. **从地址栏显示来说**:forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读取过来,然后把这些内容再发给浏览器。浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。redirect 是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址。所以地址栏显示的是新的 URL。
2. **从数据共享来说**:forward:转发页面和转发到的页面可以共享 request 里面的数据。redirect:不能共享数据。
Expand Down
6 changes: 3 additions & 3 deletions docs/java/basis/BIO,NIO,AIO总结.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
- [2. NIO \(New I/O\)](#2-nio-new-io)
- [2.1 NIO 简介](#21-nio-简介)
- [2.2 NIO的特性/NIO与IO区别](#22-nio的特性nio与io区别)
- [1)Non-blocking IO(非阻塞IO)](#1non-blocking-io(非阻塞io))
- [1)Non-blocking IO(非阻塞IO)](#1non-blocking-io非阻塞io)
- [2)Buffer\(缓冲区\)](#2buffer缓冲区)
- [3)Channel \(通道\)](#3channel-通道)
- [4)Selectors\(选择器\)](#4selectors选择器)
- [4)Selectors\(选择器\)](#4selector-选择器)
- [2.3 NIO 读数据和写数据方式](#23-nio-读数据和写数据方式)
- [2.4 NIO核心组件简单介绍](#24-nio核心组件简单介绍)
- [2.5 代码示例](#25-代码示例)
Expand All @@ -37,7 +37,7 @@
> 当你同步执行某项任务时,你需要等待其完成才能继续执行其他任务。当你异步执行某些操作时,你可以在完成另一个任务之前继续进行。

- **同步** :两个同步任务相互依赖,并且一个任务必须以依赖于另一任务的某种方式执行。 比如在`A->B`事件模型中,你需要先完成 A 才能执行B。 再换句话说,同步调用中被调用者未处理完请求之前,调用不返回,调用者会一直等待结果的返回。
- **异步**: 两个异步的任务完全独立的,一方的执行不需要等待另外一方的执行。再换句话说,异步调用种一调用就返回结果不需要等待结果返回,当结果返回的时候通过回调函数或者其他方式拿着结果再做相关事情,
- **异步**: 两个异步的任务是完全独立的,一方的执行不需要等待另外一方的执行。再换句话说,异步调用中一调用就返回结果不需要等待结果返回,当结果返回的时候通过回调函数或者其他方式拿着结果再做相关事情,

**阻塞和非阻塞**

Expand Down
24 changes: 0 additions & 24 deletions docs/java/basis/Java基础知识.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@
- [2.3. 修饰符](#23-修饰符)
- [2.3.1. 在一个静态方法内调用一个非静态成员为什么是非法的?](#231-在一个静态方法内调用一个非静态成员为什么是非法的)
- [2.3.2. 静态方法和实例方法有何不同](#232-静态方法和实例方法有何不同)
- [2.4. 接口和抽象类](#24-接口和抽象类)
- [2.4.1. 接口和抽象类的区别是什么?](#241-接口和抽象类的区别是什么)
- [2.5. 其它重要知识点](#25-其它重要知识点)
- [2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?](#251-string-stringbuffer-和-stringbuilder-的区别是什么-string-为什么是不可变的)
- [2.5.2. Object 类的常见方法总结](#252-object-类的常见方法总结)
Expand Down Expand Up @@ -798,7 +796,6 @@ Java 程序设计语言对对象采用的不是引用调用,实际上,对象
| 发生阶段 | 编译期 | 运行期 |



**方法的重写要遵循“两同两小一大”**(以下内容摘录自《疯狂 Java 讲义》,[issue#892](https://github.com/Snailclimb/JavaGuide/issues/892) ):

- “两同”即方法名相同、形参列表相同;
Expand Down Expand Up @@ -986,27 +983,6 @@ public class Student {

2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。

### 2.4. 接口和抽象类

#### 2.4.1. 接口和抽象类的区别是什么?

1. 接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),而抽象类可以有非抽象的方法。
2. 接口中除了 static、final 变量,不能有其他变量,而抽象类中则不一定。
3. 一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过 extends 关键字扩展多个接口。
4. 接口方法默认修饰符是 public,抽象方法可以有 public、protected 和 default 这些修饰符(抽象方法就是为了被重写所以不能使用 private 关键字修饰!)。
5. 从设计层面来说,抽象是对类的抽象,是一种模板设计,而接口是对行为的抽象,是一种行为的规范。

> 备注:
>
> 1. 在 JDK8 中,接口也可以定义静态方法,可以直接用接口名调用。实现类和实现是不可以调用的。如果同时实现两个接口,接口中定义了一样的默认方法,则必须重写,不然会报错。(详见 issue:[https://github.com/Snailclimb/JavaGuide/issues/146](https://github.com/Snailclimb/JavaGuide/issues/146)。
> 2. jdk9 的接口被允许定义私有方法 。

总结一下 jdk7~jdk9 Java 中接口概念的变化([相关阅读](https://www.geeksforgeeks.org/private-methods-java-9-interfaces/)):

1. 在 jdk 7 或更早版本中,接口里面只能有常量变量和抽象方法。这些接口方法必须由选择实现接口的类实现。
2. jdk8 的时候接口可以有默认方法和静态方法功能。
3. Jdk 9 在接口中引入了私有方法和私有静态方法。

### 2.5. 其它重要知识点

#### 2.5.1. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?
Expand Down
Loading