基于Java实现震中附近风景区预警可视化分析实践

news2024/12/23 18:44:58

目录

前言

一、空间数据说明

1、表结构信息展示

2、空间范围查询

二、Java后台开发实现

1、模型层设计与实现

2、控制层设计与实现

三、Leaflet地图开发

1、地震震中位置展示

2、百公里风景区列表展示

3、风景区列表展示

4、附近风景区展示

四、总结


前言

        地震这类地址灾害的发生常常是不能提前预知的,而往往在人群聚集的地方会给人们带来巨大的财产损失。在人类活动过程中,旅游景点往往是人们热门的出行地方,尤其是5A、4A级这样的旅游景区。在出行的过程当中,往往是没有进行任何准备的。这里以2017年8月8日,发生在我国四川省阿坝州九寨沟县的M7.0级地震为例,详细展示了在震区100公里范围内的所有A级旅游景点。通过100公里范围内的旅游景点展示,同时展示直线距离。为地震发生后,结合地震的震级和影像范围,为地震范围内的旅游景点,尤其是热门旅游景点的影响评估做一个评估参考。突如其来的地震,已导致部分列车停运,不少游客被困景区。九寨沟风景名胜区位于九寨沟县漳扎镇境内,地震发生当日接待游客量为3.4万余人次。目前,九寨沟风景名胜区管理局正全力开展景区排险工作,为保证游客游览安全,九寨沟景区停止接待游客。具体接待游客时间另行通告。九寨沟风景名胜区管理局表示,已经预订了8月9日及以后门车票的游客可到阿坝文旅办理退票,已出8月9日票的游客,在九寨沟景区沟口售票大厅办理退票。

        这次地震对旅游风景区的影响很大。地震及后续的余震对这些游客和当地的老板姓都是很大的安全威胁。本文基于地震信息和全国风景旅游区位置信息,在发震位置点构建一个直径100公里的影响范围景区列表。将地震震级、风景区里震中位置距离、风景区级别、旅游人数信息(可以从景点接待处获取),在实际工作当中,我们可以结合这些数据进行地震风险评估,为后续的救援和应急力量的输送与分配推送一个比较优化的方案。

        本文使用Java开发语言,使用PostGIS空间数据库,构建这样一个空间范围分析模型,输出震中百公里影响景点。将作为下一步的数据分析基础提供数据支撑。通过构建源点位与目标点位的实际距离,构建模型分析的基本要素之一,感兴趣的朋友可以看看本文,了解相关的知识。

一、空间数据说明

        本节将对空间数据结构和数据,100公里范围的空间分析查询进行简单介绍。让大家了解如何进行地震位置指定范围风景区查询。查询涉及的表有两张,第一张是地震信息表,第二张是风景区信息表。

1、表结构信息展示

        这里直接展示地震信息表和风景区信息表两张表的物理结构,表结构信息如下:

         上述这两张表的DDL语句如下所示:

CREATE TABLE "public"."biz_ceic_earthquake" (
  "pk_id" int8 NOT NULL,
  "auto_flag" varchar(30) COLLATE "pg_catalog"."default",
  "cata_id" varchar(30) COLLATE "pg_catalog"."default",
  "cata_type" varchar(30) COLLATE "pg_catalog"."default",
  "epi_depth" numeric(11,8),
  "epi_lat" varchar(15) COLLATE "pg_catalog"."default",
  "epi_lon" varchar(15) COLLATE "pg_catalog"."default",
  "eq_cata_type" varchar(30) COLLATE "pg_catalog"."default",
  "eq_type" varchar(30) COLLATE "pg_catalog"."default",
  "is_del" varchar(6) COLLATE "pg_catalog"."default",
  "location_c" varchar(255) COLLATE "pg_catalog"."default",
  "location_s" varchar(100) COLLATE "pg_catalog"."default",
  "loc_stn" varchar(20) COLLATE "pg_catalog"."default",
  "m" varchar(10) COLLATE "pg_catalog"."default",
  "mmb" varchar(10) COLLATE "pg_catalog"."default",
  "mmb2" varchar(10) COLLATE "pg_catalog"."default",
  "mml" varchar(10) COLLATE "pg_catalog"."default",
  "mms" varchar(10) COLLATE "pg_catalog"."default",
  "mms7" varchar(10) COLLATE "pg_catalog"."default",
  "new_did" varchar(16) COLLATE "pg_catalog"."default",
  "o_time" timestamp(6),
  "o_time_fra" varchar(10) COLLATE "pg_catalog"."default",
  "save_time" timestamp(6),
  "sum_stn" varchar(10) COLLATE "pg_catalog"."default",
  "sync_time" timestamp(6),
  "epi_id" varchar(10) COLLATE "pg_catalog"."default",
  "geom" "public"."geometry",
  CONSTRAINT "pk_biz_ceic_earthquake" PRIMARY KEY ("pk_id")
);

