[京东一面]如何用 Redis 统计用户访问量?

一、问题解析 拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢? 1、Hash 哈希是Redis的一种基础数据结构,Redis底层维护的是一个开散列,会把不同的key映射到哈希表上,如果是遇到关键字冲突,那么就会拉出一个链表出来。 当一个用户访问的时候,如果用户登陆过,那么我们就使用用户的id,如果用户没有登陆过,那么我们也能够前端页面随机生成一个key用来标识用户 当用户访问的时候,我们可以使用HSET命令,key可以选择URI与对应的日期进行拼凑,field可以使用用户的id或者随机标识,value可以简单设置为1。 当我们要统计某一个网站某一天的访问量的时候,就可以直接使用HLEN来得到最终的结果了。 优点:简单,容易实现,查询也是非常方便,数据准确性非常高。 缺点:占用内存过大。随着key的增多,性能也会下降。网站访问量不高还行,拼多多这种数亿PV的网站肯定顶不住。 2、Bitset 我们知道,对于一个32位的int,如果我们只用来记录id,那么只能够记录一个用户,但如果我们转成2进制,每位用来表示一个用户,那么我们就能够一口气表示32个用户,空间节省了32倍! 对于有大量数据的场景,如果我们使用bitset,那么可以节省非常多的内存。 对于没有登陆的用户,我们也可以使用哈希算法,把对应的用户标识哈希成一个数字id。bitset非常的节省内存,假设有1亿个用户,也只需要100000000/8/1024/1024约等于12兆内存。 Redis已经为我们提供了SETBIT的方法,使用起来非常的方便,我们可以看看下面的例子。 我们在item页面可以不停地使用SETBIT命令,设置用户已经访问了该页面,也可以使用GETBIT的方法查询某个用户是否访问。最后我们通过BITCOUNT可以统计该网页每天的访问数量。 优点: 占用内存更小,查询方便,可以指定查询某个用户,数据可能略有瑕疵,对于非登陆的用户,可能不同的key映射到同一个id,否则需要维护一个非登陆用户的映射,有额外的开销。 缺点: 如果用户非常的稀疏,那么占用的内存可能比方法一更大。 3、概率算法 对于拼多多这种多个页面都可能非常多访问量的网站,如果所需要的数量不用那么准确,可以使用概率算法。 事实上,我们对一个网站的UV的统计,1亿跟1亿零30万其实是差不多的。 在Redis中,已经封装了HyperLogLog算法,他是一种基数评估算法。这种算法的特征,一般都是数据不存具体的值,而是存用来计算概率的一些相关数据。 当用户访问网站的时候,我们可以使用PFADD命令,设置对应的命令,最后我们只要通过PFCOUNT就能顺利计算出最终的结果,因为这个只是一个概率算法,所以可能存在0.81%的误差。 优点: 占用内存极小,对于一个key,只需要12kb。对于拼多多这种超多用户的特别适用。 缺点: 查询指定用户的时候,可能会出错,毕竟存的不是具体的数据。总数也存在一定的误差。 上面就是常见的3种适用Redis统计网站用户访问数的方法了。 二、粉丝福利 我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍 、 需要的小伙伴斯我一下,或者评论区扣“求分享” 

力扣每日一题:2956. 找到两个数组中的公共元素

文章目录 ***今日份每日一题:***题目要求:示例如下:示例1示例2示例3 解释剖析示例示例1示例2示例3 将逻辑思路转换为代码 力扣官网:前往作答!!!! 今日份每日一题: 题目要求: 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们分别含有 n 和 m 个元素。请你计算以下两个数值: answer1:使得 nums1[i] 在 nums2 中出现的下标 i 的数量。answer2:使得 nums2[i] 在 nums1 中出现的下标 i 的数量。返回 [answer1, answer2]。 示例如下: 示例1 输入:nums1 = [2,3,2], nums2 = [1,2] 输出:[2,1] 示例2 输入:nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6] 输出:[3,4] 解释: nums1 中下标在 1,2,3 的元素在 nums2 中也存在。所以 answer1 为 3。 nums2 中下标在 0,1,3,4 的元素在 nums1 中也存在。所以 answer2 为 4。

网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术

网页数据抓取:融合BeautifulSoup和Scrapy的高级爬虫技术 在当今的大数据时代,网络爬虫技术已经成为获取信息的重要手段之一。Python凭借其强大的库支持,成为了进行网页数据抓取的首选语言。在众多的爬虫库中,BeautifulSoup和Scrapy是两个非常受欢迎的选择。本文将深入探讨如何结合使用BeautifulSoup和Scrapy,打造高效、精准的网络爬虫,以实现数据的高效抓取与处理。 一、BeautifulSoup简介与基础应用 BeautifulSoup是一个用于解析HTML和XML文档的Python库,它可以使开发者以一种更加简单、直观的方式来遍历、搜索和修改文档。 1.Python官方文档 - BeautifulSoup: https://www.crummy.com/software/BeautifulSoup/bs4/doc/ 2.使用BeautifulSoup进行网页解析的简单示例: from bs4 import BeautifulSoup import requests response = requests.get('https://www.example.com') soup = BeautifulSoup(response.text, 'html.parser') for link in soup.find_all('a'): print(link.get('href')) 二、Scrapy框架深度解析 1.Scrapy简介 Scrapy是一个强大的爬虫框架,它提供了丰富的功能,如请求调度、数据提取、异步处理等,适合用于构建复杂的网络爬虫项目。Scrapy被广泛应用在数据挖掘、信息处理、内容监测、自动化测试等多个领域。其强大的功能和灵活性使得开发者可以便捷地实现各种类型的爬虫程序。下面将具体介绍Scrapy的特点和架构,以及如何使用它来创建网络爬虫。 Scrapy的特点主要包括快速而强大、容易扩展和可移植(跨平台)三方面。Scrapy通过编写简单的规则就可以自动管理请求、解析网页并保存数据,无需使用多个库进行上述步骤。同时,它的中间件系统允许开发者插入新功能,而不必触碰核心代码,这大大提升了框架的灵活性。而且Scrapy是用Python编写的,因此可以在多个操作系统如Linux、Windows、Mac和BSD上运行。 Scrapy的架构设计非常独特,包括引擎、调度器、下载器、爬虫和项目管道等组件。这些组件通过数据流紧密协同工作,共同完成抓取任务。具体来说: 引擎(Engine):负责控制所有组件之间的数据流,并在需要时触发事件。调度器(Scheduler):接收来自引擎的请求,去重后放入请求队列,并在引擎请求时返回请求。下载器(Downloader):获取网页数据并将其返回给引擎,再由引擎传给爬虫。爬虫(Spiders):解析响应,提取出所需的数据(称为Items)和新的请求。项目管道(Item Pipeline):负责处理被爬虫提取的项目,并进行清理、验证和持久化操作,例如存储到数据库。 要开始使用Scrapy构建爬虫,通常需要进行以下步骤:选择目标网站、定义要抓取的数据结构(通过Scrapy的Items)、编写用于抓取数据的蜘蛛类,最后设计项目管道来存储抓取结果。Scrapy还提供了scrapy genspider命令,帮助快速生成蜘蛛模板,从而简化了初始开发过程。 2.Python官方文档 - Scrapy: https://docs.scrapy.org/en/latest/ 下面展示一个Scrapy爬虫的基本结构: import scrapy class ExampleSpider(scrapy.Spider): name = 'example_spider' start_urls = ['https://www.example.com'] def parse(self, response): for quote in response.css('div.quote'): yield { 'text': quote.css('span.text::text').get(), 'author': quote.css('span small::text').get(), } 三、整合BeautifulSoup与Scrapy的优势 BeautifulSoup是一个用于解析HTML和XML文档的Python库,使得开发者能够以简单和直观的方式遍历、搜索和修改文档。Scrapy则是一个强大的爬虫框架,提供了丰富的功能,如请求调度、数据提取、异步处理等,适合构建复杂的网络爬虫项目。 虽然BeautifulSoup和Scrapy都可以独立完成网页数据的抓取与解析任务,但将二者结合使用,可以发挥它们各自的优势,实现更高效的数据抓取。例如,可以使用BeautifulSoup来预处理和筛选DOM元素,然后利用Scrapy的高性能异步处理机制进行大规模的数据爬取。

