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

在SpringBoot中使用UniHttp简化天地图路径规划调用实践

目录

写在最前面

前言

一、天地图路径规划简介

1、天地图相关服务

2、天地图路径规划接口

二、UniHttp简介

1、UniHttp是什么?

2、UniHttp能做什么?

三、UniHttp调用天地图接口

1、请求接口的定义

2、实际调用

3、相应结果展示

四、总结


写在最前面

        “苔花如米小,也学牡丹开”,不才在下也参加了CSDN博客之星的年度评选。如果平时的博客对您有所帮助,有所触动,可以请您给在下投上宝贵的一票。骐骥一跃,不能十步;驽马十驾,功在不舍,技术的道路充满了坚持与努力。愿未来的前行中,可以彼此交流成长,万分感谢。投票地址:https://www.csdn.net/blogstar2024/detail/037。

前言

        在当今数字化飞速发展的时代,地理信息系统(GIS)技术在众多领域发挥着至关重要的作用。从城市规划、交通管理到物流配送、出行导航,路径规划作为 GIS 的核心功能之一,其重要性不言而喻。天地图作为我国权威的地理信息公共服务平台,提供了丰富且精准的地理数据和强大的路径规划接口,为开发者们带来了极大的便利。在今天交通环境非常丰富的场景下,我们大家都是交通的密切参与者,而路径规划和导航应该是大家平时用得非常多的一个应用。比如高德、百度等互联网平台。下图是从百度地图截取的从长沙黄花国际机场到橘子洲景区的驾车路径规划信息,如下图所示:

        通过导航的规划,很轻松的就可以掌握如何快速便捷的到达目的地。 然而,在实际的项目开发中,尤其是在基于 Spring Boot 框架的应用里,直接调用相关互联网服务的路径规划接口往往面临着诸多挑战。接口的调用涉及到复杂的参数配置、身份认证以及数据格式的处理,这使得开发人员需要花费大量的时间和精力去研究和理解接口文档,编写繁琐的代码来实现与服务接口的交互。对于一些对地理信息系统不太熟悉的开发人员来说,这无疑增加了项目的开发难度和周期。

        在这样的背景下,UniHttp 应运而生。UniHttp 是一款优秀的 HTTP 客户端工具,它以其简洁易用的 API 设计和强大的功能特性,为开发者们提供了一种更加高效、便捷的方式来处理 HTTP 请求。在 Spring Boot 项目中引入 UniHttp,可以极大地简化与路径规划接口的调用过程。通过使用 UniHttp,开发人员可以轻松地构建符合要求的 HTTP 请求,无需再纠结于底层的连接管理、请求头设置以及参数编码等细节问题。UniHttp 提供了直观的接口,让开发者能够以一种声明式的方式快速生成请求,同时它还具备良好的错误处理机制,能够及时捕获并反馈接口调用过程中出现的问题,方便开发人员进行调试和排查。

        在本次技术博客中,我们将深入探讨如何在 Spring Boot 项目中利用 UniHttp 来简化天地图路径规划的调用实践。从项目的初始搭建,到 UniHttp 的集成配置,再到具体的天地图路径规划接口调用代码示例,以及对调用结果的解析和处理,我们都将进行详细的讲解和分析。希望通过本次分享,能够为广大开发人员提供一种更加高效、可靠的天地图路径规划调用解决方案,让大家在项目开发中能够更加轻松地应对地理信息相关的功能需求,提升项目的开发效率和质量,为推动地理信息系统技术在更多领域的应用贡献一份力量。

一、天地图路径规划简介

        天地图作为一款在线的免费地图服务方,上面有很多的资源可以使用。如果是在线应用,大家可以直接使用来辅助自己的业务系统,提高产品研发的效率,降低空间技术开发的难度。比如本文提到的路径规划的服务。当然,基于在线模式的路径规划服务,有常见的百度、高德、腾讯地图等,还有我们的天地图,这里的地图数据是符合相关标准的,是规范的地图。因此大家可以放心使用,当然为了保证一些服务的可用,在调用相关的接口之前,需要进行开发者认证,其实也很简单,只要到官方网站上进行注册即可,在之前的博文中有一定讲解,在此不赘述。

