“南海明珠”-黄岩岛(民主礁)领海基线WebGIS绘制实战
目录
前言
一、关于岛屿的基点位置
1、领海基点
二、基点坐标的转换
1、最底层的左边转换
2、单个经纬度坐标点转换
3、完整的转换
三、基于天地图进行WebGIS展示
1、领海基点的可视化
2、重要城市距离计算
四、总结
前言
南海明珠黄岩岛,这座位于南海的美丽岛礁,犹如一颗璀璨的明珠,在波涛汹涌的大海中闪耀着独特的光芒。它不仅拥有丰富的渔业资源和潜在的矿产宝藏,同时承载着深厚的历史文化底蕴和重大的战略意义。从历史的长河中溯源,中国对黄岩岛的发现、命名与开发利用可以追溯到遥远的古代。数百年前,中国的渔民就已在黄岩岛周边海域捕鱼作业,他们凭借着勇敢与智慧,在这片蓝色的家园上辛勤耕耘,留下了无数生活的印记与文化传承。古籍记载中,黄岩岛亦有着明确的归属记录。
从地理上看,黄岩岛位于北纬15°13′48″至15°05′24″,东经117°40′12″至117°52′00″,距西沙群岛的主岛永兴岛约600公里。它是一个略呈三角形的环礁,环礁包围着一浅湖,水色清绿,和礁外深海蓝黑水色不同。
上图来源:黄岩岛,在哪里?它为什么对我们这么重要。
在这篇博客中来看一下黄岩岛的自然条件。黄岩岛发育在3500米深的海盆上,是南海中沙群岛中唯一露出水面的岛屿,四周为距水面半米到3米之间的环形礁盘。东南端有一个宽400米的通道与外海相连,高潮位水深9米,低潮位水深6米,中型渔船和小型舰艇可由此进入。
上图是在我国的天地图上的黄岩岛高清影像,像不像一颗璀璨的珍珠。黄岩岛海域环境质量优,珊瑚礁生态系统健康。调查共记录造礁石珊瑚12科34属109种,为有调查记录以来物种多样性记录最丰富的一次,活造礁石珊瑚的平均覆盖度为28.6%,造礁石珊瑚幼体补充量较高。
今天博客带大家来看看国家的天地图上的黄岩岛遥感影像,用WebGIS的方式来看我们的南海明珠。博文首先介绍了领海基线坐标,同时讲述如何使用Java将领海基点的坐标转换成熟悉的经纬坐标,然后调用天地图使用Leaflet展示这些坐标点,最后再分析从岛上到我国及菲律宾的直线距离。通过文本,大家不仅可以领略国家的大好河山,也掌握如何进行WebGIS的开发,比如坐标点展示和距离求解等。言归正传,下面进入正题。
一、关于岛屿的基点位置
中国南海风光旖旎。美丽的黄岩岛伴随着潮起潮落,呈现出不同的景色。潮起时碧波荡漾,如一颗明珠镶嵌在南海上;潮落时礁石连片,像山川交汇于茫茫碧野。近瞰中国黄岩岛的壮丽风光,体验潮平南海阔,浩荡见碧波的绝美景致。这里我们根据相关平台的公开内容,先简单介绍黄岩岛的相关位置。
1、领海基点
我们在相关平台上均可以查询得到黄岩岛的领海基点信息,如下图所示:
领海基点一共包含15个点,这里直接摘录出来,供大家参考。
1.黄岩岛1 北纬15°08.1′ 东经117°50.9′
2.黄岩岛2 北纬15°07.4′ 东经117°50.8′
3.黄岩岛3 北纬15°07.0′ 东经117°50.6′
4.黄岩岛4 北纬15°06.6′ 东经117°50.2′
5.黄岩岛5 北纬15°06.1′ 东经117°49.5′
6.黄岩岛6 北纬15°06.3′ 东经117°44.2′
7.黄岩岛7 北纬15°07.3′ 东经117°43.1′
8.黄岩岛8 北纬15°12.7′ 东经117°42.6′
9.黄岩岛9 北纬15°13.1′ 东经117°42.8′
10.黄岩岛10 北纬15°13.4′ 东经117°43.3′
11.黄岩岛11 北纬15°13.5′ 东经117°43.9′
12.黄岩岛12 北纬15°13.5′ 东经117°44.4′
13.黄岩岛13 北纬15°09.6′ 东经117°49.7′
14.黄岩岛14 北纬15°09.0′ 东经117°50.4′
15.黄岩岛15 北纬15°08.5′ 东经117°50.8′
16.黄岩岛1 北纬15°08.1′ 东经117°50.9′
大家可以看到,这些基点的位置坐标格式是度分的格式,没有秒。则也是经纬度的一种表达形式。众所周知,想要把这些数据转换成经纬度坐标,进而在地图上进行展示,还是需要一定的转换的。因此下面我们来讲一讲如何进行度分的坐标转为经纬度的坐标。
二、基点坐标的转换
对于将度分的坐标转换成经纬度的坐标,本身是比较简单的。下面以Java为例,讲解如何在Java中实现度分坐标到经纬度坐标的转换。
1、最底层的左边转换
其实不管东经还是西经,南纬还是北纬,最终都是要进行转换的。而在上述的坐标中没有秒,因此我们只需要定义一个实现度和分的计算即可。关键代码如下:
/*** -度分转经纬度** @param dms 116°25'* @return 116.418847*/
public static double df2LatLng2(String dms) {if (dms == null) return 0;try {dms = dms.replace(" ", "");String[] str2 = dms.split("°");if (str2.length < 2) return 0;int d = Integer.parseInt(str2[0]);String[] str3 = str2[1].split("′");double f = Double.parseDouble(str3[0]);double du = (f / 60) + Math.abs(d);if (d < 0) du = -du;return Double.parseDouble(String.format("%.7f", du));} catch (Exception e) {e.printStackTrace();}return 0;
}
2、单个经纬度坐标点转换
基于上述的单个经度或者纬度的转换方法,我们需要实现传入一个坐标点,实现坐标点的转换。在一次方法调用中,需要同时转换经度和纬度。同时,为了在地图上正确的展示出位置,我们还需要进行正数或者负数的判断,比如西经或者南纬就应该在求解的值前加一个负号才能正确展示位置。坐标点的转换方法如下所示:
/**
* 将单个度分秒坐标转经纬度坐标数组,如北纬15°08.1′,东经117°50.9′
* @param latLonStr
* @return
*/
private static String [] str2LatLon2(String latLonStr) {String [] latLon = latLonStr.split(",");String lat = latLon[0];String lon = latLon[1];String latSuffix = lat.substring(0,2);//取出纬度前缀,如南纬、北纬String lonSuffix = lon.substring(0,2);//取出经度前缀,如东经、西经String newLat = String.valueOf(LatLngUtil.df2LatLng2(lat.substring(2)));String newLon = String.valueOf(LatLngUtil.df2LatLng2(lon.substring(2)));newLat = latSuffix.equalsIgnoreCase("南纬") ? "-" + newLat : newLat;newLon = lonSuffix.equalsIgnoreCase("西经") ? "-" + newLon : newLon;return new String[]{newLat,newLon};
}
这里主要是一个坐标的读取和单位的计算等,代码比较简单,不进行赘述。
3、完整的转换
这里我们对所有的基点坐标位置进行转换,得到符合我们要求的经纬度坐标。调用代码如下所示:
@Test
public void convertHuangyandaoRange() {List<String> huangyan = new ArrayList<String>();huangyan.add("北纬15°08.1′,东经117°50.9′");//黄岩岛1huangyan.add("北纬15°07.4′,东经117°50.8′");//黄岩岛2huangyan.add("北纬15°07.0′,东经117°50.6′");//黄岩岛3huangyan.add("北纬15°06.6′,东经117°50.2′");//黄岩岛4huangyan.add("北纬15°06.1′,东经117°49.5′");//黄岩岛5huangyan.add("北纬15°06.3′,东经117°44.2′");//黄岩岛6huangyan.add("北纬15°07.3′,东经117°43.1′");//黄岩岛7huangyan.add("北纬15°12.7′,东经117°42.6′");//黄岩岛8huangyan.add("北纬15°13.1′,东经117°42.8′");//黄岩岛9huangyan.add("北纬15°13.4′,东经117°43.3′");//黄岩岛10huangyan.add("北纬15°13.5′,东经117°43.9′");//黄岩岛11huangyan.add("北纬15°13.5′,东经117°44.4′");//黄岩岛12huangyan.add("北纬15°09.6′,东经117°49.7′");//黄岩岛13huangyan.add("北纬15°09.0′,东经117°50.4′");//黄岩岛14huangyan.add("北纬15°08.5′,东经117°50.8′");//黄岩岛15int index = 1;for(String latlonStr : huangyan) {System.out.println("黄岩岛"+index+"坐标:" + latlonStr);String [] latLon = str2LatLon2(latlonStr);System.out.println(latlonStr + " = (" + latLon[0] + "," +latLon[1] + ")");System.out.println("----------------------------------------------------------");index ++;}
}
在控制台可以看到经过转换的经纬度领海基点位置如下:
黄岩岛1坐标:北纬15°08.1′,东经117°50.9′
北纬15°08.1′,东经117°50.9′ = (15.135,117.8483333)
--------------------------------------------------------------
黄岩岛2坐标:北纬15°07.4′,东经117°50.8′
北纬15°07.4′,东经117°50.8′ = (15.1233333,117.8466667)
--------------------------------------------------------------
黄岩岛3坐标:北纬15°07.0′,东经117°50.6′
北纬15°07.0′,东经117°50.6′ = (15.1166667,117.8433333)
--------------------------------------------------------------
黄岩岛4坐标:北纬15°06.6′,东经117°50.2′
北纬15°06.6′,东经117°50.2′ = (15.11,117.8366667)
--------------------------------------------------------------
黄岩岛5坐标:北纬15°06.1′,东经117°49.5′
北纬15°06.1′,东经117°49.5′ = (15.1016667,117.825)
--------------------------------------------------------------
黄岩岛6坐标:北纬15°06.3′,东经117°44.2′
北纬15°06.3′,东经117°44.2′ = (15.105,117.7366667)
--------------------------------------------------------------
黄岩岛7坐标:北纬15°07.3′,东经117°43.1′
北纬15°07.3′,东经117°43.1′ = (15.1216667,117.7183333)
--------------------------------------------------------------
黄岩岛8坐标:北纬15°12.7′,东经117°42.6′
北纬15°12.7′,东经117°42.6′ = (15.2116667,117.71)
--------------------------------------------------------------
黄岩岛9坐标:北纬15°13.1′,东经117°42.8′
北纬15°13.1′,东经117°42.8′ = (15.2183333,117.7133333)
--------------------------------------------------------------
黄岩岛10坐标:北纬15°13.4′,东经117°43.3′
北纬15°13.4′,东经117°43.3′ = (15.2233333,117.7216667)
--------------------------------------------------------------
黄岩岛11坐标:北纬15°13.5′,东经117°43.9′
北纬15°13.5′,东经117°43.9′ = (15.225,117.7316667)
--------------------------------------------------------------
黄岩岛12坐标:北纬15°13.5′,东经117°44.4′
北纬15°13.5′,东经117°44.4′ = (15.225,117.74)
--------------------------------------------------------------
黄岩岛13坐标:北纬15°09.6′,东经117°49.7′
北纬15°09.6′,东经117°49.7′ = (15.16,117.8283333)
--------------------------------------------------------------
黄岩岛14坐标:北纬15°09.0′,东经117°50.4′
北纬15°09.0′,东经117°50.4′ = (15.15,117.84)
--------------------------------------------------------------
黄岩岛15坐标:北纬15°08.5′,东经117°50.8′
北纬15°08.5′,东经117°50.8′ = (15.1416667,117.8466667)
--------------------------------------------------------------
这些坐标将在下一节的WebGIS系统展示中用到。
三、基于天地图进行WebGIS展示
在线影像底图,我们可以采用国家天地图,在天地图影像中可以看到有相关的数据。因此这里以天地图为例,详细说明如何进行WebGIS的可视化展示。关于如何引用天地图的底图,C站有很多的资料,我的个人博客中也有具体的介绍。这里不再进行赘述。
1、领海基点的可视化
根据上一节转换出来的领海基点数据,我们首先使用Leaflet来逐一绘制。首先将上面的坐标点定义到数组中。
// leaflet 的坐标是纬度、经度
var huangyandao = [[15.135,117.8483333],[15.1233333,117.8466667],[15.1166667,117.8433333],[15.11,117.8366667],[15.1016667,117.825],[15.105,117.7366667],[15.1216667,117.7183333],[15.2116667,117.71],[15.2183333,117.7133333],[15.2233333,117.7216667],[15.225,117.7316667],[15.225,117.74],[15.16,117.8283333],[15.15,117.84],[15.1416667,117.8466667]
];for (let i = 0; i < huangyandao.length; i++) {//构造Leaflet的位置let latlng = L.latLng(huangyandao[i][0], huangyandao[i][1]);var content = "黄岩岛"+i;var title = content;let c = L.circleMarker(latlng, {radius: 5,labelStyle: {text: title,rotation: 0,scale: 1,zIndex: 10,font: "14px Microsoft YaHei",fillStyle: "red",textBaseline: "top" ,minZoom: 9}}).addTo(map);c.bindPopup(content);
}
来看一下将领海基点在天地图中标注的实际效果,如下图所示:
在图中可以很明显的看到,领海基点已经正确的展示出来。 我们可以将这些点连成一个面,然后进行展示,展示代码如下:。
L.polygon([huangyandao],style).addTo(map).bindPopup("南海明珠黄岩岛.");
2、重要城市距离计算
有了基点和面以后,我们还可以计算从基点到一些重要城市的距离。首先,我们先选取一些重点城市及其的经纬度坐标信息。这里分别选取三沙市、三亚市、海口市还有马尼拉这几个城市。城市位置如下:
var targetCity = [{"lat":16.828203,"lon":112.339325,"name":"三沙市","country":"china"},{"lat":18.198044,"lon":109.511719,"name":"三亚市","country":"china"},{"lat":20.014645,"lon":110.203857,"name":"海口市","country":"china"},{"lat":20.643066,"lon":116.850586,"name":"东沙群岛","country":"china"},{"lat":15.146369,"lon":120.050354,"name":"菲律宾卡邦岸","country":"Philippines"},{"lat":14.599531,"lon":121.014404,"name":"菲律宾马尼拉","country":"Philippines"}
];function getDistance(latlng1,latlng2){var _distance = parseFloat(L.latLng(latlng1).distanceTo(L.latLng(latlng2))) / 1000.0;return _distance.toFixed(2) + "公里";
}for(var j = 0;j< targetCity.length;j++){var index = targetCity[j].country == "china" ? 7 : 0;var color = targetCity[j].country == "china" ? "#fe57a1" : "green";//添加矢量数据var p = L.polyline([[huangyandao[index],[targetCity[j].lat,targetCity[j].lon]]], {labelStyle: {text: targetCity[j].name + ":" + getDistance(huangyandao[index],[targetCity[j].lat, targetCity[j].lon]),zIndex: 0,collisionFlg: false,font: "15px sans-serif",textAlign:'end',fillStyle: color},color: color}).addTo(map);
}
来看一下实际的地图展示效果:
从上图中可以很直观的看到黄岩岛到不同城市的距离。祖国幅员辽阔,此刻有了具象化。
四、总结
以上就是本文的主要内容,博文首先介绍了领海基线坐标,同时讲述如何使用Java将领海基点的坐标转换成熟悉的经纬坐标,然后调用天地图使用Leaflet展示这些坐标点,最后再分析从岛上到我国及菲律宾的直线距离。通过文本,大家不仅可以领略国家的大好河山,也掌握如何进行WebGIS的开发,比如坐标点展示和距离求解等。行文仓促,定有许多不足之处,在此恳请各位专家博主在评论区留下真知灼见,不慎荣幸。
相关文章:

