[二分查找]LeetCode2040:两个有序数组的第 K 小乘积

本文涉及的基础知识点 二分查找算法合集 题目 给你两个 从小到大排好序 且下标从 0 开始的整数数组 nums1 和 nums2 以及一个整数 k ,请你返回第 k (从 1 开始编号)小的 nums1[i] * nums2[j] 的乘积,其中 0 <= i < nums1.length 且 0 <= j < nums2.length 。 示例 1: 输入:nums1 = [2,5], nums2 = [3,4], k = 2 输出:8 解释:第 2 小的乘积计算如下: nums1[0] * nums2[0] = 2 * 3 = 6nums1[0] * nums2[1] = 2 * 4 = 8 第 2 小的乘积为 8 。

SQL 算术运算符:加法、减法、乘法、除法和取模的用法

什么是存储过程? 存储过程是一段预先编写好的 SQL 代码,可以保存在数据库中以供反复使用。它允许将一系列 SQL 语句组合成一个逻辑单元,并为其分配一个名称,以便在需要时调用执行。存储过程可以接受参数,使其更加灵活和通用。 存储过程语法 创建存储过程的语法如下: CREATE PROCEDURE 存储过程名称 AS SQL语句 GO; 执行存储过程的语法如下: EXEC 存储过程名称; 演示数据库 以下是 Northwind 示例数据库中 “Customers” 表的部分内容: CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden 存储过程示例 以下 SQL 语句创建了一个名为 “SelectAllCustomers” 的存储过程,用于从 “Customers” 表中选择所有记录: CREATE PROCEDURE SelectAllCustomers AS SELECT * FROM Customers GO; 执行上述存储过程的方法如下:

Mac--终端ls报错Operation not permitted

文章目录 一、问题二、原因三、解决 一、问题 拿到新的mac电脑,终端输入ls报错 二、原因 mac电脑启用了SIP(System Integrity Protection),增加了rootless机制,导致即使在root权限下依然无法修改文件,网上建议 关闭该保护机制。。。 网上搜了一下,当然能关闭,但感觉怪怪的,后来搜到了一篇文章来解决,个人认为不错 三、解决 系统偏好设置→ 安全和隐私 → 隐私 → 文件和文件夹英文是: System Preferences → Security & Privacy → Privacy (tab) → Files and Folders找到被挡住的程序:终端,文稿文件夹,好了,打上✅吧 打上✅之后弹出的提示,选他

斐波那契数列的C语言多种实现方法(递归、循环、动态规划、矩阵乘法和公式法)

介绍 斐波那契数列是一个非常有趣的数列,它的每一项都是前两项的和,前两项分别为0和1。这个数列的前几项是:0、1、1、2、3、5、8、13、21、34、55、89、144、233、377、610、987、1597、2584、4181、6765。这个数列的公式可以表示为: F0 = 0F1 = 1Fn = Fn-1 + Fn-2(n >= 2) 这个数列有许多有趣的性质,例如,两个连续的斐波那契数之比会收敛于黄金比例,约等于1.61803399。 在这篇博客中,我们将探讨如何使用C语言实现斐波那契数列,并讨论各种方法的时间复杂度。 递归实现 递归是最直观的方法,直接根据斐波那契数列的定义F(n) = F(n-1) + F(n-2)来实现。但是这种方法的时间复杂度是O(2^n),因为它会重复计算很多项,效率非常低。 #include<stdio.h> // 斐波那契数列函数 int fibonacci(int n) { if(n == 0) { return 0; } else if(n == 1) { return 1; } else { return fibonacci(n-1) + fibonacci(n-2); } } int main() { int n; printf("请输入一个整数:"); scanf("%d", &n); printf("斐波那契数列的第%d项为:%d\n", n, fibonacci(n)); return 0; } 循环实现 循环实现是一种更有效的方法,它使用两个变量来保存前两项,然后通过循环来计算第n项。这种方法的时间复杂度是O(n),效率比递归高很多。 #include<stdio.h> // 斐波那契数列函数 int fibonacci(int n) { if(n <= 1) { return n; } int a = 0, b = 1; for(int i = 2; i <= n; i++) { int temp = a + b; a = b; b = temp; } return b; } int main() { int n; printf("