1、天地图相关服务

        天地图的API主要包含以下四类,如下图所示:

        天地图的API服务主要包含四大类 :1、地图API,2、Web端开发,3、WEB服务API,4、数据API。 其中地图API主要是提供相关的底图服务,比如矢量底图、影像底图和它对应的注记地图。Web端API主要是提供前端的接口支持,提供Javascript3.0和4.0的相关操作接口。Web服务API主要是提供服务接口,不仅可以直接为前端请求,也可以为后台服务提供服务,可以无缝对接Java、Python、C#等多种语言。最后的数据API用得比较少,这里的服务暂时访问不了。之前咨询了官方技术人员,大家需要的可以自行去数据资源中下载即可。

2、天地图路径规划接口

        首先不得不吐槽一下天地图的一些错误,在接口的说明上没有维护好元数据。比如下图中的公交规划和驾车规划,虽然是两个接口,但是关于接口的说明却不明确。

        上图是公交规划的接口简介。下图是实际的驾车规划接口:

         小瑕疵,还是期望有相关人员及时更新,毕竟是一个面向大众的互联网应用。下面以驾车路径规划为例,重点说说在天地图中的接口请求参数以及响应参数信息,这里帮大家整理好了,当然也可以到天地图的官网中查看相关说明。

驾车服务简介:

驾车服务API是一类简单的HTTP/HTTPS接口,根据输入起点、终点和途经点规划查询驾车路线。根据输入的起点、终点和途径点规划查询驾车路线。除了输入起始点,天地图还有一个非常实用的功能,就是添加途经点,它可以辅助我们进行更复杂的规划。

参数参数说明参数类型返回条件备注
origstring起点经纬度-180,-90,180,90。
deststring终点经纬度-180,-90,180,90。
midstring途径点经纬度字符串途径点字符串格式:116.35506,39.92277;116.35506,39.92277两个坐标之间以分号隔开,坐标xy之间用逗号隔开(都是半角)。
stylestring导航路线类型默认0 (0:最快路线,1:最短路线,2:避开高速,3:步行)0-3。

         以下是服务请求示例:

根据起点、终点经纬度字符串查询导航信息:http://api.tianditu.gov.cn/drive?postStr={"orig":"116.35506,39.92277","dest":"116.39751,39.90854","style":"0"}&type=search&tk=您的密钥
加入途径点的导航查询:http://api.tianditu.gov.cn/drive?postStr={"orig":"116.35506,39.92277","dest":"116.39751,39.90854","mid":"116.36506,39.91277;116.37506,39.92077","style":"0"}&type=search&tk=您的密钥

        接下来是响应参数,这里也要提一下,天地图的响应参数格式xml,没错,它不是采用json的格式。这里也可以请官方的人士调整一下,毕竟目前很多接口的响应格式都是用的json。xml用的还是少了些。相应参数如下:

<?xml version="1.0" encoding="UTF-8" ?>
<result orig='起点经纬度' mid='途径点信息' dest='终点经纬度'><parameters><orig>起点加密经纬度</orig><dest>终点加密经纬度</dest><mid>途径点加密经纬度集合</mid><key>经纬度加密的 key 值</key><width>地图宽度</width><height>地图高度</height><style>导航路线类型</style><version>版本控制</version><sort>排序方式</sort></parameters><routes count='分段总数' time='查询时间'><item id='0'><strguide>每段线路文字描述</strguide><signage>“路牌”引导提示/高速路收费站出口信息</signage><streetName>当前路段名称</streetName><nextStreetName>下一段道路名称</nextStreetName><tollStatus>道路收费信息(0=免费路段,1=收费路段,2=部分收费路段)</tollStatus><turnlatlon>转折点经纬度</turnlatlon></item><item id='1'>....</item>....其他分段线路信息</routes><simple><item id='0'><strguide>每段线路文字描述</strguide><streetNames>当前行驶路段名称(含多个路段)</streetNames><lastStreetName>最后一段道路名称</lastStreetName><linkStreetName>合并段之间衔接的道路名称</linkStreetName><signage>“路牌”引导提示/高速路收费站出口信息</signage><tollStatus>道路收费信息(0=免费路段,1=收费路段,2=部分收费路段)</tollStatus><turnlatlon>转折点经纬度</turnlatlon><streetLatLon>线路经纬度</streetLatLon><streetDistance>行驶总距离(单位:米)</streetDistance><segmentNumber>合并后的号段,对应详细描述中的号段</segmentNumber></item><item id='1'>....</item>....其他分段线路信息</simple><distance>全长(单位:公里)</distance><duration>行驶总时间(单位:秒)</duration><routelatlon>线路经纬度字符串</routelatlon><mapinfo><center>全部结果同时显示的适宜中心经纬度</center><scale>全部结果同时显示的适宜缩放比例</scale></mapinfo>
</result>

         以上就是天地图的驾车规划接口详情介绍,希望大家可以熟悉接口的入参和响应参数。在后续的接口调用介绍中会使用到。

