Java面试之Linux和docker

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
日志服务 SLS,月写入数据量 50GB 1个月
简介: Java面试之Linux和docker

Linux

常用命令

(1)cd: 切换目录

(2)pwd:显示当前工作目录的绝对路径

(3)ls: 查看当前目录下的内容(ls只列出文件名/目录名)

(4)ll:查看当前目录下的所有详细信息(ll列出详细信息)

(5)touch:创建文件

(6)mkdir:创建目录

(7)cat:用于显示文件内容

(8)more:以分页的形式查看文件的内容

(9)less:分页查看文件命令(可以快速定位到最后一页)

①显示大文件

  • cat适合小文件或查看文件内容的情况,但对于大文件可能性能较差,因为它一次性加载整个文件。
  • more相对于cat来说,它支持逐页显示,但在处理大文件时,性能可能会受到影响。
  • less也支持分页,但less对于大文件有更好的性能,因为它只加载当前屏幕所需的数据,避免了一次性加载整个文件。

②滚动和搜索

  • cat只能通过终端滚动来查看文件内容,不支持交互式滚动和搜索。
  • more支持逐页滚动,但搜索功能相对简单,只能使用基本的正向搜索。
  • less支持更灵活的滚动,可以使用箭头键进行精确滚动,并且提供了强大的搜索功能,支持正向和反向搜索,以及搜索高亮显示。

③退出方式

  • cat没有交互式操作,退出方式只能通过终端控制。
  • more只能通过按q键退出。
  • less支持多种退出方式,如:q、:q!、:wq等,提供更多的灵活性。

(10)tail:查看文件最后几行

如:tail -10 // 查看最后10行

(11)cp:复制文件或目录

(12)mv:移动文件/改文件名

①语法:mv [选项] 源文件 目标文件

②移动文件:

mv /path/to/source/file /path/to/destination/file

③重命名文件:

mv /path/to/source/file /path/to/destination/new_file_name

(13)rm:删除文件或文件夹

(14)find:查找指定文件或目录

(15)vi/vim:编辑

(16)tar:解压、压缩

(17)ifconfig:用于查看和更改网络接口的地址和参数

(18)ping ip地址:用于检测与目标的连通性

docker

docker的好处

(1)提供统一的运行环境

确保项目在开发、测试以及上线环境的运行结果是一样的。Docker=jar/war+环境

(2)便捷的应用迁移

无论是物理机还是虚拟机,Docker的运行结果都是一样的。用户可以很方便的将一个平台上运行的应用迁移到另一个平台上。

(3)超快的启动时间

直接运行于宿主机系统中,无需启动操作系统,因此可以做到很快的启动

(4)更轻松的维护和扩展

Docker使用的分层存储以及镜像的技术,使得应用重复部分更为容易,基于镜像进一步扩展镜像也很简单。

(5)简化配置与管理: Docker通过将应用及其依赖打包成单一单元,简化了应用程序的配置和管理。通过dockerfile可以构建镜像,通过docker-compose可以启动服务。

(6)快速部署和扩展,你可能需要快速部署或扩展应用以应对流量增加。手动部署和扩展可能很耗时。但使用Docker,你可以快速启动新的容器实例,实现快速部署和水平扩展。

(7)隔离和安全。在传统部署中,不同的应用可能共享相同的操作系统和资源,这可能导致安全问题。Docker提供了容器隔离,每个容器都运行在隔离的环境中,提高了安全性。

Docker和虚拟机的区别

(1)虚拟机是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需的应用进程

(2)docker容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核也没有硬件虚拟。因此容器要比传统虚拟机更为轻便

(3)Docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般

线上日志是什么?

(1)ELK 与 EFK的介绍和对比

ELK 和 EFK 分别是两种开源日志管理和分析平台的缩写,它们均基于 Elasticsearch、Kibana 这两个核心组件,但在日志收集阶段采用了不同的工具。

(2)ELK 是指 Elasticsearch, Logstash, Kibana 三个开源项目的组合:

①Elasticsearch: 一个分布式、实时的搜索和分析引擎,用于存储和检索日志数据。它提供了全文搜索、聚合分析等功能,且支持横向扩展以处理大规模数据。

