基于SpringBoot实现各省距离Excel导出实战

目录

前言

一、列表及图表信息展示

1、数据过滤调整

2、信息列表及图表展示

3、Excel写入

二、界面可视化

1、Echarts图表和列表展示

2、城市详情和下载功能设计

三、成果展示

1、图表展示

 2、部分城市数据分析

总结


前言

        今天是五一黄金周假期第二天,不知道各位小伙伴们是出门在外旅游还是路上。在上一篇博文中基于SpringBoot和PostGIS的各省与地级市空间距离分析,在这篇博客中使用SpringBoot基于PostGIS空间数据库实现了对各省省会城市与地级市的空间距离分析。虽然地图保留了很好的空间位置信息,但是对于对于展示数据不是很直观,同时有一些小伙伴说想要提供完整的地市距离列表和统计图表,最好还能分省将对应地市的空间距离导出成excel以方便共享和使用。

        本文即是在这样的需求场景下诞生,博文重点介绍如何将地级市空间距离信息在进行列表展示,同时如何制作Echarts地级市柱状图,然后讲述了如何进行Excel数据导出,最后以几个省份为例,分析这几个省份的空间地理距离特点。祖国大好河山,让我们共同奋斗。

一、列表及图表信息展示

        本小节重点讲解在应用中如何进行列表及图表信息的展示,其中图表控件采用Echarts进行柱状图展示。这里对各省信息列表进行一个重新过滤。考虑到北京市、上海市、天津市、重庆市这四个直辖市的市中心与下面的区县距离都比较近,因此在省级行政范围中,将直辖市去掉。于此同时,香港特别行政区和澳门特别行政区也是一样的原因,在信息展示页面一并把两个特别行政区去掉,在后面的空间分析中,直辖市和特别行政区都不再进行地级市距离分析范围内,对于区县级别的距离分析中倒是可以考虑纳入进来。

1、数据过滤调整

        要实现数据的过滤,在biz_province这张表的类型中进行type过滤,由于采用了Mybatis-Plus框架,这里在写代码时,只需要进行type的not in 过滤即可,下面来看具体的实现:

@Override
public List<Province> selectList4Gn(Province province) {
	QueryWrapper<Province> queryWrapper = new QueryWrapper<Province>();
    if(StringUtils.isNotBlank(province.getName())){
        queryWrapper.like("name", province.getName());
    }
    queryWrapper.select(" id,code,name,type ");
    List<String> inData = new ArrayList<String>(2);
    inData.add("直辖市");
    inData.add("特别行政区");
    queryWrapper.notIn("type", inData);//过滤特别行政区和直辖市
    queryWrapper.orderByAsc("code");
    return this.baseMapper.selectList(queryWrapper);
}

2、信息列表及图表展示

        这里我们在省级行政区划的操作栏新增两个按钮开一个是查看详情按钮,另外一个是下载当前省份空间距离的按钮。先来进行查看详情按钮的设计与实现。在后台的控制器中新增以下两个方法,主要用于详情页面的展示和图表信息的展示。

@RequiresPermissions("eq:province:distance:details")
@GetMapping("/details/{code}")
public String echartsView(ModelMap mmap,@PathVariable("code") String code){
    List<GeographicName> list = geoNameService.findListByProvinceCode(code);
    mmap.put("dataList", list);
    mmap.put("code", code);
    return prefix + "/details";
 }
    
 @PostMapping("/echarts/provinceline/{code}")
 @ResponseBody
 public AjaxResult provinceLine(@PathVariable("code") String code){
    String charts = geoNameService.buildProvinceChart(code);
    AjaxResult result = AjaxResult.success();
    result.put("data", charts);
    return result;
 }

        这里需要注意的是,echarts的图表数据采用后端生成的模式,使用后台的Json构建。