二、UniHttp简介

        从企业级项目来说,传统的接口访问我们会使用编程式Http客户端比如HttpClient、Okhttp去直接对接第三方Http接口, 那么项目一定充斥着大量的对接逻辑和代码。本节将重点讲解Unihttp的相关知识,可以通过uniHttp来简化http接口的调用。

1、UniHttp是什么?

        UniHttp是一个声明式的Http请求对接框架,能以极快的方式完成对一个第三方Http接口的对接和使用,只要配置一下即可重复使用, 不需要开发者去关注如何发送一个请求,如何去传递Http请求参数,以及如何对请求结果进行处理和反序列化,这些框架都帮你一一实现 就像配置 Spring的Controller 那样简单,只不过相当于是反向配置而已。该框架更注重于如何保持高内聚和可读性高的代码情况下与快速第三方渠道接口进行对接和集合, 而非像传统编程式的Http请求客户端(比如HttpClient、Okhttp)那样专注于如何去发送和响应一个Http请求,二者并不冲突只是注重点不一样,UniHttp 目前底层也是用的Okhttp去发送请求。 与其说的是对接的Http接口,不如说是对接的第三方渠道,UniHttp可支持自定义接口渠道方HttpAPI注解以及一些自定义的对接和交互行为 ,为此扩展了发送和响应和反序列化一个Http请求接口的各种生命周期钩子需要开发者去自定义实现。

        这里只对其做一个简单介绍,关于其强大的方法,在后续的内容中结合相关案例进行介绍。

2、UniHttp能做什么?

        首先来看一下UniHttp的官方API文档,如下所示:

         官方api手册的地址是:UniHttp文档。如何在Java环境中集成上述组件有详细的说明。在Springboot中引入UniHttp的Maven声明如下所示,这里我们使用的版本是0.0.8: 

<!--  增加uniapi-http add by 夜郎king in 2025.02.14 begin -->
<dependency><groupId>io.github.burukeyou</groupId><artifactId>uniapi-http</artifactId><version>0.0.8</version>
</dependency>
<!--  增加uniapi-http add by 夜郎king in 2025.02.14 end -->

三、UniHttp调用天地图接口

1、请求接口的定义

        在SpringBoot中定义相关接口的代理类,这个比较简单,直接创建一个接口即可,为了演示方便,这里定义了天地图中的两个地址,一个是地理名称检索以及驾车路径规划调用。具体Java接口方法如下:

package com.yelang.project.thridinterface;
import com.burukeyou.uniapi.http.annotation.HttpApi;
import com.burukeyou.uniapi.http.annotation.param.QueryPar;
import com.burukeyou.uniapi.http.annotation.request.GetHttpInterface;
import com.burukeyou.uniapi.http.core.response.HttpResponse;@HttpApi(url = "http://api.tianditu.gov.cn/")
public interface ITdtOptionService {@GetHttpInterface("geocoder")HttpResponse<String> getGeocoder(@QueryPar("ds") String ds,@QueryPar("tk") String tk);@GetHttpInterface("drive")HttpResponse<String> drivePlan(@QueryPar("postStr") String postStr,@QueryPar("type") String type,@QueryPar("tk") String tk);
}

2、实际调用

        为了演示方便,这里以Junit为例,重点讲解如何在SprintBoot环境中进行集成和调用。代码如下(请注意,下面代码中的key需要大家到天地图中去申请才能看到结果):

