虚拟机的问题

最初,大家都使用虚拟机作为软件的运行环境,对外提供服务。为了在虚拟机上运行你的 Service,你不得不运行一大堆程序:

系统进程

定时任务

SSH

安装 Agent

安装 Bash

安装一大堆 libs

其实,你仅仅只是想让你的 Service运行起来,但你不得不维护一个 40GB的虚拟机。

然后你开始试用 Docker

开始试用 Docker,你毫不犹豫选择了和之前虚拟机一样的镜像:Ubuntu 1404,将之前的虚机的内容复制到了 Docker镜像,安装了一堆软件,最后发现你的 Docker镜像有 8GB。

谷歌的 Docker镜像构建实践

找到最小的基础镜像

Alpine Linux是基于 musl和 BusyBox的操作系统,目的是为了为用户提供更高效的资源使用效率。它的特性是体积小,最小的 Alpine Linux体积可以只有 5MB。谷歌某些团队使用 Alpine Linux作为 Docker Build的基础镜像。

目的:仅仅为了运行 Service

谷歌认为,为了运行一个 Service,并不需要将那些无关联的包、程序打包到容器里,换句话说,Docker镜像里只留下需要用到的,其他的都删除,从而得到一个最小的镜像。这需要考虑以下几点:

1、程序编译后的二进制文件(从 Artifactory获取)

2、程序的所有依赖(从 Artifactory获取)

3、程序语言的运行时(libc,JRE,node,…)

4、任何程序和 Kernel之间的中间件

其实这一切的信息,构建工具都已经知道。

谷歌的构建工具 Bazel

介绍 Bazel之前,先介绍下谷歌的开发模式,对于服务器端代码库,谷歌的开发流程如下:

1、所有的服务器端代码库都在一个巨大的版本控制系统里

2、每个人都用 Bazel构建软件

3、不同的组负责源码树的不同部分,所有的组件都是作为 BUILD目标来用

4、分支主要是用来管理发布,所以每个人都在最新版本上开发软件

