使用Java进行中小学违规教育培训数据采集实践-以某城市为例

news2024/9/25 11:15:45

目录

前言

一、违规教育信息

1、内容管理 

2、转换后的内容

二、数据库设计

1、空间数据库

三、字符地址位置转换空间信息

1、实现时序图

2、后台实体类的设计与实现

3、数据持久化操作

 四、总结


前言

        时间来到2024年8月24日,时间过得很快,2024年的暑假即将结束。神兽们该归笼了,各位家长们又是辛苦的照顾两个月。在这两个月的时间中,大家一定参加过不少的教育培训,中学的也好,小学的也好。一定有很多的家长在给家里的小朋友找了很多机构进行培训。先不说培训机构的培训能力怎么样,相信大家一定很关注哪些是违规培训。以博主所在的城市为例,关于违规培训有以下的定义:

凡是在周末、寒暑假、节假日开展义务教育学科培训的机构(个人)均为违规培训;凡是没有办学许可证的开展校外培训的机构均为违规培训机构。校外培训机构一次性不得收取超过三个月或60个课时的费用,非学科类培训机构一次性收费不得超过5000元。请广大家长知晓,如遇到违规培训或者违规收费,可以进行投诉举报。

        根据市教育局的通知和工作要求,在今年整个暑假期间,监管不松懈!暑假以来,全市各区县(市)共出动多次,拆除违规广告牌若干处,下发停办或者整改通知书若干份。共查处违规培训行为,其中隐形变异学科培训25起,无证非学科类培训14起,有证机构违规办学2起。希望我们广大的家长在挑选培训机构的时候,可以选择正规的机构,不仅保证我们的培训质量,同时还可能引起财产的损失。

        作为一名地理信息从业者,我们可以将这些违规商家的信息搜集起来,可以整理成一个信息的黄页,在家长需要进行信息查询的时候,就知道这些机构是需要注意的。这也是为人民服务了,当然,有教育需求的地方才会有较多的培训结构。因此,通过我们的地址编码,将地名地址转换成空间位置,我们进而可以分析出,该城市的教培空间分布模式,掌握教育分布情况。也可以优化相应的教育配套,引导更优质的教育培训机构入驻,为家长和学生提供优质的教育需求。

        本文以Java语言为例,将市教育局发布的违规培训名单进行集中采集,将数据集中存储。可以将这些数据进行统一分析,为下一步的空间分析和使用分布模型的建立,甚至后续的空间图谱构建奠定一个坚实的基础。通过本文,您将掌握如何进行数据的高效写入,同时进行地理编码的转换,以及相关空间表的设计。

一、违规教育信息

        首先我们来介绍一下市教育局公布的违规教育信息,这里的数据来源于长沙晚报掌上长沙,41起!长沙通报暑期第二批违规培训名单。大家可以看到这是8月7日公布的一个名单。

1、内容管理 

        上面的表格仅展示了隐形变异学科培训列表,在表格中包含了机构名称、机构地址、备注信息等重要信息。请注意,上面的信息是存储在图片的表格中,因此我们不能直接的使用抓取工具来进行的获取。当然,在上面这种信息量不是很多的情况下,我们可以直接进行人工手动录入,毕竟数据量也是有限。本文呢,暂时用这种手工处理的模式。更加智能的方式是进行OCR识别,当然这里的OCR识别,需要识别出表格,而不是按照文本的顺序按空格输出,这样拿到的数据也是不符合需要的。要实现这种表格的识别,得加上OpenCV等组件进行学习或者深度学习来识别表格外框,再结合COR的外框来进行精准识别。关于利用OpenCV来进行表格识别的内容,暂且不表。

2、转换后的内容

        在明确数据的采集之后,我们可以利用微信或者一些在线工具,把下载的图片进行在线识别,将数据转换成Excel,也可以一行行的录入相关数据。最后可以得到下面的Excel表格。

