【Docker】0.空间资源隔离

这篇具有很好参考价值的文章主要介绍了【Docker】0.空间资源隔离。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

NameSpace

dd + option : 可以从标准输入或文件中读取数据,根据指定格式来转换数据,再输出到文件、设备或标准输出
--help 显示帮助信息
--version 显示版本信息
if=文件名(输出文件名,默认标准输入) 源文件
of=文件名(输出文件名,默认标准输出) 目的文件
ibs=bytes 一次读取bytes个字节
obs=bytes 一次输出bytes个字节
bs=bytes  同时设置ibs和obs
cbs=bytes 一次转换bytes个字节
skip=blocks 从输入文件开头跳过blocks个块后开始复制
seek=blocks 从输出文件开头跳过blocks个块后开始复制
count=blocks 拷贝blocks个块,块大小等于ibs指定的字节数
conv=<关键字>
▪ conversion:用指定的参数转换文件。
▪ ascii:转换 ebcdic 为 ascii
▪ ebcdic:转换 ascii 为 ebcdic
▪ ibm:转换 ascii 为 alternate ebcdic
▪ block:把每一行转换为长度为 cbs,不足部分用空格填充
▪ unblock:使每一行的长度都为 cbs,不足部分用空格填充
▪ lcase:把大写字符转换为小写字符
▪ ucase:把小写字符转换为大写字符
▪ swap:交换输入的每对字节
▪ noerror:出错时不停止
▪ notrunc:不截短输出文件
▪ sync:将每个输入块填充到 ibs 个字节,不足部分用空(NUL)字符补齐。


@example 
# 从/dev/zero 中读取10240 8k的page到fdimage.img中
dd if=/dev/zero of=fdimage.img bs=8k count=10240
# 将testfile 文件中的英文字母转换成大写,并输出到testfile_1文件中
dd if=testfile_2 of=testfile_1 conv=ucase



mkfs [-V][-t fstype][fs-options] filesys [blocks] : 格式化文件
@example
# 格式化镜像文件ext4
mkfs -t ext4 ./data1.img

df [option]...[file](disk free 磁盘空间)显示Linux系统上的文件系统磁盘使用情况
* -a(all) 包含所有具有0 Blocks的文件系统
* -h(human-readable)
* -H(单位1000)
* --type=TYPE(指定文件系统TYPE)
* -T 显示文件系统的形式
@example
df -h 查看磁盘使用情况 df -Th 查看磁盘的系统类型

mount命令:可以用于加载文件系统到指定加载点。常用于挂载关盘,使我们可以访问光盘中的数据。因为关盘插入光驱中,Linux并不会自动进行挂载,必须使用Linux mount命令手动完成挂载
Linux系统不同目录下可以挂载不同分区和磁盘设备,它的目录和磁盘分区时分离的,可以自由组合
不同目录数据可以跨越不同磁盘分区或者不同磁盘设备
挂载的本质就是为磁盘添加入口(挂载点)

@example
mount [-l] 									显示已经加载的文件系统		
mount [-t vfstype] [-o options] device dir     -t指定文件系统类型,可以不指定,会自动识别
# 将镜像挂载到/mnt/test4下面,确保挂载点也就是目录存在
mount ./fdimage.img  /mnt/test4

unshare 主要能力是使用父进程不共享的名称空间运行程序
unshare [options] program [arguments]
这里主要介绍几个重要参数
-m,--mount   不共享mount空间,父进程不能看到该命名空间中的mount空间
--fork       执行unshare递达进程fork一个新的子进程,再子进程中执行unshare传入的参数
--mount-proc 执行子进程前,将proc优先挂载过去

@example
unshare -u /bin/bash                          用户隔离
unshare --fork --pid --mount-proc /bin/bash   PID隔离


