基于java多角色学生管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此学生管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了学生基础数据的管理,注册老师信息的审核,公告信息的发布等功能。学生管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:学生管理系统;SSM框架;Mysql;自动化 Abstract The fast-paced development of the modern economy and the continuous improvement and upgrading of information technology have allowed the management of traditional data information to be upgraded to software storage, induction, and centralized management of data information. This book lending system was born in such a large environment, which can help managers to process huge data information in a short time. Using this software tool can help managers improve transaction processing efficiency and achieve double the result with half the effort.

Python 中处理JSON文件的方法

用 Python 读取、写入和操作 JSON 文件 JSON(JavaScript Object Notation)是一种流行的数据交换格式,易于人类阅读和编写。在编程领域中,与网络API或HTTP请求交互时经常会用到 JSON。Python 通过 json 模块提供了对 JSON 文件的内置支持。在本文中,我们将讨论如何使用 Python 读取、写入和操作 JSON 文件。 读取 JSON 文件 要在 Python 中读取 JSON 文件,可以按照以下步骤进行: 导入 json 模块。使用 Python 的 open() 函数打开 JSON 文件,模式设置为 r。使用 json.load() 函数将文件内容加载为 Python 字典。 下面是一个示例代码片段,演示了如何读取 JSON 文件: import json # 打开 JSON 文件 with open('data.json') as f: data = json.load(f) # 打印数据(它将以 Python 字典的形式存储) print(data) 写入 JSON 文件 要在 Python 中将数据写入 JSON 文件,同样可以使用 json 模块。以下是将数据写入 JSON 文件的步骤:

【JavaScript】数组 ① ( JavaScript 数组概念 | 数组创建 | 使用 new 关键字创建数组 | 使用 数组字面量 创建数组 )

文章目录 一、JavaScript 数组概念二、数组创建1、使用 new 关键字创建数组2、使用 数组字面量 创建数组 一、JavaScript 数组概念 在 JavaScript 中 提供了一种 特殊的对象 " 数组 " , " 数组 " 对象 可以 在一个 " 连续的内存空间 " 中 " 存储多个值 " ; 数组 中 存储的 数据值 可以是 任何类型 , 包括 数字类型 number字符串类型 string对象类型 object布尔类型 boolean空类型 null未定义类型 undefined数组类型 array : 数组 中 存储 数组 , 就变成了 二维数组 ; JavaScript 中的 数组 使用起来 很灵活 , 数组的大小可以 动态改变 ; 二、数组创建 1、使用 new 关键字创建数组 使用 new 关键字创建数组 :

PHP基础教程

PHP基础教程可以从以下几个方面进行介绍: 一、PHP简介 PHP是一种流行的服务器端脚本语言,主要用于Web开发。它最初是为创建动态生成的网页而设计的,现在已经成为一种功能强大的编程语言,可用于构建各种Web应用程序。PHP的语法简单易懂,学习曲线平缓,使得初学者能够轻松上手。 二、PHP环境搭建 在学习PHP之前,需要先搭建PHP的开发环境。这通常包括安装Web服务器(如Apache或Nginx)、PHP解释器以及数据库(如MySQL)。为了方便初学者,可以使用集成开发环境(IDE)或一键安装包,如XAMPP、WampServer等,这些工具可以简化环境搭建的过程。 三、PHP基础语法 变量:PHP中的变量以$符号开头,后面跟着变量名。变量名可以包含字母、数字和下划线,但不能以数字开头。数据类型:PHP支持多种数据类型,包括整数、浮点数、字符串、布尔值、数组、对象等。运算符:PHP支持各种运算符,如算术运算符、比较运算符、逻辑运算符等。控制结构:PHP提供了条件语句(if、else、switch)、循环语句(for、while、do-while)等控制结构,用于实现复杂的逻辑。 四、PHP函数和库 PHP内置了大量的函数和库,用于处理各种任务,如字符串操作、文件处理、数据库连接等。此外,还可以使用第三方库来扩展PHP的功能。 五、PHP与Web交互 PHP在Web开发中扮演着重要角色,可以与HTML、CSS和JavaScript等前端技术紧密配合,实现用户界面的动态交互。通过表单处理、会话管理等技术,PHP可以接收用户输入、处理数据并返回结果。 六、PHP与数据库交互 PHP可以与各种数据库进行交互,其中最常用的是MySQL。通过PHP的数据库扩展(如MySQLi或PDO),可以连接数据库、执行查询、插入数据等操作。 七、实战项目 最后,通过实战项目来巩固所学知识是一个很好的方法。可以选择一些简单的Web应用程序进行开发,如用户登录系统、留言板等。在开发过程中,不断实践和学习新的技术和方法,逐步提高自己的编程能力。 总之,PHP基础教程涵盖了从环境搭建到实战项目的各个方面,通过学习这些内容,你将能够掌握PHP的基本知识和技能,为后续的Web开发打下坚实的基础。 小编推荐Pythonit教程网(blog.pythonit.cn)

