`
sqiutz
  • 浏览: 72014 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

WAS的类加载机制三

阅读更多

12.3.1 类加载策略

对于系统中的每个应用程序服务器,类加载策略可以设置成 Single 或者Multiple。当应用程序类加载策略设置成 Single,单一的应用程序类加载器可以加载应用程序服务器(JVM)中的所有 EJB、工具JARs 和共享库。如果WAR类加载策略设置成Single类加载(或者Application),这个应用程序中的Web模块也会被这个single类加载器加载。

当应用程序服务器类加载策略被设置成 Multiple,缺省值,每个应用程序会使用自己的类加载器加载EJB、工具JAR 和共享库。依赖于WAR类加载器加载策略是设置成应用程序中每个WAR文件使用自己的类加载器(或者称为Module),还是设置成Single 类加载(或者称为 Application),Web模块能够或者不能使用自己的类加载器。

下面用一个例子说明。我们有两个应用程序,程序1和程序2,它们运行在同一个应用程序服务器上。每个应用程序有一个EJB模块,一个工具JAR和两个Web模块。如果应用程序服务器自己的类加载策略设置成缺省值 Multiple ,所有Web模块的类加载策略也设置成缺省值,即应用程序中的WAR文件都有自己的类加载器,如下图12-3:

图12-3 类加载器策略:例一

每一个应用程序被完全的分开,每个应用程序当中的Web模块也被完全的分开。WebSphere缺省的类加载策略就是应用程序和模块都是完全隔离的。

如果我们现在把WAR2-2 模块的类加载策略修改成 Single,就会变成下图12-4:

图12-4 类加载策略:例二

Web 模块 WAR2-2 由程序2的类加载器加载,Util2.jar 中的类能够看到WAR2-2 的 /WEB-INF/classes 和/WEB-INF/lib 目录下的类。

在上一个例子中,如果我们把应用服务器的类加载策略从Multiple改成Single,把WAR2-1模块的类加载策略从Module改成Single,结果就变成了下面的内容12-5:

    图12-5 类加载策略:例三

现在只剩下一个应用程序类加载器加载程序1和程序2的。Util1.jar 中的类能够看到EJB2.jar、Util2.jar、WAR2-1.war 和WAR2-2.war 的类。然而,应用程序类加载器仍然看不到WAR1-1 和WAR1-2 的类,因为类加载器只能向上查看类而不能向下查看类。

12.3.2 类加载/委托模式

WebSphere 的应用程序类加载器和WAR类加载器都有一个称为类加载顺序的设置。这个设置决定了是否遵循正常的Java的类加载委托机制(见Java类加载器介绍)还是覆盖它。

类加载模式有两个可能的选项:

l         父类优先

l         应用程序优先

在WebSphere 的早期版本中,这个设置称为 PARENT_FIRST 和 PARENT_LAST。缺省类加载模式是父类优先(PARENT_FIRST)。这个设置要求类加载器在加载自己类路径中的类之前先加载父类。这是标准Java类加载器的缺省策略。

如果类加载策略设置成应用程序优先(PARENT_LAST),类加载器就会在加载父类之前,先把自己的类路径中的类加载进来。这个策略允许应用程序类加载器覆盖和提供已经在父加载器中存在的自己版本的类。

注意: 在这一点上,管理控制台有点模糊。在Web模块的配置界面,类加载顺序有两个选项:父类加载器优先和应用程序类加载器优先。然而,根据上下文,这里的“应用程序类加载器”其实指的是WAR类加载器,所以应用程序类加载器优先其实指的是WAR类加载器优先。

假如你有一个应用程序,类似于之前例子中的程序1,EJB模块和两个Web模块都使用log4j 生成日志。假定每一个模块把自己唯一的log4j.properties 文件打包进模块文件中。在EAR文件中,你只需要把log4j配置成工具JAR就可以了。然而,如果这样做,你可能会奇怪所有的模块都会看到这个jar文件,包括Web模块,尽管log4j.properties 文件是EJB模块加载的。

原因是, 当Web模块初始化log4j包时,应用程序类加载器加载了log4j的类。Log4j 被配置成工具JAR。Log4j 会在自己类路径下查找log4j.properties 这个文件,在EJB模块中发现了它。

如果EJB模块不使用log4j记录日志,EJB模块中也不包含log4j.properties  文件, log4j 不会在任何的Web模块中找到log4j.properties 这个文件。原因是类加载器只能够向上查找类,而不能向下。

要解决这个问题,可以这么做:

1.     单独创建一个文件,比如,Resource.jar,把它配置成工具JAR,把所有的log4j.properties 都移到这个文件里面,但是要保证文件名唯一(比如 war1-1_log4j.properties、war1-2_log4j.properties 和 ejb1_log4j.properties)。当从每个模块中初始化 log4j 的时候,告诉它为模块装入正确的配置文件,而不是都使用缺省(log4j.properties)。在原始位置(/WEB-INF/classes)存放Web模块的log4j.properties,把log4j.jar 添加到所有的Web 模块(/WEB-INF/lib)下,设置Web模块的类加载模式为应用程序类加载优先(PARENT_LAST)。当从Web模块中初始化log4j,模块自己装入log4j.jar,log4j  在自己的本地类路径下找到log4j.properties 。当EJB模块初始化log4j的时候,从应用程序类加载中加载,在相同的类路径下找到EJB1.jar中的log4j.properties.

2.     如果可能,把所有的log4j.properties 文件合并成一个,放在应用程序类加载器中,比如放在Resource.jar  文件中。

 12.3.3 共享库

共享库是多个应用可以公用的文件。典型的例子是框架的使用,比如Apache Struts 或者log4j。可以让共享库指向一个JAR集合,把这个JAR文件跟应用程序、Web模块或者应用程序服务器类加载关联起来。当你有多个不同版本的相同框架,你希望跟不同的应用程序关联,这个时候就能够使用共享库。共享库通过控制台进行定义。定义项包括一个象征性的名字,Java类路径和装入JNI库的native 路径。可以在单元、节点、服务器或者集群中定义共享库。但是,简单的定义一个库不会装入这个库的。必须把这个库跟一个应用程序、Web模块或者应用程序服务器的类加载器关联起来,这个共享库才能够被加载。如果共享库跟应用程序服务器类加载器关联起来,服务器上的所有应用程序都能够使用这个库。

注意: 如果已经把一个共享库跟应用程序关联起来,就不要把同一个共享库跟这个应用程序服务器关联起来。

可以通过如下两种方法关联共享库:

1.     可以使用管理控制台。在企业应用程序界面,引用选项可以关联到共享苦,创建共享库。

2.     可以使用应用程序的 manifest 文件和共享库。库的依赖会在应用程序 manifest 文件中指明,在扩展列表中罗列出库的扩展名。

使用管理控制台,将共享库跟应用程序服务器的类加载器关联起来。这个设置能够在服务器基础架构中找到。展开Java和进程管理,选择 Class loader ,单击 New 按钮,定义一个新的类加载。一旦定义了一个新的类加载器,你可以修改它,同时使用共享库引用连接,可以把这个共享库跟新建的类加载器关联起来。

请查看“步骤4:: 使用共享库共享工具JAR”

12.4 类加载查看器

V6.0.2新特性: WebSphere Application Server V6.0.2 引入了一个新的工具,类加载查看器。一旦激活,这个工具能够帮助你诊断类加载问题,显示不同类加载器,设置以及每个的类加载情况。

如果类加载查看器服务不可用,类加载查看器只能显示类加载器的层次结构以及他们的路径,而不是每个类加载器的具体类加载情况。也就是类加载查看器的查询功能缺省是不可用。

要启动类加载查看器服务,执行如下:Servers → Application Servers → <server name> ,选择Additional Properties  链接下的Class Loader Viewer Service,接着选择 Enable service at server startup 。完成这个设置,需要重新启动应用服务器才能够生效。

在下一节,我们会给出一个例子,说明不同类加载器如何工作以及使用类加载查看器记录不同的结果。

12.5 通过案例学习类加载

我们已经介绍了多个影响类加载的选项。这个部分,会举一个例子来说明这些。

创建一个简单的应用程序,有一个servlet,一个EJB。它们都调用一个类,VersionChecker ,见例12-4。这个类可以打印出哪一个类加载器加载这个类。VersionChecker 类还有一个内部值, 显示正在使用的是哪个版本的类。这个会在后面用到,用来描述同一个工具JAR的不同版本的使用情况。

例12-4 VersionChecker 类源代码

package com.itso.classloaders;

public class VersionChecker {

static final public String classVersion = "v1.0";

public String getInfo() {

return ("VersionChecker is " + classVersion +

". Loaded by " + this.getClass().getClassLoader());

}

}

一旦装入,可以通过如下链接访问应用程序:http://localhost:9080/ClassloaderExampleWeb/ExampleServlet。它启动了调用了VersionChecker 的ExampleServlet,会显示出例12-5中的信息:

例12-5  调用 ExampleServlet

VersionChecker is v1.0.

Loaded bycom.ibm.ws.classloader.CompoundClassLoader@71827182

Local ClassPath:

C:\WebSphere\AppServer\profiles\AppSrv02\installedApps\kcgg1d8Node02Cel

l\ClassloaderExample.ear\ClassloaderExampleWeb.war\WEB-INF\classes;C:\W

ebSphere\AppServer\profiles\AppSrv02\installedApps\kcgg1d8Node02Cell\Cl

assloaderExample.ear\ClassloaderExampleWeb.war\WEB-INF\lib\VersionCheck

erV1.jar;C:\WebSphere\AppServer\profiles\AppSrv02\installedApps\kcgg1d8

Node02Cell\ClassloaderExample.ear\ClassloaderExampleWeb.war

Delegation Mode: PARENT_FIRST

VersionCheckerV1.jar 文件包含了 VersionChecker 类文件,它返回版本数是1.0。如下测试,如果没有特别指出,类加载策略和加载模式都使用缺省值。换句话说,应用程序有一个类加载器,WAR文件有一个。两个的委托模式都设置成了父加载器优先(PARENT_FIRST )。我们假定应用程序已经加载到了一个名为AppSrv02的应用服务器上了。

12.5.1 步骤 1:简单的Web模块打包

假定这种情况:我们的工具类只被一个servlet调用。把VersionCheckerV1.jar 文件放在WEB-INF/lib 目录下面。 对于这样的配置,运行应用程序时,出现例12-6中的内容。

例12-6 类加载 例1

VersionChecker called from Servlet

VersionChecker is v1.0.

Loaded bycom.ibm.ws.classloader.CompoundClassLoader@71827182

Local ClassPath:

C:\WebSphere\AppServer\profiles\AppSrv02\installedApps\kcgg1d8Node02Cel

l\ClassloaderExample.ear\ClassloaderExampleWeb.war\WEB-INF\classes;C:\W

ebSphere\AppServer\profiles\AppSrv02\installedApps\kcgg1d8Node02Cell\Cl

assloaderExample.ear\ClassloaderExampleWeb.war\WEB-INF\lib\VersionCheck

erV1.jar;C:\WebSphere\AppServer\profiles\AppSrv02\installedApps\kcgg1d8

Node02Cell\ClassloaderExample.ear\ClassloaderExampleWeb.war

Delegation Mode: PARENT_FIRST

从上述跟踪信息中,可以得到:

1.类加载器的类型是:

com.ibm.ws.classloader.CompoundClassLoader.

2.查找类的顺序是:

ClassloaderExampleWeb.war\WEB-INF\classes

ClassloaderExampleWeb.war\WEB-INF\lib\VersionCheckerV1.jar

ClassloaderExampleWeb.war

WEB-INF/classes 目录包含了没有打包的资源(比如servlet 类、Java类和配置文件),但是WEB-INF/lib 目录下就包含了打包好的JAR文件。你可以选择将Java代码打包到JAR文件中,将他们放到库目录下面或者可以未打包直接放在类路径下面。他们会在同一个类路径下面。由于我们的示例应用程序都是使用Application Server Toolkit开发和导出的,servlet直接就在类目录下面,在导出应用程序的时候,toolkit不会把Java类打包成一个JAR文件。WAR文件的根是下一个能够存放代码或者配置文件的地方,但是不建议这么用,因为这个目录对于Web服务器是文档根的目录,所以这个目录下的任何内容都能够通过浏览器直接访问。根据J2EE的规范,WEB-INF是受保护的,这就是为什么classes和lib目录都在WEB-INF目录下。

在应用程序启动的时候,类加载器的类路径是动态构建的,我们可以使用类加载查看器显示类加载。在管理员控制台上,选择Troubleshooting → Class Loader Viewer,展开server1 → Applications → ClassloaderExample → Web modules,单击 ClassloaderExampleWeb.war,就会看到如下图12-6:

图 12-6 类加载器显示应用程序树

展开Web模块时,类加载查看器显示了从JDK扩展类加载器到JDK应用程序类加载器再到WAR类加载器的层次结构,称为混合类加载器,参见12-7:

图12-7 类加载查看器显示类加载层次

如果你展开WAS模块的类路径----混合类加载器,可以看到跟VersionChecker打印出来同样的内容。见12-7。

例12-7 类加载查看器显示的WAR类加载器的类路径

file:/C:/WebSphere/AppServer/profiles/AppSrv02/installedApps/kcgg1d8Nod

e02Cell/ClassloaderExample.ear/ClassloaderExampleWeb.war/WEB-INF/classe

s

file:/C:/WebSphere/AppServer/profiles/AppSrv02/installedApps/kcgg1d8Nod

e02Cell/ClassloaderExample.ear/ClassloaderExampleWeb.war/WEB-INF/lib/Ve

rsionCheckerV1.jar

file:/C:/WebSphere/AppServer/profiles/AppSrv02/installedApps/kcgg1d8Nod

e02Cell/ClassloaderExample.ear/ClassloaderExampleWeb.war

类加载查看器会提供一个表,显示所有类加载器和每个加载器加载的类。同时这个表也显示出了委托模式:True 表示类的加载方式是父加载优先(PARENT_FIRST);false 表示类的加载方式是应用程序类加载优先 (PARENT_LAST),或者在只有一个Web模块的情况下是WAR类加载,见图12-8:

图12-8 类加载查看器结果表

正如所看到的,WAR类加载器已经装入示例中的servlet 和VersionChecker 类。类加载查看器还提供了查询功能:可以查找类、JAR文件、目录等等。如果你不知道类加载器加载了哪个类,这个功能就很有用。查询功能是大小写敏感但是允许使用通配符,比如使用*VersionChecker* 查询 VersionChecker  类。

分享到:
评论

相关推荐

    ibus-table-chinese-erbi-1.4.6-3.el7.x64-86.rpm.tar.gz

    1、文件内容:ibus-table-chinese-erbi-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-erbi-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    基于微信小程序的新乡学院自习室预约系统.zip

    选择Java后台技术和MySQL数据库,在前台界面为提升用户体验,使用Jquery、Ajax、CSS等技术进行布局。 系统包括两类用户:学生、管理员。 学生用户只要实现了前台信息的查看,打开首页,查看网站介绍、自习室信息、在线留言、轮播图信息公告等,通过点击首页的菜单跳转到对应的功能页面菜单,包括网站首页、自习室信息、注册登录、个人中心、后台登录。 学生用户通过账户账号登录,登录后具有所有的操作权限,如果没有登录,不能在线预约。学生用户退出系统将注销个人的登录信息。 管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括轮播公告管理、老师学生信息管理和信息审核管理,管理员管理后点击退出,注销登录信息。 管理员用户具有在线交流的管理,自习室信息管理、自习室预约管理。 在线交流是对前台用户留言内容进行管理,删除留言信息,查看留言信息。

    面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计

    面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 面向基层就业个性化大学生服务平台中的管理员角色主要负责了如下功能操作。 (1)职业分类管理功能需求:对职业进行划分分类管理等。 (2)用户管理功能需求:对用户信息进行维护管理等。 (3)职业信息管理功能需求:对职业信息进行发布等。 (4)问卷信息管理功能需求:可以发布学生的问卷调查操作。 (5)个性化测试管理功能需求:可以发布个性化测试试题。 (6)试题管理功能需求:对测试试题进行增删改查操作。 (7)社区交流管理功能需求:对用户的交流论坛信息进行维护管理。 面向基层就业个性化大学生服务平台中的用户角色主要负责了如下功能操作。 (1)注册登录功能需求:没有账号的用户,可以输入账号,密码,昵称,邮箱等信息进行注册操作,注册后可以输入账号和密码进行登录。 (2)职业信息功能需求:用户可以对职业信息进行查看。 (3)问卷信息功能需求:可以在线进行问卷调查答卷操作。 (4)社区交流功能需求:可以在线进行社区交流。 (5)个性化测试功能需求:可以在线进行个性化测试。 (6)公告资讯功能需求:可以查看浏览系统发布的公告资讯信息。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

    三菱Fx3u程序:自动检测包装机电机控制模板,PLC脉冲与伺服定位,手自动切换功能,三菱Fx3u程序:自动检测包装机电机控制模板-涵盖伺服定位与手自动切换功能,三菱Fx3u程序,自动检测包装机 该

    三菱Fx3u程序:自动检测包装机电机控制模板,PLC脉冲与伺服定位,手自动切换功能,三菱Fx3u程序:自动检测包装机电机控制模板——涵盖伺服定位与手自动切换功能,三菱Fx3u程序,自动检测包装机。 该程序六个电机,plc本体脉冲控制3个轴,3个1pg控制。 程序内包括伺服定位,手自动切,功能快的使用,可作为模板程序,很适合新手。 ,三菱Fx3u程序; 自动检测包装机; 六个电机; PLC脉冲控制; 伺服定位; 手自动切换; 功能快捷键; 模板程序。,三菱Fx3u PLC控制下的自动包装机程序:六电机伺服定位与手自动切换模板程序

    基于多尺度集成极限学习机回归 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    计及信息间隙决策与多能转换的综合能源系统优化调度模型:实现碳经济最大化与源荷不确定性考量,基于信息间隙决策与多能转换的综合能源系统优化调度模型:源荷不确定性下的高效碳经济调度策略,计及信息间隙决策及多

    计及信息间隙决策与多能转换的综合能源系统优化调度模型:实现碳经济最大化与源荷不确定性考量,基于信息间隙决策与多能转换的综合能源系统优化调度模型:源荷不确定性下的高效碳经济调度策略,计及信息间隙决策及多能转的综合能源系统优化调度 本代码构建了含风电、光伏、光热发电系统、燃气轮机、燃气锅炉、电锅炉、储气、储电、储碳、碳捕集装置的综合能源系统优化调度模型,并考虑P2G装置与碳捕集装置联合运行,从而实现碳经济的最大化,最重要的是本文引入了信息间隙决策理论考虑了源荷的不确定性(本代码的重点)与店铺的47代码形成鲜明的对比,注意擦亮眼睛,认准原创,该代码非常适合修改创新,,提供相关的模型资料 ,计及信息间隙决策; 综合能源系统; 优化调度; 多能转换; 碳经济最大化; 风电; 光伏; 燃气轮机; 储气; 储电; 储碳; 碳捕集装置; P2G装置联合运行; 模型资料,综合能源系统优化调度模型:基于信息间隙决策和多能转换的原创方案

    IPG QCW激光模块电源驱动电路设计与实现:包含安全回路、紧急放电回路及光纤互锁功能的多版本原理图解析,IPG QCW激光模块电源驱动电路设计与实现:含安全回路、紧急放电及光纤互锁等多重保护功能的原

    IPG QCW激光模块电源驱动电路设计与实现:包含安全回路、紧急放电回路及光纤互锁功能的多版本原理图解析,IPG QCW激光模块电源驱动电路设计与实现:含安全回路、紧急放电及光纤互锁等多重保护功能的原理图解析,IPG QCW激光模块电源驱动电路, 包含安全回路,紧急放电回路,光纤互锁回路等, 元件参数请根据实际设计适当调整,此电路仅供参考,不提供pcb文件 原理图提供PDF和KICAD两个版本。 ,IPG激光模块; QCW激光电源驱动; 安全回路; 紧急放电回路; 光纤互锁回路; 原理图PDF和KICAD版本。,IPG激光模块电源驱动电路图解:含安全与紧急放电回路

    基于LSSVM的短期电力负荷预测模型及其性能评估:结果揭露精确度与误差分析,LSSVM在短期电力负荷预测中的结果分析:基于均方根误差、平均绝对误差及平均相对百分误差的评估 ,LSSVM最小二乘支持向量

    基于LSSVM的短期电力负荷预测模型及其性能评估:结果揭露精确度与误差分析,LSSVM在短期电力负荷预测中的结果分析:基于均方根误差、平均绝对误差及平均相对百分误差的评估。,LSSVM最小二乘支持向量机做短期电力负荷预测。 结果分析 均方根误差(RMSE):0.79172 平均绝对误差(MAE):0.4871 平均相对百分误差(MAPE):13.079% ,LSSVM(最小二乘支持向量机);短期电力负荷预测;均方根误差(RMSE);平均绝对误差(MAE);平均相对百分误差(MAPE),LSSVM在电力负荷短期预测中的应用及性能分析

    libmtp-examples-1.1.14-1.el7.x64-86.rpm.tar.gz

    1、文件内容:libmtp-examples-1.1.14-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libmtp-examples-1.1.14-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    《基于 Transformer 的光学字符识别模型》(毕业设计,源码,教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持

    2023-04-06-项目笔记 - 第四百一十六阶段 - 4.4.2.414全局变量的作用域-414 -2025.02.21

    2023-04-06-项目笔记-第四百一十六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.414局变量的作用域_414- 2025-02-21

    MINIST数据集和春风机器学习框架

    MINIST数据集和春风机器学习框架

    ibus-table-chinese-wu-1.4.6-3.el7.x64-86.rpm.tar.gz

    1、文件内容:ibus-table-chinese-wu-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-wu-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊

    宿舍管理系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计

    宿舍管理系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 系统拥有管理员和学生两个角色,主要具备系统首页、个人中心、学生管理、宿舍信息管理、宿舍分配管理、水电费管理、进入宿舍管理、出入宿舍管理、维修信息管理、卫生信息管理、考勤信息管理、留言板、交流论坛、系统管理等功能模块。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。

    基于智能算法的无人机路径规划研究 附Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    人凤飞飞凤飞飞是粉色丰富

    人凤飞飞凤飞飞是粉色丰富

    2024蓝桥杯嵌入式学习资料

    2024蓝桥杯嵌入式学习资料

    image_download_1740129191509.jpg

    image_download_1740129191509.jpg

    基于Multisim仿真的带优先病房呼叫系统设计(仿真图)

    基于Multisim仿真的带优先病房呼叫系统设计(仿真图) 设计一个病房呼叫系统。 功能 (1)当有病人紧急呼叫时,产生声,光提示,并显示病人的编号; (2)根据病人的病情设计优先级别,当有多人呼叫时,病情严重者优先; (3)医护人员处理完当前最高级别的呼叫后,系统按优先级别显示其他呼叫病人的病号。

    基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能切换与全方位保护方案,基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能控制与全方位保护方案,逆变器光伏逆变器,3

    基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能切换与全方位保护方案,基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能控制与全方位保护方案,逆变器光伏逆变器,3.6kw储能逆变器全套资料 STM32储能逆变器 BOOST 全桥 基于STM32F103设计,具有并网充电、放电;并网离网自动切;485通讯,在线升级;风扇智能控制,提供过流、过压、短路、过温等全方位保护。 基于arm的方案区别于dsp。 有PCB、原理图及代码ad文件。 ,逆变器; 储能逆变器; STM32F103; 3.6kw; 485通讯; 全方位保护; 智能控制; 方案区别; PCB文件; 原理图文件; ad文件。,基于STM32F103的3.6kw储能逆变器:全方位保护与智能控制

Global site tag (gtag.js) - Google Analytics