【离散数学】图的随机生成和欧拉(回)路的确定(c语言实现)

这里写目录标题 实验实验内容实验要求 具体实现变量定义根据边来生成图函数判断联通函数判断是否有欧拉路生成欧拉路 源码 实验 实验内容 编程随机生成含m个结点和n条边的无向简单图并能进行(半)欧拉图的判定,若是则给出欧拉(回)路。 实验要求 实验要求如下: 对给定m个结点和n条边,随机生成相关邻接矩阵以确定某无向连通简单图。 基于度的计算进行欧拉图和半欧拉图的判定。 若符合则给出至少一条欧拉回路或欧拉路 具体实现 具体实现思路可以参考下面: 变量定义 因为如果我们使用局部变量,每一个函数都会使用这些变量,会让函数的参数越变越多。 所以我们将这些变量定义为全局变量,这样就不用在参数中调用了。 #define MAX 100 int arrMap[MAX][MAX] = { 0 };//图的矩阵 int degree[MAX] = { 0 };//节点的度 int visit[MAX] = { 0 };//记录是否被访问 int euler[MAX] = { -1 }; int ans[MAX]; //欧拉路 int c[MAX][MAX]; //判断该边是否已经走过 int m = 0;//结点个数 int n = 0;//边数 根据边来生成图函数 通过调用随机函数给定两个0到m-1的不同值x和y来生成一条边。将生成边与已有边集合比较,不重复则加入边集合(若用邻接矩阵表示图,则验证对应[x[y是否为1)。直至生成n条边。判断是否连通,若否需重新生成。 //随机生成边 void creatSide() { int count = 0; while (count < n) { int x = rand() % m; int y = rand() % m; while (x == y) x = rand() % m; if (!

趣味C语言——【猜数字】小游戏

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 🎉创作不易,请多多支持🎉 🌈感谢大家的阅读、点赞、收藏和关注💕 🌹如有问题,欢迎指正 感谢 目录 代码: rand() srand() time() 设置随机数范围 🌟🌟产生a~b的随机数: 运用循环、选择语句和函数,我们可以制作一个简单的猜数字小游戏, 假定游戏规则是给出一个1~100间的随机数,我们在限定次数中去猜数字 代码: #include<stdio.h> #include<time.h> #include<stdlib.h> void menu() { printf("---------------------------------\n"); printf("---------** 1.play game **-----\n"); printf("---------** 0.exit game **-----\n"); printf("---------------------------------\n"); } int main() { int input; srand((unsigned int)time(NULL));//程序中只需要调用一次就可以了 do { menu(); int r = rand() % 100 + 1; scanf("%d", &input); printf("%d", r); switch (input) { case 1: printf("游戏开始---->"); int count = 5; int guess = 0; while (count) { printf("

最新Adobe2024全家桶下载,PS/PR/AE/AI/AU/LR/ID详细安装教程

如大家所熟悉的,Adobe全家桶系列常用的软件有Photoshop(PS)、Premiere(PR)、After Effects(AE)、illustrator(AI)、Audition(AU)、Lightroom(LR)、InDesign(ID)等等。先一起来看看2024新版本新的打开界面吧! 【还没有获取安装包的小伙伴可以看往期文章~】 首先是Adobe Photoshop 2024 v25.0.0.37 Adobe After Effects 2024 v24.0.0.55 Adobe Premiere Pro 2024 v24.0.0.58 Adobe Audition 2024 v24.0.0.46 Adobe Illustrator 2024 v28.0.0.88 2024新版本,有不少新增的功能,篇幅有限,我们以Adobe Photoshop(PS)CC2024为例,供有兴趣的小伙伴参考和了解: 1、移除工具中的新交互 使用移除工具在要使其消失的对象周围绘制一个圆圈,而无需将该对象完全刷满。避免交互导致错误,并且有助于节省时间; 2、上下文任务栏添加新功能 上下文任务栏中添加了更多内容(画布上栏中的常用工具和操作),可帮助在处理蒙版和裁切工作流程时提供适当的后续步骤; 3、其他增强功能 通过优化加载行为而提高的启动性能。

Python学习打卡:day17