【JavaScript】JavaScript 程序流程控制 ⑧ ( 循环控制关键字 | continue 关键字 | break 关键字 )

文章目录 一、循环控制关键字 - continue / break1、break 关键字2、continue 关键字 一、循环控制关键字 - continue / break 在 JavaScript 中 , 通常会使用 continue 和 break 两个关键字 控制循环流程 , 在 for 循环 , while 循环 或 do…while 循环 中使用 这两个关键字 , 可以改变 循环的 执行流程 ; 1、break 关键字 break 关键字 的 作用是 " 马上跳出循环 执行循环之后的代码" ; 循环中 遇到 break 关键字后 , 就不再执行 循环体 中的 剩余代码 , 也就是不再 执行条件表达式 的 条件测试 ; 执行 循环提 代码块 时 , 如果遇到 break 关键字 , 则 直接跳出 循环 , 不仅 跳过 循环体 的剩余代码 , 并且连 "

Acwing_795前缀和 【一维前缀和】+【模板】二维前缀和

Acwing_795前缀和 【一维前缀和】 题目: 代码: #include <bits/stdc++.h> #define int long long #define INF 0X3f3f3f3f #define endl '\n' using namespace std; const int N = 100010; int arr[N]; int n,m; int l,r; signed main(){ std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m; int sum[N]; for(int i = 1; i <= n; i++){ cin>>arr[i]; sum[i]= sum[i-1] + arr[i]; } while(m--){ cin>>l>>r; cout<<sum[r]- sum[l-1]<<endl; } return 0; } 【模板】二维前缀和 例题 #include <bits/stdc++.h> #define int long long #define endl '\n' #define INF 0x3f3f3f3f3f using namespace std; const int N = 10010; int arr[N][N],pre[N][N]; int n,c; signed main(){ std::ios::sync_with_stdio(false); cin.

Java框架安全篇--Shiro-550漏洞

Java框架安全篇--Shiro-550漏洞 Shiro反序列化源码可以提取: https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4 JAVA反序列化就不说了,可以参考前面文章 https://blog.csdn.net/m0_63138919/article/details/136751184 初始Apache Shiro Apache Shiro是一个强大的并且简单使用的java权限框架.主要应用认证(Authentication),授权(Authorization),cryptography(加密),和Session Manager.Shiro具有简单易懂的API,使用Shiro可以快速并且简单的应用到任何应用中,无论是从最小的移动app到最大的企业级web应用都可以使用。 Shiro反序列化的漏洞有两个,550和721,这次我们先分析以下550 Apache Shiro -550 Apache Shiro RememberMe 反序列化导致的命令执行漏洞 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理 编号:Shiro-550, CVE-2016-4437 版本:Apache Shiro (由于密钥泄露的问题, 部分高于1.2.4版本的Shiro也会受到影响) 在Apache shiro的框架中,执行身份验证时提供了一个记住密码的功能(RememberMe),如果用户登录时勾选了这个选项。用户的请求数据包中将会在cookie字段多出一段数据,这一段数据包含了用户的身份信息,且是经过加密的。加密的过程是:用户信息=>序列化=>AES加密(这一步需要用密钥key)=>base64编码=>添加到RememberMe Cookie字段。勾选记住密码之后,下次登录时,服务端会根据客户端请求包中的cookie值进行身份验证,无需登录即可访问。那么显然,服务端进行对cookie进行验证的步骤就是:取出请求包中rememberMe的cookie值 => Base64解码=>AES解密(用到密钥key)=>反序列化。 在Apache shiro的框架中,执行身份验证时提供了一个记住密码的功能(RememberMe),如果用户登录时勾选了这个选项。用户的请求数据包中将会在cookie字段多出一段数据,这一段数据包含了用户的身份信息,且是经过加密的。加密的过程是:用户信息=>序列化=>AES加密(这一步需要用密钥key)=>base64编码=>添加到RememberMe Cookie字段。勾选记住密码之后,下次登录时,服务端会根据客户端请求包中的cookie值进行身份验证,无需登录即可访问。那么显然,服务端进行对cookie进行验证的步骤就是:取出请求包中rememberMe的cookie值 => Base64解码=>AES解密(用到密钥key)=>反序列化。 加密过程 首先我们利用靶场进行登入 并点击然后抓包得到 可以看到返回的http头里面新增了Set-Cookie,rememberMe还有一串字符。然后既然与rememberMe有关 ,我们着重关注他的代码处理就行 我们在\shiro-shiro-root-1.2.4\shiro-shiro-root-1.2.4\core\src\main\java\org\apache\shiro\mgt\AbstractRememberMeManager.java里面发现了 shiro启动时在构造函数中设置密钥为DEFAULT_CIPHER_KEY_BYTES 这个也就是我们要找到的默认的KEY了 我们跟进到 AbstractRememberMeManager继承的接口RememberMeManager(直接crtl+n 搜索就行) 在RememberMeManager.java里面发现onSuccessfulLogin方法 继续跟踪又回到 AbstractRememberMeManager.java里面发现里有一个判断isRememberMe的方法就是我们的有没有勾选RememberMe,如果没有就不走rememberIdentity, public void onSuccessfulLogin(Subject subject, AuthenticationToken token, AuthenticationInfo info) { //always clear any previous identity: forgetIdentity(subject); //now save the new identity: if (isRememberMe(token)) { rememberIdentity(subject, token, info); } else { if (log.