@Override
	public String buildProvinceChart(String code) {
		String result = "";
		GsonOption option = new GsonOption();
		option.title().text("地级市与省会距离统计图(单位:千米)");
        option.tooltip().trigger(Trigger.axis);
        option.legend("距离");
        option.legend().y(Y.bottom).padding(0);
        option.toolbox().show(true).feature(new MagicType(Magic.line, Magic.bar).show(true), Tool.saveAsImage);
        option.calculable(true);
        List<String> provinces = new ArrayList<String>();
        List<BigDecimal> eqCounts = new ArrayList<BigDecimal>();
        List<GeographicName> dataList = this.findListByProvinceCode(code);
        int index = 0;
        for (GeographicName vo : dataList) {
        	if(index == 0) {
        		index ++;
        		continue;
        	}
        	index ++;
        	provinces.add(vo.getName());
        	eqCounts.add(vo.getDist().divide(new BigDecimal("1000")));
		}
        CategoryAxis categoreAxis = new CategoryAxis();
        categoreAxis.data(provinces.toArray()).axisLabel().interval(0).rotate(20);
        option.xAxis(categoreAxis);
        option.yAxis(new ValueAxis());
        Bar bar = new Bar("距离");
        bar.data(eqCounts.toArray());
        bar.markPoint().data(new PointData().type(MarkType.max).name("最大值"), new PointData().type(MarkType.min).name("最小值"));
        bar.markLine().data(new PointData().type(MarkType.average).name("平均值"));
        option.series(bar);
        result = option.toString();
		return result;
	}

3、Excel写入

        为了方便直接下载指定省份下辖地级市的空间城市距离。我们将对应省份下属行政区直接以excel信息的形式给出,同时在excel中直接把各地级市与省会城市的直线距离也列了出来。为了直接使用JavaBean的模式来定义excel列,需要在model层进行属性绑定。通过类中的@Excel(name = "城市距离(单位:米)")来配置当前属性对应的导出excel列。

package com.yelang.project.extend.earthquake.domain;
import java.io.Serializable;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yelang.framework.aspectj.lang.annotation.Excel;
import com.yelang.framework.handler.PgGeometryTypeHandler;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@TableName(value ="biz_geographic_name",autoResultMap = true)
public class GeographicName implements Serializable{
	private static final long serialVersionUID = -3694849578429480952L;
	@TableId(value = "pk_id")
	@Excel(name = "序号")
	private Long pkId;
	@Excel(name = "城市名称")
	private String name;
	@Excel(name = "城市汉语拼音")
	private String pinyin;
	@Excel(name = "类别")
	private String classz;
	@Excel(name = "备注")
	private String bz;
	private String slx;
	public GeographicName(String name, String pinyin, String classz, String bz, String slx, String geom) {
		super();
		this.name = name;
		this.pinyin = pinyin;
		this.classz = classz;
		this.bz = bz;
		this.slx = slx;
		this.geom = geom;
	}

	@TableField(typeHandler = PgGeometryTypeHandler.class)
	private String geom;
	@TableField(exist=false)
	private String geomJson;  
	@TableField(exist=false)
	@Excel(name = "城市距离(单位:米)")
	private BigDecimal dist;//距离
}

        在controller中调用api进行excel的写入,关键的业务逻辑代码如下所示:

@RequiresPermissions("eq:province:distance:export")
@Log(title = "城市距离", businessType = BusinessType.EXPORT)
@PostMapping("/export/{code}")
@ResponseBody
public AjaxResult export(@PathVariable("code") String code){
   List<GeographicName> list = geoNameService.findListByProvinceCode(code);
   ExcelUtil<GeographicName> util = new ExcelUtil<GeographicName>(GeographicName.class);
   Province province = provinceService.findByCode(code);
   return util.exportExcel(list, province.getName() + "城市距离信息表");
}

        通过以上的代码基本就实现了数据导出和可视化的后台代码的编写。下面根据需要,我们来提供对应的前端页面代码逻辑。

二、界面可视化

        本小节主要对界面可视化的设计与代码实现进行深度说明,主要包含两个子功能点,第一个Echarts图表和列表展示,第二个是下载指定省份的城市信息列表,闲言少语,直接进入正题。

1、Echarts图表和列表展示

        俗话说,一图胜千言,一个比较好的统计表格,能快速的让大家迅速的理解数据要素。所以与枯燥的静态表格相比,我们提供一个对应地级市的空间距离柱状分布图。为了有一个直观的感受,我们将图表放置在页面的左边,而列表信息放在页面的右边。

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
	<th:block th:include="include :: header('ECharts')" />