day17 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day17121、Python 操作 MySQL 基础使用pymysql创建到 MySQL 的数据库链接执行 SQL 语句执行非查询性质的SQL语句执行查询性质的SQL语句 122、Python 操作 MySQL 数据的插入自动 commit 123、综合案例案例需求DDL 定义实现步骤 Python 高阶技巧1、闭包基础概念简单闭包修改外部函数变量的值使用闭包实现 ATM 小案例 2、装饰器装饰器的一般写法(闭包写法)装饰器的语法糖写法 3、单例模式4、工厂模式5、多线程并行执行概念进程、线程并行执行 6、多线程编程 121、Python 操作 MySQL 基础使用 pymysql 在Python中,使用第三方库:pymysql 来完成对MySQL数据库的操作。 安装: 1、pip install pymysql; 2、或者 PyCharm中安装包 PyMySQL(使用清华源:https://pypi.tuna.tsinghua.edu.cn/simple)。 创建到 MySQL 的数据库链接 """ 演示 Python pymysql库的基础操作 """ from pymysql import Connection # 构建到 MySQL数据库的链接 conn = Connection( host = "localhost", # 主机名(IP) port = 3306, # 端口 user= 'root', # 账户 password= '666666' # 密码 ) # 打印 MySQL 数据库软件信息 # 验证是否连接上指定数据库 print(conn.

【数据结构】递归复杂度与链表OJ之双指针

【C语言】递归复杂度与链表OJ之双指针 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【C语言】递归复杂度与链表OJ之双指针前言一.递归复杂度1.1递归时间复杂度1.2递归空间复杂度 二.链表OJ之双指针2.1倒数第K个节点2.2链表的中间节点2.3反转链表2.4回文链表2.5相交链表双指针法 后言 前言 哈喽,各位小伙伴大家好!今天我们继续深入探讨递归的复杂度和链表OJ常见的双指针法。话不多说,咱们进入正题!向大厂冲锋! 一.递归复杂度 1.1递归时间复杂度 前面我们讲的复杂度没有涉及到递归,那递归的复杂度又该如何计算呢? // 计算阶乘递归Fac的时间复杂度? long long Fac(size_t N) { if(0 == N) return 1; return Fac(N-1)*N; } 之前我们都是在一个函数中算时间算复杂度,但是递归会自己调用自己,所以递归的时间复杂度计算就需要把每次函数调用次数累加起来。 那我们现在修改一下代码,现在的时间复杂度又是多少呢? // 计算阶乘递归Fac的时间复杂度? long long Fac(size_t N) { if (0 == N) return 1; for (int i = 0; i < N; i++) { ; } return Fac(N - 1) * N; } 函数的调用次数不变,每次函数调用的复杂度改变。将每次函数调用的消耗相加 ,时间复杂度函数为等差数列。大O渐进表示法算出O(N^2)。 结论:递归时间复杂度==所有递归递归调用次数累加。 现在我们再来计算一下斐波那契数列的时间复杂度。 // 计算斐波那契递归Fib的时间复杂度? long long Fib(size_t N) { if(N < 3) return 1; return Fib(N-1) + Fib(N-2); } 这里我们需要画出递归展开图,然后发现调用次数是等比数列。

【面试系列】PHP 高频面试题

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐️ 全流程数据技术实战指南:全面讲解从数据采集到数据可视化的整个过程,掌握构建现代化数据平台和数据仓库的核心技术和方法。 文章目录 PHP 初级面试题及详细解答1. 什么是 PHP,PHP 的全称是什么?2. PHP 中如何声明变量?3. PHP 支持哪些数据类型?4. 如何在 PHP 中连接到 MySQL 数据库?5. 如何在 PHP 中定义和调用函数?6. 什么是 PHP 中的会话 (session) 以及如何启动会话?7. PHP 中的 `include` 和 `require` 有什么区别?8. 如何在 PHP 中处理错误?9. 如何在 PHP 中获取和处理表单数据?10. PHP 中如何使用数组? PHP 高级面试题及详细解答1. PHP 中的命名空间是什么,有什么作用?2. 什么是 PHP 中的 Composer,如何使用它?3. 解释 PHP 的 Trait 及其用途。4. PHP 中的依赖注入是什么,有什么优点?5. 如何在 PHP 中处理多线程?6. PHP 中的闭包 (Closure) 是什么?7. 什么是 PHP 的 SPL (Standard PHP Library)?8.

鸿蒙期末项目(3)

服务器搭建完成之后,编写了诸多api用于数据传输工作(略) 编写完成之后,回到鸿蒙开发工具,开始编写搜索页面的代码。 打开搜索页面时,先会展示历史搜索记录(如果有的话),然后会根据热门搜索向用户推荐搜索内容。当用户点击历史搜索或者热门搜索的标签或者手动输入搜索内容并点击搜索时,搜索提示将会消失,并展示搜索结果。 在编写的过程中遇到了一个问题: @State search: boolean = false; onSearch(textInput) { this.search = true; } ​ build() { SearchCard({ onSearch: this.onSearch }) if(!this.search) { ... } } 将函数作为参数传递给子组件,子组件调用该函数并改变了响应式变量的值,但是却没有引起重绘。具体原因未知,但是可以将响应式变量使用@Link传入子组件中,在子组件中修改变量的值,这样就可以触发响应重绘。 搜索页面效果展示(数据仅为样例): 当用户搜索出来这些列表之后,点某个商店可以进入商店详情页并展示该商店所售卖的单品,而点某个单品可以进入商店并滚动到单品所在地。同时,数据库中还包含了单品所属类别,所以详情页可以按照类别来规划单品。 设计页面如下 遇到的问题 在父组件中定义函数,并将函数传给子组件,子组件调用函数时报错 错误原因:子组件调用函数时找不到函数中this所指的定义在父组件中的数据,所以在传递函数时需要用 .bind(this) 将this引用一同传递过去。 接下来来实现购物车界面,此界面参考美团购物车界面: 可以看到,同一家商店的商品会被归类到一个卡片中,每个商品前都有选择框,每个商店卡片头部也有选择框控制是否选择自家的所有商品,同时,在页脚处,有一个全局的选择框控制是否全选商品;当点击头部的编辑按钮时,页尾的结算按钮会变成删除按钮,删除所有选中的商品。 本人实现该界面的方法是:页首页脚单独编写两个组件Header、Footer来控制,随后通过算法分类出每个出现的商店和商品,通过ForEach渲染出相应的卡片组件StoreCard,在卡片中再次ForEach渲染出子组件ProductCard。然而考虑到还需要实现选择功能,所以使用@Observed修饰相关类后通过@ObjectLink传递给子组件。 中间遇到了一点小问题: 在这个卡片中,预想的效果应当是: 当点击商店名旁边的选择框时,应当全选或全不全所有该商店的商品。 当未点击商店名旁的选择框而是手动选择了全部商品,此时商店选择框应当自动被勾选 当全选了商店的商品时,若手动取消了某个商品的选择,应当自动取消勾选商店的全选框 最初我为商店的全选按钮添加了 onChange 事件: .onChange((value) => { for (let index = 0; index < this.storeItem.child.length; index++) { this.storeItem.child[index].selected = value; } }) 这样就可以实现点击全选后选择所有商品。但是当测试上述第三个功能时,子组件的改变引起了父组件单选框状态的改变,此时会触发这个 onChange 函数,取消一个商品的选择,导致所有不相关的商品一同被取消了选择。 解决方法是:将 onChange 改为 onClick 事件,原理很简单,只有当用户点击全选按钮时才会触发所有商品的全选/全不选方法,所以改为onClick可以避免程序修改selected 的值而触发事件。

分析 1400 万篇论文发现:“AI 味”非常浓,中国使用 LLM 比例高达 35%

整理 | 王轶群 责编 | 唐小引 出品丨AI 科技大本营(ID:rgznai100) 近日,来自德国图宾根大学Hertie脑健康人工智能研究所、图宾根人工智能中心的研究团、美国西北大学的研究者发布了一篇名为《通过多余词汇探究学术写作中 ChatGPT 的使用》(Delving into ChatGPT usage in academic writing through excess vocabulary)的论文。 论文通过细致的语言分析提出了一个惊人的结论:ChatGPT 等大语言模型辅助写作对科学文献产生了的影响,甚至超过了 COVID-19 疫情对学术写作的影响。 论文“AI味”有点浓:2024至少10%的论文使用了LLM 自OpenAI在2022年11月发布ChatGPT以来,学术文献的写作风格“AI味”变得有点浓,尤其是2024年。 “我们仅分析了出版年份从2010年到2024年的论文,得到了14182520篇摘要供分析。”该论文将分析了 PubMed 图书馆中超过 1400 万篇2010至2024年生物医学摘要的语料库,跟踪了过去十年科学写作的变化。 研究者惊讶地发现,至少10%的2024年发布的研究论文在撰写过程中使用了大型语言模型(如ChatGPT)进行辅助。在某些特定领域和国家,这一比例更是高得惊人。 研究人员首先确定了2024年相比以往年份显著更频繁出现的词汇。这些词汇包括 ChatGPT 写作风格中典型的许多动词和形容词,比如 “深入挖掘”、“复杂”、“展示” 和 “突出” 等。 上图包含某些单词的 PubMed 摘要的频率。黑线显示从 2021-22 年到 2023-24 年的反事实推断。前六个单词受到 ChatGPT 的影响;后三个单词与影响科学写作的重大事件有关,并显示出来以供比较。(图片摘自原论文) 通过分析词汇使用频率的变化,研究人员注意到,自ChatGPT发布以来,许多特定的风格词汇,如“delves(钻研)”“showcasing(展示)”“underscores(强调)”等词汇的使用频率显著增加,这反映出科学家们在撰写论文时,越来越多地借助ChatGPT来润色和修改文本。 论文采集了3个真实的 2023 年摘要的示例,来说明了这种 ChatGPT 风格的摘要语言表达方式: 根据这些具备AI生成色彩的标志词,研究人员估计在2024年,AI 文本生成器影响了至少10% 的所有 PubMed 摘要。 有趣的是,论文中研究者以新冠病毒等词汇对学术论文的影响对AI生成的影响做了对比。 发现在某些情况下,ChatGPT等AI生成工具给学术文献写作带来的影响,甚至超过了 “Covid”、“流行病” 或 “埃博拉” 等词汇在其所处时期的影响。 研究者对2013 年至 2023 年的所有年份进行了相同的分析,发现诸如“冠状病毒”、“封锁”和“大流行”等词汇的使用量非常大,这与新冠疫情对生物医学出版产生前所未有的影响的观察结果一致。

MySQL实训--原神数据库

原神数据库 er图DDL/DML语句查询语句存储过程/触发器 er图 DDL/DML语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `artifacts`; CREATE TABLE `artifacts` ( `id` int NOT NULL AUTO_INCREMENT, `artifacts_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `set_bonus` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '套装效果', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 52 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC; INSERT INTO `artifacts` VALUES (1, '冒险家', '开启各类宝箱后的5秒内,持续恢复30%生命值。'); INSERT INTO `artifacts` VALUES (2, '幸运儿', '拾取摩拉时,恢复300点生命值。'); INSERT INTO `artifacts` VALUES (3, '游医', '释放元素爆发时,恢复20%生命值。'); INSERT INTO `artifacts` VALUES (4, '行者之心', '重击的暴击率提升30%。'); INSERT INTO `artifacts` VALUES (5, '奇迹', '受到某个元素类型的伤害后,相应的抗性提升30%,持续10秒。该效果每10秒只能触发一次。'); INSERT INTO `artifacts` VALUES (6, '战狂', '生命值低于70%时,暴击率额外提升24%。'); INSERT INTO `artifacts` VALUES (7, '教官', '触发元素反应后,队伍中所有角色的元素精通提高120点,持续8秒。'); INSERT INTO `artifacts` VALUES (8, '流放者', '施放元素爆发后,每2秒为队伍中所有角色(不包括自己)恢复2点元素能量。该效果持续6秒,无法叠加。'); INSERT INTO `artifacts` VALUES (9, '守护之心', '队伍里每有不同—种元素类型的自己的角色,自身获得30%相应的元素抗性。'); INSERT INTO `artifacts` VALUES (10, '勇士之心', '对生命值高于50%的敌人,造成的伤害增加30%。'); INSERT INTO `artifacts` VALUES (11, '武人', '释放元素战技后的8秒内,普通攻击和重击造成的伤害提升25%。'); INSERT INTO `artifacts` VALUES (12, '赌徒', '打倒敌人时,有100%概率清除元素战技的冷却时间。该效果每15秒至多触发—次。'); INSERT INTO `artifacts` VALUES (13, '学士', '获得元素微粒或元素晶球时,队伍中所有弓箭和法器角色额外恢复3点元素能量。该效果每3秒只能触发一次。'); INSERT INTO `artifacts` VALUES (14, '祭火之人', '受到的火元素附着效果的持续时间减少40%。'); INSERT INTO `artifacts` VALUES (15, '祭水之人', '受到的水元素附着效果的持续时间减少40%。'); INSERT INTO `artifacts` VALUES (16, '祭雷之人', '受到的雷元素附着效果的持续时间减少40%。'); INSERT INTO `artifacts` VALUES (17, '祭冰之人', '受到的冰元素附着效果的持续时间减少40%。'); INSERT INTO `artifacts` VALUES (18, '冰封迷途的勇士', '攻击处于冰元素影响下的敌人时,暴击率提高20%;若敌人处于冻结状态下,则暴击率额外提高20%。'); INSERT INTO `artifacts` VALUES (19, '平息鸣雷的尊者', '对处于雷元素影响下的敌人造成的伤害提升35%。'); INSERT INTO `artifacts` VALUES (20, '渡过烈火的贤人', '对处于火元素影响下的敌人造成的伤害提升35%。'); INSERT INTO `artifacts` VALUES (21, '被怜爱的少女', '施放元素战技或元素爆发后的10秒内,队伍中所有角色受治疗效果加成提高20%。'); INSERT INTO `artifacts` VALUES (22, '角斗士的终幕礼', '装备该圣遗物套装的角色为单手剑、双手剑、长柄武器角色时,角色普通攻击造成的伤害提高35%。'); INSERT INTO `artifacts` VALUES (23, '翠绿之影', '扩散反应造成的伤害提升60%。根据扩散的元素类型,降低受到影响的敌人40%的对应元素抗性,持续10秒。'); INSERT INTO `artifacts` VALUES (24, '流浪大地的乐章', '装备该圣遗物套装的角色为法器、弓箭角色时,角色重击造成的伤害提高35%。'); INSERT INTO `artifacts` VALUES (25, '如雷的盛怒', '超载、感电、超导、超绽放反应造成的伤害提升40%,超激化反应带来的伤害提升提高20%。触发上述元素反应或原激化反应时,元素战技冷却时间减少1秒。该效果每0.

小公司做自动化的困境

1. 人员数量不够 非常常见的场景, 开发没几个, 凭什么测试要那么多, 假设这里面有3个测试, 是不是得有1个人会搞框架? 是不是得有2人搞功能测试, 一个人又搞框架, 有些脚本, 真来得及吗? 2. 人员基础不够 现在有的大公司, 是这样子协作的, 也就是某模块需求谁谁测试的, 那么对应的自动化脚本, 就由谁来写, 但是小公司, 招聘成本就低, 就不太可能找到又能熟悉功能测试的, 又会自动化. 还是挺难的. 况且搞功能测试的人, 搞的时间长了, 也不太想写代码的, 所以, 就市场上, 这类型人员的供给是比较少的, 到了小公司那里, 就得高价格招聘了. 3. 测试框架比较差编写成本大 我个人认为市面上的框架, 都有很大的改进空间的, diamante重复率高, 需要懂pythony语法是痛点, 导致普通员工上手难度大. 好的框架范式, 可以参考我写的框架. https://github.com/WaterLoran/RuoYiTest 4. 开发文档和接口不规范导致编写成本大 开发写的接口, 没有统一规范的话, 框架的抽象难度也会很大, 然后测试人员写脚本的时候, 成本也会增加, 相当于这是历史包袱, 即没有重构所带入的包袱 5. 领导不懂导致投入不足 如果领导迫于一些压力, 比如交付压力, 又短时间内看不到自动化的收入的话, 就会认为没有用 4. 对自动化的定位有误 有些人会期望他能够把BUG发现, 这是错误的想法, 他的定位应该是, 回归测试, 即把之前的用例执行一遍, 发现老代码问题, 看看有无改动引发, 以及跑完自动化脚本之后, 能够给人信心去发布版本 5. 对自动化的回报期望过大

如何获得更高质量的回答-chatgpt

在与技术助手如ChatGPT进行交互时,提问的方式直接影响到你获得的答案质量。以下是几个关键的提问技巧,可以帮助你在与ChatGPT的互动中获得更有效的回答: 1. 清晰明了的问题 技巧:确保问题清晰明了,避免含糊不清或模糊的表达。 例子: 不明确的问题:如何学习编程? 明确的问题:我想学习Python编程,从哪里开始? 原因:清晰的问题能让ChatGPT更容易理解你的需求,并提供更具体和有针对性的答案。 2. 提供背景信息 技巧:在提问时提供相关背景信息或上下文。 例子: 无背景问题:为什么机器学习重要? 有背景问题:我正在研究机器学习的应用,想了解其在自动驾驶中的具体应用。 原因:提供背景信息有助于ChatGPT更全面地理解你的问题,从而提供更相关和有用的回答。 3. 分步详细提问 技巧:将复杂问题分解成几个简单的小问题,逐步提问。 例子: 单一问题:如何构建一个深度学习模型? 分步问题: 如何准备数据集? 如何选择适合的深度学习框架? 如何调整模型超参数? 原因:分步详细提问有助于ChatGPT提供更具体和易于理解的答案,同时避免信息过载。 4. 请求示例或案例 技巧:请求示例或案例来帮助理解问题和解决方案。 例子: 不请求示例:如何写一篇好的科技文章? 请求示例:能否给出一篇成功的科技文章的结构示例? 原因:示例或案例能够帮助ChatGPT更直观地理解你的需求,并提供具体的参考和建议。 5. 要求解释或详细解答 技巧:遇到复杂问题时,请求详细解释或深入探讨。 例子: 直接问题:什么是量子计算? 请求解释:你能详细解释一下量子计算的基本原理和应用吗? 原因:要求详细解释或深入探讨能帮助ChatGPT提供更全面和深刻的回答,有助于你更好地理解复杂概念。 6. 给出具体场景或假设问题 技巧:提供具体的场景或假设问题,以便ChatGPT能够提供更具体和实际的建议。 例子: 直接问题:如何学习人工智能? 假设问题:假设我是一个大学生,有限的编程基础,如何开始学习人工智能? 原因:具体场景或假设问题能帮助ChatGPT更好地理解你的需求和现实情况,提供更实际和适用的建议。 7. 开放式问题 技巧:使用开放式问题促进更深入的探讨和多角度的回答。 例子: 封闭问题:Python或Java更适合初学者? 开放问题:在学习编程语言时,Python和Java各有哪些优势和适用场景? 原因:开放式问题能够引导ChatGPT提供更全面和多元化的答案,帮助你更好地理解和选择。

Vue脚手架的安装(保姆级教程)

hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的在校大学生 💥个人主页:code袁的博客 💥 个人QQ:2647996100 🐯 个人wechat:code8896 code袁系列专栏导航 1.《毕业设计与课程设计》本专栏分享一些毕业设计的源码以及项目成果。🥰🥰🥰 2.《微信小程序开发》本专栏从基础到入门的一系开发流程,并且分享了自己在开发中遇到的一系列问题。🤹🤹🤹 3.《vue开发系列全程线路》本专栏分享自己的vue的学习历程。 非常期待和您一起在这个小小的互联网世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨ Vue脚手架的安装(保姆级教程) 文章目录 Vue脚手架的安装(保姆级教程)1.下载vscode2.node下载5.Vue脚手架的安装6.创建Vue项目7.项目的运行常见的报错信息 🎉写在最后 1.下载vscode vscode下载地址 2.node下载 node下载 1.打开cmd node -v npm -v 2.在node的下载目录新建文件 node_global 和 node_cache 修改文件的权限 3.设置淘宝镜像 npm config set registry https://registry.npmmirror.com 4.查看淘宝镜像 npm config get registry 5.Vue脚手架的安装 npm install -g @vue/cli 测试安装是否成功 Vue -v 到这为止,Vue 脚手架已经安装完成了。但是有两个概念需要区分开: 我们学习的 Vue 版本的 2.X,脚手架的版本是 4.5.12 Vue 可以理解为中式建筑风格,经过更新升级,现在是 2.X 版本 Vue 脚手架可以理解为盖房包工队,也在不断改造,现在是 4.

Python使用multiprocessing实现多进程

大家好,当我们工作中涉及到处理大量数据、并行计算或并发任务时,Python的multiprocessing模块是一个强大而实用的工具。通过它,我们可以轻松地利用多核处理器的优势,将任务分配给多个进程并同时执行,从而提高程序的性能和效率。在本文中,我们将探索如何使用multiprocessing模块实现多进程编程。将介绍进程池的概念和用法,以及如何使用它来管理和调度多个进程。我们还将讨论并发任务的处理、进程间通信和结果获取等关键问题,希望能给大家的工作带来一些帮助。 一、介绍 Python多进程是一种并行编程模型,允许在Python程序中同时执行多个进程。每个进程都拥有自己的独立内存空间和执行环境,可以并行地执行任务,从而提高程序的性能和效率。 优点: 并行处理:多进程可以同时执行多个任务,充分利用多核处理器的能力,实现并行处理。这可以显著提高程序的性能和效率,特别是在处理密集型任务或需要大量计算的场景中。 独立性:每个进程都有自己的独立地址空间和执行环境,进程之间互不干扰。这意味着每个进程都可以独立地执行任务,不会受到其他进程的影响。这种独立性使得多进程编程更加健壮和可靠。 内存隔离:由于每个进程都拥有自己的地址空间,多进程之间的数据是相互隔离的。这意味着不同进程之间的变量和数据不会相互影响,减少了数据共享和同步的复杂性。 故障隔离:如果一个进程崩溃或出现错误,不会影响其他进程的执行。每个进程是独立的实体,一个进程的故障不会对整个程序产生致命影响,提高了程序的稳定性和容错性。 可移植性:多进程编程可以在不同的操作系统上运行,因为进程是操作系统提供的基本概念。这使得多进程编程具有很好的可移植性,可以在不同的平台上部署和运行。 缺点: 资源消耗:每个进程都需要独立的内存空间和系统资源,包括打开的文件、网络连接等。多进程编程可能会增加系统的资源消耗,尤其是在创建大量进程时。 上下文切换开销:在多进程编程中,进程之间的切换需要保存和恢复进程的执行环境,这涉及到上下文切换的开销。频繁的进程切换可能会导致额外的开销,影响程序的性能。 数据共享与同步:由于多进程之间的数据是相互隔离的,需要通过特定的机制进行数据共享和同步。这可能涉及到进程间通信(IPC)的复杂性,如队列、管道、共享内存等。正确处理数据共享和同步是多进程编程中的挑战之一。 编程复杂性:相比于单线程或多线程编程,多进程编程可能更加复杂。需要考虑进程的创建和管理、进程间通信、数据共享和同步等问题。编写和调试多进程程序可能需要更多的工作和经验。 进程与线程: 在讨论多进程之前,需要明确进程(Process)和线程(Thread)的概念。进程是计算机中正在运行的程序的实例。每个进程都有自己的地址空间、数据栈和控制信息,可以独立执行任务。线程是进程中的一个执行单元,可以看作是轻量级的进程。多个线程共享同一进程的资源,包括内存空间、文件描述符等。 多进程编程在并行处理和资源隔离方面具有明显的优势,但也涉及到资源消耗、上下文切换开销、数据共享和同步等问题。在实际应用中,开发者应权衡利弊,根据具体场景选择适合的编程模型和工具。 二、创建进程 在Python中,可以使用multiprocessing模块来创建和管理进程。该模块提供了丰富的类和函数,用于创建、启动和管理进程。 1、导入multiprocessing模块 在使用multiprocessing模块之前,需要先导入它: import multiprocessing 2、创建进程 可以使用multiprocessing.Process类来创建进程对象。需要传入一个目标函数作为进程的执行逻辑。可以通过继承multiprocessing.Process类来自定义进程类。 import multiprocessing def worker(): # 进程执行的逻辑 if __name__ == '__main__': process = multiprocessing.Process(target=worker) 在上面的示例中,worker函数是进程的执行逻辑。进程对象创建后,可以通过设置参数、调用方法等来配置进程。 3、启动进程 通过调用进程对象的start()方法,可以启动进程。进程会在后台开始执行。 process.start() 4、进程的状态 进程对象提供了一些方法来获取和管理进程的状态: is_alive():检查进程是否正在运行。join([timeout]):等待进程结束。可选参数timeout指定等待的最长时间。 if process.is_alive(): print("进程正在运行") process.join() 5、进程的终止 进程可以通过调用进程对象的terminate()方法来终止。这会立即停止进程的执行。 process.terminate() 二、进程间通信 进程间通信(Inter-Process Communication,IPC)是指不同进程之间进行数据交换和共享信息的机制。在多进程编程中,进程之间通常需要进行数据传输、共享状态或进行同步操作。Python提供了多种进程间通信的机制,包括队列(Queue)、管道(Pipe)、共享内存(Value、Array)等。 1、队列(Queue) 队列是一种常用的进程间通信方式,通过队列可以实现进程之间的数据传输。Python的multiprocessing模块提供了Queue类来实现多进程之间的队列通信。进程可以通过put()方法将数据放入队列,其他进程则可以通过get()方法从队列中获取数据。 from multiprocessing import Queue # 创建队列 queue = Queue() # 进程1放入数据 queue.put(data) # 进程2获取数据 data = queue.

【高考志愿】电气工程

目录 一、专业概述 二、专业特点 三、就业前景 四、选择学校 五、电气工程学科排名 六、电力部直属的专科院校 高考志愿选择电气工程是一个极具智慧和远见的决定,因为电气工程在当今社会中扮演着至关重要的角色。以下是对电气工程专业更为详细的解析: 一、专业概述 电气工程及其自动化专业,作为工学领域的一颗璀璨明珠,紧密关联着人们的日常生活和工业生产。它涵盖了电能从发、送、配到用的全过程,旨在培养精通电路设计、安装和维护的电气工程师。这一专业要求学生不仅具备扎实的理论知识,还要具备创新和实践能力,以应对日益复杂的工程挑战。 二、专业特点 电气工程及其自动化专业以其广泛的应用领域和深厚的技术底蕴而著称。它融合了强电与弱电的知识体系,使学生在掌握电机学、电力电子技术等核心领域的同时,也能熟悉现代电力系统、智能电网等前沿技术。这使得电气工程专业的毕业生在就业市场上具有极高的竞争力。 三、就业前景 电力与能源行业:随着能源结构的转型和电力需求的不断增长,电力与能源行业对电气工程师的需求日益旺盛。电气工程师可以参与电力系统设计、优化和运营,为能源的安全、高效利用贡献力量。在诸如国家电网、南方电网等大型电力企业中,电气工程师将扮演举足轻重的角色。 制造业:在制造业领域,电气工程师是不可或缺的技术力量。他们负责设备的电气控制系统设计、维护和优化,确保生产线的稳定运行。在机械、汽车、航空航天等行业中,电气工程师将发挥关键作用,推动产品的技术创新和产业升级。 通讯行业:随着信息技术的飞速发展,通讯行业对电气工程师的需求也在持续增长。电气工程师在通讯网络设计、软件开发、物联网技术应用等方面发挥着重要作用。他们致力于提高通讯网络的性能、稳定性和安全性,为人们提供更快、更便捷的信息服务。例如,在华为、中兴等全球领先的通讯企业中,电气工程师是推动企业持续创新的重要力量。 四、选择学校 在选择电气工程专业的学校时,可以参考行业内的一些知名院校。清华大学、西安交通大学、华中科技大学、浙江大学被誉为电气“四虎”,这些学校的电气工程专业在国内享有极高的声誉。华北电力大学、武汉大学等也是电气工程领域的佼佼者,被誉为“二龙”。这些学校的师资力量雄厚,教学设施先进,为学生提供了优质的学习环境和广阔的发展空间。 除了以上知名院校外,还可以考虑一些电力部部属的原院校,如东北电力大学、上海电力大学等。这些学校虽然名气不如一些综合性大学,但在电气工程领域也有着深厚的底蕴和丰富的实践经验。此外,一些电力行业的专科院校如郑州电力高专、重庆电力高专等也是不错的选择,它们重实践能力的培养,为学生的就业和职业发展提供了有力支持。 五、电气工程学科排名 六、电力部直属的专科院校 华北电力学院、北京电力经济学院(今华北电力大学),武汉水利水电学院(今武汉大学),北京电力高等专科学校(今北京交通大学),东北电力学院(今东北电力大学),葛洲坝水电工程学院(今三峡大学),长沙电力学院(今长沙理工大学)。 上海电力学院(今上海电力大学),太原电力高等专科学校(今山西大学),沈阳电力高等专科学校(今沈阳工程学院),长春水利水电高等专科学校(今长春工程学院),南京电力高等专科学校(今南京工程学院)。 综上所述,高考志愿选择电气工程专业是一个明智且具有前景的决策。它不仅能够帮助你掌握先进的电气工程技术和知识,还能为你在未来的职业生涯中提供广阔的发展空间和机会。

我给我的学校写了个校园墙小程序

目录 前言 正文 事先声明 项目介绍 关于Github的一些点 ①贡献值的记录 ②Github中的Project是什么 ③Release和Package有什么区别 ④开源许可证之间的区别 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in University of Nottingham Ningbo China📫 You can reach me by url below:My Blog Website: https://blog.yiming1234.cn My CSDN Blog: https://yiming1234.blog.csdn.netMy Email:Pleasure@yiming1234.cnMy Github:Pleasurecruise (自由的世界人) · GitHubIt's my pleasure to see you follow me! 原文地址:我给我的学校写了个校园墙小程序 - Pleasure的博客 下面是正文内容: 前言 自从半个多月前写了这篇破了两万阅读量的博客,让我有点受宠若惊 从0开始制作微信小程序_如何从0开发微信-CSDN博客 想了想,或许是由于主流APP的普及程度,相较于网页,大伙儿更倾向于使用小程序。 由于二者之间在编写时都使用常见的前端框架和库,组件化开发,事件处理和绑定,所以在接触这个方面的时候就不会那么困难。 最近好久没有写博客了,因为自己琢磨了个项目在写。 本人来自宁波诺丁汉大学计算机科学与技术专业 正文 事先声明 项目仍处在开发阶段,目前正处于后端接口开发和管理端平台的开发阶段。

【高考志愿】机械工程

目录 一、专业概述 二、学科特点 三、就业前景 四、机械工程学科排名 五、专业选择建议 高考志愿选择机械工程,这是一个需要深思熟虑的决定,因为它不仅关乎未来的学习和职业发展,更是对自我兴趣和潜能的一次重要考量。 一、专业概述 机械工程专业,这个充满魅力的专业,主要致力于探索和研究机械设计、制造、运行控制等方面的基本知识和技能。它不仅是一门普通高等学校本科专业,更是一个集合了广泛知识和技术的工程学科。基本修业年限为四年,这四年里,学生将沉浸在机械世界的奥秘之中,不断汲取知识,提升技能。在顺利完成学业后,学生将被授予工学学士学位,这是对他们专业知识和技能的认可与肯定。 二、学科特点 实践性:机械工程专业的显著特点之一是其实践性。在这个专业中,学生将接触到大量的实验、实习和实训活动,通过亲手操作和实践,将理论知识转化为实际能力。这些实践活动不仅能够帮助学生巩固所学知识,更能培养他们的实践能力和创新精神。 创新性:机械工程领域是一个充满创新和挑战的领域。为了满足不断发展的工业需求和技术进步,机械工程专业的学生需要具备创新思维和创新能力。他们需要不断提出新的想法和解决方案,以应对各种复杂的工程问题。这种创新精神将成为他们未来职业发展的重要支撑。 三、就业前景 选择机械工程专业,就意味着拥有了一个广阔的就业前景。毕业生可以在众多领域中找到适合自己的工作岗位,如制造业、汽车工业、航空航天、能源等。 制造业:作为国民经济的支柱产业,制造业对机械工程专业的需求巨大。毕业生可以在制造企业担任机械设计工程师、工艺工程师等职位,参与产品设计和制造过程,为企业创造价值。 汽车行业:随着汽车工业的快速发展,汽车行业对机械工程专业的需求也在不断增加。毕业生可以在汽车企业从事汽车设计、研发、测试等方面的工作,为汽车行业的发展贡献自己的力量。 能源行业:能源行业是关系到国家安全和经济发展的重要领域。机械工程专业毕业生可以在能源企业从事燃气轮机、风力发电、太阳能发电等领域的设备研发、制造和运营管理等工作,为国家的能源事业做出贡献。 航空航天及国防工业:航空航天及国防工业是国家的高科技产业,对机械工程专业的需求也非常高。毕业生可以在这些领域从事飞机设计、导弹研发、火箭发射等方面的工作,为国家的航天事业和国防建设做出贡献。 四、机械工程学科排名 序号学校代码学校名称学科名称评估结果110003清华大学机械工程A+210213哈尔滨工业大学机械工程A+310248上海交通大学机械工程A+410487华中科技大学机械工程A+510007北京理工大学机械工程A610056天津大学机械工程A710141大连理工大学机械工程A810335浙江大学机械工程A910698西安交通大学机械工程A1010006北京航空航天大学机械工程A-1110183吉林大学机械工程A-1210216燕山大学机械工程A-1310247同济大学机械工程A-1410287南京航空航天大学机械工程A-1510532湖南大学机械工程A-1610533中南大学机械工程A-1710561华南理工大学机械工程A-1810611重庆大学机械工程A-1991002国防科技大学机械工程A-2010004北京交通大学机械工程B+2110005北京工业大学机械工程B+2210008北京科技大学机械工程B+2310112太原理工大学机械工程B+2410145东北大学机械工程B+2510280上海大学机械工程B+2610286东南大学机械工程B+2710288南京理工大学机械工程B+2810290中国矿业大学机械工程B+2911413中国矿业大学(北京)机械工程B+3010299江苏大学机械工程B+3110337浙江工业大学机械工程B+3210359合肥工业大学机械工程B+3310422山东大学机械工程B+3410497武汉理工大学机械工程B+3510613西南交通大学机械工程B+3610699西北工业大学机械工程B+3710701西安电子科技大学机械工程B+3811845广东工业大学机械工程B+ 五、专业选择建议 在选择机械工程专业时,建议学生首先要了解自己的兴趣和职业规划。只有对机械工程有浓厚的兴趣,才能在这个专业中持续学习和成长。同时,学生还需要考虑自己的职业规划,看看这个专业是否符合自己的职业发展目标。 其次,学生需要了解所报考学校的专业课程设置和师资力量。一个好的学校和专业的教师团队将为学生提供更优质的教育资源和更广阔的发展空间。 最后,学生还需要关注行业的发展趋势和技术动态。机械工程专业是一个不断发展的领域,随着技术的不断进步和产业的不断升级,这个行业将会出现更多的机遇和挑战。因此,学生需要保持敏锐的洞察力和学习能力,不断适应行业的发展变化。 总之,选择机械工程专业需要综合考虑多方面的因素。希望每一位学生都能做出明智的决策,为自己的未来打下坚实的基础。

矿大数据结构 实验四

目录 A: 机器人王国里的路径长度 B: 从源点开始的最短路径 C: 最少天数 D: 寻找第二小的数 E: 按十进制各位和排序 F: 奇偶数的排序 A: 机器人王国里的路径长度 如果只有单个的字母则不必用 map ,直接用 char-'A' 存储到普通数组即可。但是本题应该是不全为单个字母,所以需要用 map 存储。由于任一节点只有一个父节点,那么用数组记录每个节点的父节点即可。如果有多个父节点的话就开一个二维的 map 数组 从子节点开始遍历,直到无父节点则代表找到了首都 #include<bits/stdc++.h> using namespace std; map<string,string> par; map<string,int> len; // map <string,map<string,int> >mp //二维map数组 signed main(){ int n;cin>>n; int m = pow(2,n+1)-2; for(int i=1;i<=m;i++){ string s1,s2; int temp; cin>>s1>>s2>>temp; par[s2] = s1; len[s2] = temp; } string now;cin>>now; long long ans = 0; //数据量较大,开long long 会比较稳妥 while(par[now].

AI足球预测真的靠谱么?欧洲杯能否被预测?

一、引言 1.AI足球预测的背景和现状: 在当前欧洲杯赛事中,AI的面孔已经屡见不鲜了,AI裁判、AI广告乃至AI观赛都已不足为奇。而在其中,AI足球预测又是否有可能呢?。通过收集和分析大量的足球比赛数据,如球队阵容、历史战绩、球员状态等,再结合先进的机器学习算法,AI足球预测模型能够对比赛结果进行预测。然而,其准确性和可靠性仍然存在争议,需要进一步的实践和验证。 2.AI足球预测的可行性: AI能利用大数据分析和机器学习,同时通过处理和解读复杂的比赛数据,包括球队实力、球员状态及战术策略等,从而提供有价值的预测结果。尽管无法确保必定准确,但AI预测在欧洲杯等赛事中的应用,已证明其作为决策辅助工具的有效性。因此,使用AI来预测足球欧洲杯赛事具备可行性。 二、AI足球预测的原理和方法 1.数据采集:AI足球预测所需的数据来源和类型 AI足球预测基于精细化的数据采集体系。这一过程包括搜集球队过往比赛的详细记录,如比分、球员表现、伤病情况等;同时,还需获取实时的比赛动态数据,例如场上位置、传球成功率等。此外,外部因素如气候、场地条件也应被纳入考量。数据从官方统计、传感器捕捉以及社交媒体情绪分析等多个方面收集,以确保预测的可行性与深度。 2.特征工程:如何从原始数据中提取有用的特征 特征工程是AI预测的关键步骤,旨在将原始数据转换为可供模型理解的特征。通过对球员技术统计、队伍战术风格及心理因素等原始数据进行深入分析,我们提炼出诸如进攻效率、防守稳固度等高层次特征。这些经过精心设计的特征能够更好地揭示比赛内在规律,增强预测的准确性。 3.模型训练:AI足球预测所采用的机器学习模型和算法 AI足球预测模型通常采用先进的机器学习算法,如梯度提升决策树(GBDT)、卷积神经网络(CNN)或长短期记忆网络(LSTM)。模型训练中,算法会基于历史数据不断迭代优化,学习不同情境下的胜负模式。训练集涵盖了各种类型的比赛,确保模型能够适应不同的对手和比赛环境。 4.模型评估:如何评估AI足球预测模型的准确性和可靠性 为了确保AI足球预测模型的有效性,需要对其进行严格的评估。常用的评估方法包括使用独立测试集检验模型的泛化能力,以及运用混淆矩阵、ROC曲线等工具量化模型的分类性能。此外,还会考虑模型的稳定性,通过时间序列分析来监控模型在连续比赛中的表现。综合各项评估指标,可以多方面衡量模型的预测能力和可靠性。 三、欧洲杯足球预测的挑战和难点 1.欧洲杯的特殊性:欧洲杯足球比赛的特点和难点 欧洲杯作为国际知名足球赛事,其独特性体现在参赛队伍水平相近、战术多变且心理压力巨大。这些特点使得比赛结果难以预料,增加了预测难度。此外,由于各国联赛风格迥异,球员间的默契度和适应性也成为影响比赛走势的重要因素,这对预测模型提出了更高要求,市面上不做特化的通用语言模型很难解说这项挑战。 2.数据不足:欧洲杯足球预测所面临的数据不足问题 相较于常规联赛,欧洲杯周期短、比赛数量有限,导致可用数据相对缺少。特别是对于新晋球员或非传统强队,缺乏足够的历史数据进行分析,市面上的GTP3或者GPT4已经基于此项的套版系统,由于沿用的是过往的数据库,因此准确度不高。 3.模型泛化能力:如何提高AI足球预测模型在陌生比赛中的泛化能力 提高AI足球预测模型在陌生比赛中的泛化能力至关重要。这要求模型不仅能在熟悉的环境下工作,还要能适应新的比赛场景和未曾遇见的对手组合。为此,研究人员采用迁移学习、元学习等先进技术,让模型通过少量样本快速学习,并结合跨领域知识,增强模型对未知情况的应对能力,以期达到更为准确的预测效果。 四、欧洲杯足球预测的实践和案例分析 基于以上因素,我们可以了解到AI预测其实是有一定门槛的,虽然市面上的AI预测软件数量繁多,但经过调研就能发现大多数都是套用旧有模型和过时的数据库,使用这类系统进行足球预测难免不尽人意,那么有没有一套专业的足球分析系统能胜任这项工作呢?我们接下来往下看。 1.介绍欧洲杯足球预测的实践过程和方法 欧洲杯足球预测的实践过程涉及多个方面的技术与方法。以worldliveball系统为例,该系统使用先进软件技术与算法(ASTA),如机器学习和深度学习,来分析和预测比赛结果。这些技术能够处理大量复杂的数据,并从中发现潜在的规律和趋势。 其次,结合高性能计算机系统(HPCS),通过分布式计算和云计算技术,加速数据分析和模型训练的速度,确保在短时间内获得高质量的预测结果。 信息基础结构技术和应用(IITA)则负责整合和管理来自各个数据源的信息,确保数据的准确性和时效性。这些技术包括数据清洗、数据集成和数据可视化,帮助研究人员更好地理解和解释数据。 国家科研与足球网格(NREN)提供了研究者们进行足球预测研究所需的基础设施和服务,包括计算资源、存储资源和网络资源。这些资源为足球预测研究提供了强大的支撑。 基本研究与足球资源(BRHR)则专注于足球领域的基础研究,包括足球运动的生理学、心理学和社会学等方面的研究,这些研究成果为足球预测提供了理论基础和指导方向。 综上所述,欧洲杯足球预测的实践过程是一个复杂而精细的过程,涉及多个方面的技术与方法,它们共同作用,形成了一个完整的预测体系,以期为球迷和专业人士提供准确和及时的预测服务。 2.分析欧洲杯足球预测的实践结果和案例展示 以近11场赛事为例,包括欧洲杯赛事共有10场预测正确,仅有一场预测失误,可见AI预测的准确度具备一定的稳定性: 3.对比AI足球预测和传统足球预测的效果和优缺点 AI足球预测凭借其数据处理能力和模式识别能力,能够在短时间内分析大量数据并提供较为准确的预测。相比之下,传统足球预测更多依赖专家经验和直觉,具有一定的主观性和灵活性,但在数据量庞大和变化迅速的现代足球环境中,其预测效率和准确性可能不及AI预测。 五、结论 综上所述,使用正确的AI系统来预测足球赛事乃至欧洲杯比赛是可行的。但由于市面上的AI系统鱼龙混杂,大多数其实只是简单的套用GPT没有使用专业的足球数据进行训练,用户在使用时需要经过仔细甄别,笔者在此抛砖引玉以供大家参考。 链接:https://pan.baidu.com/s/1zEI6glPHorkVbqnD4Pwtvw 提取码:vyy3

前端AES加密详解

项目里来来回回一直在用aes,有些时候总会出现和别人加解密不一致的情况,也没看到具体说明很详细的文章,自己花时间研究搜集整理了一下。 一、编码格式 要弄懂aes加解密,首先得先清除编码格式。简单列举说明几种编码格式。 1.base64编码 Base64 编码是通过使用一组 64 个不同的字符表示二进制数据来实现的,包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集。 2.Hex编码(十六进制编码) Hex编码(也称为十六进制编码)是一种将数据转换为十六进制表示形式的编码方法。与base64编码不同,Hex编码使用16个字符来表示数据,这16个字符分别是0-9的数字和A-F的字母(不区分大小写,即a-f和A-F是等价的)。 3.Unicode编码 Unicode编码是一个用于表示字符的编码标准,它允许使用16位或32位的整数序列来表示字符,具体取决于使用的Unicode编码格式。Unicode编码包括但不限于、UTF-8和UTF-7等,每种编码方式都有其特定的应用场景和优缺点。 二、AES前端加密方法 首先要用到crypto-js库,里面包含很多加密方法,我们使用其中的aes加密方法。 1.安装前端加密库crypto-js npm install crypto-js 2.引入crypto-js import CryptoJS from 'crypto-js' 3.密钥 aes属于对称加密,加密解密都使用同一个密钥。这里不详细解释,对加密感兴趣的可以自己学习密码学相关知识。aes的密钥长度可以是16字节,24字节,32字节。(1字节=8位,可以使用16位base64编码,32位Hex编码) 4.crypto-js的加密方法 CryptoJS.AES.encrypt(data, key, { iv:iv, mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }); 该方法接受三个参数,第一个是加密的数据(data),第二个是加密的秘钥(key),第三个是加密方法对象,该对象能接受三个值:iv表示偏移量(CBC模式特有),mode表示加密模式,padding表示填充方式(加解密数据不满16位用于填充的方法) 这是crypto-js提供的加密方法,理论上如果传入字符串类型的参数,方法内部会自动转为WordArray格式。但是为保证规范,我们将上述传入参数都转换为WordArray格式。下面是官网提供各种编码转化方式: CryptoJS.AES.encrypt方法加密后的结果是一个对象,其中包含了加密后的数据。这个对象通常包含以下属性: ciphertext: 加密后的数据,以WordArray对象的形式存储。 key: 加密使用的密钥,以WordArray对象的形式存储。 iv: 加密使用的初始化向量(IV),以WordArray对象的形式存储。 所以根据需要加密的编码格式这边可以得到最简单的一个加密过程,下面方法中默认传入的为utf-8编码格式数据,结果输出的是bsae64格式密文。这边注意还有个比较常用的密文输出是Hex编码,通常可以用toString()方法代替CryptoJS.enc.Hex.stringify(),即encrypted.ciphertext.toString()就是将WordArray对象格式转化为Hex编码返回。 function aesEncryptCBC(key,data,iv) { //将key,data,iv都转化为wordarry格式,根据传入的编码格式选择对应的方法 key = CryptoJS.enc.Utf8.parse(key); iv = CryptoJS.enc.Utf8.parse(iv); data= CryptoJS.enc.Utf8.parse(data) var encrypted = CryptoJS.AES.encrypt(data, key, { iv:iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); //这里返回的是Base64的密文 return CryptoJS.

AI从业者怎么做Science?清华大学AIR周浩:从文本生成到蛋白质设计的跨界探索

近日,北京智源大会「AI for Science」分论坛上,清华大学智能产业研究院副研究员周浩以「面向科学发现的生成式人工智能」为主题展开演讲, HyperAI超神经在不违原意的前提下,对周浩教授的深度分享进行了整理汇总。 周浩教授演讲现场 从文本生成到分子设计的跨界探索 本次演讲,周浩教授主要从面向复杂符号的生成式人工智能、微观样本生成所面临的挑战、目前的具体研究内容 3 个方面进行阐述。 在介绍其相关研究方向时,周浩教授表示,过去 10 年他一直致力于包括文本生成和机器翻译等自然语言的处理。近两年来,其研究重点逐渐从内容创作转向分子生成和蛋白质设计。 在他看来,如果将过去的文本处理工作视为一个复杂的语言符号系统,其中词汇表由 26 个字母构成,那现在的工作就相当于将这 26 个字母扩展到元素周期表、氨基酸、碱基等更广泛的领域。对于这些技术,他的研究团队已经积累了丰富的经验。 从专注于内容创作的人工智能到致力于科学发现的人工智能, 这两者之间存在何种联系?事实上,人工智能可以通过噪声生成完整的图像,许多北美的研究团队也早已利用相似的方法来进行蛋白质设计。通过在空间中随机排列蛋白质的氨基酸,再经过一系列从 0 到 2,000 步的生成设计,就可以设计出外观上相当合理的氨基酸序列。 尽管目前该研究涉及的蛋白质长度还存在一定限制,但近期的研究成果已经显著扩展了这些限制,也暗含了该项技术的巨大潜力,这或许是周浩教授选择该领域的重要原因。 AI 从业者进行 Science 研究时遇到的多重挑战 随后,周浩教授向大家分享了从计算机科学或 AI 领域从业者的角度出发,探索科学领域的人工智能 (AI for Science) 主要面临的 3 大挑战。 第一,分子数据的特异性。 一般而言,文本和符号在处理时是离散的,图像则是 0 到 1 之间的连续信号,但分子数据既包含离散元素,又包含连续元素。 例如,在计算机中存储分子时,研究人员通常将其表示为原子坐标、原子类型,其中原子坐标是连续的,而原子类型是离散的,这形成了一种多模态数据,处理时难度较大。此外,分子还具有几何约束,如旋转、平移的不变性,这在文本或图像处理中并不常见。 第二,文本和图像的模型在蛋白质领域并不能完全复用。 分子数据不仅具有多模态特性,还对噪声极其敏感。例如,在一张狗的图片上加入噪声,人们仍然能够识别出这是一张狗的图片。但是,如果在分子数据上加入即使很微小的噪声,也可能导致人们无法识别分子的身份,造成大量信息丢失。因此,传统的处理方法并不完全适用于这种新的数据类型。 第三,分子数据顺序缺失。 文本对自左至右的依赖非常少,所以它可以通过 GPT 自左至右生成新的文本。但蛋白质的双向依赖性非常强,其前后左右顺序又不易确定,如果直接使用文本或图像模型来生成分子结构,将面临极大的困难。 为了应对上述挑战,周浩教授团队在数据结构、生成算法以及基座构建等方面进行了深入研究。 从数据结构出发,找到本征的数据刻画空间 仅保留二面角自由度,重构分子 3D 结构表示 「如何确定分子或目标数据结构的本征空间,是计算机人必须要解决的问题。」周浩教授表示,分子的三维结构表示非常重要,可谓是结构即功能。过去,研究人员主要通过记录原子的坐标、类型构建分子模型,进而获取所需信息。然而,分子的结构很大,又包含大量的冗余信息,如果用过去的方式来建模,从计算机科学的角度来看,这并不是在分子的本征空间中进行观察。 实际上,通过分析分子的键长、键角和二面角就会发现,分子键长、键角的峰值较少,自由度有限,而二面角则有较多的自由度。因此,周浩教授团队设计了一种新方法,即保留二面角自由度的同时,移除其他冗余自由度。 具体来说,该研究可将三维结构转化为二维表示,并通过分子碎片化处理,使得每个分子内部的自由度最小化,而 fragment 之间的自由度最大化,利用动态规划技术,轻松解决 min-max 问题,之后再用算法将所有分子切割成目标数据结构。 论文题目: Regularized Molecular Conformation Fields 论文链接: https://neurips.cc/virtual/2022/poster/53277