AI+软件工程:10倍提效!用ChatGPT编写系统功能文档

系统功能文档是一种描述软件系统功能和操作方式的文档。它让开发团队、测试人员、项目管理者、客户和最终用户对系统行为有清晰、全面的了解。 通过ChatGPT,我们能让编写系统功能文档的效率提升10倍以上。 用ChatGPT生成系统功能文档 我们以线上商城系统为例,介绍如何使用ChatGPT帮我们完成系统功能文档编写。 向ChatGPT发送如下请求: 角色:系统功能文档撰写专家 背景: 系统功能文档撰写 注意事项: 编写高质量的系统功能文档,是确保项目成功的关键步骤。 技能: 熟练运用各类文档组织格式。 善于从客户视角考虑需求。 能够捕捉用户需求,将其转化为明确的功能要求。 精通系统功能的业务与技术细节。 具备逻辑思维,能够编写合理的实现逻辑和功能细节描述。 目标: 设计一个规范的系统功能文档框架,确保每个功能需求都得到明确描述。 在文档中包含功能名、需求描述、概述、功能细节描述。 工作流程: 首先,用话术引导用户输入系统需求描述,理解用户的期望和项目目标。 设计一个明确的系统功能文档框架,包含功能名、需求描述、概述、功能细节描述。 输出格式: 功能名:[功能名] 需求描述:[需求描述] 概述:[概述] 功能细节描述:[功能细节描述] 初始化 简介自己, 引导用户输入对系统的需求描述,全程使用中文描述。 ChatGPT回答如下: 您好!作为系统功能文档撰写专家,我在这里帮助您把系统需求转化为清晰、详尽的文档,确保项目成功实施。我将运用我的专业技能,从客户的视角出发,精准捕捉需求,并将其转化为明确的功能要求,同时确保文档的高质量和易于理解。 请您描述一下您希望实现的系统需求,包括您希望通过这个系统解决的问题、期望实现的功能等。这样我可以更好地理解您的项目目标,并为您设计一个规范的系统功能文档框架。 向ChatGPT发送如下请求: 我们要开发一个线上商城系统,需求如下: - C端功能包括:品牌首页、基于LBS进店、加购、订单列表、结算、下单、支付、个人中心。 - B端功能包括:组织管理、渠道管理、客户管理、店铺装修、商品管理、B端管理、库存管理、订单管理、营销管理、配送管理、数据分析。 帮我生成一份详细的系统功能文档。 ChatGPT回答如下: C端功能需求文档 1. 功能名:品牌首页 - 需求描述:为用户提供品牌介绍、主打商品展示、活动宣传等信息的入口页面。 - 概述:首页需要具有吸引用户并提供品牌信息的设计,包含搜索、分类浏览等功能,优化用户的访问体验。 - 功能细节描述:实现轮播图广告、热门商品推荐、品牌故事介绍等模块。支持用户搜索商品、查看各类商品分类。 2. 功能名:基于LBS的进店 - 需求描述:允许用户根据地理位置信息选择最近的店铺进行浏览和购买。 - 概述:通过LBS技术,推荐用户周围的店铺,提升用户体验和购买转化率。 - 功能细节描述:获取用户授权的位置信息,展示用户当前位置附近的店铺列表,支持店铺搜索和选择。 3. 功能名:加购 - 需求描述:用户可以将心仪的商品添加到购物车中。 - 概述:为用户提供便捷的商品浏览和加购体验,支持多商品加购和购物车管理。 - 功能细节描述:实现加购按钮、购物车商品数量编辑、购物车列表展示、商品选中结算等功能。 4. 功能名:订单列表 - 需求描述:允许用户查看其所有订单的状态和详情。