“南海明珠”-黄岩岛(民主礁)领海基线WebGIS绘制实战
目录 前言 一、关于岛屿的基点位置 1、领海基点 二、基点坐标的转换 1、最底层的左边转换 2、单个经纬度坐标点转换 3、完整的转换 三、基于天地图进行WebGIS展示 1、领海基点的可视化 2、重要城市距离计算 四、总结 前言 南海明珠黄岩岛,这座位于南海的…...
Oracle数据库 创建dblink的过程及其用法详解
前言 dblink是Oracle数据库中用于连接不同数据库实例的一种机制。通过dblink,用户可以在一个数据库实例中直接查询或操作另一个数据库实例中的表、视图或存储过程。 dblink的作用主要体现在以下几个方面: 跨数据库操作:允许用户…...

Linux从0——1之shell编程4
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...

pycharm快速更换虚拟环境
目录 1. 选择Conda 虚拟环境2. 创建环境3. 直接选择现有虚拟环境 1. 选择Conda 虚拟环境 2. 创建环境 3. 直接选择现有虚拟环境...
MVVM框架
MVVM由以下三个内容构成: Model:数据模型View:界面ViewModel:作为桥梁负责沟通View和Model 在JQuery时期,如果需要刷新UI,需要先取到对应的 DOM 再更新 UI,这样数据和业务的逻辑就和⻚⾯有强耦合。 在 MVVM 中,UI 是…...
数据仓库在大数据处理中的作用
数据仓库(Data Warehouse,简称DW或DWH)是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。以下是对数据仓库及其在大数据处理中作用的详细解释: 一、数据仓库的定义 面向主题&#x…...
前端Javascript、Vue、CSS等场景面试题目(二)
前端面试场景题目(一)-CSDN博客 针对您提供的前端场景面试题目,以下是详细的回答: 1. 如何通过 CSS 实现美观的自定义复选框和单选按钮? 方法:使用 CSS 伪元素 ::before 和 ::after,以及隐藏…...
鸿蒙学习生态应用开发能力全景图-开发者支持平台(5)
鸿蒙相关平台作用: 开发者社区:开发者技术交流平台,帮助开发者探索开发实践、交流心得经验、获悉业界动态、答疑解惑。 开发者学堂:聚合官方鸿蒙生态课程,课程有慕课、微课、直播课、训练营等多种形式ÿ…...