package com.yelang.project.unihttp;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.burukeyou.uniapi.annotation.UniAPIScan;
import com.burukeyou.uniapi.http.core.response.HttpResponse;
import com.yelang.project.thridinterface.ITdtOptionService;@SpringBootTest
@RunWith(SpringRunner.class)
@UniAPIScan("com.yelang.project.thridinterface") // 指定@HttpApi接口所在的包路径
public class TdtUniHttpCase {//服务端访问key//private static final String TDT_BROWSE_KEY = "xxx";private static final String TDT_SERVER_KEY = "xxx";@Autowiredprivate ITdtOptionService tdtOptService;@Testpublic void testGeocoder() {String target = "北京市延庆区延庆镇莲花池村前街50夕阳红养老院";String keyWord = "%7B'keyWord':'" + target + "'%7D" ;HttpResponse<String> resp = tdtOptService.getGeocoder(keyWord, TDT_SERVER_KEY);System.out.println(resp.getBodyResult());}@Testpublic void testDrivePlan() {String origInfo = "113.216171,28.190967";//黄花国际机场String destInfo = "112.957124,28.198626";//橘子洲景区// style 默认0 (0:最快路线,1:最短路线,2:避开高速,3:步行)// 这里选择避开高速String postStr = "%7B'orig':'" + origInfo + "','dest':'" + destInfo + "','style':'2'%7D" ;HttpResponse<String> resp = tdtOptService.drivePlan(postStr,"search",TDT_SERVER_KEY);System.out.println(resp.getBodyResult());}
}

        在第二个驾车的规划中,在参数中需要传的经纬度位置,而日常生活中,我们通常拿到的都是地址信息,因此还需要一个根据中文名称找它的对应经纬度位置的过程。当然我们也可以直接调用天地图的服务来实现。这里假设已经成功的获取起始点和目标点的经纬度坐标。

3、相应结果展示

        上面的起始点和目标点分别是:长沙黄花机场和橘子洲风景区。将两者作为导航的起始点输入,默认选用避开高速的方式(最小成本的模式),最后得到的响应结果如下:

         我们将得到的响应结果格式化之后可以看到以下的信息:

        基本上可以跟导航软件上实现的结果是一致的,由此可以得到具体路径规划信息。 通过这个实验表明,通过天地图的驾车路径规划服务可以得到满足我们日常使用的一些接口。后续大家可以基于这种方法进行业务开发。当然,前提是一定要去注册天地图的开发者才可以调用相关服务。

四、总结

        以上就是本文的主要内容,在本次技术博客中,我们将深入探讨如何在 Spring Boot 项目中利用 UniHttp 来简化天地图路径规划的调用实践。从项目的初始搭建,到 UniHttp 的集成配置,再到具体的天地图路径规划接口调用代码示例,以及对调用结果的解析和处理,我们都将进行详细的讲解和分析。希望通过本次分享,能够为广大开发人员提供一种更加高效、可靠的天地图路径规划调用解决方案,让大家在项目开发中能够更加轻松地应对地理信息相关的功能需求,提升项目的开发效率和质量,为推动地理信息系统技术在更多领域的应用贡献一份力量。行文仓促,难免有许多不足之处,如有不足,在此恳请各位专家博主在评论区不吝留言指出,不胜感激。

        参考内容:

        1、HTTP客户端框架之UniHttp讲解。

        2、天地图驾车服务API。

相关文章:

在SpringBoot中使用UniHttp简化天地图路径规划调用实践

目录 写在最前面 前言 一、天地图路径规划简介 1、天地图相关服务 2、天地图路径规划接口 二、UniHttp简介 1、UniHttp是什么&#xff1f; 2、UniHttp能做什么&#xff1f; 三、UniHttp调用天地图接口 1、请求接口的定义 2、实际调用 3、相应结果展示 四、总结 写在…...

springboot与Freemarker

1 基本使用 1.1 介绍 FreeMarker 是一款模板引擎&#xff1a; 即一种基于模板和要改变的数据&#xff0c;并用来生成输出文本(HTML网页&#xff0c;电子邮件&#xff0c;配置文件&#xff0c;源代码等)的通用工具。 是一个Java类库。 FreeMarker 被设计用来生成 HTML Web 页面…...

CMake无法生成可执行文件,一直生成库文件

CMakeLists的内容如下&#xff0c;一直生成的main是库文件&#xff0c;而不是可执行文件。本人是在进行鸿蒙的交叉编译的时候遇到&#xff0c;归结为cmake属性的差异。原内容如下&#xff1a; # 设置最低CMake版本要求 cmake_minimum_required (VERSION 2.8.0)# 设置项目名称 …...

PrimeFaces实战:IdleMonitor与Ajax的完美结合

在现代的Web开发中&#xff0c;用户交互的实时反馈是一个重要的用户体验环节。PrimeFaces作为一个强大的Java EE UI库&#xff0c;提供了许多便捷的功能组件&#xff0c;其中之一就是IdleMonitor。通过IdleMonitor&#xff0c;我们可以轻松地检测用户何时处于空闲状态以及何时从…...

搭建一个经典的LeNet5神经网络

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络 一、LeNet-5背景 LeNet-…...

Transformer多头注意力并行计算原理与工业级实现:从数学推导到PyTorch工程优化

