摘要: 作为IOT最底层的无线通信网络生成大量与位置相关的数据,用于无线通信网络规划和优化,帮助电信运营商建设更好体验的精品网络,构建万物互联的信息社会。
本文分享自华为云社区《基于CarbonData的电信时空大数据探索》,作者: 张军、龚云骏 。
1使用场景
随着万物互联的时代到来,以及智慧终端普及,现实世界超过80%的数据与地理位置相关,比如日常使用的社交、支付、出行相关APP。作为IOT最底层的无线通信网络也会生成大量与位置相关的数据,用于无线通信网络规划和优化,帮助电信运营商建设更好体验的精品网络,构建万物互联的信息社会。
为表征无线网络相关指标在地理空间的分布情况,将地表按50*50米正方形网格进行切分,并按照网格累加统计指标,数据可以按时间(hour/day)、行政区(region ID)、无线小区(cell ID)、网格(网格中心经纬度坐标)进行管理。表结构如下:
比如,需要分析某CBD无线通信网络信号覆盖情况,使用CBD的边界作为查询条件,返回网格和业务KPI,对返回的网格经纬度和KPI进行可视化渲染,得到如下效果。
某CBD通信网络覆盖情况
2 技术挑战
查询性能: 以2000万左右用户规模的无线通信网络为例:每秒约接入240万条事件,每天约产生14TB数据,数据保存若干天。基于行业常用数据仓库查询耗时在10-15秒左右,与用户体验2/5/8秒要求存在较大差距;同时单个查询占用资源较多,多用户并发分析时,查询性能明显下降,以5用户查询为例,查询耗时劣化为30-60秒;
线性扩展: 随着数据中心“云化”演进,数据集中化存储和管理趋势明显,支持省级、国家级超大规模网络交付场景明显,急需体系化的方法解决海量数据治理的线性扩展问题。
考虑到业务数据是在时间和空间上持续增长,同时业务分析流程中,主要查询包括:行政区域/问题区域/无线小区簇查询。对数据查询特性进行分析:
1) 行政区域查询:行政区域查询返回结果是在空间上聚集的;
2) 问题区域查询:问题区域是指有网络问题的某个地表区域,查询返回结果集是在空间上聚集的;
3) 无线小区簇查询:无线网络的小区不是孤立存在的,一般把一定数量相邻的无线小区按小区簇进行管理,因此小区簇查询返回结果集是在空间上聚集的
综上,查询返回结果集都是在空间上聚集的,因此有必要考虑数据入库时,支持按空间坐标建立时空索引,提升查询过程中的数据过滤效率。
3 优化方案
3.1 时空索引算法
优化前使用如下方式设定表的Sort Column,数据先按纬度排序再按经度排序后,本来在空间相邻的经过排序后划分被切割为不相邻的条带。
条带化问题可以参考下图,行业内解决此问题的方法是引入空间排序方法,常用空间排序方式包括Z序和H序,最常用的方法是GeoHash。技术原理可以参考Halfrost的神作:高效的多维空间点索引算法。
关于Z序和H序的优缺点行业有较多讨论。Z序曲线虽然有局部保序性,但是它也有突变性,在每个 Z 字母的拐角,都有可能出现顺序的突变。H序相比较Z序解决了拐角的突变问题,H序聚簇特性比Z序提升15%左右,但是生成复杂度却提升很多,动态维护的代价会更高些。另外,还有很多应用,需要不同维度实时分解的应用,H序拆分耗时会增加不少。综合考虑,当前使用简单易用的Z序编码:GeoSOT。
--建表SQL—
create table IF NOT EXISTS ( timevalue bigint,
longitude bigint,
latitude bigint,
regionid bigint,
cellkey bigint,
kpi bigint,
kpi2 bigint,
kpi3 bigint)
STORED AS carbondata TBLPROPERTIES
( ' SPATIAL_INDEX ' =' geoid ' ,
' SPATIAL_INDEX.geoid.type ' =' geosot ' ,
' SPATIAL_INDEX.geoid.sourcecolumns ' =' longitude, latitude ' ,
' SPATIAL_INDEX.geoid.level ' =' 21 ' ,
' SPATIAL_INDEX.geoid.class ' =' org.apache.carbondata.geo.GeoSOTIndex ' ,
' SPATIAL_INDEX.geoid.conversionRatio ' =' 1000000 ' ,
' SORT_COLUMNS ' =' timevalue,geoid,regionid,cellkey ' );
注: 1. 'SPATIAL_INDEX'='geoid':用于设置空间编码的字段名,当前表中字段名为geoid; 2. 'SPATIAL_INDEX.geoid.type'='geohash':用于设置空间编码的生成方法,当前设置为GeoSOT,考虑到行业内还存其他在多种网格编码系统,比如GeoHash、Google S2、Uber H3。CarbonData网格编码支持插件化能力,可以支持不同业务场景快速引入匹配的网格编码系统。; 3. 'SPATIAL_INDEX.geoid.sourcecolumns'='longitude, latitude':用于指定计算空间编码的参数字段,需要设置为经纬度对应的字段名称; 4. 'SPATIAL_INDEX.geoid.level'='21': 基于GeoSOT计算空间编码需要设置栅格等级,当前设置为21; 5. 'SPATIAL_INDEX.geoid.class'='org.apache.carbondata.geo.GeoSOTIndex':设置空间索引的实现方法,当前设置为GeoSOT的实现算法; 6. 'SPATIAL_INDEX.geoid.conversionRatio'='1000000':经纬度小数点后的位数可以确定栅格数据的精度,一般场景下栅格数据的精度是固定的,经纬度就是一个具有固定位数的小数,通过该参数来设置系统内的经纬度小数位数。
3.2 时空查询加速
在使用多边形作为查询条件时,简单的方法是提前多边形的外接矩形先进行粗过滤,再对查询结果进行精过滤。精过滤过程就是将每个粗过滤的查询记录与多边形进行关系判断,识别出在多边形内部的记录。
点和多变形的关系判断非常耗时,空间数据库的这类查询一般是将多边形转化为网格编码的线段集,如下图所示,浅蓝色为多边形过滤条件,可以将该多边形变换为有序的网格编码线段集{11-15,20,22,36-37,48},将线段集作为数据库底层过滤条件,可以将复杂过滤方式转换为简单过滤方式,并复用CarbonData的高效过滤下推能力。
时空索引的关键点在于如何高效的将多边形转换位网格编码的线段集,通过对该流程分析,并与行业经典算法进行比较,探索出一种新算法解决该问题,相比较行业经典算法,新算法再剖分性能上有8倍的性能提升,在复杂多边形的处理上更具性能优势,并可将该优势拓展到支持多边形列表查询场景。
3.3 优化效果
基于CarbonData增加时空数仓能力,SQL查询资源开销为优化前的1/5, 其中SQL耗时提升1.5倍,并发能力提升3倍。
3.4 线性扩展
CarbonData在数据排序机制上比较灵活,除了提供global sort能力外,还支持local sort,该能力可以大幅提升数据入库性能,在实际的交付应用中,大多采用local sort方式。数据在空间位置上的分布是唯一的,在超大规模交付场景中,为保证查询性能不受影响,需要考虑如何避免同一入库批次内的相同位置数据分散到不同的入库节点。短期可以基于“分区”和“分桶”机制进行相关实践,长期看需要考虑时空密度和时空潮汐,制定配套的时空负载均衡策略,相关研究已经启动,并取得初步成效。
3.5 插件化
时空能力是基于插件化的模式进行开发,整个插件包主要包括两个部分:
1、 对空间数据经纬度到空间网格编码的转换以及各种基于网格编码进行空间分析的算法实现,目前基于GeoSOT算法,后续随着算法的演进可以独立进行迭代更新;
2、 基于CarbonData提供的索引接口,只需要在安装部署时作为外带Library加载到运行环境,创建数据表时指定插件包内支持的空间索引类型以及算法即可使用。
基于插件化的能力,CarbonData原有的多维查询能力不受影响,通过对业务数据和查询特征进行充分识别,制定合理的sort column定义,在综合查询性能上应该会有较大收益。同时时空能力可以独立于CarbonData进行算法演进,并支持对于其他场景的接口扩充。
4 应用场景举例
人的日常活动离不开道路和楼宇两大类场景。实际业务分析过程中,除了对某个区域的地表进行整体分析外,还涉及道路和楼宇两类高价值场景的应用进行讲解。
4.1 道路分析
示例1:重点道路分析场景
--SQL示例1—
select longitude, latitude, kpi
from
where in_polyline_list(' LINESTRING (100.785924 4.464369,100.785924 4.446571) ' , 1000 );
使用 SQL 语句对这些线路辐射范围内的数据进行过滤、汇总分析,获取网络体验相关的kpi指标,提供直接支持制图、制表的道路、地铁、高铁网络性能分析数据。SQL语法细节可以参考Carbon社区接口说明文档。
对返回的道路经纬度和KPI进行渲染,得到如下效果:
初步验证,polyline总长度为50公里,缓存区为1000米,查询返回记录数为25832条,SQL执行耗时为3.6秒。
4.1 楼宇分析
楼宇相关场景分析,一般分为2D楼宇分析和3D楼宇分析。2D楼宇分析时,建筑物一般用Polygon对象表达,因此需要SQL语句上支持Polygon对象查询相关操作。业务表里面包含经纬度字段和通信网络相关指标,空间维表包含建筑物类型、建筑物轮廓(Polygon对象)、建筑统一编号。3D楼宇分析时,需要增加楼宇高度信息。
按建筑物列表进行业务分析时,一般需要支持对多边形取并(OR)的操作。除此外,可能会出现“回”字形建筑。因此需要提供多样化的多边形关系的操作方法,SQL语法细节可以参考Carbon社区接口说明文档。
示例2:2D楼宇分析场景
查询某城市所有学校建筑的通信网络信号覆盖。先选用“学校”作为过滤条件,由空间维表获取对应的Polygon对象集的临时表t2,再通过业务表t1与t2进行join获取在Polgyon内的所有记录,最后按照polygon进行聚合,并按Polygon返回对应的业务指标。
--SQL示例2--
select t2.polygon as polygon, sum(t1.data.kpi ) as kpi
from t1
inner join
(
select t2.polygon, t2.type from buildingTable as t2 where t2.type = “school”
) on in_polygon_join(t1.geoid,t2.polygon)
group by t2.polygon;
对返回的Polygon和KPI进行渲染,得到如下效果:
示例3:2D楼宇栅格分析场景
查询某CBD的建筑物内部通信网络覆盖分布。先用CBD的范围获取该范围内的Polygon对象列表,再用Polygon对象列表作为查询条件获取对应业务记录,最后按网格的经纬度进行聚合,返回网格经纬度和对应业务指标。
--SQL示例3--
select longitude, latitude, sum(kpi)
from
where in_polygon_list(' POLYGON ((116.292365 39.845140,116.292477 39.845165,116.292523 39.845045,116.292291 39.844993,116.292245 39.845113,116.292365 39.8451402470383)), POLYGON ((116.292477 39.845165,116.292365 39.845140,116.292335 39.845218,116.292449 39.845243,116.292479 39.845165,116.292477 39.845165))
' , ' OR' )
group by longitude, latitude;
对返回网格的经纬度和KPI进行渲染,得到如下效果:
示例2.1是按整个建筑进行聚合,获取整栋建筑的指标,在进行某些热点区域分析时,还要分析建筑内部指标分布情况。
初步验证,对1000个多边形取OR进行查询,返回结果记录数22545条,SQL执行耗时为4.333秒。
示例4:3D楼宇分析场景
体育馆、音乐厅、购物中心、机场、火车站人流量比较大的场馆在网络实际运营过程中需要重点分析,需要了解每个楼层的立体空间的网络分布情况。行业内已经提供了按经度、纬度、高度建模的三维空间数据库,考虑通信行业在高度上诉求与人的活动和楼的高度有关,并不是所有地区都存在大量的高度信息,因此高度信息暂时不参与时空排序,仅作为一般维度参与业务分析。
--SQL示例4--
select longitude, latitude, height, sum(kpi)
from
where in_polygon_list(' POLYGON ((116.292365 39.845140,116.292477 39.845165,116.292523 39.845045,116.292291 39.844993,116.292245 39.845113,116.292365 39.8451402470383)), POLYGON ((116.292477 39.845165,116.292365 39.845140,116.292335 39.845218,116.292449 39.845243,116.292479 39.845165,116.292477 39.845165))
' , ' OR' )
group by longitude, latitude, height;
使用建筑物的轮毂作为查询条件,获取到经度、纬度、高度和业务KPI后,进行3D渲染,展示立体楼宇的外立面和每个楼层的业务分布,得到如下效果:
在进行3D楼宇分析时,因为数据精度问题,可能部分数据偏移到楼的外部,需要对楼宇的多边形进行适当外扩,确保业务数据查全。
5 技术展望
基于CarbonData的电信时空大数据的探索的初衷是解决产品查询性能问题,通过我们的实践看,带来的收益远不只是查询性能大幅提升。
常用的数据库有关系型数据库、空间数据库、图数据库,为满足不同场景的业务分析和用户最佳体验,需要选用合适的数据库。这样会导致业务进行融合分析时,依赖多种不同分析引擎,且业务分析流程冗长。基于CarbonData的时空大数据能力使得“湖仓一体”的融合分析成为可能,在湖仓内部使用统一SQL完成普通数据分析和时空分析,大大提升研发效率和湖仓架构的健壮性。
CarbonData的SQL接口还不是行业标准接口,后续计划完成GeoMesa与Carbon对接,提供符合OGC标准的通用时空查询接口。另外,时空分析的查询流程包括了数据过滤、聚合、制图,3D场景下还涉及3D建模,这几个场景都可以通过GPU加速获得极大性能提升,未来是否可以通过硬件加速提供极致的用户体验,让我们拭目以待。
点击关注,第一时间了解华为云新鲜技术~
你可能感兴趣的:(基于CarbonData的电信时空大数据探索)
接入DeepSeek后,智慧园区安全调度系统的全面提升
Guheyunyi
安全 数据分析 python 智慧城市 人工智能 信息可视化
随着人工智能技术的快速发展,智慧园区的安全管理正逐步向智能化、自动化方向迈进。DeepSeek作为先进的人工智能解决方案,为智慧园区安全调度系统注入了强大的技术动力。通过接入DeepSeek,智慧园区安全调度系统在多个方面实现了显著提升,进一步增强了园区的安全性、管理效率和用户体验。1.智能化监控:从被动到主动传统的监控系统主要依赖人工查看视频画面,容易出现漏检或误判。接入DeepSeek后,智慧
数学推理中在推理规模化下检查假阳性解
硅谷秋水
大模型 机器学习 人工智能 语言模型 深度学习 机器学习 人工智能
25年2月来自中科大和微软亚洲研究院的论文“ExaminingFalsePositivesunderInferenceScalingforMathematicalReasoning”。语言模型的最新进展已带来各种基准测试中数学推理能力的显著提升。然而,大多数基准测试依赖于自动评估方法,这些方法仅使用启发式方法比较最终答案,而不验证底层推理步骤。这种限制导致假阳性解,其中模型可能会产生正确的最终答案
Salesforce联手阿里云,销售易联手腾讯,还在靠”卖血求生“的CRM独立玩家何去何从?
saas
销售易官宣与腾讯战略合作升级,腾讯集团副总裁、腾讯政企业务总裁李强担任销售易董事长,销售易创始人史彦泽继续担任CEO。这场"资本+技术+生态"的强强联合,将行业竞争推向新维度,融资竞赛不再是SaaS企业生存的唯一筹码,中国企服市场正在发生深层变革。消息一出,便受到很多人的关注,这首当其中,最高兴的算要数销售易的客户,源自其将获得的三大核心价值升级,腾讯将进一步开放云计算、大数据、AI等核心技术能力
清华大学第四发《DeepSeek+DeepResearch 让科研像聊天一样简单》
人工智能
当下科研领域,传统模式急需改变,清华大学第四版《DeepSeek+DeepResearch:让科研像聊天一样简单》全文一共86页,以下是文档的关键内容总结:一、智能组合优势DeepSeek与DeepResearch构建先进技术体系,有强大模型运算、智能数据处理和友好交互界面。模型在数据处理速度、精准度和泛化能力上远超传统模型。数据采集渠道广、处理快,能读取多种格式文件。数据分析深入,可视化直观,还
【OpenTiny调研征集】共创技术未来,分享您的声音!
前端vue.js开源
欢迎参与2025年OpenTiny开源社区用户调研征集调研背景随着OpenTiny开源项目的不断发展,我们一直致力于为开发者提供高质量的Web前端开发解决方案。为了更好地满足用户需求,提升项目的实用性和易用性,我们决定发起一项用户调研活动,诚挚邀请您参与。调研目的了解用户需求:收集您在使用OpenTiny开源项目过程中的需求、问题和建议,以便我们更好地改进和优化。提升用户体验:通过您的反馈,我们将
基于微信小程序的宠物寄养平台的设计与实现
图灵软件设计
JAVA SSM 小程序 微信小程序 小程序 spring boot maven 后端 java mybatis
现在宠物寄养管理中已有一些商家使用了基本的管理软件,这些软件都是依靠客户端,只可以特定人员使用,不能实现信息的共享。虽然可以帮助工作人员减少工作量,但从根本上还是无法满足用户的需求。这些软件都还是基于网络发展之初的要求,没有利用现代网络的技术,体现不了更为实用的功能。依靠客户端的系统开发时没有考虑园际化的问题,所以也满足不了国际化的要求。最近几年来,我国网络快速发展,传统的管理方式也越来越适应不了
mysql实时同步到es
数据库
测试了多个方案同步,最终选择oceanu产品,底层基于Flinkcdc1、实时性能够保证,binlog量很大时也不产生延迟2、配置SQL即可完成,操作上简单下面示例mysql的100张分表实时同步到es,优化备注等文本字段的like查询创建SQL作业CREATETABLEfrom_mysql(idint,cidintNOTNULL,gidbigintNOTNULL,contentvarchar,c
Python学习心得两大编程思想
lifegoesonwjl
python 开发语言 pycharm 前端 c语言
一、两大编程思想:1.面向过程:功能上的封装典型代表:C语言2.面向对象:属性和行为上的封装典型代表:Python、Java二、面向过程与面向对象的异同点:1.区别:面向过程:事物比较简单,可用线性的思维去解决面向对象:事务比较复杂,使用简单的线性思维无法解决2.共同点:(1)面向过程和面向对象都是解决实际问题的一种思维方式;(2)二者相辅相成,并不是对立的;(3)解决复杂问题,通过面向对象方式便
HarmonyOS Next智能家居控制系统的模型转换与数据处理实战
harmonyos
本文旨在深入探讨基于华为鸿蒙HarmonyOSNext系统(截止目前API12)构建智能家居控制系统中模型转换与数据处理技术的实战应用,基于实际开发经验进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、智能家居系统需求与技术选型(一)功能需求分析设备状态监测需求智能家居控制系统需要实时监测各种智能设
2025基金公司私有化部署趋势分析:技术自主权的崛起
标题:基金公司私有化部署:数据主权时代的战略选择与实战指南副标题:从DeepSeek到板栗看板,解密金融巨头如何用私有化部署重塑竞争力【热点引入:一场无声的金融科技革命】2025年2月,、十余家公募基金密集宣布完成DeepSeek大模型的私有化部署,这一现象登上财经热搜榜首。据不完全统计,超60%的头部基金公司已启动私有化部署计划,涉及投研、风控、客户服务等核心场景。这场革命背后的驱动力,正是金融
HarmonyOS Next数据处理与模型训练优化
harmonyos
本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)中数据处理与模型训练优化相关技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。一、数据处理对模型训练的重要性(一)关键作用强调在HarmonyOSNext的模型训练世界里,数据就如同建筑的基石,而数据处
「2024 年度技术精华盘点」IvorySQL & PostgreSQL 技术干货全解析!
数据库
2024年,IvorySQL公众号持续输出高质量技术内容,涵盖PostgreSQL核心技术解析和IvorySQL创新实践两大方向。无论您是数据库领域的初学者,还是经验丰富的开发者,这些干货文章都能为您带来新的启发与实用价值。现在,让我们一起回顾这些精彩内容,探索数据库技术的无限可能!PostgreSQL技术干货PostgreSQL16中的新增功能:双向逻辑复制想要在多主数据库间实现无缝同步?Pos
Linux升级Anacodna并配置jupyterLab
伪_装
环境部署 linux 服务器 Anaconda python jupyter
在使用Anaconda的过程中,随着项目和需求的发展,可能需要升级Anaconda的Base环境中的Python版本。本文将详细介绍如何安全地进行升级,包括步骤、代码示例与最终流程图。升级Python一、环境准备在进行任何升级之前,建议先检查当前的Python版本以及各个库的兼容性。我们可以通过以下命令检查当前的Python版本:condainfo你会看到类似以下的输出,其中包含了当前Python
如何选择最佳国外邮箱?注册、登录与购买指南
html
在如今的数字化时代,邮箱已经成为我们日常生活和工作中不可或缺的工具。无论是个人通信、商务往来,还是注册各种在线服务,一个功能强大、稳定可靠的邮箱都是必不可少的。而在众多国外邮箱服务中,如何选择最适合自己的邮箱?本文将以Zoho邮箱为例,为您详细讲解如何选择、注册、登录以及购买国外邮箱服务。一、为什么选择国外邮箱?在选择邮箱服务时,很多人会考虑国外邮箱。以下是国外邮箱的几大优势:隐私保护更强国外邮箱
YashanDB数据分区
数据库
本文内容来自YashanDB官网,原文内容请见https://doc.yashandb.com/yashandb/23.3/zh/%E6%A6%82%E5%BF%B5%...#分区概述YashanDB可以将大规模数据拆分成更小、更便于管理的对象,即分区。通过对数据进行分区管理,可以减少无效数据的访问,提升大规模数据下的访问、操作性能。表可以根据某些条件进行分区,不同分区独立管理。分区表提供了更高效
信息获取、扫描与服务识别、漏洞验证、嗅探攻击、代理与隧道、metasploit渗透攻击等
Utopia.️
web安全 安全 网络
1.信息获取信息获取是渗透测试和安全评估的第一步,主要目的是收集目标系统的各种信息。这些信息可以帮助确定攻击面和潜在的安全漏洞。技术和工具:域名信息:使用whois查询域名注册信息。DNS查询:使用nslookup或dig获取DNS记录,包括A记录、MX记录等。网络扫描:使用nmap或Masscan扫描目标网络,收集IP地址和开放端口信息。公开信息:通过搜索引擎、社交媒体、公司网站等公开资源获取目
c和c++的区别是
Utopia.️
c++
digitalRead处理的是数字信号,只能返回HIGH或LOW。analogRead处理的是模拟信号,将模拟电压值转换为10位数字值(0到1023),可以用来测量电压的实际值或模拟信号的强度。c和c++的区别是C和C++是两种编程语言,它们有许多共同点,但也有重要的区别。以下是它们的主要区别:1.语言类型C:是一种过程式编程语言。程序的执行依赖于函数和过程,代码是按顺序执行的。C++:是一种面向
内存缓冲区溢出原理和预防措施
Utopia.️
网络 安全 服务器
内存缓冲区溢出(BufferOverflow)是一种常见的安全漏洞,发生在程序试图向内存缓冲区写入超出其容量的数据时。这种溢出可以覆盖相邻的内存区域,可能导致程序崩溃或被攻击者利用来执行恶意代码。内存缓冲区溢出的原理缓冲区的定义:缓冲区是用于临时存储数据的内存区域。例如,字符数组或数据结构。溢出发生:当程序将数据写入缓冲区时,如果写入的数据超出了缓冲区的边界,超出的数据会覆盖相邻的内存区域。这可能
数据包结构
Utopia.️
网络 开发语言
据包(数据包)结构是网络通信中的基本组成部分。它定义了在网络上传输数据时的组织方式和格式。了解数据包的结构有助于理解网络通信的工作原理,排查网络问题以及优化网络性能。以下是对数据包结构的详细解释:数据包的基本组成数据包通常由以下几个主要部分组成:头部(Header):定义:头部包含了用于路由和控制的数据包的元数据。这部分信息帮助网络设备(如路由器和交换机)正确地处理和转发数据包。内容:源地址和目的
【Linux】删除Conda虚拟环境
不是伍壹
Linux linux conda 运维
1、查看当前系统的conda虚拟环境condainfo--envscondaenvlist2、创建虚拟的环境condacreate-n(你的环境名字)python=(你需要的版本号,如(3.7,3.8,3.10))3、查看安装了哪些包condalist4、删除虚拟环境condaremove-nname--all5、删除虚拟环境中的包condaremove--name$(需要删除的环境名字)$(需要
Nginx配置反向代理不成功的原因(Docker安装版)
程序员迪迦
项目实战 nginx docker linux
问题背景在linux服务器中使用docker下载了Nginx,然后根据网上的教程来配置反向代理的时候发现80端口无法访问server块的配置server{listen80;server_name127.0.0.1;#access_log/var/log/nginx/host.access.logmain;location/{proxy_passhttp://127.0.0.1:8080;#inde
cocos creator从零开发简单框架(12)-代码生成单色Sprite
cocos
在写Panel前,先写个方法生成单色Sprite,这样当碰到需要单色Sprite的时候不需要在编辑器拖拽和代码动态加载资源。编辑framework/scripts/AppUtil.ts,添加newSpriteNode方法。//生成默认白色100x100大小Sprite(单色)节点publicstaticnewSpriteNode(name:string='newSpriteNode'):cc.No
在CRM系统中,怎么做才能降低呆坏账的发生?
crmcrm系统crm销售系统
在很多企业的日常运作中,销售团队的表现直接影响到公司的收入和利润。所以,如何制定一套高效的销售流程、如何规划和运作这些流程,是企业管理者特别关注的问题。想象一下,你是一位销售经理,每天的工作除了接待客户,还需要不断优化销售流程,确保每一个环节都顺畅运作。早上,团队成员报到,汇报前一天的销售情况和进展。你会发现,有些客户的支付进度滞后,订单的交付时间也出现了延误。于是,你开始回顾一下销售流程的每一个
Android arcgis加载在线底图
Angie洛林
android arcgis
我整理的一些关于【信息系统】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/mic-position/757.html在Android中使用ArcGIS加载在线底图ArcGIS是Esri提供的一套强大的地理信息系统(GIS)解决方案,支持多种平台,包括Android。本文将介绍如何在Android应用中使用ArcGIS加载在线底图,并配有相关代码示
管理升级的关键:2024年6大国内项目管理平台实测与选择指南(禅道、钉钉、云效、简道云、Tapd、Teambition)
以下是一篇满足您要求的博客稿件:引言在当今快节奏的商业环境中,项目管理的重要性不言而喻。一款优秀的项目管理工具能够助力团队提高效率、优化流程,从而实现项目的成功交付。2024年,国内有众多项目管理平台可供选择,本文将对禅道、TAPD、云效、简道云、钉钉、Teambition这6大国内项目管理平台进行实测与分析,为您提供选择指南,帮助您找到最适合团队的项目管理工具。项目管理工具介绍禅道:开源且专业,
PHP会务会议系统小程序源码
云启软件
PHP商业系统 小程序 uni-app vue php
会务会议系统一款基于ThinkPHP+Uniapp框架,精心雕琢的会议管理微信小程序,专为各类高端会议场景量身打造。它犹如一把开启智慧殿堂的金钥匙,为会议流程优化、开支精细化管理、数量精准控制、标准严格设定以及供应商严格筛选等关键环节,铺设了一条标准化的高速公路。这一创新之举,不仅引领我们步入了量化成本节约的新时代,更在风险有效缓解与服务质量显著提升方面,树立了业界的全新标杆。会务平台——会议管理
使用Arcgis API for android加载OpenStreetMap底图并完成定位
续汉冕
移动开发 android android studio arcgis api
为了完成这个应用功能花了三天,代码倒不多就是比较坑!环境:AndroidSDKAPI22,AndroidStudio1.2.2,arcgisandroidSDK10.2.7如何基于ArcgisAPIforandroid在AndroidStudio新建一个项目就不再赘述了,大家可以参考以下网址:使用AndroidStudio与ArcgisandroidSDK的开发环境部署和HelloWorld:ht
cesium(vue)一些面试问题(包含Three.js)
GIS瞧葩菜
vue.js javascript cesium
1.在不同的应用场景和技术栈中,模型加载方法和格式有所不同,下面主要从Web前端三维场景(使用Three.js和cesium)使用Three.js加载模型常见模型格式及加载方法GLTF/GLB格式格式特点:GLTF(GraphicsLibraryTransmissionFormat)是一种开放的、基于JSON的三维模型传输格式,GLB是其二进制版本。它们具有文件小、加载快、支持动画、材质和骨骼等优
sql拼接错误直到数据全部删除
数据库
起引订单表的扩展表,在配货转发货过程中会删除配货库数据后,插入到发货库。但一直有数据在没有转移的情况下也被删除。查找通过解析binlog和审计,最终查到DELETEFROMorder.order_extendWHERE1234开始以为sql审计有问题,后来发现该语句效果同where1=1,直接导致全表删除。解决使用binlog2sql回滚数据;修复sql拼接错误。
vue3的Element plus (一)
GIS瞧葩菜
Element plus vue elementui Element plus vue3
介绍ElementPlus是一个基于Vue3的UI组件库,它是对ElementUI组件库的升级和扩展。ElementPlus提供了一套美观、易用且高效的组件,可以用于构建现代化的Web应用程序。ElementPlus的主要特点包括:支持Vue3:ElementPlus是专为Vue3开发的,充分利用Vue3的新特性和优势。TypeScript支持:ElementPlus提供了完整的TypeScrip
插入表主键冲突做更新
a-john
有以下场景:
用户下了一个订单,订单内的内容较多,且来自多表,首次下单的时候,内容可能会不全(部分内容不是必须,出现有些表根本就没有没有该订单的值)。在以后更改订单时,有些内容会更改,有些内容会新增。
问题:
如果在sql语句中执行update操作,在没有数据的表中会出错。如果在逻辑代码中先做查询,查询结果有做更新,没有做插入,这样会将代码复杂化。
解决:
mysql中提供了一个sql语
Android xml资源文件中@、@android:type、@*、?、@+含义和区别
Cb123456
@+ @ ? @*
一.@代表引用资源
1.引用自定义资源。格式:@[package:]type/name
android:text="@string/hello"
2.引用系统资源。格式:@android:type/name
android:textColor="@android:color/opaque_red"
数据结构的基本介绍
天子之骄
数据结构 散列表 树、图 线性结构 价格标签
数据结构的基本介绍
数据结构就是数据的组织形式,用一种提前设计好的框架去存取数据,以便更方便,高效的对数据进行增删查改。正确选择合适的数据结构,对软件程序的高效执行的影响作用不亚于算法的设计。此外,在计算机系统中数据结构的作用也是非同小可。例如常常在编程语言中听到的栈,堆等,就是经典的数据结构。
经典的数据结构大致如下:
一:线性数据结构
(1):列表
a
通过二维码开放平台的API快速生成二维码
一炮送你回车库
api
现在很多网站都有通过扫二维码用手机连接的功能,联图网(http://www.liantu.com/pingtai/)的二维码开放平台开放了一个生成二维码图片的Api,挺方便使用的。闲着无聊,写了个前台快速生成二维码的方法。
html代码如下:(二维码将生成在这div下)
? 1
&nbs
ImageIO读取一张图片改变大小
3213213333332132
java IO image BufferedImage
package com.demo;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* @Description 读取一张图片改变大小
* @author FuJianyon
myeclipse集成svn(一针见血)
7454103
eclipse SVN MyEclipse
&n
装箱与拆箱----autoboxing和unboxing
darkranger
J2SE
4.2 自动装箱和拆箱
基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用。
4.2.1 autoboxing和unboxing
在Java中,所有要处理的东西几乎都是对象(Object)
ajax传统的方式制作ajax
aijuans
Ajax
//这是前台的代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+
只用jre的eclipse是怎么编译java源文件的?
avords
java eclipse jdk tomcat
eclipse只需要jre就可以运行开发java程序了,也能自动 编译java源代码,但是jre不是java的运行环境么,难道jre中也带有编译工具? 还是eclipse自己实现的?谁能给解释一下呢问题补充:假设系统中没有安装jdk or jre,只在eclipse的目录中有一个jre,那么eclipse会采用该jre,问题是eclipse照样可以编译java源文件,为什么呢?
&nb
前端模块化
bee1314
模块化
背景: 前端JavaScript模块化,其实已经不是什么新鲜事了。但是很多的项目还没有真正的使用起来,还处于刀耕火种的野蛮生长阶段。 JavaScript一直缺乏有效的包管理机制,造成了大量的全局变量,大量的方法冲突。我们多么渴望有天能像Java(import),Python (import),Ruby(require)那样写代码。在没有包管理机制的年代,我们是怎么避免所
处理百万级以上的数据处理
bijian1013
oracle sql 数据库 大数据 查询
一.处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 o
mac 卸载 java 1.7 或更高版本
征客丶
java OS
卸载 java 1.7 或更高
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
成功执行此命令后,还可以执行 java 与 javac 命令
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
成功执行此命令后,还可以执行 java
【Spark六十一】Spark Streaming结合Flume、Kafka进行日志分析
bit1129
Stream
第一步,Flume和Kakfa对接,Flume抓取日志,写到Kafka中
第二部,Spark Streaming读取Kafka中的数据,进行实时分析
本文首先使用Kakfa自带的消息处理(脚本)来获取消息,走通Flume和Kafka的对接 1. Flume配置
1. 下载Flume和Kafka集成的插件,下载地址:https://github.com/beyondj2ee/f
Erlang vs TNSDL
bookjovi
erlang
TNSDL是Nokia内部用于开发电信交换软件的私有语言,是在SDL语言的基础上加以修改而成,TNSDL需翻译成C语言得以编译执行,TNSDL语言中实现了异步并行的特点,当然要完整实现异步并行还需要运行时动态库的支持,异步并行类似于Erlang的process(轻量级进程),TNSDL中则称之为hand,Erlang是基于vm(beam)开发,
非常希望有一个预防疲劳的java软件, 预防过劳死和眼睛疲劳,大家一起努力搞一个
ljy325
企业应用
非常希望有一个预防疲劳的java软件,我看新闻和网站,国防科技大学的科学家累死了,太疲劳,老是加班,不休息,经常吃药,吃药根本就没用,根本原因是疲劳过度。我以前做java,那会公司垃圾,老想赶快学习到东西跳槽离开,搞得超负荷,不明理。深圳做软件开发经常累死人,总有不明理的人,有个软件提醒限制很好,可以挽救很多人的生命。
相关新闻:
(1)IT行业成五大疾病重灾区:过劳死平均37.9岁
读《研磨设计模式》-代码笔记-原型模式
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/**
* Effective Java 建议使用copy constructor or copy factory来代替clone()方法:
* 1.public Product copy(Product p){}
* 2.publi
配置管理---svn工具之权限配置
chenyu19891124
SVN
今天花了大半天的功夫,终于弄懂svn权限配置。下面是今天收获的战绩。
安装完svn后就是在svn中建立版本库,比如我本地的是版本库路径是C:\Repositories\pepos。pepos是我的版本库。在pepos的目录结构
pepos
component
webapps
在conf里面的auth里赋予的权限配置为
[groups]
浅谈程序员的数学修养
comsci
设计模式 编程 算法 面试 招聘
浅谈程序员的数学修养
批量执行 bulk collect与forall用法
daizj
oracle sql bulk collect forall
BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎。通常可以在SELECT INTO、
FETCH INTO以及RETURNING INTO子句中使用BULK COLLECT。本文将逐一描述BULK COLLECT在这几种情形下的用法。
有关FORALL语句的用法请参考:批量SQL之 F
Linux下使用rsync最快速删除海量文件的方法
dongwei_6688
OS
1、先安装rsync:yum install rsync
2、建立一个空的文件夹:mkdir /tmp/test
3、用rsync删除目标目录:rsync --delete-before -a -H -v --progress --stats /tmp/test/ log/这样我们要删除的log目录就会被清空了,删除的速度会非常快。rsync实际上用的是替换原理,处理数十万个文件也是秒删。
Yii CModel中rules验证规格
dcj3sjt126com
rules yii validate
Yii cValidator主要用法分析:
yii验证rulesit 分类: Yii yii的rules验证 cValidator主要属性 attributes ,builtInValidators,enableClientValidation,message,on,safe,skipOnError
 
基于vagrant的redis主从实验
dcj3sjt126com
vagrant
平台: Mac
工具: Vagrant
系统: Centos6.5
实验目的: Redis主从
实现思路
制作一个基于sentos6.5, 已经安装好reids的box, 添加一个脚本配置从机, 然后作为后面主机从机的基础box
制作sentos6.5+redis的box
mkdir vagrant_redis
cd vagrant_
Memcached(二)、Centos安装Memcached服务器
frank1234
centos memcached
一、安装gcc
rpm和yum安装memcached服务器连接没有找到,所以我使用的是make的方式安装,由于make依赖于gcc,所以要先安装gcc
开始安装,命令如下,[color=red][b]顺序一定不能出错[/b][/color]:
建议可以先切换到root用户,不然可能会遇到权限问题:su root 输入密码......
rpm -ivh kernel-head
Remove Duplicates from Sorted List
hcx2013
remove
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return&
Spring4新特性——JSR310日期时间API的支持
jinnianshilongnian
spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
浅谈enum与单例设计模式
247687009
java 单例
在JDK1.5之前的单例实现方式有两种(懒汉式和饿汉式并无设计上的区别故看做一种),两者同是私有构
造器,导出静态成员变量,以便调用者访问。
第一种
package singleton;
public class Singleton {
//导出全局成员
public final static Singleton INSTANCE = new S
使用switch条件语句需要注意的几点
openwrt
c break switch
1. 当满足条件的case中没有break,程序将依次执行其后的每种条件(包括default)直到遇到break跳出
int main()
{
int n = 1;
switch(n) {
case 1:
printf("--1--\n");
default:
printf("defa
配置Spring Mybatis JUnit测试环境的应用上下文
schnell18
spring mybatis JUnit
Spring-test模块中的应用上下文和web及spring boot的有很大差异。主要试下来差异有:
单元测试的app context不支持从外部properties文件注入属性
@Value注解不能解析带通配符的路径字符串
解决第一个问题可以配置一个PropertyPlaceholderConfigurer的bean。
第二个问题的具体实例是:
 
Java 定时任务总结一
tuoni
java spring timer quartz timertask
Java定时任务总结 一.从技术上分类大概分为以下三种方式: 1.Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务; 说明: java.util.Timer定时器,实际上是个线程,定时执行TimerTask类 &
一种防止用户生成内容站点出现商业广告以及非法有害等垃圾信息的方法
yangshangchuan
rank 相似度计算 文本相似度 词袋模型 余弦相似度
本文描述了一种在ITEYE博客频道上面出现的新型的商业广告形式及其应对方法,对于其他的用户生成内容站点类型也具有同样的适用性。
最近在ITEYE博客频道上面出现了一种新型的商业广告形式,方法如下:
1、注册多个账号(一般10个以上)。
2、从多个账号中选择一个账号,发表1-2篇博文