bash: nvcc: command not found

问题描述 执行nvidia-smi正常,但是执行nvcc -V报bash: nvcc: command not found,这会导致你需要进行编译代码时,由于找不到NVIDIA ® Cuda compiler driver而报错。 解决方案 如果你的镜像基于runtime,则只包含运行时环境,不包含cuda编译环境,如pytorch/pytorch:2.3.1-cuda12.1-cudnn8-runtime,可以考虑把父镜像修改成pytorch/pytorch:2.3.1-cuda12.1-cudnn8-devel。 如果你无法修改父镜像,可以在当前容器中安装cuda # 网络不行则需要配置代码,地址去:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ cp /etc/apt/sources.list /etc/apt/sources.list.bak cat <<EOF > /etc/apt/sources.list deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb http://mirrors.

Hadoop学习

-1. 使用rsa加密技术,生成公钥和私钥,一路回车即可 01 02 03都要生成 [root@tianqinglong01 ~]# cd ~ [root@tianqinglong01 ~]# ssh-keygen -t rsa -2.进入~/.ssh目录下,使用ssh-copy-id命令 (01 02 03 都一样) [root@tianqinglong01 ~]# cd ~/.ssh [root@tianqinglong01 .ssh]# ssh-copy-id root@tianqinglong02 输入02密码 [root@tianqinglong01 .ssh]# ssh-copy-id root@tianqinglong03 输入03密码 -3.进行验证 [root@tianqinglong01 .ssh]# ssh tianqinglong #发现直接登陆过来了,不需要密码 注意:三台机器提前安装好的情况下,需要同步公钥文件。如果使用克隆技术。那么使用同一套密钥对就方便多了。 5.时间同步 1 选择集群中的某一台机甚作为时间服务器。tianqinglong01 2 保证这台服务第安装了ntp.x86_64。 3 保证ntpd服务运行…- — [root@tianqinglong01 .ssh]# yum install ntp -y [root@tianqinglong01 .ssh]# vim /etc/ntp.conf Hosts on local network are less restricted. restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # 添加集群中的网络段位 restrict 192.

链表经典面试题--链表修至圆满

目录 1.环形链表 a.为什么一定会相遇,有没有可能会错过,永远追不上?请证明 b.slow一次走1步,fast走3步 4步 5步 n步还一定追得上吗 请证明 2.环形链表2 3.随机链表的复制 1.环形链表 141. 环形链表 - 力扣(LeetCode) 思路: 快慢指针,慢指针走一步,快指针走两步 进环以后快指针开始追击慢指针 当快指针能追上慢指针就证明链表带环 bool hasCycle(struct ListNode *head) { struct ListNode*fast=head,*slow=head; while(fast&&fast->next) { slow=slow->next; fast=fast->next->next; if(fast==slow) { return true; } } return false; } 面试问题: a.为什么一定会相遇,有没有可能会错过,永远追不上?请证明 假设slow进环时,fast跟slow距离时N,fast追击slow的过程中距离变化如下: N N-1 N-2 ... 2 1 0 每追击一次,距离缩小1,距离为0就是追上了 b.slow一次走1步,fast走3步 4步 5步 n步还一定追得上吗 请证明 假设slow进环时,fast跟slow距离时N, fast追击slow得过程只距离变化如下: 偶数 奇数 N N N-2 N-2 N-4 N-4 ... .... 4 3

智能化升级 —— 巧妙运用AI工具,提升职场与学习中的个人竞争力

文章目录 一、AI工具在工作中的深度应用二、AI工具在学习中的显著优势三、如何高效利用AI工具《实战ChatGPT:应用AI工具高效工作与学习》编辑推荐内容简介作者简介目录前言获取方式 随着人工智能(AI)技术的蓬勃发展,AI工具已经深入渗透到我们的日常工作和学习中,为我们带来了前所未有的便利和效率。从复杂的数据分析到个性化的学习推荐,AI工具正在逐渐改变我们的工作和学习模式,让我们能够更加高效地完成任务,提升个人竞争力。 一、AI工具在工作中的深度应用 在现代职场中,AI工具的应用已经无处不在。在项目管理中,AI规划工具能够根据任务优先级和资源分配情况,自动生成合理的工作计划,确保项目按时完成。在市场营销中,AI分析工具能够深入挖掘用户数据,帮助企业了解市场需求和消费者行为,为制定营销策略提供有力支持。在客户服务领域,AI客服系统能够智能回复用户问题,提供24小时不间断的服务,极大地提升了客户满意度。 此外,AI工具还在创意设计、编程开发等领域发挥着重要作用。AI辅助设计软件能够根据用户输入的需求和风格,自动生成符合要求的设计方案;AI编程助手能够自动补全代码、检测错误,并给出优化建议,提高开发效率。这些AI工具的应用,不仅减轻了工作负担,还为企业带来了更多的商业机会和创新灵感。 二、AI工具在学习中的显著优势 在学习领域,AI工具同样展现出巨大的优势。智能学习平台能够根据学生的学习情况、兴趣偏好和学习目标,为他们推荐合适的学习资源和学习路径。这些平台通常拥有丰富的学习内容,包括视频教程、在线课程、电子书籍等,让学生可以根据自己的需求进行自主学习。 AI教学助手也是学习中的得力助手。它们能够实时解答学生的疑问,提供个性化的学习建议,帮助学生解决学习中的难题。与传统的教育方式相比,AI教学助手更加灵活、便捷,能够随时随地为学生提供帮助。 此外,AI评估系统也是学习中的重要工具。它们能够自动评估学生的学习成果,包括作业、考试、项目等,帮助学生了解自己的学习进展和存在的问题。这些评估结果可以作为学生改进学习的依据,也可以作为教师调整教学策略的参考。 三、如何高效利用AI工具 虽然AI工具带来了诸多便利,但要想高效利用它们,还需要我们掌握一些技巧和方法。 我们需要了解不同AI工具的特点和优势,选择适合自己的工具。在选择工具时,我们要考虑自己的需求和目标,以及工具的功能和易用性。 我们需要学会如何与AI工具进行交互,充分发挥它们的作用。这包括了解工具的操作界面、功能设置和使用方法,以及掌握一些常用的快捷键和技巧。通过与AI工具的互动,我们可以更加高效地完成工作和学习任务。 我们还需要不断学习和探索新的AI技术,以便更好地应对未来的挑战。随着AI技术的不断发展,新的工具和应用将不断涌现。我们要保持敏锐的洞察力,及时了解和掌握这些新技术,以便在工作中和学习中更好地应用它们。 AI工具已经成为我们工作和学习中不可或缺的一部分。通过了解和应用这些工具,我们可以更加高效地完成任务,提升个人竞争力。在未来的工作和学习中,让我们携手AI工具,共同开创更加美好的未来! 《实战ChatGPT:应用AI工具高效工作与学习》 编辑推荐 五位AI应用达人,详解ChatGPT六大典型应用领域:阅读与写作、创意生成、英语学习、辅助编程、办公自动化、插件及API。 适用各种GPT类AI工具:文心一言、讯飞星火、kimi、…… 内容简介 本书是一本ChatGPT的实战手册,全面细致地介绍了ChatGPT的背景与发展历程、能力与特点,以及如何让ChatGPT助力工作与学习。 本书共8章:ChatGPT印象、ChatGPT之心、阅读与写作、创意生成、英语学习、辅助编程、办公自动化、ChatGPT的实用工具。其中第3~8章是本书核心内容,充分介绍了如何使用ChatGPT这个强大的AI工具。在内容组织上,本书将具体场景、人的需求,如市场营销人员如何生成好的文案创意,英语学习者如何练习与反馈,家长们如何辅导孩子作业与拓展思路等,与ChatGPT的应用相结合。在内容结构上,本书遵循“授人以鱼,不如授人以渔”的原则,先介绍基础的知识和方法,再进入具体的例子场景。这样,读者可以在打好基础,获得一些启发与思考后,再开始自己的实践。 虽然本书围绕ChatGPT展开,但其中的知识与方法、众多的实例具有很强的通用性,能够帮助希望通过使用各类AI工具高效工作与学习的朋友。 本书适合AIGC技术、大模型技术开发者及使用者、爱好者,各类希望使用ChatGPT学习与工作的读者朋友参考。 作者简介 纪杨,数据分析师&设计师,DataxDesign 数据可视化社区创建者,Tableau 2016上海站可视化大赛冠军。专注于为企业提供数据分析、用数据讲故事主题的培训与服务。曾就职于:Teambition、华住酒店集团、沪江网。有多年的互联网产品分析经验,擅长数据可视化、数据平台搭建。工作之余喜欢写作,通过个人公众号(dataxdesign)将自己的思路心得分享给读者。 张春成,科研工作者。北京师范大学博士,从事神经影像数据分析和脑机接口方面的研究。研究集中在电子信息工程、计算机软件和机器学习等领域,主持多项脑机接口系统的开发,在AI系统集成与大模型应用方面具有丰富的开发经验。个人公众号为“计算随笔”,内容集中在机器学习、统计分析原理剖析和数据可视化呈现等方面,希望能够剥开科研和技术的外壳,让更多人看到其中的魅力。 朱思超,设计师,毕业于卡内基梅隆大学,娱乐科技硕士,曾任职WeWork产品设计师,奥迪中国R&D,作为交互设计师参与设计汽车中控系统。现在 AIGC 创业中,工作涵盖UI设计、平面设计、营销活动内容,希望通过AI赋予人更多能力,探寻设计和创新的新领域。 黄河清,AI 实施顾问。毕业于新南威尔士大学信息系统专业。前中英合作高校数字化转型项目经理,前环球教育8分雅思教师。曾获环球教育集团全国教研大赛冠军,多年一线带教经验。在AI+语言教育实践的领域不断探索,经验丰富。 贺晨,拥有超过20年的软件架构设计和开发经验,曾在沪江网、韦博英语、上海乐宁等公司担任开发经理、项目经理和敏捷教练。擅长于在不同领域、不同角色和项目中应用AI技术,帮助使用者加快开发速度,优化开发流程、提高产品质量、增强用户体验。 目录 前言 第1章 ChatGPT印象1 1.1 认识ChatGPT2 1.1.1 ChatGPT,前所未有的聊天AI2 1.1.2 ChatGPT的能力2 1.1.3 ChatGPT的技术创新6 1.2 ChatGPT,新鲜的使用体验8 1.2.1 ChatGPT初上手8 1.2.2 与ChatGPT连续会话9 1.2.3 ChatGPT提示词的使用11 1.2.4 使用ChatGPT的插件13 1.2.5 ChatGPT的函数调用功能16 1.3 ChatGPT,工作与学习的好助手17 1.3.1 文字工作者的内容助手17 1.3.2 程序开发者的代码助手18 1.3.3 市场营销人员的文案和创意助手19 1.3.4 外语学习者的规范写作助手19 1.