一、核心数学原理剖析 1.1 多头注意力矩阵分解 Q XW^Q ∈ R^{nd_k} K XW^K ∈ R^{nd_k} V XW^V ∈ R^{nd_v} 多头分解公式&#xff1a; head_i Attention(QW_i^Q, KW_i^K, VW_i^V) 其中 W_i^Q ∈ R^{d_kd_k/h}, W_i^K ∈ R^{d_kd_k/h}, W_i^V ∈ R^{d_vd_v/h} (h为头数…...

OpenAI 的变化对行业意味着什么?

哎呀&#xff0c;中国AI的发展可是搅动了一番风云。害怕自己正在失去对 AI 话语权的掌控&#xff0c;OpenAI 决定是时候全力出击了。 除了最近意外发布的 o3-mini 模型之外&#xff0c;Sam Altman 昨天还宣布了接下来几周/几个月的路线图&#xff0c;而这些变化相当显著&#…...

LinkedList

一.IDEA的链表库 IDEA上实现链表的包&#xff0c;实现的是无头双向不循环链表&#xff1a;&#xff08;并且这个链表有头尾节点&#xff09; 二.自己实现一个无头双向不循环链表 1.创建链表的类&#xff0c;在链表内中定义一个节点的内部类&#xff0c;并且在链表的类中定义头…...

半遮挡检测算法 Detecting Binocular Half-Occlusions

【1. 背景】&#xff1a; 本文分析【Detecting Binocular Half-Occlusions&#xff1a;Empirical Comparisons of Five Approaches】Geoffrey Egnal和Richard P. Wildes于2002年发表在IEEE Transactions on Pattern Analysis and Machine Intelligence上&#xff0c;这是1篇中…...

零基础购买阿里云服务器,XShell连接云服务器

目录 1.环境搭建方式 2. 使用云服务器 3.使用终端软件登录到Linux 4.使用XShell登录主机 5.连接失败的原因&#xff1a; 下一篇更新&#xff1a;Linux的基础指令以及如何Linux的环境搭建 1.环境搭建方式 主要有四种: 1.直接安装在物理机上&#xff0c;虽然Linux有图形化…...

Mac ARM 架构的命令行(终端)中,删除整行的快捷键是:Ctrl + U

在 Mac ARM 架构的命令行&#xff08;终端&#xff09;中&#xff0c;删除整行的快捷键是&#xff1a; Ctrl U这个快捷键会删除光标所在位置到行首之间的所有内容。如果你想删除光标后面的所有内容&#xff0c;可以使用&#xff1a; Ctrl K这两个快捷键可以帮助你快速清除当…...

ESP学习-1(MicroPython VSCode开发环境搭建)

下载ESP8266固件&#xff1a;https://micropython.org/download/ESP8266_GENERIC/win电脑&#xff1a;pip install esptools python.exe -m pip install --upgrade pip esptooo.py --port COM5 erase_flash //清除之前的固件 esptool --port COM5 --baud 115200 write_fla…...

微信小程序性能优化

微信小程序的性能优化是提升用户体验的关键。以下是一些常见的优化策略和技巧&#xff1a; 1. 减少 setData 的调用频率和数据量 setData 是小程序中更新视图的主要方式&#xff0c;但频繁调用或数据量过大会导致性能问题。 减少调用频率&#xff1a;避免在短时间内多次调用…...

五十天精通硬件设计第31天-阻抗

系列文章传送门 50天精通硬件设计第一天-总体规划-CSDN博客 目录 1. 核心概念:特性阻抗 2. 阻抗不匹配的后果 3. 关键影响因素 4. 阻抗匹配方法 5. 设计实践要点 6. 工具与测试 7. 常见问题解决 总结 信号完整性中的阻抗问题主要涉及传输线的特性阻抗匹配,是确保高…...

docker部署dify结合deepseek构建知识库

序 本文主要研究一下本地docker部署dify结合deepseek构建知识库 步骤 dify git clone https://github.com/langgenius/dify.git git co tags/0.15.3 -b 0.15.3 cd docker cp .env.example .env docker-comopse up启动之后访问localhost docker-comopse.yaml # # WARNING…...

11.C语言 malloc() calloc() realloc()分配内存

目录 malloc 好处 坏处 总结 calloc 参数说明 作用 与 malloc 的区别 示例 优点 缺点 总结 realloc 参数说明 作用 示例 优点 缺点 注意事项 总结 总结区别 对比表格 malloc 函数功能&#xff1a;分配内存给 void* malloc(size_t size); 来看一下deep…...

