Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)
Cesium加载影像图层
- 一、ImageryLayer类
- 常用属性
- 常用方法
- 二、ImageryLayerCollection类
- 常用属性
- 常用方法
- 三、ImageryProvider类
- 常用属性
- 常用方法
- 四、ImageryProvider子类
- 1. ArcGisMapServerImageryProvider
- 加载ArcGIS地图服务
- 2. BingMapsImageryProvider
- 加载BingMap地图服务
- 3. GoogleEarthEnterpriseImageryProvider
- 4. GridImageryProvider
- 5. IonImageryProvider
- 加载Cesium ion地图服务
- 6. MapboxImageryProvider
- 加载Mapbox地图服务
- 7. SingleTileImageryProvider
- 8. TileCoordinatesImageryProvider
- 9. UrlTemplateImageryProvider
- 加载高德地图
- 加载腾讯地图
- 加载天地图
- 10. WebMapServiceImageryProvider
- 11. WebMapTileServiceImageryProvider
- 加载ArcGIS地图服务
- 加载天地图
- 五、加载影像数据的方法
- 六、加载ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图层的核心代码
在Cesium中,加载影像图层主要通过ImageryLayer、ImageryProvider和ImageryLayerCollection三个类来实现;首先我们先来认识下这三个类
一、ImageryLayer类
在Cesium中,使用ImageryLayer对象来表示一个影像图层。ImageryLayer是一个包含一个或多个瓦片的图层,它可以用来控制地图影像的显示、叠加和透明度等属性。可以通过将其添加到ImageryLayerCollection中来实现在场景中显示。
可以使用以下代码创建一个新的ImageryLayer对象:
var imageryLayer = new Cesium.ImageryLayer(imageryProvider, options);
常用属性
- imageryProvider:一个ImageryProvider对象,用于提供地图影像数据
- alpha:影像图层的透明度(0-1),默认值为1
- brightness:影像图层的亮度调整值(-1到1之间),默认值为0
- contrast:影像图层的对比度调整值(-1到1之间),默认值为0
- hue:影像图层的色调调整值(-1到1之间),默认值为0
- saturation:影像图层的饱和度调整值(-1到1之间),默认值为0
- gamma:影像图层的伽马调整值(>=1),默认值为1
- show:布尔类型,表示该图层是否可见,默认值为true
- minimumTerrainLevel:数字类型,表示在地形高程数据缺失时,该图层的最小可见级别。默认值为0
- maximumTerrainLevel:数字类型,表示在地形高程数据缺失时,该图层的最大可见级别。默认值为Infinity
- rectangle:一个Rectangle对象,表示该图层的可视范围
- zIndex:数字类型,表示该图层在图层堆叠顺序中的位置,数值越大表示越靠前
常用方法
- destroy():销毁该图层,释放资源。
该方法会销毁该图层对象,释放其占用的资源。当不再需要该图层时,应该调用它来避免内存泄漏。
var imageryLayer = new Cesium.ImageryLayer(imageryProvider);
// ...
imageryLayer.destroy();
- isDestroyed():返回一个布尔值,表示该图层是否已销毁;如果已经销毁,则返回true;否则返回false
var imageryLayer = new Cesium.ImageryLayer(imageryProvider);
// ...
if (imageryLayer.isDestroyed()) {console.log('图层已销毁');
}
二、ImageryLayerCollection类
ImageryLayerCollection类是Cesium中的一个类,用于存储和管理多个ImageryLayer对象。每个ImageryLayer对象表示一个图像图层,可以包含单张图片或图像切片集合
常用属性
- length:返回集合中ImageryLayer对象的数量
- layerAdded:当图像图层添加到该集合时发生的事件
- layerMoved:当图像图层在该集合内移动时发生的事件
- layerRemoved:当图像图层从该集合中删除时发生的事件
常用方法
- add(layer, index):将给定的ImageryLayer对象添加到集合中的指定位置。如果省略索引,则将该图像图层添加到末尾
- remove(layer):从集合中删除给定的ImageryLayer对象
- removeAll():从集合中删除所有ImageryLayer对象
- raise(layer):将给定的ImageryLayer对象移动到集合中的下一个位置
- lower(layer):将给定的ImageryLayer对象移动到集合中的上一个位置
- raiseToTop(layer):将给定的ImageryLayer对象移动到集合的顶部
- lowerToBottom(layer):将给定的ImageryLayer对象移动到集合的底部
- addImageryProvider(imageryProvider, index):用于将给定的ImageryProvider对象创建的图像图层添加到集合中的指定位置。如果省略索引,则将该图像图层添加到末尾
const esri = await Cesium.ArcGisMapServerImageryProvider.fromUrl('https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer',)
const index = 0
imageLayers.addImageryProvider(esri,index)
首先创建了一个ArcGisMapServerImageryProvider,然后使用它的fromUrl方法创建了一个图像图层并将其添加到imateryLayers的末尾,同时将返回的imageryLayer对象存储在变量esri中。
然后,通过访问viewer.imageryLayers.length获取imageryLayers的长度,并将imageryProvider创建的图像图层插入到开头,即索引为0的位置。
如果省略index参数,则addImageryProvider方法将imageryProvider创建的图像图层添加到imageryLayers的末尾。否则,它将插入到指定的索引处。
三、ImageryProvider类
ImageryProvider是Cesium中提供影像数据的抽象类,定义了一些基本方法和属性,用于获取、处理和显示影像数据。在实际应用中,通常需要根据不同的影像数据源选择不同的ImageryProvider子类,如WebMapServiceImageryProvider、WebMapTileServiceImageryProvider、BingMapsImageryProvider等。
常用属性
- credit: 影像数据提供者的版权信息。类型为Credit对象。
- errorEvent: 加载影像数据时出现错误时触发的事件对象。类型为Event对象,通过监听该事件可以获得加载失败的详情。
- hasAlphaChannel: 影像数据是否包含透明通道。类型为Boolean。
- maximumLevel: 影像数据提供者所提供的最大影像级别。类型为Number。
- minimumLevel: 影像数据提供者所提供的最小影像级别。类型为Number。
- proxy: 代理服务器地址,用于跨域请求影像数据。类型为Proxy对象或字符串。
- ready: 影像数据提供者是否已经加载完成并准备好使用。类型为Boolean。
- rectangle: 影像数据所涵盖的矩形区域范围。类型为Rectangle对象。
- tileWidth: 影像切片的宽度,单位为像素。类型为Number,默认为256。
- tileHeight: 影像切片的高度,单位为像素。类型为Number,默认为256。
- tilingScheme: 影像数据切片方案,用于计算影像切片的行列号以及经纬度范围。类型为TilingScheme对象,默认为WebMercatorTilingScheme。
常用方法
- getTileCredits(x, y, level): 获取指定位置、级别的影像数据切片的版权信息,该方法返回一个Credit数组。通常在地图上显示影像切片时需要显示版权信息,可以使用该方法获取每个影像切片的版权信息。
- pickFeatures(x, y, level, longitude, latitude): 在指定位置、级别、经纬度处查询影像数据源中的要素信息,并返回一个Promise对象。该方法通常用于处理用户交互操作,如点击或悬停显示要素信息。
- requestImage(x, y, level): 请求指定位置、级别的影像数据,并返回一个Promise对象。该方法通常由ImageryLayer调用,开发者无需手动调用。
四、ImageryProvider子类
1. ArcGisMapServerImageryProvider
用于加载ArcGIS Server Map Service提供的影像数据;支持多种格式和地图投影方式;
使用new Cesium.ArcGisMapServerImageryProvider创建一个imageryProvider ,并加载ArcGIS服务
加载ArcGIS地图服务
在Cesium1.104之前的版本中加载ArcGIS服务的方式如下
const esri = new Cesium.ArcGisMapServerImageryProvider({url: 'https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer',
})
imageLayers.addImageryProvider(esri)
如果是在Cesium1.104以后的版本,已经废弃了这种调用方式,如果用上面的方法调用,控制台会出现警告提示
options.url was deprecated in CesiumJS 1.104. It will be in CesiumJS 1.107. Use ArcGisMapServerImageryProvider.fromUrl instead.
使用以下方式替代上面影像地图的加载方法
const esri = await Cesium.ArcGisMapServerImageryProvider.fromUrl('https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer',
)
imageLayers.addImageryProvider(esri)
2. BingMapsImageryProvider
用于加载Bing Maps提供的影像数据;支持多种分辨率、样式和地区;需要提供有效的Bing Maps API key才能使用。
Bing Maps API key可以去Bing Maps官网申请,官网地址:https://www.bingmapsportal.com/
加载BingMap地图服务
加载BingMap使用静态方法BingMapsImageryProvider.fromUrl实现
const bing = await Cesium.BingMapsImageryProvider.fromUrl("https://dev.virtualearth.net", {key: "your-key",mapStyle: Cesium.BingMapsStyle.AERIAL//可选参数,指定地图样式})imageLayers.addImageryProvider(bing)
3. GoogleEarthEnterpriseImageryProvider
用于加载Google Earth Enterprise Server提供的影像数据;支持多种格式和分辨率;可以通过设置单独的token属性进行身份验证。
4. GridImageryProvider
用于加载以栅格方式存储的影像数据;支持多种格式和地图投影方式;需要提供包含切片信息的JSON文件路径或对象。
var gridImagery = new Cesium.GridImageryProvider({color: Cesium.Color.fromCssColorString('#ff00ff'), // 可选参数,指定网格线颜色glowFactor: 0.2, // 可选参数,指定网格线辉光系数
});
imageLayers.addImageryProvider(gridImagery)
5. IonImageryProvider
用于加载Cesium ion服务提供的影像数据;支持多种格式和规格;需要提供有效的ion access token才能使用。
加载Cesium ion地图服务
const Ion = await Cesium.IonImageryProvider.fromAssetId(3812);
imageLayers.addImageryProvider(Ion)
6. MapboxImageryProvider
用于加载Mapbox提供的影像数据;支持多种风格、密度和地区;需要提供有效的Mapbox access token才能使用。
Mapbox token需要到Mapbox官网申请
加载Mapbox地图服务
const mapbox = new Cesium.MapboxImageryProvider({mapId: 'mapbox.mapbox-terrain-v2',accessToken: 'thisIsMyAccessToken'
});
imageLayers.addImageryProvider(mapbox)
7. SingleTileImageryProvider
用于加载单张静态影像数据;支持多种格式和投影方式;需要提供包含影像数据URL的字符串或路径。
SingleTileImageryProvider一般用于加载离线数据或对影像数据要求不高的场景
const provider = await SingleTileImageryProvider.fromUrl("https://yoururl.com/image.png")
imageLayers.addImageryProvider(provider)
8. TileCoordinatesImageryProvider
用于加载本地栅格切片数据;支持多种格式、规格和级别范围;需要提供包含切片路径和后缀的URL模板。它可以用于在地球表面上绘制出每个瓦片的行列号。这对于调试、测试和开发非常有用
var tileCoordinates = new Cesium.TileCoordinatesImageryProvider()
imageLayers.addImageryProvider(tileCoordinates)
上面代码创建一个TileCoordinatesImageryProvider,然后将其添加到场景中的imageryLayers中。该图层将在地球表面上绘制出每个瓦片的行列号。
注意:TileCoordinatesImageryProvider不会加载真实的影像数据,而是在每个瓦片上绘制其行列号。因此,在使用TileCoordinatesImageryProvider时,地球表面将不会显示任何卫星图像或地形数据。
9. UrlTemplateImageryProvider
用于加载基于HTTP/HTTPS协议的网络栅格切片数据;支持多种格式、规格和级别范围;需要提供包含切片路径和后缀的URL模板。UrlTemplateImageryProvider指定Url的format模板,方便用户实现自己的Provider,国内的高德,腾讯等影响服务都可以使用UrlTemplateImageryProvider加载
加载高德地图
var gaodeImageryProvider = new Cesium.UrlTemplateImageryProvider({url: 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',maximumLevel: 18,minimumLevel: 1,credit: 'Amap'
})
imageLayers.addImageryProvider(gaodeImageryProvider)
上面代码创建了一个UrlTemplateImageryProvider对象,并设置其中的url属性,将其指定为从高德地图服务器加载瓦片的URL模板。对于高德地图,需要使用具有三个占位符({x}、{y}和{z})的URL模板。此外,还可以设置瓦片的最大和最小级别。
加载腾讯地图
var tencentImageryProvider = new Cesium.UrlTemplateImageryProvider({ url: "https://p2.map.gtimg.com/sateTiles/{z}/{sx}/{sy}/{x}_{reverseY}.jpg?version=400", customTags: { sx: function(imageryProvider, x, y, level) { return x >> 4; }, sy: function(imageryProvider, x, y, level) { return ((1 << level) - y) >> 4 }}});
imageLayers.addImageryProvider(tencentImageryProvider);
加载天地图
var tdtImageryProvider = new Cesium.UrlTemplateImageryProvider({url: 'http://{s}.tianditu.com/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk=您的密钥',subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],maximumLevel: 18,minimumLevel: 1,credit: 'Tianditu'});imageLayers.addImageryProvider(tdtImageryProvider);
这里创建了一个UrlTemplateImageryProvider对象,并设置其中的url属性,将其指定为从天地图服务器加载瓦片的URL模板。其中{s}是天地图的多个子域之一,{x}、{y}和{z}分别表示瓦片的行列号和级别。tk为天地图开放平台申请的密钥。
这里需要设置subdomains数组以用于轮询不同的服务器。此外,还可以设置瓦片的最大和最小级别。
10. WebMapServiceImageryProvider
用于加载Web Map Service提供的影像数据;支持多种格式和地图投影方式;可以通过设置单独的token属性进行身份验证。
11. WebMapTileServiceImageryProvider
用于加载Web Map Tile Service提供的影像数据;支持多种格式和规格;可以通过设置单独的token属性进行身份验证。
加载ArcGIS地图服务
var imageryProvider = new Cesium.WebMapTileServiceImageryProvider({url : 'https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/WMTS',layer: 'World_Imagery',style: 'default',format: 'image/jpeg',tileMatrixSetID: 'GoogleMapsCompatible',maximumLevel: 19,credit: new Cesium.Credit('© Esri', 'https://www.esri.com/')
});imageLayers.addImageryProvider(imageryProvider);
加载天地图
var tdtWebMapTile = new Cesium.WebMapTileServiceImageryProvider({url : 'http://t0.tianditu.gov.cn/img_w/wmts?tk=您的密钥',layer: 'img',style: 'default',format: 'tiles',tileMatrixSetID: 'w',maximumLevel: 18,credit: new Cesium.Credit('© Tianditu', 'http://www.tianditu.gov.cn/')
});
imageLayers.addImageryProvider(tdtWebMapTile);
五、加载影像数据的方法
加载影像数据通过下面三步来完成
- 创建ImageryLayer对象
在Cesium中,使用ImageryLayer对象来表示一个影像图层。ImageryLayer是一个包含一个或多个瓦片的图层,可以通过将其添加到ImageryLayerCollection中来实现在场景中显示
可以使用以下代码创建一个新的ImageryLayer对象:
var imageryLayer = new Cesium.ImageryLayer(imageryProvider, options);
其中,imageryProvider参数指定了影像数据的提供者,而options参数则可以用来设置影像图层的各种属性,例如不透明度、最大可见高度等
- 创建ImageryProvider对象
在Cesium中,使用ImageryProvider对象来表示一个影像数据的提供者。ImageryProvider是一个抽象类,需要根据具体的数据来源使用其子类来实现
Cesium内置了一些常见数据源的子类,如SingleTileImageryProvider、UrlTemplateImageryProvider、WebMapServiceImageryProvider等,也可以自定义子类来加载其他数据源的影像数据
可以使用以下代码创建一个新的ImageryProvider对象:
var imageryProvider = new Cesium.UrlTemplateImageryProvider({url: 'http://example.com/{z}/{x}/{y}.png'
});
其中,url参数指定了影像数据的URL模板,{z}、{x}、{y}分别代表瓦片的级别、行号和列号,Cesium会将其替换为实际的数值来获取对应的瓦片数据。
- 将ImageryLayer添加到场景中
在创建好ImageryLayer对象后,可以通过以下代码将其添加到场景中:
viewer.imageryLayers.add(imageryLayer);
其中,viewer是Cesium的主要控制器对象
六、加载ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图层的核心代码
const imageLayers = viewer.imageryLayers console.log(imageLayers);imageLayers.remove(imageLayers.get(0)) //清楚Cesium默认加载的影像地图数据(默认是加载的bing地图)
// ArcGIS地图 1.104之前版本的调用方法
// const esri = new Cesium.ArcGisMapServerImageryProvider({
// url: //'https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer',
// })
const esri = await Cesium.ArcGisMapServerImageryProvider.fromUrl( 'https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer',
)
imageLayers.addImageryProvider(esri)
// Bing地图
const bing = await Cesium.BingMapsImageryProvider.fromUrl("https://dev.virtualearth.net", {key: "YOUR KEY",mapStyle: Cesium.BingMapsStyle.AERIAL//可选参数,指定地图样式
})
imageLayers.addImageryProvider(bing)
const Ion = await Cesium.IonImageryProvider.fromAssetId(3812);
imageLayers.addImageryProvider(Ion)
var gridImagery = new Cesium.GridImageryProvider({color: Cesium.Color.fromCssColorString('#ff0000'), // 可选参数,指定网格线颜色glowFactor: 0.2, // 可选参数,指定网格线辉光系数
});
imageLayers.addImageryProvider(gridImagery)
const mapbox = new Cesium.MapboxImageryProvider({mapId: 'mapbox.mapbox-terrain-v2',accessToken: 'YOUR KEY'
});
imageLayers.addImageryProvider(mapbox)
var tileCoordinates = new Cesium.TileCoordinatesImageryProvider()
imageLayers.addImageryProvider(tileCoordinates)
var gaodeImageryProvider = new Cesium.UrlTemplateImageryProvider({url: 'https://webst02.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',maximumLevel: 18,minimumLevel: 1,credit: 'Amap'
});
imageLayers.addImageryProvider(gaodeImageryProvider);
var tencentImageryProvider = new Cesium.UrlTemplateImageryProvider({
// 影像图 url: "https://p2.map.gtimg.com/sateTiles/{z}/{sx}/{sy}/{x}_{reverseY}.jpg?version=400", customTags: { sx: function(imageryProvider, x, y, level) { return x >> 4; }, sy: function(imageryProvider, x, y, level) { return ((1 << level) - y) >> 4 }}
});
imageLayers.addImageryProvider(tencentImageryProvider);
var tdtImageryProvider = new Cesium.UrlTemplateImageryProvider({url: 'http://{s}.tianditu.com/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk=YOUR KEY',subdomains: ['t0', 't1', 't2', 't3', 't4', 't5', 't6', 't7'],maximumLevel: 18,minimumLevel: 1,credit: 'Tianditu'
});
imageLayers.addImageryProvider(tdtImageryProvider);
var arcGIsWebMapTile = new Cesium.WebMapTileServiceImageryProvider({url : 'https://services.arcgisonline.com/arcgis/rest/services/World_Imagery/MapServer/WMTS',layer: 'World_Imagery',style: 'default',format: 'image/jpeg',tileMatrixSetID: 'GoogleMapsCompatible',maximumLevel: 19,credit: new Cesium.Credit('© Esri', 'https://www.esri.com/')
});
imageLayers.addImageryProvider(arcGIsWebMapTile);
const osm = new Cesium.OpenStreetMapImageryProvider({url : 'https://a.tile.openstreetmap.org/'
});
imageLayers.addImageryProvider(osm)
var tdtWebMapTile = new Cesium.WebMapTileServiceImageryProvider({url : 'http://t0.tianditu.gov.cn/img_w/wmts?tk=YOUR KEY',layer: 'img',style: 'default',format: 'tiles',tileMatrixSetID: 'w',maximumLevel: 18,credit: new Cesium.Credit('© Tianditu', 'http://www.tianditu.gov.cn/')
});
var index = 0;
imageLayers.addImageryProvider(tdtWebMapTile,index);
刷新浏览器,可以查看各地图的最终效果
ArcGISMap
BingMap

Mapbox

高德地图

腾讯地图

天地图

OK,这一节就到这里了,有问题评论区讨论,喜欢的小伙伴点赞关注收藏哦!
相关文章:
Cesium入门之六:Cesium加载影像图层(ArcGIS、Bing、Mapbox、高德地图、腾讯地图、天地图等各类影像图)
Cesium加载影像图层 一、ImageryLayer类常用属性常用方法 二、ImageryLayerCollection类常用属性常用方法 三、ImageryProvider类常用属性常用方法 四、ImageryProvider子类1. ArcGisMapServerImageryProvider加载ArcGIS地图服务 2. BingMapsImageryProvider加载BingMap地图服务…...
Redis系列--redis持久化
一、为什么需要持久化 redis本身运行时数据保存在内存中,如果不进行持久化,那么在redis出现非正常原因宕机或者关闭redis的进程或者关闭计算机后数据肯定被会操作系统从内存中清掉。当然,redis本身默认采用了一种持久化方式,即RD…...
在外Windows远程连接MongoDB数据库【无公网IP】
文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 转载自远程内网穿透的文章:公网远…...
学网络安全怎么挖漏洞?怎么渗透?
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...
KL散度和交叉熵的对比介绍
KL散度(Kullback-Leibler Divergence)和交叉熵(Cross Entropy)是在机器学习中广泛使用的概念。这两者都用于比较两个概率分布之间的相似性,但在一些方面,它们也有所不同。本文将对KL散度和交叉熵的详细解释…...
浪涌保护器:保护电子设备免受雷击侵害
引言: 随着电子设备在现代生活和工业领域的普及和广泛应用,雷击对电子设备的损害成为一个严重的问题。浪涌保护器作为一种重要的防雷设备,发挥着至关重要的作用。本文将介绍浪涌保护器的防雷作用、行业应用,并重点介绍浪涌保护器…...
js绘制的红心
看腻歪了粒子特效的红心,今天给各位整个线条的,效果图如下: 表白显圣神器,你值得拥有,代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"…...
十、Feign客户端
目录 1、在springcloud-order项目中引入Feign客户端的依赖 2、在server-order服务的启动类中添加注解EnableFeignClients 3、使用FeignClient注解声明Feign客户端需要调用的远程接口 3.1、server-pay服务提供远程接口Controller 3.2、server-member服务提供远程接口Contro…...
登录appuploader
转载:登录appuploader 常规使用登录方法 双击appuploader.exe 启动appuploader 点击底部的未登录,弹出登录框 在登录框内输入apple开发者账号 如果没有apple开发者账号,只是普通的apple账号,请勾选上未支付688 然后软件会提示…...
都别吹牛逼了,2个英语指令简单评测便知ChatGPT、博弈Ai、文心一言、通义千问、讯飞星火真实水平
一、博弈Ai:GPT3.5版 演示:https://chat.bo-e.com/ 1、充当英语发言助手 评分:10分 总结:完整满足了指令需求 2、充当英汉互译器 评分:8分 总结:基本满足了我的指令需求。但是有点啰嗦,扣…...
使用Spring Boot快速搭建项目:减少配置,提升开发效率
使用Spring Boot快速搭建项目:减少配置,提升开发效率 一、Spring Boot简介1 Spring Boot的起源2 Spring Boot的核心特点3 Spring Boot的优势 二、Spring Boot快速搭建项目1 Spring Boot的项目搭建方式使用Spring Initializr创建项目使用Spring Boot CLI创…...
(2)数码管
LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成"8"字器件 51单片机是共阴极连接 74HC245这个芯片有什么作用呢?解:这个芯片被称之为双向数据缓冲器这个芯片的作用,用来进行数据缓冲(提高驱…...
赫夫曼树和赫夫曼编码详解
目录 何为赫夫曼树? 赫夫曼树算法 赫夫曼编码 编程实现赫夫曼树 编程实现赫夫曼编码 编程实现WPL 总代码及分析 何为赫夫曼树? 树的路径长度:从树根到每一结点的路径长度之和 结点的带权路径长度:从树根到该结点的路径长度…...
unity UGUI系统梳理 -交互组件
概述 unity 中的交互组件可用于处理交互,例如鼠标或触摸事件以及使用键盘或控制器进行的交互 1、按钮 (Button) Button详解 2、开关 (Toggle) Background:背景图片,控制toggle组件的背景颜色改变,从而展示此物体是否被选中的…...
HTTP第15讲——HTTP的连接管理
短连接 HTTP 协议最初(0.9/1.0)是个非常简单的协议,通信过程也采用了简单的“请求 - 应答”方式。 它底层的数据传输基于 TCP/IP,每次发送请求前需要先与服务器建立连接,收到响应报文后会立即关闭连接。 因为客户端与…...
深度剖析Mybatis-plus Injector SQL注入器
背景 在项目中需要同时操作Sql Server 以及 MySQL 数据库,可能平时直接使用 BaseMapper中提供的方法习惯 了,不用的话总感觉影响开发效率,但是两个数据库的SQL语法稍微有点差别,有些暴露的方法并不能直接使用,所以便想…...
【Mysql实战】使用存储过程和计算同比环比
背景 同环比,是基本的数据分析方法。在各类调研表中屡见不鲜,如果人工向前追溯统计数据,可想而知工作量是非常大的。 标题复制10行,并且每行大于10个字符【源码解析】SpringBoot接口参数【Mysql实战】使用存储过程和计算同比环比…...
ChatGPT的前世今生,到如今AI领域的竞争格局,本文带你一路回看!
73年前,“机器思维”的概念第一次被计算机科学之父艾伦图灵(Alan Turing)提出,从此,通过图灵测试成为了人类在AI领域为之奋斗的里程碑目标。 73年后的今天,在AI历经了数十年的不断进化、迭代后,…...
如何在JavaScript中获取当前时间yyyymmddhhmmss? (六种实现方式)
## 介绍 在编写JavaScript代码时,我们经常需要获取当前日期和时间。在本文中,我们将介绍几种获取当前时间并将其格式化为 yyyymmddhhmmss 的字符串的方法。 方法一:使用Date对象 在JavaScript中,我们可以使用 Date 对象来获取当…...
一、走进easyUI的世界
1.什么是easyUI? jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,开发者需要…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
