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

Elasticsearch对象映射

Spring Data Elasticsearch对象映射是将Java对象(域实体)映射到存储在Elasticsearchs中的JSON表示形式并返回的过程。内部用于此映射的类是MappingElasticsearchConverter。

元模型对象映射

基于元模型的方法使用域类型信息对Elasticsearch进行读写操作。这允许注册特定域类型映射的Converter实例。

1、映射注释概述

MappingElasticsearchConverter使用元数据来驱动对象到文档的映射。元数据取自可以注释的实体属性。

以下注释可用:

  • @Document: 在类级别应用,表示该类是映射到数据库的候选对象。最重要的属性是(查看API文档以获取完整的属性列表):

    • indexName: 用于存储此实体的索引的名称。这可以包含SpEL模板表达式,如 "log-#{T(java.time.LocalDate).now().toString()}"

    • createIndex: 标记是否在存储库引导时创建索引。默认值为true。请参阅使用相应映射自动创建索引

  • @Id:在字段级别应用,以标记用于标识目的的字段。

  • @Transient@ReadOnlyProperty@WriteOnlyProperty:有关详细信息,请参阅以下“控制向Elasticsearch写入和从Elasticsearchs读取哪些属性”一节。

  • @PersistenceConstructor: 标记给定的构造函数(甚至是受包保护的构造函数),以便在从数据库实例化对象时使用。构造函数参数按名称映射到检索到的文档中的键值。

  • @Field:在字段级别应用并定义字段的属性,大多数属性映射到相应的Elasticsearch Mapping定义(以下列表不完整,请查看注释Javadoc以获取完整参考):

    • name: Elasticsearch文档中表示的字段名称,如果未设置,则使用Java字段名称。

    • type: The field type, can be one of Text, Keyword, Long, Integer, Short, Byte, Double, Float, Half_Float, Scaled_Float, Date, Date_Nanos, Boolean, Binary, Integer_Range, Float_Range, Long_Range, Double_Range, Date_Range, Ip_Range, Object, Nested, Ip, TokenCount, Percolator, Flattened, Search_As_You_Type. 请参阅Elasticsearch映射类型。如果未指定字段类型,则默认为FieldType.auto。这意味着,没有为该属性编写映射条目,并且当存储了该属性的第一个数据时,Elasticsearch将动态添加一个映射条目(有关动态映射规则,请查看Elasticsearch文档)。

    • format: 一个或多个内置日期格式,请参阅下一节“日期格式映射”。

    • pattern: 一个或多个自定义日期格式,请参阅下一节“日期格式映射”。

    • store: 标记原始字段值是否应存储在Elasticsearch中,默认值为false。

    • analyzersearchAnalyzernormalizer 用于指定自定义分析器和归一化器。

  • @GeoPoint:将字段标记为geo_point数据类型。如果该字段是GeoPoint类的实例,则可以省略。

  • @ValueConverter :定义一个用于转换给定属性的类。与注册的Spring Converter不同,它只转换带注释的属性,而不是给定类型的每个属性。

映射元数据基础设施是在一个独立的spring data commons项目中定义的,该项目与技术无关。 

控制向Elasticsearch写入和从中读取哪些属性

本节详细介绍了定义属性值是写入Elasticsearch还是从Elasticsearchs读取的注释。

@Transient:用此注释注释的属性不会写入映射,它的值不会发送到Elasticsearch,当Elasticsearchs返回文档时,此属性不会在结果实体中设置。

@ReadOnlyProperty:带有此注释的属性不会将其值写入Elasticsearch,但在返回数据时,该属性将填充Elasticsearchs在文档中返回的值。一个用例是在索引映射中定义的运行时字段。

@WriteOnlyProperty:带有此注释的属性将其值存储在Elasticsearch中,但在读取文档时不会设置任何值。例如,这可以用于合成字段,这些字段应该进入Elasticsearch索引,但不会在其他地方使用。

 日期格式映射