序号名称地址备注时间类型来源
1唐*湘江新区奥克斯中央公馆9栋308房2024-08-07隐形变异学科培训长沙晚报
2王*源湘江新区水岸御园12栋30012024-08-07隐形变异学科培训长沙晚报
3宏科教育(郑**)湘江新区长房时代城5栋1001、10052024-08-07隐形变异学科培训长沙晚报
4刘*爱湘江新区合能璞丽10栋204、2052024-08-07隐形变异学科培训长沙晚报
5100分之道(丁*)湘江新区金茂悦商铺10-1142024-08-07隐形变异学科培训长沙晚报
6宏科教育(郑**)湘江新区钰龙一期1栋1单元15022024-08-07隐形变异学科培训长沙晚报
7幸福成长教育(聂*)湘江新区德润园商业街9栋2楼2024-08-07隐形变异学科培训长沙晚报
8尹*骥湘江新区望月湖小区9片17栋1单元1042024-08-07隐形变异学科培训长沙晚报
9彭*芙蓉区芙蓉路中隆国际大厦905号2024-08-07隐形变异学科培训长沙晚报
10华斯优学(吴**)芙蓉区荷花园街道蔚蓝天空大厦6楼左侧以托管机构名义变相开展学科培训2024-08-07隐形变异学科培训长沙晚报
11尹*妮芙蓉区荷花园街道蔚蓝天空大厦6楼左侧个人租用华斯优学场地变相开展学科培训2024-08-07隐形变异学科培训长沙晚报
12刘*艳天心区君尚嘉筑2栋9032024-08-07隐形变异学科培训长沙晚报
13陈*杰天心区汇金国际银座5092024-08-07隐形变异学科培训长沙晚报
14廖*天心区汇金国际银座27102024-08-07隐形变异学科培训长沙晚报
15慧眼物理(王*)开福区伍家岭街道红色商贸城E4栋二楼左边户2024-08-07隐形变异学科培训长沙晚报
16无名雨花区侯家塘街道东尚一品A栋1502房2024-08-07隐形变异学科培训长沙晚报
17陆*雄雨花区左家塘街道鸿铭中心K座501、5022024-08-07隐形变异学科培训长沙晚报
18闪光教育(李*)雨花区洞井街道鄱阳佳郡3栋1单元302、502房2024-08-07隐形变异学科培训长沙晚报
19莘莘教育(匡**)雨花区井湾子街道万科金色麦田3栋1604-1605室2024-08-07隐形变异学科培训长沙晚报
20尹*里雨花区井湾子街道万科金色麦田3栋1609-1610室2024-08-07隐形变异学科培训长沙晚报
21长沙瀚铭智能科技有限公司雨花区井湾子街道号万科金色麦田商业4栋221房组织介绍上门家教变相开展学科培训2024-08-07隐形变异学科培训长沙晚报
22李*民浏阳市葛家镇葛家园村台上组11号一楼2024-08-07隐形变异学科培训长沙晚报
23余*浏阳市荷花街道新月半岛E2栋2单元103A2024-08-07隐形变异学科培训长沙晚报
24胡*雨浏阳市永安镇永新村桂花苑5栋5楼2024-08-07隐形变异学科培训长沙晚报
25黄*平浏阳市集里街道东方新天地B栋一单元1003室2024-08-07隐形变异学科培训长沙晚报
26准者联盟少儿篮球培训(龚*)湘江新区枫林三路741号骑龙花园2024-08-07无证非学科类培训长沙晚报
27青蒙艺术(郭**)湘江新区金山桥街道元拓秀街S5栋3242024-08-07无证非学科类培训长沙晚报
28湖南全华体育发展有限公司芙蓉区东岸街道天园假日小区羽毛球馆三楼2024-08-07无证非学科类培训长沙晚报
29劲狮学堂(刘*)开福区四方坪街道左岸春天会所一楼2024-08-07无证非学科类培训长沙晚报
30柯科书画(高*)开福区四方坪街道万富汇银座1324室2024-08-07无证非学科类培训长沙晚报
31菲菲舞蹈(龙**)开福区青竹湖街道水映加州运动会所2楼2024-08-07无证非学科类培训长沙晚报
32长沙雅田教育咨询有限公司开福区芙蓉北路街道芙蓉北路和凤亭路交汇处西南角2024-08-07无证非学科类培训长沙晚报
33美美希舞蹈(蔡*)开福区芙蓉北路街道富湾际5栋2001室2024-08-07无证非学科类培训长沙晚报
34mozare琴行(黄*)开福区洪山街道恒大雅苑7-9栋120-1212024-08-07无证非学科类培训长沙晚报
35优优钢琴(庞*)开福区洪山街道月湖兰庭5栋2单元16楼2024-08-07无证非学科类培训长沙晚报
36长沙市雨花区半音阶乐器经营部雨花区古曲南路199号花中城20-1062024-08-07无证非学科类培训长沙晚报
37长沙县星沙晨艺希工艺美术品店长沙县星沙街道开元东路深业睿城三期G3栋13楼2024-08-07无证非学科类培训长沙晚报
38长沙县墨绿红画室长沙县泉塘街道康桥长郡1栋2012024-08-07无证非学科类培训长沙晚报
39彭*浏阳市葛家镇葛家园村马家湾137号二楼2024-08-07无证非学科类培训长沙晚报
40浏阳市优而尚学培训学校浏阳市优而尚学培训学校高中学科类培训机构超范围对义务教育学生进行学科类培训2024-08-07有证机构违规办学长沙晚报
41浏阳市快乐嘟嘟培训中心有限公司浏阳市快乐嘟嘟培训中心有限公司非学科类培训机构超范围对义务教育学生进行学科培训2024-08-07有证机构违规办学长沙晚报

        在拿到上面的数据之后,我们就可以实现相关的数据存储,为了在下一步进行空间热力图和空间分布的查看,我们需要将这些拿到的中文地址转换成经纬度坐标,然后存储到数据库中。

