java毕业设计——基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现(毕业论文+程序源码)——智能在线考试信息管理系统

news/2024/5/8 7:34:09/文章来源:https://blog.csdn.net/m0_66238867/article/details/127623462

基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。

文章目录:

  • 基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现(毕业论文+程序源码)
    • 1、项目简介
    • 2、资源详情
    • 3、关键词
    • 4、毕设简介
    • 5、资源下载

1、项目简介

  1. SMART系统是一个新型智能在线考试信息管理系统,该系统主要实现了学生在线考试与评估以及教师对学生在线考试信息的管理和维护。本文按照SMART系统的非功能性需求,基于Struts、Spring、Hibernate三种开源技术,构建了一个具有良好的可扩展性、可维护性、可靠性的系统框架。整个系统的框架分为三层,分别为表现层、业务层和持久层。 本系统的表现层是基于Struts作扩展设计,结合本系统的需求完成了自定义标签的封装,基本action接口的编写。在业务层则是采用单例模式设计与Spring的IoC模式相结合,实现了公共代理类的编写,各业务逻辑接口的封装。而在持久层的设计中则是采用基于现有持久层框架的实现模式,实现了对产生Session实例的封装,对常用数据库操作的封装。这样设计减少了耦合性且避免了生成大量的临时对象。
  2. 该系统框架能达到良好的可拓展性和维护性。它不仅仅适用这个系统的开发,可以应用于J2EE领域中基于SSH来架构的大部分B/S系统。


2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:10368个字28页
包含内容:整套源码+完整毕业论文


3、关键词

设计模式;开源;领域建模;系统框架

4、毕设简介

提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。

1 引言
1.1 课题背景
随着计算机技术的发展及计算机的日益普及,基于Web的在线考试与无纸化办公已成为大势所趋。特别是在大兴数字化校园建立的今天,基于WEB在线考试系统也已经成为学校信息化建设中不可缺少的一部分,它的优势不但体现在人力上也体现在物力上,基于WEB的在线考试系统的自动评阅、计分、成绩存档功能将有效地避免资源的浪费,有利于环保,减少人员投入,大大的提高了效率。

相比传统的考试方式,基于WEB的在线考试系统的主要好处是一方面可以动态地管理各种考试信息,只要准备好足够大的题库,就可以按照要求自动生成各种试卷;另一方面,考试时间灵活,可以在规定的时间段内的任意时间参加考试;另外计算机化的考试的最大特点是阅卷快,系统可以在考试结束时当场给出客观题考试成绩,计算机阅卷给了考生最大的公平感。
本文中研究了基于Web的在线考试系统―系统框架设计与开发设计与实现,包括系统需求分析和系统框架功能设计与实现。

1.2 国内外研究现状
省略

1.3 本课题研究的意义
本系统主要用来缓解传统考试所需要的繁琐工作流程,组织试题、印刷试卷、组织考试、监考防作弊、收卷判分、统计结果等,通过本系统,可以将以上考试的全部流程,完全借助计算机系统来实现,从而减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,使考试更趋于公证、客观、科学性进一步的激发了学生的学习兴趣。

2 系统需求分析
SMART系统框架在实现上要求采用在J2EE领域中比较流行的SSH框架组合方式,并结合系统自身的一些特点来实现适合于本系统框架设计,该系统的一些非功能性的需求如下:
2.1 可扩展性要求
一般来说,软件的可扩展性决定着其适应变更能力的大小。事后我们总是可以很容易地评价某个程序是可扩展的还是不可扩展的,但是要想使这个系统在今后真正派上用场,我们必须事先就对它有个判断。一个系统一般都是要在不断升级的过程中去结合用户的需求来完善自身功能,因此该系统要求采用清晰的接口把对象的实现与它的交互分离开来,特定的实现就可以独立于应用的其他部分,各个实现也可以在将来很方便地修改、升级甚至彻底替换。这时的应用不再是一个单独的东西,而是一个系统中半独立的组件。多个开发者可以在相互不破坏彼此成果或者甚至在不了解全局场景的情况下协同开发。组件提供了特定的功能,允许独立地测试,也可以重用于多个应用中。如果组件之间工作分配及接口是很清晰的,这样的软件就很容易扩展。

