【腾讯云云上实验室】用向量数据库在金融信用数据库分析中的实战运用

news2024/11/27 12:41:32

一、前言

这篇文章将带领读者探索数据库的多样化解决方案及其演进历程,特别关注向量数据库的重要性和在实际项目中的应用。

通过深入剖析腾讯云向量数据库及其在金融信用数据库分析中的实战运用,为读者提供全面而实用的指南,帮助他们理解、应用和掌握这一技术领域的关键要点。

二、数据库的分类种类

现代数据库发展呈现多样化趋势,从传统的关系型和NoSQL数据库到云数据库、云原生数据库和向量数据库,每种都针对特定需求提供定制化解决方案。随着技术不断进步,数据库领域持续创新,满足不断变化的需求。

2.1 演进中的数据库:多样化解决方案应对不断变化的需求

当谈到数据库时,我们可以看到不断的演变和创新。传统自建数据库常常是基于关系型数据库(如MySQL、PostgreSQL)或者NoSQL数据库(比如MongoDB、Cassandra)构建的。这些数据库早期主要用于存储结构化数据,并且在企业和应用程序中广泛使用。

随着云计算的兴起,云数据库应运而生,它们为用户提供了更灵活、可扩展和易管理的解决方案。云数据库包括各种服务,例如Amazon RDS、Google Cloud SQL和Azure Database,它们可以自动化管理和调整数据库的容量和性能,并且提供了高可用性和灾难恢复功能。

而云原生数据库则更专注于在云原生环境下构建和部署的数据库解决方案。这些数据库通常是容器化的,利用了云原生技术(如Kubernetes)来实现更高的弹性、可扩展性和可靠性。

另一个重要的趋势是向量数据库的兴起。这些数据库专注于高维度和复杂数据的处理,比如图像、文本和音频等数据。向量数据库(如Milvus、Faiss)采用向量索引技术,可以更高效地处理和查询大规模的向量数据,这在人工智能、机器学习和大数据分析领域有着广泛的应用。

2.2 什么是向量数据库

(需要更加完善一下,更具体一点)

向量数据库是一种专门用于处理高维度向量数据的数据库类型。它们设计用于存储、索引和高效查询包含向量信息的数据集。这些向量可能代表文本、图像、音频等非结构化或半结构化数据,也可能是从机器学习和深度学习模型中提取的特征。

向量数据库通常采用特定的向量索引结构和算法,以便高效地存储和检索向量数据。它们的设计目标是使得在高维空间中进行相似度搜索或者聚类等操作更加高效,并且能够应对大规模的向量数据集。

这些数据库在人工智能、推荐系统、图像识别、自然语言处理等领域有着广泛的应用。它们可以加速相似向量的快速搜索,从而支持诸如推荐算法、相似图片搜索、文本相似度匹配等应用。 Milvus 和 Faiss 是一些知名的向量数据库。

矢量数据库的重要性源于它们处理大规模高维数据集和执行快速相似性搜索的能力。传统的关系数据库由于结构不灵活且缺乏针对相似性搜索而定制的专门索引技术,因此不适合此类数据。

相比之下,矢量数据库采用一系列专门设计的索引结构和算法,旨在有效处理高维数据并实现快速的最近邻搜索。

2.3 为什么向量数据库如此重要呢?

首先,开发人员能够将生成的嵌入向量索引到向量数据库中。这一举措使得通过查询相似向量来找到相关资产成为可能。

此外,向量数据库提供了一种使嵌入模型高效运行的途径。它利用了复杂的查询语言,整合了资源管理、安全控制、可扩展性、容错能力以及高效信息检索等数据库功能,从而提升了应用程序开发的效率。

更重要的是,向量数据库对于开发人员创造独特的应用体验至关重要。举例来说,用户可以通过在智能手机上拍摄照片来搜索相似的图像,这得益于向量数据库的支持。