</head>
<body class="gray-bg">
         <div class="row">
           <div class="col-sm-7">
               <div class="ibox float-e-margins">
                   <div class="ibox-title">
                       <h5>距离统计</h5>
                       <div class="ibox-tools">
                           <a class="collapse-link">
                               <i class="fa fa-chevron-up"></i>
                           </a>
                           <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                               <i class="fa fa-wrench"></i>
                           </a>
                           <ul class="dropdown-menu dropdown-user">
                               <li><a href="#">选项1</a>
                               </li>
                               <li><a href="#">选项2</a>
                               </li>
                           </ul>
                           <a class="close-link">
                               <i class="fa fa-times"></i>
                           </a>
                       </div>
                   </div>
                   <div class="ibox-content">
                       <div style="height:350px" id="echarts-province-chart"></div>
                   </div>
               </div>
           </div>
           <div class="col-sm-5">
               <div class="ibox float-e-margins">
                   <div class="ibox-content">
                      <table class="table table-bordered white-bg">
                           <thead>
                               <tr>
                                   <th width="50%">城市名称</th>
                                   <th>距离(公里)</th>
                               </tr>
                           </thead>
                           <tbody>
                           	<tr th:each="data,itemStat:${dataList}" th:if="${itemStat.count > 1}">
                                   <td >[[${itemStat.count - 1}]]、[[${data.name}]]</td>
                                   <td th:text="${#numbers.formatDecimal((data.dist / 1000 ), 1, 2)}"></td>
                               </tr>
                           </tbody>
                       </table>
                   </div>
               </div>
           </div>
    </div>
    <th:block th:include="include :: footer" />
    <th:block th:include="include :: echarts-js" />
    <script type="text/javascript">
    	var charts = new Array();
    	var provinceLineChart;
    	var minprovinceChart;
    	var mapoption;
	    $(function () {
	     provinceLineChart = echarts.init(document.getElementById("echarts-province-chart"));
        $(window).resize(provinceLineChart.resize);
	        charts.push(provinceLineChart);
 	        initProvinceChart();
	        
	        $(window).resize(function() {
	            for(var i = 0; i < charts.length; i++) {
	                charts[i].resize();
	            }
	        });
	        
	        //解决tab切换不显示问题 在加载窗口后重新渲染。
	        $('a[data-toggle="tab"]').on('shown.bs.tab', function(e) {
	            for(var i = 0; i < charts.length; i++) {
	                charts[i].resize();
	            }
	        });
	    });
	    
	    function initProvinceChart(){
	    	var code = [[${code}]];
			$.ajax({
		    	   type: "POST",
		    	   url: ctx + "eq/province/distance/echarts/provinceline/" + code,
		    	   data: {},
		    	   dataType : "json",
		    	   success: function(serverdata){
		    		   if(serverdata != ""){
		    		   		var serverJsonData = eval('('+serverdata.data+')');
		    		   		provinceLineChart.setOption(serverJsonData,true);
		    		   		$(window).resize(provinceLineChart.resize);
		    		   }
		    	   },
		    	   error:function(data){
		    		   parent.layer.alert('系统发生错误!', {icon: 5});
		    	   }
	    	});
		}
    </script>
</body>
</html>

2、城市详情和下载功能设计

        我们在省级行政区的操作栏中增加一个“查看详情”按钮和“下载”按钮。用户点击“查看详情”会自动打开一个弹出框,将城市对应的所有地级市进行数据展示。点击“下载”按钮,则会自动下载对应行政区划的数据成excel格式的。因此需要在原来的列表中进行修改,同时增加两个处理的逻辑函数。

{
   title: '操作',
   align: 'center',
   formatter: function(value, row, index) {
             var actions = [];
             actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="preview(\'' + row.code + '\',\''+row.id+'\')""><i class="fa fa-send-o"></i></a> ');
             actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="details(\'' + row.code + '\',\''+row.id+'\')""><i class="fa fa-eye"></i></a>  ');
              actions.push('<a class="btn btn-primary btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="downloadFile(\'' + row.code + '\',\''+row.id+'\')""><i class="fa fa-download"></i></a>');
             return actions.join('');
      }
}

        对应的查看详情的处理方法如下:

function details(code,id){
	parent.layer.open({
		type: 2,
		title: ["详情",'font-size:16px;text-align:center;font-weight: bold;'],
		scrollbar:false,
		area: ['80%', '90%'],
		content: prefix + "/details/" + code ,
		btn:[],
		yes:function(index,layero){},
		cancel: function(index, layero){ 
		parent.layer.close(index);
		return false; 
	   } 
	}); 
 }

        下载附件的时候需要注意,实际生成excel时,会先将文件写入到本次,然后通过公共接口去下载数据,然后在后台删除对应的物理文件。实际情况可以根据我们的需求来合理调整相应的逻辑。 