基于java的健身房管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本健身房管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此健身房管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了健身房基础数据的管理,员工的管理,公告信息的发布等功能。健身房管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:健身房管理系统;SSM框架;Mysql;自动化 Abstract The fast-paced development of the modern economy and the continuous improvement and upgrading of information technology have allowed the management of traditional data information to be upgraded to software storage, induction, and centralized management of data information. This book lending system was born in such a large environment, which can help managers to process huge data information in a short time. Using this software tool can help managers improve transaction processing efficiency and achieve double the result with half the effort.

基于JavaEE的龙腾公司员工信息管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本龙腾公司员工信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此龙腾公司员工信息管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了员工基础数据的管理,招聘统计与面试,部门和职位的添加修改,工资条和培训。龙腾公司员工信息管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:龙腾公司员工信息管理系统;SSM框架;Mysql;自动化 Abstract The fast-paced development of the modern economy and the continuous improvement and upgrading of information technology have allowed the management of traditional data information to be upgraded to software storage, induction, and centralized management of data information. This book lending system was born in such a large environment, which can help managers to process huge data information in a short time. Using this software tool can help managers improve transaction processing efficiency and achieve double the result with half the effort.

软件工程学习笔记11——软件测试篇

软件测试篇 一、谁该为产品质量负责1、什么是软件产品质量2、谁该为产品质量负责3、如何做到“人人为产品质量负责” 二、专职测试1、软件测试的主要工作2、为什么有些公司可以没有专职测试 三、Bug 跟踪工具四、软件开发中的安全问题1、安全问题本质是技术风险2、如何预防软件中的安全问题3、如果真的出现安全问题怎么办 一、谁该为产品质量负责 软件开发是多个环节组成的,从最开始的需求,到后面的设计、开发,每个环节都可能会导致质量问题。 1、什么是软件产品质量 功能质量、代码质量和过程质量这三个方面组合在一起,很好地概括了软件质量。 功能质量 满足用户需求,是对功能质量最基础的要求。在这个基础上,Bug 数量、性能、UI/UX 都是很重要的质量指标。 代码质量 虽然用户不能直接感知到代码,但是代码质量高低会直接影响功能质量,同时代码质量低也会影响后续的维护升级。代码质量指的是实现软件功能的架构和代码的质量。 代码的质量主要体现在以下这些方面:可维护性、可读性、执行效率、安全性、可测试性。 过程质量 过程质量虽然也是用户不能直接感知的,但是过程质量会直接影响代码质量和功能质量,甚至是产品的成败。 2、谁该为产品质量负责 既然产品质量是由功能质量、代码质量和过程质量共同决定的,那么对产品质量负责,意味着要对这三方面共同负责。 在说到责任之前,先补充一下权责对等的问题。责任和权力是需要对等的,比如说你让开发人员对软件开发过程负责,那么前提是他必须有权力去影响和控制开发过程。 软件测试,可以对功能质量负责,对软件产品进行测试验收,以确保产品满足功能需求,有好的功能质量。但是通常不能对代码质量和过程质量负责。开发人员,可以对代码质量负责,也可以写测试代码,通过自动化的方式做功能测试,虽然还不能完全替代手工测试的作用,所以也可以算得上对功能质量负责。但开发人员通常对过程质量影响有限。项目负责人,可以对过程质量负责,而且过程质量的水平高低,会间接影响代码质量和功能质量。但因为项目负责人不直接编码和测试,所以无法直接影响代码质量和功能质量。 所以综上,我觉得如果要排序的话,软件质量的首要负责人是项目负责人,其次是开发人员,然后才是软件测试。 虽然从权责的角度看,项目负责人是最应该对项目质量负责的,但是从效果来说,却是开发人员对项目质量负责最有利。 3、如何做到“人人为产品质量负责” 只有真正在团队中建立了一种重视产品质量的文化,每个人才会确确实实地对质量负责。那么有哪些方法可以帮助团队建立这种“人人都重视产品质量”的文化呢? 可以参考敏捷开发中的扁平化管理。可以选择将团队拆小。也可以鼓励工种之间的融合。这样不只是局限于各自负责的质量领域,也同时关注其他质量领域。制定相应的制度,鼓励大家重视质量。 二、专职测试 从这些年业界发展趋势来看,看起来很多公司都不需要专职测试了,只需要开发兼任测试工作就可以了。但这样真的可行吗? 1、软件测试的主要工作 如果对软件测试的工作简单总结一下,就是发现 Bug,报告 Bug,跟踪 Bug。 从测试的角度看,没有必要每一个可能都去测试,可以通过一些科学的方法来通过有限的测试用例,保证尽可能多的测试覆盖。比如: 等价类划分。就是把所有用户可能输入的数据分类,如果一类数据对于发现 Bug 的效果是一样的,那么这类数据就是一个等价类,测试的时候只要从里面任意选取一个值就好了。边界值分析。边界值是对等价类的补充,因为输入输出的边界是非常容易出错的一个地方。探索性测试。探索性测试就是根据前面的测试结果,通过有效的策略进行测试。 软件测试怎么报告 Bug 在测试的过程中,如果测试人员发现了 Bug,就会通过 Bug 跟踪系统提交 Bug 给开发人员。测试人员要做的就是创建一个新的 Ticket。 软件测试怎么跟踪 Bug 开发人员修复完一个 Bug 后,测试人员首先会验证这个 Bug 是不是真的被修复了,然后还要对整体功能做一个回归测试,确保不会因为修复 Bug 而引起其他功能出现问题。 回归测试是指修改了旧代码后重新进行测试,以确认修改没有引入新的错误或导致其他代码产生错误。 2、为什么有些公司可以没有专职测试 完全由开发人员兼职测试,还是很有难度的,不仅对开发人员要求非常高,而且需要开发人员承担所有的开发和测试的压力。 为什么有些公司可以没有专职测试: 大量优秀的工程师,可以同时兼任开发和测试;有大量的自动化测试代码覆盖;强大的发布和监控系统;时间进度比较宽松;用户对 Bug 容忍度较高。对于不能满足上面条件的公司,有专职的测试是更有利于软件项目开发和质量保障的。 大厂不设专职测试的启示 用自动化测试代替重复性的手工测试是必然趋势。测试设计是软件测试人员的核心竞争力。开发人员和测试人员的更多融合是一种双赢。 三、Bug 跟踪工具 测试人员发现 Bug 只是第一步,还需要报告 Bug 让开发人员可以知晓和定位,并且跟踪整个 Bug 修复的过程。