Python爬虫实战:淘宝商品爬取与数据分析

一、爬虫技术概述 爬虫技术是一种在互联网上自动收集信息的方法。通过编写程序,让计算机自动访问网站,获取所需数据,并进行分析和处理。Python作为一种功能强大、易于学习的编程语言,其爬虫库Scrapy更是爬虫技术的利器。 二、淘宝商品爬取策略 淘宝作为中国最大的电商平台,其网页数据庞大且复杂。要实现淘宝商品的爬取,首先需要了解淘宝网站的结构,制定合理的爬取策略。 确定目标:明确需要爬取的商品类型、价格范围、销量等条件。 选择合适的入口:淘宝有多个入口,如搜索框、分类导航等。可以选择搜索框作为入口,输入关键词,获取搜索结果。 分页处理:淘宝搜索结果通常分为多页,需要编写代码实现分页爬取。 商品信息提取:分析淘宝网页结构,定位商品信息所在的标签,如商品名称、价格、销量等。 存储数据:将爬取的商品信息存储到本地文件或数据库中,以便后续分析。 三、数据清洗与预处理 爬取的原始数据往往包含大量噪声,如HTML标签、换行符等。因此,需要对爬取的数据进行清洗和预处理,以提高数据分析的准确性。 去除HTML标签:使用Python的BeautifulSoup库,轻松去除数据中的HTML标签。 数据格式化:将爬取到的商品价格、销量等数据进行格式化处理,使其易于分析。 数据去重:对爬取到的商品信息进行去重处理,避免重复数据分析。 四、数据分析方法与工具 针对爬取的淘宝商品数据,可以采用多种数据分析方法,如描述性统计、可视化、机器学习等。以下介绍几种常用的数据分析方法与工具。 描述性统计:对商品价格、销量等数据进行统计描述,如计算均值、中位数、标准差等。 可视化:使用Python的Matplotlib、Seaborn等库,将商品数据进行可视化展示,如绘制价格走势图、销量柱状图等。 机器学习:利用Python的Scikit-learn、TensorFlow等库,构建机器学习模型,对商品价格、销量等数据进行预测。 五、商品价格波动分析 通过对淘宝商品价格的波动进行分析,可以了解市场需求、竞争态势等因素。以下是一个简单的价格波动分析方法: 价格时序分析:绘制商品价格随时间变化的曲线图,观察价格波动规律。 价格差异分析:比较不同商品、不同店铺的价格,找出价格优势明显的商品。 六、销量与评价分析 销量与评价是衡量商品质量的重要指标。通过对销量与评价的分析,可以了解商品的受欢迎程度、消费者满意度等。以下是一个简单的销量与评价分析方法: 销量排名分析:统计销量排名靠前的商品,了解热门商品。 评价情感分析:利用Python的自然语言处理库,对商品评价进行情感分析,了解消费者对商品的满意度。 综上所述,利用Python爬虫技术爬取淘宝商品数据,并进行数据分析,联讯数据可以为我们提供有益的市场信息。通过对商品价格、销量、评价等数据的深入挖掘,我们将更好地了解市场需求,为购物决策提供有力支持。

【前端】i18n Ally插件使用

效果展示: 当鼠标放上去 vscode扩展搜i18n Ally 由于每个项目的语言可能做的都不一样,会导致无法找到真正的路径位置,所以我推荐 在项目的根目录找到.vscode再找到settings.json编辑它 比如我的翻译文件en.ts和zh-CN.ts,都在src目录下的locales目录,配置就如下 "i18n-ally.localesPaths": ["src/locales"], "i18n-ally.keystyle": "nested", "i18n-ally.sortKeys": true, "i18n-ally.namespace": true, "i18n-ally.enabledParsers": ["ts"], "i18n-ally.sourceLanguage": "en", "i18n-ally.displayLanguage": "zh-CN", "i18n-ally.enabledFrameworks": ["vue", "react"], "god.tsconfig": "./tsconfig.json", "vue-i18n.i18nPaths": "src/locales" 再如我的翻译文本是en.json和zh-CN.json,都在src目录下的lang/package下,配置就如下 { "i18n-ally.localesPaths": ["src/lang/package"], "i18n-ally.keystyle": "nested", "i18n-ally.sortKeys": true, "i18n-ally.namespace": true, "i18n-ally.enabledParsers": ["json"], "i18n-ally.sourceLanguage": "zh-cn", "i18n-ally.displayLanguage": "zh-CN", "i18n-ally.enabledFrameworks": ["vue", "react"], "god.tsconfig": "./tsconfig.json", "vue-i18n.i18nPaths": "src/lang/package" } 如果发现翻译是英文的则看下vscode右下角的en改一下即可