②Logstash: 一个强大的数据收集、转换和传输工具,负责接收日志数据,对其进行解析、过滤、丰富等处理,然后将处理后的数据发送到 Elasticsearch 中存储。Logstash 支持多种输入源(如文件、网络接口、数据库等)、丰富的过滤插件以及多种输出目标(包括 Elasticsearch)。

③Kibana: 一个可视化平台,用于对存储在 Elasticsearch 中的数据进行交互式探索、分析和可视化呈现。Kibana 提供了直观的仪表板、图表、地图等多种视图,使得用户可以轻松查询、分析日志数据,并创建自定义监控界面。

(3)EFK 是指 Elasticsearch, Filebeat or Fluentd, Kibana 的组合:

①Elasticsearch 和 Kibana 在 EFK 中的作用与 ELK 中相同,分别作为日志数据的存储和分析展示平台。

②Filebeat 或 Fluentd 替代了 ELK 中的 Logstash,作为轻量级的日志收集器:

a.Filebeat: 由 Elastic 公司开发,专为日志收集而设计,具有资源占用低、易于部署的特点。Filebeat 直接从服务器上的日志文件读取数据,对日志进行初步的归集和简单处理(如多行合并、添加元数据),然后将其转发到 Elasticsearch 或其他中间件(如 Logstash、Kafka)。

b.Fluentd: 一个统一的日志收集层,由 Fluentd 社区维护。Fluentd 可以从多种来源(如文件、标准输出、数据库等)收集日志,并通过插件机制提供丰富的数据解析、过滤和转换功能。处理后的日志数据被发送到指定的后端存储(如 Elasticsearch)或消息队列(如 Kafka)。

(4)ELK 与 EFK 的主要区别:

①日志收集阶段:ELK 使用 Logstash 作为集中式的日志处理器,它功能强大但相对资源消耗较高,适合复杂的数据清洗、转换场景。而 EFK 更倾向于采用 Filebeat 或 Fluentd,两者都是轻量级的日志收集代理,资源占用少,更适合大规模部署,尤其是在容器环境中。

②架构灵活性:EFK 提供了 Filebeat 和 Fluentd 两种选择,可以根据项目需求、现有环境和技术栈偏好来决定使用哪一个。Filebeat 更简洁易用,与 Elastic 生态深度集成;Fluentd 功能更全面,插件生态系统丰富,支持更多的数据源和输出目标。

③性能和资源优化:由于 Filebeat 和 Fluentd 相对于 Logstash 资源消耗更低,EFK 方案在大规模部署时可能带来更好的性能和更低的运维成本。尤其是对于容器化环境中的微服务架构,每个容器内部署一个轻量级的日志收集器更为高效。