Cadence——导出BOM清单

首先使用Allegro PCB Designer打开xxx .brd PCB制板文件 如下图,然后点击Tools–>Quick Reports,再选择Bill of Material Report或者Bill of Material Report(Condensed),这两个的区别就是上面的导出的BOM物料清单中相同的器件是不会合并的,这样如果元器件很多清单就会显得比较冗长,而下面的是精简版,相同的器件在清单中会进行合并。 这里我选择导出精简版BOM 可以点击左上角保存图标 保存到本地,BOM表文件后缀是.htm,可以使用浏览器打开

每日一题——LeetCode1742.盒子中小球的最大数量

方法一 哈希表 就是统计所有编号的每位和,然后取出数量最多的那个和 var countBalls = function(lowLimit, highLimit) { const count = new Map(); let res = 0; for (let i = lowLimit; i <= highLimit; i++) { let box = 0, x = i; while (x !== 0) { box += x % 10; x = Math.floor(x / 10); } count.set(box, (count.get(box) || 0) + 1); res = Math.max(res, count.get(box)); } return res; }; 消耗时间和内存情况: 方法二 数组计数 最大编号10^5,那么盒子的编号不会超过45,直接创建一个数组,数组长度动态分配为highLimit的位数m*9,然后数组的每一项来计数编号的和,返回数组中最大的那一项

❤️算法笔记❤️-(每日一刷-26、删除有序数组的重复项)

文章目录 题目思路解法 题目 给你一个 非严格递增排列 的数组 nums ,请你** 原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过: 更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。nums 的其余元素与 nums 的大小不重要。返回 k 。 判题标准: 系统会用下面的代码来测试你的题解: int[] nums = [...]; // 输入数组 int[] expectedNums = [...]; // 长度正确的期望答案 int k = removeDuplicates(nums); // 调用 assert k == expectedNums.length; for (int i = 0; i < k; i++) { assert nums[i] == expectedNums[i]; } 如果所有断言都通过,那么您的题解将被 通过。

vue3深入组件:props

Props使用 1、组件需要声明它接收的props,vue才知道外部传入了哪些参数。 2、在使用<script setup>的单文件组件中,使用defineProps来声明组件接收的参数。 <script setup> const props = defineProps(['title','message']) console.log(props.title) </script> <template> <div>{{message}}</div> <div>{{props.message}}</div> </template> 3、在不使用<script setup>的组件中,可以使用props 选项来声明 export default { props: ['title','message'], setup(props) { console.log(props.title) } } 4、props声明时可校验类型,设置默认值 <script setup> const props = defineProps({ title: { type: String, default: '' }, menuList: { type: Array, default() { return []; } } }) console.log(props.title) console.log(props.menuList) </script> 注意事项 1、Props 名字格式应该使用小驼峰,在组件中使用kebab-case(小写短横线); // 父组件中 <AsideMenu menu-name="home"/> // 子组件中 <script setup> const props = defineProps(['menuName']) console.