此外,开发人员能够利用其他类型的机器学习模型,从图像和扫描文档等内容中自动提取元数据。他们可以将这些元数据与向量一同编入索引,以实现对关键字和向量的混合搜索。而通过将语义理解纳入相关性排名中,也能够改善搜索结果。

举个例子,像ChatGPT这样的新模型属于生成式人工智能的创新范畴。这些模型不仅可以生成文本,还能够管理复杂的人类对话。有些模型甚至可以在多种模式下运行,比如有些模型可以根据用户描述的场景生成符合描述内容的图像。

然而,生成式模型容易造成幻觉,这可能会导致聊天机器人向用户传递错误信息。这时,向量数据库就可以弥补生成式人工智能模型的这一缺陷。它为生成式人工智能聊天机器人提供了外部知识库,确保它们提供的信息是可信赖的。

2.4 向量数据库是如何工作的?

我们都大致了解传统数据库是如何工作的——它们将字符串、数字和其他类型的标量数据存储在行和列中。然而,向量数据库则基于向量操作,因此它的优化和查询方式有着很大的不同。

在传统数据库中,通常我们会查询数据库中数值与我们查询条件完全匹配的行。而在向量数据库中,我们会应用相似度度量来寻找与我们查询条件最相似的向量。

向量数据库采用了一系列不同的算法,这些算法都参与了近似最近邻(ANN)搜索。这些算法通过哈希、量化或基于图的搜索来优化搜索过程。

这些算法被组装成一个流水线,能够快速准确地检索查询向量的邻居。由于向量数据库提供的是近似结果,我们需要权衡的主要是准确性和速度。结果越准确,查询速度就越慢。然而,一个良好的系统可以在几乎完美的准确性下提供超快速的搜索。

以下是向量数据库的常见流程:

向量数据库流程

  1. 索引: 向量数据库使用诸如 PQ、LSH 或 HNSW 等算法对向量进行索引。这一步将向量映射到数据结构,以加速搜索过程。
  2. 查询: 向量数据库将索引的查询向量与数据集中的索引向量进行比较,通过特定索引使用的相似性度量来确定最近的邻居。
  3. 后处理: 在某些情况下,向量数据库从数据集中检索最终的最近邻居,并对其进行后处理以返回最终结果。此步骤可能包括使用不同的相似性度量对最近邻居进行重新排序。

三、腾讯云向量数据库

3.1 什么是腾讯云向量数据库

腾讯云向量数据库(Tencent Cloud VectorDB)是一款全托管的自研企业级分布式数据库服务,专用于存储、检索、分析多维向量数据。该数据库支持多种索引类型和相似度计算方法,单索引支持10亿级向量规模,可支持百万级 QPS 及毫秒级查询延迟

腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、NLP 服务、计算机视觉、智能客服等 AI 领域。

3.2 腾讯云向量数据库优势

腾讯云向量数据库(Tencent Cloud VectorDB)作为一种专门存储和检索向量数据的服务提供给用户, 在高性能、高可用、大规模、低成本、简单易用、稳定可靠等方面体现出显著优势。

为了更加言简意赅,可以直接看我做成的脑图,更加直观的感受腾讯云向量数据库优势:

  • 高性能
    向量数据库单索引支持10亿级向量数据规模,可支持百万级 QPS 及毫秒级查询延迟。
  • 高可用
    向量数据库提供多副本高可用特性,其多可用区和三节点的架构可用性可达99.99%,显著提高系统的可靠性和容错性,确保数据库在面临节点故障和负载变化等挑战时仍能正常运行。
    大规模
    向量数据库架构支持水平扩展,单实例可支持百万级 QPS,轻松满足 AI 场景下的向量存储与检索需求。
  • 低成本
    只需在管理控制台按照指引,简单操作几个步骤,即可快速创建向量数据库实例,全流程平台托管,无需进行任何安装、部署和运维操作,有效减少机器成本、运维成本和人力成本开销。
  • 简单易用
    支持丰富的向量检索能力。用户通过 HTTP API 或者 SDK 接口即可快速操作数据库,开发效率高。同时控制台提供了完善的数据管理和监控能力,操作简单便捷。
  • 稳定可靠
    向量数据库源自腾讯集团自研的向量检索引擎 OLAMA,近40个业务线上稳定运行,日均处理的搜索请求高达千亿次,服务连续性、稳定性有保障。
  • Embedding 功能
    向量数据库的 Embedding 功能会自动将原始文本进行转换,生成对应的向量数据并插入数据库或进行相似性检索,实现了文本到向量数据的一体化转换,减少了用户的操作步骤,极大降低了使用门槛。

