当前位置: 首页 > news >正文

大数据研发工程师面试

文章目录

        • 面试
          • 1.AUC,ROC,准确率与召回率都是怎么计算的?
          • 2.数据清洗是如何清洗的,要做哪些清洗的工作?
          • 3.什么是数据的完整性?
          • 4.数仓是怎么设计的?
          • 5.linux查看进程的命令是什么,如何查看具体某一行的内容(查看第n至m行)?
          • 6.从浏览器输入网址到返回页面,中间发生了什么?
          • 7.具体说一下三次握手四次挥手?
          • 8.HTTP和HTTPS的区别?
          • 9.HDFS的理解?
          • 10.hadoop对put一个文件,集群发生了什么?
          • 11.hadoop数据如何存储?
          • 12.UDF函数有哪些,工作原理是什么?
          • 13.spark的driver和executor的理解
          • 14.python的垃圾回收机制
          • 15.深拷贝和浅拷贝是什么?
          • 16.如何复制一个python对象?
        • 笔试题:
          • 一个时间复杂度小于n^n的排序算法

面试
1.AUC,ROC,准确率与召回率都是怎么计算的?

AUC(Area Under Curve)是ROC(Receiver Operating Characteristic)曲线下的面积。它用于评估二分类模型在连续预测概率下的性能。计算方法是:对于正负样本对的预测概率,计算真阳性(TP)、假阴性(FN)、真阴性(TN)和假阳性(FP)的累积值,然后计算曲线下的面积。

ROC曲线是敏感性(真阳性率)与1-特异性(假阳性率)之间的关系。在ROC曲线中,横坐标为假阳性率,纵坐标为敏感性。AUC值的范围在0.5到1之间,其中0.5表示模型性能与随机猜测相同,1表示模型完全准确。

准确率(Accuracy)是指模型预测正确的样本占总样本数的比例。计算方法是:正确预测的样本数 / 总样本数

召回率(Recall)又称查全率,是指模型能正确预测为正类的样本占实际为正类的样本的比例。计算方法是:正确预测为正类的样本数 / 实际为正类的样本数

以下是Python代码示例,用于计算AUC、ROC曲线、准确率和召回率:

import numpy as npdef compute_auc(y_true, y_pred):fpr, tpr, _ = roc_curve(y_true, y_pred)return auc(fpr, tpr)def compute_roc_curve(y_true, y_pred):fpr, tpr, _ = roc_curve(y_true, y_pred)return fpr, tprdef compute_accuracy(y_true, y_pred):return np.mean(y_true == np.argmax(y_pred, axis=1))def compute_recall(y_true, y_pred):y_pred = np.argmax(y_pred, axis=1)return np.mean(np.in1d(y_true, y_pred))# 示例
y_true = np.random.randint(0, 2, size=(100,))
y_pred = np.random.rand(100)auc = compute_auc(y_true, y_pred)
fpr, tpr = compute_roc_curve(y_true, y_pred)
accuracy = compute_accuracy(y_true, y_pred)
recall = compute_recall(y_true, y_pred)print("AUC:", auc)
print("ROC曲线:", fpr, tpr)
print("准确率:", accuracy)
print("召回率:", recall)

注意:这个示例仅适用于二分类问题。对于多分类问题,需要先将预测概率转换为二分类问题,然后再计算AUC、ROC曲线、准确率和召回率。

2.数据清洗是如何清洗的,要做哪些清洗的工作?

数据清洗主要包括以下几个步骤:

  1. 删除重复数据:检查数据中是否存在重复记录,如有,则删除其中之一。

  2. 处理缺失值:对于缺失值,可以采用填充、删除或根据上下文进行推测等方法。

  3. 数据类型转换:将数据中不一致的数据类型进行转换,使其统一。

  4. 字符串处理:清理数据中的异常字符、换行符等,使字符串格式统一。

  5. 数据规范化:对数据进行标准化、归一化等操作,使其符合统一标准。

  6. 数据合并:将分散在不同位置的相同数据进行合并。

  7. 数据分类:对数据进行分类,将相似的数据归为一类。

  8. 异常检测:识别数据中的异常值,并对其进行处理。

  9. 数据验证:检查数据是否符合预期的规则,如唯一性、合法性等。

  10. 数据简化:删除或合并冗余数据,减少数据量。