从TemporalAccessor派生或java.util.类型的属性。日期必须具有FieldType类型的@Field注释。必须为此类型注册日期或自定义转换器。本段介绍FieldType的使用。日期。

@Field注释有两个属性,用于定义将哪种日期格式信息写入映射(另请参阅Elasticsearch内置格式和Elasticsearch-自定义日期格式)

format属性用于定义至少一种预定义格式。如果未定义,则使用默认值_date_optional_time和epoch_millis。

pattern属性可用于添加其他自定义格式字符串。如果只想使用自定义日期格式,则必须将format属性设置为空{}。

下表显示了不同的属性及其值创建的映射:

annotationformat string in Elasticsearch mapping

@Field(type=FieldType.Date)

"date_optional_time||epoch_millis",

@Field(type=FieldType.Date, format=DateFormat.basic_date)

"basic_date"

@Field(type=FieldType.Date, format={DateFormat.basic_date, DateFormat.basic_time})

"basic_date||basic_time"

@Field(type=FieldType.Date, pattern="dd.MM.uuuu")

"date_optional_time||epoch_millis||dd.MM.uuuu",

@Field(type=FieldType.Date, format={}, pattern="dd.MM.uuuu")

"dd.MM.uuuu"

检查org.springframework.data.elasticsearch.annotation的代码。DateFormat枚举,用于预定义值及其模式的完整列表。

范围类型
当一个字段被标注为Integer_Range、Float_Range和Long_Range中的一种类型时,该字段必须是映射到Elasticsearch范围的类的实例,例如:

class SomePersonData {@Field(type = FieldType.Integer_Range)private ValidAge validAge;// getter and setter
}class ValidAge {@Field(name="gte")private Integer from;@Field(name="lte")private Integer to;// getter and setter
}

作为Spring Data的替代方案,Elasticsearch提供了一个Range<T>类,因此前面的示例可以写成:

class SomePersonData {@Field(type = FieldType.Integer_Range)private Range<Integer> validAge;// getter and setter
}

<T>类型支持的类是Integer、Long、Float、Double、Date和实现TemporalAccessor接口的类。

映射字段名称
 在没有进一步配置的情况下,Spring Data Elasticsearch将使用对象的属性名作为Elasticsearch中的字段名。可以通过在该属性上使用@field注释来更改单个字段的设置。

也可以在客户端(Elasticsearch客户端)的配置中定义FieldNamingStrategy。例如,如果配置了SnakeCaseFieldNamingStrategy,则对象的属性sampleProperty将映射到Elasticsearch中的sample_property。FieldNaming战略适用于所有实体;可以通过在属性上使用@Field设置特定名称来覆盖它。

Non-field-backed属性

通常,实体中使用的属性是实体类的字段。在某些情况下,属性值是在实体中计算的,应该存储在Elasticsearch中。在这种情况下,getter方法(getProperty())可以用@Field注释进行注释,此外,该方法必须用@AccessType(AccessType.Type.PROPERTY)进行注释。在这种情况下需要的第三个注释是@WriteOnlyProperty,因为这样的值只会写入Elasticsearch。完整示例:

@Field(type = Keyword)
@WriteOnlyProperty
@AccessType(AccessType.Type.PROPERTY)
public String getProperty() {return "some value that is calculated here";
}

其他特性注释

@IndexedIndexName

可以在实体的String属性上设置此注释。该属性不会写入映射,它不会存储在Elasticsearch中,并且不会从Elasticsearch文档中读取其值。在持久化实体后,例如通过调用ElasticsearchOperations.save(T实体),从该调用返回的实体将包含实体保存到该属性中的索引的名称。当bean动态设置索引名时,或者在写入写入别名时,这很有用。

将一些值放入这样的属性中不会设置实体存储到的索引!

2、映射规则