新版本WPS不登录无法编辑的解决办法

原因分析:新版本的WPS因加入多种在线功能,建议登录账号获得更加体验 解决办法:首选第一种修改注册表后重启WPS,第二种仅作为临时满足工作需求,过一段时间会自动失效 方法一:键盘同时按下WIN+R键,在运行输入框输入regedit后点击确定或者回车。 在注册表打开如下位置:计算机\HKEY_CURRENT_USER\SOFTWARE\Kingsoft\Office\6.0\plugins\officespace\flogin 看看是否有enableForceLoginForFirstInstallDevice这个值存在,没有则在空白处右键-新建-字符串值,有则鼠标左键双击它, 将数值数据改为false后点击确定。 如果这时打开的WPS还未生效,请彻底退出。 重新打开WPS,可以不用登录账号就可以编辑了。 方法二:点击开始菜单-WPS Office-配置工具 点击高级。 点击其他选项-勾选兼容离线状态下的未登录使用方式,点击确定,就可以不用登录账号编辑了,但这种方式过一段时间会失效。

学习Python的IDE功能--(一)入门导览

项目视图是主要工具窗口之一。它包含项目目录、SDK 特定的外部库和临时文件。点击带条纹的按钮可以预览演示项目。您也可以按Alt+1打开。点击以打开项目视图,展开项目目录以查看项目文件。双击以打开welcome.py。 切换到"学习"工具窗口继续学习本课次。PyCharm已经为本课程配置了一个Python解释器。您可以对它进行修改或为您的项目创建另一个解释器。最简单的方式是使用状态栏中的Python解释器选择器。提示: 您可以在此了解您的 Python 解释器设置第一次打开项目时,PyCharm会扫描Python SDK和项目本身,以收集编码辅助所需的详细信息。要继续,请等待索引完成。您已经打开了演示示例。在高亮显示的运行微件中,您可以看到所选配置的常用运行操作。例如,您可以运行代码或对其进行调试。现在,我们来运行当前文件,点击""或按Shift+F10。您可能会注意到find_average方法没有返回预期值6.5,而是返回26。我们来查看return语句,调试有问题的代码。 点击高亮显示区域内的装订区域以设置断点。点击""图标启动调试过程。"调试"工具窗口为工具栏提供了各种调试操作。您可以稍后在"调试工作流"课次中进行尝试。停止调试。点击""图标。发现代码中的问题后,我们来修正。将得到的和除以值的长度。课次脚本已插入/Len()。接下来,我们开始在括号()内输入values。PyCharm会在您输入时自动显示补全选项。或者,您也可以按Ctrl+空格并继续输入以缩短列表。选择values并按Enter。您刚刚修正了一个错误,但还可以进一步改进这段代码。PyCharm将高亮显示可以改进的代码行,并为这些行添加黄色灯泡。按Alt+Enter预览警告并应用快速修复。应用第一个条自:重新格式化该文件。执行此修正后,代码会看起来很整洁。意图也可以节省您的时间,让编码更轻松。我们来使用意图快速添加find_average的返回值类型按Alt+Enter。选择使用注解指定返回值类型并按Enter。键入float,然后按Enter。在PyCharm中进行处理时,您可能想要搜索项目中的文件、符号、类,乃至IDE操作。在本课次中,我们将搜索切换大小写操作,以将AVERAGE字符串改为小写。按两次Shift以打开"随处搜索"对话框。可以看到,所选文本AVERAGE已被自动复制到输入字符串中。我们不输入AVERAGE,而是输入大/小文字。选择"切换大小写"操作,然后按Enter。

