Nominatim免费的地址解析,逆地址解析,OpenStreetMap开源地图数据【全网最全】
视频学习地址
国内的一些地址解析供应商的API都开始付费了,就想找个免费的地址解析和逆地址解析的应用,最终选择了Nominatim + OpenStreetMap
文章目录
- 一、选型
- 1-1、数据源
- 1-2、地理编码引擎
- 2-1、初尝Nominatim
- 2-1-1、地址解析
- 2-1-2、逆地址解析
- 2-2、OSM数据解析
- 2-2-1、place表
- 2-2-2、placex表
- 2-3、Nominatim和OSM数据关系映射
- 2-4、举一反三
- 2-5、Nominatim API解析
- 三、安装
- 四、关于数据源 (重要)
- 五、替代方案
- N、其它
- N-1、place和placex
- N-2、相关资料
- N-3、测试覆盖
- 地址解析
- 逆地址解析
这篇文章将会从调研、选型、测试、应用全方面的解析,如果你也在找地址解析和逆地址解析的开源方案它一定会给你带来帮助
地址解析:通过一个地名(深圳),获取当前地方的经纬度、省市区级别
逆地址解析:通过经纬度,获取当前位置的名称、省市区级别
一、选型
1-1、数据源
对于地图解析这个应用来说,最重要不是软件部分,而是数据,只有数据全面了才有可能得出相对准确的结果。目前开源免费的全面的数据大概率只有 OpenStreetMap了,它是由各个国家的志愿者一起维护的数据
OpenStreetMap(后面简称OSM) 是一个众包的地图项目,旨在创建一个可自由编辑和使用的世界地图数据库。它由全球的志愿者贡献者更新和维护,提供了一个详细和准确的地理数据集合。OSM 数据包括道路、建筑物、自然特征、商业设施等(简单理解就是很多志愿者一起维护了一份地图数据 )
OpenStreeMap 相关文档链接 (后面会详解)
描述 | 地址 |
---|---|
官网 | https://www.openstreetmap.org |
没有找到合适的中国数据,而且中国数据和台湾都是分开的,这必然不行,直接用亚洲的数据 | https://download.openstreetmap.fr/extracts/ |
每一个地址都会有标签,标签很多想知道某个标签的含义,可去标签系统搜索,下面会讲解 | https://taginfo.openstreetmap.org |
1-2、地理编码引擎
调研时间:24年5月
开源方案 | Nominatim | Pelias | Photon |
---|---|---|---|
支持数据源 | OpenStreetMap | OpenStreetMap、OpenAddresses、Geonames等 | OpenStreetMap |
核心功能 | 地理编码和逆地理编码 | 地理编码和逆地理编码,支持全文搜索 | 高效地进行地理编码和逆地理编码 |
开发语言 | Python、PHP | Twig | Java |
GitHub关注数 | 2.9K | 3.1K | 1.8K |
GitHub最新版本时间 | 2024-03-07 | 无 | 2024-03-06 |
GitHub待解决问题数 | 92 | 242 | 57 |
GitHub活跃度 | 高(去年发布10个版本) | 低(无正式版本) | 中(去年发布2个版本) |
GitHub代码贡献者数 | 90 | 28 | 49 |
系统对接 | REST API | REST API | REST API |
- Nominatim能满足功能需求,需要额外处理直辖市和港澳台问题
- Photon 不支持中文国际化,无法满足
Nominatim 是一个开源的地理编码引擎,专门用于从 OSM 数据中提取地理信息。它提供了两种主要功能:
- 地理编码:将地址转换为经纬度坐标
- 逆地理编码:将经纬度坐标转换为地址
Nominatim 的API其实已经研究过了是满足的,下面详细讲解它的API
2-1、初尝Nominatim
这个要VPN才可以访问
2-1-1、地址解析
请求地址
https://nominatim.openstreetmap.org/search?1=1&q=深圳市&format=geocodejson&addressdetails=1&accept-language=zh&zoom=8&limit=1
请求结果
{"type": "FeatureCollection","geocoding": {"version": "0.1.0","attribution": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright","licence": "ODbL","query": "深圳市"},"features": [{"type": "Feature","properties": {"geocoding": {"place_id": 368109611,"osm_type": "relation","osm_id": 3464353,"osm_key": "boundary","osm_value": "administrative","type": "city","label": "深圳市, 广东省, 中国","name": "深圳市","state": "广东省","country": "中国","country_code": "cn","admin": {"level5": "深圳市","level4": "广东省"}}},"geometry": {"type": "Point","coordinates": [114.0545429,22.5445741]}}]
}
2-1-2、逆地址解析
请求地址
https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=43.767755&lon=87.51623&addressdetails=1&accept-language=zh&zoom=8&limit=1
请求结果
{"type": "FeatureCollection","geocoding": {"version": "0.1.0","attribution": "Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright","licence": "ODbL","query": ""},"features": [{"type": "Feature","properties": {"geocoding": {"place_id": 190215046,"osm_type": "relation","osm_id": 5663100,"osm_key": "boundary","osm_value": "administrative","type": "district","accuracy": 0,"label": "沙依巴克区, 乌鲁木齐市, 新疆维吾尔自治区, 830000, 中国","name": "沙依巴克区","postcode": "830000","city": "乌鲁木齐市","state": "新疆维吾尔自治区","country": "中国","country_code": "cn","admin": {"level6": "沙依巴克区","level5": "乌鲁木齐市","level4": "新疆维吾尔自治区"}}},"geometry": {"type": "Point","coordinates": [87.46749,43.726972]}}]
}
2-2、OSM数据解析
对于地图服务真正难的是数据,核心也还是OSM的数据,后面会讲怎么导入数据,这里先解析数据。把OSM的数据导入到 PostgreSQL后,它有两张重要的表,个人感觉对于一般应用来说,理解这两张表就够够了 (下面是我的理解,供参考)
- place:place表维护的是每一条独立的数据(可以是一棵树、也可以是一条河、一个城市)
- placex:因为地区是包含关系placex维护的是有关系的上下级数据
表字段很多,下面讲重要的,如果对这两张表结构感兴趣的可以参看下面的: N-1
2-2-1、place表
字段 | 描述 |
---|---|
osm_id | 数据的唯一id |
osm_type | 数据类型:N、R、W (对表500w数据 distinct + 搜索) 1.节点(Node):存储为一个经纬度坐标点。例如,一个节点可能表示一个具体的地理位置,如一座建筑物的角落或一棵树 2.路径(Way):由一系列节点组成,每个节点都有其自己的经纬度坐标。路径可以表示线性特征(如道路)或闭合区域(如湖泊) 3.关系(Relation):由多个节点和路径组成,表示更复杂的地理特征和逻辑关系,如边界、多边形区域或路线 |
class | 这两个字段是一起的 key=value,是对这条数据打的标签,目前有 9w+个key highway=secondary 1. highway标签是用于任何类型道路的主要标签 2. highway=secondary 次要道路是连接重要城镇的道路 注:https://taginfo.openstreetmap.org 因为key=value 太多了,官方有专门维护描述 |
type | |
admin_level | 当前数据的等级,数据库有 1-15级 (抽样查看了每一层的数据,并不是特别的标准) |
name | 当前数据的各种语言的描述,地址解析的时候我猜就是匹配这个字段 eg: “name”=>“深圳市”, “name:af”=>“Shenzhen”, “name:ar”=>“شنجن (الصين)”, “name:az”=>“Şençjen”, “name:ba”=>“Шэньчжэнь”, “name:be”=>“Шэньчжэнь”, |
geometry | 当前数据的经纬度,数据存在多种可能性,比如点、线、多线、多边形、几何图形 等 注:数据并不全是存的明文,有些是加密的,可以通过在线工具解密https://www.zaixianjisuan.com/dilicesuan/wkt%20_%20wkb%20_%20geojson%20convert%20online.html |
geometry 存储数据样例
POINT(117.1767305 39.1448629)
LINESTRING(117.1847722 39.1481168, 117.1845921 39.1481353)
POLYGON((117.1829091 39.1494689, 117.182913 39.1494281, 117.1829335 39.1493904, 117.1829685 39.1493598, 117.1830143 39.1493394, 117.183066 39.1493315, 117.1831199 39.1493372, 117.1831478 39.1493482, 117.1831683 39.1493563, 117.183206 39.1493867, 117.1832286 39.1494251, 117.1832337 39.149467, 117.1832206 39.149508, 117.183191 39.1495433, 117.183148 39.1495691, 117.1830964 39.1495825, 117.183042 39.1495819, 117.1829924 39.1495681, 117.182951 39.1495428, 117.1829222 39.1495085, 117.1829091 39.1494689))
2-2-2、placex表
placex 表的关键信息,它很多字段和place表一样
字段名 | 描述 |
---|---|
place_id | 数据的唯一id |
parent_place_id | 上级id |
importance | 数据权重,匹配到多条数据,这个字段是排序规则之一 |
centroid | 当前区域的中心点 (是个POINT类型的 经纬度,参看上面的 geometry) |
postcode | 邮编 |
country_code | 国家编码 cn |
osm_type | 同 place表 |
osm_id | 同 place表 |
class | 同 place表 |
type | 同 place表 |
admin_level | 同 place表 |
name | 同 place表 |
geometry | 同 place表 |
这个表数据很重要,解析和逆解析都是对这个表进行搜索
2-3、Nominatim和OSM数据关系映射
Nominatim和OpenStreetMap 字段映射关系(从上面的返回值抽取稳定有用的字段)
Nominatim 返回字段 | OpenStreeMap 字段(对应表 placex) |
---|---|
place_id | place_id |
osm_id | osm_id |
osm_type | osm_type |
osm_key | class |
osm_value | type |
admin[] | 在 placex 表有个parent_place_id,一直向上取到 parent_place_id = 0 key = level + admin_level value = name -> ‘name’ |
postcode | postcode |
label | admin + postcode |
geometry | centroid |
2-4、举一反三
通过上面的分析得出2点
- Nominatim 就是一个地图搜索引擎,用的是OSM的数据
- Nominatim 不管是解析还是逆解析返回的都是 placex 表的某条数据(place_id)
通过对数据的分析和一些文档描述,大概知道了它搜索的逻辑地址解析就是去模糊匹配 name,逆地址解析就是拿入参的经纬度去找数据库距离最近权重最高的数据返回
地址解析SQL
SELECTplace_id,ST_AsText(geometry) AS geometry
FROM placex
WHERE name -> 'name' ILIKE '%中国%'
AND importance IS NOT NULL
ORDER BY importance DESC
LIMIT 1;
逆地址解析SQL
SELECT place_id,ST_X(centroid) AS lon,ST_Y(centroid) AS lat,ST_Distance(geometry::geography, ST_SetSRID(ST_MakePoint(90.392926,30.014464), 4326)::geography) AS distance
FROM placex
WHERE ST_Distance(geometry::geography, ST_SetSRID(ST_MakePoint(90.392926,30.014464), 4326)::geography) BETWEEN 1 AND 1000
ORDER BYdistance ASC,importance DESC
LIMIT 1;
测试结果和Nominatim返回的结果相似度90%+,但性能没法比,SQL运行结果很慢
2-5、Nominatim API解析
https://nominatim.openstreetmap.org/search?1=1&q=深圳市&format=geocodejson&addressdetails=1&accept-language=zh&zoom=8&limit=1
https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=43.767755&lon=87.51623&addressdetails=1&accept-language=zh&zoom=8&limit=1
上面这两个URL在绝大部分场景下,已经是最佳答案了,如果你还需要其它的请参考官方API文档
- https://nominatim.org/release-docs/develop/api/Search/
- https://nominatim.org/release-docs/develop/api/Reverse/
字段 | 描述 |
---|---|
q | 文本查询 (不和省、市、区 这些字段一起使用) |
format | 返回的数据格式,相信我 geocodejson 是最好的格式,因为它最接近数据库的数据 |
addressdetails | 是否返回地址详情 |
accept-language | zh 返回中文,不然可能会有少数民族文字 |
limit | 限制返回条数(数据已经是按照权重排好序了,大部分场景只要一条数据,所以 limit=1) |
zoom=8 | 返回的层级 4级基本是省份,5级基本是城市 (建议带上这个参数,不然极少数情况会出错,作者说的) |
lat、lon | 经纬度 |
三、安装
https://download.openstreetmap.fr/extracts/asia.osm.pbf 下载亚洲的 PBF文件 (先看四)
然后去你的服务上用docker安装(差不多要300G磁盘),执行过程大概4天半左右
docker run -d -it
--shm-size=12g -e
PBF_PATH=/nominatim/osm_data/下载下来的数据.pbf
-e IMPORT_STYLE=address
-e NOMINATIM_FLATNODE_FILE=/nominatim/flat_data/flatnode.file
-p 8090:8080 -p 5432:5432
-v /nominatim/flat_data:/nominatim/flat_data
-v /nominatim/osm_data:/nominatim/osm_data
--name planet mediagis/nominatim:4.4
官网dockert安装地址:https://github.com/mediagis/nominatim-docker/tree/master/4.4
非docker安装需要很多各种依赖较为麻烦
四、关于数据源 (重要)
尝试过的数据源
问题 | 数据范围 | 数据源 |
---|---|---|
Nominatim不支持map和img格式 | 中国 | https://download3.bbbike.org/osm/garmin/region/asia/china/ |
Nominatim不支持map和img格式 | 中国 | https://download3.bbbike.org/osm/mapsforge/region/asia/china/ |
数据不全,部分数据有问题 | 中国 | https://download.openstreetmap.fr/extracts/asia/china-latest.osm.pbf |
数据不全,部分数据有问题 | 中国 | https://download.geofabrik.de/asia.html |
数据不全,部分数据有问题 | 中国 | https://osmtoday.com/asia.html |
完美 | 亚洲 | https://download.openstreetmap.fr/extracts/asia.osm.pbf |
数据源相关文章:
https://wiki.openstreetmap.org/wiki/Zh-hans:Planet.osm
https://www.chinaflier.com/thread-202695-1-1.html
https://github.com/osm-search/Nominatim/discussions/3434
尝试了很多的中国数据一直都不准,最后抱着试试的心理尝试了亚洲的数据,完美
- 服务器:4核32G
- 亚洲 pbf 15g
- 导入时间 4天半
- 消耗空间 277G
五、替代方案
如果你只是需要简单的地址解析和逆地址解析,其实也不用如此大费周章,可以参看:
https://blog.csdn.net/Tomwildboar/article/details/139882311
N、其它
N-1、place和placex
CREATE TABLE "public"."place" ("osm_type" char(1) COLLATE "pg_catalog"."default" NOT NULL,"osm_id" int8 NOT NULL,"class" text COLLATE "pg_catalog"."default" NOT NULL,"type" text COLLATE "pg_catalog"."default" NOT NULL,"admin_level" int2,"name" "public"."hstore","address" "public"."hstore","extratags" "public"."hstore","geometry" geometry(GEOMETRY, 4326) NOT NULL
)CREATE TABLE "public"."placex" ("place_id" int8 NOT NULL,"parent_place_id" int8,"linked_place_id" int8,"importance" float8,"indexed_date" timestamp(6),"geometry_sector" int4,"rank_address" int2,"rank_search" int2,"partition" int2,"indexed_status" int2,"osm_type" char(1) COLLATE "pg_catalog"."default" NOT NULL,"osm_id" int8 NOT NULL,"class" text COLLATE "pg_catalog"."default" NOT NULL,"type" text COLLATE "pg_catalog"."default" NOT NULL,"admin_level" int2,"name" "public"."hstore","address" "public"."hstore","extratags" "public"."hstore","geometry" geometry(GEOMETRY, 4326) NOT NULL,"wikipedia" text COLLATE "pg_catalog"."default","token_info" jsonb,"country_code" varchar(2) COLLATE "pg_catalog"."default","housenumber" text COLLATE "pg_catalog"."default","postcode" text COLLATE "pg_catalog"."default","centroid" geometry(GEOMETRY, 4326)
)
;
N-2、相关资料
描述 | 地址 |
---|---|
OSM 官网 | https://www.openstreetmap.org |
OSM官方对中国地图的描述 | https://wiki.openstreetmap.org/wiki/Zh-hans:%E4%B8%AD%E5%8D%8E%E4%BA%BA%E6%B0%91%E5%85%B1%E5%92%8C%E5%9B%BD |
数据标签查询 | https://taginfo.openstreetmap.org |
Nominatim 地址解析API | https://nominatim.org/release-docs/develop/api/Search/ |
Nominatim 逆地址解析API | https://nominatim.org/release-docs/develop/api/Reverse/ |
Nominatim docker安装地址 | https://github.com/mediagis/nominatim-docker/tree/master/4.4 |
官网API查询数据没有 level5问题 | https://github.com/osm-search/Nominatim/issues/3437 |
官方说明只能导入 pbf、osm 格式 | https://github.com/osm-search/Nominatim/discussions/3436 |
pbf、bz2、shp.zip 数据格式含义 | https://download.geofabrik.de/technical.html |
数据源 | https://download.geofabrik.de/asia.html(福建省数据不是很准) |
数据源 | https://download3.bbbike.org/osm/garmin/region/asia/china/ (Nominatim不支持map和img格式) |
数据源 | https://osmtoday.com/asia.html (数据不全,部分数据有问题)) |
数据源 | https://download.openstreetmap.fr/extracts/asia/china-latest.osm.pbf(数据不全,部分数据有问题) |
百度提供的在线经纬度获取 | https://api.map.baidu.com/lbsapi/getpoint/index.html |
经纬度在线解析 | https://www.zaixianjisuan.com/dilicesuan/wkt%20_%20wkb%20_%20geojson%20convert%20online.html |
其它阅读 | https://wiki.openstreetmap.org/wiki/Zh-hans:Planet.osm https://www.chinaflier.com/thread-202695-1-1.html https://github.com/osm-search/Nominatim/discussions/3434 |
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4a5235b6e1154bb3af4fcc489ad633ad.png)
N-3、测试覆盖
我此次的需求只需要精确到 省、市,直接用GPT列举出全部的市级以上的数据,然后再自己每个省份描点经纬度100个,再让GPT生成随机每个省的经纬度 1000个。
让自建API和腾讯API进行对比,问题如下
地址解析
- 香港、澳门,腾讯的是带了 【行政区】 后缀,且存在部分的繁体字
- 台湾 腾讯返回的都是简体字,自建地图大部分数据返回的是繁体字
逆地址解析
入参 | 自建 | 腾讯 | 百度 |
---|---|---|---|
110.39119,20.091971 | {longitude=110.3715545, latitude=20.0748919, nation=‘中国’, province=‘海南省’, city=‘海口市’} | {nation=‘中国’, province=‘中国区域’, city=‘’, district=‘’, street=‘’} | 海南省海口市美兰区 |
101.808916,36.653178 | {longitude=101.8128242, latitude=36.649104, nation=‘中国’, province=‘青海省’, city=‘西宁市’} | {nation=‘中国’, province=‘青海省’, city=‘海东市’, district=‘互助土族自治县’, street=‘’} | 青海省西宁市城北区 |
91.276412,29.525961 | {longitude=91.4130822, latitude=29.2551346, nation=‘中国’, province=‘西藏自治区’, city=‘山南市’} | {nation=‘中国’, province=‘西藏自治区’, city=‘拉萨市’, district=‘城关区’, street=‘’} | 西藏自治区山南市扎囊县 |
113.795412,34.887975 | {longitude=113.7888121, latitude=34.921496, nation=‘中国’, province=‘河南省’, city=‘新乡市’} | {nation=‘中国’, province=‘河南省’, city=‘郑州市’, district=‘惠济区’, street=‘’} | 河南省郑州市惠济区 |
112.12054,40.707765 | {longitude=112.120318174164, latitude=40.71081296482041, nation=‘中国’, province=‘内蒙古自治区’, city=‘乌兰察布市’} | {nation=‘中国’, province=‘内蒙古自治区’, city=‘呼和浩特市’, district=‘赛罕区’, street=‘’} | 内蒙古自治区呼和浩特市赛罕区 |
113.273535,27.875086 | {longitude=113.7001702, latitude=28.2178951, nation=‘中国’, province=‘湖南省’, city=‘长沙市’} | {nation=‘中国’, province=‘湖南省’, city=‘株洲市’, district=‘荷塘区’, street=‘’} | 湖南省株洲市荷塘区X004(宋芷路) |
101.885386,36.529808 | {longitude=101.9975, latitude=36.399977, nation=‘中国’, province=‘青海省’, city=‘海东市’} | {nation=‘中国’, province=‘青海省’, city=‘西宁市’, district=‘湟中区’, street=‘’} | 青海省西宁市湟中区 |
121.827422,24.73118 | {longitude=120.9820179, latitude=23.9739374, nation=‘中国’, province=‘臺灣’, city=‘臺灣’} | {nation=‘中国’, province=‘台湾省’, city=‘宜兰县’, district=‘壮围乡’, street=‘’} | 台湾省宜兰县 |
结论
1.现在的亚洲的数据和官网几乎一样
2.和腾讯比,也只有很少边界的地方存在误差
相关文章:
Nominatim免费的地址解析,逆地址解析,OpenStreetMap开源地图数据【全网最全】
视频学习地址 国内的一些地址解析供应商的API都开始付费了,就想找个免费的地址解析和逆地址解析的应用,最终选择了Nominatim OpenStreetMap 文章目录 一、选型1-1、数据源1-2、地理编码引擎2-1、初尝Nominatim2-1-1、地址解析2-1-2、逆地址解析 2-2、OS…...
js 移除字符串中所有的a标签;js 移除字符串中所有的a标签,但是保留a标签包裹的部分
js 移除字符串中所有的a标签 要移除字符串中所有的 <a> 标签,可以使用正则表达式和 String.replace() 方法。以下是实现这一功能的示例代码: function removeATags(str) {return str.replace(/<a\b[^<]*(?:(?!<\/a>)<[^<]*)…...
深信服科技:2023网络安全深度洞察及2024年趋势研判报告
2023 年,生成式人工智能和各种大模型迅速应用在网络攻击与对抗中,带来了新型攻防场景和安全威胁。漏洞利用链组合攻击实现攻击效果加成,在国家级对抗中频繁使用。勒索团伙广泛利用多个信创系统漏洞,对企业数据安全与财产安全造成了…...
windows下mysql修改 my.ini的datadir后 `Access denied`
1. 背景 window安装mysql数据库时,不能指定数据文件存放位置(默认安装路径 "C:/ProgramData")。 只能通过修改mysql.ini来更改数据文件存放目录。 2. 问题: 修改mysql.ini后,mysql 出现 "Access denied for user ‘root‘@‘localhost‘ (using passwor…...
Java比较运算符
关系运算符和比较运算符适用于条件判断类型。 相当于布尔值,只有True和False两个 符号 说明ab,判断a的值是否等于b的值,条件成立为true,不成立为false ! a!b,判断a和b的值是否不相等,条件成立为true,不成立为false > …...
「网络原理」IP 协议
🎇个人主页:Ice_Sugar_7 🎇所属专栏:计网 🎇欢迎点赞收藏加关注哦! IP 协议 🍉报头结构🍉地址管理🍌动态分配 IP 地址🍌NAT 机制(网络地址映射&am…...
电商平台生活用品销售数据分析与应用
摘 要 在当前互联网飞速发展的时代,计算机应用给我们的工作生活带来了极大的便利。如今我们的生活离不开电商平台,其随之而来的是各种各样的销售数据与消费者信息,这些数据和信息的分析应用成为了当前互联网领域研究的重要部分。 本论文以基…...
FastAdmin数据库设计规范
FastAdmin数据库设计规范,官方文档上也有,仅仅是为了我自己做一次笔记增加记忆强度 表名和字段名全小写,只允许出现a-z和_这几种字符,且不能有拼音,只能为英文单词存储引擎统一使用innodb引擎字符集统一使用utf8mb4,排序规则使用…...
基于MATLAB仿真LFM线性调频信号
基于MATLAB仿真LFM线性调频信号 目录 前言 一、LFM信号简介 二、LFM信号基本原理 三、LFM信号仿真 四、代码 总结 前言 仿真中的接收信号,有时为了简单会直接用一个正弦波代替,但实际中接收到的信号极少是点频信号,一般都是PSK信号、OF…...
互联网的盈利模式
1. 广告收入 展示广告:通过在网站或应用上展示横幅广告、视频广告等,按点击次数(CPC)或展示次数(CPM)收费。搜索广告:通过搜索引擎上的关键词竞价广告,按点击次数收费。社交媒体广告…...
什么是距离选通型水下三维激光扫描仪?(下)
距离选通激光水下成像的发展 距离选通激光成像技术始于上世纪60年代,受制于高性能脉冲激光器和选通成像器件发展的制约,激光距离选通成像技术在随后的二十年发展缓慢,直到20世纪90年代,随着硬件技术的不断成熟,该技术…...
计算机网络(谢希仁第六版)| 课后习题与答案 | 物理层 | 题目知识点详细分析
计算机网络(谢希仁第六版)课后习题与答案 物理层 博客只对老师给的重点进行整理,完整的课后习题答案见Gitee下载:《计算机网络教程(第6版)(微课版)》习题答案 2-5 请画出数据流1 0 1…...
安卓安装linux + .net环境
安装Termux 到下面地址获取apk安装包 https://github.com/termux/termux-app 安装ssh ~ $ pkg install openssl ~ $ pkg install openssh查看用户名 ~ $ whoami ssh u0_a390修改当前用户密码 passwd 启动ssh sshd 安装 proot-distro pkg install proot-distro 列出能装的lin…...
ES6 新增Set 和 Map 两种数据结构
ES6 新增了 Set 和 Map 这两种数据结构,它们为 JavaScript 提供了更强大和灵活的数据处理能力。下面详细介绍一下 Set 和 Map 的特性和用法: Set Set 是一种类似于数组的数据结构,但是成员的值都是唯一的,没有重复的值。 特性&…...
【学一点儿前端】单页面点击前进或后退按钮导致的内存泄露问题(history.listen监听器清除)
今天测试分配了一个比较奇怪的问题,在单页面应用中,反复点击“上一步”和“下一步”按钮时,界面表现出逐渐变得卡顿。为分析这一问题,我用Chrome的性能监控工具进行了浏览器性能录制。结果显示,每次点击“上一步”按钮…...
vue跳转页面 如果登录了直接跳转 没有登录登录完以后直接跳转,使用vuex管理登录状态
在Vue.js中,如果你需要在用户登录后重定向到他们原本想要访问的页面,你可以使用Vue Router的beforeEach守卫来实现这个功能。以下是实现这一需求的步骤: 存储目标路由:在用户被重定向到登录页面之前,存储他们想要访问的…...
渗透测试-若依框架的杀猪交易所系统管理后台
前言 这次是带着摸鱼的情况下简单的写一篇文章,由于我喜欢探究黑灰产业,所以偶尔机遇下找到了一个加密H币的交易所S猪盘,我记得印象是上年的时候就打过这一个同样的站,然后我是通过指纹查找其它的一些站,那个站已经关…...
【免费】中国电子学会2024年03月份青少年软件编程Python等级考试试卷一级真题(含答案)
2024-03 Python一级真题 分数:100 题数:37 测试时长:60min 一、单选题(共25题,共50分) 1. 下列哪个命令,可以将2024转换成2024 呢?( A)(2分) A.str(2024) B.int(2024) C.fl…...
深入了解RTMP推流技术:视频汇聚EasyCVR低延迟与高稳定性分析
RTMP(Real Time Messaging Protocol)视频推流技术,作为音视频传输领域的关键技术之一,已经在直播、视频会议、在线教育等多个场景中得到了广泛应用。RTMP以其独特的优势,为实时音视频传输提供了高效、稳定的解决方案。…...
containerd手动配置容器网络
containerd手动配置容器网络 机器详情nerdctl启动一个不带网络的容器获取容器ID、PID与network namespace路径准备bridge插件的执行配置文件通过下面的命令调用bridge插件准备tuning插件文件执行下面的命令调用tuning插件准备portmap插件文件执行下面的命令调用portmap插件删除…...
数据迁移到 Django 模型表:详尽指南
数据迁移是许多应用程序开发过程中必不可少的一部分。在这篇文章中,我们将详细分析和总结如何通过一个定制的 Django 管理命令,将数据从 MySQL 数据库迁移到 Django 模型表中。这种方法可以确保数据在多个数据库之间有效且安全地迁移,同时避免…...
代码随想三刷二叉树篇4
代码随想三刷二叉树篇4 617. 合并二叉树题目代码 700. 二叉搜索树中的搜索题目代码 98. 验证二叉搜索树题目代码 530. 二叉搜索树的最小绝对差题目代码 501. 二叉搜索树中的众数题目代码 236. 二叉树的最近公共祖先题目代码 617. 合并二叉树 题目 链接 代码 /*** Definitio…...
『大模型笔记』如何让小型语言模型发挥作用!
如何让小型语言模型发挥作用! 文章目录 一. 如何让小型语言模型发挥作用!不可能的可能性小模型的潜力创新方法与突破实践与验证过滤系统与数据质量小模型的逐步改进信息理论蒸馏方法(新工作InfoSum)总结与展望Infini-Gram与N-gram模型的新时代后缀数组与高速计算二. 参考文献…...
jnp.diag
jnp.diag 是 JAX 库中用于创建对角矩阵或提取对角线元素的函数。具体功能取决于输入的形状: 当输入是一维数组时,jnp.diag 创建一个以该数组为对角线元素的对角矩阵。当输入是二维数组时,jnp.diag 提取并返回对角线元素。 函数签名 jnp.di…...
bert文本分类微调笔记
Bert实现文本分类微调Demo import random from collections import namedtuple 有四种文本需要做分类,请使用bert处理这个分类问题 # 使用namedtuple定义一个类别(Category),包含两个字段:名称(name)和样例(samples) Category namedtuple(Ca…...
运维:k8s常用命令大全
Kubernetes是一个强大的容器编排平台,不管是运维、开发还是测试或多或少都会接触到,熟练的掌握k8s可大大提高工作效率和强化自身技能。 集群管理 1. 查看集群节点状态: kubectl get nodes 2. 查看集群资源使用情况: kubectl top nodes 3. 查看集群…...
PHP基础之错误与异常
文章目录 1 错误1.1 简介1.2 简单错误处理1.2.1 使用die1.2.2 die和exit区别 1.3 自定义错误处理1.3.1 定义1.3.2 创建错误函数 1.4 触发错误1.5 抑制错误1.5.1 行内错误抑制 2 异常2.1 引言2.2 什么是异常2.3 Try、throw、catch、finally2.4 自定义异常2.5 设置顶层异常处理器…...
详解Spring AOP(一)
目录 1. AOP概述 2.Spring AOP快速入门 2.1引入AOP依赖 2.2编写AOP程序 3.Spring AOP核心概念 3.1切点(PointCut) 3.2连接点(Join Point) 3.3通知(Advice) 3.4切面(Aspect) …...
读者写者问题(读者优先、公平竞争、写者优先)
1.读者优先 当有读者进程进行读时,允许多个读者同时读,但不允许写者写;当有写者进程进行写时,不允许其他写者写,也不允许读者读 读者算法: p(r_mutex); //申请修改read_count if read_count0:p(mutex); …...
Springboot开发之 Excel 处理工具(二)-- Easyexcel
一、Easyexcel 简介 EasyExcel是一个基于Java的Excel处理工具库,它的核心设计理念是快速、简洁,并且能够有效解决处理大文件时的内存溢出问题。使用EasyExcel,开发者可以在几乎不需要考虑性能和内存消耗的情况下,轻松实现Excel文…...
wordpress模拟论坛/网站优化及推广方案
1)PowerDesigner运行在Microsoft Windows平台上; 2)它支持60多种关系数据库管理系统(RDBMS)/版本; 3)它几乎包括了数据库模型设计的全过程;利用Power Designer可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库…...
东莞商贸公司寮步网站建设价格/网络推广工作内容
因为原项目应用的都是v4v7包,谷歌改成androidx后就升级了一番,首先在properties文件然后在菜单里点击升级,studio会帮你把报名什么的都改掉打开项目,发现都自动改掉了,完美,然而做为一个android开发&#x…...
企业自助建站策划方案/友情链接检测工具
1.显示关联 通过label标签的for属性,显式与另一个表单控件关联,for属性的值必须是与label标签在同一文档中的可标记表单元素的id 注:是id而不是name 爱好: <input typecheckbox namebasket idbasketball> <label for…...
静态网站怎么做滚动文字/营销团队外包
在linux系统中,默认情况下,当关闭ssh终端连接,随之启动的程序也会关闭。原理分析:SSH会话关闭时,ssh所关联的pty关闭,系统会给这个pty所关联的session中的所有进程发送SIGHUP信号,SIGHUP的默认信…...
开发移动网站/sem公司
计算机应用基础评课稿范本篇一:计算机应用基础评课稿今天听了杨老师的一节高三复习课,感受颇深。下面就这堂课谈谈我个人的体会,不妥之处请各位领导、老师批评指正。一、教学设计思路清晰,教学内容整合合理、教学目标明确一节好课…...
电商 网站建设文字/seo服务 收费
RAID卡一般分为硬RAID卡和软RAID卡两种,通过用硬件来实现RAID功能的就是硬RAID,独立的RAID卡,主板集成的RAID芯片都是硬RAID。通过软件并使用CPU的RAID卡是指使用CPU来完成RAID的常用计算,软件RAID占用CPU资源较高,绝大…...