*** 注意:
1、--fork 新建一个bash进程,如果不新建进程,新的namespace就会使用unshare的PID作为新的空间的父进程,而unshare进程并不在新的namespace中,所以会报Cannot allocate memory
2、mount-proc 是因为Linux下每个进程都有一个对应的/proc/PID目录,该目录中包含大量当前进程的信息,对一个PID namespace 而言。创建一个新的PID namespace后,如果向让子进程中ll、to等指令依赖/proc文件系统的命令工作,需要挂载/proc文件系统。而文件系统隔离是mount namespace管理的,所以Linux特意提供了一个选项--mount-proc来解决这个问题。如果不带这个我们看到的进程还是系统的进程信息
NameSpace Actual Conbat

打开shell窗口A,执行df -h 查看主机默认命名空间的磁盘挂载情况

[root@VM-20-6-centos data]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G   24K  1.9G   1% /dev/shm
tmpfs           1.9G  3.9M  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda1        59G   23G   34G  41% /
tmpfs           370M     0  370M   0% /run/user/0
tmpfs           370M     0  370M   0% /run/user/1001
/dev/loop0      6.8M   77K  6.2M   2% /data/testmymount

打开一个新的shell窗口,执行mount隔离命令

[root@VM-20-6-centos ~]# unshare --mount --fork /bin/bash    #表示创建子进程并隔离mount命名空间
[root@VM-20-6-centos ~]# mkdir -p /data/tmpmount		


添加新的磁盘挂载,并添加文件

[root@VM-20-6-centos ~]# cd /data/tmpmount/
[root@VM-20-6-centos ~]# dd if=/dev/zero of=fdimage.img bs=8k count=10240
[root@VM-20-6-centos tmpmount]# mount ./fdimage.img /data/tmpmount
[root@VM-20-6-centos tmpmount]# echo "hello world" > test.txt

分别在两个窗口中查看挂载信息,并查看文件。可以观察到两者观察到的目录内文件并不相同,说明我们实现了文件系统的隔离

[root@VM-20-6-centos tmpmount]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        59G   23G   34G  41% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G   24K  1.9G   1% /dev/shm
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
tmpfs           1.9G  3.9M  1.9G   1% /run
tmpfs           370M     0  370M   0% /run/user/0
tmpfs           370M     0  370M   0% /run/user/1001
/dev/loop0      6.8M   77K  6.2M   2% /data/testmymount
/dev/loop1       74M  1.6M   67M   3% /data/tmpmount

[root@VM-20-6-centos tmpmount]# ll
total 4492
-rw-r--r-- 1 root root 83886080 May 25 19:38 fdimage.img
-rw-r--r-- 1 root root       12 May 25 19:35 test.txt

[root@VM-20-6-centos tmpmount]# ll
total 13
drwx------ 2 root root 12288 May 25 19:34 lost+found
-rw-r--r-- 1 root root    12 May 25 19:38 test.txt

CGroups

pidstat 是sysstat的一个命令,用于监控全部或指定进程的CPU、内存、线程、设备IO等系统资源的占用情况,用户可以通过指定的统计次数和时间来获得所需的统计信息

pidstat [option][<time interval>][<times>]
# 安装: yum install sysstat -y
# 卸载: yum remove sysstat -y
@example
pidstat -C stress -p ALL -u 2 100000 # 每两秒监控stress命令全部进程cpu使用,监视100000次

stress 是Linux的一个压力测试工具,可以对CPU、Memory、IO、磁盘等进行压力测试
stress [OPTION[ARG]]
-c --cpu N :产生N个进程,每个进程都训话你调用sqrt函数压力CPU
-i --io N :产生N个进程,每个进程循环调用sync将内存缓冲区内容写道磁盘上,产生IO压力
-m --vm N :产生N个进程,每个进程频繁调用malloc/free来分配释放内存

查看cgroups版本

[root@VM-20-6-centos tmpmount]# cat /proc/filesystems | grep cgroup 
nodev	cgroup

cgroups子系统查看