二、数据库设计

        在明确了元数据的各项指标之后,我们就可以进行存储的表设计,这里我们采用PostGIS来存储,将直接存储上面采集到的元数据信息,同时还会调用天地图的相关接口,实现地理编码的解析以及空间信息的存储。因此本小节来讲一下数据库的设计。

1、空间数据库

这是上述业务表的字段信息,其DDL语句和索引的设定如下SQL所示,大家可以直接复制使用:

CREATE TABLE "public"."biz_violation_training" (
  "id" int8 NOT NULL,
  "name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
  "address" varchar(512) COLLATE "pg_catalog"."default" NOT NULL,
  "remark" varchar(255) COLLATE "pg_catalog"."default",
  "publish_date" timestamp(6) NOT NULL,
  "type" varchar(128) COLLATE "pg_catalog"."default",
  "source" varchar(64) COLLATE "pg_catalog"."default",
  "lat" varchar(32) COLLATE "pg_catalog"."default",
  "lon" varchar(32) COLLATE "pg_catalog"."default",
  "geom" "public"."geometry",
  "create_by" int8,
  "create_time" timestamp(6),
  "update_by" int8,
  "update_time" timestamp(6),
  CONSTRAINT "pk_biz_violation_training" PRIMARY KEY ("id")
);
CREATE INDEX "idx_biz_violation_training_sour" ON "public"."biz_violation_training" USING btree (
  "source" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_biz_violation_training_type" ON "public"."biz_violation_training" USING btree (
  "type" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST
);
CREATE INDEX "idx_biz_violation_traning_geom" ON "public"."biz_violation_training" USING gist (
  "geom" "public"."gist_geometry_ops_2d"
);