2.2 可维护性要求
系统在开发完成以后,后期的维护也是一个项目中重要的一环,包括为了满足用户的使用体验对代码所作的修改;对上线后长时间运行过程中所出现的BUG所作的修改等等这些需求,都是要求一个系统是具有可维护性的特性的。

2.3 可伸缩性要求
可伸缩性和性能是紧密相关的,但是它们并不完全相同。可伸缩性可以广义地定义为应用在请求数目增长时维护性能的能力。在SMART系统中要求达到一个地市州级地区教育系统内的全体学生提供在线考试服务,并发数应在10000人以上。在本系统架构的中是采用分层的技术,这将可以很好的满足可扩展性与可维护性的要求,但是各层之间的通信又反过来制约了伸缩性。因此,就要求我们在架构设计的时候使用有成效的实践经验来连接这些层次。

2.4 可靠性要求
可靠的软件在所有时刻都会按照预期的那样执行。与可伸缩性类似,一个可靠的系统取决于对其底层组件的可预测性。从一个用户的角度来看,可靠性是对整个系统的判断,包括硬件、软件和网络元素。如果一个单独的组件发生故障了,并且用户无法访问应用或者应用工作不正确了,那么整个系统就是不可靠的。在SMART系统中的需求中,可靠性是首当其冲的,特别体现在考试的过程中。如果在考试的过程中系统出问题了,或者在考试后的阅卷中系统算错分了,这都将是灾难性的错误,从而导致严重的后果。因此,保证SMART系统的可靠性的至关重要的。

3 系统开发环境及实现关键技术
3.1 硬件环境
CPU: AMD
内存:1 G
硬盘:80 G
3.2 软件环境
操作系统:Microsoft Windows Server
显示设置:SAMSUNG SyncMaster
应用软件:SQL Server + Eclipse + JDK + Apache Tomcat
3.3 系统实现的关键技术
3.3.1 AJAX技术
AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),该技术并不是一种新的技术,实际上是多种技术的综合,包括JavaScript、XHML和CSS、DOM、XMLXSL和XMLHttpRequest。其中使用XHML和CSS作为标准化的呈现,使用XMLHttpRequest作为异步数据的读取,使用JavaScript绑定和处理所有数据。

在AJAX提出之前,业界对于上述技术都只是单独的使用,没有综合使用,也是由于之前的技术需求所决定的。与传统的Web应用不同,AJAX采用异步交互过程。AJAX在用户与服务器之间引入一个中间媒介,从而消除了网络交互过程中的处理-等待-处理-等待缺点。用户的浏览器在执行任务时即装载了AJAX引擎。AJAX引擎用JavaScript语言编写,通常藏在一个隐藏的框架中。它负责编译用户界面及与服务器之间的交互。AJAX引擎允许用与应用软件之间的交互过程异步进行,独立于用户与网络服务器间的交流。现在,可以用JavaScript调用AJAX引擎来代替产生一个HTTP的用户动作,内存中的数据编辑、页面导航、数据校验这些不需要重新载入整个页面的需求可以交给AJAX来执行。
在这里插入图片描述

图1 Ajax的web应用模型

3.3.2 单例模式
单例模式作为设计模式中的创建模式类型中的一种,从其名字可以看出该模式确保了一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这类称为单例类。单例模式具有以下的特点:

  1. 单例类只可有一个实例。
  2. 单例类必须自己创建自己这惟一的实例。
  3. 单例类必须给所有其他对象提供这一实例。
    在Java中单例模式一般有三种实现其分别为:饿汉式单例类;懒汉式单例类;登记式单例类。
    省略

3.3.3 IoC模式
IoC (Inversion of Control)模式又称DI(依赖注入),从GoF设计模式中,我们已经习惯一种思维编程方式:Interface Driven Design 接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等,但是接口一定是需要实现的,也就是如下语句迟早要执行:
省略

3.3.4 JAVA反射机制
“反射”是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。Java 的反射机制是使其具有动态特性的非常关键的一种机制,这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。