function downloadFile(code,id){
    var url = prefix + '/export/' + code;
    $.post(url, {}, function(result) {
    if (result.code == web_status.SUCCESS) {
          window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
    } else if (result.code == web_status.WARNING) {
           $.modal.alertWarning(result.msg)
    } else {
           $.modal.alertError(result.msg);
    }
       $.modal.closeLoading();
    });
}

        经过以上的步骤,基本完成前端的业务逻辑的编写,下面进行前后端的功能继承,测试相关功能是否达到我们的实际需求。

三、成果展示

        本小节主要完成对相关开发成果的综合展示,包括echarts图表和标准网页列表,以及excel附件的下载。除了展示具体的成果,我们也结合相关的统计数据,对展示的图表信息进行一个简单分析,当然,欢迎其它小伙伴对数据进行准确的分析,也可以结合空间位置和其他参数进行空间建模。一起发现时空之美。

1、图表展示

        这里主要以系统截图的方式实现对系统图表功能和相关列表的展示进行演示。

 河北省地级市距离展示示意图

        点击列表操作栏中的第二个按钮,即查看详情按钮,点击查看详情后,可以详细看到其图表统计分析结果和列表统计信息。

地级市与省会距离详情页面

        与查看详情类似,在操作栏中可以直接点击下载,将实现直接下载对应省份的相关数据表格。 说明,由于该数据采用的是2015年的,随着现在城市化的进程,涉及到一些行政区划合并、删除、划转。本文中的数据有一个不是很准确,如果数据不对,仅作为参考,最标准的数据还是以自然资源部们发布的官方数据为准。

序号城市名称城市汉语拼音类别备注城市距离(单位:米)
1783889052488028162石家庄市Shijiazhuang ShiAD省会城市0
1783888852373487639衡水市Hengshui ShiAD地级市106931.86747708
1783888852373487637邢台市Xingtai ShiAD地级市107691.70790783
1783888852373487635保定市Baoding ShiAD地级市124101.09462634
1783888852373487643邯郸市Handan ShiAD地级市157107.89379521
1783888852373487636沧州市Cangzhou ShiAD地级市205780.92881549
1783888852373487632廊坊市Langfang ShiAD地级市251191.02372759
1783888850716737539张家口市Zhangjiakou ShiAD地级市304396.28680783
1783888852373487633唐山市Tangshan ShiAD地级市363795.21794606
1783888850716737540承德市Chengde ShiAD地级市438525.3515243
1783888852373487634秦皇岛市Qinhuangdao ShiAD地级市487995.12411063

 2、部分城市数据分析

        下满我们依然选取几个省份来进行数据分析。以上面河北省为例,首先我们在百度中查询河北的城市信息。

        河北省(中华人民共和国省级行政区),别称冀,全省面积18.88万平方千米,辖石家庄、唐山、秦皇岛、邯郸、邢台、保定、张家口、承德、沧州、廊坊、衡水11个市。从河北的城市距离来看,300公里范围内的城市就有7个,所有城市不超过500公里。

        下面来看经济比较强的一些省份的空间距离,先来看看江苏省的。

        江苏省下辖南京市、无锡市 、徐州市、常州市、苏州市、南通市、连云港市、淮安市、盐城市、扬州市、镇江市、泰州市、宿迁市13个地级市。其各城市空间距离如下:

城市名称距离(公里)
1、镇江市60.78
2、扬州市68.81
3、常州市114.65
4、泰州市114.78
5、无锡市156.80
6、淮安市167.91
7、苏州市189.46
8、盐城市191.73
9、南通市195.58
10、宿迁市216.50
11、徐州市276.52
12、连云港市283.91

        可以看到,江苏省内的各地级市,其空间距离9个事200公里以内,所有城市都在300公里以内。这样的距离使得各个地方的经济发展更加密切吧。

        为了节约篇幅,这里再列一个省份,新疆维吾尔自治区。新疆现有14个地(州、市),包括5个自治州、5个地区和乌鲁木齐、克拉玛依、吐鲁番、哈密4个地级市。

城市名称距离(公里)
1、昌吉回族自治州32.24
2、吐鲁番市160.23
3、巴音郭楞蒙古自治州258.77
4、克拉玛依市291.06
5、阿勒泰地区448.38
6、博尔塔拉蒙古自治州458.59
7、塔城地区487.24
8、塔城地区487.24
9、哈密地区491.18
10、伊犁哈萨克自治州505.86
11、阿克苏地区672.69
12、和田地区989.58
13、克孜勒苏柯尔克孜自治州1054.77
14、喀什地区1081.40

        通过空间距离可以看到,新疆真的地大,全疆离乌鲁木齐市300公里内的只有3个城市,和田地区和喀什地区等将近1000公里。这么远的距离,对于经济和人员交流都是一种限制吧。