COMMENT ON COLUMN "public"."biz_violation_training"."id" IS '主键';
COMMENT ON COLUMN "public"."biz_violation_training"."name" IS '机构名称';
COMMENT ON COLUMN "public"."biz_violation_training"."address" IS '地址';
COMMENT ON COLUMN "public"."biz_violation_training"."remark" IS '备注';
COMMENT ON COLUMN "public"."biz_violation_training"."publish_date" IS '发布时间';
COMMENT ON COLUMN "public"."biz_violation_training"."type" IS '类型';
COMMENT ON COLUMN "public"."biz_violation_training"."source" IS '来源';
COMMENT ON COLUMN "public"."biz_violation_training"."lat" IS '纬度';
COMMENT ON COLUMN "public"."biz_violation_training"."lon" IS '经度';
COMMENT ON COLUMN "public"."biz_violation_training"."geom" IS '位置';
COMMENT ON COLUMN "public"."biz_violation_training"."create_by" IS '创建人';
COMMENT ON COLUMN "public"."biz_violation_training"."create_time" IS '创建时间';
COMMENT ON COLUMN "public"."biz_violation_training"."update_by" IS '更新人';
COMMENT ON COLUMN "public"."biz_violation_training"."update_time" IS '更新时间';

三、字符地址位置转换空间信息

        在了解数据源,还有空间数据表的相关设计之后,我们要实现从Excel数据表中,将信息表格提取出来,然后调用天地图的API接口将地址转换成坐标,最后见Geometry信息,从而实现信息的保存。

1、实现时序图

        下面使用转换时序图来重点讲解一下真个过程是如何实现。首先讲解时序图,然后将给出重点步骤的代码实现。

 1.1、首先使用java的file对象将Excel表格读取到内存中,等待处理。

 1.2、使用ExcelUtil来进行数据的读取。

 1.3、实际将表格导入的内存中,然后将结果转为List。

 1.4、将地名地址信息发送给后台,将地名地址传给天地图。

 1.5、将点地图返回的数据进行JSON解析,转换为Java对象,从而获取Location等地址信息。

 1.6、根据返回的地址信息构建Geometry的字段信息。

 1.7、将Excel表格中的数据进行重新赋值。

 1.8、将数据进行批量插入到数据库中。

 1.9、完成。

        以上就是大致的处理的流程。

2、后台实体类的设计与实现

        后台实体类的模型设计很重要,为了在数据中可以直观的看到经纬度信息,因此在数据库表格中设计两个字段,用来存储经纬度信息。

package com.yelang.project.education.domain;
import java.io.Serializable;
import java.util.Date;
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 com.yelang.framework.web.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
 * 违规办学培训实体类
 * @author 夜郎king
 */
@TableName(value ="biz_violation_training",autoResultMap = true)
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@ToString
public class ViolationTraining extends BaseEntity implements Serializable{
	private static final long serialVersionUID = 879828674200308872L;
	@TableId(value="id")
	private Long id;
	@Excel(name = "序号")
	@TableField(exist = false)
	private String index;
	@Excel(name = "名称")
	private String name;
	@Excel(name = "地址")
	private String address;
	@Excel(name = "备注")
	private String remark;
	@Excel(name = "时间",dateFormat = "yyyy-MM-dd")
	@TableField(value= "publish_date")
	private Date date;
	@Excel(name = "类型")
	private String type;
	@Excel(name = "来源")
	private String source;
	private String lat;//经度
	private String lon;//纬度
	@TableField(typeHandler = PgGeometryTypeHandler.class)
	private String geom;
	@TableField(exist=false)
	private String geomJson;
}

3、数据持久化操作

        定义好数据表结构和实体类代码后,我们要将数据进行持久化。这里持久化使用开源的Mybatis-plus操作。同时需要注意的是,在进行数据插入的时候,有自己来主动构建空间信息。