【AI大模型】在运动项目的深度融合和在穿戴设备的实践及未来运动健康技术发展

文章目录 1. 技术架构2. 模型选择2.1 LSTM(长短期记忆网络)2.2 CNN(卷积神经网络)2.3 Transformer 3. 数据处理数据预处理 4. 实时性要求4.1 边缘计算4.2 模型优化 5. 数据隐私与安全6. 深入分析AI大模型在穿戴设备的应用和未来发展6.1. **多模态数据融合**6.2. **自适应学习和个性化推荐**6.3. **跨平台集成与数据共享**6.4. **模型优化与部署**6.5. **个性化运动风险评估与干预**6.6. **长时间运动模式分析与建议**6.7. **社交与游戏化元素**6.8. **实时反馈与动态调整**6.9. **数据隐私与安全**6.10. **个性化恢复与营养建议**6.11. **个性化训练计划制定**6.12. **智能运动装备的整合与互联**6.13. **虚拟教练与增强现实(AR)技术**6.14. **跨领域协同分析**6.15. **群体健康管理与公共健康研究**6.16. **康复训练与老年人健康管理**6.17. **情绪监测与心理健康**6.18. **多语言与文化适应**6.19. **长时间趋势分析与预测**6.20. **综合健康评分与个性化报告**6.21. **人工智能助理与语音交互** 7、总结 在运动监测领域,AI大模型通过深度学习和数据分析技术,为穿戴设备提供了更智能化的运动项目分析和健康管理。本文将详细探讨AI大模型在运动项目中的深度融合应用,包括技术架构、模型选择、数据处理、实时性要求、隐私保护等方面。 1. 技术架构 数据采集层: 传感器:穿戴设备配备各种传感器,如加速度计、陀螺仪、GPS、心率传感器等。数据采集模块:实时收集传感器数据,并传输到数据处理层。 数据处理层: 数据预处理:包括数据清洗、归一化、特征提取等步骤,确保数据质量和一致性。特征工程:从原始数据中提取有用特征,如步频、速度、心率变异性等。 模型层: 运动识别模型:使用深度学习模型(如LSTM、CNN、Transformer等)进行运动类型识别和分析。模型优化:通过量化、剪枝等技术优化模型性能,适应穿戴设备的计算资源限制。 应用层: 实时监测与反馈:通过边缘计算实现实时数据处理和反馈。个性化运动建议生成:基于模型输出和用户历史数据,提供个性化的运动建议。 数据存储与安全层: 数据存储:使用云端或本地存储,保存用户的历史数据和模型结果。隐私保护:采用数据加密和匿名化技术,保护用户隐私。 2. 模型选择 2.1 LSTM(长短期记忆网络) LSTM适用于处理时间序列数据,如运动监测中的连续运动数据。它能够捕捉数据中的长期依赖关系,是运动类型识别的理想选择。 from keras.models import Sequential from keras.layers import LSTM, Dense, Dropout def build_lstm_model(input_shape): model = Sequential() model.

面试专区|【70道Hive高频题整理(附答案背诵版)】