Bazel(https://bazel.build/)是 Google内部用来构建自己的服务器端软件的工具。目前变成谷歌公司贡献的一个开源项目,目的是帮助开发者将软件的构建和测试变得更快、更可靠。

从上图可以看到,Bazel有 WORDSPACE的概念,WORDSPACE文件用来准备 Docker镜像构建所依赖的所有材料和来源。BUILD文件用来告诉 Bazel这个镜像应该使用什么命令进行构建,以及如何构建、如何测试。

使用 Bazel的声明式语言: WORKSPACE和 BUILD,开发者可以用文件描述整个构建和部署的环境。谷歌使用 Bazel进行 Docker的构建已经很多年,它为谷歌带来以下收益:

1、支持跨平台构建,分布式缓存,优化依赖解析,并行构建,增量构建。

2、支持多语言(Java,C++,Android,iOS,Go等等)。

3、跨平台。

4、水平扩展和自定义扩展。

Bazel是以下理念的奠基石:由于 Bazel需要所有的依赖都被完整地指定,我们可以预测改动影响了哪些程序和测试,并在提交前执行他们。

谷歌提供的 Distroless镜像构建文件

Distroless (https://github.com/GoogleCloudPlatform/distroless)是谷歌内部使用的镜像构建文件,包括 Java、Node、Python等镜像构建文件,Distroless仅仅只包含运行服务所需要的最小镜像,不包含包管理工具、shell命令行等其他功能。

为什么你需要这些镜像?这些镜像是谷歌和其他大公司的最佳实践的产物,经过了漏洞扫描,镜像会持续更新,保持安全性。

如何使用?Distroless提供的构建镜像的 BUILD文件,通过 Bazel可以直接进行构建。

谷歌为大家介绍了内部如何解决镜像过大的问题,以及进行大规模并发构建、测试所用到的构建工具 Bazel,并且开源了 Docker镜像构建文件 Distroless项目。如果你认为你的镜像也存在体积太大的问题,可以参考谷歌的实践,体验他们的工具。

总结

以上就是本文关于谷歌技术人员解决Docker镜像体积太大问题的方法的全部内容,希望对大家有所帮助。感兴趣的朋友可以可以继续参阅本站:

如有不足之处,欢迎留言指出。

python docker 镜像过大_谷歌技术人员解决Docker镜像体积太大问题的方法

相关文章

  1. 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

    转自:http://blog.sina.com.cn/s/blog_65cab32d01012iln.html eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 比方说:…...

    2023/3/28 15:57:12
  2. 01-基本数据类型

    注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 一、数据类型 什么是数据类型? - 数据类型可以理解为固定内存大小的别名 - 数据类型是创建变量的模子 二、数据类型的本质 1.数据类型是有固定内存大小的别名 2.用这个有固定…...

    2023/3/28 15:57:11
  3. Java入门第126课——PM2.5监控程序

    问题 北京某日空气质量PM2.5监测站全程检测的数据如下表所示,一个监测站点有可能在一天内多次采集,因此同一个站点可能有多个数据,如表-1所示: 方案 分析问题中提出的要求为统计各空气质量监测站点PM2.5的最高值,再结合提供的PM2.5浓度数据,可以发现,站点名可以作为M…...

    2023/3/28 15:57:11
  4. Java入门第127课——hashCode方法的重写

    问题 测试hashCode的作用,详细要求如下: 1)将没有重写hashCode方法的Emp类存入Map中,进行测试。 2)将重写了hashCode方法的Emp类存入Map中,再次进行测试,并说明两次不同结果的原因。 步骤 实现测案例需要按照如下步骤进行。 步骤一:新建Emp类 在JavaSE工程的day…...

    2023/3/28 15:57:10
  5. 02-有符号与无符号

    注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 一、计算机中的符号位 1)数据类型的最高位用于标识符数据的符号 - 最高位为1,表明这个数为负数 - 最高位为0,表明…...

    2023/3/28 15:57:10
  6. Java入门第128课——遍历各点PM2.5最大值

    问题 在第126节课的基础上,分别使用迭代key的方式和迭代Entry的方式遍历集合map。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 在TestHashMap类中添加测试方法test2,使test2中的代码和test1的代码保持一致,代码如下所示: package day05;import org…...

    2023/3/28 15:57:09
  7. ubuntu14.04 gcc突然失效

    环境:ubuntu14.04 问题:gcc正常使用,突然无法编译文件,使用gcc -v查看不到版本号 解决办法:卸载重新安装gcc。 步骤: 1.因为不知道gcc版本号,卸载时需要gcc版本号。 使用命令:wh…...

    2023/3/28 15:57:09
  8. 03-浮点数的秘密

    注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 一、内存中的浮点数: * 浮点数在内存的存储方式为:符号位、指数、尾数 类型符号位指数尾数float1位(第31位&…...

    2023/3/28 15:57:08
  9. Java入门第129课——统计并遍历各点PM2.5最大值(要求排序)

    问题 在上一节课的基础上,按照放入map中的站点名的顺序遍历出来。 步骤 实现此案例需要按照如下步骤进行。 步骤一:将HashMap改成LinkedHashMap 首先,构建测试方法test4、test5;然后,复制test2的代码到test4中,复制test3的代码到test5中;最后,将test4、test5中构建…...

    2023/3/28 15:57:08
  10. Java入门第130课——查看一个文件的大小

    问题 查看当前工程下demo文件夹下HelloWorld.txt文件的大小。 步骤 实现此案例需要按照如下步骤进行。 步骤一:新建类及测试方法 首先,新建类TestFile,并在该类中新建测试方法testLength,代码如下所示: package day05;import java.io.File; import org.junit.Test;p…...

    2023/3/28 15:57:06
  11. 05-变量属性

    注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:ubuntu 14.04 GCC版本:4.8.4 一、C语言的变量属性 * C语言中的变量可以有自己的属性 * 在定义变量的时候可以加上“属性”关键字 * “属性”关键字指…...

    2023/3/28 15:57:06
  12. Java入门第131课——创建一个空文件

    问题 在上一案例的基础上,在demo文件夹下创建文件Hello.txt。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testCreateNewFile,代码如下所示: package day05;im…...

    2023/3/28 15:57:05
  13. Java入门第132课——删除一个文件

    问题 在上一案例中创建的Hello.txt文件删除。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,在TestFile类中新建测试方法testDeleteFile,代码如下所示: package day05;import java.io.File; import org…...

    2023/3/28 15:57:05
  14. 01-一个稍微复杂的VTK程序

    一、程序 #include <QtCore/QCoreApplication> #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2)#include <vtkSmartPointer.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteracto…...

    2023/3/28 15:57:04
  15. Java入门第133课——创建一个目录

    问题 在当前工程下创建myDir目录 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testMkDir&#xff0c;代码如下所示&#xff1a; package day05;import java.io.File; import java.io.IOException;…...

    2023/3/28 15:57:03
  16. 02-三维场景的基本要素(灯光)

    一、灯光 剧场里有各式各样的灯光&#xff0c;三维渲染场景中也一样&#xff0c;可以有多个灯光存在。灯光和相机是三维渲染场景必备的要素&#xff0c;如果没有指定&#xff0c;vtkRenderer会自动创建默认的灯光和相机。VTK里用类vtkLight来表示渲染场景中的灯光。与现实中的…...

    2023/3/28 15:57:03
  17. Java入门第133课——创建一个多级目录

    问题 在当前工程下&#xff0c;创建a目录&#xff0c;然后在a目录下创建b目录&#xff0c;最后在b目录下创建c目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testMkDirs&#xff0c;代码如下所…...

    2023/3/28 15:57:02
  18. 以像素为单位计算字符串大小

    环境&#xff1a; Qt5.8、win7 一、背景 项目中需要根据字符串长宽调整空间边框大小。 二、解决办法 使用QFontMetrics。QFontMetrics函数计算给定字体的字符和字符串大小。string函数包括width()、boundingRect()、size()和size()&#xff0c;它们以像素为单位返回字符串…...

    2023/3/28 15:57:02
  19. Java入门第134课——删除一个目录

    问题 删除一个空目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testDeleteDir&#xff0c;代码如下所示&#xff1a; package day05;import java.io.File; import java.io.IOException; impo…...

    2023/3/28 15:57:01
  20. 03-三维场景的基本要素(相机)

    一、相机 观众的眼睛好比三维渲染场景中的相机&#xff0c;在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕&#xff0c;相机投影示意图如下图所示。从图中可以看出与相机投影相关的要素主要有如下几个&#xff1a; 1&#xff09;相机…...

    2023/3/28 15:57:01
  21. Java入门第135课——文件操作File和RandomAccessFile

    1. 文件操作——File 1.1 File表示目录信息 1.1.1 listFiles()方法 File的listFiles方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录的子项(文件或目录)。 - File[] listFiles() - 返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录…...

    2023/3/28 15:57:00
  22. VS2015——Qt工程不能生成moc文件的解决办法

    问题&#xff1a;在VS2015开发Qt应用程序时发现&#xff0c;编译器提示无法关联信号槽&#xff0c;无法经过moc工具生成相关函数。 解决办法&#xff1a; 1.找到无法生成转换的槽函数头文件&#xff0c;右键头文件(xxx.h)——>找到属性选项(Property)。 2.点击配置属性(Co…...

    2023/3/28 15:57:00
  23. Java入门第136课——输出一个目录中的内容

    1 输出一个目录中的内容 问题 输出当前目录下所有的内容 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,新建TestFile类,并在类中新建测试方法testListFiles,代码如下所示: import java.io.File; import java.io.IOException; import org.junit…...

    2023/3/28 15:56:59
  24. VS2015——在release模式下进行调试

    通过配置VS2015&#xff0c;解决release模式下问题&#xff1a; 1.工程项目上右键找到属性proterties(或菜单栏——>调试Debug——>属性 proterties)。 2.C ——> 常规General ——> 调试信息格式Debug Information Format 选 程序数据库 Program Database(/Zi) …...

    2023/3/28 15:56:59
  25. 06-分支语句

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;Ubuntu 10.10 GCC版本&#xff1a;4.4.5 一、if语句分析 1) if语句用于根据条件选择执行语句 2) else不能独立存在且总是与它最近的if相匹配 3) else语句后可以…...

    2023/3/28 15:56:58
  26. Java入门第137课——RandomAccessFile的read()和write()方法

    问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write方法向文件raf.dat写入数字“1”。 2)使用RandomAccessFile的read方法从文件raf.dat中将数字“1”读取出来并打印到控制台。 步骤 实现此案例需要按照如下步骤进行。 步骤一:…...

    2023/3/28 15:56:58
  27. 07-循环语句

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;Ubuntu 10.10 GCC版本&#xff1a;4.4.5 一、循环语句分析 1&#xff09;循环语句的基本工作方式 - 通过条件表达式判定是否执行循环体 - 条件表达式遵循if语句表…...

    2023/3/28 15:56:57
  28. Java入门第138课——RandomAccessFile的read(byte[])和write(byte[])方法

    问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write(byte[])方法向文件raf.dat写入字符串"HelloWorld"。 2)使用RandomAccessFile的read(byte[])方法从文件raf.dat中将字符串"HelloWorld"读取出来并打印到控制…...

    2023/3/28 15:56:56
  29. 08-goto和void分析

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;Ubuntu 10.10 GCC版本&#xff1a;4.4.5 一、遭人遗弃的goto 1&#xff09;高手潜规则&#xff1a;禁用goto 2&#xff09;项目经验&#xff1a;程序质量与goto的…...

    2023/3/28 15:56:55
  30. Java入门第139课——文件指针的相关方法

    问题 使用RandomAccessFile类的对象操作文件指针,详细要求如下: 1)获取文件raf.dat的指针 2)设置指针读取raf.dat中的字符串"World" 3)将指针移动到raf.dat文件的开始。 步骤 实现此案例需要按照如下步骤进行。 步骤一:添加测试方法testPointer方法 在…...

    2023/3/28 15:56:55