3.3.5 JSP自定义标签
要在JSP中实现自定义标签,那么要求必须实现一个相应的标签处理类及写该标签的TLD文件,在JSP中一个自定义的action也就是对tag处理类,是基于一个bean类型的类,该类里面伴随的getter/setter方法对应于tag中的属性。另外这个tag handler类还必须要实现JSP规范中与tag相关的三个接口中的一个。这三个接口如下所示:

  1. Tag
  2. IterationTag
  3. BodyTag
    IterationTag继承了Tag,BodyTag继承了IterationTag在API中提供的两个类使开发自定义的标签变得容易,它们分别为TagSupport、BodyTagSupport。TagSupport实现了Tag与IterationTag的接口,而BodyTagSupport除了实现了那两个接口外还实现了BodyTag 接口。图5展现了整个标签处理过程:
    在这里插入图片描述

图5标签处理的生命周期
4 系统总体框架设计
4.1 总体结构说明
在这里插入图片描述

图6系统总体框架示意图
4.1.1 表现层
如图1所示,在整个SMART系统的总体框架中表现层是结合J2EE领域的开源框架Struts来实现的,Struts能充分满足应用开发的需求,简单易用,该框架是基于MVC模式的来构建的,该模式将表达层分解为自包含的和可重用的几个部分,当用户通过浏览器发起HTTP请求时,该框架将利用其ActionForm将请求页面的非对象化的数据转化为对象,交由其对应Action来处理。基于MVC模式的整个交互的序列图如图7所示:
在这里插入图片描述

图7 MVC模式中的交互
开发人员利用该框架进行开发时,不用再自己实现全套MVC模式,节省了大量的开发时间。
4.1.2 业务层
如图1所示,在表现层与业务层之间利用一个公共代理类来完成交互,该代理类采用单例模式设计开发,在整个框架中起到了如下几点作用:

  1. 减少耦合性
  2. 避免生成大量的临时对象
    在该代理类,实现一个对相应业务逻辑的处理方法,该方法的参数为一个封装好相应的页面数据对象、要调用的业务类的名称及该业务类中相应的处理方法名的类。
    在该层中利用了Spring框架中的IoC模式(英文全名为Inversion of Control即反转模式),该模式类似于著名的好莱坞原则:“Don’t call us,we’ll call you”,后被Martin Fowler改名为 Dependency Injection 依赖注射,也就是将类之间的关系通过第三方进行注射,不需要类自己去解决调用关系,实现了调用者和被调用者之间的解耦分离。IoC的引入并没有消除接口与实现类之间的联系,它的实质在于只是将这种联系转移了。在Spring的IoC实现中这关系被转移到相应的XML配置文件中,由Spring框架来提供对这种关系的依赖注入。其原理如图8所示:
    在这里插入图片描述

图8 IoC模式在Spring中的依赖注入

4.1.3 持久层
在SMART系统的整体框架中的持久层,是采用基于现有持久层框架的实现模式,在这种模式中,将最为繁琐的基于JDBC的OR映射工作,交由第三方组件(本框架中采用开源的Hibernate)来完成,这样就会在对数据访问对象进行编码时,大大的简化了一些繁琐而又复杂的编码工作,只需要利用Hibernate提供的API,对持久化对象进行操作。在该持久层框架提供了优秀的性能优化机制,如内置的数据库连接池支持,PreparedStatement缓存、数据缓存等。这些优化机制的综合使用大大提升了系统的性能。
在SMART系统的持久层中,对一些常用的添加、删除、更新数据库操作进行了抽象封装。并在Hibernate中配置相应的数据库连接池实现。
在这里插入图片描述

图9基于现有持久层框架的实现模式

4.2 总体结构设计与建模
4.2.1 公共代理机制的设计
在大部分采用B/S结构的web应用中,用户与系统的交互都是要涉及到相应的交互数据、业务逻辑,因此在本系统的框架设计中考虑到将这些交互中涉及到的因素全部封装到一个Carrier类中,再通过一个单例类来实现表现层与业务层的交互,这样用户操作时不用每次都去new一个临时的对象,也实现各功能模块中子程序之间的解耦。