【AI伦理挑战下的应对策略】构建隐私保护、算法公正与深度伪造管控机制

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 目录 引言 一、构建可靠的AI隐私保护机制 1.1 隐私保护的重要性 1.2 数据最小化与匿名化处理 1.3 加密技术与访问控制 1.4 用户赋权与同意机制 1.5 法律法规与国际合作 二、确保AI算法的公正性和透明度 2.1 算法公正性的重要性 2.2 增强算法可解释性 2.3 公平性评估与偏见检测 2.4 公众参与与监督 2.5 法律法规与行业标准 三、管控深度伪造技术 3.1 深度伪造技术的双重性与挑战 3.2 技术层面的防范措施 3.3 法律与政策层面的应对 3.4 行业自律与伦理准则 引言 人工智能(AI)作为21世纪最具颠覆性的技术之一,正以前所未有的速度改变着我们的生活、工作和社会结构。从智能家居到自动驾驶,从智能医疗到金融风控,AI的应用场景日益广泛,为人类带来了前所未有的便利与效率。然而,随着AI技术的深入发展,一系列伦理挑战也随之浮现,特别是数据隐私侵犯、信息茧房效应、算法歧视以及深度伪造技术滥用等问题,引发了社会各界的广泛关注与深思。本文将从构建可靠的AI隐私保护机制、确保AI算法的公正性和透明度、以及管控深度伪造技术三个方向出发,探讨应对AI伦理挑战的策略。 一、构建可靠的AI隐私保护机制 1.1 隐私保护的重要性 在大数据时代,个人隐私已成为一种稀缺资源。AI技术的广泛应用使得数据收集、处理和分析的能力大幅提升,但同时也加剧了个人隐私泄露的风险。因此,构建可靠的AI隐私保护机制,对于维护个人权益、促进AI技术健康发展具有重要意义。 1.2 数据最小化与匿名化处理 数据最小化原则要求AI应用在设计之初就明确所需的最小数据集,避免过度收集用户信息。通过精简数据收集范围,可以降低数据泄露的风险,同时减轻存储和处理的负担。此外,对于必须收集的个人敏感信息,应采取匿名化处理措施,如脱敏处理、加密存储等,确保即使数据泄露也无法直接关联到具体个人。 1.3 加密技术与访问控制 加密技术是保护数据隐私的重要手段之一。在数据传输和存储过程中,采用先进的加密技术可以有效防止数据被未经授权的第三方窃取或篡改。同时,建立严格的访问控制机制,确保只有经过授权的人员才能访问和处理数据,也是保障数据隐私的重要措施。 1.4 用户赋权与同意机制 用户是数据的主体,应享有对其个人数据的控制权。因此,在收集、处理和使用用户数据时,必须遵循用户赋权与同意的原则。企业应明确告知用户数据将如何被使用,并征得用户的明确同意。同时,为用户提供便捷的数据访问、修改和删除渠道,确保用户能够随时掌握和管理自己的数据。 1.5 法律法规与国际合作 制定和完善相关法律法规是保障AI隐私保护的重要基石。各国政府应加强对AI技术的监管力度,制定明确的隐私保护标准和规范。同时,加强国际合作与交流,共同应对跨国数据流动和隐私保护问题,推动全球AI治理体系的建立和完善。 二、确保AI算法的公正性和透明度 2.1 算法公正性的重要性 算法作为AI技术的核心组成部分,其决策过程直接关系到社会公平与正义。然而,由于算法设计中的偏见和歧视问题,AI在某些应用场景中可能加剧社会不平等现象。因此,确保AI算法的公正性对于维护社会公平具有重要意义。 2.2 增强算法可解释性 可解释性是指算法能够清晰地解释其决策过程和结果的能力。通过增强算法的可解释性,用户可以更好地理解AI是如何做出决策的,从而增强对AI的信任感。同时,可解释性也有助于发现和纠正算法中的偏见和歧视问题,提高算法的公正性。 2.3 公平性评估与偏见检测 建立公平性评估机制和偏见检测机制是确保AI算法公正性的重要手段。通过对算法进行公平性评估,可以及时发现并纠正算法中的不公平现象。同时,利用偏见检测技术对算法进行持续监测和优化,可以确保算法在长期使用过程中保持公正性。 2.4 公众参与与监督 公众参与是确保AI算法公正性的重要保障。通过建立公开透明的AI应用评估体系,鼓励公众参与对AI应用的监督和评估过程,可以及时发现并纠正算法中的不公平现象。同时,加强公众对AI技术的了解和教育,提高公众对AI算法的辨识能力和监督意识也是必要的。

2024最新版Node.js下载安装及环境配置教程【保姆级】

一、进入官网地址下载安装包 Node.js 中文网 选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位 二、安装程序 (1)下载完成后,双击安装包,开始安装Node.js (2)直接点【Next】按钮,此处可根据个人需求修改安装路径,修改完毕后继续点击【Next】按钮 (3)可根据自身需求进行,此处我选择默认安装,继续点击【Next】按钮 (4)不选中,直接点击【Next】按钮 (5)点击【Install】按钮进行安装 (6)安装完毕,点击【Finish】按钮 (7)测试安装是否成功,按下【win+R】键,输入cmd,打开cmd窗口 输入:node -v // 显示node.js版本 npm -v // 显示npm版本 -------------------------------成功显示版本说明安装成功-------------------------------------------- 三、环境配置 (1)找到刚刚安装的目录,在安装目录下新建两个文件夹【node_global】和【node_cache】 (2)创建完毕后,复制刚刚创建的【node_global】和【node_cache】文件夹路径在cmd命令分别输入以下两条命令,注意不要两条命令的文件路径不要搞混了。 注:可以打开所创建的文件夹,把鼠标放在箭头指向的位置选择复制。 使用管理员身份打开cmd命令窗口(打开方法见下方Tips),输入以下命令(下面的路径是我创建的文件夹所在的路径,需要复制你们自己创建的路径哦) ①npm config set prefix “你的路径\node_global” (复制刚刚所创建的“node_global”文件夹路径) npm config set prefix "D:\common\develop\Nodejs\node_global" ②npm config set cache “你的路径\node_cache” (复制刚刚所创建的“node_cache”文件夹路径) npm config set cache "D:\common\develop\Nodejs\node_cache" -----------可以输入以下两条命令查看路径是否配置正确------------ Tips: 使用管理员身份运行cmd的方法 :点击左下角【开始】菜单,在搜索区域输入“命令提示符”,然后点击【以管理员身份运行】 ===============或单击鼠标右键选择【以管理员身份运行】========================== (3)配置环境变量 ①【此电脑】-单击右键-【属性】-【高级系统设置】-【环境变量】 ② 在【系统变量】中点击【新建】 变量名:NODE_PATH 变量值:D:\common\develop\Nodejs\node_global\node_modules 随后在后续安装完express模块之后就会发现在【node_global】里自动多出了一个【node_modules】文件夹 ③编辑【用户变量】中的【Path】 ④将默认的 C 盘下【 AppData\Roaming\npm 】修改成 【node_global】的路径,点击【确定】 ⑤在【系统变量】中选择【Path】点击【编辑】后点击新建【%NODE_PATH%】,随后一直点击【确定】直到关闭所有窗口即可。 四、测试

