-
Notifications
You must be signed in to change notification settings - Fork 0
/
atom.xml
165 lines (85 loc) · 19.8 KB
/
atom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>NancyのBlog</title>
<link href="/atom.xml" rel="self"/>
<link href="http://example.com/"/>
<updated>2024-11-27T12:33:25.625Z</updated>
<id>http://example.com/</id>
<author>
<name>Nancy</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>Markdown</title>
<link href="http://example.com/2024/11/28/Markdown/"/>
<id>http://example.com/2024/11/28/Markdown/</id>
<published>2024-11-28T08:30:00.000Z</published>
<updated>2024-11-27T12:33:25.625Z</updated>
<content type="html"><![CDATA[<h2 id="Markdown简介"><a href="#Markdown简介" class="headerlink" title="Markdown简介"></a>Markdown简介</h2><p>Markdown 是一种轻量级的标记语言,它通过简单的符号来格式化文本,以便生成结构化的内容。<br>Markdown 的设计目标是让人类能够容易编写和阅读,同时能转换成 HTML 等格式,广泛应用于文档编写、博客、GitHub 等平台。<br><a href="https://markdown-it.github.io/">Markdown学习链接</a></p><h2 id="Markdown基本语法"><a href="#Markdown基本语法" class="headerlink" title="Markdown基本语法"></a>Markdown基本语法</h2><p>1.标题:#-一级标题、##-二级标题、###-三级标题<br>2.无序列表使用 - 或 <em>,有序列表使用数字和点(1.)<br>3.加粗与斜体(使用 ** 或 __ 来加粗,使用 * 或 _ 来斜体)<br><strong>加粗文本</strong><br>*斜体文本</em><br>4.链接与图片(链接使用 <a href="URL">文本</a>,图片则在链接前加上 !)<br>5.代码块(行内代码使用反引号 `,多行代码块使用三个反引号 ```)<br>‘’’<br>System.out.println(“你好啊!”);<br>int b=1+2;</p><p>‘’’<br>6.引用(使用 > 来表示引用)</p><blockquote><p>这是引用文本。<br>7.分隔线(使用三个或更多的短横线 —、星号 *** 或下划线 ___ 来插入分隔线。)</p></blockquote><hr><hr><p>———</p>]]></content>
<summary type="html">
<h2 id="Markdown简介"><a href="#Markdown简介" class="headerlink" title="Markdown简介"></a>Markdown简介</h2><p>Markdown 是一种轻量级的标记语言,它通过简单的符号来格式化文本,以便
</summary>
<category term="tools" scheme="http://example.com/categories/tools/"/>
<category term="Markdown" scheme="http://example.com/tags/Markdown/"/>
</entry>
<entry>
<title>Linux-1</title>
<link href="http://example.com/2024/11/28/Linux1/"/>
<id>http://example.com/2024/11/28/Linux1/</id>
<published>2024-11-28T05:30:00.000Z</published>
<updated>2024-11-27T14:30:47.058Z</updated>
<content type="html"><![CDATA[<h2 id="Linux"><a href="#Linux" class="headerlink" title="Linux"></a>Linux</h2><h3 id="相关技术:Namespaces-Cgroups-UnionFS-Container-Format"><a href="#相关技术:Namespaces-Cgroups-UnionFS-Container-Format" class="headerlink" title="相关技术:Namespaces, Cgroups, UnionFS, Container Format"></a>相关技术:Namespaces, Cgroups, UnionFS, Container Format</h3><h4 id="1-Namespaces"><a href="#1-Namespaces" class="headerlink" title="1. Namespaces"></a>1. <strong>Namespaces</strong></h4><p><strong>Namespaces</strong>(命名空间)是 Linux 内核提供的一种隔离技术,用于将不同的进程组隔离开来,使得它们看起来像是在各自独立的环境中运行。通过使用命名空间,Docker 容器能够实现进程、网络、文件系统等方面的隔离。</p><p>Docker 使用了以下几种主要的命名空间来实现容器隔离:</p><ul><li><strong>PID Namespace</strong>:每个容器有自己的进程 ID(PID)空间,容器内部的进程与宿主机进程互不干扰。</li><li><strong>Network Namespace</strong>:容器有独立的网络栈,包括 IP 地址、端口和路由表,容器间网络通信通过虚拟网络接口隔离。</li><li><strong>Mount Namespace</strong>:容器拥有独立的文件系统视图,通过挂载点隔离宿主机和容器的文件系统。</li><li><strong>IPC Namespace</strong>:提供进程间通信的隔离,容器内部的进程只访问本容器的共享内存等资源。</li><li><strong>UTS Namespace</strong>:隔离主机名和域名等系统信息,每个容器可以拥有独立的主机名,避免冲突。</li><li><strong>User Namespace</strong>:容器内部的用户和组与宿主机隔离,容器中的 root 用户不具备宿主机的 root 权限。</li></ul><p>通过这些命名空间,Docker 实现了容器级别的资源隔离,确保每个容器的环境互不干扰。</p><h4 id="2-Cgroups"><a href="#2-Cgroups" class="headerlink" title="2. Cgroups"></a>2. <strong>Cgroups</strong></h4><p><strong>Cgroups</strong>(Control Groups)是 Linux 内核提供的资源控制技术,用于限制、记录和隔离进程组使用的资源(如 CPU、内存、磁盘 I/O 和网络带宽等)。在 Docker 中,cgroups 用来限制每个容器的资源消耗,避免容器间资源的争抢。</p><ul><li><strong>CPU Cgroup</strong>:限制容器使用的 CPU 时间和优先级,控制容器的 CPU 资源分配。</li><li><strong>Memory Cgroup</strong>:限制容器使用的内存量,确保容器不会消耗过多内存,避免宿主机崩溃。</li><li><strong>Block I/O Cgroup</strong>:限制容器的磁盘 I/O 使用,防止过度使用磁盘带宽。</li><li><strong>Network I/O Cgroup</strong>:控制容器的网络带宽使用,避免占用过多带宽。</li></ul><p>通过 Cgroups,Docker 可以精细控制每个容器的资源消耗,保证资源分配的公平性和有效性。</p><h4 id="3-UnionFS"><a href="#3-UnionFS" class="headerlink" title="3. UnionFS"></a>3. <strong>UnionFS</strong></h4><p><strong>UnionFS</strong>(Union File System)是 Linux 上的一种文件系统实现,它允许将多个文件系统合并成一个单一的文件系统视图。Docker 使用 UnionFS 来高效地管理镜像层,使得容器在运行时能够共享镜像文件,而无需重复存储相同的文件。</p><ul><li><strong>层叠文件系统</strong>:在 Docker 中,镜像由多个只读层组成,每一层代表镜像构建过程中的一个操作(如安装软件、修改配置)。这些层通过 UnionFS 合并成一个文件系统视图,容器在启动时从镜像的只读层中读取文件。</li><li><strong>写时复制(Copy-on-Write,COW)</strong>:容器运行时,会生成一个可写层来保存容器对文件的修改。修改的文件会存储在容器的写时复制层中,未修改的部分仍指向镜像的只读层。这样可以高效复用镜像层,避免重复存储。</li></ul><p>UnionFS 提供了高效的文件系统合并和数据共享机制,是 Docker 高效构建和运行镜像的关键。</p><h4 id="4-Container-Format"><a href="#4-Container-Format" class="headerlink" title="4. Container Format"></a>4. <strong>Container Format</strong></h4><p><strong>Container Format</strong>(容器格式)是 Docker 容器的内部结构和规范,它决定了容器如何封装应用程序及其依赖项、运行时环境等。容器格式保证了容器可以在不同的系统和平台之间迁移和运行。</p><p>容器格式通常包含以下几个部分:</p><ul><li><strong>镜像层</strong>:容器镜像由多个层组成,每一层包含应用程序及其依赖、配置文件等内容。</li><li><strong>元数据</strong>:容器镜像包含元数据,如应用程序的启动命令、环境变量、端口映射等配置。</li><li><strong>可执行环境</strong>:容器内包含操作系统环境、文件系统、库文件和应用程序等。</li></ul><p>Docker 使用标准的容器格式,通过镜像层和元数据的组合,使得容器能够在不同的环境中迁移和运行,避免对宿主操作系统的依赖。</p>]]></content>
<summary type="html">
<h2 id="Linux"><a href="#Linux" class="headerlink" title="Linux"></a>Linux</h2><h3 id="相关技术:Namespaces-Cgroups-UnionFS-Container-Format"><a
</summary>
<category term="Linux" scheme="http://example.com/categories/Linux/"/>
<category term="Docker" scheme="http://example.com/tags/Docker/"/>
<category term="Linux" scheme="http://example.com/tags/Linux/"/>
</entry>
<entry>
<title>Docker-初识</title>
<link href="http://example.com/2024/11/27/Docker/"/>
<id>http://example.com/2024/11/27/Docker/</id>
<published>2024-11-27T08:30:00.000Z</published>
<updated>2024-11-27T13:00:00.854Z</updated>
<content type="html"><![CDATA[<h2 id="1-什么是-Docker"><a href="#1-什么是-Docker" class="headerlink" title="1. 什么是 Docker?"></a>1. 什么是 Docker?</h2><p><img src="/images/DockerLogo.png" alt="Docker"></p><h3 id="通俗理解"><a href="#通俗理解" class="headerlink" title="通俗理解"></a>通俗理解</h3><p>Docker 就像是一只鲸鱼,鲸鱼是宿主机,它携带着许多集装箱,而每个集装箱则代表一个独立且隔离的容器。每个容器中都包含着自己的应用程序和所需的依赖环境,确保它们能够独立且一致地运行。</p><h3 id="信息概述"><a href="#信息概述" class="headerlink" title="信息概述"></a>信息概述</h3><p>::: warning<br><em>- 它是一个开源的应用容器引擎,基于 <strong>Go 语言</strong> 开发并遵循 Apache 2.0 协议开源。</em><br><em>- 它是在 Linux 容器里运行应用的开源工具。</em><br><em>- 它是一种 <strong>轻量级的虚拟机</strong>。</em><br><em>- 它的 <strong>容器技术</strong>,可以在一台主机上轻松为任何应用创建一个 <strong>轻量级的、可移植的、自给自足的容器</strong>。</em><br>:::</p><h3 id="宗旨"><a href="#宗旨" class="headerlink" title="宗旨"></a>宗旨</h3><p>::: warning<br><em>通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装, 到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。</em><br>:::</p><h2 id="2-为什么要使用-Docker"><a href="#2-为什么要使用-Docker" class="headerlink" title="2. 为什么要使用 Docker?"></a>2. 为什么要使用 Docker?</h2><h3 id="Docker-与虚拟机(VM)的区别"><a href="#Docker-与虚拟机(VM)的区别" class="headerlink" title="Docker 与虚拟机(VM)的区别"></a>Docker 与虚拟机(VM)的区别</h3><ul><li><strong>架构层次</strong>:VM 运行在硬件上,通过虚拟化管理程序来模拟多个操作系统实例,VM 较重,因为每个虚拟机都需要一个独立的操作系统和虚拟化资源。而 Docker 运行在宿主操作系统上,并共享宿主操作系统的内核,是轻量级的。</li><li><strong>资源消耗</strong>:每一个 VM 都运行一个完整的操作系统,需要更多的资源来支持,启动时间较长。Docker 容器则秒级启动。</li><li><strong>隔离方式</strong>:VM 提供了完全的硬件级隔离,强隔离性,而 Docker 使用操作系统级隔离(也叫容器化),每个容器与宿主操作系统共享内核,但它们的进程、文件系统、网络和设备都是独立的,隔离性较弱。</li><li><strong>可移植性</strong>:VM 的可移植性较差,因为每个 VM 都包含完整的操作系统和应用程序,需要配置和适应不同的硬件资源。Docker 容器的可移植性非常强,容器包含了应用程序及其所有依赖,可以在任何安装了 Docker 引擎的机器上运行。</li><li><strong>管理与部署</strong>:VM 管理较复杂,而 Docker 提供了简洁的命令和图形界面工具来帮助构建、部署和管理容器。</li><li><strong>安全性</strong>:VM 的安全性更高,因为它提供了强隔离性。</li><li><strong>使用场景</strong>:VM 适用于需要完整隔离、对操作系统有不同要求的场景,而 Docker 适用于微服务架构、持续集成和部署、大规模快速部署、云计算等轻量级、高性能的场景。</li></ul><h3 id="Docker-优势"><a href="#Docker-优势" class="headerlink" title="Docker 优势"></a>Docker 优势</h3><ul><li>轻量级</li><li>快速启动</li><li>可移植性</li><li>一致的开发、测试和生产环境</li><li>高效的资源利用</li><li>隔离性</li><li>易于部署和管理</li><li>持续集成和交付支持</li><li>版本控制和回滚</li><li>支持微服务架构</li></ul><h2 id="3-Docker-的具体原理"><a href="#3-Docker-的具体原理" class="headerlink" title="3. Docker 的具体原理"></a>3. Docker 的具体原理</h2><h3 id="核心概念"><a href="#核心概念" class="headerlink" title="核心概念"></a>核心概念</h3><ul><li><p><strong>Docker 镜像(Image)</strong>:镜像是 Docker 容器的蓝图,包含应用程序的所有必要文件、库、依赖和配置。镜像是只读的,可以从 Docker Hub 或其他镜像仓库下载,也可以通过 Dockerfile 自定义构建。</p></li><li><p><strong>构建镜像</strong>:通过 Dockerfile 定义,使用 <code>docker build</code> 命令构建镜像。</p></li><li><p><strong>Docker 容器(Container)</strong>:容器是镜像的运行实例,容器之间默认是相互隔离的,可以通过 <code>docker run</code> 命令启动一个容器,指定镜像和运行的命令。</p></li><li><p><strong>Docker 引擎(Docker Engine)</strong>:Docker 引擎是 Docker 的核心组件,它是运行容器的基础。</p></li><li><p><strong>仓库(Repository)</strong>:仓库用于存储和管理 Docker 镜像,类似于软件包管理中的“包仓库”。开发者可以存储、分享和拉取镜像,以便在不同的环境中运行容器。仓库有公有和私有之分。</p></li></ul><h3 id="Docker-底层技术"><a href="#Docker-底层技术" class="headerlink" title="Docker 底层技术"></a>Docker 底层技术</h3><ul><li><p><strong>Docker VS VM</strong><br><img src="/images/dockerVSvm.jpeg" alt="Docker vs VM"></p><p>Docker 实现了类似虚拟化的技术,利用 Linux 的隔离功能,使容器看起来像是轻量级的虚拟机。实际情况是 Docker 使用了 Linux 的多项功能,如 Namespaces、Cgroups 等,使容器具有独立的文件系统和网络环境,但共享宿主机的内核。</p><p>Docker 底层使用的 Linux 功能:</p><ul><li><strong>Namespaces</strong>:用于进程隔离(视野隔离)。</li><li><strong>Cgroups (Control Groups)</strong>:用于资源隔离,通过限制容器对 CPU、内存、网络等资源的使用,防止一个容器占用宿主机的所有资源。</li><li><strong>UnionFS</strong>:用于文件隔离,Docker 镜像存储使用了 AUFS 技术。</li><li><strong>Container Format</strong>:Docker 容器的格式和结构。</li></ul></li></ul><h3 id="Docker-架构"><a href="#Docker-架构" class="headerlink" title="Docker 架构"></a>Docker 架构</h3><p><img src="/images/Docker.png" alt="Docker架构"></p><p>通过命令 <code>docker build</code>、<code>docker pull</code> 和 <code>docker run</code> 来操作 Docker。Docker 主机首先从远程仓库拉取镜像到本地,创建本地镜像后,可以根据镜像启动多个容器,容器相互隔离运行。</p>]]></content>
<summary type="html">
<h2 id="1-什么是-Docker"><a href="#1-什么是-Docker" class="headerlink" title="1. 什么是 Docker?"></a>1. 什么是 Docker?</h2><p><img src="/images/DockerLo
</summary>
<category term="Docker" scheme="http://example.com/categories/Docker/"/>
<category term="Docker" scheme="http://example.com/tags/Docker/"/>
<category term="容器化技术" scheme="http://example.com/tags/%E5%AE%B9%E5%99%A8%E5%8C%96%E6%8A%80%E6%9C%AF/"/>
<category term="OS-level virtualization" scheme="http://example.com/tags/OS-level-virtualization/"/>
</entry>
<entry>
<title>Interview_Notes1-数据基本结构</title>
<link href="http://example.com/2024/11/24/InterviewNotes1/"/>
<id>http://example.com/2024/11/24/InterviewNotes1/</id>
<published>2024-11-24T09:30:00.000Z</published>
<updated>2024-11-27T13:00:18.320Z</updated>
<content type="html"><![CDATA[<h3 id="数组"><a href="#数组" class="headerlink" title="数组"></a>数组</h3><p>1.有序数组-无重复元素-区间定义-二分法(log n)-注意是while(left<=right>)还是left < right</p><h2 id="相关技术"><a href="#相关技术" class="headerlink" title="相关技术"></a>相关技术</h2>]]></content>
<summary type="html">
<h3 id="数组"><a href="#数组" class="headerlink" title="数组"></a>数组</h3><p>1.有序数组-无重复元素-区间定义-二分法(log n)-注意是while(left&lt;=right&gt;)还是left &lt; r
</summary>
<category term="算法笔记" scheme="http://example.com/categories/%E7%AE%97%E6%B3%95%E7%AC%94%E8%AE%B0/"/>
<category term="二分法" scheme="http://example.com/tags/%E4%BA%8C%E5%88%86%E6%B3%95/"/>
</entry>
<entry>
<title>NancyWeather</title>
<link href="http://example.com/2023/10/12/NancyWeather/"/>
<id>http://example.com/2023/10/12/NancyWeather/</id>
<published>2023-10-12T04:30:00.000Z</published>
<updated>2024-11-27T12:27:48.679Z</updated>
<content type="html"><![CDATA[<h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><img src="/images/WeatherNancy.png" alt="GitHub"><br>Weather-Nancy 是我在大二下学期 Android 课程中完成的一款综合性 Android 应用,目前正在不断完善和修改。<br>该应用提供天气查询、音乐播放和日程管理功能。用户可以获取实时天气数据、播放本地和在线音乐,并管理个人日程安排。<br>项目Github链接:<a href="https://github.com/LEIYOUSU/weather-nancy.git">https://github.com/LEIYOUSU/weather-nancy.git</a></p><h2 id="相关技术"><a href="#相关技术" class="headerlink" title="相关技术"></a>相关技术</h2><p>(1)API 集成: 获取地理位置和天气信息,采用了和风天气API以及百度定位的SDK<br>(2)OkHttp:用于向外部天气 API 发起 HTTP 请求并处理响应。<br>(3)MediaPlayer:用于实现音频播放功能,支持本地和在线音乐播放。<br>(4)Room Database:用于存储用户的日程数据,提供本地数据持久化。Room 是一个 Android 官方提供的 SQLite 数据库抽象层。<br>(5)Gradle:Android 项目的构建工具,用于管理依赖和构建过程。</p>]]></content>
<summary type="html">
<h2 id="项目简介"><a href="#项目简介" class="headerlink" title="项目简介"></a>项目简介</h2><p><img src="/images/WeatherNancy.png" alt="GitHub"><br>Weather-N
</summary>
<category term="Android" scheme="http://example.com/categories/Android/"/>
<category term="Android" scheme="http://example.com/tags/Android/"/>
<category term="天气预报App" scheme="http://example.com/tags/%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5App/"/>
<category term="GitHub" scheme="http://example.com/tags/GitHub/"/>
<category term="Java" scheme="http://example.com/tags/Java/"/>
<category term="Room Database" scheme="http://example.com/tags/Room-Database/"/>
<category term="Gradle" scheme="http://example.com/tags/Gradle/"/>
</entry>
</feed>