3.3 腾讯云向量数据库现阶段落地项目

当下,腾讯云向量数据库成为腾讯企业内外广泛采用的首选。内部各应用产品纷纷依托腾讯云向量数据库,实现高效数据管理与应用,助力业务发展。外部行业也不例外,大量产品纷纷选择腾讯云向量数据库,充分利用其优势。这种趋势呈现出愈发增长的态势,已经成为当今技术发展中的一大亮点,体现了腾讯云向量数据库在业界的卓越地位。

腾讯云向量数据库现阶段腾讯集团内部 40+业务接入, 1600亿次请求/天; 1000+外部用户接入。

四、腾讯云向量数据库实战(金融信用数据库分析)

金融分析案例(重要)

4.1 前期准备

4.1.1 采购腾讯云向量数据库

在腾讯云产品页面,搜索向量数据库或者直接点击新产品中的向量数据库。

进入到腾讯云向量数据库首页后,点击立即体验:

在进入创建实例页面中,依次选择配置的地域信息,规格等信息。

详细的信息参照下图,如果没有创建的一些配置,可以根据下图的提示进行提前创建。

注意:所申请的免费体验实例,最长使用时间为1个月,1个月到期后会被回收。

4.1.2 登陆腾讯云向量数据库

根据自身情况,开启外网访问权限,如果是生产环境不建议开启,只需要自己使用内网即可,本文为了测试演示,开启了外网访问权限。

开启外网访问权限后,点击实例ID进入详情页面,如下图,点击登录按钮。

进入到向量数据库登录界面,如图需要账号和密码账号默认是root,密码是向量数据库配置(上图)中的密钥

4.1.3 腾讯云向量数据库 SDK 准备

我们以 Python 环境为案例,执行如下命令,可直接安装最新版本。

pip install tcvectordb

执行如下图所示:

4.2 案例数据库开发流程

4.2.1 创建数据库

使用如下的代码进行创建数据库:

import tcvectordb
from tcvectordb.model.enum import FieldType, IndexType, MetricType, ReadConsistency

# 创建数据库连接对象
client = tcvectordb.VectorDBClient(url='http://lb-*******.ap-guangzhou.tencentclb.com:50000', username='root', key='G283v2GaQRJG3vk******', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)

# 创建数据库
db = client.create_database(database_name='t_vectordb_demo_01')

print(db.database_name)

4.2.2 创建集合

# 第一步,设计索引
index = Index(
            FilterIndex(name='id', field_type=FieldType.String, index_type=IndexType.PRIMARY_KEY),
            VectorIndex(name='vector', dimension=768, index_type=IndexType.HNSW,
              metric_type=MetricType.COSINE, params=HNSWParams(m=16, efconstruction=200)),

)

ebd = Embedding(vector_field='vector', field='text', model=EmbeddingModel.BGE_BASE_ZH)

# 第二步:创建 Collection
coll = db.create_collection(
            name='loan_data_analysis',
            shard=1,
            replicas=0,
            description='this is a collection of test embedding',
            embedding=ebd,
            index=index
        )
print(vars(coll))

4.2.3 导入数据