如何应对AI发展下的伦理挑战

目录 1.概述 2.构建可靠的AI隐私保护机制 2.1. 最小化数据收集 2.2. 数据去标识化 2.3. 加密技术 2.4. 分布式学习和边缘计算 2.5. 强化用户控制权 2.6. 独立审计和合规性检查 2.7. 持续教育和培训 2.8.小结 3.确保AI算法的公正性和透明度 3.1.增强AI决策透明度的方法 3.2.AI在社会中的应用与公平性 4.管控深度伪造技术 4.1. 立法与规制 4.2. 技术解决方案 4.3. 公众教育与意识提高 4.4. 合作与共享最佳实践 1.概述 面对人工智能带来的伦理与隐私挑战,需要采用多方位的策略来确保技术发展的同时也保护公众权益。以下是几个具体的应对措施: 1. 加强法规制定与执行:各国政府需制定严格的法律框架以规范AI应用,确保它们在不侵犯个人隐私和数据安全的前提下运行。也应有明确指导原则处理如数据来源透明、数据处理方法和目的明确等问题。 2. 算法透明度和审查:提高算法的可解释性是缓解公众担忧的有效方式。开发和部署AI系统时,需要对其决策过程和逻辑进行公开和解释,允许独立机构进行审查与评估。 3. 增强用户知情权和选择权:用户应充分了解他们的数据如何被收集、利用和共享。还应提供更多控制权给用户,使他们可以选择加入或退出某些数据处理功能。 4. 促进算法公平性:应用人工智能的组织需采用多样化的数据集来训练模型,避免因数据偏见导致的结果歧视。定期对AI系统进行公平性测试和调整,确保所有用户群体的公正待遇。 5. 建立应急响应机制:针对AI误操作或失误造成的损害,应构建快速有效的救济与补救机制,确保受影响个体或群体能够得到及时和公正的处理。 6. 推进国际合作与标准化:由于AI技术的跨界性,国际间的合作对标准设定尤其重要。通过国际组织和论坛,制定统一的AI应用标准和伦理准则,以促进全球治理同步推进。 7. 教育与培训:提高公众对AI技术的基本认识,通过教育与培训增强其对AI应用的理解和批判思维能力。 2.构建可靠的AI隐私保护机制 在设计和实施有效的数据保护措施时,确保个人隐私不被侵犯尤为重要。随着人工智能(AI)技术的快速发展和广泛应用,如何在AI处理敏感信息时保护个人隐私成为了一个紧迫的问题。以下是结合个人理解及实践经历的一些策略: 2.1. 最小化数据收集 只收集完成既定目标所必需的最小数据量。比如,在使用AI进行个性化服务时,不收集用户的个人身份信息,只收集与提供服务直接相关的数据。这种“最小化”策略可以大幅减少个人隐私泄露的风险。 2.2. 数据去标识化 在收集和存储数据时进行去标识化处理,即移除(或替换)所有能够直接或间接识别个人身份的信息。即使数据被非法访问,去标识化也能有效防止信息泄露导致的隐私侵权。 2.3. 加密技术 利用先进的加密技术来保护存储和传输的数据。即使数据在传输过程中被截获,没有解密钥匙也无法获知数据内容,有效防止数据被恶意利用。 2.4. 分布式学习和边缘计算 通过分布式学习(如联邦学习)和边缘计算,可以在不将用户数据中心化存储的情况下进行AI模型的训练。用户的数据可以留在本地设备上,而不是上传到云端服务器,从根本上降低了数据泄露的风险。 2.5. 强化用户控制权 给予用户对其个人数据的完全控制权,包括数据访问、编辑和删除的权利。为用户提供透明的数据使用政策,明确告知其数据如何被收集、使用和保护。 2.6. 独立审计和合规性检查 定期进行独立的安全审计和合规性检查,以确保所有数据保护措施都符合最新的法律法规要求,有助于及时发现和修复潜在的安全隐患。 2.7. 持续教育和培训 对于处理敏感信息的AI系统设计者和开发者进行持续的隐私保护和数据安全教育。确保他们了解最新的数据保护法律、技术和最佳实践。

单例模式 饿汉式和懒汉式的区别

单例模式(Singleton Pattern)是设计模式中最简单、最常见、最容易实现的一种模式。它确保一个类仅有一个实例,并提供一个全局访问点。单例模式主要有两种实现方式:饿汉式(Eager Initialization)和懒汉式(Lazy Initialization)。它们之间的主要区别体现在以下几个方面: 1. 创建对象的时机 饿汉式:在类被加载时就会创建实例对象。这意味着,只要类被JVM加载进内存,单例对象就会被创建。这种方式以空间换时间,即牺牲一部分内存空间来换取更快的访问速度,因为实例已经预先创建好了,不需要再进行判断。懒汉式:在类被加载时不会创建实例对象,只有在第一次使用该实例时才会创建。这种方式以时间换空间,即牺牲创建实例的时间来换取更少的内存空间占用,因为实例是在需要时才创建的。 2. 线程安全性 饿汉式:由于实例在类加载时就已经创建,因此不存在多线程访问时创建多个实例的问题,所以它是线程安全的。懒汉式:如果没有采取额外的同步措施,懒汉式在多线程环境下可能会出现多个实例被创建的情况,因此它不是线程安全的。但是,可以通过加锁(如synchronized关键字)或使用静态内部类等方式来确保线程安全。 3. 资源利用 饿汉式:可能存在资源浪费的情况,因为如果程序中从未使用过该实例,那么预先创建的实例就会浪费内存空间。懒汉式:由于实例是在需要时才创建的,因此可以避免不必要的资源浪费。 4. 使用场景 饿汉式:适用于实例创建过程相对简单,且不会占用过多资源的情况。或者,当系统初始化时就需要该实例,并且之后频繁使用,那么饿汉式可以节省获取实例的时间。懒汉式:适用于实例创建过程较为复杂,或者资源占用较多,且实例不是频繁使用的情况。通过懒加载,可以延迟实例的创建时间,从而节省系统资源。 综上所述,饿汉式和懒汉式在单例模式的实现中各有优缺点,应根据具体的使用场景和需求来选择合适的实现方式。

《滚雪球学Spring Boot》教程导航帖(更新于2024.06.20)

