摘要: 作为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的电信时空大数据探索)
华西医院本部就诊指南
Xyxtank
在真实的世界里想要发财,要么你拥有某种稀缺的能力,要么你掌握稀缺的资源,要么就是你有眼光——《你有你的计划,世界另有计划》一、怎么快速挂号挂号政策:从2018年3月开始,华西门诊取消窗口预约,同时,预约放号周期将从30天调整为14天。另外,需要注意的是早上8点开始放号,晚上8点放出取消预约的号。1、华医通挂号:第一次在华西挂号看病的人,可以在华医通上面直接挂号,不需要实体就诊卡,“华医通”APP上
No.13 我是一切的根源
雅雅要低调
昨天家卉老师下午的课堂体验。真的特别的好。事后呢,还知道了一些家卉老师设计这样体验课的用心。突然觉得自己到底是走了多么好的运气啊。认识了这些老师,向婉琴老师晋杭老师,家卉老师。每个老师都特别特别的大爱。家卉老师课堂最后的体验完全就是为了挽回一对出轨了四年半的夫妻。这是得多么的付出,多么的大爱,才能做到这样子。今天我一直都在想。我是谁?谁是我?老师说一切的一切,我自己才是根源。我回首了自己这些年的感
男子带铁锹到公墓活埋自己
伊桉zj
浙江杭州,27岁的王某带着铁锹打车到公墓山,情绪低落,想埋了自己。出租车司机见情况不对,赶紧报警。民警立即感到现场,将王某带回所里。当问及王某为何做出如此傻事,他的回答让在场的民警听了都觉得心酸。王某三年前来到杭州打工,本想着做出点成绩,可是三年来却依然觉得自己一事无成,离家又远,身边也没有人关心自己,一时想不开,便想活埋了自己,一了百了。知道王某的故事后,民警一直在开导他,很长时间过去了,王某情
《养生》
姜知晓
时光的沙漏没有反手重来的机会它静静地立在那里终究成了生活的无味镜子里满脸的疲惫无神眸子下的两道污秽昨夜又哭到了睡手机通讯录又看过多少回那个熟悉的号码似乎也在嘲笑我的狼狈算了吧,年轻的脸上怎么能有憔悴剪去染过分叉的梢尾留下一头自然的黑,要养生再也不要有深聊的半夜三更时光沙漏的沙继续流走但我确定那是时光不是旧梦独自再走过一段段旅程再没了得而不惜的歉疚要好好养生等待一段美好的发生
坚持不懈 直到成功(335)
贠大师
【环境】公历2018.12.2农历2018.10.25星期日阴最高温度9℃最低温度-1℃西风3~4级坚持不懈,直到成功。在古老的东方,挑选小公牛到竞技场格斗有一定的程序。他们被带进场地,向手持长矛的斗士攻击,裁判以他受戳后再向斗士进攻的次数多寡来评定这只公牛的勇敢程度。从今往后,我需承认,我的生命每天都在接受类似的考验。如果我坚忍不拔,勇往直前,迎接挑战,那么我一定会成功。坚持不懈,直到成功。我不
8848-王辛-第九次作业-裂变增长实验室二期
当代周莹
今天通过找行业专业人士,对方推荐了几个精准目标群。对于我来说,微博、QQ似乎比微信更适合发展社群。QQ有很多群,我在QQ里尝试了被动引流的方法,效果很好。图片发自App图片发自App图片发自App图片发自App
日精进第九十四天
刚子_0662
亲爱的家人们大家好图片发自App图片发自App图片发自App我是杭州佳能广告工程部郑刚,今天是2018.12.8,星期六,是我第94天的日精进,给大家分享我今天的进步,我们互相学习,共同进步,共同成长。每天进步一点点,距离成功就进一点。1.比学习:今晚读心法第四章关于造物主造物主给了人最根本的东西---灵魂中最核心的东西,就是自由,我们可以自由行动。这个自由对人而言极为重要。人因为有肉体,就想以自
2021-07-03
海棠花开5566
今天看到一篇关于三文鱼回流的故事,对三文鱼的整个生命历程甚是震撼与感动。三文鱼的回流是每四年一次,回流就是回去产卵繁衍后代。它们产卵后,把鱼卵藏到石子底下就死去了。从鱼卵变成鱼以后,它们经历了四年的艰苦历程,就为了新的生命诞生。而他们所产的卵并不是幸运地全部能变成鱼,其中一些会被其他鱼吃掉,变成鱼后,又会被别的鱼吃掉一部分,在湖泊里,它们生长的一年时间里,又会被天上的鹰和水中的鱼,还有人不断打捞,
春节假期全家游泰山
芳草1977
初二下午二点出发,初五六点返回,到济南趵突泉,泰安雪中爬泰山,返程曲阜逛孔庙,近80个小时,行程1100公里,花费三人三千元,游五个景点。总体感觉有点赶,山东印象挺不错。趵突泉的锦鲤肥肥的,泰山的石头铮亮的,岱庙庄严,孔府的碑文,还有大明湖看不到的夏雨荷。唯一留下记忆的是醉得意的餐和雪中泰山不算冷。此次出游一切顺利,可是三人都上火了,孩子低烧,我牙疼,路喉咙痛,出行没带水果是我的大意。这也是新年里
数据中台:企业数字化转型的核心驱动力
我就是全世界
AI 大数据
一、数据中台的定义与核心思想1.1数据中台的概念与愿景数据中台,作为企业数字化转型的核心驱动力,其概念源于对传统数据管理模式的深刻反思与创新。数据中台不仅仅是一个技术平台,更是一种全新的数据管理理念和战略布局。它旨在通过整合、治理、服务和创新,将企业的数据资源转化为有价值的数据资产,从而支持企业的业务创新和持续发展。数据中台的愿景是构建一个统一、共享、高效的数据服务平台,使得企业内部各个业务部门能
项目环境依赖库导出-python
遥感-GIS
python 开发语言 #遥感 图像处理
对于python语言建议不同的任务或项目中建立单独的虚拟环境,对于其他的语言最好也是不同的任务配置不同环境,而在虚拟环境中会使用的很多依赖和库,这时候别人使用的时候如果不知道需要安装哪些库会很麻烦,这时候的一个需求就是,如何导出项目代码中所实际使用到的库及其版本。利用pipreqs库可以方便完成以上需求。操作如下:安装:pipinstallpipreqs-ihttps://pypi.tuna.ts
2021-04-06随笔
风的诉说2021
前几天去姥姥家,因年前走路不小心把腰摔骨折已在床上躺两个多月的姥姥,本想和以前一样,坐在姥姥的旁边,拉着姥姥的手,和姥姥说说话,谁知,当我手去握躺在床上的手时,姥姥的手立马把我推开,我立马说,姥姥,你不认识我了吗,姥姥眼睛一直往下看,没有看我一眼,旁边的三姨说,你姥这会没劲,也不想说话。当时心情特复杂。从小没有爷爷奶奶,小时候,只记得姥爷经常来我家里帮忙,姥姥经常给我做一些和买一些小玩具,后来初中
如何评价《我不是药神》
乐享影视
《我不是药神》正式跟大家见面挺久了。看到自己参与的电影被这么多人喜欢、讨论,很开心。作为一名演员,出演了这样一部电影,心里多多少少有些感触,想在这里跟大家分享。拿到剧本时只知道这是一个真实事件改编的电影。剧本写得很好,一下子把我吸引进去。尽管编剧对人物做了改编,但那种“真实感”仍然铺面而来。我看过不少同样现实题材改编的电影剧本,这并不是一件容易做到的事。我的戏份几乎都是在南京拍的,一进剧组就觉得它
基于Sentinel-1遥感数据的水体提取
遥感-GIS
sentinel 图像处理 arcgis
本文利用SAR遥感图像进行水体信息的提取,相比光学影像,SAR图像不受天气影响,在应急情况下应用最多,针对水体,在发生洪涝时一般天气都是阴雨天,云较多,光学影像质量较差,基本上都是利用SAR影像对受灾范围进行评估,故此本文重点描述SAR影像中的水体提取问题,目前应用较多的是Sentinel-1数据。本文结构:Sentinel-1数据的介绍Sentinel-1数据的预处理水体信息提取总结1Senti
遥感之智能优化算法大纲介绍
遥感-GIS
遥感之智能优化算法 图像处理 arcgis 启发式算法
介绍近年来在遥感及人工智能领域研究比较火热的智能优化算法,其中被广泛使用的比如粒子群算法和遗传算法等,在遥感领域,比如高光谱特征选择,机器学习超参数优化等方向有众多的应用,除了提到了两个算法之外,还有众多其他算法,本专栏基于《智能优化算法与涌现计算》及其相关资料,对智能优化算法做些详细的整理和总结,以期给遥感或其他领域提供有价值的参考。书籍大纲为:第一篇仿人智能优化算法描述模拟人脑思维、人体系统、
遥感之机器学习树集成模型-CART算法之回归
遥感-GIS
遥感之机器学习树集成模型 机器学习 图像处理 arcgis
本文在前面文章的基础上,连续介绍CART树在回归中的应用,其回归技术经常用于定量遥感领域,涉及各种地表参数含量的反演。主要分为如下几部分:回归概念描述回归树中数据集的划分准则CART回归树的原理和流程CART回归树的核心代码前面内容可参考:遥感之机器学习树模型专栏1回归概念机器学习中的回归建模以及相应的回归算法,在遥感领域对应的就是定量遥感分方向,比如水质参数反演,土壤中各种参数反演,森林各种生物
初代网红系列之四十七-杀鱼弟
鱼爷的道场
2010年一篇名为《苏州最年轻杀鱼弟!绝对震撼你的视网膜神经》的帖子在西祠胡同上走红,题材很简单,一个小男孩熟练的在摊位上杀鱼。如果放在现在这样的题材根本不会引起任何的关注,但是在那个古典互联网时期却不太一样,匮乏的网络文化让网络上每一个人的神经都是敏感的,那个时期人人都是星探,那个时代人人都可能成为网红。如果你问现在的年轻人什么是西祠胡同,估计绝大部分人会以为是个地名,但是如果你问经历过那个时代
Undercover Billionaire,富豪谷底求翻身,第八集观后感
llll0072胡景山
终于是大结局了,尽管餐厅能够开起来,格伦还面临一个重要的考验,看审核官估算创立的业务价值是否能够到100万美元,他能实现90天创立价值百万企业的目标吗?刚刚结束烧烤节的战斗,团队又马不停蹄地投入到餐厅装修当中。格伦开始配备餐厅运营团队,他仔细衡量各个成员的情况,做出了抉择,更换大厨,也选择了新的烧烤主管。90天的期限就要到了,格伦加速催促着团队推进各项工作,他知道工作量可能都超出团队的能力了,但他
宽容
桃花雪er
我相信,每一个有人群的地方,都会有是非,每一个个体都是有思想的,是非,纷扰,在所难免。我们要学会宽容。所谓宽容,并不是说,让你把所有委屈都要藏在心里。而是让你变得大度,做个有风度的人。宽容,它不是每个人都存在的,但是,拥有宽容,我相信这是个加分项。宽容,不仅仅是说,要学会原谅他人,更是对自己的一种锻炼。宽容,使我们更加大度的面对这个世界。生活很苦,但你的生活需要加一点糖。它的名字叫『宽容』。❤图片
2023-11-04
sunflower向阳而开
关于婚姻,怎么看待,怎么选择?人是需要点弹性的,做人不能太极端。你拒绝家里介绍的,不是很接受这种方式,可问题是你的眼光也并不怎么样,你以前的选择也都是以失败告终,你可以说这是遇人不淑,这不是命中注定,可是两次踩入同一条河流的人是不是也应该反省反省自身的不足之处,试着去信任家里人,因为他们都是权衡比较替你赛选过的,能否遇到合适与喜欢的先不论,最起码家人的初衷是好的不会故意去害你,这也不过是多了一条认
docker部署project-exam-system项目
躺平的花卷
docker 容器 运维
8月30日笔记项目实战:使用docker部署project-exam-system1、背景:使用基础的docker指令来创建镜像,实现项目的发布,使用Dockderfile,dockercompose编排容器。2、环境准备:(1)主机dokcer01(192.168.2.80)(2)部署docker环境,执行脚本,参照之前的文章[root@dokcer01~]#vim/etc/docker/dae
Python爬虫案例五:将获取到的文本生成词云图
躺平的花卷
python 爬虫 开发语言
基础知识:#词云图wordcloud#1、导包jiebawordcloudimportjiebafromwordcloudimportWordClouddata='全年经济社会发展主要目标任务圆满完成'data_list=list(jieba.cut(data))#print(data_list)#generator数据类型#2、构造词云图样式===》虚拟的词云图wb=WordCloud(widt
读书:法治的细节
孜孜甜妈
罗翔序言对公平和正义的渴望是人类的出厂设置,无需被灌输,只需要被激活。我只想邀请大家与人类伟大的先贤对话,感受人类群星的璀璨,超越我们日常生活的庸碌,思考法治正义的要义。看见的不用去相信,看不见的才用去相信。人总要对焦于某种超越生活的存在,才能告别习以为常的平庸与肤浅。我们可以把失望看成“矢望”——“矢志不渝”的“盼望”。唯愿公平如大水滚滚,使公义如江河滔滔。第一章法律与道德一、法制如何在不确定中
先写个几十万字再来谈写作
思源姐姐
谈及写作方法和技巧,我现在没有什么可分享的,因为自己的水平还是很有限,但我觉得技巧和方法要建立在写作时的真情实感之上才能更打动人,对于写作小白来说,先培养写的习惯,用文字抒发情感是写作的基础。冰冻三尺非一日之寒,人前显贵非一日之功,凡事都需要有个成长的过程,而现在坚持写作的我,相信在写作这件事上自己是可以收益良多的。写作其实很简单每个人都会,从上小学时我们就学习写作文,记笔记,但从小到大我的风格好
晨语问安2022年4月17日
求索大伟
『晨语问安4.17』花心思,才能把关系处好,也才能把事情做漂亮;不用心,只会让简单事情复杂化,离自己想要的越来越远。做人做事不能简单应付,都需要用心用力用情去做,不能只想着如何把事情对付过去,或者简简单单地应付了事,或者只以自我的好恶为出发点对待,那样不说能够出色完成任务,就连自我能力也会按下暂定键难以进步。作为社会中的人,需要与各种各样的人发生联系,也需要经历各种各样的情景,这也就需要关系的清清
JS 删除数组元素( 5种方法 )
余道各努力,千里自同风
javascript 开发语言 ecmascript
文章目录一、五种方法1.`splice()`方法-删除指定索引位置的元素2.`pop()`方法-删除并返回数组最后一个元素3.`shift()`方法-删除并返回数组第一个元素4.`delete`操作符-删除指定索引位置的元素(保留数组长度,但使该位置值为`undefined`)5.设置`length`属性-快速删除数组尾部之外的所有元素二、注意事项总结在JavaScript中,删除数组元素有以下几
想冬眠
燕子小语
我想做一只冬眠的熊,也可以是一只冬眠的青蛙。只要冬眠就行。今天是周六,感觉整个人都放松下来了。对自己的高血压也不是那么心心念念了。昨晚半夜醒了一次,躺了将近一个小时也没有睡着,马上起来,看了会手机,看了一点点书。四点左右就又去睡觉了,还好睡到7点。没有立即起床,也懒得到瑜伽垫上去,就地吧。于是在床上,伴着音乐,开始做各种身体的舒展运动,其实也称不上是瑜伽。平躺在床上,手贴着床,闭上眼睛,静听自己的
562:养老金计算实例分析:江苏参保18年,四川参保30年
社保小龙虾
社保知识,小龙虾每日分享第562期,欢迎关注!今天通过两个实例和大家分析下养老金的计算,以及参数对比。一、江苏参保18年该网友1972年出生,2004年11月参加工作,2022年5月退休。退休年龄为50周岁,累计缴费年限为17年7个月,不存在视同缴费年限。个人账户金额57559.49元,计发月数由于是50岁退休,因此计发月数为195。个人账户养老金=57559.49÷195=295.18元。该网友
冬天
王紫杨
2019.12.7星期六在我外婆家,冬天的时候就会下雪,雪花特别美。天早上起床,去吃早饭时,铺天盖地的都是白雪,雪花纷纷落下,太好看了。还可以堆小雪人。花落到手心里就变成了水。穿的厚厚的带一个帽子,套一双手套,穿一身厚衣裳,套一双毛靴子,全身包的像个粽子一样。满地铺满白雪,在外婆家,婆总是在家里弄一个火盆,一家人围着火盆,特别温暖。冬天真美呀!
Obfuscated Gradients Give a False Sense of Security: Circumventing Defenses to Adversarial Examples
winddy_akoky
1.介绍作为基于迭代优化攻击的基准测试已经成为评估防御的标准实践,新的防御出现了,似乎对这些强大的基于优化的攻击具有强大的抵抗力。Kurakin,A.,Goodfellow,I.,andBengio,S.Adversar-ialexamplesinthephysicalworld.arXivpreprintarXiv:1607.02533,2016a.Madry,A.,Makelov,A.,Sch
插入表主键冲突做更新
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篇博文