高德地图 JS-SDK 实现教程
高德地图 JS-SDK 实现教程:定位、地图选点、地址解析等
适用地点选择、地址显示、表单填写等场景,全面支持移动端、手机浏览器和 PC端环境
一、创建应用&Key
前端(JS-SDK、地图组件)
- 登陆 高德开放平台
- 创建应用,示例名:
MapSelectorApp
- 添加 Key:选择“Web端(JS API)”
- 配置域名白名单(如
yourdomain.com
、*.yourdomain.com
)
后端(Web服务 API)
- 方便在后端调用
https://restapi.amap.com/v3/geocode/regeo
- 选择服务平台为 Web服务
- 推荐单独创建一个 Web 服务 Key,与前端分离管理
- 配置 IP 白名单
二、前端 HTML 实现
环境依赖
<script src="https://webapi.amap.com/maps?v=2.0&key=替换为你的高德地图 JSAPI KEY"></script>
基础组件
<div id="controls"><button onclick="locateUser()">📍 定位当前位置</button><button onclick="confirmSelection()">✅ 确认选点</button><div id="address">地址信息:-</div>
</div>
<div id="container"></div>
核心 JS 逻辑 (amap.js)
let map, marker, selectedLngLat;
window.onload = function () {map = new AMap.Map("container", { resizeEnable: true, zoom: 14 });locateUser();map.on("click", e => {selectedLngLat = e.lnglat;addMarker(e.lnglat);reverseGeocode(e.lnglat);});
};function addMarker(pos) {if (!marker) marker = new AMap.Marker({ position: pos, map });else marker.setPosition(pos);
}function locateUser() {AMap.plugin('AMap.Geolocation', function () {const geo = new AMap.Geolocation({ enableHighAccuracy: true, timeout: 10000 });map.addControl(geo);geo.getCurrentPosition((status, result) => {if (status === 'complete') {const pos = result.position;map.setCenter(pos);addMarker(pos);selectedLngLat = pos;reverseGeocode(pos);} else {alert("定位失败:" + result.message);}});});
}function reverseGeocode(lnglat) {fetch(`/amap/reverse-geocode?lng=${lnglat.lng}&lat=${lnglat.lat}`).then(res => res.json()).then(data => {document.getElementById("address").innerText = data.address ? `地址信息:${data.address}` : `⚠️ 地址解析失败`}).catch(err => {console.error(err);document.getElementById("address").innerText = "⚠️ 网络或服务器错误";});
}function confirmSelection() {if (!selectedLngLat) return alert("请选择地点");const text = document.getElementById("address").innerText;alert(`✅ 选点结果\n经纬度: ${selectedLngLat.lng}, ${selectedLngLat.lat}\n${text}`);
}
三、Spring Boot 后端 API
接口 URL
GET /amap/reverse-geocode?lng=113.83&lat=22.79
管理 Controller
@RestController
@RequestMapping("/amap")
public class AmapController {@Autowired private AmapService amapService;@GetMapping("/reverse-geocode")public ResponseEntity<?> reverseGeocode(@RequestParam("lng") double lng, @RequestParam("lat") double lat) {try {String address = amapService.getAddressFromCoordinates(lng, lat);return ResponseEntity.ok(Map.of("address", address));} catch (Exception e) {return ResponseEntity.status(500).body("\u5730\u5740\u89e3\u6790\u5931\u8d25: " + e.getMessage());}}
}
地址解析 Service
@Service
public class AmapService {private static final String AMAP_KEY = "替换你的Web服务Key";private static final String GEOCODE_URL = "https://restapi.amap.com/v3/geocode/regeo";public String getAddressFromCoordinates(double lng, double lat) {UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(GEOCODE_URL).queryParam("key", AMAP_KEY).queryParam("location", lng + "," + lat).queryParam("output", "json");RestTemplate restTemplate = new RestTemplate();Map<String, Object> response = restTemplate.getForObject(builder.toUriString(), Map.class);if (response == null || !"1".equals(response.get("status"))) {throw new RuntimeException("\u5730\u5740\u89e3\u6790API\u5931\u8d25:" + response);}Map<String, Object> regeocode = (Map<String, Object>) response.get("regeocode");if (regeocode == null || regeocode.get("formatted_address") == null) {throw new RuntimeException("\u65e0\u6709\u6548\u5730\u5740");}return (String) regeocode.get("formatted_address");}
}
四、配置 WireGuard 分流网络
目标:仅展前后端 API 请求进入高德手机服务器
WireGuard 配置示例
[Peer]
AllowedIPs = 120.77.134.0/24, 2408:4003::/32
Endpoint = [你的防火墙服务器]:51820
可用 nslookup restapi.amap.com 查看实际服务器 IP
五、如何获取域名的 IP 地址
为了精准设置 WireGuard 的路由规则,我们需要获取目标域名的实际 IP。
✅ 方法一:命令行使用 nslookup
nslookup restapi.amap.com
返回示例:
服务器: dns.google
Address: 8.8.8.8非权威应答:
名称: restapi.amap.com.gds.alibabadns.com
Addresses: 2408:4003:1f10::2b42408:4003:1f40::2e5120.77.134.57
Aliases: restapi.amap.com
✅ 方法二:使用 ping
ping restapi.amap.com
输出结果将包含类似:
正在 Ping restapi.amap.com.gds.alibabadns.com [120.77.134.169] 具有 32 字节的数据:
来自 120.77.134.169 的回复: 字节=32 时间=59ms TTL=95
来自 120.77.134.169 的回复: 字节=32 时间=70ms TTL=95
来自 120.77.134.169 的回复: 字节=32 时间=76ms TTL=95
来自 120.77.134.169 的回复: 字节=32 时间=58ms TTL=95120.77.134.169 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 58ms,最长 = 76ms,平均 = 65ms
✅ 方法三:使用在线工具查询 IP
- https://tool.chinaz.com/dns
- https://dnschecker.org
- https://ip138.com
✅ 如何使用这些 IP
将得到的 IPv4 地址(如 120.77.134.57
)用于你的代理配置中:
AllowedIPs = 120.77.134.57/32
结论
组件 | Key类型 | 权限 | 简述 |
---|---|---|---|
前端 JS SDK | Web端 JS API | 需配置域名 | 显示地图,选点,定位 |
后端 API | Web 服务 Key | 需配置 IP | 进行地址解析 |
附录:完整文件(可自行补全代码)
pom.xml ✅
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>DemoAPI</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><!-- Spring Boot 父项目 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.5</version><relativePath/></parent><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Spring Boot Web 模块(包含内嵌 Tomcat) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 开发工具(自动重启,非必须) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>
amap.html ✅
<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8" /><title>地图选点</title><style>html, body, #container {height: 100%; width: 100%; margin: 0; padding: 0;}#controls {position: absolute;top: 10px;left: 10px;z-index: 999;background: rgba(255, 255, 255, 0.9);padding: 8px 12px;border-radius: 6px;box-shadow: 0 0 5px #ccc;}#controls button {margin-right: 10px;padding: 6px 12px;font-size: 14px;cursor: pointer;}</style><!-- 替换为你的高德地图 JSAPI KEY --><script src="https://webapi.amap.com/maps?v=2.0&key=替换为你的高德地图 JSAPI KEY"></script>
</head>
<body>
<div id="controls"><button onclick="locateUser()">📍 定位当前位置</button><button onclick="confirmSelection()">✅ 确认选点</button><div id="address">地址信息:-</div>
</div>
<div id="container"></div><!-- 引入地图逻辑 JS -->
<script src="../js/amap.js"></script></body>
</html>
amap.js ✅
let map;
let marker = null;
let selectedLngLat = null;window.onload = function () {map = new AMap.Map("container", {resizeEnable: true,zoom: 14});// 自动定位locateUser();// 地图点击选点map.on("click", function (e) {const lnglat = e.lnglat;addMarker(lnglat);selectedLngLat = lnglat;reverseGeocode(lnglat);});
};function addMarker(lnglat) {if (!marker) {marker = new AMap.Marker({position: lnglat,map: map});} else {marker.setPosition(lnglat);}
}function locateUser() {AMap.plugin('AMap.Geolocation', function () {const geo = new AMap.Geolocation({enableHighAccuracy: true,timeout: 10000,showButton: false});map.addControl(geo);geo.getCurrentPosition(function (status, result) {if (status === 'complete') {const position = result.position;map.setCenter(position);addMarker(position);selectedLngLat = position;reverseGeocode(position);} else {alert("定位失败:" + result.message);}});});
}function reverseGeocode(lnglat) {fetch(`/amap/reverse-geocode?lng=${lnglat.lng}&lat=${lnglat.lat}`).then(res => res.json()).then(data => {if (data.address) {document.getElementById("address").innerText = "地址信息:" + data.address;} else {document.getElementById("address").innerText = "⚠️ 地址解析失败,仅返回坐标";}}).catch(err => {console.error(err);document.getElementById("address").innerText = "⚠️ 网络或服务器错误";});
}function confirmSelection() {if (!selectedLngLat) {alert("请先在地图上点击选点或使用定位");return;}const text = document.getElementById("address").innerText;alert("✅ 选点结果:\n经纬度:" + selectedLngLat.lng + ", " + selectedLngLat.lat + "\n" + text);
}
AmapService ✅
package org.example.service;import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;import java.util.HashMap;
import java.util.Map;/*** ==================================================* This class AmapService is responsible for [高德地图服务类].** @author Darker* @version 1.0* ==================================================*/@Service
public class AmapService {private static final String AMAP_KEY = "替换你的高德地图的 WEB KEY";private static final String GEOCODE_URL = "https://restapi.amap.com/v3/geocode/regeo";public String getAddressFromCoordinates(double lng, double lat) {RestTemplate restTemplate = new RestTemplate();UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(GEOCODE_URL).queryParam("key", AMAP_KEY).queryParam("location", lng + "," + lat).queryParam("output", "json");Map<String, Object> response = restTemplate.getForObject(builder.toUriString(), Map.class);if (response == null || !"1".equals(response.get("status"))) {throw new RuntimeException("高德地址解析失败,返回状态:" + response);}// 解析 formatted_addressMap<String, Object> regeocode = (Map<String, Object>) response.get("regeocode");if (regeocode == null || regeocode.get("formatted_address") == null) {throw new RuntimeException("未能获取到地址信息");}return (String) regeocode.get("formatted_address");}
}
AmapController ✅
package org.example.controller;import org.example.service.AmapService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;import java.util.Collections;/*** ==================================================* This class AmapController is responsible for [功能描述].** @author Darker* @version 1.0* ==================================================*/@RestController
@RequestMapping("/amap")
public class AmapController {@Autowiredprivate AmapService amapService;@GetMapping("/reverse-geocode")public ResponseEntity<?> reverseGeocode(@RequestParam("lng") double lng, @RequestParam("lat") double lat) {try {String address = amapService.getAddressFromCoordinates(lng, lat);return ResponseEntity.ok(Collections.singletonMap("address", address));} catch (Exception e) {return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("地址解析失败: " + e.getMessage());}}
}
相关文章:
高德地图 JS-SDK 实现教程
高德地图 JS-SDK 实现教程:定位、地图选点、地址解析等 适用地点选择、地址显示、表单填写等场景,全面支持移动端、手机浏览器和 PC端环境 一、创建应用&Key 前端(JS-SDK、地图组件) 登陆 高德开放平台创建应用,…...
【信息系统项目管理师】高分论文:论信息系统项目的整合管理(银行数据仓库项目)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 正文一、制定项目章程二、制定项目管理计划三、指导和管理项目的实施四、管理项目知识五、监控项目工作六、实施整体变更控制七、结束项目或阶段正文 2023年6月,我以项目经理的身份,参加了 xx银行xx省分行数…...
dev中使用auto的方法
在dev-c中使用新特性是一样的道理,在他启动编译器来编译代码的时候我们让他加上这个参数就行了,设置方法是:在Tools里面找到Compiler Options打开它,然后把那个Add the following commands when calling compiler:选上勾,在里面加…...
C 语言中经典的数据结构
在 C 语言中,经典的数据结构通常包括以下几种,每种都有其特定的应用场景和实现方式: 1. 数组(Array) 定义:连续内存空间存储相同类型的数据。 特点:随机访问快(O(1))&am…...
小白学习java第12天(下):网络编程
上面我们了解TCP就是三次握手!!! 下面我们就详细介绍一下UDP,就是进行发包(TCP协议类似于就是打电话,你必须进行连接才能进行传输,但是UDP类似于发消息,连不连接我都是可以的&#…...
论文精度:双分支图Transformer网络:视频驱动的3D人体网格重建新突破
论文地址:https://arxiv.org/pdf/2412.01179 目录 一、背景与问题定义 1.1 3D人体网格重建的意义 1.2 现有方法的困境 二、核心创新:DGTR网络架构 2.1 整体框架设计 2.2 全局运动感知分支(GMA) 2.3 局部细节优化分支(LDR) 2.3.1 局部信息聚合 2.3.2 调制图卷积…...
华三IRF堆叠技术
IRF(Intelligent Resilient Framework,智能弹性架构)是华三通信(H3C)自主研发的网络设备虚拟化技术,通过将多台物理设备整合为单一逻辑设备,实现统一管理、高可靠性和灵活扩展。以下是其核心要点…...
第一阶段补充知识
目录 书写脚本使用的相关知识? 备份和冗灾的区别?什么叫DD备份,什么叫DD冗灾? 关于Linux系统优化以及Linux的安全加固? 系统优化 硬件系统优化: 内核参数优化: 网络性能优化: 进程管…...
STM32 HAL库 L298N电机驱动模块实现
一、引言 在机器人、自动化设备等众多应用场景中,电机驱动是一个关键的部分。L298N 是一款常用的电机驱动模块,它可以驱动两个直流电机或一个步进电机。STM32F407 是一款高性能的 ARM Cortex-M4 内核微控制器,结合 HAL 库可以方便地实现对 L…...
Redis的Key的过期策略
我们都知道Redis的键值对是可以设置过期时间的,那么就会涉及到一个问题,Redis到底是如何做到响应快的同时有能快速地释放掉过期的键值对的呢?不卖关子了,直接说答案,那就是Redis两个策略:定期删除和惰性删除…...
ubuntu桌面版使用root账号进行登录
这里写自定义目录标题 第一步:给root账户设置密码,并切换至root账户第二步:注释gdm-autologin文件内的相关内容第三步:注释gdm-password文件内的相关内容第四步:重启系统即可使用root账户登录 第一步:给roo…...
贪心算法(18)(java)距离相等的条形码
在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。 请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。 示例 1: 输入:barco…...
CentOS服务器能ping通却无法yum install:指定镜像源解决
文章目录 前言一、问题记录二、解决过程1.修改DNS无效2.指定镜像源 总结 前言 今天有一个项目现场要在一个远程centos服务器上部署产品服务,发现能ping通百度,但是无法yum install 安装基础软件包,开始以为DNS服务器的问题,结果配…...
WebSocket与MQTT
在物联网(IoT)领域,WebSocket和MQTT确实都可以实现实时通信,但它们的核心设计目标、适用场景和角色存在显著差异。以下是两者的对比分析: 1. 协议设计初衷 WebSocket 目标:提供浏览器与服务器…...
【论文解读】MSVM-UNet: Multi-Scale Vision Mamba UNet for Medical Image Segmentation
MSVM-UNet: Multi-Scale Vision Mamba UNet for Medical Image Segmentation 论文链接: https://arxiv.org/abs/2408.13735 Code: https://github.com/gndlwch2w/msvm-unet 来源: 2024 IEEE International Conference on Bioinformatics an…...
Vue表单组件el-form校验规则rules,条件判断rules表单验证显示必填或非必填
在使用 Element UI(一个基于 Vue 的前端框架)的表单验证功能时,你可能想要实现一个规则,使得某些字段在特定条件下成为必填项,或者在满足某些条件时不允许为空。这通常通过自定义校验规则来实现。 <template>&l…...
手动关闭ArcGIS与ArcGIS Online连接的方法
【关闭软件启动时ArcGIS与ArcGIS Online连接方法】 打开C盘找到文件夹“C:\Program Files (x86)\Common Files\ArcGIS\bin”,如下图,删除“ArcGISConnection.exe”与“ArcGISConnectionTest.exe”文件,软件下次启动的时候就不会建立与ArcGIS …...
(二十五)安卓开发一个完整的登录页面-支持密码登录和手机验证码登录
下面将详细讲解如何在 Android 中开发一个完整的登录页面,支持密码登录和手机验证码登录。以下是实现过程的详细步骤,从布局设计到逻辑实现,再到用户体验优化,逐步展开。 1. 设计登录页面布局 首先,我们需要设计一个用…...
【过程控制系统】PID算式实现,控制系统分类,工程应用中控制系统应该注意的问题
目录 1-1 试简述过程控制的发展概况及各个阶段的主要特点。 1-2 与其它自动控制相比,过程控制有哪些优点?为什么说过程控制的控制过程多属慢过程? 1-3 什么是过程控制系统,其基本分类是什么? 1-4 何为集散控制系统…...
测试第三课-------自动化测试相关
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
关于数据清洗和数据处理实践学习笔记
一些可能想要知道的: pandas是一个模板,它读取的数据都是dataframe的格式,即df Matplotlib是一个用于数据可视化的Python库,能够生成各种静态、动态和交互式图表 pyplot:Matplotlib 的核心接口模块,提供类…...
ubuntu学习day2
linux常用命令 3.文件查看及处理命令 3.1查看文件内容 cat[选项][文件] -b 对非空输出行编号 -E 在每行结束处显示$ -n 对输出的所有行编号 -s 不输出多行空行 标准输入、标准输出和标准错误 在 Linux 中,每个进程默认有三个文件描述符: 标准输入&…...
JavaScript `new Date()` 方法移动端 `兼容 ios`,ios环境new Date()返回NaN
在 iOS 环境下,new Date() 方法会返回 NaN,这通常是由于时间字符串的格式问题。iOS 的 Date 构造函数对时间字符串的格式要求比其他平台更严格。 原因:ios端不兼容“-”为连接符的时间。 解决办法: 替换时间格式 IOS 不支持某…...
考研408参考用书:计算机组成原理(唐朔飞)介绍,附pdf
我用夸克网盘分享了「《计算机组成原理》第2,3版 唐朔飞」, 链接:https://pan.quark.cn/s/6a87d10274a3 1. 书籍定位与适用对象 定位:计算机组成原理是计算机科学与技术、软件工程等专业的核心基础课程,涉及计算机硬件的底层工作原…...
案例-索引对于并发Insert性能优化测试
前言 最近因业务并发量上升,开发反馈对订单表Insert性能降低。应开发要求对涉及Insert的表进行分析并提供优化方案。 一般对Insert 影响基本都在索引,涉及表已按创建日期做了分区表,索引全部为普通索引未做分区索引。 优化建议ÿ…...
@Async 为什么要自定义线程池,使用默认线程池风险
为什么要自定义线程池而非使用默认线程池 使用Spring的Async注解时,如果不自定义线程池而使用默认线程池,可能会带来一些风险和问题。以下是主要原因: 默认线程池的风险 无限制的资源消耗 默认线程池使用SimpleAsyncTaskExecutor࿰…...
Spark-SQL简介与编程
1. Spark-SQL是什么 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 Hadoop与Spark的对比 Hadoop的局限性 Hadoop无法处理结构化数据,导致一些项目无法推进。 例如,MySQL中的数据是结构化的,Hadoop无法直接处理。…...
如何分析 JVM OOM 内存溢出 Dump 快照日志
文章目录 1、需求背景2、OOM 触发3、Dump 日志分析 1、需求背景 企业开发过程中,如果系统服务客户量比较大,偶尔会出现OOM内存溢出问题,导致服务发生宕机,停止对外提供访问。 这种情况就需要排查定位内存溢出的原因(…...
系统监控 | 简易多个内网服务器的CPU和内存使用率监控 system_moniter
效果图 原理 一台主机A上运行mysql数据库,接收数据。 其他主机设置定时任务,每6分钟发送一次自己的CPU和内存使用百分数到主机A。 主机A上提供flask为后台的可视化网页,见上图。 源码库 https://github.com/BioMooc/system_moniterhttps:/…...
【神经网络】python实现神经网络(四)——误差反向传播的基础理论
一.反向传播 本章将介绍能够高效计算权重参数的梯度的方法——误差反向传播法,这里简单介绍一下什么是反向传播,加入有个函数y = f(x),那么它的反向传播为图下这个样子: 反向传播的计算顺序是,将输入信号E乘以节点的局部导数,然后将结果传递给下一个节点。这里所…...
Django 开发服务器
$ python manage.py runserver $ python manage.py runserver 666 # 用 666 端口 $ python manage.py runserver 0.0.0.0:8000 # 让局域网内其他客户端也可访问 $ python manage.py runserver --skip-checks # 跳过检查自动检查 $ python manage.py runserver --…...
嵌入式基础(二)ARM基础
嵌入式基础(二)ARM基础 1.精简指令集和复杂指令集的区别⭐⭐⭐ 精简指令集 (RISC) 精简指令集 (Reduced Instruction Set Computing) 具有简洁、精简的指令集,每条指令执行的操作都很基础,使得处理器设计更简单。RISC 处理器通…...
RNA免疫共沉淀测序(RIP-seq)
技术简介 RNA免疫共沉淀测序(RNA Immunoprecipitation Sequencing, RIP-seq)是一种将RNA免疫共沉淀(RIP)与二代测序技术(NGS)相结合,用于研究细胞内RNA与蛋白相互作用的技术。 技术原理 利用目…...
期指跌对股市的影响是什么?
国内股指期货对大盘的影响,这种一般就是不想再买这种指数,大多数都在蓝筹股方面,题材股很少,股指期货是保证金交易,一手大概在15-18W,它的价格是根据指数(如上证指数、深证成指)来确…...
基于Python的LSTM、CNN中文情感分析系统
大家好,我是徐师兄,一个有着7年大厂经验的程序员,也是一名热衷于分享干货的技术爱好者。平时我在 CSDN、掘金、华为云、阿里云和 InfoQ 等平台分享我的心得体会。 🍅文末获取源码联系🍅 2025年最全的计算机软件毕业设计…...
Neovim安装及lazy配置
安装neovim 官网下载 配置lazy插件总成 lazy官网 一般在C盘里会有一个nvim-data,然后用官网里的命令会生成一个nvim 安装C编译器 参考此文 插件都放在目录’C:\Users\wnlea\AppData\Local\nvim\lua\plugins’中,所以新建一个插件,起名为vi…...
什么叫“架构”
我们学硬件架构的时候常常被一些名词和概念绕晕,这篇就来讲一讲“架构”这个概念,一种“架构”指的是什么,如何去学习一种新的架构。 1.架构:硬件设计与指令集的统一体 这里放上我大二下的手写笔记: 就是说硬件设计…...
【Python浅拷贝与深拷贝详解】
目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现(10个案例)案例1:列表嵌套列表案例2:字典嵌套列表案例3…...
numpy.ma.masked_where:屏蔽满足条件的数组
1.函数功能 屏蔽满足条件的数组内容,返回值为掩码数组 2.语法结构 np.ma.masked_where(condition, a, copyTrue)3. 参数 参数含义condition屏蔽条件a要操作的数组copy布尔值,取值为True时,结果复制数组(原始数据不变),否则返回…...
力扣hot100_技巧_python版本
一、136. 只出现一次的数字 思路: 任何数和 0 做异或运算,结果仍然是原来的数,即 a⊕0a。任何数和其自身做异或运算,结果是 0,即 a⊕a0。异或运算满足交换律和结合律,即 a⊕b⊕ab⊕a⊕ab⊕(a⊕a)b⊕0b。 代…...
用队列实现栈
队列实现栈 用队列实现栈一、队列数据结构的基础定义与操作(一)队列节点与队列结构体定义(二)队列大小计算函数(三)队列初始化函数(四)队列销毁函数(五)队列元…...
Android WebView深度性能优化方案
一、启动阶段优化 预初始化策略 冷启动优化:在Application或后台线程提前初始化WebView new Thread(() -> {WebView preloadWebView new WebView(getApplicationContext());preloadWebView.loadUrl("about:blank"); }).start();WebView复用池 private…...
国标GB28181视频平台EasyCVR打造线下零售平台视频+AI全流程监管坚实防线
一、背景概述 在全球经济增长放缓、电商崛起、经营成本攀升的形势下,零售行业正经历深刻变革。数字化转型成为新零售发展的必由之路,但多数零售企业在信息化建设上困难重重,既缺乏足够重视,又因过高投入而犹豫。 随着大数据、人工…...
QML中打印Item的坐标
在 QML 中,你可以通过多种方式获取和打印 Item 的坐标信息。以下是几种常见的方法: 1. 打印相对坐标(相对于父项) qml Item {id: myItemx: 50y: 100width: 200height: 200Component.onCompleted: {// 打印相对于父项的坐标cons…...
基于【Lang Chain】构建智能问答系统的实战指南
🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Lang Chain 2、LangChain在问答系统中的核心优…...
Vue使用axios实现:上传文件、下载文件
Vue 使用 axios 框架,系列文章: 《Vue使用axios实现Ajax请求》 《Vue使用axios二次封装、解决跨域问题》 《Vue使用axios实现:上传文件、下载文件》 在实际开发过程中,浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。Axios 提供了一些方便…...
泊松分布详解:从理论基础到实际应用的全面剖析
泊松分布详解:从理论基础到实际应用的全面剖析 目录 引言:事件的罕见性与随机计数泊松分布的历史源流泊松分布的数学定义与性质 概率质量函数 (PMF)累积分布函数 (CDF)期望、方差与其他矩矩生成函数 (MGF) 与特征函数 (CF) 泊松分布的严格推导 极限推导…...
PHP爬虫教程:使用cURL和Simple HTML DOM Parser
一个关于如何使用PHP的cURL和HTML解析器来创建爬虫的教程,特别是处理代理信息的部分。首先,我需要确定用户的需求是什么。可能他们想从某个网站抓取数据,但遇到了反爬措施,需要使用代理来避免被封IP。不过用户没有提到具体的目标网…...
# 更换手机热点后secureCRT无法连接centOS7系统
更换手机热点后secureCRT无法连接centOS7系统 一、问题描述 某些情况下,我们可能使用手机共享热点而给电脑联网。本来用一个手机热点共享网络时,SecureCRT可以正常连接到CentOS 7虚拟机,当更换一个手机热点时,突然发现SecureCR…...
【集成电路版图设计学习笔记】2. 基本绘制的layer层和电路失效机制
一、基本的版图层次 1. 金属层(Metal Layers) 金属层主要起到互连的作用,完成基本电路器件的连接金属线的材质通常是铝或者铜,一般在线条比较粗的情况下,即特征尺寸比较粗的,一般是用铝制作的。在先进工艺…...