作者:bug菌 博客:CSDN、掘金、InfoQ、51CTO、腾讯云、阿里云、华为云等社区 简介:CSDN/阿里云/华为云/腾讯云/51CTO等社区博客专家,C站博客之星Top30,掘金年度人气作者Top40,掘金签约作者,华为云2023年度十佳博主,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿哇。 为了便于同学快速定位文章学习,熬夜几天整理出了专栏《滚雪球学Spring Boot》 已更新的内容文章地址,方便同学们快速定位学习。 📣Spring Boot 系列教程,2024 年国内最系统+最强(更新中) ⚡⚡ SpringBoot 系列教程,2023年国内最系统+最强 ⚡⚡ 🍊作者:bug菌,全栈开发数年老兵,✏️博客地址,希望对你有所帮助🏮 🌜Spring Boot 零基础入门篇教学,已完成文章清单(150+) 导读:SpringBoot 学习指南(附思维导图) Spring Boot入门(01):Spring Boot的奋斗成长史 Spring Boot入门(02):快速开发环境搭建和项目启动 Spring Boot入门(03): yaml、properties配置文件介绍及使用 Spring Boot入门(04):多环境切换,实例演示 Spring Boot入门(05):starter基础入门 Spring Boot入门(06):Spring Boot常用注解大全 Spring Boot入门(07):整合 MySQL 和 Druid数据源(两万字教学) Spring Boot入门(08):整合Mybatis访问MySQL实现增删改查 Spring Boot入门(09):使用MyBatis的XML配置方式访问MySQL实现增删改查 Spring Boot入门(10): mybatis之xml映射文件>、<=等特殊符号写法 Spring Boot入门(11):Spring Boot 整合 JPA Spring Boot入门(12):整合Mybatis-Plus mybatis-plus实现接口增删改查 Spring Boot入门(13): Mybatis-Plus之条件构造器使用手册 Spring Boot入门(14): mybatis-plus之如何自定义sql Spring Boot入门(15):Spring Boot 整合 MyBatis-Plus AutoGenerator 自动生成项目骨架代码

怎么调整硬盘分区?让电脑运行更加高效!

硬盘分区是电脑存储管理的重要组成部分,合理的分区设置不仅能提高数据管理的效率,还能在一定程度上提升系统的运行性能。然而,随着使用需求的变化,我们可能需要对已有的硬盘分区进行调整。那么,我们该怎么调整硬盘分区呢?本文将介绍两种调整硬盘分区的方法,帮助你根据实际需求灵活调整存储空间。 方法一:使用Windows系统内置的磁盘管理工具 Windows操作系统提供了内置的磁盘管理工具,用户可以通过这个工具进行基本的分区调整操作。 1.备份数据:在对硬盘分区进行任何调整之前,强烈建议先备份所有重要数据。因为分区调整过程中,一旦出现错误,可能会导致数据丢失。 2.打开磁盘管理工具:在Windows系统中,你可以按下Win+X键,然后选择“磁盘管理”来打开磁盘管理工具。 3.缩小或扩展卷:如果你想要调整某个分区的大小,可以右键点击该分区,选择“压缩卷”来缩小分区,或者选择“扩展卷”来增加分区大小。请注意,扩展卷的前提是该分区旁边有未分配的空间。 4.新建分区:如果你从现有分区中压缩出了一部分未分配空间,你可以右键点击这部分空间,选择“新建简单卷”,然后按照向导的提示来创建一个新的分区。 方法二:使用专业的分区调整软件 除了Windows自带的磁盘管理工具外,市场上还有许多专业的分区调整软件,这些软件提供了更为强大和灵活的功能,可以满足更复杂的分区调整需求。这里小编就以易我分区大师(EaseUS Partition Master Professional)为例,来为大家演示一下怎么调整硬盘分区。 步骤1.选择分区 在易我分区大师中选中需要调整大小或移动位置的分区,在右侧功能列表中选择【调整大小/移动】。 步骤2.调整大小/移动 在弹出的【调整大小/移动】的窗口中,拖动分区两侧的黑色小圆点,或通过高级设置“分区大小”、“分区前方可用空间”和“分区后方可用空间”,以调整分区大小或移动其位置。设置完成之后,点击【确定】 注意:该操作不会立即执行,而是会先被列入待执行操作列表。 步骤3.执行操作 确定要执行操作时,点击软件右下角【执行1个任务】,然后选择【应用】以执行该项操作。 总结 怎么调整硬盘分区,以上就是全部分享了。总的来说,调整硬盘分区是一个需要谨慎操作的过程。通过本文介绍的两种方法,你可以根据自己的实际需求灵活调整硬盘分区,从而更高效地管理数据和提升电脑性能。希望这些方法能对你有所帮助!

SpringBoot系列:通过AOP+注解优雅实现操作日志记录