[root@VM-20-6-centos tmpmount]# cat /proc/cgroups
#subsys_name	hierarchy	num_cgroups	enabled
cpuset	5	2	1
cpu	2	186	1
cpuacct	2	186	1
memory	4	186	1
devices	7	167	1
freezer	3	2	1
net_cls	6	2	1
blkio	11	167	1
perf_event	8	2	1
hugetlb	10	2	1
pids	9	167	1
net_prio	6	2	1


cgroups挂载信息查看

[root@VM-20-6-centos tmpmount]# ls /sys/fs/cgroup
blkio  cpuacct      cpuset   freezer  memory   net_cls,net_prio  perf_event  systemd
cpu    cpu,cpuacct  devices  hugetlb  net_cls  net_prio          pids

查看一个进程上cgroup限制

# 以当前shell进程为例,查看进程cgrouup
[root@VM-20-6-centos tmpmount]# cat /proc/$$/cgroup
11:blkio:/user.slice
10:hugetlb:/
9:pids:/user.slice
8:perf_event:/
7:devices:/user.slice
6:net_prio,net_cls:/
5:cpuset:/
4:memory:/user.slice
3:freezer:/
2:cpuacct,cpu:/user.slice
1:name=systemd:/user.slice/user-1001.slice/session-1217342.scope
# 可以组合mount | grep cgroup 来查找控制信息

[root@VM-20-6-centos 7058]# mount | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

[root@VM-20-6-centos 7058]# ll /sys/fs/cgroup/cpu,cpuacct/user.slice
total 0
-rw-r--r-- 1 root root 0 May 17 17:22 cgroup.clone_children
--w--w--w- 1 root root 0 May 17 17:22 cgroup.event_control
-rw-r--r-- 1 root root 0 May 17 17:22 cgroup.procs
-r--r--r-- 1 root root 0 May 17 17:22 cpuacct.stat
-rw-r--r-- 1 root root 0 May 17 17:22 cpuacct.usage
-r--r--r-- 1 root root 0 May 17 17:22 cpuacct.usage_percpu
-rw-r--r-- 1 root root 0 May 17 17:22 cpu.cfs_period_us    # CPU总时间片
-rw-r--r-- 1 root root 0 May 17 17:22 cpu.cfs_quota_us     # 该进程占用时间片 -1代表不受cgroup控制
-rw-r--r-- 1 root root 0 May 17 17:22 cpu.rt_period_us
-rw-r--r-- 1 root root 0 May 17 17:22 cpu.rt_runtime_us
-rw-r--r-- 1 root root 0 May 17 17:22 cpu.shares
-r--r--r-- 1 root root 0 May 17 17:22 cpu.stat
-rw-r--r-- 1 root root 0 May 17 17:22 notify_on_release
-rw-r--r-- 1 root root 0 May 17 17:22 tasks

Cgroup Control Memory
[root@VM-20-6-centos 7058]# mount | grep cgroup  # 找到控制内存信息的文件
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) # 这个
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

[root@VM-20-6-centos 7058]# cd /sys/fs/cgroup/memory 
[root@VM-20-6-centos memory]# mkdir test_memlimit     # 系统会为我们自动配置文件

[root@VM-20-6-centos test_memlimit]# ls  # 重点关注limit_in_bytes空间上线 和 tasks(任务) 
cgroup.clone_children           memory.kmem.tcp.max_usage_in_bytes  memory.oom_control
cgroup.event_control            memory.kmem.tcp.usage_in_bytes      memory.pressure_level
cgroup.procs                    memory.kmem.usage_in_bytes          memory.soft_limit_in_bytes
memory.failcnt                  memory.limit_in_bytes               memory.stat
memory.force_empty              memory.max_usage_in_bytes           memory.swappiness
memory.kmem.failcnt             memory.memsw.failcnt                memory.usage_in_bytes
memory.kmem.limit_in_bytes      memory.memsw.limit_in_bytes         memory.use_hierarchy
memory.kmem.max_usage_in_bytes  memory.memsw.max_usage_in_bytes     notify_on_release
memory.kmem.slabinfo            memory.memsw.usage_in_bytes         tasks
memory.kmem.tcp.failcnt         memory.move_charge_at_immigrate
memory.kmem.tcp.limit_in_bytes  memory.numa_stat