Docker 四种镜像制作方式

一、使用 Dockerfile 制作镜像 Dockerfile 是 Docker 官方提供的一种用来自动化构建镜像的脚本工具。它通过一系列的指令来生成一个镜像,包括内部系统设置、软件安装、环境变量配置、启动命令等。优点是易于维护和分享,且可通过 Git 等版本控制工具进行管理;缺点则是构建速度较慢,不太适合快速迭代的场景。 二、通过导入文件制作镜像 该方法是将本地文件打包成一个镜像文件,再通过 Docker 客户端导入镜像,即可生成一个新的镜像。优点是组织结构清晰,易于管理;缺点则是导入的镜像占用空间比较大,并且需要注意文件权限等问题。 三、使用 Docker commit 命令制作镜像 使用 commit 命令可以将容器文件系统的更改打包成一个新的镜像。该方式的优点是速度非常快,且操作简单;缺点则是会导致镜像的版本管理比较混乱,不太适合用于正式环境的部署。 四、通过 Docker API 制作镜像 Docker API 可以通过编程的方式,实现镜像创建、修改、保存等一系列操作。优点是可以通过编程实现自动化构建镜像的流程;缺点则是需要编写代码实现,对技术要求较高。

工业网关助力RFID设备智能上云:实现数据无缝传输与远程监控!

工业网关是指用于连接工业设备与互联网的设备。它可以将传感器、控制器、PLC(可编程逻辑控制器)等设备连接到云平台或其他网络上,实现远程监控、数据采集、远程控制等功能。工业网关通常具有较强的通信能力,支持多种通信协议,如Modbus、OPC UA等,可以将不同协议的设备数据转换为统一的格式,方便在云端或其他系统中进行统一管理和分析。 为什么要使用工业网关? 1、连接异构设备 工业环境中存在各种不同类型和品牌的设备,如传感器、工业读写器等;它们可能采用不同的通信协议和接口。工业网关能够将这些异构设备连接到同一网络中,实现设备之间的数据交换和集成。 2、数据采集与监控 工业网关可以从各种传感器、控制器和设备中实时采集数据,并将数据传输到云端或本地服务器进行监控和分析。这有助于实现对生产过程的实时监控和远程管理。 3、安全性 工业网关通常具有强大的安全功能,包括数据加密、身份验证、访问控制等,以确保数据在传输过程中的安全性和完整性。这对于保护工业系统免受网络攻击和数据泄露至关重要。 4、云集成和物联网 工业网关可以作为物联网(IoT)系统的重要组成部分,将工厂设备连接到云平台,实现设备之间的数据交互和远程控制。通过与云端服务集成,可以实现更高级的数据分析、预测性维护和生产优化。 5、现有系统的整合 许多工厂和企业已经拥有一套现有的设备和系统,这些系统可能具有不同的通信接口和协议。工业网关可以作为桥梁,将这些现有系统整合到一起,实现数据的共享和协同工作。 常见的工业网关类型 工业网关的种类可以根据其功能和应用场景进行分类。以下是一些常见的工业网关类型: 协议转换网关:用于连接支持不同通信协议的设备,实现协议之间的转换,例如将Modbus协议转换为OPC UA协议。 数据采集网关:负责从各种传感器和设备中采集数据,并将数据传输到云端或本地服务器进行处理和存储。 远程访问网关:允许远程用户通过互联网访问工厂设备,进行监控、诊断和控制。 安全网关:提供安全功能,如数据加密、身份验证、访问控制等,保护工业系统免受网络攻击和数据泄露。 边缘计算网关:在工厂现场进行数据处理和分析,减少对云端的依赖,提高实时性和安全性。 工业物联网网关:作为物联网系统的核心组件,连接各种设备并与云平台集成,实现设备之间的通信和数据交换。 PLC网关:连接PLC和其他设备,实现远程监控和控制PLC,以及与其他系统的数据交换。 RFID识别设备将数据传输到云端? 工业RFID读写器通过无线射频信号识别标签或标签上的信息,并将这些信息发送给工业网关。工业网关接收到RFID设备传输的数据后,使用MQTT协议将数据传输到云端。 MQTT是一种轻量级的、基于发布/订阅模式的通信协议,非常适合在低带宽和不稳定网络环境下传输数据。在工业网关传输数据到云端之前,可能需要对数据进行处理和转换,以符合云端的数据格式和要求。在云端,可以使用相应的MQTT客户端接收数据,并进行进一步的处理和存储。一旦数据到达云端,可以将数据存储在数据库中,进行实时监控、分析和应用,从而实现对读写设备的远程监控和管理。 通过使用MQTT协议,工业网关能够可靠地将RFID识别设备采集到的数据传输到云端,实现工业物联网系统的连接和数据传输,为工业生产提供更高效、更智能的解决方案。 ANDEAWELL作为国内物联网产业感知层的知名品牌,专注于提升家电、汽车、仓储物流等领域生产制造智能化水平,提供成熟的工业感知、识别方面的技术产品,为其升级赋能提供强大的工业识别硬件支持。