具体清洗方法可根据实际数据特点和需求进行选择和调整。

3.什么是数据的完整性?

数据的完整性是指数据在存储、处理和传输过程中保持完整、准确和可靠的程度。确保数据完整性是数据库管理、数据处理和信息安全的重要任务,它可以防止数据丢失、篡改或损坏。数据的完整性有助于保证数据的正确性和可靠性,从而为企业的正常运营和决策提供准确的信息支持。

4.数仓是怎么设计的?

数仓的设计过程可以分为以下步骤:

  1. 分析业务需求,确定数据仓库主题。
  2. 构建逻辑模型。
  3. 数据仓库技术选型。
  4. 逻辑模型转换为物理模型。
  5. 数据源接入。
  6. 数据存储清洗和转换。
  7. 开发数据仓库的分析应用。
  8. 数据仓库管理和维护。

此外,数仓模型设计时需要考虑到数据仓库的分层设计。数据仓库的分层设计可以提高数据处理效率、简化数据处理流程、提高系统的可维护性、可重用性和可扩展性。通常,数据仓库可以分为以下几层:

  1. ODS层:操作型数据存储,主要存储与源系统基本保持一致的增量或全量数据,起到备份数据的作用,同时可以创建分区表,防止后续的全表扫描。
  2. CDM层:通用数据模型,又称为数据中间层,包含DWD、DWS、DIM层。DWD层是数据仓库明细层数据,对ODS层数据进行清洗转化,以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细事实表。

总之,数仓的设计需要结合业务需求和技术实现,确保数据仓库的可用性、可扩展性和高效性。

5.linux查看进程的命令是什么,如何查看具体某一行的内容(查看第n至m行)?

Linux 查看进程的命令是:ps

查看具体某一行的内容(查看第 n 至 m 行),可以使用以下命令:

ps aux | grep 关键词 | awk 'NR>=n && NR<=m'

nm 替换为具体的行号,关键词 替换为需要查找的关键词。执行此命令后,会显示第 n 至 m 行的内容。

6.从浏览器输入网址到返回页面,中间发生了什么?

浏览器输入网址后,中间发生的过程如下:

  1. DNS 解析:浏览器首先会将网址中的域名发送给本地 DNS 服务器,请求将其解析为 IP 地址。本地 DNS 服务器会从缓存或远程 DNS 服务器获取对应的 IP 地址,并返回给浏览器。
  2. 建立 TCP 连接:浏览器根据获取到的 IP 地址,与目标服务器建立 TCP 连接。这个过程涉及到三次握手,以确保双方建立的连接稳定。
  3. 发送 HTTP 请求:TCP 连接建立后,浏览器向服务器发送 HTTP 请求。请求中包含请求方法(如 GET、POST 等)、请求路径和 HTTP 版本等信息。
  4. 服务器响应:服务器接收到浏览器发送的请求后,根据请求内容生成 HTTP 响应。响应中包含响应状态码、响应头和响应体等信息。
  5. 传输数据:浏览器与服务器之间通过 TCP 连接传输数据。浏览器接收服务器返回的 HTTP 响应,并解析响应体中的 HTML、CSS、JavaScript 等资源。
  6. 渲染页面:浏览器根据解析后的 HTML 代码,构建文档对象模型(DOM),然后根据 CSS 样式和 JavaScript 代码渲染页面。最终将渲染好的页面呈现给用户。
  7. 关闭连接:浏览器和服务器完成数据传输后,关闭 TCP 连接。
7.具体说一下三次握手四次挥手?

三次握手:

  1. 客户端向服务器发送一个带有SYN(同步)标志位的数据包,请求建立连接。
  2. 服务器收到请求后,返回一个带有SYN和ACK(确认)标志位的数据包,表示同意连接。
  3. 客户端再发送一个带有ACK标志位的数据包给服务器,确认连接已建立。