计算机网络各层设备总结归纳(更新ing)
计算机网络按照OSI(开放式系统互联)模型分为七层,每一层都有其特定的功能和对应的网络设备。以下是各层对应的设备: 1. 物理层(Physical Layer) 设备:中继器(Repeater)、集线器…...

3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用)
3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用) 文章目录 3. Spring Cloud Eureka 服务注册与发现(超详细说明及使用)前言1. Spring Cloud Eureka 的概述1.1 服务治理概述1.2 服务注册与发现 2. 实践:创建单机 Eureka Server 注册中心2.1 需求说明 图解…...

品牌如何利用大数据工具,进行消费者洞察分析?
存量竞争的时代, 消费者聆听是品牌持续增长的关键,借助大数据的消费者数据洞察,可以帮助品牌分析消费者的所思所想及行为特征,获取消费者对产品的需求痛点、使用感受,对品牌的评价口碑等,从而帮助品牌更好地…...
鸿蒙实现 web 传值
前言:安卓和 IOS 加载 H5 的时候,都有传值给到 H5 或者接收 H5 值,鸿蒙也可传值和接收 H5 的内容,以下是鸿蒙传值给 H5 端的具体操作 一: 定义好 H5 和鸿蒙传值的方法名,两端必须保持方法名一致 // xxx.ets import …...