(5)综上所述,ELK 和 EFK 主要的区别在于日志收集阶段所使用的工具,前者使用 Logstash,后者使用 Filebeat 或 Fluentd。选择 ELK 还是 EFK,通常取决于具体应用场景的需求、资源预算、现有技术栈以及对日志处理复杂度的要求。随着技术的发展,业界越来越多地倾向于采用 EFK 方案,特别是在容器云环境中,以适应现代分布式系统对日志管理的轻量化、高性能要求。同时,也有其他日志管理解决方案如 Grafana Loki 等可供考虑。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
1月前
|
Java 测试技术 微服务
最新技术栈下 Java 面试高频技术点实操指南详解
本指南结合最新Java技术趋势,涵盖微服务(Spring Cloud Alibaba)、响应式编程(Spring WebFlux)、容器化部署(Docker+Kubernetes)、函数式编程、性能优化及测试等核心领域。通过具体实现步骤与示例代码,深入讲解服务注册发现、配置中心、熔断限流、响应式数据库访问、JVM调优等内容。适合备战Java面试,提升实操能力,助力技术进阶。资源链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)
105 25
|
29天前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
93 3
|
29天前
|
存储 安全 Java
2025 最新史上最全 Java 面试题独家整理带详细答案及解析
本文从Java基础、面向对象、多线程与并发等方面详细解析常见面试题及答案,并结合实际应用帮助理解。内容涵盖基本数据类型、自动装箱拆箱、String类区别,面向对象三大特性(封装、继承、多态),线程创建与安全问题解决方法,以及集合框架如ArrayList与LinkedList的对比和HashMap工作原理。适合准备面试或深入学习Java的开发者参考。附代码获取链接:[点此下载](https://pan.quark.cn/s/14fcf913bae6)。
201 48
|
1月前
|
存储 安全 Java
2025 年一线互联网大厂最新高质量 Java 面试八股文整理及答案汇总
本文整理了一线互联网大厂最新的高质量Java面试八股文及其答案,涵盖Java基础、集合框架与多线程三大核心模块。内容包括面向对象与面向过程的区别、`equals`与`==`的差异、`final`和`static`的用法、集合类如`ArrayList`与`LinkedList`的对比、`HashMap`的工作原理及其与`Hashtable`的区别,以及多线程中的线程创建方式、生命周期、上下文切换和死锁等知识点。通过系统化的梳理与解析,帮助读者高效备考Java面试,掌握核心技术要点。资源可从文末链接下载。
248 40
|
26天前
|
缓存 NoSQL Java
Java Redis 面试题集锦 常见高频面试题目及解析
本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
85 6
|
28天前
|
NoSQL Java 微服务
2025 年最新 Java 面试从基础到微服务实战指南全解析
《Java面试实战指南:高并发与微服务架构解析》 本文针对Java开发者提供2025版面试技术要点,涵盖高并发电商系统设计、微服务架构实现及性能优化方案。核心内容包括:1)基于Spring Cloud和云原生技术的系统架构设计;2)JWT认证、Seata分布式事务等核心模块代码实现;3)数据库查询优化与高并发处理方案,响应时间从500ms优化至80ms;4)微服务调用可靠性保障方案。文章通过实战案例展现Java最新技术栈(Java 17/Spring Boot 3.2)的应用.
98 9
|
1月前
|
设计模式 安全 Java
Java 基础知识面试题全解析之技术方案与应用实例详解
本内容结合Java 8+新特性与实际场景,涵盖函数式编程、Stream API、模块化、并发工具等技术。通过Lambda表达式、Stream集合操作、Optional空值处理、CompletableFuture异步编程等完整示例代码,助你掌握现代Java应用开发。附面试题解析与技术方案,提升实战能力。代码示例涵盖计算器、员工信息统计、用户查询、模块化系统设计等,助你轻松应对技术挑战。
64 9
|
1月前
|
缓存 Java 索引
2025 年 Java 面试必备最常见 200 + 面试题及答案解析
这是一份针对Java面试的综合技术方案与应用实例文档,涵盖Java基础(JDK/JRE、字符串、IO流)、容器(ArrayList/LinkedList、HashMap)、多线程(线程创建、同步、线程池)、数据库(MySQL索引、Redis缓存穿透)及Spring框架(IOC容器、热部署)等核心模块。通过详细解析常见面试题,帮助读者深入理解并掌握Java核心技术,为应对面试提供全面指导。此外,还涉及反射、设计模式、JVM调优等进阶内容,助力开发者全面提升技能。代码示例可从提供的链接下载。
139 6
|
29天前
|
存储 缓存 安全
Java 集合篇面试题全面总结及答案解析
本文总结了Java集合框架的核心概念、常见集合类的特性与应用场景,以及开发中可能遇到的问题与解决方案。内容涵盖集合框架的基础接口(如Collection、Set、List、Map)、泛型的优点、线程安全集合类(如ConcurrentHashMap、CopyOnWriteArrayList)、常见集合类的区别(如ArrayList与LinkedList、HashMap与HashTable)等。此外,还详细介绍了如何实现LRU缓存、FIFO队列、优先级队列及栈等数据结构,并提供了相关代码示例。通过本文,读者可以全面掌握Java集合相关的面试知识点及其实际应用技巧。
55 1
|
1月前
|
算法 安全 Java
2025 校招必看:Java 开发面试核心知识点深度解析及最新笔面试题汇总
本文针对2025校招Java开发面试,系统梳理了Java基础、集合框架、多线程并发、JVM等核心知识点,并附带最新笔面试题。内容涵盖封装、继承、多态、异常处理、集合类使用、线程同步机制、JVM内存模型及垃圾回收算法等。同时深入探讨Spring、数据库(MySQL索引优化、Redis持久化)、分布式系统(CAP理论、分布式事务)等相关知识。通过理论结合实例解析,帮助考生全面掌握面试要点,提升实战能力,为成功拿下Offer奠定坚实基础。
155 2