本地部署Whisper Web结合内网穿透实现远程访问本地语音转文本模型

本地部署Whisper Web结合内网穿透实现远程访问本地语音转文本模型 🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk) 💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。 目录 前言1.本地部署Whisper Web1.1 安装git1.2 安装Node.js1.3 运行项目 2. Whisper Web使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 公网访问测试6. 配置固定公网地址总结 目录 前言1.本地部署Whisper Web1.1 安装git1.2 安装Node.js1.3 运行项目 2. Whisper Web使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 公网访问测试6. 配置固定公网地址总结 前言 OpenAI开源的 Whisper 语音转文本模型效果都说还不错,今天就给大家推荐 GitHub 上一个开源项目 Whisper Web,允许你可直接在浏览器中运行使用 Whisper。 基于 ML 进行语音识别,并可通过 WebGPU 进行运行加速,无需后端服务器,直接开箱即用。另外,识别到的文本支持导出 TXT 和 JSON 两种文件格式。 而结合cpolar内网穿透工具使用,还能轻松实现远程访问本地Windows系统部署的Whisper Web进行语音转文本操作,无需公网IP,也不用设置路由器那么麻烦。 1.本地部署Whisper Web 接下来教大家如何在Windows系统本地安装Whisper Web 项目地址:https://github.com/xenova/whisper-web 1.1 安装git 首先需要从github上克隆Whisper Web(如果没有安装git的话,进入git官网进行下载windows版本 https://git-scm.com/downloads) 打开终端,从github下载项目到本地,执行下面的命令: git clone https://github.

iMAC 苹果macOS 连接Windows SMB 共享文件服务器

分加域和不加域两种情况。 主要设置方法一样,如果加域身份验证会自动通过,如果未加域,需要手动输入域身份:sh.com\user1(域名\用户的格式) 苹果系统加入windows域参考:苹果加域教程 1、主菜单>前往>连接服务器 2、输入服务器域名,点连接 3、如果已加域,此处无提示,直接跳过。如果未加域,按如下格式输入,勾选记住密码。 4、弹出的服务器列表,点好。 5、完成后列出服务器内容。 6、点击左侧的地址切换到服务器,拖到桌面创建快捷方式。 7、双击桌面的快捷方式,提示不能打开,点修复替身。 8、依次点击准确位置,点打开。 9、完成后图标如下图所示。 **** end@2024.4.2

Echarts实现动态背景