[root@VM-20-6-centos test_memlimit]# cat memory.limit_in_bytes   # 可以看到内存是不上限的
9223372036854771712
[root@VM-20-6-centos test_memlimit]# echo "20971520" > memory.limit_in_bytes  # 将其设置为20M
[root@VM-20-6-centos test_memlimit]# cat memory.limit_in_bytes 
20971520


新建两个终端进行压力测试

# 终端1
[clx@VM-20-6-centos test_memlimit]$ stress -m 1 --vm-bytes 50m
stress: info: [1851] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: FAIL: [1851] (415) <-- worker 1852 got signal 9
stress: WARN: [1851] (417) now reaping child worker processes
#  压力测试退出
stress: FAIL: [1851] (451) failed run completed in 139s

# 终端2
08:30:29 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
08:30:31 PM  1001      1851      0.00      0.00   10428    456   0.01  stress
08:30:31 PM  1001      1852 244557.00      0.00   61632  11324   0.30  stress

08:30:31 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
08:30:33 PM  1001      1851      0.00      0.00   10428    456   0.01  stress
08:30:33 PM  1001      1852 240434.00      0.00   61632  29280   0.77  stress

# 此时在终端0中将 1852 移入tasks中,压力测试立马退出
08:30:33 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
Cgroup Control CPU
[clx@VM-20-6-centos test_memlimit]$ mount | grep cgroup
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu) # 这个
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

[root@VM-20-6-centos test_memlimit]# cd /sys/fs/cgroup/cpu,cpuacct
[root@VM-20-6-centos cpu,cpuacct]# cat cpu.cfs_period_us   # 默认带宽,单位为微秒
100000
[root@VM-20-6-centos cpu,cpuacct]# cat cpu.cfs_quota_us  # 目前不受cgroup控制
-1

[root@VM-20-6-centos cpu,cpuacct]# mkdir test_cpu
[root@VM-20-6-centos cpu,cpuacct]# cd test_cpu
[root@VM-20-6-centos test_cpu]# echo "20000" > cpu.cfs_quota_us 
[root@VM-20-6-centos test_cpu]# cat cpu.cfs_quota_us    # 设置CPU占用率为20% 
20000

新建两个终端进行压力测试

# 终端1
[root@VM-20-6-centos tmpmount]# stress --cpu 1
stress: info: [7206] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

# 终端2
[root@VM-20-6-centos tmpmount]# pidstat -C stress -p ALL -u  2 10000
# 开始7207进程CPU使用率接近100%
09:58:14 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command  
09:58:16 AM     0      7206    0.00    0.00    0.00    0.00     1  stress
09:58:16 AM     0      7207   97.50    0.00    0.00   97.50     0  stress

09:58:16 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
09:58:18 AM     0      7206    0.00    0.00    0.00    0.00     1  stress
09:58:18 AM     0      7207   81.50    0.50    0.00   82.00     1  stress
# 将7207进程写入到tasks中,可以看到该进程的CPU使用率最高只有20%了
09:58:18 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
09:58:20 AM     0      7206    0.00    0.00    0.00    0.00     1  stress
09:58:20 AM     0      7207   20.00    0.00    0.00   20.00     1  stress

# 终端0
[root@VM-20-6-centos test_cpu]# cat tasks;	
[root@VM-20-6-centos test_cpu]# echo "7207" > tasks

总结:docker的本质就是调用这些API来完成对资源的管理的,但docker的易用性和镜像的设计更加人性化文章来源地址https://www.toymoban.com/news/detail-475140.html