4.2.2 系统接口设计
Java程序设计语言提供了两种机制,可以用来定义一个允许多个实现的类型:接口和抽象类。两种机制之间最明显的区别是,抽象类允许包含某些方法的实现,但是接口是不允许的。一个更为重要的不同之处在于,为了实现一个由抽象类定义的类型,它必须成为抽象类的一个子类。任何一个类,只要它定义了所有要求的方法,并且遵守通用约定,那么它就允许实现一个接口,不管这个类位于类层次的哪个地方。因为Java只允许单继承,所以,抽象类作为类型定义受到了极大的限制。接口使得我们可以构造出非层次结构的类型框架。例如:假设有一个接口代表一个singer(歌唱家),另一个接口代表一个songwriter(作曲家):
public interface Singer{
AudioClip Sing(Song s);
}
public interface SongWriter{
Song compose(boolean hit);
}
在现实生活中,有些歌唱家本身也是作曲家。因为是使用接口而不抽象类来定义这些类型,所以对于一个类而言,它同时实现Singer和Songwriter是完全允许的。实际上还可以定义第三个接口,它同时扩展了Singer和Songwriter,并且加入一些适合于这种组合的新方法:
public interface SingerSongwriter extends Singer,Songwriter{
AudioClip strum();
Void actSensitive();
}
如果要满足这样的一种灵活性,抽象类是不可能完成的。
虽然接口不允许包含方法的实现,但是,使用接口定义类型并不妨碍你为程序员提供实现上的帮助,在本系统的接口设计与实现中借鉴了Java API中的将接口类与抽象类的优点结合起来,将期望导出的每一个重要接口,都提供一个抽象类的骨架实现(skeletal implementation)类。按照惯有编码命名习惯,将该骨架实现类命名为AbstractInterface
在该系统中采用这种方式的来设计的接口有Business(业务)接口,DAO(数据访问对象)接口。

4.2.3 自定义标签的设计
省略

4.2.4 基于Struts表现层设计
大部分基于B/S结构的web应用系统中,在页面上经常会出现一个以上的功能按钮,而这些功能按钮基本上都是对应于后台的一个操作实现,由于在本系统中的表现层选用较为成熟Struts框架,该框架中最为核心的部分要属控制器控制转发相应的HttpRequest,其中的LookupDispatchAction类是允许你指定一个具有多个方法的类,每一个方法的调用都基于配置文件中指定的一个特殊请求参数值,利用该参数值反向查询资源绑定,并将它与类中的一个方法进行匹配。从这些功能可以看出Struts是满足对系统页面上多个功能按钮与实现的绑定。

因此,在对本系统进行架构设计的时候,考虑建立一个抽象的BaseAction类,该类继承LookupDispatchAction,实现LookupDispatchAction类中的getKeyMethodMap方法,在方法中返回本系统中请求参数值与资源文件中参数值的键/值对。实现一些对于所有的Action都是有可能用到的公共方法,包括从session中得到用户的信息;对页面上按钮是否显示的控制;检查用户权限;对公共业务逻辑接口的调用等等。在涉及到系统的具体开发实现的时候,要求所有开发人员在写自己的Action的时候统一继承BaseAction。

4.2.5 基于Hibernate持久层设计
本系统的持久层是基于开源的Hibernate来实现的,在了解到相关的Hibernate特性后,在本系统的框架中,从如下几个方面对其进行了进一步的封装。
省略

4.2.6 类图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.7 序列图
在这里插入图片描述

图20用户与系统交互的序列图

5 系统总体框架具体实现
5.1 各层具体实现
5.1.1 表现层
在本系统中的表现层实现了一个抽象的BaseAction类,该类继承LookupDispatchAction,实现LookupDispatchAction类中的getKeyMethodMap方法,在方法中返回本系统中请求参数值与资源文件中参数值的键/值对。实现一些对于所有的Action都是有可能用到的公共方法。部分代码如下所示:

