From 67322b7a32ddf156827a0977a17493e3a3000509 Mon Sep 17 00:00:00 2001
From: CyC2018 <1029579233@qq.com>
Date: Mon, 20 Aug 2018 20:32:42 +0800
Subject: [PATCH] auto commit
---
notes/Docker.md | 11 ++++++-----
notes/Java 并发.md | 5 +----
notes/Leetcode 题解.md | 9 ++++-----
3 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/notes/Docker.md b/notes/Docker.md
index f230f762..80108896 100644
--- a/notes/Docker.md
+++ b/notes/Docker.md
@@ -30,15 +30,15 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程
## 启动速度
-启动虚拟机需要启动虚拟机的操作系统,再启动相应的应用,这个过程会非常慢;
+启动虚拟机需要启动虚拟机的操作系统,再启动应用,这个过程非常慢;
而启动 Docker 相当于启动宿主操作系统上的一个进程。
## 占用资源
-虚拟机是一个完整的操作系统,需要占用大量的磁盘空间、内存和 CPU,一台机器只能开启几十个的虚拟机。
+虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和 CPU,一台机器只能开启几十个的虚拟机。
-而 Docker 只是一个进程,只需要将应用以及相应的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个 Docker。
+而 Docker 只是一个进程,只需要将应用以及相关的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个 Docker。
参考资料:
@@ -58,7 +58,7 @@ Docker 使用分层技术和镜像,使得应用可以更容易复用重复部
## 更容易扩展
-可以使用基础镜像进一步扩展得到新的镜像,并且官方和开源社区提供了大量的镜像,通过扩展这些镜像得到我们想要的镜像非常容易。
+可以使用基础镜像进一步扩展得到新的镜像,并且官方和开源社区提供了大量的镜像,通过扩展这些镜像可以非常容易得到我们想要的镜像。
参考资料:
@@ -91,7 +91,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服
镜像包含着容器运行时所需要的代码以及其它组件,它是一种分层结构,每一层都是只读的(read-only layers)。构建镜像时,会一层一层构建,前一层是后一层的基础。镜像的这种分层存储结构很适合镜像的复用以及定制。
-在构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。
+构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。
@@ -100,3 +100,4 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服
- [How to Create Docker Container using Dockerfile](https://linoxide.com/linux-how-to/dockerfile-create-docker-container/)
- [理解 Docker(2):Docker 镜像](http://www.cnblogs.com/sammyliu/p/5877964.html)
+
diff --git a/notes/Java 并发.md b/notes/Java 并发.md
index ea8b2898..d3682d33 100644
--- a/notes/Java 并发.md
+++ b/notes/Java 并发.md
@@ -184,10 +184,7 @@ public static void main(String[] args) {
mt.start();
}
```
-## 三种实现方式的比较
-- 实现Runnable接口又可以避免Java单继承特性而带来的局限;增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;适合多个相同程序代码的线程区处理同一资源的情况。
-- 继承Thread类和实现Runnable方法启动线 程都是使用start方法,然后JVM虚拟机将此线程放到就绪队列中,如果有处理机可用, 则执行run方法。
-- 实现Callable接又要实现call方法,并且线 程执行完毕后会有返回值。其他的两种都是 重写run方法,没有返回值。
+
## 实现接口 VS 继承 Thread
实现接口会更好一些,因为:
diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md
index 68af3cb7..04a751c7 100644
--- a/notes/Leetcode 题解.md
+++ b/notes/Leetcode 题解.md
@@ -3602,7 +3602,7 @@ public int countPrimes(int n) {
```java
int gcd(int a, int b) {
- return b == 0 ? a : gcd(b, a% b);
+ return b == 0 ? a : gcd(b, a % b);
}
```
@@ -3673,7 +3673,7 @@ public String convertToBase7(int num) {
}
```
-Java 中 static String toString(int num, int radix) 可以将一个整数转换为 redix 进制表示的字符串。
+Java 中 static String toString(int num, int radix) 可以将一个整数转换为 radix 进制表示的字符串。
```java
public String convertToBase7(int num) {
@@ -6403,7 +6403,6 @@ public int maxChunksToSorted(int[] arr) {
}
```
-
## 图
### 二分图
@@ -6620,6 +6619,7 @@ public int[] findRedundantConnection(int[][] edges) {
}
private class UF {
+
private int[] id;
UF(int N) {
@@ -6665,7 +6665,7 @@ x ^ x = 0 x & x = x x | x = x
```
- 利用 x ^ 1s = \~x 的特点,可以将位级表示翻转;利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数。
-- 利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask :00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位。
+- 利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask:00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位。
- 利用 x | 0s = x 和 x | 1s = 1s 的特点,可以实现设值操作。一个数 num 与 mask:00111100 进行位或操作,将 num 中与 mask 的 1 部分相对应的位都设置为 1。
位与运算技巧:
@@ -6910,7 +6910,6 @@ public boolean isPowerOfFour(int num) {
}
```
-
**判断一个数的位级表示是否不会出现连续的 0 和 1**
[693. Binary Number with Alternating Bits (Easy)](https://leetcode.com/problems/binary-number-with-alternating-bits/description/)