类型注解
映射使用嵌入在发送到服务器的文档中的类型提示来允许泛型类型映射。这些类型提示在文档中表示为_class属性,并为每个聚合根编写。                                                                                        

public class Person {              @Id String id;String firstname;String lastname;
}
{"_class" : "com.example.Person", "id" : "cb7bef","firstname" : "Sarah","lastname" : "Connor"
}

可以将类型提示配置为保存自定义信息。使用@TypeAlias注释来执行此操作。

@TypeAlias("human")                
public class Person {@Id String id;// ...
}
{"_class" : "human",              "id" : ...
}

 禁用类型提示

如果应该使用的索引已经存在,但没有在其映射中定义类型提示,并且映射模式设置为strict,则可能需要禁用类型提示的写入。在这种情况下,写入类型提示将产生错误,因为无法自动添加字段。

通过重写从AbstractElasticsearchConfiguration派生的配置类中的方法writeTypeHints(),可以为整个应用程序禁用类型提示(请参阅Elasticsearch客户端)。

或者,可以使用@Document批注为单个索引禁用它们:

@Document(indexName = "index", writeTypeHint = WriteTypeHint.FALSE)

地理空间类型
 Point和GeoPoint等地理空间类型转换为lat/lon对。

public class Address {String city, street;Point location;
}
{"city" : "Los Angeles","street" : "2800 East Observatory Road","location" : { "lat" : 34.118347, "lon" : -118.3026284 }
}

GeoJson类型
Spring Data Elasticsearch通过为不同的几何体提供接口GeoJson和实现来支持GeoJson类型。根据GeoJson规范,它们被映射到Elasticsearch文档。当写入索引映射时,实体的相应属性在索引映射中指定为geo_shape。(同时检查Elasticsearch文档)

public class Address {String city, street;GeoJsonPoint location;
}
{"city": "Los Angeles","street": "2800 East Observatory Road","location": {"type": "Point","coordinates": [-118.3026284, 34.118347]}
}

实现了以下GeoJson类型:

  • GeoJsonPoint

  • GeoJsonMultiPoint

  • GeoJsonLineString

  • GeoJsonMultiLineString

  • GeoJsonPolygon

  • GeoJsonMultiPolygon

  • GeoJsonGeometryCollection

Collections 

对于集合内的值,当涉及类型提示和自定义转换时,应用与聚合根相同的映射规则。