import tcvectordb
from tcvectordb.model.enum import FieldType, IndexType, MetricType, ReadConsistency
from tcvectordb.model.enum import FieldType, IndexType, MetricType, EmbeddingModel
from tcvectordb.model.index import Index, VectorIndex, FilterIndex, HNSWParams
from tcvectordb.model.collection import Embedding, UpdateQuery
from tcvectordb.model.enum import FieldType, IndexType, MetricType, ReadConsistency
from tcvectordb.model.document import Document, Filter, SearchParams

# # 创建数据库连接对象
client = tcvectordb.VectorDBClient(url='http://lb-******.clb.ap-guangzhou.tencentclb.com:50000', username='root', key='G283v2******', read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY, timeout=30)


# 指定写入原始文本的数据库与集合
db = client.database('t_vectordb_demo_01')
coll = db.collection('loan_data_analysis')


# 写入数据,可能存在一定延迟
# 1. 支持动态 Schema,除了 id、text 字段必须写入,可以写入其他任意字段,text 字段为创建集合时,设置的文本字段名
# 2. upsert 会执行覆盖写,若文档id已存在,则新数据会直接覆盖原有数据(删除原有数据,再插入新数据)
# 3. 参数 build_index 为 True,指写入数据同时重新创建索引。
res = coll.upsert(
    documents=[
        Document(
            id='1077501',
            text="1077501:10+ years",
            author='RENT',
            bookName='5000',
            page=36,
            funded_amnt=5000,
            funded_amnt_inv=4975,
            int_rate=10.65,
            installment=162.87,
            grade='B',
            sub_grade='B2',
            emp_title='',
            emp_length='10+ years',
            home_ownership='RENT'
        ),
        Document(
            id='1077430',
            text="1314167:< 1 year",
            author='RENT',
            bookName='2500',
            page=60,
            funded_amnt=2500,
            funded_amnt_inv=2500,
            int_rate=15.27,
            installment=59.83,
            grade='C',
            sub_grade='C4',
            emp_title='Ryder',
            emp_length='< 1 year',
            home_ownership='RENT'
        )
    ],
    build_index=True
)
注意:
1. 支持动态 Schema,除了 id、text 字段必须写入,可以写入其他任意字段,text 字段为创建集合时,设置的文本字段名
2. upsert 会执行覆盖写,若文档id已存在,则新数据会直接覆盖原有数据(删除原有数据,再插入新数据)
3. 参数 build_index 为 True,指写入数据同时重新创建索引。

插入测试数据后,我们返回到腾讯云向量数据库中,查看数据如下图所示:

我们可以批量导入下面类似的数据库进入数据库

4.2.3 读取数据

读取数据我们使用的是query的方法功能

基于精确匹配的查询方式,query()用于精确查找与查询条件完全匹配的向量,具体支持如下功能。
支持根据主键 id(Document ID),搭配自定义的标量字段的 Filter 表达式一并检索。
支持指定查询起始位置 offset 和返回数量 limit,实现数据 SCAN 能力。

# Set filter
filter_param=Filter(Filter.In("text",["year", "years"]))


# query
doc_list = coll.query(document_ids=['1077501','1077430'], retrieve_vector=True, filter=filter_param, limit=2, offset=0, output_fields=['text','author'])


for doc in doc_list:
          print(doc)

取出的向量数据如下:

4.2.4 数据分析

将变量转换为其适当的数据类型

某些变量不是其适当的数据类型,需要进行预处理以转换为正确的格式。我们定义了一些函数来帮助自动化这个过程。用于将变量转换为其适当数据类型的函数如下所示。

# 将术语列转换为数字数据类型

def term_numeric(df, column):
    df[column] = pd.to_numeric(df[column].str.replace(' months', ''))
    
term_numeric(data, 'term')

#converting emp-length to numeric datatype
def emp_length_convert(df, column):
    df[column] = df[column].str.replace('\+ years', '')
    df[column] = df[column].str.replace('< 1 year', str(0))
    df[column] = df[column].str.replace(' years', '')
    df[column] = df[column].str.replace(' year', '')
    df[column] = pd.to_numeric(df[column])
    df[column].fillna(value = 0, inplace = True)
   