最近在公司工作中,遇到一个图表的需求,要求实现背景图是可以动态跟随最高点而改变位置的。 好玩的是,我实现了效果,但是没在官方配置项看到我这个用法的出处,所以记录一下。 话不多说,配置项也没什么好解释的,直接上代码!!! that.chartOption = { grid: { left: '3%', top: '15%', //8原本 right: '8%', bottom: '28%', containLabel: true, show: true, backgroundColor: { //这个就是控制背景色的,我使用的是渐变,offset是我动态计算的,后面会贴方法。 colorStops: [ { offset: 0, color: 'blue' }, { offset: that.percentage, color: 'red' }, { offset: 1, color: 'blue' } ] } }, tooltip: { trigger: 'axis' }, xAxis: { top: '15%', name: '距离', nameTextStyle: { color: '#fff' }, type: 'category', boundaryGap: false, //是否留白 axisLine: { show: true }, //显示轴 axisTick: { show: false }, //轴刻度线 axisLabel: { show: true, color: '#fff' }, //显示轴的数值和颜色 data: xData // min: this.

【C++】类和对象(四)拷贝构造、赋值运算符重载

文章目录 四、拷贝构造函数干嘛的?写拷贝构造函数的注意事项正确写法 不显示定义拷贝构造函数的情况浅拷贝:one:示例:内置类型:two:示例:自定义类型一个提问 深拷贝 五、赋值运算符重载运算符重载函数原型注意调用时的两种书写方式完整实现代码 赋值运算符重载干嘛的?连续赋值总结赋值运算符重载格式默认生成的复制重载函数的行为默认生成的函数行为总结赋值运算符是否可以重载为全局函数 书接上回: 【C++】类和对象(三)构造与析构 四、拷贝构造函数 干嘛的? 拷贝构造函数:用同类型的其他对象 构造一个(初始化 )新的对象 代码演示: class Date { public: Date(int year = 1, int month = 1, int day = 1) { _year = year; _month = month; _day = day; } //Date d2(d1); Date(Date& d) { _year = d._year; _month = d._month; _day = d._day; } void Print() { cout << _year << "-" << _month << "-" << _day << endl; } private: int _year; int _month; int _day; }; int main() { Date d1(2024, 1, 28); Date d2(d1); d1.

Llama 3 与 GPT-4:哪个更好?

Llama 3 和 GPT-4 是目前公开可用的两种最先进的大型语言模型(LLM)。让我们通过比较这两个模型的多模态性、上下文长度、性能和成本,来看看哪个 LLM 更好。 什么是 GPT-4? GPT-4 是 OpenAI 开发的最新大型语言模型(LLM)。它基于旧的 GPT-3 模型,并使用了不同的训练技术和优化方法,利用了更大规模的数据集。这显著增加了 GPT-4 的参数量,据传其较小的专家模型总共有 1.7 万亿个参数。通过新的训练、优化和更多的参数,GPT-4 在推理、解决问题、上下文理解以及处理复杂指令方面提供了改进。 目前有三种模型变体: GPT-4: 是 GPT-3 的进化版,在速度、准确性和知识库方面有显著提升。 GPT-4 Turbo: 是 GPT-4 的优化版本,旨在提供更快的性能,同时降低运营成本。 GPT-4o(Omni): 扩展了 GPT-4 的能力,集成了多模态输入和输出,包括文本、视觉和音频。 什么是 Llama 3? Llama 3 是由 Meta AI(Facebook、Instagram 和 WhatsApp 的母公司)开发的开源大型语言模型(LLM)。它使用监督微调、拒绝采样和策略优化相结合的方式进行训练,使用包括数百万个人工标注示例在内的多样化数据集。其训练重点是高质量的提示和偏好排名,旨在创建一个多才多艺且功能强大的 AI 模型。 目前有两种 Llama 3 模型向公众开放:Llama 3 8B 和 Llama 3 70B。这里的 “B” 代表十亿,指的是模型的参数规模。Meta 还在训练一个 Llama 3 400B 模型,预计将在 2024 年底发布。 您可以通过 Meta AI 访问 Llama 3 及其生成式 AI 聊天机器人。或者,您可以下载 Llama 3 模型并通过 Ollama、Open WebUI 或 LM Studio 在本地计算机上运行这些 LLMs。

MacOS设备远程登录配置结合内网穿透实现异地ssh远程连接

文章目录 前言1. MacOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接MacOS3.1 MacOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接MacOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 💡推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站】 前言 本次教程将分享如何使用cpolar内网穿透工具,映射ssh服务默认端口:22端口,获取公网地址,实现在公网环境下的ssh远程登录MacOS系统设备,无需公网IP,也无需设置路由器。 MacOS系统自带有Secure Shell 客户端,它可让您登录到侦听传入SSH连接的远程服务器和台式机。我们可以用ssh username@ip来ssh到服务器,但通常局限于局域网内的远程。 1. MacOS打开远程登录 打开系统偏好设置,点击共享 勾选打开远程登录,复制右侧的ssh远程登录命令 2. 局域网内测试ssh远程 本例以windows系统测试ssh远程,点击开始菜单栏搜索cmd,打开命令提示符,输入ssh命令,提示确认,输入yes并回车,提示输入MacOS登录密码 ssh username@ip地址 如: ssh eve@192.168.0.106 局域网内ssh远程登录MacOS成功。 3. 公网ssh远程连接MacOS 当成功实现在局域网内ssh远程登录MacOS后,接下来,我们将通过cpolar内网穿透映射22端口,实现在公网环境下ssh远程连接MacOS,无需公网IP,也无需设置路由器。 cpolar官网:https://www.cpolar.com/ 3.1 MacOS安装配置cpolar MacOS安装cpolar内网穿透可通过homebrew包管理器进行安装,无需手动下载安装包。 安装homebrew Homebrew是一款Mac OS下的套件管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 通过Homebrew包管理器安装cpolar内网穿透 brew tap probezy/core && brew install cpolar token认证 登录cpolar官网后台,点击左侧的验证,查看自己的认证token,之后将token贴在命令行里 cpolar authtoken xxxxxxx 安装服务 sudo cpolar service install 启动服务 sudo cpolar service start 登录cpolar web UI管理界面 在浏览器上访问本地9200端口【http://127.

Suno AI如何巧用工具生成自己喜欢的歌词

上一篇文章说到 Suno AI,借助不同的创造性元素生成自己音乐风格创造音乐。这一次来说Suno AI如何巧用工具生成自己喜欢的歌词,并借助不同的主题或信息、风格、心情、流派进行协助自己快速制作一首让自己满意的歌词。 文章目录 前言一、主题或信息二、风格三、心情三、流派风格三、如果使用工具引导辅助性帮我们生成三、改编/自编歌词,增加创造性元素与元标签四、音乐风格选择生成总结 前言 提示:Suno AI如何巧用工具生成自己喜欢的歌词: 例如:使用工具并借助不同的主题或信息、风格、心情、流派进行协助自己快速制作一首让自己满意的歌词。 提示:以下是本篇文章正文内容,下面可以借助工具以及不同的主题或信息、风格、心情、流派进行生成歌词,可供参考 一、主题或信息 可以借助主题信息,让自己了解生成歌词那个方向 Random 随机的 Love 爱情 Heartbreak 伤心欲绝 Friendship 友谊 Social issues 社会话题 Nature 自然界 Adventure 冒险 Personal growth 个人成长 Loss 失落 Celebration 庆典 Fantasy 幻想 Historical events 历史事件 二、风格 可以借助风格,让自己了解生成歌词那个方向 Random 随机的 Narrative 叙述的 Abstract 抽象 Direct and personal 直接和个人 Philosophical 哲学 Humorous 幽默 Political 政治的 Poetic imagery 诗意的意象 三、心情 可以借助心情,让自己了解生成歌词那个方向 Random 随机的 Joyful 快乐 Melancholic 忧郁

**发现神器:一键搞定ADB与Fastboot的最新驱动安装工具**

发现神器:一键搞定ADB与Fastboot的最新驱动安装工具 项目介绍 在Android开发者的日常工作中,ADB(Android Debug Bridge)和Fastboot是不可或缺的工具。它们允许开发者通过USB接口对设备进行调试或执行底层操作。然而,寻找并正确安装最新的ADB和Fastboot以及相应的USB驱动常常是一个令人头疼的过程。现在,一款名为“最新ADB Fastboot和USB驱动安装器”的工具横空出世,它为Windows用户提供了一键式解决方案。 该工具由fawazahmed0创建,确保每次都能自动下载和安装最新型号手机所需的ADB、Fastboot及其USB驱动。不论你是希望更新设备固件的专业开发者,还是仅仅想要探索智能手机更多可能的科技爱好者,这款工具都将大大简化你的工作流程。 项目技术分析 “最新ADB Fastboot和USB驱动安装器”采用脚本语言编写的批处理文件实现其功能,这意味着即使没有复杂的编程技能,任何Windows用户也能轻松运行它。此外,它还利用了GitHub上的最新版本控制来始终保持工具的及时性和有效性。 值得注意的是,工具内置有错误处理机制,能够应对不同品牌和型号手机可能出现的各种安装问题,如Google设备的特殊要求等。这一特性保证了即使是初学者也能顺利完成安装过程,无需额外的技术支持。 项目及技术应用场景 对于那些经常需要在命令行中与Android设备交互的开发者来说,“最新ADB Fastboot和USB驱动安装器”不仅节省时间,更提升了工作效率。无论是测试新应用的功能、调试代码,还是刷入自定义ROM,有了这个工具,只需几步就能配置好必要的环境。 而对普通的Android用户而言,这款工具也提供了友好的图形界面,比如‘最新ADB启动器’桌面快捷方式,使得刷机、恢复系统或解锁Bootloader等高级操作变得更加简便易行。 项目特点 一键式安装:无需手动查找和下载对应的ADB、Fastboot和USB驱动。 兼容广泛:适用于从Windows 7到最新版Windows的所有操作系统,覆盖市场上的大部分手机型号。 持续更新:始终提供最新的工具版本,以适应新的硬件需求和技术发展。 用户反馈优秀:已获得众多用户的高度评价,证明了其稳定性和实用性。 总之,“最新ADB Fastboot和USB驱动安装器”是一款不可多得的好工具,无论你是专业开发者还是普通用户,都值得立即尝试! 获取链接:直接访问点击这里,即可开始体验便捷高效的ADB/Fastboot安装体验。别忘了,给作者点个星标表示支持哦!

抛开收费不谈,前端开发工具选择webstorm还是vscode?

工欲善其事,必先利器。好的前端开发工具绝对是前端生产力的提升利器,贝格前端工场重点对比一下webstorm和vscode两款IDE工具。 一、webstorm简介 WebStorm是由JetBrains公司推出的一款专业的JavaScript开发工具,旨在提供前端开发人员一个强大、全面的集成开发环境。 1. 代码编辑: WebStorm提供了强大的代码编辑功能,包括代码自动补全、语法高亮、代码折叠、代码格式化等,帮助开发人员编写高效、规范的代码。 2. 代码导航: WebStorm支持快速导航到变量、函数、类等定义处,方便开发人员查看和修改代码。 3. 代码重构: WebStorm提供了丰富的代码重构功能,包括重命名、提取函数、提取变量等,帮助开发人员优化和重构代码结构。 4. 调试器: WebStorm集成了强大的调试器,支持在浏览器中进行调试,可以设置断点、查看变量值、调试运行时错误等。 5. 版本控制: WebStorm集成了常用的版本控制工具,如Git、SVN等,方便开发人员进行代码版本管理和团队协作。 6. 代码分析: WebStorm具有强大的代码分析功能,可以检测代码中的潜在问题和错误,提供实时的代码质量反馈。 7. 智能提示: WebStorm提供智能的代码提示功能,可以根据上下文和代码语境提供相关的建议和提示,提高开发效率。 8. 插件支持: WebStorm支持丰富的插件和扩展,可以根据个人需求和喜好进行定制和扩展,满足不同开发场景的需求。 9. 跨平台支持: WebStorm支持Windows、Mac和Linux等多个操作系统,开发人员可以在不同平台上使用相同的开发工具。 WebStorm作为一款专业的JavaScript开发工具,提供了丰富的功能和工具,帮助开发人员提高代码质量、开发效率和团队协作能力。其稳定性、全面性和专业性受到广大前端开发人员的认可和青睐。 Tip.webstorm如何收费 WebStorm是一款商业软件,采用订阅模式进行收费。用户可以选择不同类型的订阅计划,包括个人订阅、公司订阅和教育订阅等。WebStorm的订阅费用取决于订阅类型、订阅周期和用户数量等因素。通常情况下,个人订阅的费用相对较低,公司订阅的费用会根据公司规模和需求而有所不同。 JetBrains公司还提供免费的试用版,用户可以在一定期限内免费试用WebStorm的全部功能。如果用户决定购买正式版的许可证,可以选择订阅计划并按照要求支付相应的费用。 二、vscode简介 VSCode(Visual Studio Code)是一款由微软推出的免费开源的现代化代码编辑器,旨在提供轻量级但功能强大的开发环境。以下是VSCode的详细介绍: 1. 多语言支持: VSCode支持多种编程语言,包括JavaScript、TypeScript、HTML、CSS、Python、Java等,使其适用于各种项目开发。 2. 丰富的扩展生态系统: VSCode拥有丰富的扩展库,用户可以根据需要安装各种插件,扩展编辑器功能,满足不同开发需求。 3. 智能代码补全: VSCode具有强大的智能代码补全功能,根据上下文和代码语境提供准确的代码提示,提高开发效率。 4. 调试功能: VSCode集成了调试器,支持在编辑器中进行代码调试,设置断点、查看变量值、监控程序执行流程等。 5. 版本控制: VSCode内置了对Git的支持,可以方便地进行代码版本管理、提交和同步操作,提高团队协作效率。 6. 自定义性强: VSCode支持用户自定义主题、快捷键、布局等,可以根据个人喜好进行定制,打造适合自己的开发环境。 7. 轻量级高性能: VSCode采用轻量级的设计,启动速度快,占用资源少,具有良好的性能表现,适用于各种开发场景。 8. 跨平台支持: VSCode支持Windows、Mac和Linux等多个操作系统,让开发人员可以在不同平台上使用相同的开发工具。 VSCode作为一款现代化的代码编辑器,具有丰富的功能、强大的扩展性和良好的性能表现,受到广大开发人员的欢迎。其免费、开源的特点使其成为许多开发人员的首选编辑器。 三、两者的对比 WebStorm和VSCode都是流行的前端开发工具: 1. 功能和特性: - WebStorm:WebStorm是一款专业的集成开发环境,提供了强大的代码编辑、调试、代码分析、版本控制等功能,适合开发大型项目和专业开发人员使用。- VSCode:VSCode是一款轻量级代码编辑器,具有丰富的扩展库、智能代码补全、调试功能等特性,适合个人开发者和小型项目使用。 2.

Chrome谷歌浏览器如何设置,才能正常使用?

Chrome浏览器,也被称为谷歌浏览器,由于简洁的界面设计,极快的响应速度,强大的插件商店,在全球浏览器市场份额中一直都处于遥遥领先的地位。但是因为2010年谷歌宣布退出中国,国内不能再使用谷歌的服务,所以在国内需要设置一下才能正常的使用,如何设置呢?今天教给大家。 首先下载Chrome浏览器,Chrome浏览器的官网在国内是可以正常访问的,想要下载Chrome浏览器的同学建议直接到官网下载,不然会很容易下载到假的Chrome浏器器。第一次打开Chrome界面看起来比较简洁,但如果此时使用Chrome上网冲浪的话,那么你很大可能是访问不了的,因为Chrome的搜索引擎默认使用是谷歌搜索,而谷歌的服务在国内是无法使用的,所以我们通过安装主页插件解决这个问题。插件其实也是Chrome的灵魂所在,但是谷歌的插件商店在国内也是访问不了的,我们需要使用第三方的插件商店。 我经常用的是《收藏猫》插件商店,里面常用的插件都可以下载的,我们就下载收藏猫这个主页插件,因为是第三方插件商店,下载的插件会被浏览器阻止,我们只需点击同意下载,下载完成后也不能自动安装,需要我们手动安装插件。 第一步:进入插件管理页面,点击Chrome浏览器右上角的三个点,然后选择扩展程序 点击管理扩展程序,此时我们就来到插件管理页面 我们需要打开右上角的开发者模式,然后刷新这个页面。 需要注意的是,第一次安装插件一定要打开这个开关,并且刷新这个页面才可以安装插件。然后把刚下载的插件拖到这个页面就可以安装插件了 同理,其他插件也可以通过相同的方法进行安装。主页插件安装成功后,我们再打开新主页就可以直接使用了。 以上就是本期的全部内容了,如果对你有帮助,记得点赞哦。

使用ERNIE Bot SDK和一条核心prompt开发AI“划拳“游戏!

项目背景 划拳是汉族民间饮酒时一种助兴取乐的游戏,起源于汉代。 游戏规则如下: 两人同时伸出一只手,先攥起拳头,代表财不外露。再伸出一到五个手指,表示从零到五之间的数字,同时嘴里大声喊出两人所出数字之和。 两人都猜对或都猜错,则划拳继续。直到一方猜对才为赢家,而猜错方为输家,要罚酒。 这套酒令完整的说法是:"一条龙、哥俩好、三星照、四喜财、五魁首、六六六、七个巧、八匹马、九连环和十全有"。 在游戏中,我们借助大模型的强大能力,让大模型扮演你的划拳对手,玩家可以通过简单的操作与大模型进行划拳。 希望在你独自一人喝酒的时候,能通过这款游戏找到乐趣。 项目方案 划拳游戏的流程如下: 开始阶段: 两位玩家同时伸出一只手,用攥起的拳头和伸出一到五个手指表示从零到五这几个数字。 与此同时,两位玩家嘴里喊出从0到10的数字。 判断阶段: 比较两位玩家伸出的手指表示的数字相加的和与其中一位玩家嘴里喊出的数字是否相同。 如果相同,则喊出该数字的玩家获胜;如果不同,则继续下一轮。 惩罚阶段: 输的玩家需要按照规则喝酒或其他约定的惩罚。 我们希望模型扮演一个划拳游戏的玩家,核心是希望模型输出两个数字:出拳数字和猜拳数字。 核心prompt设计如下: # 核心prompt game_prompt = ("你现在在陪我玩划拳游戏,我已经出拳了,现在到你了。你的任务如下:" "1.输出一个0-5之前的数字,表示你的出拳数字;" "2.输出一个0-10之间的数字,表示你的猜拳数字;" "3.将两个数字以{'gesture':'','predict':''}的JSON格式返回,其中gesture表示你的出拳数字,predict表示你的猜拳数字。" "注意: 除了JSON格式数字以外,不要返回其他任何内容。") 代码实现 1. 安装项目依赖 In [1] # 安装依赖 ! pip install -U erniebot Looking in indexes: https://mirror.baidu.com/pypi/simple/, https://mirrors.aliyun.com/pypi/simple/ Collecting erniebot Downloading https://mirrors.aliyun.com/pypi/packages/b8/82/8bcbb280e13da2dd67667423d6ba34cb72f54c4201fb18816adc7de4914f/erniebot-0.5.3-py3-none-any.whl (65 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 65.9/65.9 kB 1.0 MB/s eta 0:00:00a 0:00:01 Requirement already satisfied: aiohttp in /opt/conda/envs/python35-paddle120-env/lib/python3.10/site-packages (from erniebot) (3.

服务器安装JDK,Maven等常用环境

生产环境部署服务器需要安装一些常用工具,下面我就把常用的jdk,maven,node,git的安装方法和步骤演示 一、安装JDK环境 执行如下命令,安装JDK,所有命令都是 复制,粘贴,回车 yum install -y java-1.8.0-openjdk-devel.x86_64 如图安装成功 查看/usr/lib/jvm目录下是否已安装JDK ls /usr/lib/jvm 如图安装成功 配置java环境变量 vim /etc/profile 按i键进入编辑模式,在文件的末尾加上以下代码。注意:等号两边不要有空格 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-2.0.1.1.al8.x86_64/ export PATH=$PATH:$JAVA_HOME/bin 如图配置成功 按ECS键退出编辑模式,输入:wq并回车,退出文件并保存 执行如下命令,刷新配置文件以生效 source /etc/profile 执行如下命令,查看JDK版本,检查JDK安装是否成功 java -version 到这里jdk就安装上了 二、安装Maven环境 执行如下命令,下载maven wget https://mirrors.aliyun.com/apache/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz 解压maven并移动到指定目录/usr/share/maven tar -xzvf apache-maven-3.8.8-bin.tar.gz mv apache-maven-3.8.8 /usr/share/maven 查看maven是否解压并移动成功 ls /usr/share/maven 执行如下命令,在maven安装目录下创建maven仓库文件夹 mkdir /usr/share/maven/repository 执行如下命令,进入/usr/share/maven/conf/目录,编辑settings.xml文件 vim /usr/share/maven/conf/settings.xml 按i键进入编辑模式,找到 标签对 添加这段代码 <localRepository>/usr/share/maven/repository</localRepository> 在 标签对中删除如下内容 添加 标签对,指向阿里云国内maven镜像仓库,提供java下载所需依赖项 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> 按ECS键退出编辑模式,输入:wq并回车,退出文件并保存。 配置maven环境变量。 执行如下命令,编辑/etc/profile文件 vim /etc/profile 按i键进入编辑模式,在/etc/profile文件的末尾加上以下代码

基于大数据的农村产权交易与数据可视化平台设计和实现(源码+LW+部署讲解)

博主介绍:✌全网粉丝50W+,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文降重、长期答辩答疑辅导、腾讯会议一对一专业讲解辅导答辩、模拟答辩演练、和理解代码逻辑思路。 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅ Java项目精品实战案例《100套》 Java微信小程序项目实战《100套》 Python项目实战《100套》 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人 ​ 系统介绍: 吉林省农村产权交易与数据可视化平台是一个综合性的在线服务平台,旨在促进农村产权的高效流转和交易。该平台提供用户注册、信息发布、政策法规查询、项目分类浏览等功能,支持集体资产、承包地经营权等各类农村产权的交易撮合。平台通过合同签订指导和项目评价机制保障交易的合法性及质量,同时后台系统管理和用户信息服务确保了平台的稳定运行和用户体验。通过数据可视化技术,平台实现了交易流程的透明化和信息的集中展示,加强了监管效率并为用户提供决策支持,是推动农业发展和农村改革的重要工具。 系统采用基于Java语言网站开发技术设计的,结合Mysql数据库管理系统对吉林省农村产权交易信息进行管理。按照软件工程学理论完成各阶段设计,经过调试测试达到了管理吉林省农村产权交易信息的能力。满足了管理员和用户的需要。论文从系统开发过程概述、开发工具简介、系统总体设计、系统开发、软件测试等几个方面进行了介绍。最后总结了系统开发的得失。 程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。 ​ 程序操作流程图 首先前端通过Vue和axios发送HTTP请求到后端的登录接口。在后端接收登录请求的Controller会使用`@RequestParam Map<String, Object> params`来接收前端传递的用户参数,用户名和密码。然后后端根据接收到的参数创建一个查询条件封装对象MyBatis的EntityWrapper用于构建查询条件。接着在业务层,调用相应的service方法来查询数据库中是否存在匹配的用户信息。这个查询方法Login()会将前端传递的对象参数传递到后台的DAO层,进行数据库的交互操作。如果存在符合条件的用户,则会返回相关的用户信息。最后在后端控制器中将查询结果封装成响应体,通过`return R.ok().put("data", userService.selecView(ew))`将用户信息返回给前端。前端收到响应后,可以通过调用Vue、ElementUI等组件来渲染登录结果,例如显示用户信息或者跳转到相应的页面。 详细视频演示 请联系我获取更详细的演示视频 功能截图: 在系统前台首页,调用`$route(newValue)`方法监听路由变化,根据当前的路由地址来确定活动菜单的索引,并且根据路由的哈希部分(即URL的`#`后面的部分)来判断是否需要滚动页面到顶部或者某个特定元素的位置。如果不是首页,会将页面滚动到指定元素处,否则滚动到页面顶部。另外通过`headportrait()`方法用于更新组件渲染点前用户头像。在用户登录后,后端返回了新的用户信息,需要及时更新页面上的用户头像信息。 代码实现: /** * 登录相关 */ @RequestMapping("users") @RestController public class UserController{ @Autowired private UserService userService; @Autowired private TokenService tokenService; /** * 登录 */ @IgnoreAuth @PostMapping(value = "/login") public R login(String username, String password, String role, HttpServletRequest request) { UserEntity user = userService.

【C++高阶】探索STL的瑰宝 map与set:高效数据结构的奥秘与技巧

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:初步了解 二叉搜索树 🌹🌹期待您的关注 🌹🌹 ❀map与set 📒1. 关联式容器📙2. 键值对📕3. 树形结构的关联式容器📜4. set 与 multiset🎩set的概念🎈multiset的概念🧩set的使用🌈set的模板参数列表🌞set的构造🌙set的迭代器⭐set的其他函数操作 📚5. map 与 multimap🎩map的概念🎈multimap的概念🧩map的使用🌈map的模板参数说明🌞map的构造🌙map的迭代器⭐map的其他函数操作 📖6. 总结拓展💧在实际中的应用🔥总结 前言: 在编程的世界里,数据结构的选择往往决定了程序的效率和稳定性。而在C++的STL(Standard Template Library)库中,map和set无疑是两颗璀璨的瑰宝。它们以其独特的数据存储和检索方式,为我们提供了高效且有序的键值对存储和集合管理方案 map和set不仅拥有自动排序的特性,还提供了丰富的成员函数和迭代器接口,使得我们可以轻松地对其进行操作和管理。无论是在算法竞赛中,还是在日常编程中,它们都是不可或缺的工具 我们将从map和set的定义和特性开始,介绍它们的基本用法和常用成员函数。接着,我们将通过示例代码,展示如何在实际编程中使用它们。同时,我们还将探讨一些常见的错误用法和注意事项,帮助你避免在使用map和set时遇到坑 让我们一起踏上学习 map与set 的旅程,探索它带来的无尽可能! 📒1. 关联式容器 在初阶阶段,我们已经接触过STL中的部分容器,比如:vector、list、deque、 forward_list(C++11)等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身 关联式容器(Associative Containers) 是C++标准模板库(STL)中的一类重要容器,主要用于存储和快速检索键值对(key-value pairs)形式的数据。这类容器与序列式容器(如vector、deque、list)的主要区别在于,关联式容器中的元素是按照特定的排序准则(通常是键的大小)进行排序的,从而允许通过键来快速查找、插入和删除元素 关联式容器: 也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高 📙2. 键值对 概念: 用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息,比如我们上一篇所提到的kv模型结构 存在对应关系 SGI-STL中关于键值对的定义:(示例) template <class T1, class T2> struct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair(): first(T1()), second(T2()) {} pair(const T1& a, const T2& b) : first(a) , second(b) {} }; 📕3.

【初阶数据结构】深入解析带头双向循环链表:探索底层逻辑

🔥引言 本篇将介绍带头双向循环链表底层实现以及在实现中需要注意的事项,帮助各位在使用过程中根据底层实现考虑到效率上问题和使用时可能会导致的错误使用 🌈个人主页:是店小二呀 🌈C语言笔记专栏:C语言笔记 🌈C++笔记专栏: C++笔记 🌈初阶数据结构笔记专栏: 初阶数据结构笔记 🌈喜欢的诗句:无人扶我青云志 我自踏雪至山巅 文章目录 一、前文二、实现带头双向循环链表2.1 认识头节点2.2 链表中节点成员2.3 创建双向循环链表的节点2.4 双向循环链表的插入节点2.4.1 双向循环链表的尾插 2.4.2 双向循环链表的头插 2.5 双向循环链表的删除节点2.5.1 双向循环链表的尾删2.5.2 双向循环链表的头删 2.6 双向循环链表的查找2.7 实现双向循环链表任意位置的插入和删除2.7.1 任意位置插入2.7.2 任意位置删除 2.8 双向循环链表的打印 三、双向循环链表的好处 一、前文 链表的分类有很多种,只需要将无头单向非循环链表和带头双向循环链表掌握,也就理解了剩下链表构成和实现。带头双向循环链表,结构复杂,一般只用于单独存储数据。但是也由于结构,带来了很多的优势,从而复杂结构,反而简单低实现。 二、实现带头双向循环链表 2.1 认识头节点 头节点(哨兵位)是指链表里面第一个节点,它不存放任何信息或存储任何有效元素,起到"放哨"作用,作用是减少了对一个节点是否为空的判断。 对于之前实现的单链表是不带哨兵位的,但是称第一个节点为头节点是不规范的,但是那样方便学习中称呼。 2.2 链表中节点成员 首先节点的成员:有效带数值,前驱指针,后继指针 前驱指针:以当前节点为参照物,向左就是前驱指针 后继指针:以当前节点为参照物,向右就是后继指针 typedef int LTDataType;//处理不同的数据类型 typedef struct SLTlistNode { LTDataType val; struct SLTlistNode* next; struct SLTlistNode* prev; }SLNode; 2.3 创建双向循环链表的节点 SLNode* CreatNewNode(LTDataType x) { SLNode* newnode = (SLNode*)malloc(sizeof(SLNode)); if (newnode == NULL) { perror("

揭示数据库内核的奥秘--手写数据库toadb开源项目

揭示数据库内核的奥秘–手写数据库toadb 数据为王的时代 在信息化时代,数据已成为企业和应用不可或缺的核心,而数据库不仅是数据的仓库,更是支撑业务决策、系统运行的基石。对于求职者而言,掌握数据库知识已成为求职市场上的必考内容。从大数据预测分析到人工智能,从金融行业到电子商务,从医疗健康到科研教育,数据库的应用领域无处不在,其重要性不言而喻。 数据库内核,作为数据库系统的核心,承载着数据存储、检索、管理等关键功能。它像一座坚固的城堡,守护着数据的安全与完整。揭秘数据库内核的奥秘,不仅有助于我们深入理解数据库的工作原理,更能提升我们在数据处理、系统优化等方面的能力。 数据库内核的奥秘体现在其复杂的内部结构和精细的算法设计上。它采用各种高效的数据结构和索引技术,确保数据检索的快速与准确;通过复杂的并发控制和事务管理机制,保障数据的一致性和完整性;同时,它还需具备强大的容错能力和可扩展性,以应对各种复杂的业务场景和不断增长的数据需求。 了解数据库内核的奥秘,不仅能让求职者在面试中脱颖而出,更能为职业生涯的长远发展奠定坚实的基础。因此,对于有志于从事数据库相关工作的求职者来说,深入学习和掌握数据库内核知识,无疑是迈向成功的重要一步。 探索内核奥秘 toadb数据库架构是一个精心设计、高效运作的系统,它承载着数据的存储、查询、处理和分析等多重任务。 从SQL输入到数据返回,经过词法/语法解析,生成逻辑/物理执行计划树,递归执行(火山模型),数据按列分组存储(PAX模型), 每一步都经过精心优化,确保用户能够高效、准确地获取所需信息。 toadb的源码已经完整开源 toadb源码, 大家有兴趣可以关注Star或者fork,代码在持续更新当中。 在toadb中,SQL是用户与数据库交互的桥梁。用户通过输入SQL语句,表达他们的数据需求。 随后,SQL解析器会将这些语句转化为数据库能够理解的内部表示形式,生成一个执行计划。 执行计划详细描述了如何获取用户所需的数据,包括数据的存储位置、需要使用的索引、数据处理的顺序等。 执行器负责按照执行计划进行数据的检索和处理。它通过访问存储层,获取用户所需的数据,并进行必要的计算和分析。 在数据检索和处理的过程中,toadb采用了并发控制和事务管理机制,确保数据的一致性和完整性。同时,它还通过日志系统记录所有的数据库操作,以便在发生故障时能够恢复数据。 toadb的存储层采用了高性能的数据存储技术,能够支持大规模数据的存储和快速检索。它采用了多种存储策略,如分区、分片、复制等,以确保数据的高可用性和可扩展性。 toadb创新与特性 除了数据库核心模块以外,辅助核心模块更高效完成数据存储和查询,在toadb中增加了多任务并发,内存管理,数据缓存,行列混存,以及运行日志等特性模块,来提升对物理资源的高效利用。 多线程架构 现在的CPU处理器都采用了多核架构,为了提高CPU利用率,toadb采用多线程并行架构,在toadb启动时,就会在线程池中预启动一定数量的线程,避免线程的频繁创建和销毁。 当客户端连接时,会为每个客户端分配一个单独的线程进行服务,直到客户端断开连接,该服务线程为被释放到线程池中。 因为线程的轻量级,节省了调度的开销,同时在各并发线程间传递数据,可以在用户空间完成。 内存管理 在数据库运行过程中,不可必免的要动态申请内存,频繁的申请与释放不同大小的内存块,会给系统造成负担,系统需要不断的整理这些碎片,才能满足后续的申请。 碎片的增多,会使申请内存变得缓慢,影响整个SQL执行的时间。 在一些高级编程语言中,都提供了自动内存管理的功能,但在toadb中实现了一种简单有效的内存管理,对于toadb来说刚刚好。 在toadb中以内存块为单位进行申请与释放,每次都会申请一个较大的内存块,然后toadb运行过程中需要动态内存时,从这个内存块中进行分配,当然有超过内存块大小的申请size时,会单独从操作系统申请。 而动态内存的释放,也是先释放到内存块,直到内存块上所有空间都被释放时,才会释放此内存块。 当然,这里可以有一个内存池,驻留一部分内存块,会进一步减少与操作系统的交互。 数据缓存 toadb中的用户数据按表为单位,以文件形式存储在磁盘中。 每次访问数据时,都要从磁盘加载数据,当SQL很多时,或者访问数据较大时,磁盘的读/写操作频次是非常高的。 虽然现在SSD的速率已经非常高,但是高并发下,磁盘的速率远远跟不上程序的需要。 这就需要一个数据的缓存池,将最近使用过的数据缓存起来,再次使用时,就可以从内存中进行找到。 与这个数据缓存配合的,数据块的记录与查找算法,数据结构采用hash表,以数据块的表ID,块号等信息为key,将加载到缓存中的数据块记录到hash table中,下次使用时先从hash 中查找,如果没有时,再从磁盘加载。 当然,空闲缓存位置的管理也是必须的,存缓空间总是有限的,一般有LRU(Least recently used),LFU(Least-frequently used)进行缓存替换。 当然toadb中的数据缓存还有很大的优化空间,对于缓存常见的缓存雪崩,缓存穿透,缓存击穿都可能在这里出现,大家有兴趣可以发现一下。 行列分组混合存储 对于关系型数据库,也就是表格,一行有多个字段,都是一行数据存储在一起,这样在操作时,每次按整行数据进行读和写,即使只读取其中一列的数据。 好处是在进行关联运算时,可以很快按行找到相关字段的值。但是单位空间内有效数据少,这无形中会放大磁盘读写。 toadb采用了一种行列混合的存储模式,兼顾了关系数据特点,也能更大化的减少磁盘交互。 在数据行存储时,各字段存储在不同的数据块上,行数据对应的几个数据块形成了一个组group,将这种组关系记录到与表文件对应的group文件中。 这样在查找某列的值时,单位数据块上全部是该列的值,非常高效。同时对于相同类型的数据,数据存储时可以很方便的进行压缩。 运行日志 对于并发系统来说,程序开发调试,运行维护的复杂度都非常高,一个有效的运行日志就非常必要。 在并发运行时,各个并发操作的时序,以毫秒甚至纳秒来计准时序关系,同时可以记录对应日志的并发线程ID,源码文件,函数,以及行数。 在调试时可以增加不同级别的日志,而运行时通过级别调整,只打印关键信息即可。 未来以来,未来可期 随着数据处理需求的不断增长和复杂性的提升,toadb数据库在未来的发展中将继续引入技术创新和优化措施。 一、多线程池优化 为了提升线程负载的平稳性和单个线程的负载持续性,toadb将引入更精细化的多线程池管理机制。 动态线程池调整:根据系统负载和请求量的变化,动态调整线程池的大小,确保线程资源的有效利用。客户端请求打包:将多个客户端请求打包为一个任务,由后端线程池中的线程进行分派处理。这种方式可以减少后端线程的并发数量,提高单个线程的负载持续性。任务队列优化:采用优先级队列或其他高级数据结构来管理任务队列,确保高优先级的任务能够优先得到处理。 二、执行器采用多任务并行处理方式 在执行层面,toadb将采用多任务并行处理方式,以充分利用多核CPU和分布式系统的优势。 并行查询执行:对于复杂的查询请求,执行器将并行执行多个子任务,以加快数据处理速度。多版本并发控制:为了实现高效的并发操作,toadb将采用多版本并发控制机制,确保多个事务能够同时访问数据而不会相互干扰。 三、执行计划针对行列混合进行优化,下推更多的选择条件 针对行列混合存储结构,toadb将优化执行计划以提高查询效率。 优化行列混合查询:执行计划将智能地识别查询中适合行存储或列存储的部分,并分别进行优化处理。选择条件下推:在执行计划中,更多的选择条件将被下推到存储层进行处理,从而减少不必要的数据传输和处理开销。 四、将投影运算靠后进行处理,一次IO 为了减少I/O操作和提高查询效率,toadb将优化投影运算的处理方式。 延迟投影运算:投影运算将被尽可能推迟到查询处理的后期进行,以减少中间结果的数据量,降低I/O成本。一次I/O原则:通过优化查询计划和存储结构,toadb将努力实现大部分查询只需一次I/O操作即可完成,显著提升查询性能。 通过引入多线程池管理、优化执行计划、延迟投影运算等措施,toadb将为用户提供更加高效、稳定的数据服务。

深入理解Open vSwitch(OVS):原理、架构与操作

一、引言 随着云计算和虚拟化技术的不断发展,网络虚拟化成为了构建灵活、可扩展网络架构的关键技术之一。Open vSwitch(OVS)作为一种功能强大的开源虚拟交换机,被广泛应用于云计算和虚拟化环境中,为虚拟机提供高效、灵活的网络连接。本文将从技术细节入手,详细阐述OVS的原理、架构以及常见操作,旨在帮助读者更深入地了解和应用OVS。 二、OVS的原理 OVS的原理主要基于软件定义网络(SDN)的思想,通过软件实现传统硬件交换机的功能。它利用Linux内核中的网络功能,以及用户空间的应用程序,构建了一个高效、灵活的虚拟交换机。 核心原理 OVS的核心原理在于通过软件来模拟实现硬件交换机的功能。它利用Linux内核的网络栈,通过虚拟化技术,为每个虚拟机提供一个独立的网络接口,从而实现在同一物理主机上的多个虚拟机之间的网络隔离和通信。 OVS还采用了流表(Flow Table)的概念,用于定义数据包的转发规则。流表中包含了多个流表项(Flow Entry),每个流表项都定义了一组匹配条件和相应的动作。当数据包到达OVS时,它会根据流表进行匹配,并执行相应的动作,如转发、丢弃等。 数据平面 数据平面是OVS的核心组成部分,负责处理数据包的转发和交换。它主要包括以下几个关键功能: 数据包解析与封装:当数据包到达OVS时,数据平面会对其进行解析,提取关键信息,如源/目的MAC地址、源/目的IP地址等。在数据包离开OVS之前,数据平面还会对其进行封装,添加必要的网络头部信息。 流表匹配与转发:数据平面会根据流表对数据包进行匹配。如果匹配成功,则执行相应的动作,如转发到指定的端口或丢弃等。流表的匹配过程非常高效,可以在微秒级别内完成。 网络隧道技术:为了实现跨物理网络的虚拟机通信,OVS支持多种网络隧道技术,如VXLAN、GRE等。这些隧道技术可以在不同的物理网络之间建立逻辑通道,使得虚拟机可以像在同一局域网内一样进行通信。 控制平面 控制平面负责配置和管理OVS交换机的行为。它主要通过OpenFlow等协议与其他网络设备和控制器进行通信,下发配置和路由信息。控制平面可以实现网络的动态管理和优化,提高网络的灵活性和可扩展性。 三、OVS的架构 OVS的架构非常灵活且可扩展,主要包括ovsdb-server、ovs-vswitchd和datapath三个主要组件。这些组件之间通过高效的通信机制进行交互,共同实现OVS的功能。 ovsdb-server ovsdb-server是OVS的数据库服务器,负责操作OVSDB(Open vSwitch Database),即OVS的数据库。OVSDB是一个轻量级的数据库,用于存储OVS的配置信息、状态信息等。ovsdb-server通过提供API接口,允许其他组件对OVSDB进行读写操作。 ovs-vswitchd ovs-vswitchd是OVS的核心守护进程,负责实现OpenFlow交换机功能。它与controller进行通信,接收并处理来自controller的指令。同时,ovs-vswitchd还负责处理用户态的数据包转发逻辑,与内核态的datapath模块进行交互。 datapath datapath是OVS的内核模块,负责数据包的快速处理和转发。它运行在Linux内核空间中,利用内核的高效性和稳定性来保证数据包的快速转发。datapath模块会根据流表进行数据包的匹配和转发操作,实现数据包的快速处理。 四、OVS的常见操作 创建和管理网桥 在OVS中,网桥(Bridge)是一个虚拟交换机实例,可以连接多个虚拟机或物理网络接口。通过ovs-vsctl命令可以创建、删除和管理网桥。例如,使用ovs-vsctl add-br <bridge-name>命令可以创建一个新的网桥。 添加和删除端口 端口(Port)是虚拟机或物理网络接口与OVS网桥之间的连接点。通过ovs-vsctl命令可以添加、删除和管理端口。例如,使用ovs-vsctl add-port <bridge-name> <port-name>命令可以将指定端口添加到网桥上。 配置流表 流表是OVS进行数据包转发的关键数据结构,可以通过ovs-ofctl命令进行配置和管理。例如,可以使用ovs-ofctl add-flow命令添加新的流表项,定义数据包的匹配条件和转发动作。 连接OpenFlow控制器 OVS支持OpenFlow协议,可以与OpenFlow控制器进行通信,实现网络的动态管理和优化。通过ovs-vsctl命令可以配置OVS连接到指定的OpenFlow控制器。例如,使用ovs-vsctl set-controller <bridge-name> tcp:<IP-address>:<port>命令可以将网桥连接到指定的控制器上。 监控和调试 OVS提供了丰富的监控和调试功能,帮助管理员了解交换机的状态和性能。例如,可以使用ovs-vsctl list命令查看OVS的配置信息,使用ovs-ofctl dump-flows命令查看流表的内容等。 五、OVS的优势和应用场景 优势 灵活性:OVS通过软件定义的方式实现了网络交换机的功能,使得网络配置更加灵活和可扩展。管理员可以根据实际需求动态地调整网络结构和转发规则。 高性能:OVS利用Linux内核的高效性和稳定性来保证数据包的快速转发。同时,通过优化数据结构和算法,OVS可以实现线速转发性能,满足大规模网络的需求。 开放性:OVS是一个开源项目,具有开放的API接口和丰富的功能扩展性。这使得开发者可以轻松地集成OVS到其他系统中,实现定制化的网络解决方案。 应用场景 云计算环境:在云计算环境中,OVS可以为虚拟机提供高效、灵活的网络连接。通过OVS可以实现虚拟机之间的网络隔离、通信和负载均衡等功能,提高云计算资源的利用率和灵活性。 数据中心网络:在数据中心网络中,OVS可以实现网络的动态管理和优化。通过与OpenFlow控制器的配合,可以实现对网络流量的精细控制、故障恢复和安全防护等功能,提高数据中心网络的可靠性和性能。 网络功能虚拟化(NFV):在NFV场景中,OVS可以作为虚拟网络设备的基础组件之一,为各种网络功能(如防火墙、负载均衡器等)提供灵活的网络连接和转发能力。 六、结论 Open vSwitch作为一种功能强大的开源虚拟交换机,在网络虚拟化领域发挥着重要作用。通过深入了解OVS的原理、架构和常见操作方式,我们可以更加熟练地运用这一工具来构建高效、灵活的网络环境。随着云计算和虚拟化技术的不断发展,OVS将继续发挥其独特的优势,为现代网络架构提供强大的支持。

【python】PyQt5初体验,窗口等组件开发技巧,面向对象方式开发流程实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,云原生K8S,人工智能,js逆向,App逆向,网络系统安全,数据分析,PyQt5,tkinter,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。 所属的专栏:PyQt5桌面应用开发,零基础到进阶应用实战 景天的主页:景天科技苑 文章目录 1.PyQt5常用模块常用模块介绍 2.PyQt5初体验,显示一个窗口1.使用面向过程的编程方法(1)代码解读(2)PyQt5程序基本结构解析(3)pycahrm激活模板设置 2.使用面向对象的编程方法 1.PyQt5常用模块 所有模块参考官方文档:https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html 比如我们点进去一个模块QtWidgets 进去看一下,里面包含了该模块拥有的所有的类 在这里面也可以检索,比如不知道某个类属于哪个模块,可以搜索 ctrl F搜索 可以看到该类完整的所属路径 常用模块介绍 QtWidgets 包含了一整套UI元素控件,用于建立符合系统风格的界面 QtGui 涵盖了多种基本图形功能的类(字体,图形,图标,颜色…) QtCore 涵盖了包的核心的非GUI功能(时间,文件,目录,数据类型,文本流,链接,线程进程…) QtWebKit 浏览器引擎 QtTest 测试 QtSql 数据库操作相关 QtMultimedia QtMultimediaWidgets 多媒体相关 对于初学者,我们先直接用Qt模块 Qt 将基本全部模块中的类综合到一个单一的模块中。 好处 不用关心哪个模块包含哪些类了 坏处 很多模块被导入而没有使用,占用内存 我们点进去看,Qt模块,基本将常用的模块都导入进来 2.PyQt5初体验,显示一个窗口 1.使用面向过程的编程方法 from PyQt5.Qt import * import sys #创建一个应用程序 app = QApplication(sys.argv) #创建一个窗口 window = QWidget() window.setWindowTitle("景天科技苑") #设置窗口大小 window.resize(500, 500) #将窗口移动到某个位置,move的参数是x,y轴坐标,单位是像素 window.move(400, 200) #创建标签,标签控件展示到窗口上,所以将窗口对象传进去 label = QLabel(window) #设置标签内容 label.

Java学习 - MySQL视图的练习 实例

视图的概念 视图是什么? 一个虚拟的表 视图存储的是什么 存储的是SQL逻辑,在使用视图时,会动态执行SQL逻辑,生成临时的表 视图的优点 保密性好 简化操作 视图的语法 先按照DML练习到插入为止 为student创建视图view_student,只选取id,name和phone CREATE VIEW view_student AS SELECT id,name,phone FROM student; 查看view_student的结构和创建语句 DESC view_student; # 结构 SHOW CREATE VIEW view_student; # 创建语句 用视图查询id为3的phone SELECT phone FROM view_student WHERE id=3; 修改视图为选取id,name,phone和gender CREATE OR REPLACE VIEW view_student AS SELECT id,name,phone,gender FROM student; ALTER VIEW view_student AS SELECT id,name,phone,gender FROM student; 删除view_student DROP VIEW IF EXISTS view_student;

Python酷库之旅-第三方库openpyxl(01)

目录 一、 openpyxl库的由来 1、背景 2、起源 3、发展 4、特点 4-1、支持.xlsx格式 4-2、读写Excel文件 4-3、操作单元格 4-4、创建和修改工作表 4-5、样式设置 4-6、图表和公式 4-7、支持数字和日期格式 二、openpyxl库的优缺点 1、优点 1-1、支持现代Excel格式 1-2、功能丰富 1-3、易于使用 1-4、与Excel兼容性 1-5、性能良好 1-6、社区支持 1-7、跨平台 2、缺点 2-1、不支持旧版格式 2-2、某些特性支持有限 2-3、内存占用 2-4、文档和示例可能不足 2-5.、依赖关系 2-6、学习曲线 三、openpyxl库的用途 1、读取Excel文件 2、写入Excel文件 3、修改Excel文件 4、自动化 5、与Excel交互 6、数据迁移和转换 7、创建模板化的报告 四、如何学好openpyxl库? 1、获取openpyxl库的属性和方法 2、获取xlwt库的帮助信息 3、用法精讲 3-1、openpyxl.load_workbook函数 3-1-1、语法 3-1-2、参数 3-1-3、功能 3-1-4、返回值 3-1-5、说明 3-1-6、用法 3-2、openpyxl.Workbook.add_named_style方法 3-2-1、语法 3-2-2、参数 3-2-3、功能 3-2-4、返回值 3-2-5、说明 3-2-6、用法 3-3、openpyxl.Workbook.close方法 3-3-1、语法 3-3-2、参数 3-3-3、功能 3-3-4、返回值 3-3-5、说明 3-3-6、用法 3-4、openpyxl.Workbook.copy_worksheet方法 3-4-1、语法 3-4-2、参数 3-4-3、功能 3-4-4、返回值 3-4-5、说明