/**
*	 读取excel信息
*/
@Test
public void readExcelData() {
	try {
		File file = new File("C:/Users/Administrator/Desktop/违规培训.xlsx");
		FileInputStream fis = new FileInputStream(file);
		ExcelUtil<ViolationTraining> util = new ExcelUtil<ViolationTraining>(ViolationTraining.class);
		List<ViolationTraining> dataList = util.importExcel(fis);
		for(ViolationTraining base : dataList) {
			TdtAddressInfo info = this.GetLocationByTDT(base.getAddress());
			System.out.println(info);
            System.out.println("******************************************************");
			if(null != info.getLocation()) {
				String lat = String.valueOf(info.getLocation().getLat());
				String lon = String.valueOf(info.getLocation().getLon());
				base.setLat(lat);
				base.setLon(lon);
				String geom = "SRID=" + 4326 +";POINT (" + lon+ " " + lat + ")";//拼接srid,实现动态写入
				base.setGeom(geom);
			}
			Thread.sleep(3500);
		}
		if(dataList.size() > 0) {
			vtService.saveBatch(dataList, 200);
		}
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (Exception e) {
		e.printStackTrace();
   }
}

        这里需要注意的话,为了保证不让天地图的后台进行访问限制,我们将每次访问后将暂停3.5秒钟。执行上述的代码后可以看到控制台在输出以下信息:

ViolationTraining(id=null, index=9, name=彭*, address=芙蓉区芙蓉路中隆国际大厦905号, remark=, date=Wed Aug 07 00:00:00 CST 2024, type=隐形变异学科培训, source=长沙晚报, lat=null, lon=null, geom=null, geomJson=null)
https://api.tianditu.gov.cn/geocoder?ds=%7B'keyWord':'芙蓉区芙蓉路中隆国际大厦905号'%7D&tk=473af7dc18cafb6b993616a0ce8e1ead
TdtAddressInfo(msg=ok, status=0, searchVersion=6.4.9V, location=TdtLocation(lon=112.97597, lat=28.19909, level=兴趣点, typeRound=null, score=76.0))
*************************************************************
ViolationTraining(id=null, index=10, name=华斯优学(吴**), address=芙蓉区荷花园街道蔚蓝天空大厦6楼左侧, remark=以托管机构名义变相开展学科培训, date=Wed Aug 07 00:00:00 CST 2024, type=隐形变异学科培训, source=长沙晚报, lat=null, lon=null, geom=null, geomJson=null)
https://api.tianditu.gov.cn/geocoder?ds=%7B'keyWord':'芙蓉区荷花园街道蔚蓝天空大厦6楼左侧'%7D&tk=473af7dc18cafb6b993616a0ce8e1ead
TdtAddressInfo(msg=ok, status=0, searchVersion=6.4.9V, location=TdtLocation(lon=113.015237, lat=28.201385, level=乡镇街道, typeRound=null, score=50.0))
*************************************************************
ViolationTraining(id=null, index=11, name=尹*妮, address=芙蓉区荷花园街道蔚蓝天空大厦6楼左侧, remark=个人租用华斯优学场地变相开展学科培训, date=Wed Aug 07 00:00:00 CST 2024, type=隐形变异学科培训, source=长沙晚报, lat=null, lon=null, geom=null, geomJson=null)
https://api.tianditu.gov.cn/geocoder?ds=%7B'keyWord':'芙蓉区荷花园街道蔚蓝天空大厦6楼左侧'%7D&tk=473af7dc18cafb6b993616a0ce8e1ead
TdtAddressInfo(msg=ok, status=0, searchVersion=6.4.9V, location=TdtLocation(lon=113.015237, lat=28.201385, level=乡镇街道, typeRound=null, score=50.0))
*************************************************************

        说明已经顺利的从后台获取相关信息,程序运行正常。

        最后,我们在数据库中来看一下数据是否已经成功持久化了。执行以下的sql语句:

select * from biz_violation_training;

         这样可以客户端可以看到以下的执行结果:

        到此,说明我们已经成功的把Excel转换成空间数据并持久化到PostGIS中。

 四、总结

        本文以Java语言为例,将市教育局发布的违规培训名单进行集中采集,将数据集中存储。可以将这些数据进行统一分析,为下一步的空间分析和使用分布模型的建立,甚至后续的空间图谱构建奠定一个坚实的基础。通过本文,您将掌握如何进行数据的高效写入,同时进行地理编码的转换,以及相关空间表的设计。行文仓促,难免有许多的不足之处,针对不足,恳请各位专家朋友在评论区批评指正,不胜感激。

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

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

相关文章

PowerShell | git log 中文乱码问题解决

总结一下: 乱码核心问题就是对不上编码.改成对应编码即可. 明白‌LESSCHARSET环境变量‌是用来设置less命令的字符集编码的。当在命令行中使用less命令查看文件时&#xff0c;如果文件包含非ASCII字符&#xff08;如中文&#xff09;&#xff0c;可能会出现乱码问题。通过设置…

SpringBoot+Vue实现大文件上传(断点续传-前端控制)

SpringBootVue实现大文件上传&#xff08;断点续传&#xff09; 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI 2 问题 在前一篇文章&#xff0c;我们写了分片上传来实现大文件上传&#xff0c;存在一个问题就是&#xff0c;中间失败的话需要重新上传&#…

QT WIN11 FluentUI APP开发

代码 import QtQuick import QtQuick.Controls import FluentUIItem {property bool autoPlay: trueproperty int loopTime: 2000property var modelproperty Component delegateproperty bool showIndicator: trueproperty int indicatorGravity : Qt.AlignBottom | Qt.Align…

【MySQL】一文带你理清<行级锁>(行锁,间隙锁,临键锁)

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

STM32(六):定时器——输出比较实验

PWM驱动呼吸灯 源码&#xff1a; #include "stm32f10x.h" // Device headervoid PWM_Init(void) {RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启时钟TIM_InternalClockConfig(TIM2);//选择时基单元的时钟TIM_TimeBaseInitTypeDef TI…

怎么管控终端电脑上的移动端口

管控终端电脑上的移动端口&#xff0c;尤其是USB等移动端口&#xff0c;是确保企业数据安全和提升网络管理效率的重要手段。 一、使用注册表编辑器禁用USB端口&#xff08;适用于Windows系统&#xff09; 打开注册表编辑器&#xff1a; 同时按下“WinR”组合键&#xff0c;打…

【C++从小白到大牛】C++智能指针的使用、原理和分类

目录 1、我们为什么需要智能指针&#xff1f; 2、内存泄露 2.1 什么是内存泄漏&#xff0c;内存泄漏的危害 2.2如何避免内存泄漏 总结一下: 3.智能指针的使用及原理 3.1 RAII 3.2关于深拷贝和浅拷贝更深层次的理解&#xff1a; 3.3 std::auto_ptr 3.4 std::unique_pt…

《黑神话:悟空》登顶全球:游戏行业投资新风向与投资洞察

目录 引言 一、原创IP的崛起&#xff1a;文化共鸣与市场潜力 1《黑神话:悟空》的原创IP魅力 2 原创IP在游戏行业中的重要性 3 原创IP成为新的投资热点 4 文化共鸣的关键作用 二、高质量内容为王&#xff1a;技术与创新的双重驱动 1 《黑神话:悟空》的高质量内容展示 2…

Java接口interface(内含练习)

为什么有接口&#xff1f; 接口就是一种规则&#xff0c;更侧向是一种行为 接口的定义和使用 接口用关键字interface来定义 public interface 接口名{} 接口不能实例化 接口和接口之间是实现关系&#xff0c;通过implements关键字表示 public class 类名 implements 接口…

浅谈线性表——链表

文章目录 一、ArrayList的缺陷二、什么是链表&#xff1f;三、自我实现一个单向不带头非循环结构的链表3.1、实现代码3.2、代码解析 四、自我实现一个双向不带头非循环结构的链表4.1、实现代码 一、ArrayList的缺陷 前面学习了顺序表&#xff0c;顺序表在知道下标时可以快速的…

python应用之random模块(居然还有那么多的随机算法函数)

random 是 Python 的一个常用的内置模块&#xff0c;模块提供了生成随机数的功能&#xff0c;包含了多种生成随机数的函数&#xff0c;比如生成随机整数、随机浮点数、从序列中随机选择元素等。 使用 random模块 要使用 random模块&#xff0c;直接导入它即可。 import rand…

spring揭秘09-aop03-aop织入器织入横切逻辑与自动织入

文章目录 【README】【1】spring aop的织入【1.1】使用ProxyFactory 作为织入器【1.2】基于接口的代理&#xff08;JDK动态代理&#xff0c;目标类实现接口&#xff09;【补充】 【1.2】基于类的代理&#xff08;CGLIB动态代理&#xff0c;目标类没有实现接口&#xff09;【1.2…

Nginx: 配置项之autoIndex模块与Nginx变量

autoIndex模块 autoindex模块它所实现的一个基本功能&#xff0c;是当用户请求以 / 结尾式的URL&#xff0c;它会列出对应的目录结构比如说, 在实际的生态环境中&#xff0c;内部系统可能经常需要为用户提供一些下载功能。可能需要列出来某一个磁盘上的一个文件&#xff0c; 比…

【D-DCVRP】求解DCVRP改进贪婪算法(三)

一、Held-Harp模型 海尔德和卡尔普在1970年提出景点模型,用于求解TSP问题的最优解下界 该模型同样可以用于DCVRP问题,既有定理1成立。 定理1:根据Held-Karp模型使用向量 π = ( 0 , π 1 , π 2 , ⋯   , π n ) \pi=(0,\pi_1,\pi_2,\cdots,\pi_n) π=(0,π1​,π2​,⋯…

Datawhale第五期夏令营-CV竞赛

CV竞赛 0.赛事报名租用4090 1.开始运行下载文件提交结果 2.内容解释赛题背景赛题目标社会价值评分规则baseline精读代码什么是YOLO 主要代码内容精读使用Ultraalytics运行代码 0.赛事报名 赛事官网:https://www.marsbigdata.com/competition/details?id3839107548872 租用40…

【Redis】RDB和AOF持久化

RDB和AOF持久化 一、什么是持久化&#xff1f;二、RDB三、AOF 一、什么是持久化&#xff1f; 数据一般写在内存上&#xff0c;但是当重新启动计算机内存数据是会丢失的&#xff0c;而硬盘中的数据是不会丢失的&#xff0c;所以&#xff0c;当我们把数据从内存放到硬盘中的话就…

解决Windows下载完anaconda之后,在pycharm中使用anaconda

怎么下载anaconda我就不详细讲了&#xff0c;就是官方下载基本嫩都是下一步下一步你就可以 一、首先配置环境变量如图 二、查看anaconda情况 三、打开pycharm,如下图操作 ## 注意这里的.bat文件需要在你下载到的anaconda中去找 完毕

6款ai智能文章改写软件,轻松实现文章自动改写

在内容创作领域&#xff0c;改写文章是一项费时费力的工作。为了让创作者从繁琐的改写任务中解脱出来&#xff0c;本文将为你详细介绍六款ai智能文章改写软件&#xff0c;助你轻松实现文章自动改写&#xff0c;提升创作效率。 一、创作者的痛点&#xff1a;文章改写的挑战 作为…

【C++ Primer Plus习题】5.5

问题: 解答: #include <iostream> using namespace std;#define MONTHSCOUNT 12int main() {string months[MONTHSCOUNT] { "January","February","March","April","May","June","July","…

高斯混合模型原理及Python实践

高斯混合模型&#xff08;Gaussian Mixture Model&#xff0c;简称GMM&#xff09;是一种统计学中的概率模型&#xff0c;用于表示由多个高斯分布&#xff08;正态分布&#xff09;混合组成的数据集合。其核心原理基于假设数据集中的每个数据点都是由多个潜在的高斯分布之一生成…