# 预处理日期列

def date_columns(df, column):
    # store current month
    today_date = pd.to_datetime('2020-08-01')
    # convert to datetime format
    df[column] = pd.to_datetime(df[column], format = "%b-%y")
    # calculate the difference in months and add to a new column
    df['mths_since_' + column] = round(pd.to_numeric((today_date - df[column]) / np.timedelta64(1, 'M')))
    # make any resulting -ve values to be equal to the max date
    df['mths_since_' + column] = df['mths_since_' + column].apply(lambda x: df['mths_since_' + column].max() if x < 0 else x)
    # drop the original date column
    df.drop(columns = [column], inplace = True)

目标列的预处理

我们数据集中的目标列是贷款状态,其中包含不同的唯一值。这些值将需要转换为二进制。即,对于不良借款人为0,对于良好借款人为1。在我们的案例中,不良借款人的定义是指在我们的目标列中属于以下情况的人员:已冲销,违约,逾期(31-120天),不符合信用政策的状态:已冲销。其余被分类为良好借款人。

# 基于loan_status列创建一个新列,这将是我们的目标变量
data['good_bad'] = np.where(data.loc[:, 'loan_status'].isin(['Charged Off', 'Default', 'Late (31-120 days)',
                                                                       'Does not meet the credit policy. Status:Charged Off']), 0, 1)
# Drop the original 'loan_status' column
data.drop(columns = ['loan_status'], inplace = True)

分析获取证据权重(WOE)和信息价值

信用风险模型通常需要是可解释和易于理解的。为了实现这一点,所有独立变量都必须是分类的。由于一些变量是连续的,我们将采用证据权重(Weight of Evidence)的概念。

证据权重将帮助我们将连续变量转换为分类特征。连续变量被分为不同区间,并基于它们的证据权重创建新的变量。此外,信息价值帮助我们确定哪个特征在预测中是有用的。下面列出了独立变量的信息价值。信息价值小于0.02的变量将不会被包含在模型中,因为它们没有预测能力

Information value of term is 0.035478
Information value of int_rate is 0.347724
Information value of grade is 0.281145
Information value of emp_length is 0.007174
Information value of home_ownership is 0.017952
Information value of annual_inc is 0.037998
Information value of verification_status is 0.033377
Information value of pymnt_plan is 0.000309
Information value of purpose is 0.028333
Information value of addr_state is 0.010291
Information value of dti is 0.041026
Information value of delinq_2yrs is 0.001039
Information value of inq_last_6mths is 0.040454
Information value of mths_since_last_delinq is 0.002487
Information value of open_acc is 0.004499
Information value of pub_rec is 0.000504
Information value of revol_util is 0.008858
Information value of initial_list_status is 0.011513
Information value of out_prncp is 0.703375
Information value of total_pymnt is 0.515794
Information value of total_rec_int is 0.011108
Information value of last_pymnt_amnt is 1.491828

我们训练集中目标列的类别标签存在不平衡,正如下面的条形图所示。使用这种不平衡的数据来训练我们的模型会导致其偏向于预测具有大多数标签的类别。为了防止这种情况,我使用了随机过采样来增加目标列中少数类别的观察数量。需要注意的是,这个过程仅在训练数据上执行。

从上述图中,我们可以清晰的看出:对于不良借款人为0,对于良好借款人为1的最终结果。

五、文末总结

这篇文章提供了对数据库分类和腾讯云向量数据库的深入了解。它探讨了向量数据库的重要性以及其在不断变化的需求下的应用。
通过介绍腾讯云向量数据库的优势和实际项目落地情况,文章展示了其在金融信用数据库分析中的实战应用。

这篇文章全面介绍了腾讯云向量数据库的重要性、工作原理以及在实际项目中的应用,为读者提供了深入了解和实际操作的指导。