CREATE INDEX "idx_biz_ceic_earthquake_eqidept" ON "public"."biz_ceic_earthquake" USING btree (
  "epi_depth" "pg_catalog"."numeric_ops" ASC NULLS LAST
);
CREATE INDEX "idx_biz_ceic_earthquake_geom" ON "public"."biz_ceic_earthquake" USING gist (
  "geom" "public"."gist_geometry_ops_2d"
);
CREATE INDEX "idx_biz_ceic_earthquake_m" ON "public"."biz_ceic_earthquake" USING btree (
  "m" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
COMMENT ON COLUMN "public"."biz_ceic_earthquake"."pk_id" IS '主键id';
COMMENT ON COLUMN "public"."biz_ceic_earthquake"."epi_depth" IS '地震深度';
COMMENT ON COLUMN "public"."biz_ceic_earthquake"."epi_lat" IS '纬度';
COMMENT ON COLUMN "public"."biz_ceic_earthquake"."epi_lon" IS '经度';
COMMENT ON COLUMN "public"."biz_ceic_earthquake"."geom" IS '位置';
COMMENT ON TABLE "public"."biz_ceic_earthquake" IS '中国地震台网信息表';
CREATE TABLE "public"."biz_scenic_spot" (
  "id" int8 NOT NULL,
  "name" varchar(255) COLLATE "pg_catalog"."default",
  "level" varchar(4) COLLATE "pg_catalog"."default",
  "province" varchar(255) COLLATE "pg_catalog"."default",
  "city" varchar(255) COLLATE "pg_catalog"."default",
  "area" varchar(255) COLLATE "pg_catalog"."default",
  "address" varchar(255) COLLATE "pg_catalog"."default",
  "evaluation_time" varchar(255) COLLATE "pg_catalog"."default",
  "publish_time" varchar(255) COLLATE "pg_catalog"."default",
  "lng_gcj02" varchar(30) COLLATE "pg_catalog"."default",
  "lat_gcj02" varchar(30) COLLATE "pg_catalog"."default",
  "lng_bd09" varchar(30) COLLATE "pg_catalog"."default",
  "lat_bd09" varchar(30) COLLATE "pg_catalog"."default",
  "lng_wgs84" varchar(30) COLLATE "pg_catalog"."default",
  "lat_wgs84" varchar(30) COLLATE "pg_catalog"."default",
  "geom" "public"."geometry",
  "publish_link" varchar(255) COLLATE "pg_catalog"."default",
  CONSTRAINT "pk_biz_scenic_spot" PRIMARY KEY ("id")
);
CREATE INDEX "idx_biz_scenic_spot_geom" ON "public"."biz_scenic_spot" USING gist (
  "geom" "public"."gist_geometry_ops_2d"
);
COMMENT ON COLUMN "public"."biz_scenic_spot"."id" IS '主键';
COMMENT ON COLUMN "public"."biz_scenic_spot"."name" IS '景区名称';
COMMENT ON COLUMN "public"."biz_scenic_spot"."level" IS '景区级别';
COMMENT ON COLUMN "public"."biz_scenic_spot"."province" IS '所属省份';
COMMENT ON COLUMN "public"."biz_scenic_spot"."city" IS '所属城市';
COMMENT ON COLUMN "public"."biz_scenic_spot"."area" IS '所属区县';
COMMENT ON COLUMN "public"."biz_scenic_spot"."address" IS '地址';
COMMENT ON COLUMN "public"."biz_scenic_spot"."evaluation_time" IS '评定时间';
COMMENT ON COLUMN "public"."biz_scenic_spot"."publish_time" IS '发布时间';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lng_gcj02" IS 'lng_GCJ02';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lat_gcj02" IS 'lat_GCJ02';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lng_bd09" IS 'lng_BD09';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lat_bd09" IS 'lat_BD09';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lng_wgs84" IS 'lng_WGS84';
COMMENT ON COLUMN "public"."biz_scenic_spot"."lat_wgs84" IS 'lat_WGS84';
COMMENT ON COLUMN "public"."biz_scenic_spot"."publish_link" IS '发布链接';
COMMENT ON TABLE "public"."biz_scenic_spot" IS '全国风景区信息表';

2、空间范围查询

        与之前介绍过的附近城市分析涉及的空间分析查询一样,主要的空间分析函数是:st_dwithin,这里依然以九寨沟地震震发中心点为查询样例:

SELECT 
    T.*,
	st_x ( T.geom ) lon,
	st_y ( T.geom ) lat,
	st_distance ( T.geom :: geography, t1.geom :: geography ) dist 
FROM
	biz_scenic_spot T,
	biz_ceic_earthquake t1 
WHERE
	t1.pk_id = 1780964053414354949 
	AND st_dwithin ( T.geom :: geography, t1.geom :: geography, 5000 * 20 ) 
ORDER BY
	dist;

        在PostGIS当中执行上述空间查询语句之后,可以看到以下结果:

        下面的章节将实现把上面的查询结果进行Web应用开发,完全实现通过一个地震点来实时查询地震点附近的风景区列表分析。 

二、Java后台开发实现

        在了解了空间数据查询的SQL具体的写法之后,我们来开发针对性的后台。开发语言采用我们熟悉的Java开发语言。java开发采用熟悉的MVC三层开发模式。

1、模型层设计与实现

        在模型层,我们主要介绍实体类的代码实现和Mapper即数据库访问层的设计与实现。实体类主要用来将数据库查询的结果集绑定到对象中。而Mapper则实现对PostGIS空间数据库的绑定和设置。实例代码如下:

package com.yelang.project.extend.scenicspot.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class ScenicSpotDistVo implements Serializable{
	private static final long serialVersionUID = -1403627497900208179L;
	private BigDecimal dist;//距离
	private String address;//位置
	private String name;//名称
	private String level;//风景区级别
	private String lon;//经度
	private String lat;
}

           在Mapper接口中定义以下方法,用于实现从数据库中查询相应的风景区数据列表。

static final String FIND_LIST_BY_EARTHID = "<script>"
			+ " select t.name,t.level,t.address,st_x(t.geom) lon,st_y(t.geom) lat, "
			+ " st_distance(t.geom :: geography, t1.geom :: geography) dist from biz_scenic_spot t,biz_ceic_earthquake t1 "
			+ " where t1.pk_id= #{eqId} and st_dwithin(t.geom :: geography,t1.geom :: geography,100000  )  order by dist "
			+ "</script>";
/**
 *  查询地震100公里范围内的风景区列表
* @param eqId
* @return 地震发生地点100公里范围内的景区
*/
@Select(FIND_LIST_BY_EARTHID)
List<ScenicSpotDistVo> findListByEarthId(@Param("eqId") Long eqId);

2、控制层设计与实现

         业务层比较简单,不进行详细说明。在这个实例当中,业务层的实现比较简单。这里将控制层的代码实现进行说明。这里仅实现页面的跳转和一个ajax接口,关键代码如下:

//跳转附近风景区页面,用get请求
@RequiresPermissions("ceiceq:info:nearbyss")
@GetMapping("/nearbyscenicspot/{pkId}")
public String nearbyScenicSpot(@PathVariable("pkId")Long pkId,ModelMap mmap){
    mmap.put("pkId", pkId);
    CeicEarthquake earthQuake = ceicEarthQuakeService.getById(pkId);
    mmap.put("earthQuake", earthQuake);
    List<ScenicSpotDistVo> dataList = scenicSpotService.findListByEarthId(pkId);
    mmap.put("dataList", dataList);
    return prefix + "/nearbyscenicspot";
}
    
/**
* 获取附近风景区列表数据,用post
* @param pkId
* @return
*/
@PostMapping("/nearbyscenicspot/{pkId}")
@ResponseBody
public AjaxResult nearbyScenicSpot(@PathVariable("pkId")Long pkId){
    AjaxResult ar = AjaxResult.success();
    List<ScenicSpotDistVo> dataList = scenicSpotService.findListByEarthId(pkId);
    ar.put("data", dataList);
    return ar;
}

        以上代码即给出了后台Java实现的关键代码。通过以上代码即完成了空间数据分析查询接口开发。下面通过Leaflet组件来进行地图可视化开发。

三、Leaflet地图开发

        本小节主要讲解如何使用Leaflet进行空间可视化展示开发。关于Leaflet的相关知识不再赘述,这里提供关键代码:

1、地震震中位置展示

          在进行地震百公里风景区可视化展示时,首先需要对震中位置进行展示。关键的代码如下所示。

var lon = [[${earthQuake.epiLon}]];  
var lat = [[${earthQuake.epiLat}]];
var cityInfo = [[${earthQuake.locationC}]];
//矢量文本标签渲染器
var canvasLabel = new L.CanvasLabel({
	 defaultLabelStyle: {
	      collisionFlg: true,
	      scale: 1.2,
	      strokeStyle: "white",
	      fillStyle: "#fff",
	      lineWidth:15
	 }
});
$(function() {
     var marker = L.circleMarker(new L.LatLng(lat, lon), {radius: 8,
		  labelStyle: {
			   text: cityInfo,
			   rotation: 0,
			   zIndex: 2,
			   strokeStyle :"red"
		  },
		  color : "red"
		}).addTo(mymap);
       //展示距离
       showDistance();
 });

2、百公里风景区列表展示

        关键代码如下:

function showDistance(){
     $.ajax({  
		   type:"post",  
		   url:prefix + "/nearbyscenicspot/" + [[${pkId + ''}]],  
		   dataType:"json",  
		   cache:false,
		   processData:false,
		   success:function(result){
		       if(result.code == web_status.SUCCESS){
		        	var strokeStyleSet = "green";
		        	for(var i=0;i<result.data.length;i++){
		        		var dataInfo = result.data[i];
		        		var dist = dataInfo.dist;
		        		if(parseFloat(dist) <= 30000){
		    				strokeStyleSet = "red";
		    			}
		        			
		        		if(parseFloat(dist) > 30000 && parseFloat(dist) <= 60000 ){
		    				strokeStyleSet = "orange";
		    			}
		        		if(parseFloat(dist) >= 60000){
		        			strokeStyleSet = "green";
		        		}
		        			
		        		var _dist = parseFloat(dataInfo.dist / 1000).toFixed(2);
		    			var content = "<strong>风景区名称:</strong>"+dataInfo.name + "<br/><strong>震中位置:</strong>"+ cityInfo;
		    		 content += "<br/><strong>风景区级别:</strong>"+dataInfo.level + "<br/><strong>距离(千米):</strong>"+_dist;
	    				var marker = L.circleMarker(new L.LatLng(dataInfo.lat, dataInfo.lon), {radius: 8,labelStyle: {
			    			          text: dataInfo.name,
			    			          rotation: 0,
			    			          zIndex: i,
			    			          strokeStyle :strokeStyleSet
			    			        },
			    			        color : strokeStyleSet
			    			    }).addTo(mymap);
		    				marker.bindPopup(content);    
		    				
		    				L.polyline(
	   					      [
	   					    	  [
	   					    		  [lat, lon],[dataInfo.lat, dataInfo.lon]]], {
	   					      labelStyle: {
	   					        text: _dist + "千米",
	   					        zIndex: 0,
	   					        collisionFlg: false,
	   					        textAlign:'center',
	   					     	strokeStyle :strokeStyleSet
	   					      },
	   					      color : strokeStyleSet
	   					    }).addTo(mymap);
		        		}
		        	}
		        },
		        error:function(){
		        	$.modal.alertWarning("获取信息失败");
		        }
		    });
        }

3、风景区列表展示

<table class="table table-bordered white-bg" >
     <thead>
          <tr>
               <th width="50%">风景区名称</th>
               <th>风景区级别</th>
               <th>距离(公里)</th>
          </tr>
      </thead>
      <tbody>
          <tr th:each="data,itemStat:${dataList}">
                <td >[[${itemStat.count}]]、[[${data.name}]]</td>
                <td>[[${data.level}]]</td>
                <td th:text="${#numbers.formatDecimal((data.dist / 1000 ), 1, 2)}"></td>
           </tr>
       </tbody>
 </table>

4、附近风景区展示

        地震点列表及震中位置定位功能示意图

        可以看到,震中位置附近有很多的风景名胜区,其中就有5A级风景区,九寨沟。距离震中最近的还有8公里左右的爱情海景区。30公里范围内还有一个4A级的阿坝州九寨沟县嫩恩桑措旅游景区。完整的列表表单如下所示:

风景区名称风景区级别距离(公里)
1、爱情海景区4A8.21
2、九寨沟风景名胜区5A10.46
3、阿坝州九寨沟县嫩恩桑措旅游景区4A22.90
4、九寨沟县九寨庄园景区3A39.79
5、九寨沟柴门关景区3A39.92
6、九寨县甲勿海景区3A40.48
7、松潘县奇峡沟冰雪欢乐景区3A42.98
8、上磨水乡2A45.16
9、天堂香谷2A46.01
10、岷江源景区3A50.13
11、松潘县川主寺旅游景区4A50.29
12、黄龙国家级风景名胜区5A52.12
13、松潘县松州古城3A64.51
14、文县白马河民俗风情旅游景区4A65.44
15、舟曲县亚哈藏民俗旅游文化生态园景区2A66.19
16、涪阳古镇3A72.53
17、若尔盖县巴西会议红色旅游景区3A77.09
18、舟曲县拉尕山景区4A78.08
19、舟曲县土桥子国家景区3A81.56
20、舟曲特大山洪泥石流灾害纪念园3A82.49
21、舟曲县各皂坝国家景区3A82.96
22、舟曲县翠峰山景区2A84.63
23、迭部县茨日那毛主席旧居景区3A85.71
24、文县天池旅游景区4A85.98
25、武都区朝阳洞旅游景区3A86.05
26、若尔盖县花湖生态旅游区4A86.56
27、舟曲县巴寨沟国家景区3A87.94
28、迭部县俄界景区4A88.51
29、宕昌县山湾梦谷古羌民俗旅游景区3A90.58
30、黄河九曲第一湾4A91.27
31、西部牧场3A93.17
32、阿坝州红原县日干乔景区4A97.69
33、迭部县白云景区3A98.42

四、总结

        以上就是本文的主要内容,本文使用Java开发语言,使用PostGIS空间数据库,构建这样一个空间范围分析模型,输出震中百公里影响景点。将作为下一步的数据分析基础提供数据支撑。通过构建源点位与目标点位的实际距离,构建模型分析的基本要素之一,感兴趣的朋友可以看看本文,了解相关的知识。

        文章通过对空间数据库表的设计以及空间分析查询语句的编写,让大家掌握如何在PostGIS数据库中进行空间分析,最后使用Leaflet组件调用Java服务完成了震中附近风景区列表的分析实战。行文仓促,定有不足之处,不当之处,还请各位专家博主在评论区批评指正,万分感谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1709903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

打印机手动双面打印技巧

一、WORD和PDF &#xff08;1&#xff09;首先选择要打印的页面范围&#xff0c;然后选择仅奇数页打印 &#xff08;2&#xff09;将打印完的纸张翻过来&#xff0c;白纸朝上&#xff0c;纸张的头部先放入打印机 &#xff08;3&#xff09;选择要打印的页面范围&#xff0c;然…

【problem】解决EasyExcel导出日期数据显示为#####问题

前言 在使用EasyExcel进行数据导出时&#xff0c;你可能遇到日期或其他数据在Excel中显示为“#######”的情况&#xff0c;这通常是因为列宽不足以展示单元格内的全部内容。本文将指导你如何通过简单的步骤解决这一问题&#xff0c;并确保导出的Excel文件自动调整列宽或直接指…

成都蓝蛙科技引领AIGC创新,亮相中国AIGC开发者大会

2024年5月25日&#xff0c;第三届AIGC中国开发者大会在北京举行&#xff0c;蓝蛙科技公司CEO兼创始人李辰受邀出席并发表主题演讲。作为开源框架GeneralAgent的作者&#xff0c;发表了题为“Agent框架的挑战和解决方案”的精彩演讲。李辰先生深入探讨了在构建和部署基于大型语言…

git冲突

git冲突的产生&#xff1a; 首先用户A新建一个文件conflict&#xff0c;并在里面添加内容 然后通过add,commit,push将该文件上传到远端仓库 然后用户B通过pull将程序拉下来之后&#xff0c;也在这个文档里面进行编辑&#xff0c;并且内容不一样 如果这个时候其中一个人push&…

Redis面试题深度解析

1、我看你做的项目中&#xff0c;都用到了redis&#xff0c;你在最近的项目中哪些场景使用了redis呢? 2、缓存穿透 布隆过滤器的误判现象 Redisson和Guava都对布隆过滤器进行了实现 3、缓存击穿 互斥锁&#xff0c;就是一个线程来修改&#xff0c;并占据了锁&#xff0c;另外其…

C#--Mapster(高性能映射)用法

1.Nuget安装Mapster包引用 2.界面XAML部分 <Window x:Class"WpfApp35.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.m…

实战指南:Vue 2基座 + Vue 3 + Vite + TypeScript微前端架构实现动态菜单与登录共享

实战指南&#xff1a;Vue 2基座 Vue 3 Vite TypeScript子应用vue2微前端架构实现动态菜单与登录共享 导读&#xff1a; 在当今的前端开发中&#xff0c;微前端架构已经成为了一种流行的架构模式。本文将介绍如何结合Vue 2基座、Vue 3子应用、Vite构建工具和TypeScript语言…

华为机考入门python3--(32)牛客32-密码截取

分类&#xff1a;最长对称子串、动态规划 知识点&#xff1a; 生成二维数组 dp [[0] * n for _ in range(n)] 求最大值 max(value1, value2) 动态规划的步骤 a. 定义问题 长度为n下最长的对称子串的长度 b. 确定状态 dp[i][j]表示字符串从索引i到j的子串是否为对称…

2024.5.28晚训题解

提前预告&#xff0c;市赛初中组会考算法题&#xff0c;应该会有两道模板题 比如DFS BFS 二分 简单动态规划&#xff0c;虽然我们没学多久&#xff0c;但是模板题你还是要会写的 A题 编辑距离 动态规划 注意多组输入 #include<iostream> using namespace std; int dp[1…

unity3D获取某天的0点和23点59分59秒

系列文章目录 unity工具 文章目录 系列文章目录unity工具 &#x1f449;一、前言&#x1f449;二、获取某一天的0点和23点59分59秒1-1.代码如下1-2.调用方法如下1-2-1.获取当天的时间1-2-2.获取某一天的时间 &#x1f449;三、当月第一天0时0分0秒&#x1f449;四、当月最后一…

SHELL编程(三)网络基础命令 Makefile

目标 一、网络基础及相关命令&#xff08;一&#xff09;网络相关命令&#xff08;二&#xff09;重启网络服务 二、Makefile&#xff08;一&#xff09;标签式语法&#xff08;二&#xff09;目标:依赖 式语法1. 格式2. 编译流程&#xff1a;预处理 编译 汇编 链接3. 目标和伪…

TiDB-从0到1-体系结构

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务 一、TiDB体系结构图 TiDB基础的体系架构中有4大组件 TiDB Server&#xff1a;用于处理客户端的请求PD&#xff1a;体系的大脑&#xff0c;存储元数据信息TiKV&#xff1a;存储数据TiFlash…

Stable Diffusion 模型演进:LDM、SD 1.0, 1.5, 2.0、SDXL、SDXL-Turbo 等

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

Vue3+Ant design 实现Select下拉框一键全选/清空

最近在做后台管理系统项目的时候&#xff0c;产品增加了一个让人非常苦恼的需求&#xff0c;让在Select选择器中添加一键全选和清空的功能&#xff0c;刚开始听到的时候真是很懵&#xff0c;他又不让在外部增加按钮&#xff0c;其实如果说在外部增加按钮实现全选或者清空的话&a…

触摸屏是输入设备还是输出设备?

从功能上讲&#xff0c;触摸屏理应属于输入设备&#xff0c;之所以有很多用户会误会它是输出设备&#xff0c;是因为将其与“触摸显示屏”搞混了&#xff0c;以手机屏幕为例&#xff0c;它并不是单层屏幕&#xff0c;而是有多个不同功能和作用组成的集成屏&#xff0c;这类带有…

ubuntu-24.04系统静态Mac和IP配置

操作系统版本&#xff08;桌面版&#xff09;&#xff1a;ubuntu-24.04-desktop-amd64.iso 原因说明&#xff1a;因网络的IP地址和Mac是预分配的&#xff0c;所以ubuntu系统需要修改网卡的mac地址和IP才能访问&#xff0c;网络查了半天资料都没成功&#xff0c;后再界面提示&a…

【Python】 Python中的“命名元组”:简单而强大的数据结构

基本原理 在Python中&#xff0c;namedtuple是tuple的一个子类&#xff0c;它允许我们为元组的每个位置指定一个名字。这种数据结构非常适合用于需要固定字段和值的场景&#xff0c;例如数据库查询的结果或配置文件中的设置。 namedtuple提供了一种方便的方式来访问元组中的元…

力扣2028. 找出缺失的观测数据

题目&#xff1a; 现有一份 n m 次投掷单个 六面 骰子的观测数据&#xff0c;骰子的每个面从 1 到 6 编号。观测数据中缺失了 n 份&#xff0c;你手上只拿到剩余 m 次投掷的数据。幸好你有之前计算过的这 n m 次投掷数据的 平均值 。 给你一个长度为 m 的整数数组 rolls &a…

防止浏览器缓存了静态的配置等文件(例如外部的config.js 等文件)

防止浏览器缓存了静态的配置文件 前言1、在script引入的时候添加随机数1.1、引入js文件1.2、引入css文件2、通过html文件的<meta>设置防止缓存3、使用HTTP响应头:前言 在实际开发中浏览器的缓存问题一直是一个很让人头疼的问题,尤其是我们打包时候防止的静态配置文件c…

在 PhpStorm 中自定义代码片段

在 PhpStorm 中自定义代码片段的步骤如下: 打开 PhpStorm,进入 “File” > “Settings” > “Editor” > “Live Templates”。 在右侧面板中,点击 “” 号,选择 “Live Template”。 在弹出的窗口中: Abbreviation: 输入您想要自动补全的缩写,比如 “de”Template …