最新文章

  1. 汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

    转自&#xff1a;http://blog.sina.com.cn/s/blog_65cab32d01012iln.html eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称&#xff0c;是32位的寄存器。如果用C语言来解释&#xff0c;可以把这些寄存器当作变量看待。 比方说&#xff1a;…...

    2023/3/28 15:57:12
  2. 01-基本数据类型

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 一、数据类型 什么是数据类型&#xff1f; - 数据类型可以理解为固定内存大小的别名 - 数据类型是创建变量的模子 二、数据类型的本质 1.数据类型是有固定内存大小的别名 2.用这个有固定…...

    2023/3/28 15:57:11
  3. Java入门第126课——PM2.5监控程序

    问题 北京某日空气质量PM2.5监测站全程检测的数据如下表所示,一个监测站点有可能在一天内多次采集,因此同一个站点可能有多个数据,如表-1所示: 方案 分析问题中提出的要求为统计各空气质量监测站点PM2.5的最高值,再结合提供的PM2.5浓度数据,可以发现,站点名可以作为M…...

    2023/3/28 15:57:11
  4. Java入门第127课——hashCode方法的重写

    问题 测试hashCode的作用,详细要求如下: 1)将没有重写hashCode方法的Emp类存入Map中,进行测试。 2)将重写了hashCode方法的Emp类存入Map中,再次进行测试,并说明两次不同结果的原因。 步骤 实现测案例需要按照如下步骤进行。 步骤一:新建Emp类 在JavaSE工程的day…...

    2023/3/28 15:57:10
  5. 02-有符号与无符号

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;ubuntu 14.04 一、计算机中的符号位 1&#xff09;数据类型的最高位用于标识符数据的符号 - 最高位为1&#xff0c;表明这个数为负数 - 最高位为0&#xff0c;表明…...

    2023/3/28 15:57:10
  6. Java入门第128课——遍历各点PM2.5最大值

    问题 在第126节课的基础上,分别使用迭代key的方式和迭代Entry的方式遍历集合map。 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 在TestHashMap类中添加测试方法test2,使test2中的代码和test1的代码保持一致,代码如下所示: package day05;import org…...

    2023/3/28 15:57:09
  7. ubuntu14.04 gcc突然失效

    环境&#xff1a;ubuntu14.04 问题&#xff1a;gcc正常使用&#xff0c;突然无法编译文件&#xff0c;使用gcc -v查看不到版本号 解决办法&#xff1a;卸载重新安装gcc。 步骤&#xff1a; 1.因为不知道gcc版本号&#xff0c;卸载时需要gcc版本号。 使用命令&#xff1a;wh…...

    2023/3/28 15:57:09
  8. 03-浮点数的秘密

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;ubuntu 14.04 一、内存中的浮点数&#xff1a; * 浮点数在内存的存储方式为&#xff1a;符号位、指数、尾数 类型符号位指数尾数float1位&#xff08;第31位&…...

    2023/3/28 15:57:08
  9. Java入门第129课——统计并遍历各点PM2.5最大值(要求排序)

    问题 在上一节课的基础上,按照放入map中的站点名的顺序遍历出来。 步骤 实现此案例需要按照如下步骤进行。 步骤一:将HashMap改成LinkedHashMap 首先,构建测试方法test4、test5;然后,复制test2的代码到test4中,复制test3的代码到test5中;最后,将test4、test5中构建…...

    2023/3/28 15:57:08
  10. Java入门第130课——查看一个文件的大小

    问题 查看当前工程下demo文件夹下HelloWorld.txt文件的大小。 步骤 实现此案例需要按照如下步骤进行。 步骤一:新建类及测试方法 首先,新建类TestFile,并在该类中新建测试方法testLength,代码如下所示: package day05;import java.io.File; import org.junit.Test;p…...

    2023/3/28 15:57:06
  11. 05-变量属性

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;ubuntu 14.04 GCC版本&#xff1a;4.8.4 一、C语言的变量属性 * C语言中的变量可以有自己的属性 * 在定义变量的时候可以加上“属性”关键字 * “属性”关键字指…...

    2023/3/28 15:57:06
  12. Java入门第131课——创建一个空文件

    问题 在上一案例的基础上&#xff0c;在demo文件夹下创建文件Hello.txt。 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testCreateNewFile&#xff0c;代码如下所示&#xff1a; package day05;im…...

    2023/3/28 15:57:05
  13. Java入门第132课——删除一个文件

    问题 在上一案例中创建的Hello.txt文件删除。 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testDeleteFile&#xff0c;代码如下所示&#xff1a; package day05;import java.io.File; import org…...

    2023/3/28 15:57:05
  14. 01-一个稍微复杂的VTK程序

    一、程序 #include <QtCore/QCoreApplication> #include <vtkAutoInit.h> VTK_MODULE_INIT(vtkRenderingOpenGL2)#include <vtkSmartPointer.h> #include <vtkRenderWindow.h> #include <vtkRenderer.h> #include <vtkRenderWindowInteracto…...

    2023/3/28 15:57:04
  15. Java入门第133课——创建一个目录

    问题 在当前工程下创建myDir目录 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testMkDir&#xff0c;代码如下所示&#xff1a; package day05;import java.io.File; import java.io.IOException;…...

    2023/3/28 15:57:03
  16. 02-三维场景的基本要素(灯光)

    一、灯光 剧场里有各式各样的灯光&#xff0c;三维渲染场景中也一样&#xff0c;可以有多个灯光存在。灯光和相机是三维渲染场景必备的要素&#xff0c;如果没有指定&#xff0c;vtkRenderer会自动创建默认的灯光和相机。VTK里用类vtkLight来表示渲染场景中的灯光。与现实中的…...

    2023/3/28 15:57:03
  17. Java入门第133课——创建一个多级目录

    问题 在当前工程下&#xff0c;创建a目录&#xff0c;然后在a目录下创建b目录&#xff0c;最后在b目录下创建c目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testMkDirs&#xff0c;代码如下所…...

    2023/3/28 15:57:02
  18. 以像素为单位计算字符串大小

    环境&#xff1a; Qt5.8、win7 一、背景 项目中需要根据字符串长宽调整空间边框大小。 二、解决办法 使用QFontMetrics。QFontMetrics函数计算给定字体的字符和字符串大小。string函数包括width()、boundingRect()、size()和size()&#xff0c;它们以像素为单位返回字符串…...

    2023/3/28 15:57:02
  19. Java入门第134课——删除一个目录

    问题 删除一个空目录。 步骤 实现此案例需要按照如下步骤进行。 步骤一&#xff1a;构建测试方法 首先&#xff0c;在TestFile类中新建测试方法testDeleteDir&#xff0c;代码如下所示&#xff1a; package day05;import java.io.File; import java.io.IOException; impo…...

    2023/3/28 15:57:01
  20. 03-三维场景的基本要素(相机)

    一、相机 观众的眼睛好比三维渲染场景中的相机&#xff0c;在VTK中用vtkCamera类来表示。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕&#xff0c;相机投影示意图如下图所示。从图中可以看出与相机投影相关的要素主要有如下几个&#xff1a; 1&#xff09;相机…...

    2023/3/28 15:57:01
  21. Java入门第135课——文件操作File和RandomAccessFile

    1. 文件操作——File 1.1 File表示目录信息 1.1.1 listFiles()方法 File的listFiles方法用于返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录的子项(文件或目录)。 - File[] listFiles() - 返回值:抽象路径名数组,这些路径名表示此抽象路径名表示的目录…...

    2023/3/28 15:57:00
  22. VS2015——Qt工程不能生成moc文件的解决办法

    问题&#xff1a;在VS2015开发Qt应用程序时发现&#xff0c;编译器提示无法关联信号槽&#xff0c;无法经过moc工具生成相关函数。 解决办法&#xff1a; 1.找到无法生成转换的槽函数头文件&#xff0c;右键头文件(xxx.h)——>找到属性选项(Property)。 2.点击配置属性(Co…...

    2023/3/28 15:57:00
  23. Java入门第136课——输出一个目录中的内容

    1 输出一个目录中的内容 问题 输出当前目录下所有的内容 步骤 实现此案例需要按照如下步骤进行。 步骤一:构建测试方法 首先,新建TestFile类,并在类中新建测试方法testListFiles,代码如下所示: import java.io.File; import java.io.IOException; import org.junit…...

    2023/3/28 15:56:59
  24. VS2015——在release模式下进行调试

    通过配置VS2015&#xff0c;解决release模式下问题&#xff1a; 1.工程项目上右键找到属性proterties(或菜单栏——>调试Debug——>属性 proterties)。 2.C ——> 常规General ——> 调试信息格式Debug Information Format 选 程序数据库 Program Database(/Zi) …...

    2023/3/28 15:56:59
  25. 06-分支语句

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;Ubuntu 10.10 GCC版本&#xff1a;4.4.5 一、if语句分析 1) if语句用于根据条件选择执行语句 2) else不能独立存在且总是与它最近的if相匹配 3) else语句后可以…...

    2023/3/28 15:56:58
  26. Java入门第137课——RandomAccessFile的read()和write()方法

    问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write方法向文件raf.dat写入数字“1”。 2)使用RandomAccessFile的read方法从文件raf.dat中将数字“1”读取出来并打印到控制台。 步骤 实现此案例需要按照如下步骤进行。 步骤一:…...

    2023/3/28 15:56:58
  27. 07-循环语句

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;Ubuntu 10.10 GCC版本&#xff1a;4.4.5 一、循环语句分析 1&#xff09;循环语句的基本工作方式 - 通过条件表达式判定是否执行循环体 - 条件表达式遵循if语句表…...

    2023/3/28 15:56:57
  28. Java入门第138课——RandomAccessFile的read(byte[])和write(byte[])方法

    问题 使用RandomAccessFile类进行文件的读写,详细要求如下: 1)使用RandomAccessFile的write(byte[])方法向文件raf.dat写入字符串"HelloWorld"。 2)使用RandomAccessFile的read(byte[])方法从文件raf.dat中将字符串"HelloWorld"读取出来并打印到控制…...

    2023/3/28 15:56:56
  29. 08-goto和void分析

    注&#xff1a;博客中内容主要来自《狄泰软件学院》&#xff0c;博客仅当私人笔记使用。 测试环境&#xff1a;Ubuntu 10.10 GCC版本&#xff1a;4.4.5 一、遭人遗弃的goto 1&#xff09;高手潜规则&#xff1a;禁用goto 2&#xff09;项目经验&#xff1a;程序质量与goto的…...

    2023/3/28 15:56:55
  30. Java入门第139课——文件指针的相关方法

    问题 使用RandomAccessFile类的对象操作文件指针,详细要求如下: 1)获取文件raf.dat的指针 2)设置指针读取raf.dat中的字符串"World" 3)将指针移动到raf.dat文件的开始。 步骤 实现此案例需要按照如下步骤进行。 步骤一:添加测试方法testPointer方法 在…...

    2023/3/28 15:56:55