Spark读写MySQL数据库

Spark读写MySQL数据库 文章目录 Spark读写MySQL数据库一、读取数据库(一)通过RDD的方式读取MySQL数据库(二)通过DataFrame的方式读取MySQL数据库 二、添加数据到MySQL(一)通过RDD的方式插入数据到MySQL(二)通过RDD的方式插入数据到MySQL 2(三)使用DataFrame插入数据到MySQL 一、读取数据库 (一)通过RDD的方式读取MySQL数据库 四要素:驱动、连接地址、账号密码 import org.apache.spark.rdd.JdbcRDD import org.apache.spark.sql.SparkSession import java.sql.DriverManager /** * 使用RDD读取MySQL数据库 */ object spark_read_mysql { def main(args: Array[String]): Unit = { //创建SparkSession,作用:连接Spark val spark = SparkSession .builder() .master("local[*]") //指定运行的方式 .appName("spark_read_mysql") //程序的名字 .getOrCreate() //创建SparkContext val sc = spark.sparkContext //驱动名称 val driver = "com.mysql.cj.jdbc.Driver" //连接信息 val url = "jdbc:mysql://192.168.80.145:3306/test" //用户名 val username = "root" //密码 val password = "123456" //具体的SQL查询语句 val sql = "select * from t_user where id>=?

采用MQTT协议实现Android APP与阿里云平台的连接

前言 相信APP+单片机是很多同学毕设或者课设的模式,上学期做课设的时候用到了MQTT协议连接阿里云平台实现数据的通信,也是根据网上大佬的经验做的,中间也踩了很多坑。本文将介绍Android APP 通过MQTT协议与阿里云云平台连接的内容,希望对大家能有所帮助。 一、MQTT原理 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。 MQTT使用的发布/订阅消息模式,它提供了一对多的消息分发机制,从而实现与应用程序的解耦。 这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT Broker分发的。 在设计中,阿里云服务器作为一个消息中转站,即 下位机→MQTT Broker→云平台(流转)→MQTT Broker →上位机 二、创建APP 提示:以下非零基础可以跳过 1.创建APP项目,选择Empty Activity 2.设置UI 创建完后会有一个空白的Activity,找到res/layout目录下的的activity_main.xml文件,在这里编写UI。 这里我的UI界面仅供参考,因为项目还有其他功能,这里只讲述MQTT的连接,不需要的BUTTON控件可以自行删除。 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#078307" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="78dp" android:layout_marginTop="30dp" android:background="@color/green"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginTop="10dp" android:gravity="center" android:text="基于人脸识别的小区门禁系统" android:textColor="@color/white" android:textSize="24sp" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FAF6F6" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:gravity="center"> <ImageView android:id="@+id/m_im_1" android:layout_width="match_parent" android:layout_height="200dp" android:layout_marginLeft="

【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

文章目录 一. kafka kraft 集群介绍1. KRaft架构2. Controller 服务器3. Process Roles4. Quorum Voters5. kraft的工作原理 ing 二. 集群安装1. 安装1.1. 配置1.2. 格式化 2. 启动测试2.1. 启功节点服务2.2. 测试 本文主要介绍了 kafka raft集群架构: 与旧架构的不同点,有哪些优势,哪些问题 架构成员有哪些,怎么规划。三节点集群安装、启动与测试 一. kafka kraft 集群介绍 1. KRaft架构 在旧的架构中 Kafka集群包含多个broker节点和一个ZooKeeper 集群。如上图集群结构:4个broker节点和3个ZooKeeper节点。Kafka 集群的controller在被选中后,会从 ZooKeeper 中加载它的状态。选举controller的过程是由zookeeper自动完成的。 在新的架构中 三个 controller 节点替代三个ZooKeeper节点。 controller节点和 broker 节点运行在不同的进程中。这些controller 节点中会选择一个成为Leader。新的架构中,controller不会向 broker 推送更新,而是 broker 从 controller Leader 拉取元数据的更新信息。 尽管 controller 进程在逻辑上与 broker 进程是分离的,但它们不需要在物理上分离。即在某些情况下,部分或所有 controller 进程和 broker 进程是可以是同一个进程,即一个broker节点即是broker也是controller。 2. Controller 服务器 在KRaft模式下,通过指定某些服务器作为控制器,在Server.properties的Process.roles 参数里面配置。

Golang入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

文章目录 一、golang 简介 1. go 语言特点2. go 语言应用领域3. 使用 go 语言的公司有哪些 二、安装 golang 1. golang 下载安装2. 配置环境变量 三、golang 开发工具 1. 安装 VSCode2. 下载所需插件 四、第一个 golang 应用 1. main 包的含义2. 示例 一、golang 简介 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 中文网在线标准库文档 1. go 语言特点 天生支持并发语法简单,容易上手内置runtime,支持垃圾回收可直接编译成机器码,不依赖其他库丰富的便准库可跨平台编译部署维护成本低 2. go 语言应用领域 服务器编程开发云平台区块链分布式系统网络编程 3. 使用 go 语言的公司有哪些 Google k8s Facebook facebookgo 腾讯 蓝鲸平台 容器技术 百度 运维项目BFE 京东 消息推送系统、云存储、京东商城

【C语言】数据结构——小堆实例探究

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 导读: 我们在前面学习了单链表和顺序表,以及栈和队列。 今天我们来学习小堆。 关注博主或是订阅专栏,掌握第一消息。 1. 堆的概念及结构 现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。 1.1 什么是堆 堆是一种特殊的数据结构,它可以看做是一个完全二叉树(或者近似二叉树),其中每个节点的值都大于等于(或小于等于)其子节点的值。在一个最大堆中,根节点的值是最大的;在一个最小堆中,根节点的值是最小的。 1.2 堆的特点 堆的主要特点是:每个节点的值都大于等于(或小于等于)其子节点的值。这种特点使得堆可以快速找到最大(或最小)的元素。另外,堆还可以用于排序和优先队列等应用。 堆中兄弟节点的值之间没有关联。在堆中,节点之间的关系仅由其在树中的位置决定。 1.3 堆的结构 堆通常使用数组来实现,数组的下标代表节点在堆中的位置。根据节点在数组中的位置,可以通过简单的计算得到其父节点、左子节点和右子节点的位置。这样,在堆中插入一个新元素、删除堆顶的元素或者调整堆的结构时,只需要对数组进行简单的操作,而不需要改变整个堆的结构。 2. 堆的实现 我们需要创建两个 C文件: study.c 和 Heap.c,以及一个 头文件: Heap.h。 头文件来声明函数,一个C文件来定义函数,另外一个C文件来用于主函数main()进行测试。 堆的常见操作包括插入元素、删除堆顶元素、堆化(调整堆的结构使其满足堆的特点)等。其中,插入元素和删除堆顶元素的时间复杂度为O(logn),堆化的时间复杂度为O(nlogn)。 3. 代码实现 3.1 定义结构体 Heap.h: typedef int HPDataType; typedef struct Heap { HPDataType* a; int size; //记录数组内的有效数据 int capacity; //记录数组空间大小 }HP; 3.2 堆的初始化 Heap.h: //堆的初始化 void HeapInit(HP* php); Heap.c: //堆的初始化 void HeapInit(HP* php) { //各值初始化为0 assert(php); php->a = NULL; php->size = 0; php->capacity = 0; } 3.

【Web实战】零基础微信小程序逆向(非常详细)从零基础入门到精通,看完这一篇就够了

本文以微信小程序为例,从实战入手,讲解有关于小程序这种新型攻击面的渗透,对于了解小程序的安全性和防范措施有一定的帮助。 什么是小程序? 作为中国特有的一种程序形态,小程序在我们的日常生活中已经无处不在。腾讯、百度、阿里巴巴、字节跳动、京东等各家互联网大厂都有各自的生态平台,当然,也有快应用这种行业联盟型的生态平台。 相较于传统的APP开发,小程序的区别有(以微信举例) 微信小程序架构分析 整个小程序框架系统分为两部分:逻辑层(App Service)和 视图层(View)。小程序提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。 逻辑层 App Service 小程序开发框架的逻辑层使用 JavaScript 引擎为小程序提供开发 JavaScript 代码的运行环境以及微信小程序的特有功能。 逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。 开发者写的所有代码最终将会打包成一份 JavaScript 文件,并在小程序启动的时候运行,直到小程序销毁。这一行为类似 ServiceWorker,所以逻辑层也称之为 App Service。 在 JavaScript 的基础上,微信增加了一些功能,以方便小程序的开发: 增加 App 和 Page 方法,进行程序注册和页面注册。 增加 getApp 和 getCurrentPages 方法,分别用来获取 App 实例和当前页面栈。 提供丰富的 API,如微信用户数据,扫一扫,支付等微信特有能力。 提供模块化能力,每个页面有独立的作用域。 注意:小程序框架的逻辑层并非运行在浏览器中,因此 JavaScript 在 web 中一些能力都无法使用,如 window,document 等。 视图层 View 框架的视图层由 WXML 与 WXSS 编写,由组件来进行展示。 将逻辑层的数据反映成视图,同时将视图层的事件发送给逻辑层。 WXML(WeiXin Markup language) 用于描述页面的结构。 WXS(WeiXin Script) 是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

matlab给信号添加高斯白噪声——awgn函数

`awgn`函数是MATLAB中用于向信号添加高斯白噪声的函数。`awgn`是"Additive White Gaussian Noise"的缩写,意思是添加白噪声。 `awgn`函数是MATLAB中用于给信号添加高斯白噪声的函数。它的语法如下: y = awgn(x, snr) 其中,`x`是原始信号,`snr`是信噪比(Signal-to-Noise Ratio)。函数返回添加了噪音的信号`y`。 `snr`是以分贝(dB)为单位的信噪比值。信噪比定义为信号的平均功率与噪声的平均功率之比。较高的信噪比表示信号的功率相对于噪声更大,即噪声较小。 `awgn`函数的用法有以下几种: 1. 添加特定信噪比的高斯白噪声: y = awgn(x, snr) 这种用法可以给原始信号`x`添加指定信噪比`snr`的高斯白噪声。返回的信号`y`是原始信号和噪声的合成。信噪比越高,噪声级别就越低。 2. 添加特定信噪比范围内的随机信噪比的高斯白噪声: y = awgn(x, 'random', snr) 这种用法可以给原始信号`x`添加信噪比在`snr`范围内的随机信噪比的高斯白噪声。返回的信号`y`的信噪比在指定范围内随机变化。 3. 添加特定信噪比的高斯白噪声,并指定随机数种子: y = awgn(x, snr, 'seed', seed) 这种用法可以给原始信号`x`添加指定信噪比`snr`的高斯白噪声,并通过`seed`指定随机数种子。这样可以确保每次运行时生成的噪声是相同的。 通过调整`snr`的值,可以控制声的强度。较大的信噪比会生成较低水平的噪声,而较小的信噪比会生成较高水平的噪声。 下面是一个示例,展示了如何使用`awgn`函数给一个原始信号添加高斯白噪声: % 生成原始信号 fs = 1000; % 采样率 t = 0:1/fs:1; % 时间向量 x = sin(2*pi*50*t); % 50Hz正弦信号 % 添加高斯白噪声 snr = 10; % 信噪比为10dB y = awgn(x, snr); % 绘制图形 figure plot(t, x, 'b', t, y, 'r') legend('原始信号', '添加噪声后的信号') xlabel('时间') ylabel('幅度') 运行以上代码,可以观察到添加噪声后的信号和原始信号的对比效果。

Oracle 解决ORA-00257 Archiver error 报错

Oracle 解决ORA-00257 Archiver error 报错 日期: 2023-12-11 作者: Tingy, H 文章目录 Oracle 解决ORA-00257 Archiver error 报错一、问题描述二、原因分析三、解决步骤1. 登录 Linux 用户2. 切换到 Oracle 用户3. 以 sysdba 登录数据库4. 清理 Oracle Home 目录所在磁盘空间4.1 重新切回 root 用户4.2 查看磁盘挂载盘符空间4.3 删除 Oracle 的 trace 文件 5. 手动删除数据库归档日志5.1 切换到 Oracle 用户5.2 以 sysdba 登录数据库并修改检查点5.3 以 Oracle 用户执行删除归档命令 6. 再次登录 Oracle 数据库 一、问题描述 订单投资交易环境进行 impdb 数据泵恢复数据,执行到一半,报错终止。 系统弹出提示: ORA-00257: Archiver error. Connect AS SYSDBA only until resolved. Oralce 安装在 Linux 机器上。

重磅!2023中国高校计算机大赛-人工智能创意赛结果出炉

目录 中国计算机大赛-人工智能创意赛现场C4-AI大赛颁奖及留影800个AI应用?这届大学生真能“搞事情”AI原生时代,百度要再培养500万大模型人才 中国计算机大赛-人工智能创意赛现场 12月8日,杭州,一位“白发老人”突然摔倒在地,此时,身旁的机器人已经识别出“老人”摔倒的场景,自动电话联系了家人和医生……这一幕发生在中国计算机大赛-人工智能创意赛(以下简称“C4-AI大赛”)的现场。原来,这是哈尔滨工业大学(威海)王子康带着他的AI作品,在为C4-AI大赛决赛做“路演”。 王子康在C4-AI大赛现场演示AI应用 C4-AI大赛颁奖及留影 本次大赛共计3688支队伍参赛,最终来自浙江大学、武汉大学、哈尔滨工业大学、北京理工大学、郑州大学、西南民族大学、海南大学、中南大学等高校的55支队伍摘得赋能组、创新组、航天组三个赛道的奖项,浙江大学发展委员会副主席叶民教授、国际工程教育学会主席Luis、浙江大学上海高等研究院常务副院长吴飞、浙江大学求是特聘教授何钦铭、百度高校合作部副总监计湘婷等竞赛评委代表为选手颁奖。 C4-AI大赛由全国高等学校计算机教育研究会主办,百度公司、浙江大学联合承办,探月与航天工程中心、嫦娥奔月航天科技(北京)有限责任公司作为合作单位,已连续举办六届。本次颁奖在第十八届科教发展战略国际研讨会上举办,国内外专家学者齐聚一堂,共同见证。大会由教育部高教司、科技部战略规划司、中国高等教育学会支持,浙江大学主办。 C4-AI大赛55支决赛团队及评委留影 800个AI应用?这届大学生真能“搞事情” 本届大赛共吸引来自463所高校共3688支队伍参赛,选手们基于百度文心大模型、百度飞桨深度学习开发平台等打造了近800个创意AI应用,覆盖健康、交通、农林业、工业、航天等十余个领域。 “身边老人的遭遇是促使我们研发这个应用的最大原因”, “守护天年智慧老年伴侣”项目的队长王子康告诉记者。 王子康一位亲戚家的老人,独自住在乡下。一次意外摔倒,因无人发现,差点酿成惨剧。“这次事件给了我很大的触动,老龄化加剧,年轻人工作忙,未来可能会有更多老人面临无人照看的困境”,王子康说,“我是学计算机出身的,就想做个应用帮助老人和他们的子女。” 经过半年的努力,“守护天年智慧老年伴侣”AI应用最终研发完成。它是融合了移动端、智能手表、云服务器的主动关怀系统,可以实现医疗咨询、语音交互、家电控制、健康检测和预警系统等。例如,该应用具备自动跟随、摔倒检测功能,一旦发现老人摔倒,能立刻通知子女和医院,摔倒的信息和图像还可以通过 App推送给子女。为了确保能精准识别老人摔倒的场景,王子康和和他的队友已经“假摔”上千次。 王子康及团队在实验室“假摔”测试机器人 “我们的应用还能聊天、讲故事、讲笑话,给老人解闷儿。”项目成员刘奕舟补充道。通过在百度智能云千帆平台调用文心大模型API,该应用具备了与老人交互、问答的能力,得以满足老人的情感需求。 今年以来,运用大模型开发应用已经成为业界和学界共识。在本届C4-AI大赛,像“守护天年智慧老年伴侣”一样,基于文心大模型等开发的有价值、有创意的AI应用不在少数。 摘获赋能组一等奖的“眼部疾病智能诊断系统”由中南民族大学的两位学生提出。该应用仅需一部智能手机,即可代替专业医疗影像设备,实现专家级精度诊断七种常见眼部疾病,为帮助眼病患者提供了新的解决思路。 针对传统航天器故障诊断专家库缺乏多级故障耦合及涌现效应的系统分析的问题,哈尔滨工业大学的三位学生,对文心大模型进行精调,计划构建一个更为系统、全面的航天器故障诊断知识库,为民生和科技领域提供便利。 来自武汉大学的学生们, 将AI与传统古文结合,采用跨模态生成技术和大模型,实现图文之间的相互转化和综合利用,设计出功能丰富的综合性古文创作平台。 参赛选手在交流和演示自己的AI创意应用 AI原生时代,百度要再培养500万大模型人才 山东大学大三学生开发的AI应用“绘世界”同样让大赛评委和观众直呼神奇。作为自闭症儿童多模态交互绘画治疗系统,“绘世界”运用交互式投影技术,融合AI+绘画,帮助自闭症儿童认识世界、了解世界。“我们至少见了300多个孩子,去了解他们的需求,获取他们的反馈。”该团队队长齐笑一同学介绍道。 齐笑一在调试“绘世界”的系统 90后妈妈宋女士带着女儿现场体验了这款应用。宋女士在投影板上随手画了飞机、星星、篮球等图案,系统便能通过AI将其加工出动态效果,还能用接入的文心一言快速生成故事,语音放给孩子听。 90后妈妈带着孩子感受AI黑科技 值得一提的是,在自闭症儿童使用时,“绘世界”能通过各项数据指标,进行辅助治疗。如通过绘画速度、流畅度、线条连贯性、线条平滑度等,分析儿童的行动能力,判断其病情状况。通过绘画素材的类别、绘画习惯偏好与色彩等,反映儿童的心理状况以及兴趣偏好。 通过简单的交互,“绘世界”就能让绘画动起来,还能根据画中内容生成故事 “最难的还是技术问题,飞桨帮了我们很多”,在得知获得创新组二等奖后,齐同学感慨道,基于飞桨,“绘世界”团队解决了让静态图像动起来、红外触控等核心问题。 据了解,百度飞桨作为我国自主研发的产业级深度学习开源开放平台,集深度学习框架、产业级模型库、丰富的开发套件和工具组件于一体,让人工智能技术可以高效便捷地应用于各行各业。截至2023年8月,飞桨平台上已凝聚800万开发者,服务22万家企事业单位。作为开发者生态的重要部分,高校开发者通过百度举办的技术竞赛、培训等活动聚沙成塔,将天马行空的创意付诸实现。 浙江大学上海高等研究院常务副院长吴飞、浙江大学求是特聘教授何钦铭、百度高校合作部副总监计湘婷在颁奖典礼上勉励大学生 百度在2020年提出5年为全社会培养500万AI人才,截至目前,已经培养420万AI人才。随着大模型成为人工智能发展的热点方向,百度发布了百度人才培养星河计划,将为社会再培养500万大模型人才。

Python之Tkinter包的filedialog模块介绍

Python之Tkinter包的filedialog模块介绍 在程序运行该过程中,当你需要手动选择文件或手动选择文件存储路径时,就需要用到tkinter库中filedialog提供的函数。tkinter的filedialog模块提供了一个简单的对话框界面,用于让用户选择文件或目录。它通常与tkinter一起使用,用于创建图形用户界面(GUI)应用程序。Tkinter库是python默认的GUI库,它是python的内置库不需要安装。 官方介绍见https://docs.python.org/zh-cn/3/library/dialog.html#module-tkinter.filedialog filedialog模块包含了一些常用的对话框,包括: 1. askopenfilename函数:打开文件对话框,用于选择一个文件,返回文件路径,类型为字符串。语法格式如下:askopenfilename(**options),其中**options是可选的关键字参数。 2. askopenfilenames函数:打开文件对话框,用于选择多个文件,返回一个元组,包括所有选择文件的路径。语法格式如下:askopenfilenames(**options),其中**options是可选的关键字参数。 3. asksaveasfilename函数:保存文件对话框,用于选择文件的保存路径和文件名。语法格式如下:asksaveasfilename(**options) ,其中**options是可选的关键字参数。 4. askdirectory函数:选择目录对话框,用于选择一个目录,返回目录路径。语法格式如下:askdirectory(**options) ,其中**options是可选的关键字参数。 这些对话框提供了用户友好的界面,使得用户可以方便地浏览文件系统,选择文件或目录。在tkinter应用程序中,可以使用filedialog模块来创建这些对话框,以便用户可以与文件系统进行交互。 **options关键字参数常用的有: ☆ title 指定文件对话框的标题栏文本。 ☆ defaultextension 指定文件的后缀,例如:defaultextension='.jpg',那么当用户输入一个文件名'Python'的时候,文件名会自动添加后缀为'Python.jpg' 。注意:如果用户输入文件名包含后缀,那么该选项不生效。允许使用 “*” 通配符。 ☆ filetypes 指定筛选文件类型的下拉菜单选项,该选项的值是由二元组构成的列表,每个二元组是由(类型名,后缀)构成,例如:filetypes=[('文本', '.txt'), ('栅格', '.tif'), ('动图', '.gif')]。(看情况,当文件夹中文件很多且类型很多,建议给出该参数) ☆ initialdir 指定打开保存文件的默认路径,默认路径是当前文件夹。 ☆ multiple 是否确定选择多个文件,if true user may select more than one file。 例如 选择一个文件: filedialog.askopenfilename(title='请选择一个文件', initialdir=r'D:\数据\测试数据', filetypes=[("文本文档", ".txt"), ('Excel', '.xls .xlsx'), ('All Files', ' *')], defaultextension='.tif', multiple=True) 选择多个文件: filedialog.askopenfilename(title='请选择多个文件', initialdir=r'D:\数据\测试数据', filetypes=[( "文本文档", ".txt"), ('Excel', '.

合成孔径雷达(SAR)RD算法点目标成像与分析Matlab仿真

文章目录 一、概述二、仿真思路1.概述2.高分3号简介与基本参数 三、回波生成1.卫星运行速度计算2.几何3.信号参数与时间轴生成(1)信号参数(2)时间轴生成 4.点目标回波生成(1)点目标坐标设置(2)回波生成 四、低斜视角处理1.距离压缩2.方位向傅里叶变换3.距离徙动校正4.方位压缩5.升采样(1)总体步骤(2)升采样(频域补零)(3)剖面 五、大斜视角处理1.距离压缩->二次距离压缩(改进)2.方位向傅里叶变换3.距离徙动校正->引入新的徙动量(改进)3.方位压缩->引入新的滤波器(改进)4.升采样结果 六、完整代码1.低斜视角处理2.大斜视角处理 一、概述 本文旨在基于Ian G. Cumming的《合成孔径雷达成像算法与实现》中第六章的距离多普勒算法进行Matlab仿真,信号参数基于高分3号SAR卫星参数。本文将从基本的回波生成概念开始梳理,包含基本的原理讲解与代码讲解,以及一些绘制的插图。在数据处理方法上,从基于低斜视角的数据处理开始,扩展到高斜视角的数据处理。 需要注意的是,本文不会像百科全书一样列举所有需要的知识,因此至少要完成了书本的前4章学习,了解基本的知识点。 另外:作者也是SAR成像的初学者,代码和讲解当中也有许多瑕疵的存在,仅供读者参考 二、仿真思路 1.概述 所谓点目标仿真,就是在一个假设的场景内,对三个“点”发出的回波信号进行模拟计算,而这三个点的位置和它本身的几何形状会影响回波信号的包络与相位,我们收到回波后即可进行数据处理,将其成像出来。 基本的仿真包括两个阶段: 回波生成 距离向包络Wr方位向包络Wa相位Phase 数据处理 基于小斜视角的数据处理改进后可用于处理大斜视角(可以认为是升级版),但是同样的,处理大斜视角的算法无法再应用于处理小斜视角小斜视角的步骤如下图: 勘误:图中的256与320应分别为Naz与Nrg,下文再解释。 那么对于点目标仿真,我们需要在回波生成时,针对不同的点目标计算R0、Rη和波束中心穿越时刻Rηc;而在数据处理时,只能使用原点或某个点的参数,进行数据处理->也就是说在数据处理阶段只能使用一个点的R0或者Rηc。 这也就是RD算法的局限性所在,原点或近距点的成像效果较好,而远距点的成像效果就差一些。 2.高分3号简介与基本参数 高分三号卫星是中国高分专项工程的一颗遥感卫星,为1米分辨率雷达遥感卫星,也是中国首颗分辨率达到1米的C频段多极化合成孔径雷达(SAR)成像卫星,由中国航天科技集团公司研制。 已知的基本参数如下: %% GF3系统参数 % 几何参数 H = 755e3; % 轨道高度 % 天线参数 La = 15; % 天线尺寸 % 姿态参数(针对坐标原点的点A) phi = 20*pi/180; % 俯仰角-20° - +20° incidence= 20.5*pi/180; % 入射角 % 信号参数 c =3e8;%光速 f0 = 5.4e9;%雷达工作频率 Tr = 40e-6; % 距离向周期 Br = 3*5.

Python 处理 Excel 的14个常用操作详解

更多资料获取 📚 个人网站:ipengtao.com 在数据处理和分析的领域中,Excel是一种被广泛使用的工具。然而,通过Python处理Excel,能够更好地实现自动化和批量处理。本文将深入探讨Python中处理Excel的14个常用操作,并提供详尽的示例代码,以助您更全面地掌握这些技能。 1. 读取 Excel 文件 使用 pandas 库读取 Excel 文件是一种常见的数据处理操作,它能够快速加载 Excel 中的表格数据,并将其转换为数据框架(DataFrame)。以下是一个简单的示例代码,演示如何使用 pandas 读取 Excel 文件。 import pandas as pd # 读取 Excel 文件 file_path = 'example_data.xlsx' df = pd.read_excel(file_path) # 打印读取的数据框架 print("读取的数据框架:") print(df) 在这个例子中,使用 pd.read_excel 函数读取了一个名为 ‘example_data.xlsx’ 的 Excel 文件。读取后,数据被存储在一个 pandas 数据框架中。 2. 写入 Excel 文件 在处理数据后,将结果写入新的 Excel 文件是一项常见的任务。使用 pandas 库,可以将处理过的数据写入新的 Excel 文件。以下是一个简单的示例代码,演示如何使用 pandas 将数据写入 Excel 文件。 import pandas as pd # 创建示例数据框架 data = { 'Product': ['A', 'B', 'C'], 'Price': [25.

头歌实践教学平台Python-Python第七章集合与字典作业

第1关 字符串去重排序 n = input() a = list(set((n))) a.sort() a = ''.join(a).strip() print(a) 第2关 列表去重 n = input().split(',') a = [] [a.append(i) for i in n if i not in a] print(a) 第3关 猜年龄 dig = (1, 2, 3, 4, 5, 6, 7, 8, 9, 0) age1 = 0 age2 = 0 while age1 **3 < 10000: age1 += 1 while True: b = age2**4 if b >= 100000 and b < 1000000: break age2 += 1 for i in range(age2,age1): num1 = i**3 num2 = i**4 set1 = set() for j in str(num1): set1.

Stable Diffusion 跑通总结

记录了自己跑通Stable Diffusion的过程和踩过的坑,目前只是初步跑了一下,没有很深入的使用代码,希望能有一些参考价值。 在Windows系统运行,需要提前装好Conda 一、下载代码和模型 1、下载代码: 代码下载:代码地址 或者 git clone https://github.com/CompVis/stable-diffusion.git 2、下载预训练模型: a.下载sd-v1-4.ckpt模型 地址:模型地址 按照下列顺序点击下载模型 红圈模型有4G,下面的模型有7G,自行选择下载 在stable-diffusion-main\models\ldm路径下创建文件夹stable-diffusion-v1,将模型放在里面将模型名称改为model.ckpt b.下载clip-vit-large-patch14模型 模型地址 下载红框内文件。 放置在路径stable-diffusion-main\openai\clip-vit-large-patch14下,自己创建路径。 c.下载safety_checker模型 模型地址 依旧下载红框内文件 文件存放在stable-diffusion-main\CompVis\stable-diffusion-safety-checker下,自行创建路径。将这次下载的safety_checker_config文件命名为config.json将上一块中下载的preprocessor_config.json文件粘贴过来 二、配置环境 使用conda配置环境,在Anaconda Prompt下指向stable-diffusion-main文件夹,运行: conda env create -f environment.yaml 报错: Installing pip dependencies: - Ran pip subprocess with arguments: ['C:\Users\neals\.conda\envs\ldm\python.exe', '-m', 'pip', 'install', '-U', '-r', 'I:\tmp\sd\stable-diffusion-main\condaenv.wws0680u.requirements.txt', '--exists-action=b'] Pip subprocess output: Obtaining taming-transformers from git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers (from -r I:\tmp\sd\stable-diffusion-main\condaenv.wws0680u.requirements.txt (line 17)) Cloning https://github.com/CompVis/taming-transformers.git (to revision master) to i:\tmp\sd\stable-diffusion-main\src\taming-transformers Pip subprocess error: ERROR: Command errored out with exit status 128: git clone -q https://github.

MySQL:1118 - Row size too large(行大小不能超过 65535 问题)

文章目录 问题原因问题复现环境 & 版本复现过程 解决方案调整列大小调整列类型 个人简介 问题 当我们创建表或新增字段时,我们可能遇到下面这个问题: 1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs 大概的意思是说:行的大小过大,最大限制为 65535 ,其中不包括 TEXT or BLOB 类型,建议调整一些列为 TEXT or BLOB 类型。下面我们来具体分析一下这个问题,并探讨如何解决。 原因 MySQL 行大小最大限制为65535,不包括TEXT、BLOB。 注:如果未启用严格 SQL 模式, VARCHAR长度规范大于 65535 的列将转换为 TEXT, VARBINARY长度规范大于 65535 的列将转换为 BLOB。否则,在这两种情况下都会发生错误。

关于adb devices无法找到设备:error: device not found 的解决办法

一、此类问题出现的原因,一般是设备所使用的端口被占用,需要找到被占用的端口。 二、操作步骤 1、打开命令窗口。 2、输入adb shell 会发现提示error:device not found! 3、输入adb kill-server ,然后启动adb start-server 4、输入 netstat -ano | findstr “5037”,找到 TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING xxxxx 端口 5、这样就找到了所被占用的端口,将其kill掉。输入 taskkill/f /pid xxxxx 6、再次输入adb shell,即可完成操作,将设备成功连接上。 7、结果显示还是error:device not found 三、原因:原来是adb没有获得设备USB的vender ID,从而无法识别出安卓设备。 四、 解决办法 1、在设备管理器中找到ADB Interface 然后双击点开,如图: 2、点击详细信息,显示如图,没有设备信息。再点击事件,取设备的vender ID,如图,我的ID是2D95。 3、接着,在电脑C盘找到.android文件夹,在文件夹下找到adb_usb.ini文件,如果没有请新建。然后把0x2D95(就是0xVID(0x2D95))的数值写入到adb_usb.ini 里面。 4、点击保存,重启电脑,即可解决。

adb版本不一致,使用adb devices查看设备:adb server version (36) doesn‘t match this client (41); killing...已解决1207

问题:andriod.sdk的adb(客户端)与(服务端)模拟器的adb版本不一致,导致连接失败 使用adb devices查看设备是如下提示: C:\Users\admin>adb devices adb server version (36) doesn't match this client (41); killing... * daemon started successfully List of devices attached 错误分析:服务器的版本是36,客户端是41,客户端和服务端adb版本不一致,通俗讲:我电脑adb sdk安装的是41版本,然后adb devices命令中查询到设备(模拟器)为版本为36的版本 解决方法:复制客户端(PC)的adb到服务器端(模拟器),高版本覆盖低版本。 查询adb-sdk安装路径:命令 adb version 步骤1:先备份服务端的adb,路径:E:\yeshen\Nox\bin的adb.exe、nox_adb.exe文件 步骤2:复制客户端(PC电脑)的andriod.sdk安装路径(41),到服务器端(模拟器)安装目录,夜神模拟器下有两个adb Adb-sdk安装目录:Installed as C:\Android\android-sdk\platform-tools\adb.exe模拟器安装目录:E:\yeshen\Nox\bin实际操作:复制andriod-sdk安装目录下的adb.exe,粘贴并替换在模拟器安装目录“E:\yeshen\Nox\bin”下。 步骤3:客户端(andriod.sdk安装路径)adb.exe到其他目录下,重命名adb.exe为nox_adb.exe,并复制粘贴至服务端安装目录E:\yeshen\Nox\bin下。 例如:复制adb-sdk目录下的adb.exe到桌面,修改“adb.exe”为nox_adb.exe,并复制粘贴至模拟器安装目录:E:\yeshen\Nox\bin下 步骤4:验证 查看设备信息,命令输入adb devices,一下显示为正常 C:\Users\admin>adb devices List of devices attached 127.0.0.1:62001 offline 启动模拟器输入命令。

【hive】列转行—collect_set()/collect_list()/concat_ws()函数的使用场景

文章目录 一、collect_set()/collect_list()二、实际运用把同一分组的不同行的数据聚合成一个行用下标可以随机取某一个聚合后的中的值用‘|’分隔开使用collect_set()/collect_list()使得全局有序 一、collect_set()/collect_list() 在 Hive 中想实现按某字段分组,对另外字段进行合并,可通过collect_list()或者collect_set()实现。 collect_set()函数与collect_list()函数:列转行专用函数,都是将分组中的某列转为一个数组返回。有时为了字段拼接效果,多和concat_ws()函数连用。 collect_set()与collect_list()的区别: collect_list()函数 - - 不去重collect_set()函数 - - 去重 有点类似于Python中的列表与集合。 二、实际运用 创建测试表及插入数据 drop table test_1; create table test_1( id string, cur_day string, rule string ) row format delimited fields terminated by ','; insert into test_1 values ('a','20230809','501'),('a','20230811','502'),('a','20230812','503'),('a','20230812','501'),('a','20230813','512'),('b','20230809','511'),('b','20230811','512'),('b','20230812','513'),('b','20230812','511'),('b','20230813','512'),('b','20230809','511'),('c','20230811','512'),('c','20230812','513'),('c','20230812','511'),('c','20230813','512'); 把同一分组的不同行的数据聚合成一个行 举例1:按照id,cur_day分组,取出每个id对应的所有rule(不去重)。 select id,cur_day,collect_list(rule) as rule_total from test_1 group by id,cur_day order by id,cur_day; 举例2:按照id,cur_day分组,取出每个id对应的所有rule(去重)。 select id,cur_day,collect_set(rule) as rule_total from test_1 group by id,cur_day order by id,cur_day; 用下标可以随机取某一个 select id,cur_day,collect_list(rule)[0] as rule_one from test_1 group by id,cur_day order by id,cur_day; select id,cur_day,collect_set(rule)[0] as rule_one from test_1 group by id,cur_day order by id,cur_day; 聚合后的中的值用‘|’分隔开 select id,cur_day,concat_ws('|',collect_list(rule)) as rule_total from test_1 group by id,cur_day order by id,cur_day; select id,cur_day,concat_ws('|',collect_set(rule)) as rule_totalfrom test_1 group by id,cur_day order by id,cur_day; 使用collect_set()/collect_list()使得全局有序 现在需求:严格按照同一个id进行分组,规则按时间升序排序,使用collect_list()将时间与规则按升序排序且一 一 对应展示出来。

详解数据仓库和数据集市:ODS、DW、DWD、DWM、DWS、ADS

一、数据流向 二、应用示例 三、何为数仓DW Data warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经大量存在的情况下,它是一整套包括了etl、调度、建模在内的完整的理论体系。数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。目前行业比较流行的有:AWS Redshift,Greenplum,Hive等。数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包含:清洗、转义、分类、重组、合并、拆分、统计等 主要特点 面向主题[附录] 操作型数据库组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通过与多个操作型信息系统相关。集成 需要对源数据进行加工与融合,统一与综合在加工的过程中必须消除源数据的不一致性,以保证数据仓库内的信息时关于整个企业的一致的全局信息。(关联关系)不可修改 DW中的数据并不是最新的,而是来源于其他数据源数据仓库主要是为决策分析提供数据,涉及的操作主要是数据的查询与时间相关 处于决策的需要数据仓库中的数据都需要标明时间属性 与数据库的对比 DW:专门为数据分析设计的,涉及读取大量数据以了解数据之间的关系和趋势数据库:用于捕获和存储数据 四、为何要分层 数据仓库中涉及到的问题: 为什么要做数据仓库?为什么要做数据质量管理?为什么要做元数据管理?数仓分层中每个层的作用是什么?…... 在实际的工作中,我们都希望自己的数据能够有顺序地流转,设计者和使用者能够清晰地知道数据的整个声明周期,比如下面左图。但是,实际情况下,我们所面临的数据状况很有可能是复杂性高、且层级混乱的,我们可能会做出一套表依赖结构混乱,且出现循环依赖的数据体系,比如下面的右图。 为了解决我们可能面临的问题,需要一套行之有效的数据组织、管理和处理方法,来让我们的数据体系更加有序,这就是数据分层。数据分层的好处: 清晰数据结构:让每个数据层都有自己的作用和职责,在使用和维护的时候能够更方便和理解复杂问题简化:将一个复杂的任务拆解成多个步骤来分步骤完成,每个层只解决特定的问题统一数据口径:通过数据分层,提供统一的数据出口,统一输出口径减少重复开发:规范数据分层,开发通用的中间层,可以极大地减少重复计算的工作 五、数据分层 每个公司的业务都可以根据自己的业务需求分层不同的层次;目前比较成熟的数据分层:数据运营层ODS、数据仓库层DW、数据服务层ADS(APP)。 数据运营层ODS 数据运营层:Operation Data Store 数据准备区,也称为贴源层。数据源中的数据,经过抽取、洗净、传输,也就是ETL过程之后进入本层。该层的主要功能: ODS是后面数据仓库层的准备区为DWD层提供原始数据减少对业务系统的影响 在源数据装入这一层时,要进行诸如去噪(例如有一条数据中人的年龄是 300 岁,这种属于异常数据,就需要提前做一些处理)、去重(例如在个人资料表中,同一 ID 却有两条重复数据,在接入的时候需要做一步去重)、字段命名规范等一系列操作。但是为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据也可以,根据业务具体分层的需求来做。这层的数据是后续数据仓库加工数据的来源。数据来源的方式: 业务库 经常会使用sqoop来抽取,例如每天定时抽取一次。实时方面,可以考虑用canal监听mysql的binlog,实时接入即可。埋点日志 日志一般以文件的形式保存,可以选择用flume定时同步可以用spark streaming或者Flink来实时接入kafka也OK消息队列:即来自ActiveMQ、Kafka的数据等。 数据仓库层 数据仓库层从上到下,又可以分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。 数据细节层DWD 数据细节层:data warehouse details,DWD(数据清洗/DWI)该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。为了提高数据明细层的易用性,该层通常会才采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联。 数据中间层DWM 数据中间层:Data Warehouse Middle,DWM该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。简答来说,对通用的核心维度进行聚合操作,算出相应的统计指标。 数据服务层DWS 数据服务层:Data Warehouse Service,DWS(宽表-用户行为,轻度聚合)该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。 用户行为,轻度聚合对DWD主要对ODS/DWD层数据做一些轻度的汇总。 数据应用层ADS 数据应用层:Application Data Service,ADS(APP/DAL/DF)-出报表结果该层主要是提供给数据产品和数据分析使用的数据,一般会存放在ES、Redis、PostgreSql等系统中供线上系统使用;也可能存放在hive或者Druid中,供数据分析和数据挖掘使用,比如常用的数据报表就是存在这里的。 事实表 Fact Table 事实表是指存储有事实记录的表,比如系统日志、销售记录等。事实表的记录在不断地增长,比如电商的商品订单表,就是类似的情况,所以事实表的体积通常是远大于其他表。 维表层Dimension(DIM) 维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联,相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。维度表主要是包含两个部分: 高基数维度数据:一般是用户资料表、商品资料表类似的资料表,数据量可能是千万级或者上亿级别低基数维度数据:一般是配置表,比如枚举字段对应的中文含义,或者日期维表等;数据量可能就是个位数或者几千几万。 临时表TMP 每一层的计算都会有很多临时表,专设一个DWTMP层来存储我们数据仓库的临时表

如何使用labelme中的AI多边形(AI-polygon)标注

文章目录 1.创建labelme虚拟环境2.下载AI标注模型3.修改配置文件4.愉快地使用labelme的AI标注工具 1.创建labelme虚拟环境 (1)创建基础环境并激活 conda create -n labelme python=3.8 conda activate labelme (2)安装labelme pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple/ numpy (3)使用labelme启动 如果是第一次装labelme,打开图像路径,右键图像后选择Create AI-Polygon,软件会自动下载并安装AI标注模型,我的下载速度太慢,导致第一次下载失败,最后选择了手动安装。 2.下载AI标注模型 可以选择在官网上下载AI自动标注模型下载地址 如果连不到外网,可以通过迅雷网盘或者百度网盘提取模型 迅雷网盘链接:https://pan.xunlei.com/s/VNkyiDkG9ORZRr7Mhx4ru3I8A1# 提取码:2dbf 百度网盘链接:https://pan.baidu.com/s/11xrWH4p_auHl-cKYjZ899Q?pwd=lg1j 提取码:lg1j 在anaconda虚拟环境中找到E:\programFiles\anaconda3\envs\labelme\Lib\site-packages\labelme此路径,将下载好的文件放入此文件夹下。 3.修改配置文件 (1)找到"E:\programFiles\anaconda3\envs\labelme\Lib\site-packages\labelme\ai\__init__.py"文件,并修改里面的模型路径。 # flake8: noqa import logging import sys from qtpy import QT_VERSION __appname__ = "labelme" # Semantic Versioning 2.0.0: https://semver.org/ # 1. MAJOR version when you make incompatible API changes; # 2. MINOR version when you add functionality in a backwards-compatible manner; # 3.