文章目录 前言一、简介1.1 操作日志在企业应用中的重要性1.2 使用AOP和注解实现操作日志记录的好处 二、开发环境三、准备工作3.1 创建操作日志记录表3.2 创建系统日志实体类 四、代码实现4.1 创建业务枚举类4.2 创建日志注解4.3 创建操作状态枚举类4.4 创建IP工具类4.5 创建切面类4.6 操作日志注解使用 五、测试六、总结 前言 在企业应用开发中,操作日志记录是确保系统安全性、可追溯性以及调试分析的重要手段之一。通过记录用户的操作行为,不仅可以帮助开发者快速定位问题,还能满足审计和合规需求。本文旨在探讨如何在SpringBoot应用程序中通过AOP(面向切面编程)和自定义注解实现操作日志记录,并将日志存储到数据库中。我们将详细介绍实现这一功能的完整流程,包括项目环境搭建、数据库设计、代码实现及测试验证等步骤。 一、简介 1.1 操作日志在企业应用中的重要性 操作日志在企业应用中扮演着至关重要的角色。它不仅能够记录用户的操作行为,还能帮助开发和运维人员快速定位和解决问题,提升系统的稳定性和安全性。通过记录操作日志,企业可以: 监控用户行为:了解用户在系统中的操作轨迹,分析用户行为,改进用户体验。故障排查:发生问题时,通过日志快速找到问题的根源,缩短问题排查时间。审计与合规:记录关键操作,满足法律法规和行业标准的要求,防止恶意操作和数据泄露。性能分析:分析操作日志,可以发现系统性能瓶颈,指导性能优化。 1.2 使用AOP和注解实现操作日志记录的好处 在SpringBoot项目中,通过AOP(面向切面编程)和自定义注解来实现操作日志记录具有诸多好处: 分离关注点:将日志记录逻辑从业务代码中分离出来,保持代码的清洁和可维护性。减少重复代码:避免在每个业务方法中手动添加日志记录代码,提升开发效率。灵活性与可配置性:通过注解配置不同的日志记录需求,灵活应对各种场景。统一管理与维护:集中管理日志记录逻辑,方便后续的功能扩展和维护。 二、开发环境 JDK版本:JDK 17Spring Boot版本:Spring Boot 3.2.2MySQL版本:8.0.37Redis版本:5.0.14.1构建工具:Maven 三、准备工作 3.1 创建操作日志记录表 CREATE TABLE `sys_oper_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志主键', `title` varchar(50) DEFAULT '' COMMENT '模块标题', `business_type` varchar(20) DEFAULT '0' COMMENT '业务类型(0其它 1新增 2修改 3删除)', `method` varchar(100) DEFAULT '' COMMENT '方法名称', `request_method` varchar(10) DEFAULT '' COMMENT '请求方式', `oper_name` varchar(50) DEFAULT '' COMMENT '操作人员', `oper_url` varchar(255) DEFAULT '' COMMENT '请求URL', `oper_ip` varchar(128) DEFAULT '' COMMENT '主机地址', `oper_param` varchar(2000) DEFAULT '' COMMENT '请求参数', `json_result` varchar(2000) DEFAULT '' COMMENT '返回参数', `status` int(1) DEFAULT '0' COMMENT '操作状态(1正常 0异常)', `error_msg` varchar(2000) DEFAULT '' COMMENT '错误消息', `oper_time` datetime DEFAULT NULL COMMENT '操作时间', `execute_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '执行时长(毫秒)', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=64 DEFAULT CHARSET=utf8 COMMENT='操作日志记录'; 3.

关于Redis连接报错详情解决:ERR Client sent AUTH, but no password is set

最近项目上需要用到Redis缓存数据库,在前端对数据进行操作,并存入到缓存数据库时,后台控制台报错,报错截图如下: 这是由于,Redis没有配置密码,但是客户端向其发送了AUTH(authentication,身份验证)请求携带着密码,导致报错。 所以我们就需要给Redis设置密码。实现方式有两种: 方式一:通过命令行方式设置密码(设置的密码在服务重启后失效) 步骤如下: 1、启动redis服务 2、cmd命令行切换至Redis的文件夹中redis-cli目录或者点击redis-cli右击以管理员身份运行,打开命令窗口,使用命令行操作 3、查看是否设置了密码: 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is set 4、需要命令设置密码,命令如下: 127.0.0.1:6379> config set requirepass 123456 OK 出现OK了,说明设置成功 5、再次登录,就可以登录成功 redis 127.0.0.1:6379> AUTH 123456 OK 方式二:修改配置文件(推荐) 在redis目录下redis.windows.conf文件找到requirepass,追加一行,输入requirepass root,即为登录密码,重启redis服务再登录即可。 # requirepass foobared requirepass root //root为设置的密码 设置redis启动时加载配置文件的命令如下: redis-server.exe redis.windows.conf 设置密码以后,每次开启redis要输出 redis-server.exe redis.windows.conf ,感觉挺麻烦的,我们可以使用bat批处理来完成配置开启。 新建一个以.bat 为结尾的文件并输入以下内容,其中Redis_home=后是你的Redis安装目录 将该文件放到你redis安装目录下 set Redis_home=D:\software\Redis-x64-3.2.100 echo %Redis_home% %Redis_home%\redis-server.exe %Redis_home%\redis.windows.conf 后面直接双击该批处理文件即可

设计模式8种原则

1. 开放封闭 允许对类进行扩展,但禁止更改。 2. 依赖倒置 高层模块(稳定的)不应该依赖于低层模块(变化的,如子类)。二者都应该依赖于抽象。抽象不应该依赖于实现,实现应该依赖于抽象。 3. 里氏替换 子类必须能够替换他们的基类(IS-A)继承表达抽象类型 4. 单一职责原则 一个类应该仅有一个引起它变化的原因变化的方向隐含着类的责任 5. 接口隔离原则 不应该强迫用户依赖它们不用的接口。接口应该小而完备 6. 优先使用对象组合,而不是类继承 继承某种程度上破坏了类的封装性。使用对象组合可以避免这一点。 7. 封装变化点 使用封装来创建对象之间的分层界限。 8. 针对接口编程,而不是针对实现 客户程序只需要知道对象的接口即可,从而降低代码间的耦合。 总结 上述原则所遵循的规则主要就是: 降低代码耦合度,便于扩展;总会有变化和稳定的两种模块;当发生需求变化时,往往只需要新增一种子类。

【超详细】S905L3B机顶盒固件刷机包已root-adb-带影视桌面-可以跑pcdn