四次挥手:

  1. 服务器向客户端发送一个带有FIN(结束)标志位的数据包,表示要关闭连接。
  2. 客户端收到服务器的通知后,返回一个带有ACK标志位的确认数据包。
  3. 客户端向服务器发送一个带有FIN标志位的数据包,表示同意关闭连接。
  4. 服务器收到客户端的确认后,发送一个带有ACK标志位的数据包给客户端,表示确认连接已关闭。

以上是TCP协议中的三次握手和四次挥手的过程。

8.HTTP和HTTPS的区别?

HTTP和HTTPS的区别主要在于安全性加密性。HTTP是超文本传输协议,是一种基于TCP/IP协议的无状态协议,不提供数据加密和身份验证功能。而HTTPS是基于HTTP协议,但使用安全套接层协议(SSL)或传输层安全协议(TLS)来加密数据并验证服务器身份。HTTPS比HTTP更安全,可以防止数据在传输过程中被窃取或篡改。

9.HDFS的理解?

HDFS(Hadoop Distributed File System)是Apache Hadoop生态系统中的一种分布式文件系统。它被设计用于在大规模集群上存储和处理大数据。

HDFS的设计目标之一是容错性,它通过将数据分散存储在集群中的多个节点上来实现高可靠性。数据被分割成块,并在集群中的多个节点上进行复制存储,以防止数据丢失。这种冗余存储的方式使得HDFS能够容忍节点故障,并自动进行数据恢复。

HDFS的另一个重要特性是高吞吐量。它通过将大文件划分为多个块,并将这些块并行地存储在集群中的多个节点上,从而实现了高效的数据读写操作。同时,HDFS还提供了数据本地性优化机制,即将计算任务调度到存储有所需数据块的节点上,以减少数据传输的开销。

HDFS还具有可扩展性的特点。它可以在集群中添加更多的节点来扩展存储容量和处理能力,并且可以自动进行数据的重新平衡,以保持数据的均衡分布。

总之,HDFS是一个分布式文件系统,它提供了高可靠性、高吞吐量和可扩展性的特性,使得它成为处理大规模数据的理想选择。

10.hadoop对put一个文件,集群发生了什么?

当在Hadoop集群中使用hadoop put命令上传一个文件时,以下事情会发生:

  1. 客户端将文件分割成多个数据块(根据文件大小和块大小确定)。
  2. 客户端将每个数据块加密并压缩。
  3. 客户端将加密后的数据块发送到集群中的一个节点(根据NameNode的调度)。
  4. 客户端同时发送文件的元数据(如文件名、长度等)到NameNode。
  5. NameNode接收到元数据后,将其存储在分布式文件系统(HDFS)的元数据文件中。
  6. NameNode根据数据块的哈希值将数据块映射到相应的DataNode。
  7. DataNode接收并存储数据块。

在这个过程中,Hadoop采用了分布式处理和数据冗余存储来提高数据可靠性和性能。

11.hadoop数据如何存储?

Hadoop数据主要通过分布式文件系统(HDFS)进行存储。HDFS是一个高度可扩展、容错能力强的分布式存储系统,适用于大规模数据存储。数据被分成多个块,分布在多个数据节点上,并采用冗余备份策略以确保数据可靠性。

存储过程简要如下:

  1. 将数据分成多个块。
  2. 将块分配到各个数据节点。
  3. 在数据节点上存储块数据。
  4. 每个数据节点保存数据的元数据(如文件名、块大小等)。
  5. 配置NameNode(主节点)来维护整个集群的文件系统 namespace 和元数据。

这种分布式存储方式使得Hadoop具有良好的扩展性和容错性,可以处理PB级别的数据。同时,Hadoop还支持其他存储方案,如HBase(基于列的分布式数据库)和MapReduce(分布式计算框架)。

12.UDF函数有哪些,工作原理是什么?

UDF(User-Defined Function)函数,即用户自定义函数,是在编程语言中由用户自己编写的一类函数。它们允许你在程序中执行特定的任务,根据输入的参数生成输出。

UDF函数的工作原理:

  1. 定义:首先,你需要定义一个函数,包括函数名、输入参数(可选)和返回值类型。
  2. 实现:接下来,编写函数体,即函数内部执行的代码。这段代码根据输入的参数(如果有)进行计算,并返回一个结果。
  3. 调用:在程序中,你可以通过调用 UDF 函数来执行自定义的任务。调用时,可能需要传递输入参数(如果有),然后函数会返回一个结果。
  4. 应用:UDF 函数可以应用于各种场景,如数据处理、算法实现、业务逻辑等。