public abstract class BaseAction extends LookupDispatchAction {
//实现父类的方法protected Map getKeyMethodMap() {Map map = new HashMap();map.put("button.save", "save");map.put("button.cancel", "cancel");…………………..return map;}//统一的业务逻辑调用方法protected Object call(Carrier vo) {PublicProxy proxy = PublicProxy.getInstance();Object obj = null;try {obj = proxy.process(vo);} catch (ApplicationException ex) {throw ex;}return obj;
}
//显示页面按钮protected void showButton(String buttonName) {Map btnMap = getButtonMap();btnMap.put(buttonName, "true");}//隐藏页面按钮protected void hideButton(String buttonName) {Map btnMap = getButtonMap();btnMap.put(buttonName, "false");}…………………………………
}

5.1.2 业务层
在本系统中的业务层实现了一个单例的PublicProxy类,系统中所有的表现层与业务层的交互都要通过这个类来实现。该类结合了Spring框架的相应的API对业务接口与其实现的对应关系的xml文件进行了解析,详见下面的类中的process方法中对xml文件的读取。

public class PublicProxy {private static PublicProxy instance = null;private static Object lock = new Object();private PublicProxy() {}//返回唯一的实例public static PublicProxy getInstance() {if (instance == null) {synchronized (lock) {if (instance == null) {instance = new PublicProxy();}}}return instance;
}
//相应的业务处理公共接口public Object process(Carrier aop) {Business business = null;ApplicationContext context 
= new ClassPathXmlApplicationContext("beans/*.xml");business = (Business) context.getBean(aop.getBusiness());return business.process(aop);}
}

5.1.3 持久层
本系统的持久层是基于开源的Hibernate来实现的,结合Hibernate提供的API提供相应实现的部分代码如下所示:

public class HibernateSessionFactory {…………………private static final ThreadLocal thread = new ThreadLocal();//打开一个新的sessionpublic static Session openSession(boolean useCurrent) {Session session = null;if (useCurrent && thread.get() != null) {session = (Session) thread.get();}if (session == null) {try {if (factory == null) {factory = new Configuration().configure(CONFIG_FILE_LOCATION).buildSessionFactory();}session = factory.openSession();//将session放入ThreadLocal中实现线程安全性设计thread.set(session);} catch (HibernateException ex) {ex.printStackTrace();}}return session;}………………
}

6 测试与分析
6.1 测试环境
本次测试的环境的硬件环境与系统的开发环境中的硬件环境相一致,只是在软件环境中用了开源的Apache Jmeter,它是一个100%的纯java桌面应用,用于压力测试和性能测量。它最初被设计用于Web应用测试但后来扩展到其他测试领域。

6.2 测试结果
在本次测试中,用Jmeter作了相应的压力测试,其他的测试都是通过手工写程序完成各层的功能测试,在通过对Jmeter的在用户数、循环次数的配置,对本系统框架作的几次压力测试。压力测试部分结果如下:
用Jmeter模拟了1000个用户并发一次请求,循环5次后的结果图如下:
在这里插入图片描述

图21 JMeter测试结果图

用Jmeter模拟了5000个用户并发一次请求,循环5次后的结果图如下:
在这里插入图片描述

图22 JMeter测试结果图
6.3 结果分析
在对本系统进行的各层的功能测试中,在分层测试的时候,各层程序功能运行正常,对各层功能的衔接测试也达到了很好运行效果,从功能上、性能上都能够满足系统需求分析中的要求。
在对本系统进行的压力测试中,从JMeter测试结果图显示的样本数目、平均、偏离、吞吐量、中值的数值可以看出本系统是满足可伸缩性、可靠性要求的。

结 论
通过本次课题的研究,在结合J2EE领域比较优秀成熟的框架的基础上,对系统进行了分层架构,完成了对基于Struts表现层扩展与开发,加入适合本框架的一些特性。在表现层与业务层之间的衔接上,设计并实现了通过一个公共的代理类来交互,在基于Hibernate的持久层的设计与开发中,实现了对一些常用功能操作的封装。从总体上来说,实现了一个具有实用价值的框架,利用该框架来进行开发的SMART系统具有可扩展性、可维护性等优秀软件所要达到的特点。

通过对本次课题的研究,使我在对软件开发有了一个新的认识,感觉到软件的设计与建模其实是一种艺术。在对这种艺术的研究过程中,我对Java编程有了更深入的理解,对J2EE领域的各技术的实现有了自己的看法与理解。