数据结构奇妙旅程之顺序表和链表

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶ 个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 系列专栏:xiaoxie的JAVA系列专栏——CSDN博客●'ᴗ'σσணღ* 我的目标:"团团等我💪( ◡̀_◡́ ҂)" ( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)! 目录 ​编辑一.顺序表 1.底层实现 2.构造方法 3.常用方法 4.Arrays的遍历方法 ​编辑5.实战演示 一.顺序表 1.底层实现 首先我们要清楚,数据结构是一门逻辑十分清晰的学科,所以我们需要清楚的认识到每个结构的底层是什么,这样才能更好的掌握这个结构。 顺序表是用一段 物理地址连续 的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成 数据的增删查改。 2.构造方法 在集合框架中, ArrayList 是一个普通的类,实现了 List接口,并且ArrayList是一个泛型类 而ArrayList的构造方法如下所示 public class Text { public static void main(String[] args) { //无参 List<Integer> list = new ArrayList<>(); //指定顺序表初始容量 List<Integer> list1 = new ArrayList<>(20); list1.add(1); list1.add(11); //ArrayList(Collection<?

Python中查看对象的所有属性和方法以及查看属性是否存在

Python中查看对象的所有属性和方法以及查看属性是否存在 作者:爱编程的小金毛球球 日期:2023年12月3日 Python提供许多的内置函数和模块来帮助开发人员查看对象的所有属性,例如:dir(),vars(),__dict__等。 dir()函数查看对象的所有属性 dir()是Python内置函数之一,帮助检查给定对象的所有方法和属性,包含方法、变量、函数等。dir()函数用于枚举一个类或实例中的所有属性和方法。 语法:dir([object=None]) #!/usr/bin/env python3 # 定义一个字符串变量,并查看其所有属性和方法 sweet_talk= 'i love u' print(dir(sweet_talk)) # 输出(list): ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] 使用vars()函数和__dict__属性来查看对象的所有属性 与dir()函数不同,vars()函数和__dict__属性是专门用来查看对象的属性和值,我们可以使用vars()函数来查看用户自定义对象或内置对象的属性,使用__dict__属性来查看给定对象的所有属性。vars()函数和__dict__属性使用方法类似。

JWT从0到1,小白入门(JWT在vue前端中的使用)

JWT(JSON Web Token) JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它是一个紧凑的、自包含的方式,用于在不同的应用程序之间安全地传输信息。 JWT由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。 1. 头部 头部包含两个重要的信息:token类型(通常为JWT)和所使用的算法(例如HMAC SHA256或RSA)。 例如: { "alg": "HS256", "typ": "JWT" } 2. 载荷 载荷就是JWT所要传输的信息。载荷包含一组声明,声明包含一些有关实体(通常是用户)和其他数据的信息。 例如: { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } 常用的声明有: iss:JWT的签发者sub:JWT所面向的用户aud:接受JWT的一方exp:JWT的过期时间,这个过期时间必须要大于签发时间nbf:定义在什么时间之前,该JWT都是不可用的iat:JWT的签发时间jti:JWT的唯一身份标识 3. 签名 签名使用头部和载荷,以及一个密钥来生成。签名用于验证JWT的完整性,以及验证发送JWT的实体是否为可信任的。 生成签名的过程如下: 将头部和载荷用Base64Url编码连接编码后的头部和载荷,用句号 "." 分隔使用密钥和所指定的算法对句号分隔后的字符串进行签名 例如,在使用HMAC SHA256算法时,签名如下所示: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret) 其中,secret 表示密钥。 最终生成的JWT是一个长字符串,由三个部分用句号分隔组成,例如: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c JWT可以在HTTP请求的头部中进行传输,例如: Authorization: Bearer eyjhbgci...sda 这样,API可以解析JWT并验证发送请求的实体身份,然后决定是否授权访问所请求的资源。 总结来讲是一种用于在Web应用程序之间安全传输信息的开放标准(RFC 7519)。它是一种基于 JSON的小型身份验证和授权标准,包含了在不同系统之间传递的信息,如用户身份信息和其他元数据。JWT由三部分组成:头部、有效载荷和签名。头部包含JWT的类型和使用的加密算法;有效载荷包含实际传输的信息;签名用于验证有效载荷是否被篡改。JWT可以使用在任何需要安全传输信息的地方,比如API调用和单点登录应用程序 为什么要使用JWT? 使用JWT的主要原因有以下几点: 1. 身份验证和授权:JWT是一种安全的身份验证和授权方式,因为它能够验证发送请求的用户身份,并授权用户访问所请求的资源。 2. 跨域通信:在跨域通信的场景下,使用JWT可以避免一些安全性问题,例如跨站点请求伪造(CSRF)。

【算法专题】二分查找

二分查找 二分查找1. 二分查找2. 在排序数组中查找元素的第一和最后一个位置3. 搜索插入位置4. x 的平方根5. 山脉数组的峰顶索引6. 寻找峰值7. 寻找旋转排序数组中的最小值8. 点名 二分查找 1. 二分查找 题目链接 -> Leetcode -704.二分查找 Leetcode -704.二分查找 题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 - 1。 示例 1: 输入: nums = [-1, 0, 3, 5, 9, 12], target = 9 输出 : 4 解释 : 9 出现在 nums 中并且下标为 4 示例 2 : 输入 : nums = [-1, 0, 3, 5, 9, 12], target = 2

【算法】动态规划中的路径问题

君兮_的个人主页 即使走的再远,也勿忘启程时的初心 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,如果给算法的难度和复杂度排一个排名,那么动态规划算法一定名列前茅。今天,我们通过由简单到困难的两道题目带大家学会动态规划中的路径问题 好了废话不多说,开始我们今天的学习吧!! 动态规划之路径问题 一 不同路径1 题目解析2 算法原理状态表示状态转移方程初始化辅助节点初始化法 填表顺序:返回值 3 编写代码 二 下降路径最小和1 题目解析2 算法原理状态表示状态转移方程初始化填表顺序返回值 3 编写代码 总结 一 不同路径 原题目leetcode链接在这哦 不同路径 1 题目解析 如题目所示,在左上角有一个机器人,现在我们需要算出从当前位置到右下角位置一个有多少种不同的路径。注意:重点在于,我们是不能后退的,也就是说,每次进行移动时,只能朝右或者朝下移动。 题目题意理解相对比较简单,就先说到这里 2 算法原理 看到这种每一步都与上面一步有所关系的题目,我们首先想到的就是动态规划算法,我们来按照之前提到的动态算法的大致解题思路来进行一步步的分析 状态表示 对于这种「路径类」的问题,我们的状态表⽰⼀般有两种形式: i. 从dp[i, j] 位置出发,到某个位置去; ii. 从起始位置出发,到达dp [i, j] 位置。 分析一下题意,我们需要到达指定的位置,因此这⾥选择第⼆种定义状态表⽰的⽅式: dp[i][j] 表⽰:⾛到dp[i, j] 位置处,此时一共有几条不同路径 状态转移方程 有了上面的状态表示,我们就需要将dp每个位置的值建立一定的联系,方便我们之后的分析如果dp[i][j] 表⽰到达 [i, j] 位置的⽅法数,那么到达 [i, j] 位置之前的⼀⼩步,有两种情况: i. 从dp [i, j] 位置的上⽅( dp[i - 1, j] 的位置)向下⾛⼀步,转移到 dp[i, j] 位置; ii.

uniapp前端支付篇(微信、抖音、快手、h5)四个平台支付

前言 微信、快手、h5支付步骤大致相同,只有抖音是有自己的支付组件 项目同时支持多个(微信、快手、h5)平台支付,后端那边代码可以封装的 各平台支付大致流程都是相同的,总结了一下分为五个步骤 点击支付创建订单生成密钥和支付所需要的参数支付成功查询订单状态 一、微信支付 1.支付按钮 <button @click="payTap">立即抢购</button> 2.支付事件 payTap() { let that = this // 这些参数后端一般要的 let data = { openid: this.openId, //用户id 必需 courseId: this.detailsObj.id, //课程id(商品id)必需 promoterId: this.promoterShareId ? this.promoterShareId : '', // 分销员id couponId: this.detailsObj.receiveCouponId ? this.detailsObj.receiveCouponId : '', // 优惠卷id } // 如果一个项目里有多个平台支付,可以用传值来区分 // #ifdef MP-WEIXIN data.platform = 1 // #endif // #ifdef MP-KUAISHOU data.platform = 2 // #endif //创建订单 createWendaoOrder(data).then(res => { // 返回密钥 createOrder({ orderId: res.

vmware workstation pro 17.5 安装 macos 13.5.2 虚拟机超详细图文教程

前言 本文很细,甚至有点墨迹,主要为了方便从来没用过 vmware 的新人,其实大部分步骤和正常安装虚拟机没有区别,详细贴图以方便大家对比细节 参考文章 感谢大佬们的无私分享 https://blog.csdn.net/qq_19731521/article/details/126450895 https://www.mfpud.com/topics/11471/#:~:text=%E4%B8%80%E4%B8%AA%E7%AE%80%E6%98%93%E7%9A%84%E5%B0%8F%E8%AF%B4%E6%98%8E%EF%BC%8C%E4%BD%BF%E7%94%A8VMware%2017%E7%9A%84%E7%89%88%E6%9C%AC%E5%AE%89%E8%A3%85%E8%8B%B9%E6%9E%9C%20macOS%2013,%E7%B3%BB%E5%88%97%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%B0%8F%E6%95%99%E5%AD%A6%E3%80%82%201%EF%BC%8C%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85%E6%9C%80%E6%96%B0%E7%9A%84%E8%99%9A%E6%8B%9F%E6%9C%BAVMware%EF%BC%9A%20https%3A%2F%2Fwww.vmware.com%2Fgo%2Fgetworkstation-win%202%EF%BC%8C%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%9A%84%E8%A7%A3%E9%94%81%E5%B7%A5%E5%85%B7%EF%BC%9A%20https%3A%2F%2Fwww.mfpud.com%2Fvmware%2Funlocker%2F 优化虚拟机启动速度:https://blog.csdn.net/weixin_35437233/article/details/112577708 往macos虚拟机里面共享文件办法(以防vmtools拖拽文件失效):https://blog.csdn.net/qq_43362457/article/details/108237839 防止 macos13 崩溃闪退:https://i12bretro.github.io/tutorials/0764.html 系统环境及准备(截至本文发布时版本) win11 专业版macOS 13.5.2 iso 镜像:下载地址:https://macoshome.com/macos/20492.htmlVmware Workstation pro 17.5.0:官网下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.htmlunlocker:下载最新版的用于解锁 vm 安装 macos,不然默认 vmware 是安不了 macos 虚拟机的,下载地址 https://github.com/DrDonk/unlocker/releases 注意: 2023-11-16:经测试 macOS 13.6.1 目前会出现报错、系统崩溃自动重启等问题,而且运行极其卡顿,导致无法正常使用,建议使用13.5.2,13.5.2就很流畅,而且根据本文步骤设置可以解决系统崩溃问题 开始 安装 vmware 默认安装即可,最后的许可证用百度搜一个,其他需要注意的事项如下 修改虚拟机默认保存目录 要安装的 macos 预计要100G空间,所以可以在这设置一个空间充足的目录来作为默认目录 以后安装的其他虚拟机默认也会在这个目录下 安装 unlocker 解压出来,把 iso 文件夹中的两个文件 darwin.iso 和 darwinPre15.iso 复制到 vmware 安装根目录。 比如我的安装根目录就是 D:\Program\VMware Workstation 把Windows文件夹内的几个文件也复制到vmware根目录 然后右键以管理员身份运行复制到根目录下的 unlock.exe(注意此时如果打开了vmware workstation要关掉),然后会出现dos窗口 等待自动运行到出现 Press Enter key to continue… 的时候,关闭即可

【深入探究人工智能】历史、应用、技术与未来

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 深入探究人工智能 前言人工智能的历史人工智能的应用人工智能的技术人工智能的未来当代的人工智能产物结语🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:小智带你闲聊 🎉代码仓库:小智的代码仓库 前言 人工智能(Artificial Intelligence,AI作为一门前沿科技,正以惊人的速度深刻改变着我们的生活和社会。本篇将从人工智能的历史、应用、技术和未来四个方面深入探讨,同时也介绍一些当代的人工智能产物,带你领略AI技术的魅力与应用。 人工智能的历史 人工智能的历史可以追溯到1956年,当时在达特茅斯学院召开了首届人工智能会议,标志着人工智能作为一门独立的学科开始发展。在早期,研究人员对于人工智能充满了乐观和激情,认为通过仿照人脑的思维方式,计算机可以实现智能行为。然而,由于计算能力和数据的限制,70年代至80年代,人工智能进入了一段寒冬期,被寄予厚望的一些技术未能实现预期效果。但是,随着计算机技术的飞速发展,特别是互联网的普及,以及深度学习等技术的兴起,90年代以来,人工智能再度兴起,并取得了许多重大突破。 人工智能的应用 人工智能的应用已经渗透到各个领域,为我们的生活和社会带来了巨大的价值和意义: 医疗:人工智能在医疗领域具有广泛应用。通过分析医学影像和大量患者数据,AI技术能够帮助医生更准确地诊断疾病,提高医疗效率,减轻医护人员的工作负担。此外,人工智能还在个性化治疗方面发挥着越来越重要的作用,比如癌症治疗的个性化方案。最近几年,随着新冠肺炎疫情的爆发,人工智能还被广泛应用于疫情监测、诊断和预测等方面。 金融:人工智能在金融行业的应用也十分广泛。通过机器学习和数据分析,AI技术能够对客户信用进行评估,提高风险管理水平,优化投资策略,从而降低风险并提高盈利能力。当代的人工智能产物包括智能风控系统和智能投资顾问。最近几年,在区块链技术的支持下,人工智能在数字货币交易、智能合约等方面得到了广泛应用。 交通:自动驾驶技术是人工智能在交通领域的一个重要应用。通过AI技术,汽车可以自主感知和决策,实现自动驾驶,提高交通安全和效率。此外,人工智能还在交通规划、智能交通信号灯等方面发挥着重要作用。最近几年,在5G技术和物联网技术的支持下,自动驾驶技术得到了更广泛的应用。 安防:人工智能在安防领域的应用包括人脸识别、行为分析、智能监控等。通过AI技术,安防系统能够快速准确地识别和判断异常行为,帮助实现更精准的安防措施,提升公共安全水平。当代的人工智能产物包括智能监控系统和智能门禁系统。最近几年,在新型安全威胁不断增加的背景下,人工智能在安防领域得到了更广泛的应用。 人工智能的技术 人工智能的发展离不开一系列关键技术的支持,其中包括但不限于: 机器学习:机器学习是人工智能的核心技术之一,通过训练模型从数据中学习并做出预测或决策。深度学习是机器学习的一个重要分支,通过构建深层神经网络实现对大规模数据的学习和表征。 自然语言处理:自然语言处理技术使得计算机能够理解和处理人类语言。它包括语音识别、语义理解、机器翻译等技术,广泛应用于智能助手、智能客服等领域。 计算机视觉:计算机视觉技术使得计算机能够理解和分析图像和视频。它包括图像识别、目标检测、人脸识别等技术,广泛应用于安防监控、智能交通等领域。 人工智能的未来 人工智能的未来发展将持续引领科技进步与社会变革: 增强学习:增强学习是人工智能技术的一个重要方向。与传统的监督学习和无监督学习不同,增强学习是通过智能体在与环境交互中不断学习和优化,从而实现更加智能和灵活的行为。增强学习技术将为机器的自主决策和学习能力带来新的突破,未来可能会有更多的智能机器人应用。 智能机器人:随着人工智能和机器学习技术的进步,智能机器人将成为未来的重要趋势。智能机器人能够在复杂环境中自主决策和执行任务,广泛应用于生产制造、服务业等领域。当代的人工智能产物中,智能无人机和智能家居设备已经成为智能机器人技术的代表。 人机协作:未来人工智能的发展将更加注重人机协作,即让人和机器共同合作,发挥各自的优势,实现更高效、智能的解决方案。人工智能技术将为人类提供更多辅助和支持,帮助人们更好地发挥创造力和创新能力。 当代的人工智能产物 智能语音助手:如Apple的Siri、Amazon的Alexa和谷歌的Google Assistant等,这些智能语音助手能够通过声音识别和自然语言处理技术,回答问题、执行指令、提供信息等,为用户提供便捷的智能服务。 智能图像识别系统:这类系统利用深度学习技术,能够识别和理解图像内容。比如,人脸识别技术在手机解锁、人脸支付等方面已经广泛应用。 自动驾驶汽车:自动驾驶汽车利用传感器、计算机视觉和机器学习等技术,实现车辆的自主导航和驾驶。近年来,自动驾驶技术取得了长足的进展。 智能家居:智能家居设备通过互联网和人工智能技术,实现对家庭设备的远程控制和 结语 当代的人工智能产物不断涌现,为我们的生活带来了越来越多的便利和智能化体验。然而,人工智能的发展也需要我们认识到其中的挑战和风险,并采取相应的措施来确保人工智能的安全和可持续发展。通过深入探讨人工智能的历史、应用、技术和未来发展,我们可以更好地理解人工智能的意义和价值,以及其对我们生活和社会的影响。在未来,我们期待着更多的技术创新和应用突破,让人工智能持续推动人类社会的发展与进步,同时也需要我们积极应对其中存在的挑战和风险,为人工智能的安全和可持续发展做出贡献。 🍀小结🍀 今天我们认识了"人工智能的历史、应用、技术与未来"相信大家看完有一定的收获。 种一棵树的最好时间是十年前,其次是现在! 把握好当下,合理利用时间努力奋斗,相信大家一定会实现自己的目标!加油!创作不易,辛苦各位小伙伴们动动小手,三连一波💕💕~~~,本文中也有不足之处,欢迎各位随时私信点评指正!

毕业设计——java web大作业,通过jsp+servlet实现宿舍管理系统

系统功能分析 1.1 功能模块 宿舍管理系统实现的功能主要分三大类:系统用户的注册登录验证、对宿舍信息的增删改查、对学生信息的增删改查。 系统用户的登录注册验证 登录时,通过用户名和密码判断是否有此用户;注册时,不允许注册相同用户名的用户。为防止多次注册,设置邮箱验证码功能。基础抽象类如下: public boolean login(String username, String password) throws Exception;//登录验证 public boolean register(UserBean userBean) throws SQLException ;//注册用户 public boolean addUser(UserBean userBean);//增加用户 宿舍信息增删改查 宿舍功能模块的增删改查有许多限制条件,如增加宿舍时,宿舍楼号只能在01-10之间,当宿舍入住学生时不可删除,宿舍楼号作为唯一标识不可新修改,查询宿舍时可以多条件联合模糊查询。基础抽象类如下: public boolean addDorm(Dormbean dormbean) throws SQLException ;//增加宿舍信息 public boolean delDorm(Dormbean dormbean) throws SQLException;//删除宿舍信息 public boolean updateDorm(Dormbean dormbean) throws SQLException ;//更新宿舍信息 public ArrayList<Dormbean> selectDorm(Dormbean dormbean) throws SQLException ;//查询宿舍信息 public ArrayList<Dormbean> showAllDorm() throws SQLException;//展示所有宿舍信息 public int dormTotalCount(Dormbean dormbean);//获取宿舍个数 public Dormbean selectDormById(int id) throws SQLException;//根据id查询宿舍

前端小记--2.element-ui中级联选择器cascader如何默认展开下拉框

最近做项目时,遇到一个需求:在一个排班表中,展示人员的值班情况,点击单元格,弹出下拉框,修改人员排班信息。 由于下拉框选择内容是树状结构,这里使用了element-ui中级联组件cascader,设置单选模式即可。但是在官方的文档中没找到默认展开下拉框的api,折腾了一番,只能去看下源码了。 在cascader组件源码中发现有个toggleDropDownVisible,调用这个api接口实现下拉框展示与隐藏。 ... toggleDropDownVisible(visible) { if (this.isDisabled) return; const { dropDownVisible } = this; const { input } = this.$refs; visible = isDef(visible) ? visible : !dropDownVisible; if (visible !== dropDownVisible) { this.dropDownVisible = visible; if (visible) { this.$nextTick(() => { this.updatePopper(); this.panel.scrollIntoView(); }); } input.$refs.input.setAttribute('aria-expanded', visible); this.$emit('visible-change', visible); } }, ... 这里我们只需用ref获取级联组件的对象,调用其toggleDropDownVisible方法即可默认展示下拉框。 this.$refs['cascader_' + id][0].toggleDropDownVisible(true); 小提示:通过v-for生成的对象,获取ref时,结果是个数组

JDK21无法导入TimeUnit类

运行环境:windows11、IDEA2023.1.3、JDK21 问题描述:IDEA中无法导入java.util.concurrent.TimeUnit类。 以下截图是问题解决后的截图。有问题的时候未截图,说明一下,有问题的时候TimeUnit类是红色的,无法导入,查看JDK下面的java.util.concurrent包,会发现有这个类,注意的是,这时候这个类是.class文件,点开的话能看到源码,但是会提示"decompiled .class file bytecode version:65.0(Java 21)",意思就是这个类是反编译过来的。注意区分一下下图里面,显示的是java文件,这才是正常的。 解决办法是升级IDEA的版本,升级到2023.1.5后可以正常导入。我是直接通过update升级的,自动升级到1.5,我看官网可以下载的最新版是Version: 2023.2.5。PS:有兴趣的可以去看看BUG修复的日志。 另,如果遇到类似的问题,可以先尝试清空下IDEA缓存,重启IDEA的时候选择“Invalidate and Restart”,一般可以解决项目中有这个类但是import不了的问题。

AI时代架构师之路:技术、洞察和创新的完美融合

随着人工智能技术的飞速发展,我们正置身于一个由数据驱动的时代。在这个充满无限可能性的AI时代,架构师成为设计和构建先进系统的关键角色。然而,在追逐技术的同时,架构师需要修炼一系列综合素养,使其在技术、业务和伦理之间达到完美的平衡。 奠定基础:深厚的基础知识与编程技能 AI领域离不开扎实的基础知识。架构师需要对计算机科学、数学和统计学等领域有深刻理解,这为后续深入研究AI技术打下坚实基础。同时,熟练掌握一种或多种编程语言,如Python、Java、C++等,是架构师将理论付诸实践的关键。深入研究AI技术:跟随潮流,不断学习 AI技术日新月异,架构师需要不断深入研究各种AI技术,包括机器学习、深度学习、自然语言处理等。随着强化学习、生成对抗网络等新技术的涌现,架构师应保持对最新趋势的关注,时刻更新自己的知识储备。理解业务逻辑:技术与业务的完美结合 架构师不仅仅是技术专家,还应该是业务的理解者。深刻理解组织的目标和需求,与业务密切合作,是设计出满足业务需求的AI系统架构的前提。构建可扩展的系统架构:灵活、可靠、易于扩展 面对快速扩张的AI系统,架构师需要设计具有良好扩展性的系统。采用微服务架构、容器化技术等,使系统具备灵活性、可靠性,并易于随着业务需求的增长而扩展。保障数据质量与安全性:数据是AI的核心 数据质量和安全性对于AI系统至关重要。架构师需要设计完善的数据管道,确保数据的准确性和一致性。同时,采用先进的加密和隐私保护技术,确保数据的安全。敏捷开发与持续集成:应对市场竞争的挑战 在激烈的市场竞争中,架构师需要采用敏捷开发方法,快速响应业务需求。持续集成和持续交付成为确保系统能够随时随地交付高质量更新的不可或缺的一环。融合人工智能伦理:关注道德与社会责任 随着AI的广泛应用,伦理问题逐渐凸显。架构师需要关注AI系统的伦理和社会责任,确保系统在运行中遵循合法、道德的原则,不损害用户和社会的利益。持续学习与创新:跟随技术的步伐 AI技术不断演进,架构师需要保持持续学习的状态。参与学术研究、关注前沿技术、积极参与行业交流,保持对新技术的敏感性和洞察力。 总结 在这个充满机遇和挑战的AI时代,架构师应该以全面的素养,深厚的技术功底,深刻的业务理解,以及对伦理的高度关注,引领企业朝着成功的方向前行。通过修炼这一完整的修炼之道,每一位AI时代的架构师都有望在激烈的市场竞争中脱颖而出,为企业创造更大的价值。愿每位架构师在不断修炼中,成就自己,也为AI时代的发展贡献力量。 图书推荐 内容简介 本书是一本旨在帮助架构师在人工智能时代展翅高飞的实用指南。全书以ChatGPT为核心工具,揭示了人工智能技术对架构师的角色和职责进行颠覆和重塑的关键点。本书通过共计 13 章的系统内容,深入探讨AI技术在架构 设计中的应用,以及AI对传统架构师工作方式的影响。通过学习,读者将了解如何利用ChatGPT这一强大的智能辅助工具,提升架构师的工作效率和创造力。 本书适用群体 本书的读者主要是架构师及相关从业人员。无论你是初入职场的新手架构师还是经验丰富的专业人士,本书都将成为你的指南,帮助你在人工智能时代展现卓越的架构设计能力。通过本书的指导,你将学习如何运用ChatGPT等工具和技术,以创新的方式构建高效、可靠、可扩展的软件架构。 同时,本书也适用于对架构设计感兴趣的其他技术类从业人员,如软件工程师、系统分析师、技术顾问等。通过学习本书的内容,你可以深入了解人工智能对架构设计的影响和带来的挑战,拓展自己的技术视野,提升对软件系统整体架构的理解和把握能力。 作者简介 关东升,一个在IT领域摸爬滚打20多年的老程序员、知名培训专家、畅销书作家,精通多种信息技术。曾参与设计和开发北京市公交一卡通系统、国家农产品追溯系统、金融系统微博等移动客户端项目,并在App Store发布多款游戏和应用软件。长期为中国移动、中国联通、中国南方航空、中国工商银行和天津港务局等企事业单位提供培训服务。先后出版了50多部IT图书,广受读者欢迎。 获取方式 当当网购买链接:http://product.dangdang.com/29640582.html 京东购买链接:https://item.jd.com/13897131.html

Python 中 AttributeError: Int object Has No Attribute 错误

int 数据类型是最基本和最原始的数据类型之一,它不仅在 Python 中,而且在其他几种编程语言中都用于存储和表示整数。 只要没有小数点,int 数据类型就可以存储任何正整数或负整数。 本篇文章重点介绍并提供了一种解决方案,以应对我们在 Python 中使用 int 数据类型时可能发生的特定错误。 修复 Python 错误 AttributeError: ‘int’ object has no attribute AttributeError 是 Python 代码中可能出现的常见错误之一。 本教程处理一个这样的 AttributeError,即“int”对象没有属性“A”。 这里,A 可以是在 int 对象上使用的任何函数。 在继续示例代码并学习如何消除此错误之前,让我们了解此错误发生背后的原因。 AttributeError: ‘int’ object has no attribute 在代码中尝试访问不应使用整数访问的属性时出现。 让我们考虑一个示例代码,在这种情况下,我们将属性作为 startswith() 函数,并尝试将它与具有 int 数据类型的变量一起使用。 x = 16 print(type(x)) y = x.startswith('1') print(y) 上面的代码提供了以下输出。 我们知道 startswith() 函数是一个字符串数据类型的属性,而不是一个 int 数据类型,很容易理解这个错误的发生以及在我们的案例中如何解决它。 如果将 int 数据类型变量转换为 str 数据类型,然后处理给定的 startswith() 属性,则可以消除上述错误。 以下代码将 int 数据类型的变量转换为 str 数据类型,然后处理给定的 startswith() 属性。

SpringBoot+mysql+vue实现大学生健康档案管理系统前后端分离

一、项目简介 本项目是一套基于SpringBoot实现大学生健康档案管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试,确保可以运行! 二、技术实现 项目是采用SpringBoot + Mybatis + Shiro + VUE + ElementUI 数据库:mysql5.5及以上版本 开发工具:jdk8,idea或者eclipse,Navicat 三、系统功能 登录用户,分为 管理员、普通用户、医生 用户注册时可选择普通用户或者医生角色进行注册。 功能模块包括: 个人信息、 个人健康档案、 健康建议、 健康知识阅读、 健康档案管理、 角色管理、 用户信息管理、 权限管理等8个模块 可通过权限管理对不同角色授权达到不同角色登录系统时查看到的模块信息不同,还可对不同的角色配置按钮级权限,让不同的角色再相同的页面有不同的操作权限。 普通用户 普通用户登录以后需要先完善自己的个人档案信息,也可以查看医生对自己的健康建议。还可阅读医生发布的健康知识文章,增加自己对健康这一块的意识。当完善个人健康档案以后 则需要等待对应科室医生对自己的档案相关检查信息进行完善。完善以后就可在个人信息那里查看到自己的健康分析图。 医生 医生可进行发布健康知识阅读相关的文章,也可在健康档案管理那里进行用户档案信息完善,再档案的尾部,医生可经过档案信息给出自己的合理意见。给出的意见会显示再健康建议模块那里 医生可查看自己的建议是否被用户查看等。 管理员 拥有全部权限,可进行角色授权,用户管理等全部的权限。 四、页面功能 五、数据库 一共8张表 六、源码地址 https://download.csdn.net/download/weixin_43860634/88588089

vue3管理系统中后台返回pdf格式的文件流,前端如何预览?以及uniapp微信小程序中后台返回的base64位的pdf文件如何预览?

vue3 1. 先看一下后台接口返回的文件流。 2.安装插件,在使用的页面引入并使用 // 1 安装插件 npm i vue3-pdf-app // 2 在页面中引入并使用 import VuePdfApp from "vue3-pdf-app"; import "vue3-pdf-app/dist/icons/main.css"; // 使用组件 <vue-pdf-app style="height:100vh;" :pdf="state.pdfImg" /> 3. 修改请求返回的数据类型 responseType:'blob' export function GetColoscopyPdf(id:any) { return httpRequest({ url: '/Investigate/GetColoscopyPdf123?id='+id, method: 'get', responseType:'blob' }) } 4. 调用接口处理返回的文件流数据 GetColoscopyPdf(id).then((res)=>{ const blob = new Blob([res], { type: res.type }); // 保存文件流为 Blob state.pdfImg = URL.createObjectURL(blob); // 转换 Blob 为 URL }) uniapp 后台返回的是base64格式的pdf文件,首先需要解析base64文件的插件 image-tools 1 安装并引入插件

安卓小技巧:如何查看一个 apk 的包信息

目录 使用第三方网站(非常推荐)使用 aapt 工具(推荐)使用 apktool 工具(推荐)使用第三方查看工具(推荐)使用 Android Studio 操作(推荐)通过解压文件(混淆的打不开) 要查看一个APK文件的包信息,可以使用以下方式 (如果有更好的方法,大佬们可以分享一下)。 使用第三方网站(非常推荐) 如果有其他更好的网站可以分享一下。 https://www.sisik.eu/apk-tool 使用 aapt 工具(推荐) 【注】aapt 是安卓 SDK 默认带的,文件在 SDK/build-tools/xx.xx.xx(版本号)/ 中,随便找个版本都可以用。 aapt 是 Android Asset Packaging Tool 的缩写,用于处理APK文件。可以使用以下命令来查看APK包信息: aapt dump badging your_app.apk 请将 “your_app.apk” 替换为实际的APK文件名。执行此命令后,将看到包含应用程序信息的输出,例如包名、版本号等;其中有一行是以package开头的信息,包含了包名的信息。 例如查看微信的 apk 信息: cd /Users/roc/Library/Android/sdk/build-tools/30.0.0 ./aapt dump badging ~/Downloads/weixin8043android2480_0x28002b38_arm64_1.apk # 输入如下: package: name='com.tencent.mm' versionCode='2480' versionName='8.0.43' compileSdkVersion='32' compileSdkVersionCodename='12' install-location:'auto' sdkVersion:'23' targetSdkVersion:'29' 该 apk 的包名为: com.tencent.mm 使用 apktool 工具(推荐) 【注】该工具需要下载,下载官方地址:https://apktool.org/ apktool 是另一个强大的工具,用于反编译和重新编译APK文件。首先,需要安装 apktool。然后,可以运行以下命令: apktool d -s your_app.