public class Person {// ...List<Person> friends;}
{// ..."friends" : [ { "firstname" : "Kyle", "lastname" : "Reese" } ]
}
Maps

对于Maps内的值,当涉及类型提示和自定义转换时,应用与聚合根相同的映射规则。然而,Map键需要String才能由Elasticsearch处理。

public class Person {// ...Map<String, Address> knownLocations;}
{// ..."knownLocations" : {"arrivedAt" : {"city" : "Los Angeles","street" : "2800 East Observatory Road","location" : { "lat" : 34.118347, "lon" : -118.3026284 }}}
}

3、自定义转换

查看上一节中的配置ElasticsearchCustomConversions允许注册映射域和简单类型的特定规则。

@Configuration
public class Config extends ElasticsearchConfiguration  {@Overridepublic ClientConfiguration clientConfiguration() {return ClientConfiguration.builder() //.connectedTo("localhost:9200") //.build();}@Bean@Overridepublic ElasticsearchCustomConversions elasticsearchCustomConversions() {return new ElasticsearchCustomConversions(Arrays.asList(new AddressToMap(), new MapToAddress()));       }@WritingConverter                                                 static class AddressToMap implements Converter<Address, Map<String, Object>> {@Overridepublic Map<String, Object> convert(Address source) {LinkedHashMap<String, Object> target = new LinkedHashMap<>();target.put("ciudad", source.getCity());// ...return target;}}@ReadingConverter                                                 static class MapToAddress implements Converter<Map<String, Object>, Address> {@Overridepublic Address convert(Map<String, Object> source) {// ...return address;}}
}
{"ciudad" : "Los Angeles","calle" : "2800 East Observatory Road","localidad" : { "lat" : 34.118347, "lon" : -118.3026284 }
}

 

相关文章:

Elasticsearch对象映射

Spring Data Elasticsearch对象映射是将Java对象&#xff08;域实体&#xff09;映射到存储在Elasticsearchs中的JSON表示形式并返回的过程。内部用于此映射的类是MappingElasticsearchConverter。 元模型对象映射 基于元模型的方法使用域类型信息对Elasticsearch进行读写操作…...

解决Logitech G hub 无法进入一直转圈的方案(2024.12)

如果你不是最新版本无法加载尝试以下方案&#xff1a;删除AppData 文件夹下的logihub文件夹 具体路径&#xff1a;用户名根据实际你的请情况修改 C:\Users\Administrator\AppData\Local 如果你有通过lua编译脚本&#xff0c;记得备份&#xff01;&#xff01; ↓如果你是最新…...

Debezium SchemaNameAdjuster 分析

Debezium SchemaNameAdjuster 分析 目录 1. 概述2. 核心功能3. 实现原理4. 应用场景5. 扩展示例6. 总结1. 概述 SchemaNameAdjuster 是 Debezium 中的一个工具类,主要用于确保 Schema 名称符合 Avro 命名规范。在数据库变更事件被转换为 Kafka 消息时,需要为每个表和字段创…...

聊一下前端常见的图片格式

1. JPEG (JPG) 概述&#xff1a;是一种有损压缩的图像格式&#xff0c;它通过去除图像中一些人类视觉不易察觉的细节来减小文件大小。它支持数百万种颜色&#xff0c;能够很好地呈现照片等色彩丰富的图像内容。优点&#xff1a; 压缩率高&#xff1a;可以在保持相对较好的图像…...

npm : 无法加载文件 D:\nodejs\npm.ps1

问题描述 npm run serve 启动一个Vue项目&#xff0c;报错如下&#xff1a; npm : 无法加载文件 D:\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/? LinkID135170 中的 about_Execution_Policies。…...

如何使用 Python 实现 TCP / IP 客户端和服务端通信?

如何使用Python实现TCP/IP客户端和服务端通信&#xff1f; 1. TCP/IP通信基础 TCP/IP&#xff08;传输控制协议/互联网协议&#xff09;是互联网的基础协议&#xff0c;用于在网络中的计算机之间进行可靠的数据传输。在Python中&#xff0c;可以使用socket模块来实现TCP/IP通…...

IDEA 可视化使用 git rebase 合并分支步骤 使git分支树保持整洁

模拟环境 dev 分支开发完一个功能&#xff0c;需要合并到 master 分支&#xff0c;如果现在直接 merge 合并的话 git分支树会出现杂乱分叉&#xff0c;先把 master 分支 rebase 到 dev git分支树就会是整洁的一条直线 git rebase介绍 rebase:翻译成中文是重新设定&#xff0c;…...

【指南】03 CSC联系外导

确定外导 课题组有合作关系的国外导师与自己研究方向密切相关的国外导师国外高校官网、谷歌学术、Research Gate等平台检索不可以是中国港澳台的高校科研院所或机构注意外导所在高校排名和科研水平可列表记录注意外国签证政策 发送邮件 自我介绍简要介绍CSC介绍自己的研究对…...

axios请求拦截器和响应拦截器,封装naive-ui的 Loading Bar加载条和useMessage消息提示

接之前的博客设计从0开始边做边学&#xff0c;用vue和python做一个博客&#xff0c;非规范化项目&#xff0c;怎么简单怎么弄&#xff0c;跑的起来有啥毛病解决啥毛病&#xff08;三&#xff09;&#xff0c;目前已经完成了基本的功能demo&#xff0c;但是请求接口不可能每个页…...

联网功耗电流波形

飞行模式下&#xff0c;Wifi 可连接或不可连接的条件对比&#xff1a; 1. 基电流为 3.5 mA 的环境下, 网络不可连接时,会产生一个持续0.72s,平均电流为 54.8 mA 的电流波形 2. 基电流为 6.8 mA 的环境下, 网络可连接时,会产生一个持续4.64s,平均电流为 73.63 mA 的电流波形 …...

Unity 模板测试透视效果(URP)

可以实现笼中窥梦和PicoVR中通过VST局部透视效果。 使用到的Shader: Shader "Unlit/StencilShader" {Properties{[IntRange]_Index("Stencil Index",Range(0,255))0}SubShader{Tags{"RenderType""Opaque""Queue""Geo…...

C 语言动态爱心代码

C 语言动态爱心代码 代码 #include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> float f(float x, float y, float z) {float a x * x 9.0f / 4.0f * y * y z * z - 1;return a * a * a - x * x * z * z * z - 9.0f / …...

Linux服务器磁盘满了,清理步骤命令

Linux服务器磁盘满了&#xff0c;磁盘空间不足&#xff0c;清理步骤 1. 检查磁盘使用情况 了解哪些文件和目录占用了大量空间。 使用 df -h查看所有分区的总体使用情况。 使用 du -sh /directory/* | sort -rh | head -n 10 查找特定目录下占用空间最大的前10个子目录或文件。…...

CTFshow-命令执行(Web41-57)

CTFshow-命令执行(Web41-57) CTFWeb-命令执行漏洞过滤的绕过姿势_绕过空格过滤-CSDN博客 总结rce&#xff08;远程代码执行各种sao姿势&#xff09;绕过bypass_远程命令执行绕过-CSDN博客 对比两者的源代码&#xff0c;我们发现&#xff0c;cat指令把flag.php的内容导出后依…...

Batch Norm vs Layer Norm:为什么 Transformer 更适合用 Layer Norm?

Batch Norm vs Layer Norm&#xff1a;为什么 Transformer 更适合用 Layer Norm&#xff1f; 1. Batch Norm 和 Layer Norm 的定义与作用 1.1 Batch Normalization (BN) Batch Norm 是一种归一化方法&#xff0c;主要用于加速深层神经网络的训练。它在每个小批量&#xff08;b…...

jQuery Mobile页面事件

jQuery Mobile页面事件 jQuery Mobile是一个基于jQuery的移动设备友好的Web应用框架,它提供了一套丰富的页面事件,这些事件在移动应用的交互设计中扮演着重要的角色。本文将详细介绍jQuery Mobile中的页面事件,包括它们的触发时机、用途以及如何使用它们来增强移动应用的交…...

接口测试Day01-HTTP请求

概念 接口&#xff1a;系统之间&#xff08;外部系统与内部系统&#xff0c;内部系统与内部系统&#xff09;数据交通的通道。 接口测试&#xff1a;校验 接口回发的 响应数据 与 预期结果 是否一致。 接口测试&#xff0c;可以绕过前端界面。直接对 服务器进行测试&#xff01…...

使用枚举实现单例模式,不会反序列化破坏攻击,不会被反射破坏攻击。(附带枚举单例的简单实现)

原因分析 1.反序列化方法 ① jdk8中的Enum源码中对反序列化方法进行重写&#xff0c;抛出异常。 java.lang.Enum#readObject方法截图如下 ②java.io.ObjectInputStream#readObject 方法中的 readEnum 方法处理了枚举类型的反序列化&#xff0c;从而确保了枚举的单例特性。 …...

又细又长的马尾:tail

英语里边有一个单词 tail&#xff0c;意为“尾巴”&#xff0c;这应当是众所周知的事情了。 不过&#xff0c;tail 这条尾巴&#xff0c;并不简单&#xff0c;因为它还是一个词根&#xff0c;也就是说 tail 其实是自由词素。 事实上&#xff0c;tail 最初来自 马尾 这样一个概…...

记录:VB6 直接获取 PictureBox 的图像数据到数组 GetDIBits

记得十几年前写几个游戏辅助工具的时候用过这个功能&#xff0c;这几天想直接把图片控件的数据转换为 PNG 文件不想用存出 BMP 文件交换&#xff0c;直接取得图像数据操作即可&#xff0c;但是忘记了当初是怎么做的了&#xff0c;找到个 2007 年的例子好像不太对&#xff0c;运…...

uboot移植网络驱动过程,无法ping通mx6ull和ubuntu问题解决方案

开发板&#xff1a;mx6ull-ALPHA_V2.4 ubuntu版本&#xff1a;20.04 1.现在虚拟机设置中添加网路适配器用于开启桥接模式 2.在编辑中打开“虚拟网络编辑器” 我的电脑本身只有VMnet1和VMnet8&#xff0c;需要底下“添加网络”&#xff0c;增加这个VMnet0 &#xff0c;并且进行…...

Ubuntu 安装软件被锁:Could not get lock问题解决

今天刚使用虚拟机安装完Ubuntu系统&#xff0c;想要安装所需要的软件是出现了以下错误信息&#xff1a; 错误信息&#xff1a; E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to lock the administration directory (/…...

S2CRNet 图像测评笔记 图像融合

空间分离曲线渲染网络用于高效高分辨率图像协调 开源地址&#xff1a; https://github.com/stefanLeong/S2CRNet 效果图&#xff1a; 左边是输入&#xff0c;最右边是效果&#xff1a;效果不是很理想&#xff0c;色差问题还在 本地代码&#xff1a; S2CRNet-demos-main...

Lambda表达式

C Lambda表达式 文章目录 C Lambda表达式基本用法捕获列表返回值mutable Lambda 表达式是一种匿名函数&#xff0c;可以在代码中直接定义并使用。它主要用于简化那些只需要简单操作的函数定义。在 C 中&#xff0c;lambda 表达式的语法结构通常包括以下几个部分&#xff1a; 捕…...

高通 Android12 添加APN信息

1、产品有国外客户&#xff0c;需要添加国外的定制APN信息。 2、路径&#xff1a; SC200E_AP/QCM2290_Android12.0_R02_r004/QSSI.12/vendor/qcom/proprietary/commonsys/telephony-apps/etc/apns-conf.xml在上述路径中将APN信息添加即可。 3、路径 SC200E_AP\QCM2290_Andr…...

探秘 IIC 与 SPI:软件模拟与硬件接口的抉择之谜

一、IIC 软件模拟&#xff1a;受限中的灵活应变 在嵌入式系统的通信世界里&#xff0c;IIC 常采用软件模拟的方式开展工作&#xff0c;这背后有着诸多考量。首先&#xff0c;硬件资源的限制是一个重要因素。不少微控制器并没有内置功能完备的 IIC 硬件模块&#xff0c;甚至压根…...

【ts语法学习】主要数据类型与变量声明时的类型注解

一、ts中的主要数据类型 1.布尔类型 (boolean) 2.数值类型 (number) 3.字符串类型 (string) 4.数组类型 (Array) 5.对象类型 (object) 6.null 和 undefined 7.元组类型 (Tuple) 8.枚举类型 (enum) 9.任意类型 (any) 10.never 11.unknown 12.void TypeScript&#xff08;简称 …...

论文概览 |《Sustainable Cities and Society》2024.12 Vol.116

本次给大家整理的是《Sustainable Cities and Society》杂志2024年12月第116期的论文的题目和摘要&#xff0c;一共包括52篇SCI论文&#xff01; 论文1 Enhancing road traffic flow in sustainable cities through transformer models: Advancements and challenges 通过变压…...

Vue3之响应式系统详解

Vue3中的响应式系统是其核心功能之一&#xff0c;它使得数据变化能够自动触发视图更新&#xff0c;从而简化了开发过程&#xff0c;提高了开发效率。本文将详细阐述Vue3中的响应式系统&#xff0c;包括其核心概念、工作原理、实现方式、应用场景以及优势。同时&#xff0c;本文…...

只出现一次的数字(字节面试题 最优解)

题目来源 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个 非空 整数数组 nums &#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问…...

VMware Workstation的有线连接消失了

进入/var/lib目录下 cd /var/lib 查看是否存在NetworkManager 文件 ls 将其删除&#xff0c;然后虚拟机reboot一下。 sudo rm -r NetworkManager reboot 解决了&#xff0c;可以联网...

leetcode-146.LRU缓存(易理解)

为了实现一个满足 LRU&#xff08;最近最少使用&#xff09;缓存约束的数据结构&#xff0c;我们需要在 (O(1)) 时间复杂度内完成 get 和 put 操作。这通常可以通过结合使用哈希表和双向链表来实现&#xff1a; 哈希表&#xff1a;用于在 (O(1)) 时间复杂度内实现对缓存中元素…...

ArcGIS地理空间平台manager存在任意文件读取漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

ARCGIS国土超级工具集1.2更新说明

ARCGIS国土超级工具集V1.2版本&#xff0c;功能已增加至47 个。在V1.1的基础上修复了若干使用时发现的BUG&#xff0c;新增了"矢量分割工具"菜单&#xff0c;同时增加及更新了了若干功能&#xff0c;新工具使用说明如下&#xff1a; 一、勘测定界工具栏更新界址点成果…...

「iOS」通过CoreLocation Framework深入了解MVC架构

「iOS」通过CoreLocation Framework重新了解多界面传值以及MVC架构 文章目录 「iOS」通过CoreLocation Framework重新了解多界面传值以及MVC架构前言CoreLocation了解根据需求建模设计属性方法设计协议传值Block传值KVONotification通知方式 总结参考文章 前言 在这个学期的前…...

spring实例化对象的几种方式(使用XML配置文件)

前言 Spring框架作为一个轻量级的控制反转&#xff08;IoC&#xff09;容器&#xff0c;为开发者提供了多种对象实例化的策略。通过这些策略&#xff0c;开发者可以更加灵活地控制对象的生命周期和依赖关系。无论是通过XML配置、注解配置还是Java配置&#xff0c;Spring都能…...

pyhton 批量往PDF文件指定位置里面填写数据

pyhton 批量往PDF文件指定位置里面填写数据 import PyPDF2 from PyPDF2 import PdfReader, PdfWriterdef modify_pdf(input_pdf_path, output_pdf_path, page_number, x, y, text):reader PdfReader(input_pdf_path)writer PdfWriter()for page in reader.pages:writer.add_p…...

深度学习——激活函数、损失函数、优化器

深度学习——激活函数、损失函数、优化器 1、激活函数1.1、一些常见的激活函数1.1.1、sigmoid1.1.2、softmax1.1.3、tanh1.1.4、ReLU1.1.5、Leaky ReLU1.1.6、PReLU1.1.7、GeLU1.1.8、ELU 1.2、激活函数的特点1.2.1、非线性1.2.2、几乎处处可微1.2.3、计算简单1.2.4、非饱和性1…...

上拉模式下引脚电平与代码读取值的关系

在单片机系统中&#xff0c;引脚的输入模式设置对上拉模式下引脚电平及代码读取值有着关键影响。 当引脚被配置为上拉模式且无外部信号输入时&#xff0c;内部上拉电阻使引脚保持高电平。此时&#xff0c;代码读取该引脚的值为 1。例如在一个简单的电路中&#xff0c;仅设置了…...

UNIX简史

从1991年Linux出现至今&#xff0c;由于众多IT巨头以及技术社区的推动&#xff0c;Linux已经成为非常成熟、可用于各种关键领域的操作系统&#xff0c;适当了解其发展历史&#xff0c;对于理顺其技术流派、从而更好地学习和使用Linux具有重要意义。由于其基于UNIX系统二十多年的…...

python学opencv|读取图像(十三)BGR图像和HSV图像互相转换深入

【1】引言 前序学习过程中&#xff0c;我们偶然发现&#xff1a;如果原始图像是png格式&#xff0c;将其从BGR转向HSV&#xff0c;再从HSV转回BGR后&#xff0c;图像的效果要好于JPG格式。 文章链接为&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图…...

ElasticSearch 搜索、排序、分页功能

一、DSL 查询文档 ElasticSearch 的查询依然是基于 json 风格的 DSL 来实现的。 官方文档&#xff1a;https://www.elastic.co/guide/en/elasticsearch/reference/8.15/query-dsl.html 1.1 DSL 查询分类 常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数…...

MAC虚拟机上安装WDA环境

MAC虚拟机上安装WDA环境 一、MAC虚拟机切换root权限二、macOS上安装xcode若你的macOS系统可以在appstore下载安装若你安装的macOS系统版本太低&#xff0c;无法在appstore上安装xcode 三、macOS上安装WebDriverAgent四、使用xcode配置WDA安装到手机上高版本系统支持 一、MAC虚拟…...

KDD 2025预讲会:10位一作的论文分享与话题思辨|12月18日全天直播

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 圆桌思辨&#xff1a;一作们的KDD 2025投稿经验分享与热点探讨 1. KDD 2025 与往年相比有哪些新变化&#xff1f;两次投稿周期的新规则有哪些影响&#xff1f; 2. 第一篇KDD的工作是如何成功被接收的&#xff1…...

Input system手游的控制

手游离不开触屏控制 新的inputsystem 实现过程 安装input system在projectsetting中的player的othersettings中active input handing设置both打开window的analysis的input debugger。在options中设置为simulate touch input from mouse or pen。 增强触摸控制的相关知识 启…...

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c

在 Visual Studio Code 中编译、调试和执行 Makefile 工程 llama2.c 1. Installing the extension (在 Visual Studio Code 中安装插件)1.1. Extensions for Visual Studio Code1.2. C/C1.2.1. Pre-requisites 1.3. Makefile Tools 2. Configuring your project (配置项目)2.1.…...

KMP 算法

这里写目录标题 KMP数组计算方式**问题描述****初始准备****逐步推导过程****Step 1: i 1&#xff0c;子串为 ab****Step 2: i 2&#xff0c;子串为 aba****Step 3: i 3&#xff0c;子串为 abab****Step 4: i 4&#xff0c;子串为 ababa****Step 5: i 5&#xff0c;子串为…...

计算机网络中的三大交换技术详解与实现

目录 计算机网络中的三大交换技术详解与实现1. 计算机网络中的交换技术概述1.1 交换技术的意义1.2 三大交换技术简介 2. 电路交换技术2.1 理论介绍2.2 Python实现及代码详解2.3 案例分析 3. 分组交换技术3.1 理论介绍3.2 Python实现及代码详解3.3 案例分析 4. 报文交换技术4.1 …...

echarts图表自定义配置(二)——代码封装

下图是初版&#xff0c;火山图的代码。可以看出&#xff0c;里面的变量&#xff0c;逻辑&#xff0c;函数存在冗余&#xff0c;基本上都是改了参数&#xff0c;同样的get和set&#xff0c;去刷新图表&#xff1b;对于往后继续开发十几二十个图表&#xff0c;会很麻烦。因此需要…...

Serdes技术与Xilinx GT概览

目录 一、前言 二、Serdes技术 2.1 芯片间信号传输 2.2 Serdes技术 三、 Xilinx GT 3.1 7系列器件GT 3.2 Ultrascale GT 3.3 Ultrascale GT 四、参考资料 一、前言 对于芯片间高速信号传输技术&#xff0c;不得不提serdes以及在Xilinx在此基础上的高速收发器GT系列&…...