可信大模型:LLM + 神经符号推理,解决复杂推理任务

可信大模型&#xff1a;LLM 神经符号推理&#xff0c;解决复杂推理任务 论文大纲一、Why&#xff1a;研究要解决的现实问题二、What&#xff1a;核心发现或论点三、How&#xff1a;研究的整体方法与关键细节3.1 前人研究的局限性3.2 创新方法/视角3.3 关键数据或实验支持3.4 可…...

基于大数据的全国热门旅游景点数据分析系统的设计与实现

【大数据】基于大数据的全国热门旅游景点数据分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统主要包括登录注册、系统首页、图表分析、数据管理和个人信息五大功能模…...

Moya 网络框架

Moya 网络框架 定义enum类型&#xff0c;有多种接口就定义多少种&#xff0c;然后实现TargetType协议 import Foundation //导入网络框架 import Moyaenum DefaultService {//广告列表case ads(position : Int)case sheets(size:Int)case sheetDetail(data: String)case regi…...

【环境安装】重装Docker-26.0.2版本

【机器背景说明】Linux-Centos7&#xff1b;已有低版本的Docker 【目标环境说明】 卸载已有Docker&#xff0c;用docker-26.0.2.tgz安装包安装 1.Docker包下载 下载地址&#xff1a;Index of linux/static/stable/x86_64/ 2.卸载已有的Docker 卸载之前首先停掉服务 sudo…...

std::ranges::set_intersection set_union set_difference set_symmetric_difference

std::ranges::set_intersection&#xff1a;是 C20 引入的一个算法&#xff0c;用于计算两个已排序范围的交集。它将两个范围的交集元素复制到输出范围中。 std::ranges::set_intersection 用于计算两个已排序范围的交集。它将两个范围的交集元素复制到输出范围中。 注意事项…...

消息中间件深度剖析:以 RabbitMQ 和 Kafka 为核心

在现代分布式系统和微服务架构的构建中&#xff0c;消息中间件作为一个不可或缺的组件&#xff0c;承担着系统间解耦、异步处理、流量削峰、数据传输等重要职能。尤其是在面临大规模并发、高可用性和可扩展性需求时&#xff0c;如何选择合适的消息中间件成为了开发者和架构师们…...

笔试题笔记#6 模拟三道题和总结知识

两小时快乐模拟&#xff0c;最终三百分耻辱下播&#xff0c;&#xff08;刷的题三道一组&#xff0c;时长两小时&#xff0c;第一题100分&#xff0c;第二题200分&#xff0c;第三题300分&#xff09;&#xff0c;第三题完全想错了&#xff0c;其实挺简单的&#xff0c;就是好久…...

生成对抗网络(GAN)的“对抗“过程解析:从图像合成到药物发现的跨领域应用

技术原理&#xff08;数学公式示意图&#xff09; 核心对抗公式 min ⁡ G max ⁡ D V ( D , G ) E x ∼ p d a t a [ log ⁡ D ( x ) ] E z ∼ p z [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D,G) \mathbb{E}_{x\sim p_{data}}[\log D(x)] \mathbb{E}_{z\sim p_…...

[鸿蒙笔记-基础篇_自定义构建函数及自定义公共样式]

在开发中遇到比较复杂的界面的时候都会用到自定义组件&#xff0c;但是在自定义组件内部也会有一些公共的布局及公共的样式&#xff0c;这时就需要用到自定义构建函数和自定义构建样式。说白了就是&#xff1a;在ets文件中进行构建函数和构建样式的抽取封装。比较常用记录一下。…...

【C】初阶数据结构4 -- 双向循环链表

之前学习的单链表相比于顺序表来说&#xff0c;就是其头插和头删的时间复杂度很低&#xff0c;仅为O(1) 且无需扩容&#xff1b;但是对于尾插和尾删来说&#xff0c;由于其需要从首节点开始遍历找到尾节点&#xff0c;所以其复杂度为O(n)。那么有没有一种结构是能使得头插和头删…...

【动态路由】系统Web URL资源整合系列(后端技术实现)【nodejs实现】

需求说明 软件功能需求&#xff1a;反向代理功能&#xff08;描述&#xff1a;apollo、eureka控、apisix、sentinel、普米、kibana、timetask、grafana、hbase、skywalking-ui、pinpoint、cmak界面、kafka-map、nacos、gateway、elasticsearch、 oa-portal 业务应用等多个web资…...

解读 Flink Source 接口重构后的 KafkaSource

