题目 题目描述 服务器连接方式包括直接相连,间接连接。
A和B直接连接,B和C直接连接,则A和C间接连接。
直接连接和间接连接都可以发送广播。
给出一个N*N数组,代表N个服务器,
matrix[i][j] == 1,
则代表i和j直接连接;不等于 1 时,代表i和j不直接连接。
matrix[i][i] == 1,
即自己和自己直接连接。matrix[i][j] == matrix[j][i]。
计算初始需要给几台服务器广播, 才可以使每个服务器都收到广播。
输入 输入为N行,每行有N个数字,为0或1,由空格分隔,
构成N*N的数组,N的范围为 1 <= N <= 40
输出 输出一个数字,为需要广播的服务器的数量
用例一 输入
1 0 0 0 1 0 0 0 1 输出
3 说明
3 台服务器互不连接,所以需要分别广播这 3 台服务器
用例二 输入
1 1 1 1 输出
1 说明
2 台服务器相互连接,所以只需要广播其中一台服务器
实现代码 C++ #include <iostream> #include <vector> using namespace std; int count = 0; void dfs(vector<vector<int>>& arr, vector<bool>& visited, int index) { visited[index] = true; bool flag = true; for (int i = index + 1; i < arr.
🎥博主:程序员不想YY啊
💫CSDN优质创作者,CSDN实力新星,CSDN博客专家
🤗点赞🎈收藏⭐再看💫养成习惯
✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步!
🪁Scala 🪡Scala是一种功能丰富且具有强大表达能力的静态类型编程语言,它可以与Java互操作,并且在大数据处理领域非常受欢迎。下面是Scala入门的一些基本概念和语法要点:
1. 🪡安装和设置Scala: 首先,你需要安装Java开发工具包(JDK),然后下载和安装Scala编译器。在设置完成后,你可以在终端使用sbt console命令进入Scala REPL(交互式环境)。
2. 🪡变量和数据类型: Scala是静态类型语言,它提供了像整数、浮点数、字符串和布尔值等基本数据类型,以及集合类型(如数组和列表)和元组等高级数据类型。你可以使用var定义可变变量和val定义不可变变量。
3. 🪡控制结构: Scala提供了与Java相似的控制结构,如条件语句(if-else)、循环语句(for和while)以及模式匹配(match)。它还支持函数式编程特性,如高阶函数和匿名函数。
4. 🪡面向对象编程: Scala是一种面向对象的语言,它允许你定义类和对象,并使用封装、继承和多态等面向对象的概念。你可以定义类和伴生对象、实现接口和扩展类。
5. 🪡函数式编程: Scala支持函数作为一等公民,你可以使用函数字面量和高阶函数来编写函数式风格的代码。它还提供了一些函数式编程的特性,如不可变数据结构、纯函数和函数组合。
6. 🪡集合操作: Scala提供了丰富的集合操作方法,你可以使用它们来处理数组、列表、集合和映射等数据结构。它还支持集合的高阶函数,如map、filter和reduce等。
7. 🪡异常处理: 与Java类似,Scala也支持异常处理机制。你可以使用try-catch块来捕获和处理异常,使用throw语句来抛出异常。
8. 🪡并发编程: Scala提供了一些并发编程的特性,如并发集合和Future类型。你可以使用它们来编写并发安全的代码。
ansible作用、部署 一、ansible介绍1、ansible特性 二、ansible安装部署1、建议配置ssh免密2、安装ansible3、配置主机清单文件 /etc/ansible/hosts3.1 未分组的写法3.2 分组的写法 4、添加非免密的主机 一、ansible介绍 基于python语言开发的,自动化运维工具
作用:批量管控
1、ansible特性 轻易级工具, saltstack工具,重量级工具(分布式)
基于ssh协议设计
no server, no agent
提供丰富 API接口
二、ansible安装部署 1、建议配置ssh免密 [root@zabbix_server ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:G325RcbAufrnbbx71weubZvuHXYe4cLd6Y+0o5TRSKY root@zabbix_server.
0. 什么是Sass Sass(Syntactically Awesome Stylesheets)是一个 CSS 预处理器,是 CSS 扩展语言,可以帮助我们减少 CSS 重复的代码,节省开发时间:
Sass 引入合理的样式复用机制,可以节约很多时间来重复。支持变量和函数,利用代码简洁。 有两种文件后缀名,.sass和.sccs区别在于前者用缩进代替了后者的{}和分号,建议用sccs后续来书写sass代码
sass,不使用大括号和分号。scss,与css文件格式差不多,使用大括号和分号(推荐)。 
1. 在React中使用 正常使用 登录后复制 # 安装 cnpm install --save-dev sass # 新建文件 App.scss .button{ color:red } # js中使用 import "./Index.scss"; <div className={color}></div> 1.2.3.4.5.6.7.8.9.10.11.12. 模块使用 登录后复制 # 安装 npm install --save-dev css-loader style-loader # 新建文件 App.scss .button{ color:red } # js中使用 import styles from './App.scss' <div className={styles.button></div> 1.2.3.4.5.6.7.8.9.10.11.12. 还需要配置webpack.config.js
登录后复制 { test: /\.
在了解这个问题之前,我们需要知道Webgis开发工程师是做什么的。以下内容来源一职友集对于webgis开发工程师的相关招聘内容。
一、岗位职责和要求 岗位职责:(航天宏图)
1、负责空间数据的建库、管理和运维工作
2、负责GIS服务功能的开发和运维工作
3、负责web前端业务的开发和运维工作
4、负责遥感类项目的开发与实施工作
长江空间信息技术工程有限公司
1、理解web开发流程,至少熟悉cesium,threejs等一种web端gis开源库;
2、精通web前端开发技术,包括HTML、CSS+DIV、JavaScript等前端基础开发框架;
3、熟悉OGC的WMS、WFS、WMTS等规范,至少熟悉一种GIS平台,如ArcGIS、Supermap、GeoServer等,熟悉Openlayers、Leaflet等地图前端开源框架;
4、本科及以上学历,计算机和GIS相关专业者优先。
具备以下条件者优先:
1、至少熟悉cesium或者threejs等一项三维gis开源库,有水利信息化项目经验优先;
2、熟悉前端可视化框架者优先;
3、对前台MVC框架有一定的经验及见解者优先。
岗位要求(航天宏图)
1、本科以上学历,2年或以上GIS项目开发经历,熟悉空间数据格式与相关标准
2、熟悉PostgreSQL数据库及Postgis组件操作,精通空间索引、空间查询等SQL脚本编写
3、熟练使用SSM,SpringCloud等后台框架,熟练大数据开发经验(hive、spark、geomesa)优先考虑
4、熟悉RequireJS、JS、Jquery、HTML5、CSS、vue等前端技术栈,至少掌握一种前端框架;熟悉leaflet、openlayers等gis前端框架
5、良好的学习能力、团队协作能力和沟通能力,思路清晰、善于思考,工作积极主动。
通过以上两个公司对于webgis开发工程师的招聘要求和职责来看,很多都是相通的,比如熟悉RequireJS、JS、Jquery、HTML5、CSS、vue等前端技术栈,精通web前端开发技术,包括HTML、CSS+DIV、JavaScript等前端基础开发框架等等,所以我们去面试以佳webgis开发工程师的时候,问自己,这些技术栈都会了吗?这些开发经历都有吗?如果没有的话,那么你的简历很可能会石沉大海~你现在需要做的就是去学,去做项目!
二、学历要求 webgis开发对学历要求这一块没有那么严格,本科的占比是最大的,84.7%的岗位之要求本本科毕业,大专要求9.5%,这一行对于技术和经历的要求还是非常强的。
但是对于学历上面的要求只需要本科,当然,学历越高可能薪资待遇上面也会高一点。
三、工作经历要求 上面我们说过webgis开发工程师对于学历的要求不高,但是对于工作经历的要求1-3年的占比最多,是47.8%,如果你不懂技术栈,没有开发的相关经验,在这一行你的门槛或许都达不到,虽然不限经验的也占11%左右,但是这些岗位往往都是助理或者是实习生的岗位,薪资待遇方面相对较低。
所以说,想要应聘webgis开发,一定要有经验,没有经验怎么办呢?去找实习,去做项目,去系统班进行培训,这那里面一般都能自主做出来一些项目,培训结束后一般都会给你算作是一些开发的经验,在面试的时候也不会胆怯。
四、薪资待遇 数据统计来自近一年 1627 份样本,截至 2024-06-25。
薪酬区间: 4.5-50K,其中69.8%的岗位拿¥10-20K/月,年薪¥12-24W。当然具体的薪资还是要看当地的经济发展水平和个人的工作经历。
五、需要掌握的技术栈 1、前端知识及主流地图框架 前端框架:vue或react其次还需掌握echarts,turf等可视化库
1.arcgis api for js
2.openlayers
3.mapbox-gl
4.leaflet
5.cesuim,dc-sdk
6.百度,高德,天地图,阿里
2、空间数据库 Oracle Spatialpostgresql PostGISMongoDB
个人比较习惯postgresql PostGIS,主要要学会使用sql增删改查各种空间数据 后台gis相关库
后台比较丰富如c++,c#,java,python等,本人这里只介绍Java相关库
后台框架:springboot及分布式架构配合数据库使用
1.geotools,支持shp等多种数据格式,坐标转换及根据空间和非空间属性过滤和分析数据,配合xml样式文件可用于桌面GIS
2.lucene,生成索引文件,优化搜索引擎
3.gdal,读取shp及栅格数据,栅格裁剪
4.geospark,支持csv,shp等多种矢量文件读取,同样支持空间和非空间属性过滤,对大数据量的计算有一定优势
5.wContour,用于空间插值,曲线平滑
1.前端技能:Html、CSS、 Javascript、WebAPLs、Vue等
2.二维技能:WebGIS基础理论及开发、MapGIS二次开发Openlayers、Leaflet、Mapbox 、Echarts、公共开发平台开发等
3.三维技能:Blender、Three.js、Cesium等
六、给Webgis新手的一些小建议 1、只要做webgis开发,ArcGlS产品是是必须要会的。
效果图:
代码: pythonturtle001画两只小狗资源-CSDN文库
# 作者V w1933423 import turtle # 导入turtle模块 def draw_dogs(): turtle.setup(800, 800) # 设置画布大小为800x800 p = turtle.Pen() # 创建一个画笔对象 p.pensize(14) # 设置画笔大小为14 p.speed(13) # 设置画笔速度为13 p.color("black") # 设置画笔颜色为黑色 #============================开始画白色小狗===================================== # 画白色小狗 p.penup() # 提起画笔 p.goto(3, -72) # 移动画笔到坐标(3, -72) p.pendown() # 放下画笔 p.goto(-2, -88) # 画线到坐标(-2, -88) p.goto(-4, -96) p.goto(-5, -100) p.goto(-5, -115) p.goto(-5, -122) p.goto(-7, -134) p.goto(-14, -150) p.goto(-16, -154) p.penup() # 提起画笔 p.goto(-24, -163) # 移动画笔到坐标(-24, -163) p.
MySQL 高性能配置详解与最佳实践 优化MySQL的配置是提升数据库性能的关键步骤。下面详细介绍了一些常见的MySQL配置参数及其最优设置,适用于中型到大型应用场景。这些配置项应根据实际的硬件资源和工作负载进行调整。
1. InnoDB 相关配置 1.1. innodb_buffer_pool_size 作用: 控制InnoDB缓冲池大小,用于缓存数据和索引。
推荐设置: 设置为物理内存的70%-80%。
[mysqld] innodb_buffer_pool_size = 12G # 假设有16GB的内存 1.2. innodb_log_file_size 作用: 控制每个InnoDB日志文件的大小。
推荐设置: 适当增大以提升性能,通常设置为1GB。
innodb_log_file_size = 1G 1.3. innodb_flush_log_at_trx_commit 作用: 控制事务提交时InnoDB刷新日志到磁盘的策略。
推荐设置:
设置为1时,每次事务提交都会强制刷新日志到磁盘,最安全但性能较差。设置为2时,每秒钟刷新一次日志,性能和数据安全之间取得平衡。 innodb_flush_log_at_trx_commit = 2 1.4. innodb_file_per_table 作用: 每个InnoDB表使用独立的表空间文件。
推荐设置: 开启此选项有助于管理表的大小和碎片化。
innodb_file_per_table = 1 1.5. innodb_flush_method 作用: 控制InnoDB刷新数据和日志文件的方法。
推荐设置: 对于大多数现代操作系统,使用O_DIRECT可以提升性能。
innodb_flush_method = O_DIRECT 1.6. innodb_io_capacity 和 innodb_io_capacity_max 作用: 控制InnoDB的I/O能力。
推荐设置: 根据硬件类型和性能需求进行调整。
innodb_io_capacity = 2000 # 适用于SSD innodb_io_capacity_max = 4000 2.
引言 背景介绍 AIGC的定义及其发展历程 AIGC,即人工智能生成内容,是近年来在人工智能领域兴起的一项重要技术。它通过使用机器学习和深度学习等技术,使得计算机能够自动生成各种形式的数字内容,如文本、图像、音频和视频等。
AIGC的发展可以追溯到上世纪80年代,但真正取得突破性进展是在过去的十年里。随着深度学习技术的发展和大数据的积累,AIGC技术在自然语言处理、计算机视觉和语音识别等领域取得了进步。随着互联网和移动互联网的普及,用户对多样化、个性化内容的需求日益增长,这为AIGC技术的应用提供了强大的驱动力。AIGC技术在内容创作、个性化推荐、智能客服等领域的应用,能够有效提高生产效率、降低成本,并提升用户体验。
在国内,百度、腾讯、阿里、科大讯飞、字节跳动等科技巨头在AIGC技术的研究和应用方面取得了许多重要成果,推动了国内AIGC技术的发展。AIGC技术在2023-2024年飞速发展,对多个行业产生了颠覆性的影响。其中AIGC已经在广告、游戏、自媒体等内容创作领域实现了广泛应用,教育、电商、软件开发、金融等领域也尝试扩大AIGC的应用范围。从商业视角来看,AIGC技术可以提高生产效率,降低成本。例如,在内容创作领域,AIGC技术可以帮助创作者更快地生成高质量的内容;AIGC技术可以提供个性化的服务,提高用户体验;AIGC技术可以帮助企业进行创新,帮助领导者开拓新的商业模式。
AIGC是内容生产方式的进阶,实现内容和资产的再创造。AIGC(AI-Generated Content)本质上是一种内容生产方式,即人工智能自动生产内容,是基于深度学习技术,输入数据后由人工智能通过寻找规律并适当泛化从而生成内容的一种方式。过往的内容创作生态主要经历了PGC、UGC到AIUGC的几个阶段,但始终难以平衡创作效率、创作成本及内容质量三者之间的关系,而AIGC可以实现专业创作者和个体自由地发挥创意,降低内容生产的门槛,带来大量内容供给。此外,对于仍处于摸索阶段的元宇宙世界,AIGC技术的发展也带来了解决元宇宙内容创造问题的解决可能,可实现为元宇宙世界构建基石的关键作用。
AIGC技术的前景非常广阔。随着技术的不断进步,AIGC技术有望在更多的领域得到应用,并进一步提高生产效率和用户体验。同时,AIGC技术的发展也面临一些挑战,如数据隐私、算法偏见等问题,需要进一步的研究和解决。总体而言,AIGC技术的发展将对社会产生革命性影响,并成为未来科技发展的重要方向之一。
AIGC在现代社会中的应用场景 本文从各个不同的来源获取AI的应用场景,可以更好的帮助大家选择自己擅长的赛道。
B站上2019年中国AI产业生态图谱: 十大人工智能应用场景: 智能助手:智能助手是人工智能技术在个人生活中的一种应用,它们可以回答问题,提供日程安排,发送消息等。语音识别:语音识别是人工智能在语言处理领域的一项重要的应用。它可以将人类的语音转化为文本,进而实现语音控制、语音搜索等功能。自然语言处理:自然语言处理是人工智能在理解和处理人类语言方面的应用。他可以用于机器翻译、文本摘要、情感分析等任务。机器学习:机器学习是一种让机器 通过数据自动学习和改进的技术。它在各个领域有广泛应用,包括推荐系统、垃圾邮件过滤、图像识别等。人脸识别:人脸识别是一种利用AI技术对人脸进行识别和验证的应用。它被广泛应用于安全领域、人脸解锁、人脸支付等。自动驾驶:自动驾驶是AI在汽车领域的一项重要应用,通过激光雷达、摄像头和传感器等设备,自动驾驶车辆可以感知周围环境并作出驾驶决策。医疗诊断:AI在医疗领域的应用也越来越多,它可以辅助医生进行疾病诊断,提供精准的治疗方案等。虚拟现实和增强现实(VR & AR):AI在VR和AR的应用正在迅速发展 ,它可以同i共更沉浸式的虚拟体验,并将虚拟和现实世界融合在一起。金融风险管理:金融领域利用AI技术进行风险管理和预测分析,机器学习(Machine Learning,ML)可以分析大量的金融数据,提供风险评估、欺诈检测等服务。智能制造:AI在制造业中的应用被称为智能制造(Smart Manufacturing),它可以用过数据分析和自动化控制,提高生产效率,优化供应链 管理等,例如工业机器人的应用。 AIGC产业 我国AIGC产业发展目前已经发展出了两类主要业态,其一是主要面向 C端用户,提供的产品主要包括文本生成、图片
生成、音频生成、视频生成、虚拟人生成等多样内容形态;其二是主要面向B端企业客户,提供的产品更多是基于特
定领域的专业服务。未来,C端和B端可能会出现“双向奔赴”的趋势,在行业层面汇合。
新一代人工智能示范应用场景 这里先展示一张产业发展路线图,产业发展的起点是能源结构和基础原材料,这些是工业生产和经济活动的基础。能源的多样化和原材料的丰富性直接影响一个国家的工业能力和竞争力。能源和原材料经过初步加工转化为工业品、中间品和化工产品。这些产品是进一步制造和生产的基础,通常涉及较低的附加值。中间品和化工产品经过加工后,转变为消费品和工业品,进入市场供消费者和其他工业部门使用。这一步骤提高了产品的附加值,体现了工业链的延伸。工业发展到一定阶段后,重点转向高附加值产品和工业品的生产。这些产品通常具有高技术含量、创新性和市场竞争力,能够显著提高国家经济的整体效益和产业水平。产业链的最终阶段是高附加值服务的提供。这包括技术服务、研发、设计、咨询等。高附加值服务不仅能增加经济收益,还能促进产业升级和结构优化,提升国家在全球产业链中的地位。国家为了从基础资源走向高附加值产品和服务的产业,必须通过不断向高附加值产业链攀升,国家能够实现产业结构优化,推动经济高质量发展,增强在全球市场的竞争力。由此,国家推出了:科技部关于支持建设新一代人工智能示范应用场景的通知:国家首次明确指出的AI智能赛道,根据以往的经验来看,这十个领域不仅会获得国家的大力 补贴,而且会有广阔的市场,以及庞大的盈利空间。
(一)智慧农场。
针对水稻、玉米、小麦、棉花等农作物生产过程,聚焦“耕、种、管、收”等关键作业环节,运用面向群体智能自主无人作业的农业智能化装备等关键技术,构建农田土壤变化自适应感知、农机行为控制、群体实时协作、智慧农场大脑等规模化作业典型场景,实现农业种植和管理集约化、少人化、精准化。
(二)智能港口。
针对港口大型码头泊位、岸桥管理以及堆场、配载调度等关键业务环节,运用智能化码头机械、数字孪生集成生产时空管控系统等关键技术,开展船舶自动配载、自动作业路径及泊位计划优化、水平运输车辆及新型轨道交通设备的协同调度、智能堆场选位等场景应用,形成覆盖码头运作、运行监测与设备健康管理的智能化解决方案,打造世界一流水平的超大型智能港口。
(三)智能矿山。
针对我国矿山高质量安全发展需求,聚焦井工矿和露天矿,运用人工智能、5G通信、基础软件等新一代自主可控信息技术,建成井工矿“数字网联、无人操作、智能巡视、远程干预”的常态化运行示范采掘工作面,开展露天矿矿车无人驾驶、铲运装协同自主作业示范应用,通过智能化技术减人换人,全面提升我国矿山行业本质安全水平。
(四)智能工厂。
针对流程制造业、离散制造业工厂中生产调度、参数控制、设备健康管理等关键业务环节,综合运用工厂数字孪生、智能控制、优化决策等技术,在生产过程智能决策、柔性化制造、大型设备能耗优化、设备智能诊断与维护等方面形成具有行业特色、可复制推广的智能工厂解决方案,在化工、钢铁、电力、装备制造等重点行业进行示范应用。
(五)智慧家居。
针对未来家庭生活中家电、饮食、陪护、健康管理等个性化、智能化需求,运用云侧智能决策和主动服务、场景引擎和自适应感知等关键技术,加强主动提醒、智能推荐、健康管理、智慧零操作等综合示范应用,推动实现从单品智能到全屋智能、从被动控制到主动学习、各类智慧产品兼容发展的全屋一体化智控覆盖。
(六)智能教育。
针对青少年教育中“备、教、练、测、管”等关键环节,运用学习认知状态感知、无感知异地授课的智慧学习和智慧教室等关键技术,构建虚实融合与跨平台支撑的智能教育基础环境,重点面向欠发达地区中小学,支持开展智能教育示范应用,提升优质教育资源覆盖面,助力乡村振兴和国家教育数字化战略实施。
(七)自动驾驶。
针对自动驾驶从特定道路向常规道路进一步拓展需求,运用车端与路端传感器融合的高准确环境感知与超视距信息共享、车路云一体化的协同决策与控制等关键技术,开展交叉路口、环岛、匝道等复杂行车条件下自动驾驶场景示范应用,推动高速公路无人物流、高级别自动驾驶汽车、智能网联公交车、自主代客泊车等场景发展。
(八)智能诊疗。
针对常见病、慢性病、多发病等诊疗需求,基于医疗领域数据库知识库的规模化构建、大规模医疗人工智能模型训练等智能医疗基础设施,运用人工智能可循证诊疗决策医疗关键技术,建立人工智能赋能医疗服务新模式。重点面向县级医院,提升基层医疗服务水平。
(九)智慧法院。
针对诉讼服务、审判执行、司法管理等法院业务领域,运用非结构化文本语义理解、裁判说理分析推理、风险智能识别等关键技术,加强庭审笔录自动生成、类案智能推送、全案由智能量裁辅助、裁判文书全自动生成、案件卷宗自适应巡查、自动化审判质效评价与监督等智能化场景的应用示范,有效化解案多人少矛盾,促进审判体系和审判能力现代化。
(十)智能供应链。
针对智能仓储、智能配送、冷链运输等关键环节,运用人机交互、物流机械臂控制、反向定制、需求预测与售后追踪等关键技术,优化场景驱动的智能供应链算法,构建智能、高效、协同的供应链体系,推进智能物流与供应链技术规模化落地应用,提升产品库存周转效率,降低物流成本。
研究动机 AI的发展经历了从决策式AI到生成式AI的过程。在2010年之前,AI以决策式AI为主导,决策式AI学习数据中的条件概率分布,底层逻辑是AI提取样本特征信息,与数据库中的特征数据进行匹配,最后对样本进行归类,主要针对对样本的识别和分析。2011年之后随着深度机器学习算法以及大规模预训练模型的出现,AI开始迈入生成式AI时代,生成式AI的特征是可以根据已有的数据进行总结归纳,自动生成新的内容,在决策式AI决策、感知能力的基础上开始具备学习、执行、社会协作等方面的能力。当下人工智能在生成(Generation)和通用(General)两条主线上不断发展
AI的发展经历了从决策式AI到生成式AI的过程。在2010年之前,AI以决策式AI为主导(Predictive AI),专注于使用历史数据来预测未来事件。随着深度机器学习算法以及大规模预训练模型的出现,AI开始迈入生成式AI时代(Generative AI),生成式AI的特征是创建之前不存在的全新原创内容,它从训练数据中学习到的模式进行创作。
AIGC迎来了广袤的商业前景和未来主要的科技发展方向。从全球的视域来看,全球AI产业在22年经历了微小的回落之后,23年迎来强劲反弹,仅上半年生成式AI在资本市场便募集约141亿美元的资金,产业在资本市场异常火爆,同时大部分的企业仍处在早期融资轮次,后期仍存在大量的资金需求。由此可见,AIGC将会变成未来10年主要的商机。
不同数据来源对AIGC未来10年(2022年到2032年)的市场规模预测存在差异,但复合年增⻓率(CAGR值)都表明
该行业有着强劲的增⻓轨迹。彭博财经预测未来10年的CAGR将达到令人印象深刻的42%,而其他来源则提出从2023
年至2032年的CAGR为27.02%。
第一部分:AIGC的技术基础 这里展示AIGC的一些核心论文,这里由于上传图片大小的限制,这里只展示一部分,需要的可以在这个链接进行提取。后面将介绍各个技术的概念、常用算法和应用。
数据增强和预处理 数据增强和预处理是数据科学和机器学习中的两个重要概念,旨在提高模型的性能和鲁棒性。以下是这两个概念的详细介绍、常用算法和应用。
数据增强(Data Augmentation) 概念
数据增强是一种通过对训练数据进行各种变换来生成更多训练样本的方法。这种技术特别常用于图像、文本和音频数据,以增加数据的多样性,防止模型过拟合。
常用算法
图像数据增强 旋转:随机旋转图像一定角度。平移:随机平移图像在水平或垂直方向上的位置。缩放:随机放大或缩小图像。剪切:随机剪切图像的某个部分。翻转:水平或垂直翻转图像。颜色扰动:调整图像的亮度、对比度、饱和度和色调。随机裁剪:从图像中随机裁剪出一定大小的区域。噪声添加:在图像中添加随机噪声。 文本数据增强 同义词替换:将句子中的某些词替换为同义词。随机插入:随机向句子中插入一些词。随机删除:随机删除句子中的一些词。随机交换:随机交换句子中两个词的位置。 音频数据增强 时间偏移:随机将音频片段在时间轴上移动。速度变化:改变音频的播放速度。音量变化:调整音频的音量。添加噪声:在音频中添加背景噪声。
队列 一.队列的概念及结构二.顺序队列与链队列1.顺序队列2.链队列 三.链队列的实现1.创建队列2.初始化队列3.入队4.出队5.获取队头元素6.获取队尾元素7.队列的大小8.队列的判空9.清空队列10.销毁队列 四.队列的盲区五.模块化源代码1.Queue.h2.Queue.c3.test.c 六.栈和队列必做OJ题 一.队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先
进先出FIFO(First In First Out)
入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头
二.顺序队列与链队列 队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,
出队列在数组头上出数据,效率会比较低。
1.顺序队列 2.链队列 那是不是再用一个指针指向队尾就可以了呢?是的如下图:
这种链表结构完美的解决了尾插时效率低的问题。
三.链队列的实现 1.创建队列 先创建结构体(存放数据和先一个节点的地址)用来表示节点,再额外创建队列结构体(成员:队头指针和队尾指针),队头指针指向队列的队头,队尾指针指向队列的队尾。
typedef int QDataType; typedef struct QueueNode { QDataType data; struct QueueNode* next; }QNode; typedef struct Queue { QNode* head; QNode* tail; }Queue; Queue q;//q代表链队列 2.初始化队列 将队头指针和队尾指针初始化为NULL。
void QueueInit(Queue* pq) { assert(pq);//断言 pq->head = pq->tail = NULL; } 3.入队 先是创建一个新的节点,存放数据和NULL指针,入队分两种情况:
若队头和队尾指针都为NULL,则队头和队尾指针都指向新的节点。若队头和队尾指针不为NULL,则向队尾插入新的节点,再更新队尾指针。 void QueuePush(Queue* pq, QDataType x) { assert(pq); //创建入队的节点 QNode* newnode = (QNode*)malloc(sizeof(QNode)); if (newnode == NULL)//开辟失败 { perror("
文章目录 0 数据分析目标1 B站整体视频数据分析1.1 数据预处理1.2 数据可视化1.3 分析结果 2 单一视频分析2.1 数据预处理2.2 数据清洗2.3 数据可视化 3 文本挖掘(NLP)3.1 情感分析 6 最后 0 数据分析目标 今天向大家介绍如何使用大数据技术,对B站的视频数据进行分析,得到可视化结果。
这里学长分为两个部分描述:
1 对B站整体视频进行数据分析2 对B站的具体视频进行弹幕情感分析 🧿 选题指导, 项目分享:见文末
1 B站整体视频数据分析 分析方向:首先从总体情况进行分析,之后分析综合排名top100的视频类别。
总体情况部分包括:
各分区播放量情况。各区三连(硬币、收藏、点赞)情况。弹幕、评论、转发情况。绘制综合词云图,查看关键词汇。 综合排名top100部分包括:
5. top100类别占比。
6. top100播放量情况。
7. 硬币、收藏、点赞平均人数分布。
8. 各分区平均评论、弹幕、转发量情况。
1.1 数据预处理 这里主要是进行查看数据信息、空值、重复值以及数据类型,但由于数据很完整这里不再做过多操作。
对数据进行拆分、聚合,方便之后各项分析,由于“区类别”列中的“全站”是各分类中排名靠前的视频,会出现重复数据,因此对其进行去除。
df.info() df.isnull().count() df.nunique().count() df.dtypes #剔除全区排名 df_nall=df.loc[df['区类别']!='全站'] df_nall['区类别'].value_counts() #按分数进行排序asc df_top100 = df_nall.sort_values(by='分数',ascending=False)[:100] df_type = df_nall.drop(['作者','视频编号','标签名称','视频名称','排名'],axis=1) gp_type = df_type.groupby('区类别').sum().astype('int') type_all = gp_type.index.tolist() 1.2 数据可视化 各分区播放情况
play = [round(i/100000000,2) for i in gp_type['播放次数'].
文章目录 0 简介1. 数据集说明2. 数据处理2.1 数据导入2.2 数据清洗 3.数据分析可视化3.1 用户流量及购物情况3.2 用户行为转换率3.3 用户行为习惯3.4 基于 RFM 模型找出有价值的用户3.5 商品维度的分析 0 简介 今天学长向大家介绍一个机器视觉的毕设项目,大数据电商用户行为分析及可视化(源码+论文)
项目运行效果:
毕业设计 基于大数据淘宝用户行为分析
项目获取:
https://gitee.com/assistant-a/project-sharing
1. 数据集说明 这是一份来自淘宝的用户行为数据,时间区间为 2017-11-25 到 2017-12-03,总计 100,150,807 条记录,大小为 3.5 G,包含 5 个字段。
2. 数据处理 2.1 数据导入 将数据加载到 hive, 然后通过 hive 对数据进行数据处理。
-- 建表 drop table if exists user_behavior; create table user_behavior ( `user_id` string comment '用户ID', `item_id` string comment '商品ID', `category_id` string comment '商品类目ID', `behavior_type` string comment '行为类型,枚举类型,包括(pv, buy, cart, fav)', `timestamp` int comment '行为时间戳', `datetime` string comment '行为时间') row format delimited fields terminated by ',' lines terminated by '\n'; -- 加载数据 LOAD DATA LOCAL INPATH '/home/getway/UserBehavior.
在数据科学领域,Python以其简洁的语法和强大的库支持,成为最受欢迎的编程语言之一。无论是数据清洗、探索性数据分析还是复杂的机器学习任务,Python都能提供相应的工具。本文将引导你使用Python进行简单的数据分析,以一个公开的数据集为例,展示如何加载数据、进行基本的统计分析和可视化。
环境准备
在开始之前,请确保你的Python环境中安装了以下库:
pandas:用于数据处理和分析。
numpy:进行数值计算。
matplotlib:用于数据可视化。
seaborn:基于matplotlib的高级绘图库。
可以通过以下命令安装这些库:
pip install pandas numpy matplotlib seaborn
数据加载
我们将使用pandas库加载数据。假设我们有一个名为data.csv的CSV文件,其中包含一些统计数据。
import pandas as pd
加载数据 data = pd.read_csv(‘data.csv’)
数据探索
在进行任何分析之前,了解数据的基本结构是非常重要的。
查看数据的前几行 print(data.head())
获取数据的描述性统计信息 print(data.describe())
数据清洗
数据清洗是数据分析中不可或缺的一步。我们可能需要处理缺失值或异常值。
检查缺失值 print(data.isnull().sum())
处理缺失值,这里我们选择填充缺失值 data.fillna(data.mean(), inplace=True)
统计分析
进行一些基本的统计分析,比如计算平均值、中位数等。
计算平均值 mean_value = data[‘column_name’].mean()
print(f"The mean of ‘column_name’ is: {mean_value}")
计算中位数 median_value = data[‘column_name’].median()
print(f"The median of ‘column_name’ is: {median_value}")
数据可视化
使用matplotlib和seaborn进行数据可视化。
import matplotlib.pyplot as plt
import seaborn as sns
今天,“湖南长沙市遭遇强降雨,一小时的降雨量足够注满54个西湖”这消息,终于登上互联网社交平台热搜榜。
截图:来源社交网站
综合多家媒体消息概述如下。
昨(24日)天,湖南长沙市遭遇强降雨,一小时的降雨量足够注满54个西湖。当地商业区、火车站被淹,多个地下商场、停车场淹水,地铁站一度停运。
图片:来源社交网站
图片:来源社交网站
6月24日,湖南长沙市遭遇强降水。火车站被淹,多个地下商场、停车场涌入洪水。两条地铁线一度停运。市区一片汪洋,分不清是车道还是河道,只能靠露出水面的路灯辨别。
街道也变成河流,汽车泡水或被冲走。许多车辆灭顶,或抛锚在路中间,动弹不得。一名男子从灭顶的汽车中逃出,冒险跳入洪水中,游泳逃生,险象环生。洪水淹没了街道和基础设施,地下通道等。
有网友说,当天上午9点到10点,长沙市降水量达65.1毫米,相当于54个西湖的水量。根据气象预报,长沙市暴雨、大暴雨将持续到周三,累计雨量将高达300到400毫米。
图片:来源社交网站
火车站成了码头,地铁站被积水倒灌,多条线路停运。长沙气象台从早上起连发多个红色暴雨预警,网传视频显示,长沙多个地区出现严重内涝,街道成河流,许多车辆被淹,雨水灌入地下商场。
有视频显示,一辆小汽车被水淹没,仅看到车顶,一名司机跳入水中逃生。还有人骑着电单车在没过大腿的积水中前行,两名外卖小哥穿越激流时差点被冲走。
险中听雨,此情此景,思绪万千,不可无诗。而历朝历代《听雨》的同名诗词颇多,表达的情感也各不相同。即便搜索枯肠,也难觅得可与长沙暴雨成灾之声相合拍的诗句,就免不了令人神伤。
文人墨客都知晓,焚香、听雨、品茗——是古代文人的十大雅事中的三大雅事,而品茶听雨的唯美句子也特多。
比如:“在柔润的雨声中,细品香醇的茶汤,感受生活的细腻和美好,听雨喝茶,让人陶醉在这宁静的时光里。”
比如:“在一个宁静的午后,听雨声轻敲窗棂,品一壶清香的茶,感受内心的宁静与平和。”
比如......此情此景,无一可与“湖南长沙市遭遇强降雨,一小时的降雨量足够注满54个西湖”这消息相匹配!不过在每一曲听雨声里,又多是世事的沧桑和岁月的悠长,以及漂泊、流离的孤零,倒是与长沙暴雨成灾有些吻合。其中宋词《虞美人·听雨》,最是令人触景伤怀。
少年听雨歌楼上,红烛昏罗帐。壮年听雨客舟中,江阔云低、断雁叫西风。
而今听雨僧庐下,鬓已星星也。悲欢离合总无情,一任阶前、点滴到天明。
这首词,包含了人生的三个不同阶段的不同情怀,亦即听雨的人生状态。
一是“少年听雨歌楼上”。是指少年时候醉生梦死,一掷千金,在灯红酒绿中轻歌曼舞,沉溺在自己的人生中。这情景应当是一幅欢快的青春画卷。
二是“壮年听雨客舟中”。是指壮年之时,江山易主,兵荒马乱,在人生的旅途上踽踽独行,四方漂流,满腹哀愁满腔旅恨,以及万种离愁的听雨之声,全都溶在了这艘客舟之中。
三是“而今听雨僧庐下”。是指已是凄苦的晚年,一个白发老人寄居僧庐,独自在廊下倾听夜雨,心境是何等的彷徨呀。而壮年的愁恨与少年的欢乐,都已被暴雨打碎,无奈只能“一任阶前,点滴到天明”而已。所以说,这客舟听雨,听的已不再是轻歌曼舞,而是人生难言的苦难。
笔者乃性情中人,从“湖南长沙市遭遇强降雨,一小时的降雨量足够注满54个西湖”这一消息中,竟然就引发出无限的怀古幽思:“暴雨虐长沙,生灵受煎熬!”这不能不说,也算是“老夫聊发少年狂”的一种情怀吧。
文章目录 1 引言1.1 简介1.2 Druid的功能1.3 竞品对比 2 准备工作2.1 项目环境 3 集成Druid3.1 添加依赖3.2 配置Druid3.3 编写测试类测试3.4 访问控制台3.5 测试SQL监控3.6 数据库密码加密3.6.1 执行命令加密数据库密码3.6.2 配置参数3.6.3 测试 4 总结 1 引言 1.1 简介 Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。除了提供基本的数据源功能外,还具备以下优势:
性能优越:Druid连接池的性能表现优于其他常见连接池,如C3P0和DBCP。监控功能强大:Druid内置了丰富的监控功能,可以实时查看SQL执行情况、连接池状态等。稳定性高:Druid在高并发环境下表现稳定,能够有效避免连接泄漏等问题。扩展性好:Druid支持多种数据库,且配置灵活,易于集成和扩展。 1.2 Druid的功能 高效的数据库连接池管理
高性能:在并发环境下表现优越,处理大量数据库连接请求。
稳定性:在高并发和高负载情况下保持稳定,避免连接泄漏。
易用性:配置简单,快速集成到Java应用中。
丰富的监控功能
连接池监控:实时监控连接池状态,如连接数、空闲连接数等。SQL监控:记录SQL执行情况,统计执行时间、次数等。URI监控:监控各URI的访问情况,统计请求次数和响应时间。防火墙功能:防止SQL注入攻击,提升系统安全性。 便捷的配置和扩展
多数据库支持:支持MySQL、Oracle、PostgreSQL等多种数据库。
灵活配置:提供丰富的配置选项,灵活调整。
插件机制:支持插件扩展功能,如stat、wall、log4j等。
SQL执行日志和统计分析
SQL执行日志:记录SQL执行时间、次数、影响行数等。
统计分析:提供SQL执行统计分析,帮助优化SQL性能。
慢SQL检测:自动检测慢SQL,提供详细执行信息,便于调优。
提高系统安全性
SQL防火墙:配置防火墙规则,拦截非法SQL请求,防止SQL注入。
黑白名单机制:配置IP黑白名单,限制特定IP访问权限。
1.3 竞品对比 功能类别功能DruidHikariCPDBCPTomcat-jdbcC3P0性能PSCache是否是是是LRU是否是是是SLB负载均衡支持是否否否否稳定性ExceptionSorter是否否否否扩展扩展FilterJdbcIntercepter监控监控方式jmx/log/httpjmx/metricsjmxjmxjmx支持SQL级监控是否否否否Spring/Web关联监控是否否否否诊断支持LogFilter否否否否连接泄露诊断logAbandoned否否否否安全SQL防注入是无无无无支持配置加密是否否否否 2 准备工作 2.1 项目环境 JDK版本:JDK 17Spring Boot版本:Spring Boot 3.2.2MySQL版本:8.0.37构建工具:Maven 3 集成Druid 3.1 添加依赖 这里的Druid版本必须要选择1.2.20及以上版本,否则无法运行。
还有一点,Druid的版本要与mysql-connector-java的版本相匹配,可以去下面的网站看:
Maven Repository: com.alibaba » druid » 1.
# 0 简介
今天学长向大家介绍适合作为毕设的项目:
毕设分享 多功能 Web 应用渗透测试系统(源码+论文)
项目获取:
https://gitee.com/assistant-a/project-sharing
项目介绍 系统简介 本项目为多功能 Web 应用渗透测试系统,包含漏洞检测、目录识别、端口扫描、指纹识别、域名探测、旁站探测、信息泄露检测等功能。
项目功能 本系统通过 旁站探测 和 域名探测 功能对待检测网站进行资产收集,通过 端口扫描、指纹识别、目录识别 和 信息泄露检测 功能对待检测网站进行信息收集,通过收集的信息分析评估网站存在哪些安全隐患,然后使用 漏洞检测 功能揭示网站存在的漏洞以及危害等级并给出修复建议。通过这一系列的步骤,可以对 Web 应用进行全面检测,从而发现网站存在的安全隐患,因此用户可以针对相应的网络威胁做出应急响应,进而提升站点的安全性。
相关技术 名称PythonDjangoSQLiteEChartsTablerLayerDocsifySimpleUIBoostrap Table版本3.7.03.1.43.35.25.0.11.0.03.2.04.11.62021.1.11.18.2 项目首页 首页采用 ECharts 对漏洞扫描的漏洞等级、指纹识别组件、安全导航数据做了可视化图表展示,图表的风格没有统一,凑合看吧
身份验证 新用户想要使用系统功能必须要注册登录,游客只能访问部分页面。本系统有普通用户和超级用户。普通用户可以使用本系统的所有功能,但是不能登录后台管理系统。超级用户不仅可以使用所用功能还可以登录后台管理系统中所有的用户权限和数据。
设计思路: 登录和注册模块在 Django 自带的认证模块的基础上进行实现,因此在 后台-->用户与授权 就可对注册用户进行权限分配和相应管理。我们使用 Django 自带的数据库 SQLite 来存放账户信息,重构了数据库表 auth_user 表,增加了用户邮箱字段,auth_user 中密码字段是加了 salt 的 sha256 值再经过 base64 编码之后的值,保障了用户的信息安全。
登录页注册页 重设密码功能调用第三方包 django-password-reset 进行实现
步骤一步骤二 漏洞检测 该模块主要是对目标 Web 系统进行安全漏洞扫描,包括 SQL 注入、跨站脚本攻击(XSS)、弱密码、中间件漏洞。中间件漏洞扫描包括对 Weblogic、Struts2、Tomcat 、Jboss、Drupal、Nexus 的已知漏洞进行检测,用户提供目标 URL 并选择 CVE 漏洞编号。
目录
一、希尔排序原理
二、希尔排序的思路
三、希尔排序为什么快
四、如何取增量
五、源码
希尔排序是简单插入排序的一种升级版,它也是用了插入的思想,而插入排序相比冒泡排序和选择排序的效率要高的多,再将它优化为希尔排序后效率跟原来根本就不在一个级别。接下来我们就一起来学习一下希尔排序
一、希尔排序原理 希尔排序的原理是插入排序,接下来先讲一下简单插入排序
简单插入排序原理:
首先假设第一个元素就是一个小数组并且是有序的,然后把第二个元素当做新加入的元素,依次往前遍历把它放在合适的位置保持小数组有序,同理把第三个元素当做新加入的元素,依次往前遍历把它放在合适的位置保持前面的小数组有序,依次重复下去直到把大数组的最后一个元素给放置好,这有点像高等代数里的基底扩充定理,从一个小的空间覆盖到整个大的空间。
动态图:
//简单插入排序 void InsertSort(int* a, int sz) { for (int i = 0; i < sz - 1; i++) { int j = i, tmp = a[i + 1]; while (j >= 0 && tmp < a[j]) { a[j + 1] = a[j--]; } a[j + 1] = tmp; } } 如果一个数组储存数据是顺序有序的时候效率是最高的时间复杂度为O(n)。
有的时候该排序遇到一些极端的情况还是比较低效的,比如需要将一组数组进行升序排序,如果这组数据恰好是降序(即逆有序)的话就会很麻烦时间复杂度O(N^2),它需要将新元素前面的所有数据都遍历完。为了解决类似的问题就引入了希尔排序。
二、希尔排序的思路 希尔排序的原理还是插入排序,就是在做简单插入排序之前做一下预处排序,
先把数据分组,如上图分为(1),(2),(3)三组,然后分别对这三组进行简单插入排序,这是一次预排序。
那么这三组是如何分出来的呢?主要是涉及到一个增量的问题,如上图的增量是3,在取第(1)组元素时每隔3个元素取一次,第(2)第(3)组同样,直到把每个元素都取到。
排完上面三组后继续减小增量分组进行简单插入排序,比如排完以3为增量的三组后,再把增量变为2分为二组,最后当增量为1的时候相当于对整个大组做了一个简单插入排序,排完这一趟后这个数组就有序了,希尔排序结束。
看完这篇文章,你可以了解到安卓手机如何远程控制安卓手机,以及苹果手机如何远程控制安卓手机。
如果想要用安卓手机远程管控苹果手机,或者苹果手机远程管控另一台苹果手机,请点击查看视频《手机远程管控另一台手机的全新使用教程(iOS版)》。
被控端的设备条件与操作步骤 安卓7.0及以上版本的手机或平板按照下面的步骤操作,都可以成为被控端。
步骤1,在手机和电脑都安装软件AirDroid并且登录账号。然后准备一条USB数据线。
下载AirDroid个人版 | 远程控制安卓手机软件下载下载AirDroid个人版进行文件传输和管理、远程控制安卓设备、投屏等。https://www.airdroid.cn/download/airdroid-personal/?utm_source=CSDN&utm_medium=article240625&utm_campaign=luke
AirDroid 个人版价格 | 在线购买会员AirDroid 个人版,为Android设备提供远程控制、跨设备文件传输等功能。https://www.airdroid.cn/pricing/airdroid-personal/?utm_source=CSDN&utm_medium=article240625&utm_campaign=luke
步骤2,打开手机上的AirDroid,点击【个人-安全及远程功能设置】,打开远程控制栏的开关。
步骤3,在电脑端的AirDroid点击左侧栏第三个按钮【远程控制】,再点击中间栏第一个按钮【免Root】。
这时候就可以看到右侧栏的免Root操作,我们需要给自己的安卓手机完成免Root。
步骤4,点击【查看详情】,下滑页面找到开启USB调试的方法,根据不同厂商、不同版本,开启手机的USB调试。
步骤5,用USB数据线连接安卓手机和电脑。
如果你的手机是安卓8.0及以上系统,在弹窗中选择“仅充电”模式。这样可以避免USB连接设备失败,也可以避免拔掉USB线后免Root失效。
步骤6,在电脑端的AirDroid的免Root界面内,点击【连接】。稍等片刻,页面就会提示免Root成功。
完成免Root后,就可以远程控制这台安卓手机。注意,不要让被控手机关机,关机重启就要重新免Root,也就要再次用到电脑和数据线。
被控端设置完毕,接下来讲解控制端。
安卓控制端的操作步骤 如果控制端是安卓7.0及以上版本的手机/平板,请安装AirMirror。
步骤1,在AirMirror登录与被控端相同的账号。
下载中心 | AirMirror在此页你可找到并下载所有AirDroid软件,包括AirDroid Business、AirDroid个人版、AirDroid Cast、AirDroid Remote Support 和 AirMirror。https://www.airdroid.cn/download/?utm_source=CSDN&utm_medium=article240625&utm_campaign=luke
步骤2,点击AirMirror左下角的【设备】按钮,在列表里找到要远程控制的手机名称,点一下手机名称,就会弹出【远程控制】按钮。
步骤3,点击【远程控制】按钮,等待连接成功后,就可以用这台安卓设备远程控制另一台安卓设备。
iOS控制端的操作步骤 如果控制端是iPhone或iPad,请在safari浏览器里打开网址:web.airdroid.cn
步骤1,在web.airdroid.cn登录与被控端相同的账号。
步骤2,在弹出的设备选项里点击你即将要远程控制的那台安卓设备。
步骤3,点击【远程控制】按钮,连接成功后就可以用这台iPhone/iPad远程控制那台安卓手机。
好了,以安卓设备为被控端的手机远程控制手机操作,讲解完毕。
import cv2 import numpy as np from skimage.metrics import structural_similarity as ssim import os def is_similar(image1, image2, threshold=0.95): ''' 对图像的颜色信息敏感,能快速计算。 对图像的旋转、缩放等几何变换不敏感。 缺点: 对图像的结构、纹理等信息不敏感。 不能很好地处理图像的局部变化或噪声。 ''' # 将图像转换为灰度图像 image1_gray = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY) image2_gray = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY) # 计算直方图 hist1 = cv2.calcHist([image1_gray], [0], None, [256], [0, 256]) hist2 = cv2.calcHist([image2_gray], [0], None, [256], [0, 256]) # 归一化直方图 cv2.normalize(hist1, hist1, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX) cv2.normalize(hist2, hist2, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX) # 计算相似度 similarity = cv2.
详细解析 Java 8 Stream API 中的 flatMap 方法
可直接阅读标题三的示例
flatMap 方法是 Stream API 中的一个重要中间操作,它不仅可以将流中的每个元素转换为一个新的流,还可以将多个流合并成一个单一的流。
flatMap 方法常用于处理嵌套集合或将集合中的元素展平。
一、flatMap 方法的定义 flatMap 方法的定义如下:
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper); 这个方法接受一个 Function 类型的参数,即一个将流中每个元素转换为另一个流的函数,并返回一个包含转换后元素的新的扁平化流。
二、flatMap 方法的使用场景 flatMap 方法广泛应用于以下场景:
嵌套集合展平:将嵌套的集合转换为单一的流。一对多映射:将流中的每个元素转换为多个元素的流。 三、flatMap 方法的示例 以下是一些 flatMap 方法的使用示例,展示其在处理嵌套集合和一对多映射中的应用。
3.1 嵌套集合展平 假设有一个包含多个字符串列表的列表,我们希望将其展平为一个包含所有字符串的单一列表。
List<List<String>> nestedList = Arrays.asList( Arrays.asList("apple", "banana"), Arrays.asList("cherry", "date"), Arrays.asList("elderberry", "fig", "grape") ); List<String> flatList = nestedList.stream() .flatMap(List::stream) .collect(Collectors.toList()); System.out.println("Flat List: " + flatList); 输出结果:
目录
9.2 Hive系统架构
9.3 Hive工作原理
9.3.1 SQL语句转换成MapReduce作业的基本原理
9.3.2 Hive中SQL查询转换成MapReduce作业的过程
9.4 Hive HA基本原理
9.2 Hive系统架构 9.3 Hive工作原理 Hive执行引擎可以是MapReduce、Tez或Spark,这里只介绍MapReduce作为执行引擎时的Hive工作原理。主要包括下面两个内容:
9.3.1 SQL语句转换成MapReduce作业的基本原理 9.3.2 Hive中SQL查询转换成MapReduce作业的过程 当用户向 Hive 输入一段命令或查询时, Hive 需要与 Hadoop 交互工作来完成该操作 : Ø 驱动模块 接收该 命令或查询编译器 Ø 对该 命令或查询进行解析编译 Ø 由 优化器对 该 命令或查询进行优化计算 Ø 该 命令或查询通过执行器进行 执行 几点说明: 当启动 MapReduce 程序时, Hive 本身是不会生成 MapReduce 算法程序的 需要通过一个表示“ Job 执行计划”的 XML 文件驱动执行内置的、原生的 Mapper 和 Reducer 模块 Hive 通过和 JobTracker 通信来初始化 MapReduce 任务,不必直接部署在 JobTracker 所在的管理节点上执行 通常在大型集群上,会有专门的网关机来部署 Hive 工具。网关机的作用主要是远程操作和管理节点上的 JobTracker 通信来执行任务 数据文件通常存储在 HDFS 上, HDFS 由 名称 节点管理 9.