From 127f7559fbfd8392e73f659c12850081036a192e Mon Sep 17 00:00:00 2001
From: CyC2018 <1029579233@qq.com>
Date: Sat, 22 Sep 2018 15:06:41 +0800
Subject: [PATCH] auto commit
---
notes/Java 容器.md | 2 +-
notes/Leetcode 题解.md | 8 ++++----
notes/分布式.md | 1 -
notes/攻击技术.md | 2 +-
notes/计算机操作系统.md | 2 +-
notes/集群.md | 5 -----
pics/VP6n3i8W48Ptde8NQ9_0eSR5eOD6uqx.png | Bin 0 -> 21504 bytes
7 files changed, 7 insertions(+), 13 deletions(-)
create mode 100644 pics/VP6n3i8W48Ptde8NQ9_0eSR5eOD6uqx.png
diff --git a/notes/Java 容器.md b/notes/Java 容器.md
index e42a42f0..3a7343f9 100644
--- a/notes/Java 容器.md
+++ b/notes/Java 容器.md
@@ -25,7 +25,7 @@
## Collection
-
+
### 1. Set
diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md
index e128e1d3..def70c60 100644
--- a/notes/Leetcode 题解.md
+++ b/notes/Leetcode 题解.md
@@ -2415,7 +2415,8 @@ public int climbStairs(int n) {
定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。
由于不能抢劫邻近住户,因此如果抢劫了第 i 个住户那么只能抢劫 i - 2 或者 i - 3 的住户,所以
-dp[i] = max(dp[i-1], dp[i-2] + nums[i])
+
++nums[i])
```java
public int rob(int[] nums) {
@@ -2427,7 +2428,6 @@ public int rob(int[] nums) {
}
return pre1;
}
-
```
**强盗在环形街区抢劫**
@@ -2505,9 +2505,9 @@ public int minPathSum(int[][] grid) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (i == 0) {
- if (j>0) dp[j] = dp[j - 1];
+ dp[j] = dp[j - 1];
} else {
- if (j>0) dp[j] = Math.min(dp[j - 1], dp[j]);
+ dp[j] = Math.min(dp[j - 1], dp[j]);
}
dp[j] += grid[i][j];
}
diff --git a/notes/分布式.md b/notes/分布式.md
index d2b2f974..2adba608 100644
--- a/notes/分布式.md
+++ b/notes/分布式.md
@@ -335,5 +335,4 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。
- [What is CAP theorem in distributed database system?](http://www.colooshiki.com/index.php/2017/04/20/what-is-cap-theorem-in-distributed-database-system/)
- [NEAT ALGORITHMS - PAXOS](http://harry.me/blog/2014/12/27/neat-algorithms-paxos/)
- [Paxos By Example](https://angus.nyc/2012/paxos-by-example/)
-- [ACID](https://en.wikipedia.org/wiki/ACID_(computer_science))
diff --git a/notes/攻击技术.md b/notes/攻击技术.md
index 31eeaaa4..115456cb 100644
--- a/notes/攻击技术.md
+++ b/notes/攻击技术.md
@@ -111,7 +111,7 @@ http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName
这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务器端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。
-透过例子能够看出,攻击者并不能通过 CSRF 攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义执行操作。
+通过例子能够看出,攻击者并不能通过 CSRF 攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义执行操作。
## 防范手段
diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md
index c0c4364e..00d26160 100644
--- a/notes/计算机操作系统.md
+++ b/notes/计算机操作系统.md
@@ -879,7 +879,7 @@ FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户
虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。
-为了实现 LRU,需要在内存中维护一个所有页面的链表。当一个页面被访问时,将这个页面移到链表表头。这样就能保证链表表尾的页面时最近最久未访问的。
+为了实现 LRU,需要在内存中维护一个所有页面的链表。当一个页面被访问时,将这个页面移到链表表头。这样就能保证链表表尾的页面是最近最久未访问的。
因为每次访问都需要更新链表,因此这种方式实现的 LRU 代价很高。
diff --git a/notes/集群.md b/notes/集群.md
index 111495c3..cd2af078 100644
--- a/notes/集群.md
+++ b/notes/集群.md
@@ -116,11 +116,6 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服
### 3. 反向代理服务器
-首先了解一下正向代理与反向代理的区别:
-
-- 正向代理:发生在客户端,是由用户主动发起的。比如翻墙,客户端通过主动访问代理服务器,让代理服务器获得需要的外网数据,然后转发回客户端;
-- 反向代理:发生在服务器端,用户不知道反向代理的存在。
-
反向代理服务器位于源服务器前面,用户的请求需要先经过反向代理服务器才能到达源服务器。反向代理可以用来进行缓存、日志记录等,同时也可以用来做为负载均衡服务器。
在这种负载均衡转发方式下,客户端不直接请求源服务器,因此源服务器不需要外部 IP 地址,而反向代理需要配置内部和外部两套 IP 地址。
diff --git a/pics/VP6n3i8W48Ptde8NQ9_0eSR5eOD6uqx.png b/pics/VP6n3i8W48Ptde8NQ9_0eSR5eOD6uqx.png
new file mode 100644
index 0000000000000000000000000000000000000000..d2559cf3c8acb1656a802e9e155720145b96486a
GIT binary patch
literal 21504
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
Z3HBAIVYA@|hIH6ayGYCC%3sa@e*ppvRUQBU
literal 0
HcmV?d00001