六、推荐参考文献

AIGC 时代的数据管理 - 向量数据库,扫码即可阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1257271.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GitHub 信息动态统计:让你的 Readme 更具吸引力 | 开源日报 No.87

anuraghazra/github-readme-stats Stars: 59.4k License: MIT GitHub Readme Stats 是一个开源项目&#xff0c;它可以在 README 文件中动态生成 GitHub 统计数据。该项目的主要功能包括&#xff1a; GitHub 统计卡片&#xff1a;显示 stars、commits 和 pull requests 等公共…

2016年五一杯数学建模C题二孩政策问题解题全过程文档及程序

2016年五一杯数学建模 C题 二孩政策问题 原题再现 多年来实施的严、紧计划生育政策对控制人口增长起到关键作用。在优生优育政策的指引下&#xff0c;我国人口质量显著提高&#xff0c;但也带来了不利影响&#xff0c;生育率偏低、男女比例失衡、人口老龄化情况严重等问题。2…

数组与链表

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 除了HashMap&#xff0…

MATLAB中corrcoef函数用法

目录 语法 说明 示例 矩阵的随机列 两个随机变量 矩阵的 P 值 相关性边界 NaN 值 corrcoef函数的功能是返回数据的相关系数。 语法 R corrcoef(A) R corrcoef(A,B) [R,P] corrcoef(___) [R,P,RL,RU] corrcoef(___) ___ corrcoef(___,Name,Value) 说明 R corrc…

geemap学习笔记014:加载本地的tif文件

前言 Colab中似乎没法直接加载云盘中的数据&#xff0c;但是可以先上传到GEE中的assets中&#xff0c;再加载本地的数据。下面是以这个数据为例进行展示。 1 上传数据 首先将本地的tif数据上传到Asset中&#xff0c;得到独一的Image ID。 2 加载数据 使用ee.Image加载数据 …

【Web】PHP反序列化刷题记录