简述什么是Hive? Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。Hive定义了简单的SQL查询语言称为HiveQL,该语言允许熟悉SQL的用户查询数据。同时,Hive提供了一个元数据存储,存储了所有表的元数据信息。 应用场景举例:假设我们有一个电商网站,每天都会产生大量的交易数据,我们需要分析这些数据以了解销售情况、用户行为等信息。我们可以用Hive来建立这些数据的仓库,使用HiveQL查询这些数据,比如统计每天的销售总额、每个商品的销售额等。这样我们可以快速地获取到需要的信息,并基于这些信息做出决策。 第二题:Hive的数据类型有哪些? Hive支持的数据类型包括: 基本类型:如int、float、double、string、boolean等;集合类型:如array、map、struct等;复杂类型:如uniontype、array< struct>、map<string,struct>等;用户自定义类型。 应用场景举例:假设我们有一个用户信息表,表中有一个字段叫做“地址”,该地址由省、市、区、街道等多个部分组成。我们可以使用Hive的复杂类型来定义这个字段,比如定义一个map类型,其中key为地址的组成部分,value为对应的值,这样我们就可以在一个字段中存储整个地址信息。 简述Hive的优缺点 ? Hive的优点: 易于使用:Hive提供了一个类似于SQL的查询语言,称为HiveQL,这使得数据分析变得非常简单。处理大数据:Hive是基于Hadoop的数据仓库工具,能够处理大规模数据。可扩展性:Hive可以扩展到多个节点,以处理更多数据。数据整合:Hive可以轻松地将来自不同源的数据整合到一个数据仓库中。数据安全:Hive支持数据加密和用户权限管理,确保数据的安全性。 Hive的缺点: 性能问题:对于实时查询或低延迟查询,Hive可能不是最佳选择,因为它的查询性能可能不如其他一些工具。不支持所有SQL功能:虽然HiveQL提供了很多SQL功能,但它并不支持所有的SQL特性。数据同步问题:在多节点环境中,数据的同步可能是一个问题。不支持联接类型:Hive在处理表之间的联接时可能不如其他数据库系统高效。不支持索引:为了提高查询性能,许多数据库系统使用索引,但Hive并不支持这一特性。 以上就是对Hive优缺点的简要概述,如果你需要更详细的解释或者有其他问题,欢迎随时提问。 简述Hive的作用 ? Hive是一个基于Hadoop的数据仓库工具,它可以用来处理和分析大规模数据。Hive提供了类似于SQL的查询语言HiveQL,用户可以使用HiveQL编写查询来分析数据。Hive的作用包括: 数据仓库:Hive可以用来存储和管理大规模数据,并提供数据查询和分析功能。数据处理:Hive支持各种数据处理操作,如数据过滤、连接、聚合等,可以帮助用户快速处理和分析数据。数据转换:Hive可以用来转换数据格式,将数据从一种格式转换为另一种格式,方便用户进行数据分析和利用。数据报表:Hive可以用来生成各种报表,帮助用户了解数据的分布和趋势,为决策提供支持。 应用场景举例: 电商网站:电商网站可以使用Hive来分析用户购买行为、商品销售情况等,从而制定营销策略和优化产品。金融行业:银行、证券等金融机构可以使用Hive来分析客户交易行为、风险评估等,从而提高风控水平和业务效益。社交媒体:社交媒体可以使用Hive来分析用户行为、舆情热点等,从而优化产品功能和提高用户体验。 简述Hive 架构原理 ? Hive是基于Hadoop的数据仓库工具,用于处理和分析大数据。Hive通过构建元数据、查询语言、编译器、执行程序和驱动程序等组件,提供了一种类似SQL的查询语言HiveQL,用于查询和管理大数据。 Hive的架构原理可以分为以下几个部分: 元数据存储:Hive使用关系型数据库存储元数据,例如MySQL或PostgreSQL。元数据包括数据库、表、列和分区等的信息。查询语言:HiveQL是一种类似SQL的查询语言,用于编写查询和数据分析语句。HiveQL可以将复杂的查询分解为多个简单的子任务,这些子任务可以在Hadoop集群上并行执行。编译器:Hive的编译器负责将HiveQL查询语句转化为MapReduce、Tez或Spark等执行计划的中间表示形式。编译器还会对查询语句进行语义分析和优化,以提高查询性能。执行程序:Hive的执行程序根据编译器生成的执行计划,在Hadoop集群上并行执行查询任务。执行程序可以与不同的计算框架(如MapReduce、Tez或Spark)集成,以提高数据处理效率。驱动程序:Hive的驱动程序负责与用户交互,接收用户的查询请求并返回结果。驱动程序还负责监控查询的执行状态,并在必要时重新调整执行计划以提高性能。 在应用场景方面,Hive可以用于处理和分析大规模数据集,例如数据仓库、商业智能和机器学习等领域。通过使用Hive,用户可以快速地编写和分析数据,而无需了解底层的数据处理细节。 简述Hive和关系数据库比较 ? Hive和关系数据库(如MySQL、Oracle等)在数据存储和处理上有一些不同之处。以下是它们之间的一些比较: 数据存储:关系数据库将数据存储在关系型表格中,每个表格由行和列组成,并使用主键和外键约束来维护数据完整性。而Hive是基于Hadoop的数据仓库工具,它将数据存储在HDFS中,以表的形式组织数据,但Hive的表是映射到HDFS的文件和目录结构上。数据处理:关系数据库使用SQL语言进行数据的查询和处理,可以进行复杂的数据操作和计算。而Hive使用HiveQL语言,它是基于SQL的查询语言,但与传统的SQL略有不同,HiveQL支持更多的数据操作和计算功能。扩展性:关系数据库在扩展性方面可能受到限制,特别是在处理大量数据时,可能会遇到性能瓶颈。而Hive基于Hadoop,可以利用Hadoop集群进行分布式处理,因此在处理大规模数据时具有更好的扩展性。数据格式:关系数据库可以支持多种数据格式,如CSV、JSON、XML等。而Hive默认使用CSV格式,但也可以使用其他格式,如Parquet和ORC等列式存储格式。ACID属性:关系数据库支持ACID属性,即原子性、一致性、隔离性和持久性,这使得关系数据库在处理事务时具有更高的可靠性和一致性。而Hive不支持ACID属性,因此在处理事务时可能存在一些限制和问题。 总之,Hive和关系数据库各有优缺点,选择使用哪种工具取决于具体的应用场景和需求。如果需要处理大规模数据并利用分布式计算资源,Hive是一个很好的选择。如果需要维护数据的完整性和一致性,并执行复杂的事务操作,关系数据库可能更加适合。 简述什么是Hive 管理表和外部表 ? Hive中的管理表和外部表是两种不同类型的表,它们在数据存储、管理和访问方式上有一些区别。 管理表(也称为内部表)是Hive中默认的表类型。当你在Hive中创建一个表,并指定一个存储位置时,Hive会为这个表创建一个管理表。管理表的数据存储在Hive默认的文件系统(通常是HDFS)中的指定目录下,元数据存储在Hive自己的元数据存储库中。管理表由Hive完全管理,这意味着当你删除一个管理表时,Hive会同时删除该表的元数据和存储的数据。管理表适合存储大量的数据,并且可以通过HiveQL进行查询和管理。 外部表是指向HDFS中现有数据的表。当你创建一个外部表时,你只需要指定HDFS中数据的路径,而不是创建新的数据文件。与内部表不同,外部表的元数据也存储在Hive的元数据存储库中,但数据存储在HDFS中的指定位置,由Hadoop而不是Hive进行管理。这意味着,当你删除一个外部表时,只会删除该表的元数据,而不会删除实际的数据。外部表适合用于访问已经在HDFS中存在的数据,并且可以通过HiveQL进行查询和管理。 总之,管理表和外部表的主要区别在于数据的存储和管理方式。管理表由Hive完全管理,适合存储大量数据,而外部表则指向现有数据,由Hadoop而不是Hive进行管理。 简述Hive内部表和外部表的区别 ? Hive内部表和外部表的区别主要表现在以下几个方面: 存储位置:内部表的数据和元数据都存储在Hive的存储路径下,即位于HDFS上。而外部表的数据则可以存放在HDFS、HBase、本地文件系统等位置,不在Hive管理的路径下,而是在指定的路径下。数据管理:内部表的数据由Hive进行管理、维护、删除和新建。对于数据的删除操作是彻底删除数据,包括在HDFS上的数据和Hive中的元数据。而外部表只管理数据的元数据信息,对于数据删除时并不会删除实际数据,只会删除元数据。数据访问权限:由于内部表的数据和元数据都存储在Hive中,因此Hive对于内部表有完全的访问权限,可以实现对表的一系列操作。而外部表只是对外部存储系统中数据的元数据进行管理,因此不能对数据进行全部的操作。数据导入导出:内部表和外部表在导入和导出数据方面具有不同的特点。对于内部表,导入数据通常是将数据从外部存储系统中导入到Hive管理的路径下,使用LOAD DATA语句来实现。导出数据则是将Hive中的数据导出成文件,使用INSERT OVERWRITE语句来实现。而对于外部表,导入数据通常是将数据直接存储到外部存储系统中,使用命令行工具或其他数据导入工具来实现。导出数据则是将外部存储系统中的数据导出到其他地方。 总的来说,Hive的内部表和外部表在存储位置、数据管理、访问权限和数据导入导出等方面都有较大的差异。用户可以根据实际需求选择适合的表类型来处理和分析大规模数据。 为什么内部表的删除,就会将数据全部删除,而外部表只删除表结构? 为什么用外部表更好 ? Hive中的内部表和外部表在删除时表现出不同的行为,主要是因为它们的数据存储和管理方式不同。 内部表的数据存储在Hive自身的文件系统(通常是HDFS)中,而外部表的数据则存储在外部文件系统(如HDFS或其他存储系统)中。当删除内部表时,Hive会删除与该表相关的元数据信息以及存储在自身文件系统中的数据。这是因为内部表和其数据都是由Hive自身管理的。 相比之下,外部表仅删除表结构,而不删除实际数据。这是因为外部表的数据存储在外部文件系统中,并不由Hive管理。仅当删除外部表时,与该表相关的元数据信息会被删除,但存储在外部文件系统中的实际数据不会被影响。 使用外部表的好处在于它提供了更高的灵活性和安全性。由于数据存储在外部文件系统中,用户可以随时对外部表进行删除、创建或修改操作,而不用担心影响底层数据。此外,由于数据不直接由Hive管理,因此用户可以更加自由地管理和控制数据的访问和修改,提高了数据的安全性。 综上所述,Hive中内部表的删除会同时删除数据和元数据信息,而外部表仅删除元数据信息,实际数据不受影响。使用外部表可以提供更高的灵活性和安全性,因为用户可以更加自由地管理和控制数据的访问和修改,同时避免了直接操作底层数据可能带来的风险。 简述Hive建表语句?创建表时使用什么分隔符 ? Hive建表语句的基本语法如下: CREATE TABLE table_name ( column1 data_type, column2 data_type, ... ) ROWFORMAT DELIMITED FIELDS TERMINATED BY 'field_delimiter'; 其中,table_name是表的名称,column1、column2等是表的列名,data_type是列的数据类型。ROWFORMAT DELIMITED指定了行格式和分隔符,FIELDS TERMINATED BY 'field_delimiter'指定了字段的分隔符。

RabbitMQ详解-06RabbitMQ高级