本线刷包为S905L3B的通用版本,桌面友好,无流氓软件,无内置跑量程序需自己安装,纯净系统(自带一个应用管家,非系统应用,可以删除),系统已root,开adb,安卓9,遥控器正常使用,可以看电视电影,还可以安装跑量系统赚取收益,最重要的是遥控器关机为假关机和没有强行内置跑量程序。 看是S905L3B的芯片,都可以刷 既然机顶盒芯片为S905L3B的,那就可以刷机用来跑流量,闲鱼10多20块一个,刷了到处放,接通宽带就行。送给用户看电视电影香得很! 此文所有用到的软件,和底包、刷机工具,均在以下网盘内,可自行选择下载使用: 百度网盘: 链接:https://pan.baidu.com/s/1feQEDpAZQbpGVkoAdpTxmQ?pwd=x7px 提取码:x7px 123不限速网盘 https://www.123pan.com/s/SrBsjv-PEoHd.html提取码:hNue UC网盘: 「兆能ZN90」https://drive.uc.cn/s/f567c80d12f94?public=1 夸克网盘: 链接:https://pan.quark.cn/s/547e54a84891 大概流程为: 1.机顶盒HDMI口插入短接刷机神器; 2.打开软件USB_Burning_Tool,载入安卓底包; 3.机顶盒不插电,插入USB公对公数据线; 4.过3秒插入电源,刷机软件会提示开始刷机; 5.等软件刷完后,拔掉短接刷机神器和usb线,拔掉电源重插重启。 6.进入机顶盒查看机顶盒ip,用开心电视助手连接机顶盒。 1.用短接神器插入盒子HDMI口 s905的短接神器可以去淘宝购买,几块钱搞定。 2.安装刷机软件并运行 直接运行安装文件Amlogic USB Burning Tool v2.2.0.exe,下一步即可。中间如果弹出来提示需要安装adb驱动的话就直接安装。 运行刷机软件 导入烧录包—— 选择擦除flash——普通擦除 擦除bootloader 最后点击开始 3.连接机顶盒 USB公对公数据线,插入机顶盒靠近HDMI一端的USB口; 插入usb口后,会发现短接神器亮灯,过3-5秒后,插入电源,并打开电源开关。 软件会找到设备,并提示刷机开始。 稍等几分钟刷机完成 完成后拔下USB线和短接神器,以及电源和网线。 重新插上电源,接上电视,开机。 刷机完成后第一次开机,需简单设置一下。 (1)开机设置中文界面 (2)有wifi可以设置wifi,没有就跳过,建议不要用wifi,不稳定。 (3)进来后选择右上角设置——设备偏好设置—— (4)在设备偏好设置内再选择这个home screen (5)选择第二个乐家桌面,如果你有自己安装的桌面,也可以选你自己的。 (6)返回,然后按遥控器上的桌面或者菜单之类的,就会进入我们自己地桌面,以后重启开机也是这个桌面。 在桌面-全部应用-系统应用-设置里面,查看网络和互联网,查看机顶盒ip地址 如果没有电视机来接入查看,可以接上网线,看看自己的路由器里面才上线的设备是多少IP,打开开心电视助手,连接adb,查看和安装相关软件。 开心电视助手打开后,填写设备默认端口为5555,输入ip和端口,点击连接,即可连上机顶盒,用鼠标来进行操作。 经测试,遥控器正常使用,电视电影正常观看,app安装也很正常。没有流氓软件,桌面的APP不需要可以把图标清除,桌面上的app实际未安装,点击后会自动下载安装。 本系统纯净版,自带的apk只有一个乐家桌面和一个应用管家,均为普通应用,可以随时删除,替换自己的桌面。 关于开关机,机顶盒会停留在你关机前的app界面的问题只需要去slimboxtv settings 里面的 autostart app 打开前两个选项,然后最后一个autostartapp 选择你的桌面APP就行了。不管你关机的时候是在什么界面,开机都会返回桌面 现在可以刷入跑量程序了,这里我们选择点心云的平台,对这种低配机顶盒,点心云的跑量还不错,安装也很方便简单。 下载点心云的机顶盒助手程序,运行安装。 一直下一步就行,最后应该要求安装adb,确定安装就是。 然后打开点心云机顶盒助手软件 切记把机顶盒插入网线,和电脑在同一局域网内。 然后点击机顶盒助手扫描,会自动识别局域网内能刷机的机顶盒。 如果识别不到,有可能机顶盒adb没有开,那先到如下选项打开: 设备偏好设置——关于—内部版本号—连续按遥控器确定——打开开发者模式 进入开发者模式——debug——打开adb——关了重新开,重复操作一次

Mysql数据库主从同步详解

Mysql主从同步详解 Mysql数据库设置主从同步前言1.主库(主服务器)配置1.1修改主库配置文件,启用二进制日志1.2重启数据库服务1.3创建远程连接账户1.4查看master状态,记录二进制文件名(File)和位置(Position):1.5停止主机数据库的写操作 2.从库(从机)配置2.1修改从库配置文件2.2重启从机Mysql服务2.3导入数据库2.4开始主从同步2.5查看从机状态2.6同步报错解决办法一2.7同步报错解决办法二 3.同步测试参考文献 Mysql数据库设置主从同步 MySQL数据库的主从复制是一种常见的数据备份和高可用性解决方案。通过配置主从复制,可以实现将数据从一个MySQL服务器(主服务器)同步到另一个(从服务器)。 前言 mysql数据库的主从同步设置需要修改主库和从库的配置文件,并执行同步指令,步骤并不复杂。但是在部署过程中还是遇到一些问题,找了很久好像没人遇到相同的问题,因此将部署流程与遇到的问题分享出来,希望遇到同样问题时有参考依据。 1.主库(主服务器)配置 1.1修改主库配置文件,启用二进制日志 数据库配置文件所在目录: CentOS7安装mysql后,配置文件默认路径为:/etc/my.cnf Windows安装mysql后,配置文件默认路径为:C:\ProgramData\MySQL\MySQL Server 5.7 本次安装的主服务器CentOS7中,因此需要进入到/ect目录下,修改my.cnf配置文件: #进入etc目录下 cd /etc #编辑mysql配置文件 vi my.cnf 在配置文件[mysqld]最后一行,添加以下内容: #mysql主库配置 server_id = 88 #集群唯一标识,主库从库不能重复(值为数据库IP) log_bin = mysql-bin #开启二进制日志 expire_logs_days = 7 #日志有效期(天) 内容说明: #集群唯一标识,主库从库不能重复,建议值取数据库IP,避免重复(该项必须配置) server_id = 88 #开启mysql二进制日志(该项必须配置) log_bin = mysql-bin #设置同步日志有效期(天),到期自动清理,避免磁盘占用空间过大(该项建议配置) expire_logs_days = 7 1.2重启数据库服务 Mysql数据库修改my.cnf配置文件后,需要重启数据库才能使修改的配置文件生效: systemctl restart mysqld 重启数据库后,可以查看数据库的运行状态,确保数据库正常运行(active): systemctl status mysqld 1.3创建远程连接账户 从库同步主库的数据,那么从库需要先连接到主库。初始的root账户只能在主库服务器中登录,在从库所在服务器中使用该账户是无法登录的,因此需要创建一个远程连接的账户: 登录数据库:mysql -uroot -p数据库密码 在Windows中直接通过命令行登录到mysql,需要将mysql添加到环境变量。 本次创建一个远程连接账户’slave’,密码为’test’(可以根据自己需要创建不同的账户密码),赋予账户只有复制权限: 方法一(分步执行): 创建mysql账户: CREATE USER 'slave'@'%' IDENTIFIED BY 'test'; %表示账户开通远程连接,允许所有IP通过该账户登录数据库。