目录 ①[NISACTF 2022]babyserialize ②[NISACTF 2022]popchains ③[SWPUCTF 2022 新生赛]ez_ez_unserialize ④[GDOUCTF 2023]反方向的钟 再巩固下基础 ①[NISACTF 2022]babyserialize <?php include "waf.php"; class NISA{public $fun"show_me_fla…

python爬取招聘网站信息

废话不多说&#xff0c;直接上代码&#xff0c;开箱即用。该文件抓取的是智联招聘网站的招聘信息&#xff0c;可以根据需要设置输入搜索关键词和查找页数&#xff0c;就会得到结果&#xff0c;可以搜索到每个岗位的岗位名称、公司名称、学历要求、公司规模、福利待遇、行业、薪…

STL: 容器适配器stack 与 queue

目录 1.容器适配器 1.1 STL标准库中stack和queue的底层结构 1.2 deque的简单介绍(了解) 1.2.1 deque的原理介绍 1.2.2 deque的缺陷 1.2.3 为什么选择deque作为stack和queue的底层默认容器 2. stack的介绍和使用 2.1 stack的介绍 2.2 stack的使用 2.3 利用deque模拟实现…

一起学docker系列之十一使用 Docker 安装 Redis 并配置持久化存储

目录 前言1 基本安装步骤安装Redis镜像&#xff1a;查看已下载的Redis镜像&#xff1a;运行Redis容器&#xff1a;进入Redis容器&#xff1a;使用Redis CLI进行基本操作&#xff1a; 2 配置文件同步准备配置文件&#xff1a;修改Redis配置文件 /app/redis/redis.conf&#xff1…

【Java+SQL Server】前后端连接小白教程

目录 &#x1f4cb; 流程总览 ⛳️【SQL Server】数据库操作 1. 新建数据库text 2. 新建表 3. 编辑表 ⛳️【IntelliJ IDEA】操作 1. 导入jar包 2. 运行显示错误 &#x1f4cb; 流程总览 ⛳️【SQL Server】数据库操作 打开SQL Server数据库-->sa登录-->新建数据库…

如何处理枚举类型(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 上一篇我们通过编写MyB…

百面深度学习-自然语言处理

自然语言处理 神经机器翻译模型经历了哪些主要的结构变化&#xff1f;分别解决了哪些问题&#xff1f; 神经机器翻译&#xff08;Neural Machine Translation, NMT&#xff09;是一种使用深度学习技术来实现自动翻译的方法。自从提出以来&#xff0c;NMT模型经历了几个重要的…

Couchdb 命令执行漏洞复现 (CVE-2017-12636)

Couchdb 命令执行漏洞复现 &#xff08;CVE-2017-12636&#xff09; 1、下载couchdb.py 2、修改目标和反弹地址 3、Python3调用执行即可 couchdb.py文件下载地址: https://github.com/vulhub/vulhub/blob/master/couchdb/CVE-2017-12636/exp.py ‍ 在VULFocus上开启环境 …

指针(1)

指针基本概念&#xff1a; 1.指针变量是一个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块地址空间。 2.指针的大小固定是4/8个字节&#xff08;32位平台/64位平台&#xff09;。 3.指针有类型&#xff0c;指针的类型决定-整数的步长&#xff0c;以及解引用时的…

数据分析项目实战!Python分析员工为何离职

大家好&#xff0c;我是小F&#xff5e; 今天给大家介绍一个Python数据分析项目实战&#xff0c;不仅包含代码&#xff0c;还提供分析数据集。 员工流失或是员工离开公司的比率是公司关注的一个重要问题。它不仅会导致宝贵人才的流失&#xff0c;还会产生成本并破坏生产力。了解…

Nginx(资源压缩)

建立在动静分离的基础之上&#xff0c;如果一个静态资源的Size越小&#xff0c;那么自然传输速度会更快&#xff0c;同时也会更节省带宽&#xff0c;因此我们在部署项目时&#xff0c;也可以通过Nginx对于静态资源实现压缩传输&#xff0c;一方面可以节省带宽资源&#xff0c;第…

vim+xxd编辑十六进制的一个大坑:自动添加0x0a

问题描述 今天在做一个ctf题&#xff0c;它给了一个elf文件&#xff0c;我要做的事情是修复这个elf文件&#xff0c;最后执行它&#xff0c;这个可执行文件会计算它自身的md5作为这道题的flag。我把所有需要修复的地方都修复了&#xff0c;程序也能成功运行&#xff0c;但是fl…

打包SpringBoot 项目为本地应用

使用工具&#xff1a;exe4j、Inno Setup Compiler 步骤&#xff1a; 1&#xff0c;将dll包放入项目根路径下&#xff1b; 2&#xff0c;idea 使用Maven打jar包&#xff1b; 3&#xff0c;使用exe4j 工具进行打包&#xff1b; 打开工具首页不动&#xff08;直接 next&#xff…

论文阅读:C2VIR-SLAM: Centralized Collaborative Visual-Inertial-Range SLAM

前言 论文全程为C2VIR-SLAM: Centralized Collaborative Visual-Inertial-Range Simultaneous Localization and Mapping&#xff0c;是发表在MDPI drones&#xff08;二区&#xff0c;IF4.8&#xff09;上的一篇论文。这篇文章使用单目相机、惯性测量单元( IMU )和UWB设备作为…

【Amazon】创建Amazon EFS 文件系统并将其挂载到Amazon EC2实例

文章目录 1. Amazon EFS文件系统2. Amazon EFS文件系统工作原理图3. 创建Amazon EFS 文件系统操作步骤3.1 创建安全组3.2 创建 EFS 文件系统3.3 启动 EC2 实例并挂载文件系统 4.清理资源4.1 终止 EC2 实例4.2 删除 EFS 文件系统 5.参考链接 1. Amazon EFS文件系统 Amazon EFS …