参考文献
[1] E.Gamma[美] ,R.Helm[美], R.Johnson[美], J.Vlissides[美]. 设计模式-可复用面向对象软件的基础[M].李英军,马晓星等译.北京:机械工业出版社,2000。
[2] Crawford[美],Kaplan[美]. J2EE设计模式[M].北京:中国电力出版社,2005。
[3] Arnold[美],Gosing[美]. JAVA编程语言[M].赵亮,王玉峰 等译.北京:中国电力出版社,2003。
[4] Cbuck Cavaness[美]. Jakarta Struts编程中文版 [M].孙江红译.北京:中国电力出版社,2003。
[5] 夏昕,曹晓刚,唐勇. 深入浅出Hibernate [M].北京:电子工业出版社,2005。
[6] 约翰逊[美]. Spring框架高级编程 [M]. 蒋培译.北京:机械工业出版社,2002。
[7] Joshua Bloch[美]. Effective Java中文版[M].潘爱民译.北京:机械工业出版社,2005。
[8] 彭晨阳.Ioc模式(又称DI:Dependency Injection)[OL].J道网.
http://www.jdon.com/AOPdesign/Ioc.htm. 2004-01-31。
[9] 阎宏. Java与模式[M].北京:电子工业出版社,2002。

致 谢
省略


5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于java+JSP+sqlserver的智能在线考试信息管理系统设计与实现(源码+文档)_java_Struts_BS架构_在线考试系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_410206.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内部财务经营分析该怎么做?

对于日常在企业工作的财务人员来说,做对外财务报表分析的机会并不多,我们在网上经常看到的对上市公司财务报表的分析,是基于投资人的角度来对这家公司披露的财务及经营信息所做的分析。 实际工作当中,大家应用到更多的其实是内部…

【Linux详解】——gcc/g++/gdb/git的使用

📖 前言:本期将学习gcc/g/gdb/git的使用 目录🕒 1. 程序的翻译过程🕒 2. 理解选项的含义🕒 3. 动态链接和静态链接🕒 4. Linux项目自动化构建工具-make/Makefile🕘 4.1 背景🕘 4.2 使…

发布四大战略举措,亚马逊云科技看准了中国云市场的哪些新机会?

导读:全球最大的云厂商,在中国的最新布局。 2022年10月13日,亚马逊云科技在线上举办2022中国峰会。亚马逊云科技不仅发布了云计算技术趋势展望,还宣布了深耕中国市场的四大战略举措:“连中外、襄百业、携伙伴、促绿色”…

【Java8新特性】函数式接口

目录1. 介绍1.1 FunctionInterface注解1.2 函数式接口的调用2. 函数式编程2.1 Lambda的延迟加载技术2.2 Lambda表达式的使用3. 常用的函数式接口3.1 Supplier生产型接口3.2 Consumer消费型接口默认方法:andThen3.3 Predicate条件判断接口3.4 Function普通函数接口默…

ASP.NET Core教程-跨域配置(CORS Configuration)

更新记录 转载请注明出处: 2022年11月1日 发布。 2022年11月1日 从笔记迁移到博客。说明 Cross-Origin Resource Sharing,跨域资源共享 配置方式 在ASP.NET Core中有2种方式配置跨越,中间件方式(middleware approach) 和 特性修饰方式(attributes approach)。 中间件方式…

在Jupyter Notebook中使用Matplotlib(Anaconda3)

Matplotlib(官网 Matplotlib — Visualization with Python )是一个用于创建二维图形的Python库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。将Jupyter Notebook于Matplotlib结合使用效果更好。 在Anaconda3的Jupyter …

HCL AppScan Standard漏洞扫描处理记录

官网,标准版应该是免费的,下载了标准版,没提示激活啥的,最近处理客户的漏洞扫描问题,主要就是修改nginx配置,各种查资料,不停的扫描验证,简单记录下吧。 APP简单使用 app快速下载地…

flutter 系列之:flutter 中的幽灵offstage