发车,易安联签约某新能源汽车领军品牌,为科技创新保驾护航

近日,易安联成功签约某新能源汽车领军品牌,为其 数十万终端用户 建立一个全新的 安全、便捷、高效一体化的零信任终端安全办公平台。 随着新能源汽车行业的高速发展,战略布局的不断扩大,技术创新不断引领其市场价值走向高点,而大多数正在进行数字化转型的企业,也逐渐面临着数据泄露难防护、办公电脑易感染、用户行为难审计、办公体验不佳、IT运维繁重等多维度的传统安全问题。 在方案设计上,易安联认为需要匹配企业在多个维度进行综合性设计,单个维度的管理效果会由于办公的需求而产生安全的漏洞,所以 我们既要保护生产资料的安全,又要保障员工办公的便捷性,从安全建设思路中找到最佳平衡点 。 数据安全+用户体验 易安联为该企业提供的零信任终端安全解决方案,旨在为企业用户提供统一的新一代办公入口系统,打造集终端环境安全、数据防控安全、数据交互安全于一体的安全办公新模式。方案以零信任架构为基础,构建隔离的空间环境,根据业务访问方向提供访问控制,实现生产环境和上网环境的双隔离,管理平面清晰,各项安全机制兼容性高,且用户使用便捷。 方案采用 双重架构 : 基于传统安全沙箱机制,为企业办公数据提供隔离保护;创新性实现低密沙箱隔离机制,通过强制应用程序在安全空间内安装、对空间文件的流转提供双向的精细化审批控制等能力,为企业的数据保护提供了更加轻量、易用、低成本的方案选择。 集群部署+统一管理 针对用户规模大、分支机构多、权限管理复杂的现状,易安联为客户提供高可用的多分支部署方案:EnBox服务端组件分别采用集群化部署;在总部统一进行安全空间的用户和授权管理;安全空间客户端的访问分别由各分支单位的安全空间应用网关承载。实现统一管理,就近访问接 入,极大减少总部IT压力,提升用户的使用效率。 从而达到: 管理方便 安全产品之间相互结合,分工明确,无需交叉管理和配置; 兼容性强 研发、设计等大型工具对系统资源要求高,方案充分利用电脑终端资源,极大减小适配和兼容问题; 使用场景清晰 内外网隔离使用,只需重点关注网内的权限分配,无需多窗口、多空间切换; 效率高,体验好 窗口化操作界面,用户无需学习。空间应用商店、批量文件流转审批等功能,提升使用效率。 https://mp.weixin.qq.com/s/HsrYiHQUUF0SxxNOKnY0zQ

城管智慧执法系统源码,基于微服务+java+springboot+vue开发

