基于Geotools的PostGIS原始操作之CQL过滤及按属性名称生成面属性时间-以湖北省地级市行政区划为例
目录
前言
背景与意义
技术方法概述
一、CQL查询实现
1、CQL查询原理
2、Geotools中的CQL实现
二、SLD编程式样式生成
1、获取唯一的分类值
2、生成不同颜色分类
3、集成生成SLD的Style文件
三、总结
前言
随着地理信息系统(GIS)技术的快速发展,空间数据的管理和分析已经成为现代城市规划、资源管理、环境监测等领域的核心任务。在这一背景下,PostGIS作为PostgreSQL数据库的空间扩展,因其强大的空间数据存储和分析能力,成为地理信息领域的重要工具。而Geotools作为开源的Java GIS工具库,为PostGIS提供了高效的接口支持,使得开发者能够更加便捷地进行空间数据的操作和处理。本文旨在探讨基于Geotools的PostGIS原始操作,特别是CQL(Common Query Language)过滤以及按属性名称生成面属性时间的方法,并以湖北省地级市行政区划为例,展示其在实际应用中的价值。
背景与意义
近年来,随着地理信息数据量的爆炸式增长,传统的空间数据处理方法已经无法满足复杂的应用需求。PostGIS作为开源的空间数据库解决方案,提供了丰富的空间数据类型和函数,能够高效地存储和管理地理信息数据。然而,直接使用PostGIS进行复杂的空间查询和分析往往需要编写大量的SQL语句,这对开发者的技术能力提出了较高要求。Geotools的引入,为开发者提供了一个更高效、更灵活的接口,使得空间数据的处理变得更加直观和便捷。
CQL作为一种标准化的查询语言,允许用户以简洁的方式表达复杂的空间过滤条件。通过CQL,开发者可以快速筛选出符合特定条件的空间数据,从而提高数据处理的效率。此外,按属性名称生成面属性时间的方法,能够帮助用户动态地分析空间数据的时间属性,为时间序列分析和动态可视化提供支持。在湖北省地级市行政区划的应用中,这些技术可以用于分析行政区划的演变、人口流动、经济发展等动态过程,为区域规划和决策提供科学依据。
技术方法概述
本文的研究主要基于Geotools和PostGIS的结合,通过以下两个关键技术点展开:
-
CQL过滤:CQL是一种标准化的查询语言,能够以简洁的方式表达复杂的空间和属性过滤条件。通过Geotools提供的CQL接口,用户可以轻松地将过滤条件转化为PostGIS的SQL语句,从而实现高效的空间数据筛选。
-
按属性名称生成样式:在空间数据中,我们可以根据需要,将数据按照某一种方式进行分类,比如在地理数据中,我们经常按照不同的行政区划来进行展示,即按照行政区划的名称来进行统一的分类。
通过本文,读者可以掌握了解CQL查询语言的示例用法。同时了解如何基于Geotools根据不同的属性进行样式规则的生成,为后续的样式自主生成奠定了坚实的基础。
一、CQL查询实现
本节将重点介绍CQL的基本查询原理,关于更深入的CQL查询,会在后续的章节中进行深入讲解。本节简单对实现原理及本实例中的查询实践进行说明。
1、CQL查询原理
CQL(Common Query Language)是一种标准化的查询语言,用于空间数据的过滤和查询。它允许用户以简洁的方式表达复杂的空间和属性条件,类似于SQL的WHERE子句。CQL是一种用于空间数据过滤的语言,它支持空间和属性条件的组合查询。CQL的设计目的是为了简化空间数据的查询,使其更易于使用和理解。下面介绍一些CQL的基本查询语法。
语法结构
CQL语句通常由属性条件和空间条件组成,可以通过逻辑运算符(AND、OR、NOT)进行组合。例如:
-
属性条件:
population > 1000000
-
空间条件:
INTERSECTS(geom, POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)))
-
组合条件:
population > 1000000 AND INTERSECTS(geom, POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)))
空间过滤
CQL支持多种空间过滤条件,利用PostGIS的空间函数来实现。常见的空间过滤条件包括:
-
INTERSECTS:检查几何对象是否相交。
-
CONTAINS:检查一个几何对象是否包含另一个几何对象。
-
DWITHIN:检查两个几何对象之间的距离是否在指定范围内。
例如,查找与指定多边形相交的城市:
cql
复制
INTERSECTS(geom, POLYGON((115 30, 115 40, 125 40, 125 30, 115 30)))
这个查询会返回所有与指定多边形相交的城市。
属性过滤
CQL也支持基于属性的过滤,例如:
-
name = '武汉市'
-
population > 5000000
-
GDP >= 100000000000
这些条件可以与空间条件组合,以实现更复杂的查询。
与其他查询语言的比较
-
与SQL的比较:CQL的语法与SQL的WHERE子句类似,但专门针对空间数据进行了优化。
-
与其他空间查询语言的比较:CQL是OGC(开放地理空间联盟)的标准之一,具有良好的兼容性和可扩展性
2、Geotools中的CQL实现
这里的实现逻辑比较简单,作为抛砖引玉,更复杂的实例,大家可以从官方网站上进行查询学习。本文的实现逻辑是从全国的城市信息表中查询湖北省的所有市级行政区划范围。在Geotools中构建CQL查询的实现方式如下,第一步需要创建PostGIS查询函数,从HashMap中构建,示例代码如下,类似于定义Jdbc中的连接参数:
/**
* -准备postGIS连接参数
* @return
*/
public static Map<String, Object> initPostGISMap () {Map<String, Object> params = new HashMap<>();params.put("dbtype", "postgis");params.put("host", "127.0.0.1");params.put("port", 5432);params.put("database", "database_name");params.put("schema", "public");params.put("user", "user_name");params.put("passwd", "passwd_value");return params;
}
紧接着是根据连接参数生成featureSource,这是我们的核心和关键。通过最原始的shapefile文件也是其中的一个数据源。这里将数据源从文件数据源切换成空间数据库。关键方法如下:
//step1、准备连接参数
Map<String, Object> params = initPostGISMap();
// step2、获取数据源
DataStore dataStore = DataStoreFinder.getDataStore(params);
System.out.println("**********************************************************");
if (dataStore == null) {System.out.println("无法连接到数据库");return;
}
// step3、指定空间表名
String typeName = "biz_city";
FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = dataStore.getFeatureSource(typeName);
第三步是构建Query查询参数以及进行CQL查询实践,核心代码如下:
//step4、 创建查询
Query query = new Query(typeName);
//step5、使用CQL(Common Query Language)表达式来定义过滤条件
Filter filter = CQL.toFilter(" province_code = '420000' ");
query.setFilter(filter);
// 执行查询并转换为SimpleFeatureCollection
SimpleFeatureCollection collection = (SimpleFeatureCollection) featureSource.getFeatures(query);
在上面的查询函数中,我们查询的时候,指定province_code为420000为所有湖北省的行政区划范围。 有了这个查询对象后,下面就可以根据这些查询转换成样式定义。
查询结果打印输出信息如下:
表名我们使用CQL的查询来成功的查询空间数据。
二、SLD编程式样式生成
本节将重点讲解如何根据上面的查询结果,根据业务属性来进行分类。使用Geotools来自动识别属性,根据不同的地级市名称来生成不同的样式属性,最后将样式渲染到地图中并生成矢量地图范围的具体实践。
1、获取唯一的分类值
为了在地图中比较好的展示不同地级市的信息,我们需要将数据按照那个属性名称进行分类。就比如在Arcgis或者QGIS中的分类标注,通过指定的属性名称来进行分类。所以第一步需要按照规则来生成最终的唯一性的表示名称。在本例中就是需要将湖北省不同的地级市行政区划名称进行识别,关键代码如下:
// 获取唯一值集合
private static Set<String> getUniqueValues(SimpleFeatureCollection features, String field) {Set<String> values = new HashSet<>();try (SimpleFeatureIterator it = features.features()) {while (it.hasNext()) {String value = (String) it.next().getAttribute(field);if (value != null) values.add(value);}}return values;
}
2、生成不同颜色分类
为了让不同的地级市都能展示不同的信息,以方便更加生动的进行数据展示。这里将根据前面分类的数据结果创建不同的颜色,为下一步的数据区分展示提供基础,关键代码如下:
// 生成可区分颜色(HSV色环均匀分布)
private static Color[] generateDistinctColors(int count) {Color[] colors = new Color[count];float goldenRatio = 0.618033988749895f; // 黄金分割比例float saturation = 0.8f; // 饱和度float brightness = 0.9f; // 亮度for (int i = 0; i < count; i++) {float hue = (i * goldenRatio) % 1.0f;colors[i] = Color.getHSBColor(hue, saturation, brightness);}return colors;
}
3、集成生成SLD的Style文件
下面将使用GeoTools的方法来生成SLD中的Style文件,让大家对整个样式的编程式生成有所了解,其中包括符号库的设置、字体的设置、标注的动态展示、文本的设置、规则库的设置等。关键代码如下:
public static Style createAdministrativeStyle(SimpleFeatureCollection features, String nameField) throws Exception {// 获取样式工厂StyleFactory sf = CommonFactoryFinder.getStyleFactory();FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();// 创建基础样式结构Style style = sf.createStyle();FeatureTypeStyle fts = sf.createFeatureTypeStyle();// 获取所有唯一的行政区名称Set<String> names = getUniqueValues(features, nameField);List<String> nameList = new ArrayList<>(names);Collections.sort(nameList); // 按名称排序// 生成颜色序列Color[] colors = generateDistinctColors(nameList.size());// 为每个行政区创建规则for (int i = 0; i < nameList.size(); i++) {String regionName = nameList.get(i);// 创建过滤器PropertyName property = ff.property(nameField);Filter filter = ff.equals(property, ff.literal(regionName));// 创建面符号(带边框)PolygonSymbolizer symbolizer = sf.createPolygonSymbolizer(sf.createStroke(ff.literal(Color.DARK_GRAY), ff.literal(0.8)),sf.createFill(ff.literal(colors[i]), ff.literal(0.8)), // 80%透明度null);Font font = sf.createFont(ff.literal("楷体"),ff.literal("Regular"),ff.literal("normal"),ff.literal(22));// 配置文字标注居中参数AnchorPoint anchor = sf.createAnchorPoint(ff.literal(0.5), ff.literal(0.5));Displacement disp = sf.createDisplacement(ff.literal(0), ff.literal(0));PointPlacement placement = sf.createPointPlacement(anchor, disp, ff.literal(0));// 创建文本标注TextSymbolizer textSymbolizer = sf.createTextSymbolizer(sf.createFill(ff.literal(Color.WHITE)),new Font[] { font },null,ff.property(nameField), // 标注字段null,null);textSymbolizer.setLabelPlacement(placement);// 构建规则Rule rule = sf.createRule();rule.setName(regionName);rule.setFilter(filter);rule.symbolizers().add(symbolizer);rule.symbolizers().add(textSymbolizer); // 添加文字标注fts.rules().add(rule);}style.featureTypeStyles().add(fts);return style;
}
其它将数据生成PNG图片的方法在前面的博客中已经有所介绍,在此不再进行赘述。最后来看一下实际的成果。
三、总结
以上就是本文的主要内容,本文的研究主要基于Geotools和PostGIS的结合,通过本文,读者可以掌握了解CQL查询语言的示例用法,同时了解如何基于Geotools根据不同的属性进行样式规则的生成。通过本文的研究,我们旨在为GIS开发者提供一套基于Geotools和PostGIS的高效空间数据处理方法,特别是在CQL过滤和时间属性生成方面的应用。这些方法不仅能够提高空间数据处理的效率,还能为动态分析提供强有力的支持。未来,随着GIS技术的不断发展,Geotools和PostGIS的结合将在更多领域发挥重要作用,为复杂的空间数据处理提供更加高效的解决方案。行文仓促,定有不足之处,欢迎各位朋友在评论区批评指正,不胜感激。
相关文章:
基于Geotools的PostGIS原始操作之CQL过滤及按属性名称生成面属性时间-以湖北省地级市行政区划为例
目录 前言 背景与意义 技术方法概述 一、CQL查询实现 1、CQL查询原理 2、Geotools中的CQL实现 二、SLD编程式样式生成 1、获取唯一的分类值 2、生成不同颜色分类 3、集成生成SLD的Style文件 三、总结 前言 随着地理信息系统(GIS)技术的快速发展…...
Linux内核中struct net_protocol的early_demux字段解析
背景问题 在内核版本4.19.0-25的头文件中,struct net_protocol结构体的定义未显式包含early_demux字段。然而,在内核版本4.19的源代码中可以看到tcp_protocol实例化时却对该字段进行了赋值: static struct net_protocol tcp_protocol = {.early_demux = tcp_v4_earl…...
TLS协议四次握手原理详解,密钥套件采用DH密钥交换算法
目录 1.TLS协议握手概述 2.TLS协议握手具体步骤 2.1.TLS第一次握手 2.2.TLS第二次握手 2.3.TLS第三次握手 2.4.TLS第四次握手 3.DH密钥交换算法 1.TLS协议握手概述 第一步客户端会发起一个消息,携带了TLS的版本号,客户端随机数,密码套…...
React 更新state中的对象
更新 state 中的对象 state 中可以保存任意类型的 JavaScript 值,包括对象。但是,你不应该直接修改存放在 React state 中的对象。相反,当你想要更新一个对象时,你需要创建一个新的对象(或者将其拷贝一份)…...
祁连山国家公园shp格式数据
地理位置:祁连山国家公园位于中国西北部,横跨甘肃省与青海省交界处,主体处于青藏高原东北边缘。总面积约5.02万平方公里,是中国首批设立的10个国家公园之一。 设立背景 试点启动:2017年,祁连山国家公园体制…...
电梯设备与电源滤波器:现代建筑中的安全守护者与电力净化师
在现代都市的钢铁森林中,电梯作为垂直交通的动脉,承载着无数人的日常出行。与此同时,在电气系统的隐秘角落,电源滤波器则默默扮演着“电力净化师”的角色,保障着各类电子设备的稳定运行。电梯设备与电源滤波器…...
Qt样式表(窗口、按钮之类,有图片和代码详细注释)
Qt样式表 1、前言2、QWdiget窗口添加背景图片2.1使用Frame解决 3、主题1(黑色背景发光边框冷色调)3.1 QWidget3.2 QPushButton3.3QLineEdit3.4 QTextEdit 4、主题二(极简冰川蓝)4.1QWidget4.2 QLineEdit4.3QTextEdit4.4QPushButto…...
在Ubuntu下进行单片机开发是否需要关闭Secure Boot
1. Secure Boot的作用 功能:Secure Boot是UEFI的安全功能,旨在阻止未经验证的驱动或操作系统启动,防止恶意软件篡改引导过程。 影响范围:它主要限制的是操作系统启动阶段加载的内核级驱动(如显卡驱动、虚拟化模块&…...
【Python爬虫】简单案例介绍4
本文继续接着我的上一篇博客【Python爬虫】简单案例介绍3-CSDN博客 目录 3.4 完整代码 3.4 完整代码 此小节给出上述案例的完整代码, # encodingutf-8 import re, json, requests, xlwt, csv import pandas as pd from lxml import etree from bs4 import Beauti…...
农民剧团的春天与改变之路
杨天义,男,1966年9月生,中共党员,江西省吉安市吉水县水南农民剧团团长。 杨天义从废品收购起家,凭借自身的努力和奋斗,自筹资金100余万元建设了水南镇的第一座影剧院,组建了江西省吉安市吉水县…...
网页防篡改与盗链防护:实时监控与自动化修复实践
摘要:针对网页内容篡改与盗链问题,本文基于群联AI云防护系统,详解如何通过哈希校验、实时监控与CDN联动实现秒级修复,并提供Python与AWS S3集成代码。 一、网页安全的核心需求 防篡改:保障页面内容完整性,…...
【密码学——基础理论与应用】李子臣编著 第五章 序列密码 课后习题
免责声明 这里都是自己搓或者手写的。 里面不少题目感觉有问题或者我的理解有偏颇,请大佬批评指正! 不带思考抄作业的请自动退出,我的并非全对,仅仅提供思维! 题目 逐题解析 5.1 我们先要知道三阶LFSR函数的表达式…...
【uni-app】页面跳转传参
一、EventChannel 的核心作用 替代全局事件总线 相比传统的 uni.$emit 和 uni.$on,EventChannel 无需手动移除监听(如 uni.$off),避免内存泄漏风险。解决 URL 传参限制 当需要传递大量数据时,URL 拼接参数可能超出长度…...
【MySQL】表的增删改查
前言 前面我们对表结构做了介绍,本期我们对表的内容操作机增删改查进行介绍! 目录 前言 一、insert 插入 1.1 单行数据 全列插入 1.2 多行数据 指定列插入 1.3 插入否则更新 1.4 插入否则替换 二、select 查询 2.1 select 列 2.1.1 全列查询…...
AQchat
在当前项目里,Handler 类主要用于处理不同类型的命令或者消息,下面按照不同功能模块为你详细介绍各 Handler 的作用。 命令处理 Handler(位于 com.howcode.aqchat.handler.impl 包) SyncRoomMembersCmdHandler:处理同…...
Profibus DP转ModbusTCP网关通讯案例解析
Profibus DP转ModbusTCP网关通讯案例解析 Profibus DP和Modbus TCP都是工业自动化领域中常见的通信协议,各自在不同的应用场景中发挥着重要作用。然而,由于不同设备、系统之间的兼容性需求,常常需要进行这两种协议的转换。本文将介绍一个典型…...
将你的 Rust + WebAssembly 项目发布到 npm
一、准备工作:登录 npm 在发布之前,你需要: 拥有一个 npm 账号 没有的话可前往 https://www.npmjs.com/signup 免费注册。 登录本地 npm 账户 使用 wasm-pack 自带的登录命令: wasm-pack login它会提示你输入 npm token…...
RGBD惯性SLAM
介绍 本篇介绍一种基于视觉光流法的RGBD惯性SLAM算法,该算法的前身是DEMO算法。 相对于原始版本: 更新了相对较老的IplImage 相关接口 加入了GTSAM后端;滑动窗口后端;3D-3Dbatch优化;点到面batch后端。分别对应不同的…...
linuxbash原理
3417 1647 0 04:17 ? 00:00:21 /usr/libexec/gnome-terminal-server yangang 3425 3417 0 04:17 pts/0 00:00:00 bash yangang 4524 3417 0 04:26 pts/1 00:00:00 bash 控制台创建是通过/usr/libexec/gnome-terminal-server 进行创建 rea…...
ctfshow做题笔记—栈溢出—pwn75~pwn79
目录 前言 一、pwn75(栈空间不够怎么办?) 二、pwn76 三、pwn77(Ez ROP or Mid ROP ?) 四、pwn79(你需要注意某些函数,这是解题的关键!) 前言 嘿嘿,隔了一段时间没有做pwn题了(主播脱单了)࿰…...
C++ 标准库中的 <algorithm> 头文件算法总结
C 常用 <algorithm> 算法概览 C 标准库中的 <algorithm> 头文件提供了大量有用的算法,主要用于操作容器(如 vector, list, array 等)。这些算法通常通过迭代器来操作容器元素。 1. 非修改序列操作 std::all_of, std::any_of, s…...
leecode Hot100之回溯算法【C++速查】
文章目录 [46. 全排列](https://leetcode.cn/problems/permutations/)[78. 子集](https://leetcode.cn/problems/subsets/)[17. 电话号码的字母组合](https://leetcode.cn/problems/letter-combinations-of-a-phone-number/)[39. 组合总和](https://leetcode.cn/problems/combi…...
前端 main.js能做哪些事?
前端 main.js 的从入门到进阶 摘要 在前端开发中,main.js 文件是项目启动的关键入口,它承担着初始化应用、引入依赖、配置全局设置等重要职责。本文将全面介绍 main.js 的基础知识,包括其基本结构和作用,并深入探讨如何进行进阶开…...
JAVA Web_定义Servlet2_学生登录验证Servlet
题目 页面StudentLogin.html中有一HTML的表单代码如下: <form action"studentLogin" method"post">学生姓名:<input type"text" name"stuName" value""><br>登录密码:…...
【信息系统项目管理师】高分论文:论信息系统项目的范围管理(电网公司保供电可视化系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划范围管理2、收集需求3、定义范围4、创建工作分解结构(WBS)5、确认范围6、控制范围论文 2017年5月,我作为项目经理参加XX省电网公司保供电可视化系统应用项目的建设,该项目是2017年XX省电网信息化…...
如何高效查询订单销售情况与售罄率:从SQL到架构优化的全流程设计
在电商平台、SaaS多租户系统中,订单数据作为核心数据之一,承载了关键的运营指标,如销售额、商品售罄率、订单转化等。随着数据量的持续增长,如何在大数据量条件下快速、稳定地获取统计信息,成为系统设计的重点之一。 本文将从查询目标分析入手,结合数据库设计优化与典型…...
RTT添加一个RTC时钟驱动,以DS1307为例
添加一个外部时钟芯片 这里多了一个选项 复制drv_rtc.c,重命名为drv_rtc_ds1307.c 添加到工程中 /*** @file drv_rtc_ds1307.c* @brief * @author jiache (wanghuan3037@fiberhome.com)* @version 1.0* @date 2025-01-08* * @copyright Copyright (c) 2025 58* */ #...
Leetcode 独一无二的出现次数
可以通过哈希集来判断是否独一无二,如果set中已经包含了count,那么set.add(count)会返回false class Solution {public boolean uniqueOccurrences(int[] arr) {Map<Integer, Integer> map new HashMap<>();for(int i 0; i < arr.leng…...
ubuntu上,e1000e,i1210有线网卡驱动安装
1,下载附属资源,解压对应的压缩包 tar zxf e1000e-<x.x.x>.tar.gz 2,进入压缩包src目录下 cd e1000e-<x.x.x>/src/ 3,安装 sudo make install 4,重启 reboot e1000e Intel官网下载地址 https://www.i…...
Xmind 2025 中文思维导图
Xmind 2025 中文思维导图 一、介绍 Xmind ,是一款出色的思维导图和头脑风暴软件,拥有美观的智能配色方案,便于你轻松理清思路捕捉创意。丰富的导图模板及多种创意整合工具,可助力导图迸发更多活力。还拥有强大演说模式ÿ…...
搭载DeepSeek|暴雨AI教育一体机加速AI教育普及
近日,在全国智算大会上,暴雨公司展示了新一代 AI 教育一体机,通过全栈国产化技术与 DeepSeek 模型的深度适配,打造低成本、高性能的人工智能教育解决方案,助力 AI 教育普及与教育数字化转型。 暴雨AI教育一体机&#…...
【字节跳动AI论文】Seaweed-7B:视频生成基础模型的高成本效益培训
摘要:本技术报告介绍了一种经济有效的视频生成基础模型训练策略。 我们提出了一种中等规模的研究模型,大约有70亿个参数(7B),称为Seaweed-7B,使用665,000个H100 GPU小时从头开始训练。 尽管使用适度的计算资…...
java 线程池:IO密集型的任务(CPU核数 * 2 + 1),为什么这么设置,计算密集型任务( CPU核数+1 ),为什么这么设置
文章目录 1. IO密集型任务:`CPU核数 2 + 1`为什么这样设置?示例场景:2. CPU密集型任务:`CPU核数 + 1`为什么这样设置?示例场景:3. 两者的核心差异4. 实际应用中的注意事项5. 总结在Java线程池的配置中, IO密集型和 CPU密集型任务的线程数设置逻辑存在显著差异,核心原…...
RabbitMQ消息的可靠性
生产者的可靠 首先,我们一起分析一下消息丢失的可能性有哪些。 消息从发送者发送消息,到消费者处理消息,需要经过的流程是这样的: 消息从生产者到消费者的每一步都可能导致消息丢失: ● 发送消息时丢失:…...
涵盖通算、智算、超算、量算!“四算合一”算力网络投入使用,效率提升20%
近日,由中国移动承建的全国首个“四算合一”算力网络调度平台日前正式投入使用。这座“数字三峡”的诞生,标志着我国算力基建完成从“单兵作战”到“军团协同”的跃迁。 什么是“四算合一”? “四算合一”是指将通用算力、智能算力、超级算…...
【Redis】数据结构和内部编码
先来复习一下之前学过的几个基本的全局命令: keys:用来查看匹配规则的keyexists:用来判定执行key是否存在del:删除指定的keyexpire:给key设置过期时间ttl:查询key的过期时间type:查询key对应的…...
考研数据结构之二叉树(一)(包含真题及解析)
考研数据结构之二叉树(一) 下期预告:后续文章将深入探讨二叉树的遍历算法与高频考点(如平衡二叉树、线索二叉树)。 二叉树是数据结构中的核心内容之一,也是考研高频考点。本文将从定义和存储结构两方面展开…...
linux多线(进)程编程——番外1:内存映射与mmap
前言 在修真世界之外,无数异世界,其中某个叫地球的异世界中,一群人对共享内存的第二种使用方式做出了讲解。 内核空间与用户空间 内存空间的划分 Linux操作系统下一个进程的虚拟地址空间被分为用户空间与内核空间 Linux 内核空间在内存管…...
旧版 VMware 虚拟机迁移至 KVM 平台-案例2
项目背景 需将一台旧版 VMware 虚拟机(VMDK 格式)迁移至 KVM 虚拟化平台,具体要求如下: 格式转换:将 VMDK 转换为 QCOW2 格式。磁盘扩容:将原 40GB 磁盘扩展至 60GB。密码重置:修改 aiden 用户…...
六、adb通过Wifi连接
背景 收集是荣耀X40,数据线原装全新的,USB连上之后,老是断,电脑一直叮咚叮咚的响个不停,试试WIFI 连接是否稳定,需要手机和电脑用相同的WIFI. 连接 1.通过 USB 连接手机和电脑(打开USB调试等这些都略过) adb device…...
Kafka使用方式与底层原理解析
一、Kafka简介 Apache Kafka是一个分布式流处理平台,由LinkedIn开发并开源,现已成为实时数据管道和流应用的核心组件。它具备高吞吐量、低延迟、高可扩展性等特点,广泛应用于日志收集、消息系统、流处理等领域。 1.1 Kafka核心概念 Topic&…...
【Python内置函数的深度解析与应用】id
目录 前言:技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解关键技术模块技术选型对比 二、实战演示环境配置要求核心代码实现1. 基础身份验证2. 不可变对象优化3. 对象生命周期追踪 运行结果验证 三、性能对比测试方法论量化数据…...
【Pandas】pandas DataFrame keys
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签(行标签和列标签&#…...
探索QEMU-KVM虚拟化:麒麟系统下传统与云镜像创建虚拟机的最佳实践
随着云计算和虚拟化技术的不断进步,虚拟化在管理服务器、隔离资源以及提升性能方面的好处越来越明显。麒麟操作系统Kylin OS是我们国家自己开发的操作系统,在政府机构和企业中用得很多。这篇文章会教你如何在麒麟操作系统上设置QEMU-KVM虚拟化环境&#…...
pycharm中调试功能讲解
一、调试前的准备工作 1. 准备一段测试代码 先写一个简单的Python脚本(比如计算阶乘),故意留点问题: def factorial(n):result 1for i in range(n):result * ireturn resultprint(factorial(5)) # 预期输出120࿰…...
SimpleITK (sitk) 中查看 DICOM 文件的像素位深(8位或16位)
在 SimpleITK (sitk) 中查看 DICOM 文件的像素位深(8位或16位),可以通过以下方法实现: 方法一:通过 图像像素数组的数据类型 判断 读取 DICOM 文件: 使用 sitk.ReadImage() 加载文件,生成图像对…...
day28图像处理OpenCV
文章目录 一、图像预处理4 边缘填充4.1 边界复制(BORDER_REPLICATE)4.2 边界反射(BORDER_REFLECT)4.3 边界反射101(BORDER_REFLECT_101)4.4 边界常数(BORDER_CONSTANT)4.5 边界包裹&…...
【NLP】 自然语言处理笔记
NLP的全称是Natuarl Language Processing,中文意思是自然语言处理,是人工智能领域的一个重要方向。自然语言处理(NLP)就是在机器语言和人类语言之间沟通的桥梁,以实现人机交流的目的。 人类语言是抽象的信息符号,其中蕴含着丰富的语义信息,人类可以很轻松地理解其中的含…...
LaTeX 的pstricks-add宏绘图练习
练习。 \documentclass[10pt]{article} \usepackage{pstricks-add} \pagestyle{empty} \begin{document} \psset{xunit1.0cm,yunit1.0cm,algebraictrue,dimenmiddle,dotstyleo,dotsize5pt 0,linewidth2.pt,arrowsize3pt 2,arrowinset0.25} \begin{pspicture*}(-16.5581463…...
WITRAN_2DPSGMU_Encoder 类中,门机制
WITRAN_2DPSGMU_Encoder 类中的门机制详解 在 WITRAN_2DPSGMU_Encoder 类中,门机制是核心部分,类似于 LSTM 或 GRU 的门控机制,用于控制隐藏状态的更新和输出。以下是对门机制的详细解析。 1. 门机制的作用 门机制的主要作用是:…...