文章目录简介Offstage详解Offstage的使用总结简介 我们在使用flutter的过程中,有时候需要控制某些组件是否展示,一种方法是将这个组件从render tree中删除,这样这个组件就相当于没有出现一样,但是有时候,我们只是不想…

技术革新,取代传统会议模式?原来这么简单

随着AI人工智能的盛行,各领域面临前所未有的技术革新。人脸识别作为人工智能的一项重要技术,为工作及生活带来极大便捷,增效赋能。 人脸签到技术5大优势 01.人脸识别稳定,即使在光源不佳、角度受限的环境下也能精准识别&#xff1…

Libuv 各个回调(异步)事件的调用时机

Libuv 各个回调(异步)事件的调用时机 uv_close、uv_timer_start uv_close中注册的回调事件(close_cb)查阅官网API文档,Handle句柄是调用uv_close便会立即关闭,而注册的回调事件将推迟到下一次Loop循环中执…

设计模式——创建型模式

五大-创建型模式一、单例模式1、简介2、单例模式八种方式2.1、饿汉式(静态常量)2.2、饿汉式(静态代码块)2.3、懒汉式(线程不安全)2.4、懒汉式(线程安全,加同步方法)2.5、…

C2 实验 学习笔记

C2 实验 免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关. C2隐藏技术 CDN 准备 一台 vultr centos7 机器一个域名cloudflare 账号 挂上 cdn 在域名购买后配置,cf 中的域名解析,在 cf 中配置…

「MySQL高级篇」MySQL之MVCC实现原理事务隔离级别的实现

①MVCC定义,用处,快照读,当前读 ②MVCC实现原理:隐藏字段,readview,undo log ③readview访问规则 ④事务隔离级别的具体实现大家好,我是melo,一名大三后台练习生,死去的MVCC突然开始拷打我🤣🤣🤣!🍳引言 MVCC,非常顺口的一个词,翻译起来却不是特别顺口:多…

Fiddler 抓包工具

1 基本使用 官网下载地址:Download Fiddler Web Debugging Tool for Free by Telerik X.1 电脑端监听 我们双击打开软件,进入到如下的一个界面,然后点击某一个请求,你会发现请求的内容是一堆明显不对的文字,然后该请求…

MySQL性能优化和慢查询日志

目标 了解性能优化的方案能够使用慢日志定位慢SQL 讲解 1. 优化方案 1.1 为什么要优化数据库性能 ​ MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。可以看到Google,Facebook,Twitter&…

【百度地图】百度地图的使用方法 和 在vue中如何使用百度地图(超详细)

【百度地图】百度地图的使用方法 和 在vue中如何使用百度地图(超详细) 1- 介绍 百度地图功能强大,本篇文章只是对百度地图JavaScript API 进行一个介绍~ 官方网址 百度地图开放平台LBS:LocationBusinessServer 基于定义位置的商…

Spark 离线开发框架设计与实现

一、背景 随着 Spark 以及其社区的不断发展,Spark 本身技术也在不断成熟,Spark 在技术架构和性能上的优势越来越明显,目前大多数公司在大数据处理中都倾向使用 Spark。Spark 支持多种语言的开发,如 Scala、Java、Sql、Python 等。…

Matlab神经网络函数newff()新旧用法差异

在Matlab R2010a版中,如果要创建一个具有两个隐含层、且神经元数分别为5、3的前向BP网络,使用旧的语法可以这样写:net1 = newff(minmax(P), [5 3 1]); 注意minmax()函数的使用,还有对输出层神经元数(1)的指定。当然也可以采用新的语法,更简洁(请留意差异):net2 = new…

形态分类行为中的气泡佯谬

“假设光归根结底是波,只是给我们以粒子的印象,因为粒子吸收光波的能量是以离散的包的方式。波从源头传播出去像一个越来越大正在膨胀的气泡,到达一个原子时,气泡破裂,波坍缩并把所有的能量集中在一个地方,…

【数字式时间继电器】TR-23 DC110V

系列型号 TR-20数字式时间继电器;TR-21数字式时间继电器; TR-22数字式时间继电器;TR-23数字式时间继电器; TR-24数字式时间继电器;TR-25数字式时间继电器; TR-20D数字式时间继电器;TR-21D数字式…