到了这里,关于【Docker】0.空间资源隔离的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )

    命名空间 namespace 又称为 名字空间 , 名称空间 , 名域 , 作用域 , 是 C++ 语言 对 C 语言 的扩展 之一 ; C++ 中的 命名空间 namespace 指的是 标识符 的 可见范围 , C++ 标准库中的 所有 标识符 , 都定义在 std 命名空间中 ; 命名空间 英文名称是 \\\" namespace \\\" , name 是 名字 , 名称 的意思 ,

    2024年02月12日
    浏览(44)
  • docker的底层原理四: 资源隔离

    概述 :Docker 使用 Linux 内核的 Namespace 和 Cgroups 技术来实现资源隔离。这些技术保证了在宿主机上运行的每个 Docker 容器都是相互独立的,它们各自拥有自己的资源,并且不会互相干扰。以下是 Docker 资源隔离机制的一些具体细节: CPU 隔离 :通过 Cgroups 技术,Docker 可以对 C

    2024年02月20日
    浏览(42)
  • Linux Cgroups进程资源限制管理 之 资源子系统限制/控制、Docker资源隔离与限制原理解读

    Linux cgroups(控制组)最初由Google工程师Paul Menage在2006年提出,并在Linux内核的2.6.24版本中首次引入。自那时以来,cgroups一直是Linux内核的一部分,并在容器化技术等领域中发挥着至关重要的作用。随着时间的推移,cgroups功能不断得到改进和扩展,以满足对资源管理和隔离性能

    2024年02月21日
    浏览(44)
  • Docker 基础知识解析:容器与传统虚拟化对比:资源利用、启动时间、隔离性和部署效率

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(69)
  • 【C++】namespace 命名空间

    两个术语: 声明区域:声明区域是可以在其中进行声明的区域。 潜在作用域:变量的潜在作用域从声明点开始,到其声明区域的结尾。因此潜在作用域比声明区域小,这是由于变量必须定义后才能使用。 名称空间可以是全局的,也可以位于另一个名称空间中,但不能位于代

    2023年04月08日
    浏览(40)
  • 【C++】命名空间 ( namespace )

    命名空间是一种用来避免命名冲突的机制,它可以将一段代码的名称隔离开,使其与其他代码的名称不冲突; 命名空间的原理是将一个全局的作用域分成一个个命名空间,每个命名空间是个单独的作用域,同时若是在同一个作用域内可能出现的命名冲突也不会造成影响,有效

    2024年02月04日
    浏览(38)
  • C++——命名空间(namespace)

    目录 1. C语言命名冲突 2. 命名空间定义 3. 命名空间使用 可能大家在看别人写的C++代码中,在一开始会包这个头文件:#includeiostream 这个头文件等价于我们在C语言学习到的#includestdio.h,它是用来跟我们的控制台输入和输出的,这里简要提下,后续详谈。 除了上面这个头文件,

    2024年02月10日
    浏览(43)
  • Kubernetes集群命名空间(Namespace)

    Namespace是对一组资源和对象的抽象集合. 常见的 pod, service, deployment 等都是属于某一个namespace的(默认是 default) 不是所有资源都属于namespace,如nodes, persistent volume,namespace 等资源则不属于任何 namespace 使用 kubectl get all --namespace=命名空间名称 可以查看此命名空间下的所有资源

    2024年02月16日
    浏览(35)
  • C++篇 ---- 命名空间namespace

    由于在c语言中在定义时可能会出现重命名现象,造成空间冲突,c语言中有命名冲突:1 和库冲突。2 互相之间的冲突,变量命名冲突。所以c++中就有了对其改进的namespace,针对重定义,解决空间冲突。 以下是c语言实现的代码 这里会报错是由于变量rand与库函数中的ra

    2023年04月16日
    浏览(42)
  • 【C++初阶】命名空间 namespace

    在正式进入C++前,我们需要先了解了解C++。顾名思义,C++是基于C的一种编程语言,相较于C,C++写出来的代码更简洁,有时候C需要几百行代码,而C只需要几十行就可以解决,C++也很好的解决了C中存在的一些问题,例如: 命名冲突。 C++的命名空间 就能很好的解决这个问题。

    2023年04月19日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包