总结

        好了,以上就是本文的主要内容。 本文即是在这样的需求场景下诞生,博文重点介绍如何将地级市空间距离信息在进行列表展示,同时如何制作Echarts地级市柱状图,然后讲述了如何进行Excel数据导出,最后以几个省份为例,分析这几个省份的空间地理距离特点。五一劳动节,致敬伟大的劳动人民,致敬每一位奋斗者,让我们都保持昂的扬斗志不断奋斗。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis(Jedis和SpringBoot整合Redis)

文章目录 1.Jedis1.介绍2.环境配置1.创建maven项目2.pom.xml引入依赖3.新建一个包并创建一个文件 3.Jedis远程连接到Redis1.Redis放到服务器可以连接的前提条件2.为Redis设置密码1.编辑配置文件2.找到 requirepass3.设置密码为root4.重启Redis&#xff0c;在shutdown的时候报错…

R语言实战——中国职工平均工资的变化分析——相关与回归分析

链接: R语言学习—1—将数据框中某一列数据改成行名 R语言学习—2—安德鲁斯曲线分析时间序列数据 R语言学习—3—基本操作 R语言学习—4—数据矩阵及R表示 R语言的学习—5—多元数据直观表示 R语言学习—6—多元相关与回归分析 1、源数据 各行业平均工资变化 各地区平均工资…

常用算法介绍

1. 冒泡排序&#xff1a;冒泡排序是一种简单的排序算法&#xff0c;它的基本思想是比较相邻的两个元素&#xff0c;如果顺序错误就交换它们的位置&#xff0c;直到所有元素都按照升序排列。 2. 快速排序&#xff1a;快速排序是一种高效的排序算法&#xff0c;它的基本思想是选取…

内网端口转发与代理

思路&#xff1a;渗透的前提是双方能够建立通信。目前无法和win7建立通信&#xff0c;但是拿到了windows2003的权限&#xff0c;所以可以在Windows2003主机上面建立节点&#xff0c;作为跳板机去访问到内网。 目前状态&#xff1a;控制win2003&#xff08;IP&#xff1a;192.1…

基于JSP的人才公寓管理系统

目录 背景 技术简介 系统简介 界面预览 背景 随着互联网的广泛推广和应用&#xff0c;人才公寓管理系统在网络技术的推动下迅速进步。该系统的设计初衷是满足住户的实际需求&#xff0c;通过深入了解住户的期望&#xff0c;开发出高度定制化的人才公寓管理系统。利用互联网…

如何进行Go语言的性能测试和调优?

文章目录 开篇一、性能测试1. 使用标准库中的testing包2. 使用第三方工具 二、性能调优1. 优化算法和数据结构2. 减少不必要的内存分配和垃圾回收3. 并发和并行 结尾 开篇 Go语言以其出色的性能和简洁的语法受到了广大开发者的喜爱。然而&#xff0c;在实际开发中&#xff0c;…

39.乐理基础-拍号-认识音符

拍号是一个分数的形式&#xff0c;如下图篮色的圈圈里的东西&#xff0c;但它的实际意义和分数没什么关系&#xff0c;只是外观上是一个分数的形式 单独拿出拍号&#xff0c;如下图&#xff1a; 然后接下来只要搞懂什么是 Y分音符、一拍、小节就可以了。 音符&#xff1a; 控…

Java | Leetcode Java题解之第67题二进制求和

题目&#xff1a; 题解&#xff1a; class Solution {public String addBinary(String a, String b) {StringBuffer ans new StringBuffer();int n Math.max(a.length(), b.length()), carry 0;for (int i 0; i < n; i) {carry i < a.length() ? (a.charAt(a.leng…

特征提取(Feature Extraction)常见统计特征笔记(三)

统计特征是描述数据集中值的一组量&#xff0c;通常用于了解数据的分布、集中趋势和变异程度。常见的统计特征包括均值、中位数、众数、标准差、方差等。下面会详细解释每个统计特征&#xff0c;并给出相应的Python代码。 1、均值&#xff08;Mean&#xff09;&#xff1a;所有…

分布式存储 Ceph 的演进经验