uniapp vuex的使用
实现组件全局(数据)管理的一种机制,可以方便的实现组件之间共享数据,不同于上述三种传递值的方式。 可以把vuex当成一个store仓库,可以集中管理共享的数据,并且存储在vuex中的数据都是响应式的,…...

RabbitMQ实战启程:从原理到部署的全方位探索(上)
文章目录 一、RabbitMQ简介1.1、概述1.2、特性 二、RabbitMQ原理架构三、RabbitMQ应用场景3.1 简单模式3.2 工作模式3.3 发布订阅3.4 路由模式3.5 主题订阅模式 四、同类中间件对比五、RabbitMQ部署5.1 单机部署5.1.1 安装erlang5.1.2 安装rabbitmq 5.2 集群部署(镜…...

【论文复现】轻松利用自适应特征融合实现去雾
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 智慧医疗 介绍创新点网络结构特征提取阶段自适应融合阶段图像重建阶段上下文增强模块CEM特征融合模块AFM 结果分析 提示 论文题目࿱…...

【大数据学习 | HBASE高级】hbase-phoenix 与二次索引应用
1. hbase-phoenix的应用 1.1 概述: 上面我们学会了hbase的操作和原理,以及外部集成的mr的计算方式,但是我们在使用hbase的时候,有的时候我们要直接操作hbase做部分数据的查询和插入,这种原生的方式操作在工作过程中还…...
高级java每日一道面试题-2024年11月09日-缓存中间件篇-Redis和Memecache有什么区别?
如果有遗漏,评论区告诉我进行补充 面试官: Redis和Memecache有什么区别? 我回答: 一、基础特性 数据类型支持 Redis: 支持多种数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合…...

vscode 关闭绑定元素 隐式具有“any”类型这类错误
在vue的项目里面,经常看到any类型的报错,真的很烦的 在tsconfig.json中配置以下参数 “noImplicitAny”: false 就可以了 出现类型“never”上不存在属性“userName”。ts-plugin(2339) 配置该参数 modeuleResolution : node "compilerOptions&qu…...

手机ip地址异常怎么解决
在现代社会中,手机已成为我们日常生活中不可或缺的一部分,无论是工作、学习还是娱乐,都离不开网络的支持。然而,有时我们会遇到手机IP地址异常的问题,这不仅会影响我们的网络体验,还可能带来安全隐患。本文…...

【售前方案】工业园区整体解决方案,智慧园区方案,智慧城市方案,智慧各类信息化方案(ppt原件)
基于云计算、物联网、移动通信计算的智慧园区集中运营管理平台是一个高度集成化、智能化的管理系统,它利用先进的技术手段对园区进行全方位的监控和管理。 软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...