Java SE—基本数据类型(详细讲解)

📝个人主页🌹:誓则盟约 ⏩收录专栏⏪:Java SE 🤡往期回顾🤡:Python 神器:wxauto 库——解锁微信自动化的无限可能 🌹🌹期待您的关注 🌹🌹 Java 作为一门广泛应用的编程语言,其强大的功能和灵活性使得它在众多领域都有着出色的表现。而在 Java 编程中,基本数据类型是一切数据操作的起点。它们决定了数据的存储方式、取值范围以及能够执行的操作。在这篇文章中,我们将全面剖析 Java 的基本数据类型,助您更好地理解和运用它们来构建高效、准确的程序。 Java基本数据类型 变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。 Java 的两大数据类型: 内置数据类型引用数据类型 一、内置数据类型 Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。分别为 byte、short、int、long、float、double、char、boolean。 需要注意的是 这里的字符类型和平常说的字符串类型不同,String不是基本数据类型,String是 Java 中的类,属于引用数据类型 ,用于处理文本字符串数据而基本数据类型是指像 byte、short、int、long、float、double、char、boolean这些可以直接存储和操作数据值的数据类型 byte: byte 数据类型是8位、有符号的,以二进制补码表示的整数;最小值是 -128(-2^7);最大值是 127(2^7-1);默认值是 0;byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;例子:byte a = 100,byte b = -50。 short: short 数据类型是 16 位、有符号的以二进制补码表示的整数最小值是 -32768(-2^15);最大值是 32767(2^15 - 1);Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;默认值是 0;例子:short s = 1000,short r = -20000。 int: int 数据类型是32位、有符号的以二进制补码表示的整数;最小值是 -2,147,483,648(-2^31);最大值是 2,147,483,647(2^31 - 1);一般地整型变量默认为 int 类型;默认值是 0 ;例子:int a = 100000, int b = -200000。 long: long 数据类型是 64 位、有符号的以二进制补码表示的整数;最小值是 -9,223,372,036,854,775,808(-2^63);最大值是 9,223,372,036,854,775,807(2^63 -1);这种类型主要使用在需要比较大整数的系统上;在定义 long 类型时必须在数字后面跟上 L 或者 l;默认值是 0L;例子: long a = 100000L,long b = -200000L。

Mac新手教程:程序坞里的启动台图标消失了如何解决?

启动台是Mac系统里放应用程序的地方,用户可以通过启动台打开软件列表。一般为了方便使用会把它放在程序坞,但一些用户程序坞里的启动台的图标不见了,如何找回呢? 1、打开Mac上的访达应用程序, 2、点击访达窗口左边的“应用程序”, 3、在应用程序里,找到启动台, 4、将启动台图标拖动到程序坞, 5、点击打开启动台,能看到应用程序列表说明完成了。 更多macOS实用教程,小白教学点击这里!

【前端5*】表格-表单1(弹窗在父组件)父子组件调用 vue element-ui

vue element-ui 中表单弹框的使用 写在最前面零、准备工作1.搭建 vue 环境2.安装 element-ui 组件3.在 main.js 引入 element-ui 组件4.把 App.vue 中的页面跳转注释掉 一、完成父组件-表单的前端、以及跳转逻辑0.事件处理与数据绑定1.前端 ui-固定列表格2.再写 import3.写 script 的方法:新增、编辑、查看、关闭4.提交确认方法:handleSummit5.写 template 的弹窗,包含表单的确认和取消按钮 二、完成子组件的表单1.前端 ui-表单验证2.声明 name,方便父组件调用3.必填校验 ruleForm4.写子组件给父组件传值5.验证是否传值成功6.页面渲染 三、页面显示模式(编辑和查看)逻辑1.接收父组件的值2.测试 type3.refs 方法需要监听4.子组件表单 编辑禁用5.回显数值6.更新数据 四、小结 🌈你好呀!我是 是Yu欸 🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~ 🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长! 写在最前面 感谢神仙实习单位,老师手把手教O(∩_∩)O~感谢侃哥的讲解,感谢雅欣的讲解录制。 后面对着视频又看了一遍,然后重新写了一遍,梳理流程加快后面代码速度。 注意命名,写具体的如 addView,尽量不写 add 子组件命名需要为double word,每个word用首字母大写 梳理后代码,主要为: (子组件)E:\ui\参考代码\demo-new\src\components\detail.vue (父组件)E:\ui\参考代码\demo-new\src\views\Home.vue 在现代Web开发中,表格和表单是用户交互中最常见的元素。无论是数据展示、编辑,还是信息提交,都离不开表格与表单的有效结合。Vue.js作为一个渐进式的JavaScript框架,配合Element-UI这样强大的组件库,可以大大简化开发流程,提高开发效率。 在本系列的第一篇文章中,我们将梳理如何在Vue.js中使用Element-UI实现表格与表单的结合:如何在父组件中通过按钮触发弹窗,并在弹窗中调用子组件的表单。 这种设计模式在实际项目中非常常见,特别是在需要对数据进行增删改查操作时,能够有效地提升用户体验和代码可维护性。 本文将分为以下几个部分: 1、环境配置与基础介绍 2、父子组件的结构与数据传递 3、使用Element-UI实现弹窗与表单 4、完整示例代码与详细解析(后面一篇博客) 准备好了吗?让我们开始吧! 零、准备工作 1.搭建 vue 环境 参考:【前端环境 3】已有代码配置 vue 环境 + 使用 vue ui 图形化界面创建 vue 项目 + vue 项目目录结构

win10解决wps使用开发者工具vb编辑器提示vbe6ext.olb不能被加载

如题,在win10系统中,使用wps开发者工具vb编辑器时 提示vbe6ext.olb不能被加载 很简单 : 右键excel 快捷方式-- 属性-->快捷方式, 打开文件位置, 找到vbe6ext.olb注册表打开:“win+R”->“regedit”注册表中找到 计算机\HKEY_CLASSES_ROOT\TypeLib\{0002E157-0000-0000-C000-000000000046}\5.3\0注意, ......\5.3\0 下面没有win32 可以添加项 win32 若有则不用 点击win32 右侧 点击默认编辑 将1中vbe6ext.olb的完整路径复制进来 最后, wps打开Excel 开发者工具-- vb编辑器 就打开了