从 2004 年到今天&#xff0c;Ceph 的存储后端一直都在演变&#xff0c;从最开始基于 B 树的 EBOFS 演变到今天的 BlueStore&#xff0c;存储后端已经变得非常成熟&#xff0c;新的存储系统不仅能够提供良好的性能&#xff0c;还有着优异的兼容性。我们在这篇文章中将要简单介绍…

华为eNSP小型园区网络配置(上)

→跟着大佬学习的b站直通车← 目标1&#xff1a;dhcp分配ip地址 目标2&#xff1a;内网用户访问www.yzy.com sw1 # vlan batch 10 # interface Ethernet0/0/1port link-type accessport default vlan 10 # interface Ethernet0/0/2port link-type trunkport trunk allow-pass…

【Linux】网络连接配置——nmcli工具配置连接增删改查实例

nmcli工具配置连接增删改查实例 &#xff08;一&#xff09;网络连接配置基本项目1.网络接口配置2.主机名配置3.DNS服务器配置 &#xff08;二&#xff09;网络连接配置文件&#xff08;三&#xff09;网络配置方法&#xff08;四&#xff09;nmcli工具配置连接管理1.增2.查3.改…

prometheus+grafana的安装与部署及优点

一、Prometheus 的优点 1、非常少的外部依赖&#xff0c;安装使用超简单&#xff1b; 2、已经有非常多的系统集成 例如&#xff1a;docker HAProxy Nginx JMX等等&#xff1b; 3、服务自动化发现&#xff1b; 4、直接集成到代码&#xff1b; 5、设计思想是按照分布式、微服…

GPT-3

论文&#xff1a;Language Models are Few-Shot Learners&#xff08;巨无霸OpenAI GPT3 2020&#xff09; 摘要 最近的工作表明&#xff0c;通过对大量文本进行预训练&#xff0c;然后对特定任务进行微调&#xff0c;在许多NLP任务和基准方面取得了实质性进展。虽然这种方法…

stm32单片机开发二、定时器-内部时钟中断和外部时钟中断、编码器

定时器本质就是一个计数器 案例&#xff1a;定时器定时中断 内部时钟中断 Timer_Init(); //定时中断初始化 /*** 函 数&#xff1a;定时中断初始化* 参 数&#xff1a;无* 返 回 值&#xff1a;无*/ void Timer_Init(void) {/*开启时钟*/RCC_APB1PeriphClockCmd(RCC…

【AI】指定python3.10安装Jupyter Lab

家里电脑 13900K, bash 不识别pythoncmd可以,但是cmd似乎默认是python2.7这个是webrtc构建需要的.python3 则可以识别到但是版本是python3.12*多个版本如何通过制定的python3.10 的pip来安装软件,例如Jupyter Lab安装3.10 C:\Users\zhangbin\AppData\Roaming\Microsoft\Windo…

网络安全之从原理看懂XSS

01、XSS的原理和分类 跨站脚本攻击XSS(Cross Site Scripting)&#xff0c;为了不和层叠样式表(Cascading Style Sheets&#xff0c;CSS)的缩写混淆 故将跨站脚本攻击缩写为XSS&#xff0c;恶意攻击者往Web页面里插入恶意Script代码&#xff0c;当用户浏览该页面时&#xff0c…

【附poc】新中新中小学智慧校园信息管理系统存在SQL注入漏洞

新中新中小学智慧校园信息管理系统介绍&#xff1a;新中新利用云服务技术同时借鉴互联网模式&#xff0c;围绕基础教育信息化、智慧化建设&#xff0c;把线下业务和线上业务结合&#xff0c;为教育主管部门、校园管理者、教师、学生以及家长提供具有教务管理功能的平台化、移动…

基于TL431基准电压源的可调恒压恒流源的Multisim电路仿真设计

1、线性电源的工作原理 在我们日常应用里&#xff0c;直流电是从市电或电网中的交流电获取的。例如15V直流电压源、24V直流电压源等等。交流电变为直流电的过程大概分为一下几步&#xff1a; 首先&#xff0c;交流电通过变压器降低其电压幅值。接着&#xff0c;经过整流电路进…

八、Linux进程检测与控制

章节目标 了解进程和程序的关系了解进程的特点能够使用top动态查看进程信息能够使用ps静态查看进程信息能够使用kill命令给进程发送信号能够调整进程的优先级&#xff08;扩展&#xff09; 引言 在运维的日常工作中&#xff0c;监视系统的运行状况是每天例行的工作&#xff…