auto commit
This commit is contained in:
parent
082ff90b1b
commit
67322b7a32
@ -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),用来保存着容器运行过程中的修改。
|
||||
|
||||
<div align="center"> <img src="../pics//docker-filesystems-busyboxrw.png"/> </div><br>
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
|
@ -184,10 +184,7 @@ public static void main(String[] args) {
|
||||
mt.start();
|
||||
}
|
||||
```
|
||||
## 三种实现方式的比较
|
||||
- 实现Runnable接口又可以避免Java单继承特性而带来的局限;增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;适合多个相同程序代码的线程区处理同一资源的情况。
|
||||
- 继承Thread类和实现Runnable方法启动线 程都是使用start方法,然后JVM虚拟机将此线程放到就绪队列中,如果有处理机可用, 则执行run方法。
|
||||
- 实现Callable接又要实现call方法,并且线 程执行完毕后会有返回值。其他的两种都是 重写run方法,没有返回值。
|
||||
|
||||
## 实现接口 VS 继承 Thread
|
||||
|
||||
实现接口会更好一些,因为:
|
||||
|
@ -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/)
|
||||
|
Loading…
x
Reference in New Issue
Block a user