不同编程语言中的UDF函数实现细节可能有所不同,但总体原理和工作方式类似。例如,在Python中,你可以使用以下方式定义和调用一个UDF函数:

def add(a, b):return a + bresult = add(1, 2)
print(result)  # 输出:3

在Java中,你可以这样做:

public class Main {public static void main(String[] args) {int sum = add(1, 2);System.out.println(sum);  // 输出:3}public static int add(int a, int b) {return a + b;}
}

总之,UDF函数是编程过程中非常有用的一种工具,可以帮助你实现自定义的任务和逻辑。

13.spark的driver和executor的理解
  1. Spark的Driver:驱动程序,负责整个 Spark 应用的协调和调度。它主要包括两个部分:应用的主要入口点(如 main 方法)和集群管理器(如 YARN,Mesos 或 Standalone)。Driver 负责创建 Spark 上下文(SparkConf 和 SparkContext),启动集群管理器,并将其分配给 Executor。此外,Driver 还负责监控应用的进度和资源使用情况。

  2. Spark的Executor:执行器,负责在集群中的各个节点上执行任务。Executor 由 Driver 启动,并为每个任务分配内存和 CPU 资源。Executor 运行在一个独立的 JVM 进程中,可以执行各种类型的任务,如计算任务(使用 Spark 核心 API)或行动任务(如数据处理和聚合操作)。Executor 还负责将任务的结果返回给 Driver。

总结:Driver 和 Executor 是 Spark 应用的两个关键组件,Driver 负责协调和调度,Executor 负责执行任务。它们共同协作,使 Spark 能够在集群中高效地处理大规模数据。

14.python的垃圾回收机制

Python的垃圾回收机制是通过引用计数和循环引用检测来实现的。

引用计数是一种简单而高效的垃圾回收机制。每个对象都有一个引用计数,当对象被引用时,引用计数加1;当对象不再被引用时,引用计数减1。当引用计数为0时,对象就会被销毁。

循环引用是指两个或多个对象之间相互引用形成的环状结构。Python的垃圾回收机制还会检测和处理循环引用,通过使用标记-清除算法来回收这些无法通过引用计数检测到的垃圾对象。

总结起来,Python的垃圾回收机制主要依靠引用计数和循环引用检测来自动回收不再被引用的对象,以减少内存的占用。

15.深拷贝和浅拷贝是什么?

深拷贝浅拷贝是对象拷贝的两种方式。

浅拷贝是指创建一个新对象,然后将原对象的成员变量复制到新对象中。如果成员变量是引用类型,那么复制的是引用,而不是引用指向的对象。这种方式的缺点是,如果原对象和拷贝对象共享引用类型的成员变量,那么对其中一个对象的修改会影响另一个对象。

深拷贝是指不仅创建一个新对象,而且将原对象的成员变量以及成员变量指向的对象(递归地)都复制到新对象中。这种方式的优点是,原对象和拷贝对象是完全独立的,对其中一个对象的修改不会影响另一个对象。

总结:浅拷贝是复制原对象的成员变量,深拷贝是复制原对象及其成员变量指向的对象(递归地)。深拷贝比浅拷贝更耗时,但能确保原对象和拷贝对象之间的独立性。

16.如何复制一个python对象?

在Python中,可以使用copy模块的copy()deepcopy()方法来复制对象。copy()方法仅复制对象的顶层结构,而deepcopy()方法则会递归复制整个对象。

例如,如果你有一个名为obj的对象,可以使用以下代码复制它:

import copy# 使用 copy() 方法
copied_obj = copy.copy(obj)# 或者使用 deepcopy() 方法
deep_copied_obj = copy.deepcopy(obj)

注意:copy()方法仅复制对象本身,而不复制对象中包含的其他对象。如果需要复制整个对象图,建议使用deepcopy()方法。

笔试题:
一个时间复杂度小于n^n的排序算法

快速排序(Quick Sort)。这是一种基于分治思想的排序算法,平均时间复杂度为O(n log n)。

以下是快速排序的Python实现:

def quick_sort(arr):if len(arr) <= 1:return arrpivot = arr[len(arr) // 2]left = [x for x in arr if x < pivot]middle = [x for x in arr if x == pivot]right = [x for x in arr if x > pivot]return quick_sort(left) + middle + quick_sort(right)# 示例
arr = [3, 6, 8, 10, 1, 2, 1]
print(quick_sort(arr))

执行结果:

[1, 1, 2, 3, 6, 8, 10]

快速排序在最好情况下(输入已经是升序或降序)的时间复杂度为O(n)。但请注意,在最坏情况下(输入是降序或升序),时间复杂度会上升到O(n^2)。不过,这种情况的概率非常低,因此在实际应用中,快速排序仍然具有较好的性能。

相关文章:

大数据研发工程师面试

文章目录 面试1.AUC,ROC,准确率与召回率都是怎么计算的?2.数据清洗是如何清洗的&#xff0c;要做哪些清洗的工作&#xff1f;3.什么是数据的完整性?4.数仓是怎么设计的?5.linux查看进程的命令是什么&#xff0c;如何查看具体某一行的内容&#xff08;查看第n至m行&#xff0…...

【星海出品】云存储 ceph

https://ceph.com/en/ ceph组件介绍 Monitor 一个Ceph集群需要多个Monitor组成的小集群&#xff0c;它们通过Paxos同步数据&#xff0c;用来保存OSD的元数据。 OSD OSD全称Object Storage Device&#xff0c;也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有…...

[nlp] grad norm先降后升再降

grad norm先降后升再降正常嘛 在深度学习中&#xff0c;梯度的范数通常被用来衡量模型参数的更新程度&#xff0c;也就是模型的学习进度。在训练初期&#xff0c;由于模型参数的初始值比较随机&#xff0c;梯度的范数可能会比较大&#xff0c;这是正常现象。随着模型的训练&…...

云积天赫AI全域营销系统,为品牌营销注入新活力

AIGC&#xff08;生成式人工智能&#xff09;的出现&#xff0c;标志着人工智能已经进入了一个全新的时代&#xff0c;它与传统的人工智能不同&#xff0c;可以更好地理解品牌的需求&#xff0c;并提供更精准的答案。目前&#xff0c;AIGC已经深入到各个领域&#xff0c;其中营…...

Arthas在线修改Java代码

Arthas在线修改Java代码 jad --source-only com.example.demo.arthas.user.UserController > /tmp/UserController.javamc /tmp/UserController.java -d /tmpretransform /tmp/com/example/demo/arthas/user/UserController.class参考链接&#xff1a; arthas retransform...

mapbox支持的坐标系

mapbox 中只支持 web墨卡托坐标系&#xff0c;不支持经纬度坐标系。 栅格数据 基于经纬度坐标系的栅格数据没有办法渲染。矢量数据 矢量数据代码中会自动转换成墨卡托投影坐标系再渲染。 输出坐标时候还是经纬度。...

腾讯云新客户优惠服务器88元/年,540元/3年,另有5年优惠服务器

在选择云服务器时&#xff0c;首先需要考虑的是性能与配置是否与自己的需求相匹配。对于小型网站或者个人博客&#xff0c;轻量应用服务器是一个不错的选择。腾讯云双十一活动中&#xff0c;2核2G轻量应用服务器的活动优惠价为88元/年&#xff0c;2核4G轻量应用服务器的活动优惠…...

伦敦银和美白银的关系

与黄金相似&#xff0c;世界上白银交易的基础就是伦敦白银市场&#xff0c;人们利用设立在伦敦的专们负责清算银行&#xff08;与黄金的清算银行相同&#xff09;所开设的账户进行白银保证金交易。在伦敦市场&#xff0c;以美元清算的伦敦白银价格&#xff0c;是以美元买进1金衡…...

Matplotlib的使用方法

Matplotlib是Python最著名的绘图库&#xff0c;它提供了一整套和Matlab相似的命令API&#xff0c;十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件&#xff0c;嵌入到GUI应用程序中。Matplotlib能够创建多数类型的图表&#xff0c;如条形图、散点图、条形图、饼图…...

【入门篇】1.7 Redis 之 codis 入门介绍

文章目录 1. 简介2. Codis的安装与配置下载编译源码安装1. 安装 Go 运行环境2. 设置编译环境3. 下载 Codis 源代码4. 编译 Codis 源代码 Docker 部署 3. Codis的架构Codis的架构图和组件Codis的工作流程 4. Codis的核心特性自动数据分片数据迁移高可用性全面支持Redis命令分布式…...

【JavaEE】Servlet API 详解(HttpServlet类)

一、HttpServlet 写 Servlet 代码的时候, 首先第一步就是先创建类, 继承自HttpServlet, 并重写其中的某些方法 1.1 HttpServlet核心方法 1.2 Servlet生命周期 这些方法的调用时机, 就称为 “Servlet 生命周期”. (也就是描述了一个 Servlet 实例从生到死的过程) 1.3 处理G…...

微软宣布计划在 Windows 10 版本 22H2 中引入 AI 助手 Copilot

根据之前的传言&#xff0c;微软宣布计划在 Windows 10 版本 22H2 中引入 AI 助手 Copilot。Copilot 将包含在 Windows 10 家庭版和专业版中。该更新的发布日期尚未公布&#xff0c;但预计将在不久的将来发布。 在一份新闻稿中&#xff0c;微软表示在向 Windows 11 用户提供 Co…...

ubuntu 怎么安装图形界面

ubuntu 安装图形界面的方法&#xff0c;可以通过以下步骤操作来实现&#xff1a; 1、确认版本首先登录一下服务纯缺器ubuntu&#xff0c;查看系统版本。然后用root账号登录&#xff0c;如下图所示&#xff1a; 2、更新apt-get首先要先更新一下apt-get源&#xff0c;输入apt-g…...

【LabVIEW学习】2.for,while,事件

1.for实例&#xff08;随机输出数据100次&#xff09; 结果&#xff1a; 2.while实例&#xff08;i<50灯亮&#xff0c;大于之后灯灭&#xff09; 结果&#xff1a;&#xff08;先亮后灭&#xff09; 3.事件结构的实例&#xff08;点击按钮数据增加&#xff09;事件监听应该…...

JVM bash:jmap:未找到命令 解决

如果我们在使用JVM的jmap命令时遇到了"bash: jmap: 未找到命令"的错误&#xff0c;这可能是因为jmap命令没有在系统的可执行路径中。 要解决这个问题&#xff0c;可以尝试以下几种方法&#xff1a; 1. 检查Java安装&#xff1a;确保您已正确安装了Java Development …...

基于单片机的温度控制器系统设计

**单片机设计介绍&#xff0c; 基于单片机的温度控制器系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的温度控制器系统是一种利用单片机来检测环境温度并控制温度的系统。它通常由以下几个部分组成&#xff…...

oracle数据库中job和dbms_job比较

oracle中job和dbms_job比较 一、概述 Oralce中的任务有2种&#xff1a;Job和Dbms_job&#xff0c;两者的区别有&#xff1a; ①、Job是通过调用dbms_scheduler.create_job包创建的&#xff0c;Dbms_job则是通过调用dbms_job.submit包创建的。 ②、两种任务的查询视图都分为db…...

# Python基础:输入输出详解-读写文件(还需完善)

open() 返回一个 file object &#xff0c;最常使用的是两个位置参数和一个关键字参数&#xff1a;open(filename, mode, encodingNone) f open(workfile, w, encoding"utf-8")第一个实参是文件名字符串。第二个实参是包含描述文件使用方式字符的字符串。mode 的值…...

【Spring】 Spring中的IoC(控制反转)

以往在定义业务层实现时&#xff0c;在指定具体地Dao时候需要具体地定义出其实现&#xff1a; public class BookServiceImpl implements BookService{private BookDao bookDao new BookDaoImpl();public void save(){bookDao.save()} }public class BookDaoImpl implements …...

playwright在vscode+jupyter中出现NotImplementedError问题

近期因个人需要接触playwright&#xff0c;由于playwright新接触&#xff0c;想用jupyter进行API测试学习。刚开始使用sync_playwright&#xff0c;在playwright的Conda运行环境中&#xff0c;以console模式和单文件直接运行模式&#xff0c;都能正常运行。但是进入jupyter中后…...

js 实现文件上传

input 类型为file <inputtype"file"class"absolute "change"fileUpload"/> const fileUpload (e: any) > {const formData new FormData(); // form-data数据类型formData.append(file, e.target.files[0]);// 获取文件信息&#xff…...

5. Spring源码篇之BeanDefinition

简介 在spring中BeanDefinition是一个接口&#xff0c;下面也有很多的实现类 大致如下 BeanDefinitionAbstractBeanDefinitionRootBeanDefinition 最终每个BeanDefinition都是一个 RootBeanDefinitionChildBeanDefinition 现在不用了废弃&#xff…...

kotlin--2.面向对象

目录 一.概念 Kotlin 类/对象 二.创建类 1.创建类 2.构造函数 2.getter 和 setter 实例 3.主构造器 实例 4.次构造函数 实例 5.抽象类 6.嵌套类 7.内部类 8.匿名内部类 9.类的修饰符 实例 三.继承 1.概念 2.构造函数 (1)子类有主构造函数 (2)子类没有主构…...

Linux安装RabbitMQ详细教程

一、下载安装包 下载erlang-21.3-1.el7.x86_64.rpm、rabbitmq-server-3.8.8-1.el7.noarch.rpm 二、安装过程 1、解压erlang-21.3-1.el7.x86_64.rpm rpm -ivh erlang-21.3-1.el7.x86_64.rpm2、安装erlang yum install -y erlang3、查看erlang版本号 erl -v4、安装socat …...

rviz是如何获取图像里选择的点云的3D坐标的

以前以为rviz是用OpenGL渲染绘图&#xff0c;那么获取图像里像素点对应的真实3D坐标是采用的OpenGL里提供的API实现的&#xff0c;结果一看代码还真不是这样&#xff0c;rviz也就渲染用了OpenGL&#xff0c;其他都是自己实现的&#xff0c;图像界面的实现完全是遵循MVC设计模式…...

响应体和状态码

后端响应体和状态码设计 主流技术&#xff1a;响应体 和 状态码结合使用 响应体&#xff1a;数据 响应 给前端的 格式 1、为什么要设计统一响应体? 1、系统默认提供许多的状态码&#xff0c;但HTTP的状态码数量有限。 通过修改响应返回的JSON数据&#xff0c;更好的表达业务中…...

CNN进展:AlexNet、VGGNet、ResNet 和 Inception

一、说明 对于初学者来说&#xff0c;神经网络进展的历程有无概念&#xff1f;该文综合叙述了深度神经网络的革命性突破&#xff0c;从AlexNet开始&#xff0c;然后深度VGG的改进&#xff0c;然后是残差网络ResNet和 Inception&#xff0c;如果能讲出各种特色改进点的和改进理由…...

数据的存储--MongoDB文档存储

MongoDB文档存储 NoSQL&#xff0c;全称为Not Only SQL&#xff0c;意为不仅仅是SQL&#xff0c;泛指非关系型数据库。NoSQL是基于键值对的&#xff0c;而且不需要经过SQL层的解析&#xff0c;数据之间没有耦合性&#xff0c;性能非常高。 非关系行数据库又可细分如下。 键值存…...

Notepad++ 通过HexEditor插件查看.hprof文件、heap dump文件的堆转储数据

文章目录 需求场景插件安装查看notepad的版本&#xff0c;看看是32位的还是64位的下载对应的版本解压导入插件打开notepad插件文件夹&#xff1a;Notepad安装目录新建一个HexEditor文件夹选中插件文件导入 重启notepad使用 需求场景 想要查看app内存的某个域的数据。 利用Andr…...

微服务学习 | Eureka注册中心

微服务远程调用 在order-service的OrderApplication中注册RestTemplate 在查询订单信息时&#xff0c;需要同时返回订单用户的信息&#xff0c;但是由于微服务的关系&#xff0c;用户信息需要在用户的微服务中去查询&#xff0c;故需要用到上面的RestTemplate来让订单的这个微…...