前言 Apache Kafka 和 Apache Flink 的结合&#xff0c;为构建实时流处理应用提供了一套强大的解决方案[1]。Kafka 作为高吞吐量、低延迟的分布式消息队列&#xff0c;负责数据的采集、缓冲和分发&#xff1b;而 Flink 则是功能强大的流处理引擎&#xff0c;负责对数据进行实时…...

一场始于 Selector Error 的拯救行动:企查查数据采集故障排查记

时间轴呈现事故进程 17:00&#xff1a;开发人员小李正在尝试利用 Python 爬虫从企查查&#xff08;https://www.qcc.com&#xff09;抓取公司工商信息。原本一切正常&#xff0c;但突然发现信息采集失败&#xff0c;程序抛出大量选择器错误。17:15&#xff1a;小李发现&#x…...

代码随想录刷题攻略---动态规划---子序列问题1---子序列

子序列&#xff08;不连续&#xff09;和子序列&#xff08;连续&#xff09;的问题 例题1: 最长递增子序列 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的…...

QEMU 搭建arm linux开发环境

Qemu 作为一款强大的开源虚拟化软件&#xff0c;为我们提供了一个便捷且经济实惠的方式来模拟各种硬件环境&#xff0c;从而在上面安装和学习 Linux 系统。本文将详细介绍如何使用 Qemu 搭建 Linux 学习环境&#xff0c; 环境准备 操作系统&#xff1a;建议使用 Ubuntu 20.04…...

PyQt组态软件 拖拽设计界面测试

PyQt组态软件测试 最近在研究PyQt,尝试写个拖拽设计界面的组态软件&#xff0c;目前实现的功能如下&#xff1a; 支持拖入控件&#xff0c;鼠标拖动控件位置 拖动控件边缘修改控件大小支持属性编辑器&#xff0c;修改当前选中控件的属性 拖动框选控件&#xff0c;点选控件 控…...

JAVA泛型介绍与举例

Java中&#xff0c;泛型用于编译阶段限制集合中元素的类型&#xff0c;或者限制类中某个属性的类型&#xff0c;编译过程中发生类型擦除&#xff0c;最终还是Object类型。 1. 集合中的泛型 集合默认可以存储任何类型的元素&#xff0c;即Object类型&#xff0c;当使用一个集合…...

JavaScript 内置对象-Math对象

在JavaScript中&#xff0c;Math 对象提供了一系列与数学相关的静态方法和属性&#xff0c;帮助开发者执行复杂的计算任务。无论是简单的算术运算还是高级的几何、统计计算&#xff0c;Math 对象都能提供强大的支持。本文将详细介绍 Math 对象的主要功能及其使用方法。 一、简…...

Ubuntu 22.04 Desktop企业级基础配置操作指南

一、网络配置 cd /etc/netplan vi 00-installer-config.yaml 设置如下所示&#xff1a; network:version: 2ethernets:eth0: # 替换为你的实际网络接口名称&#xff0c;如 ens33, enp0s3 等dhcp4: noaddresses:- 192.168.1.100/24 # 静态IP地址和子网掩码gateway4: 192.16…...

UE_C++ —— UObject Instance Creation

目录 一&#xff0c;UObject Instance Creation NewObject NewNamedObject ConstructObject Object Flags 二&#xff0c;Unreal Object Handling Automatic Property Initialization Automatic Updating of References Serialization Updating of Property Values …...

WPF的MVVMLight框架

在NuGet中引入该库&#xff1a; MVVMLight框架中的命令模式的使用&#xff1a; <StackPanel><TextBox Text"{Binding Name}"/><TextBox Text"{Binding Title}"/><Button Content"点我" Command"{Binding ShowCommand…...

【云安全】云原生- K8S kubeconfig 文件泄露

什么是 kubeconfig 文件&#xff1f; kubeconfig 文件是 Kubernetes 的配置文件&#xff0c;用于存储集群的访问凭证、API Server 的地址和认证信息&#xff0c;允许用户和 kubectl 等工具与 Kubernetes 集群进行交互。它通常包含多个集群的配置&#xff0c;支持通过上下文&am…...

binance python

binance-futures-connector 4.1.0 from binance.um_futures import UMFutures # U本位 USDT-M Futures /fapi/* # 币本位 COIN-M Delivery /dapi/* proxies { https: http://localhost:7890 } client UMFutures(proxiesproxies)apiKey"" apiSecret"" cl…...

LLaMA-Factory DeepSeek-R1 模型 微调基础教程