城管智慧执法系统源码,基于微服务+java+springboot+vue开发 城管智慧执法系统源码有演示,自主研发,功能完善,正版授权,可商用上项目。 一套数字化的城管综合执法办案系统源码,提供了案件在线办理、当事人信用管理、文书电子送达、沿街店铺视频智能分析等功能,全面赋能执法队员,提高执法队员办案效率。手机端实现考勤、数据采集、上报等功能。简易案件支持移动端现场开具简易程序处罚决定书,打印后当事人可现场签字、进行缴款。 基于微服务+java+springboot+vue+element+uniapp+mysql5.7技术开发。 功能模块介绍: 执法办案 执法办案模块用于管理执法单位和执法人员行政执法的全过程,是数字执法系统的核心。功能包括:登记受理、立案审批、调查终结、事先告知、处理审批、处罚审批、处罚决定、 送达回证、执行缴款、结案审批、结案归档等行政执法全过程中的各处置功能。能够使执法人员在实施各项行政执法行为时明确执法责任,规范执法行为,正确行使职能,提高执法水平。 视频智能分析 支持对城市街道画面进行实时分析,系统可以实现违规摆摊检测、街道垃圾监测、违章停车识别、违规广告、出店经营检测、公共设施破坏、游摊小贩识别等违规识别。 利用视频监控、AI分析技术实现城市沿街店铺数据的采集和融合处理,为城市事件感知分析和实时监管提供支持。支持通过违规地点、负责中队、街道事件、核查情况进行查询 统计分析模块: 包括线索案件统计、事案件分析、上报数据统计、案件区域统计、AI视频识别分析、考勤统计 系统应用数理统计与数据分析技术,将执法人员的日常业务数据进行自动挖掘、汇总、统计、分析,提供基于图形、报表等可视化结果展现,能够及时、全面地掌握和分析行政执法工作的现状和水平以及各部门、执法人员的日常工作情况。 执法队伍管理 包括:执法队员管理、执法调度管理、队员考勤管理 执法调度支持查看人员轨迹,设置人员排班、查看在线人数、设置重点区域、分配任务、查询等功能。 通过所在部门、姓名、轨迹搜索,可查看地图上对应人员的所在位置及当前轨迹信息。 支持查看已排班人员的班次及时间,可同时调整多个相同班次的人员班次及时间。 支持在地图上标记重点区域,可重绘、删除该区域。 支持任务列表管理,可查看任务分配的详细情况和状。 文书管理 法律文书的制作是为了履行各项执法职能,保证行政执法行为合法、有效地进行。系统提供规范和帮助提升文书制作质量,有利于执法文书的档案管理、查询和统计,提高文书制作的速度。 支持文书模板的查询、编辑及导入导出功能。 知识库 执法人员可以利用法律法规知识库子系统可以快速查找各种相关信息,可以对案例进行学习。支持法律法规库的查询、编辑及导入导出功能。 案由库 案由库页面主要有新增、修改、查询功能。其中,自由裁量时,进入案由裁量数据,展示信息,并可进行新增、修改、删除;案由、法律依据、处罚条款项、管理条款项鼠标位于上方时悬浮显示所有内容。 智慧城管是指利用互联网、大数据、云计算、物联网、人工智能等现代信息技术,对城市管理活动进行数字化、智能化升级,实现城市管理的高效率和高透明度的管理体系。该体系通过集成城市管理相关的各类信息资源,构建统一的管理平台,实现对城市运行状态的实时监控、分析预测和快速响应。智慧城管涵盖了市容环境、市政公用设施、交通秩序、公共安全等多个方面的管理,旨在提升城市管理服务的质量和效率,改善市民的生活品质,推动城市的可持续发展。

HarborCDN技术分析

一、介绍 简要介绍 ​​Harbor​​ 是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。Harbor 的所有组件都在 Dcoker 中部署,所以 Harbor 可使用 Docker Compose 快速部署。 CDN的全称是Content Delivery Network,即​​内容分发网络​​。使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。 应用场景 harbor 基于角色的访问控制(Role Based Access Control)基于策略的镜像复制(Policy based image replication)镜像的漏洞扫描(Vulnerability Scanning)AD/LDAP集成(LDAP/AD support)镜像的删除和空间清理(Image deletion & garbage collection)友好的管理UI(Graphical user portal)审计日志(Audit logging)RESTful API部署简单(Easy deployment) CDN 网页加速流媒体加速大文件加速应用协议加速 二、架构原理 组网图及架构说明 Harbor大致模块工作原理见下图: Harbor依赖的外部组件 Nginx(即Proxy代理层): Nginx前端代理,主要用于分发前端页面ui访问和镜像上传和下载流量; Harbor的registry,UI,token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。Registry v2: 镜像仓库,负责存储镜像文件; Docker官方镜像仓库, 负责储存Docker镜像,并处理docker push/pull命令。由于我们要对用户进行访问控制,即不同用户对Docker image有不同的读写权限,Registry会指向一个token服务,强制用户的每次docker pull/push请求都要携带一个合法的token, Registry会通过公钥对token进行解密验证。Database(MySQL或Postgresql):为core services提供数据库服务,负责储存用户权限、审计日志、Docker image分组信息等数据。 Harbor自有组件 Core services(Admin Server): 这是Harbor的核心功能,主要提供以下服务:UI:提供图形化界面,帮助用户管理registry上的镜像(image), 并对用户进行授权。webhook:为了及时获取registry 上image状态变化的情况, 在Registry上配置webhook,把状态变化传递给UI模块。Auth服务:负责根据用户权限给每个docker push/pull命令签发token. Docker 客户端向Regiøstry服务发起的请求,如果不包含token,会被重定向到这里,获得token后再重新向Registry进行请求。API: 提供Harbor RESTful APIReplication Job Service:提供多个 Harbor 实例之间的镜像同步功能。Log collector:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。 核心组件 Proxy:一个nginx的前端代理,代理Harbor的registry,UI, token等服务。-通过深蓝色先标识db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。通过紫色线标识Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。通过灰色线标识;Registry:镜像仓库,负责存储镜像文件。当镜像上传完毕后通过hook通知ui创建repository,上图通过红色线标识,当然registry的token认证也是通过ui组件完成。通过红色线标识Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。过docker的log-driver把日志汇总到一起,通过浅蓝色线条标识 CDN(内容分发网络)