1. 过期时间TTL 可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息自动被删除。RabbitMQ可以对消息和队列设置TTL。有以下两种设置方法: 通过队列属性设置,队列中所有消息都有相同的过期时间。对消息进行单独设置,每条消息TTL可以不同。 若两种方法同时使用,则消息的过期时间以两者之间TTL较小的那个数值为准。消息在队列的生存时间一旦超过设置的TTL值,就称为dead message被投递到死信队列, 消费者将无法再收到该消息。 1.1. 设置队列TTL 配置类中设置: args.put("x-message-ttl",5000); return QueueBuilder.durable(ITEM_QUEUE).withArguments(args).build(); 参数 x-message-ttl 的值必须是非负 32 位整数 (0 <= n <= 2^32-1) ,以毫秒为单位表示 TTL 的值。这样,值 6000 表示存在于 队列 中的当前消息将最多只存活 6 秒钟。 如果不设置TTL,则表示此消息不会过期。如果将TTL设置为0,则表示除非此时可以直接将消息投递到消费者,否则该消息会被立即丢弃。 1.2. 设置消息TTL 在发送消息(可以发送到任何队列,不管该队列是否属于某个交换机)的时候设置过期时间即可。在测试类中编写如下方法发送消息并设置过期时间到队列: /** * 过期消息 * 该消息投递任何交换机或队列中的时候;如果到了过期时间则将从该队列中删除 */ @Test public void ttlMessageTest(){ MessageProperties messageProperties = new MessageProperties(); //设置消息的过期时间,5秒 messageProperties.setExpiration("5000"); ​ Message message = new Message("测试过期消息,5秒钟过期".getBytes(), messageProperties); //路由键与队列同名 rabbitTemplate.convertAndSend("my_ttl_queue", message); } expiration 字段以毫秒为单位表示 TTL 值。且与 x-message-ttl 具有相同的约束条件。因为 expiration 字段必须为字符串类型,broker 将只会接受以字符串形式表达的数字。

【Python机器学习实战】 | 基于线性回归以及支持向量机对汽车MPG与自重进行回归预测

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:@一伦明悦-CSDN博客 ✍🏻 作者简介: C++软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 👍🏻点赞 📂收藏 👀关注+ 如果文章有所帮助,欢迎留下您宝贵的评论, 点赞加收藏支持我,点击关注,一起进步! 引言 线性回归和支持向量机(SVM)是常见的机器学习算法,用于回归和分类任务。以下是它们的介绍与区别: 线性回归(Linear Regression): 介绍: 线性回归是一种用于建立输入特征与连续输出之间关系的线性模型。通过拟合一个线性函数来预测目标变量的数值。目标是找到使模型预测值与实际值之间误差的平方和最小化的最优参数。 特点: 简单且直观,易于理解和实现。适用于连续数值预测任务。可以考虑多个特征对目标变量的影响。 适用场景: 预测房价、销售量等连续值问题。理解特征对目标变量的影响。 支持向量机(Support Vector Machine,SVM): 介绍: SVM是一种用于分类和回归的监督学习算法。在特征空间中找到一个最优的超平面来分隔不同类别的样本。可以通过核技巧处理非线性分类任务。 特点: 适用于小样本、高维度的数据集。具有较好的泛化能力,适用于解决非线性可分问题。引入核函数可扩展到处理复杂数据集。 适用场景: 二分类、多分类问题。处理非线性分类问题。图像识别、文本分类等领域。 区别: 目标: 线性回归旨在建立输入特征与连续输出之间的线性关系。SVM旨在找到一个最优的超平面来分隔不同类别的样本。 任务: 线性回归解决的是回归问题,预测连续数值。SVM可用于分类和回归任务,主要应用于分类问题。 拟合方式: 线性回归通过拟合直线或超平面来逼近数据。SVM通过寻找间隔最大化的超平面来分隔不同类别的样本。 处理非线性问题: 线性回归适用于线性关系,不擅长处理非线性数据。SVM可以通过核技巧处理非线性分类问题。 正文 01-线性不可分下的支持向量机最大边界超平面 这段代码是用于生成和绘制一个支持向量机(SVM)模型的图示。它使用scikit-learn库中的make_circles函数生成了一个具有两个特征的数据集,该数据集由两个同心圆组成,这代表了两个类别。然后,它将数据集分为训练集和测试集,并使用支持向量机模型进行训练和预测。最后,它绘制了训练集、测试集、支持向量以及模型决策边界的图示。 下面是这段代码的详细解释: 导入必要的模块: %matplotlib inline import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np from sklearn.datasets import make_circles from sklearn.model_selection import train_test_split from sklearn import svm 生成数据集: N = 100 X, Y = make_circles(n_samples=N, noise=0.

塔瑞斯世界 Mac 下载安装详细教程(黑屏打不开问题解决指南)

最近塔瑞斯世界上架了,Mac 党的我第一时间就讲该游戏安装到了我的 MacBook 上,但打开运行更新完成后会黑屏导致无法游玩,经过一番摸索,终于找到了解决的方法,成功打开 黑屏可能是权限不足等问题导致,所以我们安装后通过系统管理员命令来打开运行,首先我们先来安装好该游戏 下载安装 playCover 如果想在 Mac 电脑上安装手机游戏则需要先安装软件 playCover,该软件可以让你在 Mac 上运行安装 IOS 软件游戏 playCover:https://www.hereitis.cn/articleDetails/737 我们先下载好 playCover 的DMG安装包,下载完成后直接将软件拖拽到右侧文件夹中即可安装完成,安装好后我们打开运行 playCover 下载安装塔瑞斯世界 成功安装并运行 playCover 以后,我们下载游戏的 IPA 砸壳安装包,然后将该 IPA 砸壳包拖拽到 playCover 中就可以开始安装了 塔瑞斯世界 IPA 包:https://www.hereitis.cn/articleDetails/2618 等待安装完成后,playCover 中就会出现该游戏图标了,我们可以右键点击游戏图标点击设置,然后选择杂项将第一栏分类改成 xx.games 然后我们双击游戏图标就可以运行了 不过运行更新后可能会出现黑屏,导致无法正常进入游戏 黑屏问题解决 如果你安装后无法正常进入,出现黑屏问题,我们可以打开终端(启动台或者command+空格聚焦搜索终端打开),然后在终端中复制下方指令回车运行 sudo $HOME/Library/Containers/io.playcover.PlayCover/Applications/com.tencent.trssj.app/Demo 此时会让你输入密码,这里直接输入电脑的开机密码即可,输入时不会显示你输入的字符,不要管直接输好密码回车就行 然后就会自动打开游戏了,通过该指令的方式可以正常进入游戏

【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,云原生K8S,人工智能,js逆向,App逆向,网络系统安全,数据分析,PyQt5,tkinter,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。 所属的专栏:PyQt5桌面应用开发,零基础到进阶应用实战 景天的主页:景天科技苑 文章目录 PyQt框架简介PyQt5特点Qt与PyQt的关系 PyQt5环境搭建PyQt5安装辅助工具安装PyQt5Designer总结和联系 PyQt5应该学哪些内容 Python可以说是世界上最广泛、最简单的编程语言之一,Qt可以说是世界上最好的程序开发库之一。 Python与Qt结合的产物就是PyQt,因此,PyQt就成了Python中程序开发最棒的库之一(当然,笔者认为它在Python程序开发中就是最棒的)。 由于PyQt是Python与Qt的结合,所以它既可以利用Python强大而又简洁的语法,又不会丢失Qt强大的功能。 从Python的角度来说,凡是Python涉及的所有简洁、易用性的语法,PyQt都可以使用;凡是Python涉及的所有开源模块,PyQt也都可以使用。 从Qt的角度来说,由于PyQt完成了对Qt的所有类的封装,因此,从理论上说,使用Qt能开发出来的东西,使用PyQt也可以开发出来, 因此,PyQt可以利用Qt强大的功能。 由于充分利用了双方的优点,所以PyQt在开发程序的过程中会带来一些意想不到的收获, 利用Python的简洁语法与强大而又丰富的生态圈,有些程序逻辑在Qt中实现会比较复杂,而在PyQt中却很简单,这才是PyQt最大的魅力 之处。 PyQt框架简介 在目前的软件设计过程中,图形用户界面(GUI)的设计相当重要,美观、易用的用户界面能够在很大程度上提高软件的使用量,因此许多软件都在用户界面上倾注了大量的精力。 在介绍PyQt框架之前,我们先来了解什么是图形用户界面(GUI)。 百度百科:GUI词条 GUI是Graphical User Interface的英文简称,即图形用户界面,准确地说,GUI就是屏幕产品的视觉体验和互动操作部分。 GUI是一种结合计算机科学、美学、心理学、行为学及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。 Python最初是作为一门脚本语言开发的,并不具备GUI功能,但由于其本身具有良好的可扩展性,能够不断地通过C/C++模块进行功能性扩展,因此目前已经有相当多的GUI控件集(Toolkit)可以在Python中使用了。 在Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg,其中PyQt是Qt为Python专门提供的GUI扩展。 Qt是挪威Trolltech(奇趣科技公司)开发的一个C++GUI应用程序,其包括跨平台类库、集成开发工具和跨平台IDE,既可以用于开发GUI程序,也可以用于开发非GUI程序。 使用Qt只需开发一次应用程序,便可跨不同桌面和嵌入式操作系统部署该应用程序,而无须重新编写源代码。 和Python一样,Qt也具有相当优秀的跨平台特性,使用Qt开发的应用程序能够在Windows、Linux和Mac OS平台之间轻松移植。 2008年6月,Trolltech被Nokia(诺基亚)收购,Qt也因此成为诺基亚旗下的编程语言工具; 2012年8月,Qt业务又被芬兰IT业务供应商Digia从诺基亚手中全面收购。 现在的Qt既有开源版本,也有商业版本,Digia通过开源授权(LGPL和GPL)以及商业授权的方式对Qt进行授权。 开源软件需要解决的最大问题是如何处理开发者使用开源软件来完成个人或商业目标的情况,其中包括版权与收益的问题。 当一个软件开发者打算将自己写的代码开源时,通常选择自由软件协议,即GPL(GNU General Public License,GNU通用公共许可证)。 因此,PyQt 5选择了GPL协议,所以开发者可以放心使用PyQt 5开发软件。 PyQt5特点 自从Qt移植到Python上形成PyQt框架以来,已开发出PyQt 3、PyQt 4和PyQt5三个版本。PyQt于1998年首次发布,当时名字叫PyKDE,如今改名为PyQt并提供GPL版和商业版。 注意: PyQt5严格遵循Qt的发布许可,拥有双重协议,自由开发者可以选择使用免费的GPL版本,如果准备将PyQt用于商业活动,则必须为此交付商业许可费用。 最后,让我们来看看Qt官网(https://www.qt.io/cn/)上的官方宣传壁纸,如图所示,答案就在其中。 pyqt官网 https://www.riverbankcomputing.com/software/pyqt/intro PyQt正受到越来越多的Python程序员的喜爱,这是因为PyQt具有如下优秀的特性。 基于高性能的Qt的GUI控件集。 能够跨平台运行在Windows、Linux和Mac OS等系统上。 使用信号/槽(signal/slot)机制进行通信。 对Qt库的完全封装。 可以使用Qt成熟的IDE(如Qt Designer)进行图形界面设计,并自动生成可执行的Python代码。 提供了一整套种类繁多的窗口控件。 Qt与PyQt的关系 首先,PyQt是Qt框架的Python语言实现。PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都有其对应的Qt控件。 所以PyQt与Qt的类库和API非常详细,而且PyQt不再使用qmake系统和Q_OBJECT宏,使得PyQt再也没有编译链接错误,PyQt的代码也更加友好。

Hadoop 2.0:主流开源云架构(二)

目录 二、Hadoop 2.0简述(一)Hadoop 2.0由来(二)Hadoop 2.0相关项目(三)Hadoop应用 三、Hadoop 2.0部署(一)部署综述(二)传统解压包部署 二、Hadoop 2.0简述 (一)Hadoop 2.0由来 工业界称Hadoop 1.X及其以前的版本(0.23.X除外)为Hadoop 1.0,称Hadoop 2.X及其以后版本为Hadoop 2.0。 Hadoop 2.0提供分布式存储(HDFS)和分布式操作系统(Yarn)两大功能软件包。 将Hadoop 2.0部署至集群后,通过调用Hadoop 2.0程序库,能够用简单的编程模型来处理分布在不同机器上的大规模数据集。由于采用客户-服务器模式,Hadoop 2.0很容易从一台机器扩展至成千上万台机器,并且每台机器都能提供本地计算存储和本地计算。考虑到集群中每台机器都可能会出问题(如硬件失效),Hadoop 2.0本身从设计上就在程序层规避了这些问题。 Hadoop至少应当包含分布式存储和分布式计算两个模块,下面给出Hadoop1.0项目模块。 (1)Hadoop Common:联系HDFS和MapReduce的纽带,它一方面为另外两组件提供一些公用jar包,另一方面也是程序员访问其他两模块的接口。 (2)HDFS:Hadoop的分布式文件系统。主要提供分布式存储服务。 (3)Hadoop MapReduce:分布式计算框架。主要负责资源管理、任务调度和MapReduce算法实现。 (二)Hadoop 2.0相关项目 Google云计算组件和Hadoop及其相关项目之间的对应关系: Hadoop云计算系统Google云计算系统Hadoop HDFSGoogle GFSHadoop MapReduceGoogle MapReduceHBaseGoogle BigTableZooKeeperGoogle ChubbyPigGoogle Sawzall 近几年工业界围绕Hadoop进行了大量的外围产品开发,下图描述了各个产品项目之间的层次关系。 (三)Hadoop应用 1、构建大型分布式集群 Hadoop最直接的应用就是构建大型分布式集群,提供海量存储和计算服务,像国内的中国移动“大云”、淘宝“云梯”等,都已是大型甚至超大型分布式集群。 2、数据仓库 很多公司的log日志文件、其他半结构化业务数据并不适合存入关系型数据库,却特别适合存入半结构化的HDFS,然后应用其他工具(如Hive、Hbase)提供报表查询之类的服务。 3、数据挖掘 大数据环境下的数据挖掘其实并没有太大改变,但大数据却给数据挖掘的预处理工具出了难题。受限于硬盘性能和内存大小限制,普通服务器读取1TB数据需要至少二十分钟,但Hadoop却是每台机器读取1/n TB,加上共享集群内存和CPU,实际处理时间何止n倍。 Hadoop己广泛应用于分布式集群构建、数据存储、数据挖掘等领域。随着大数据和云计算时代的到来,相信Hadoop 的应用将更加广泛。 三、Hadoop 2.0部署 (一)部署综述 1、部署方式 (1)安装方式: 传统解压包方式:烦琐易错;有助于读者深入理解Hadoop。Linux标准方式:简单易用;隐藏了太多细节。 (2)部署环境: 单机模式:不需要与其他节点交互,不需要使用HDFS,直接读写本地的文件系统。伪分布模式:在一台单机上运行,用不同的进程模仿分布式运行中的各类节点。分布式模式:在不同的机器上部署系统。 2、部署步骤 3、准备环境 (1)硬件环境 由于分布式计算需要用到很多机器,部署时用户须提供多台机器,至于提供几台,须根据 “部署规划”确定。 实际上,完全模式部署Hadoop时,最低需要两台机器(一个主节点,一个从节点),此外,硬件方面,每台机器最低要求有1GB内存,20GB硬盘空间。 (2)软件环境 大量的实践证明,在Linux环境下使用Hadoop则更加稳定高效。须注意的是新装系统(CentOS)的机器不可以直接部署Hadoop,需要设置:修改机器名,添加域名映射,关闭防火墙,安装JDK。 【例2】 现有一台CentOS系统机器,且装机时用户名为joe,要求将此机器名修改为cMaster,添加域名映射,关闭防火墙,安装JDK。

详解Qt中connect()函数

一、基本概念 要想了解connect() 函数,要先知道在Qt中什么是什么是信号(SIGNAL)和槽(SLOT)。 信号(SIGNAL):指在特定情况下发射的通知。比如当我们点击了用户界面的一个按钮之后就发射了一个信号。 槽(SLOT):是指对信号进行响应的函数。也就是我们点击了一个按钮后我们要实现的功能。 那么connect() 函数就是Qt 框架中用于将信号(SIGNAL)和槽(SLOT)关联起来的核心函数。 二、用法 1.旧版用法(Qt4和早期Qt5) connect(sender, SIGNAL(signalName()), receiver, SLOT(slotName())); sender:发射信号的对象名称signalName():信号名称receiver:接收信号的对象名称,一般情况下为槽函数所属对象,写this即可slotName():槽函数名称 示例: connect(button, SIGNAL(clicked()), this, SLOT(handleButtonClicked())); 注意: 如果信号与槽函数带参数还需要在函数括号内标出。 2.新版用法(推荐) connect(sender, &SenderClass::signalName, receiver, &ReceiverClass::slotName); 这里引入了基于函数指针的语法,使得编译器可以进行更好的类型检查。但是这里有一个问题:与旧版的写法不同的是,信号与槽函数的参数怎么办? 首先我们知道,在 Qt 的信号与槽机制中,槽函数的参数不能多于信号的参数。也就是说,信号的参数可以多于槽的参数,且槽函数的参数必须是信号参数的一个子集。那么就可以分为如下三种情况: 1.信号和槽函数具有相同数量和类型的参数。这时可以直接连接且无需出现函数参数: connect(lineEdit, &QLineEdit::textChanged, this, &Widget::do_textChanged); 在上面示例中,信号textChanged(QString)和槽函数do_textChanged(QString)参数相同。 2.信号的参数多于槽函数的参数。槽函数将忽略信号的多余参数,这个特性允许你在信号和槽参数不完全匹配的情况下,仍然能够正常工作。正常情况下,不推荐把槽函数设计为overload型。 3.某些信号的参数有默认值。也就是说同一信号的参数分为有参数和无参数,如QCheckBox的clicked()信号和clicked(bool)信号。这时connect()函数有两种写法: a.设置不同名字的槽函数: //槽函数 void do_checked(bool checked); void do_checked_NoParam(); //connect()函数 connect(checkBox, &QCheckBox::clicked, this, &Widget::do_checked); connect(checkBox, &QCheckBox::clicked, this, &Widget::do_checked_NoParam); b.使用模板函数qOverload()来明确参数类型: connect(checkBox, &QCheckBox::clicked, this, qOverload<bool>(&Widget::do_checked)); connect(checkBox, &QCheckBox::clicked, this, qOverload<>(&Widget::do_checked)); 3.自动连接(无需使用connect()函数) 在构建项目时,若勾选了“Generate form”字段,则会生成一个后缀为“.ui”的文件。 那么在ui设计界面种可以选中一个对象,右键选择“Go to slot”或者“转到槽”,在弹出的对话框中再选择信号,那么就会自动生成一个槽函数。如果槽函数的名称符合相应的格式,Qt 会在运行时通过setupUi(this)自动生成connect()函数完成连接。

【C++修行之道】C/C++内存管理

目录 一、C/C++内存分布 1. 选择题: 2. 填空题: 3. sizeof 和 strlen 区别? 二、 C语言中动态内存管理方式:malloc/calloc/realloc/free 1.malloc/calloc/realloc的区别是什么? 2.这里需要free(p2)吗? 三、C++内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 四、operator new与operator delete函数(重点讲解) 4.1 operator new与operator delete函数(重点) 五、new和delete的实现原理 5.1 内置类型 示例说明 示例:没有额外开销(40个字节) 示例:有额外开销(44个字节) 5.2 自定义类型 六、定位new表达式(placement-new) (了解) 七、常见面试题 7.1 malloc/free和new/delete的区别 7.2 内存泄漏 7.2.1 什么是内存泄漏,内存泄漏的危害 7.2.2 内存泄漏分类(了解) 7.2.3 如何检测内存泄漏(了解) 7.2.4如何避免内存泄漏 一、C/C++内存分布 我们先来看下面的一段代码和相关问题 int globalvar = 1; static int staticGlobalvar = 1; void test() { static int staticVar = 1; int localVar = 1; int num[10] = { 1,2,3,4 }; char char2[] = "

MySQL:SELECT list is not in GROUP BY clause 报错 解决方案

一、前言 一大早上测试环境,发现测试环境的MySQL报错了。 SELECT list is not in GROUP BY clause and contains nonaggregated column 二、解决方案 官方文档中提到: 大致意思: 用于GROUP BY的SQL / 92标准要求满足以下条件: SELECT子句的表达式中使用的列必须在GROUP BY子句中。否则,使用该列的表达式是一个聚合函数。GROUP BY表达式只能包含选择列表中的列名,而不能仅用作向量聚合的参数。 首先执行以下查询: 不出所料就是有一个ONLY_FULL_GROUP_BY SELECT @@sql_mode; ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 所以我去到配置文件中,在 mysqld 下配置一下 sql_mode,把 ONLY_FULL_GROUP_BY 去掉 # 添加的行如下 sql_model=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 重启MySQL即可! 可以参考我之前写的一篇文章了解sql_mode中的每个项的意思:点此跳转链接 三、起因分析 起因是昨天修改一个数据表的结构保存失败出现了报错: 1812 - Tablespace is missing for table database/crm_bid_deposit. 这个错误导致我删除表也删不掉,备份数据库也不行,烦死了。 然后翻遍谷歌, 我做了以下尝试: 删除MySQL data目录下对应表的 .ibd 文件,重启MySQL,再去Navicat那边删除对应的表,失败!修改配置项innodb_file_per_table=0,重启,执行过以下命令,失败: SET FOREIGN_KEY_CHECKS=0; ALTER TABLE wk_crm_table.wk_crm_bid_deposit DISCARD TABLESPACE; ALTER TABLE wk_crm_table.wk_crm_bid_deposit IMPORT TABLESPACE; REPAIR TABLE wk_crm_bid_deposit; 无论我怎么操作,Navicat那边还是看到那个数据表

【人机交互 复习】第7章 可视化设计

一、窗口界面类型 1.多文档界面 (1)优点 a.节省系统资源 b.最小的可视集 c.协同工作区 d.多文档同时可视化 (2)缺点 a.菜单随活动文档窗口状态变化,导致不一致性 b.文档窗口必须在主窗口内部,减弱多文档显示优势 c.屏幕显示复杂:子窗口可能在父窗口中被最小化 2.单文档界面 (1)优点 a.从用户角度出发,以文档为中心 b.界面的视觉复杂性小 (2)缺点 a.不能管理分散但相关的文档窗口 b.相关文档不能从相同类型的其他文档中分离 c.文档打开过多时,任务栏可能被占满 3. 标签文档界面 (1)窗口菜单:包含了当前打开窗口的列表 (2)优点:让用户看到哪些窗口是打开的 (3)缺点:不允许用户看到两个及以上的窗口内容 4.菜单 (1)已经成为窗口环境的标准特征 (2)适合初学者,包含完整工具集合 (3)最重要的特性:描述性、一致性 二、 对话框 1.模态对话框: 冻结了它属于的应用,禁止用户做其他操作,需要优先处理对话框中出现的问题。 2.非模态对话框: 打开后无须停止进度,应用程序也不会冻结。 3.分为:属性对话框,功能对话框,进度对话框,公告对话框,错误对话框,警告对话框,确认对话框等。 4.对话框设计原则 (1)把主要的交互操作放在主窗口中 (2)为非模态对话框提供一致的终止命令 (3)设计对话框时要注意展现出明显的视觉层次 (4)每个对话框要要有一个标题来标示它的用途。 (5)不要堆叠标签 三、控件 1.概念 (1)用户和数字产品进行交流的屏幕对象 (2)控件的使用必须恰当且合理 (3)根据用户目标,控件可分为4种基本类型 命令控件 选择控件 显示控件 输入控件 四、工具栏 1.工具栏 VS 菜单 (1)都提供对程序功能的访问 (2)菜单提供完整的工具集,主要用于教学 (3)工具栏是为经常使用的命令设置的,对新手用户帮助不大(工具提示可以在一定程度上缓解这个问题) 2.微软公司的“工具提示”与苹果公司的“气球帮助” (1)工具提示就是一个词,气球帮助就是一句话。 (2)工具提示延时出现的时机非常好,只有当使用者的鼠标放在某个对象上大约1秒的时间之后,它才会显示帮助信息。 (3)而气球帮助,相比起来,实在是太长太占地方了,还不简单明了 3.工具栏使用原则 (1)应以含义及其使用场合为基础 (2)找代表事物的图像要比寻找代表动作或关系的图像容易得多 (3)适当禁用工具栏控件:例如,如果图标按钮被禁止按下,控件本身也应该变为灰色,使禁用状态绝对明显。 五、屏幕复杂性度量 1.布局复杂度 如果可视对象在高度和宽度上经常改变,以及对象与可视交互环境边界之间的距离比较大的话,就可以说这个布局较复杂。(就是组件越多,摆的越复杂,这个复杂度就越高) 这个有个计算公式,也有计算题,但是我实在是搜不到例题,也看不明白。

故障:笔记本电脑更新系统后开机黑屏只剩鼠标

某天上班的时候,发现笔记本电脑在自动更新,更新完了突然右下角落弹出了火绒的提示,发现了一个木马,要删除,名称是explorer.exe,我还在发懵,它已经被删掉了,然后笔记本开始开机,厂商界面正常,自检正常,到了系统账户登陆界面,我这个没有密码,登录界面加载后应该直接进入桌面的,这一次不一样,在系统账户登陆界面加载后,直接黑屏,桌面上只剩下鼠标,鼠标可移动,而且鼠标左右键没有反应,等了很久还是这样。开机重启后也没有用。 我开始以为是系统被更新搞坏了,打算用pe把电脑资料搞出来,然后就重装系统了,没想到pe的桌面能进去,但是进去后读不到笔记本的硬盘,资料就搞不出来,我冷汗都下来了 。 上网查了一下,发现有个前辈遇到一模一样的问题,还写了完整的解决办法,按照他的办法确实解决了。 笔记本电脑更新系统后开机后黑屏只剩鼠标?原因是explorer.exe(资源管理器)被删除了?_explorer.exe被删除了黑屏修复-CSDN博客 基本上完全被前辈说中了,我的问题就是更新后被杀毒软件删掉的那个explorer,我查不到也找不到了,必须删掉火绒,在一番努力后,卸载火绒的时候,它提示我,是否将隔离区里的文件释放,我一看,正是explorer,无语了,释放后,我终于看到桌面了。当时杀毒软件提醒我的时候,我就应该立刻阻止的,就没有后面的事情了。笔记本正常以后马上把资料保存了一份,基本解决了问题。

前端Excel导出实用方案(完整源码,可直接应用)

目录 前言: 技术选型: 主要功能点: 核心代码: 完整代码: 安装sheetjs 全局导出组件代码: 调用示例: mock数据: 开发文档 调用方式: API FAQ 前言: 在前后端分离开发为主流的时代,很多时候,excel导出已不再由后端主导,而是把导出的操作移交到了前端。本文在全局导出组件封装上,保持了高度的扩展性,无论大家用的是element组件库还是antd vue的组件库或者其他的组件库,都容易进行更换。 技术选型: vue + antd vue + sheetjs 前端导出excel导出,需借助第三方插件,目前两款导出最为主流。 一款是sheetjs,优点支持多种excel格式,但是官方文档全是英文 SheetJS Community Edition | SheetJS Community Edition 一款是exceljs,优点是中文文档很全,缺点是导出格式受限,仅支持部分格式 https://github.com/exceljs/exceljs/blob/master/README_zh.md 因公司业务需要,用户需支持多种excel的格式,所以本文笔者主要针对sheetjs进行封装调用。 主要功能点: 自定义dom拆分成多张表导出(默认超过1万条数据自动拆分)自定义过滤函数各种标题自定义数据排序支持大数据量导出 核心代码: // 文件名称 const filename = fileName; //Excel第一个sheet的名称 const ws_name = sheetName; // 创建sheet const ws = XLSX.utils.aoa_to_sheet([this.tableTitle]); //添加数据 XLSX.utils.sheet_add_json(ws, apiData, { skipHeader: true, origin:origin }); // 创建wokbook const wb = XLSX.

同时使用磁吸充电器和Lightning时,iPhone充电速度会变快吗?

在智能手机的世界里,续航能力一直是用户关注的焦点。苹果公司以其创新的MagSafe技术和传统的Lightning接口,为iPhone用户提供了多样化的充电解决方案。 然而,当这两种技术同时使用时,它们能否带来更快的充电速度?本文将探讨这一问题,并揭示MagSafe外接电池与Lightning充电线背后的科技原理。 一、MagSafe:无线充电的新篇章 MagSafe技术是苹果公司的一项创新,它通过磁力吸附的方式,为用户提供了一种全新的无线充电体验。 MagSafe外接电池的设计,不仅考虑了充电的便捷性,更在保护手机电池方面做出了深思熟虑的考量。 它允许手机在消耗外接电池的电量之前,优先使用内置电池的电力,从而延长了电池的使用寿命。 二、Lightning:传统与效率的结合 Lightning接口作为苹果设备的传统充电方式,以其高速的数据传输和充电效率而广受好评。当iPhone通过Lightning端口连接到充电器时,它可以以最高15瓦的功率进行快速充电,大大缩短了充电时间。 三、双重充电:速度与效率的权衡 当用户同时使用MagSafe外接电池和Lightning充电线为iPhone充电时,可能会好奇这是否会带来更快的充电速度。 然而,根据苹果的说明,当这两种充电方式同时使用时,iPhone实际上只会通过Lightning连接器进行充电。 这意味着,尽管MagSafe外接电池提供了一种额外的充电途径,但在实际使用中,它并不会与Lightning充电线形成叠加效应,从而提升充电速度。 此外,用户在使用MagSafe外接电池时,可能会收到一条通知,提示iPhone最多只能充电至90%。 若要继续充电超过90%,需要用户手动在控制中心调整设置。这一设计可能是出于对电池健康和充电安全的考虑。 四、安全性:双重充电的保障 对于同时使用MagSafe和Lightning充电的安全性,苹果公司已经给出了明确的指导。当iPhone通过这两种方式同时充电时,系统会自动选择更为稳定的Lightning充电方式,确保充电过程的安全性和稳定性。 MagSafe外接电池和Lightning充电线,作为苹果公司为iPhone用户提供的两种充电解决方案,各自有着独特的优势和设计理念。 虽然它们在同时使用时并不会带来更快的充电速度,但它们的存在无疑为用户提供了更多的充电选择和灵活性。