LLaMA-Factory 模型 微调基础教程 LLaMA-FactoryLLaMA-Factory 下载 AnacondaAnaconda 环境创建软硬件依赖 详情LLaMA-Factory 依赖安装CUDA 安装量化 BitsAndBytes 安装可视化微调启动 数据集准备所需工具下载使用教程所需数据合并数据集预处理 DeepSeek-R1 可视化微调数据集处…...

利用亚马逊云科技RDS for SQL Server配置向量数据存储

生成式人工智能&#xff08;AI&#xff09;正迎来又一个快速发展期&#xff0c;引起了开发者们的广泛关注。将生成式能力集成到商业服务和解决方案中变得非常重要。当前的生成式AI解决方案是机器学习和深度学习模型逐步进化迭代的结果。从深度学习到生成式AI的质变飞跃主要是由…...

ASP.NET Core SixLabors.ImageSharp v1.0 的图像实用程序类 web示例

这个小型实用程序库需要将 NuGet SixLabors.ImageSharp包&#xff08;版本 1.0.4&#xff09;添加到.NET Core 3.1/ .NET 6 / .NET 8项目中。它与Windows、Linux和 MacOS兼容。 这已针对 ImageSharp v3.0.1 进行了重新设计。 它可以根据百万像素数或长度乘以宽度来调整图像大…...

JVM 底层探秘:对象创建的详细流程、内存分配机制解析以及线程安全保障策略

文章目录 1. 类加载检查2. 内存分配① 指针碰撞② 空闲列表线程安全问题&#xff1a; 3. 内存空间初始化4. 对象头设置5. 对象初始化 当Java虚拟机遇到一条 new指令时&#xff0c;会执行以下步骤来创建对象&#xff1a; 1. 类加载检查 首先检查new指令的参数是否能在常量池中…...

SpringCloud框架下的注册中心比较:Eureka与Consul的实战解析

摘要 在探讨SpringCloud框架中的两种注册中心之前&#xff0c;有必要回顾单体架构与分布式架构的特点。单体架构将所有业务功能集成在一个项目中&#xff0c;优点是架构简单、部署成本低&#xff0c;但耦合度高。分布式架构则根据业务功能对系统进行拆分&#xff0c;每个模块作…...

应对DeepSeek总是服务器繁忙的解决方法

最近由于访问量过大&#xff0c;DeepSeek服务器官网经常弹出&#xff1a;“服务器繁忙&#xff0c;请稍后再试”的提示&#xff0c;直接卡成PPT怎么办&#xff1f;服务器繁忙直接看到视觉疲劳&#xff1a; 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题&#xff0c;是因为访问量…...

C++ 实践扩展(Qt Creator 联动 Visual Studio 2022)

​ 这里我们将在 VS 上实现 QT 编程&#xff0c;实现如下&#xff1a; 一、Vs 2022 配置&#xff08;若已安装&#xff0c;可直接跳过&#xff09; 点击链接&#xff1a;​​​​​Visual Studio 2022 我们先去 Vs 官网下载&#xff0c;如下&#xff1a; 等待程序安装完成之…...

JENKINS(全面)

一.linux系统中JENKINS的安装 注意&#xff1a;安装jenkins需要安装jdk&#xff0c;而且具体版本的jenkins有相对应的jdk版本。可参考以下链接。 Redhat Jenkins 软件包https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/redhat-stable/https://pkg.jenkins.io/r…...

72.git指南(简单)

Git 操作指南 在开始之前&#xff0c;请确保你已经提前配置好 .gitignore 文件&#xff0c;以避免不必要的文件被 Git 跟踪。如果在初始化仓库后再配置 .gitignore 文件&#xff0c;之前添加的文件仍会被跟踪&#xff0c;需要手动移除。 如下例子忽略了文件夹及文件夹内所有内…...

LeetCode 232: 用栈实现队列

LeetCode 232: 用栈实现队列 题目描述 使用栈实现队列的操作。支持以下操作&#xff1a; MyQueue()&#xff1a;初始化队列。push(x)&#xff1a;将元素 x 推入队列。pop()&#xff1a;从队列中移除元素。peek()&#xff1a;返回队列头部的元素。empty()&#xff1a;检查队列…...

C#关于静态关键词static详解

Demo代码&#xff1a; public class HomeController : Controller {private DateTime time1 DateTime.Now; // 实例字段private static DateTime time2 DateTime.Now; // 静态字段[HttpGet("index")]public async Task Index(){Console.WriteLine($"now&am…...