`

openfire学习总结之概述

阅读更多

一、      概述

1.      Openfire最主要的功能是实现XMPP服务器,简单来说,openfire为我们提供一个固定的地址,我们只需要向openfire服务器发送标准的XMPP信息(即XML文件流),那么openfire服务器应当给予我们回应,这里的openfire服务器也可以看做一个容器,我们在聊天时,需要在这个服务器上注册一个会话,在会话存在的时间,我们可以实现即时聊天的一些常用功能,比如建立自己的组,添加好友,聊天,以及传送文件等等,同时,openfire服务器也需要实现自己的管理界面,这样openfire服务器也扮演一个web容器的角色

2.      Openfire是开源的实时协作服务器(RTC,它是基于公开协议XMPP(也成为Jabber)消息的。

3.      使用它轻易的构建高效率的即时通信服务器。

4.      Openfire的核心功能可以概括为:连接管理、消息解析、消息路由、消息发送。

5.          Openfire具有跨平台的能力,Openfire与客户端采用的是C/S架构,一个服务器要负责为连接在其上的客户端提供服务。

6.          Openfire客户端有spark, pidgin, Miranda IM, iChat等,用户如果自己开发客户端,可以采用遵循GPL的开源ClientAPI--Smack

7.          Openfire服务器端支持插件开发,如果开发者需要添加新的服务,可以开发出自己的插件后,安装至服务器,就可以提供服务,如查找联系人服务就是以插件的形式提供的。

二、      体系架构



 

三、      功能模块



 

1.      PubsubPublish/Subscribe,这使得xmpp实体能够在pubsub服务上创建nodestopics),并且发布信息。一个事件通知将广播到所有订阅了这个节点的实体上。

2.      Pep:(Personal Eventing Protocol)使用XMPP publish-subscribe协议广播状态改变事件、及时消息和出席帐户到其他用户。

3.      Stun:为p2p会话提供地址发现服务,如:媒体传输和UDP包的收发。

4.      Router:内部的路由,把相应的包路由给相应的处理器。

5.      Muc:(Multi-User Chat)用户可以交换文本信息在room或者channel上下文中,版主或者管理员有权踢除用户和禁止用户。

6.      所有Module都需要实现Module接口,该接口中定义了模块生命周期中需要调用的方法



 

 

 

四、      数据模型

1.      数据库表设计:详见:

http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/database-guide.html#ofGroup#ofGroup

2.      Openfire的数据库处理采用直接调用JDBC 的方式核心类为org.jivesoftware.database.DbConnectionManager。数据库的处理与业务处理耦合,没有划分出专门的业务逻辑层。

3.      ConnectionProvider此类为数据库提供者接口,如需连接mysqlhsqldb等数据库,需首先实现些接口,通常直接调用XXManager中的实例方法,XXManager中又调用的是对应的接口XXProvider的方法,实际操作在该接口的实现类中实现。实现类是动态绑定的(默认的实现类通常命名规则为DefaultXXProvider),在运行时根据ofproperty表中对应配置项值选

4.      org.jivesoftware.database.DbConnectionManager,连接管理类

5.      org.jivesoftware.util.JiveGlobals,通常用于操作ofproperty表中记录

五、      通信机制

1.         XMPP协议

1)      XMPPExtensible Messageing and Presence Protocol:可扩展消息处理现场协议)是目前主流的四种IMIMinstant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)

2)      XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。

3)      核心的XML流传输协议 ,基于XML FreeEIM流传输的即时通讯扩展应用,XMPP的扩展协议Jingle使得其支持语音和视频

4)      XMPP协议在PCAndroid分别有对应的协议实现smackasmack,不用我们写XML协议解析

5)      XMPP的基本网络结构:ClientServerGateway,通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSNICQ等。

6)      客户端利用xmpp(基于TCP/IP)访问server,传输的是XML工作原理是:

a)    节点连接到服务器;

b)    服务器利用本地目录系统中的证书对其认证;

c)    节点指定目标地址,让服务器告知目标状态;

d)    服务器查找、连接并进行相互认证;

e)    节点之间进行交互

7)      XMPP协议的传输是通过XML文件来传输的,并且不是类似于QQ的点对点通讯,而是客户端到服务器再到客户端的方式来实现,以上过程的一个简单的XMPP通讯流程可以如下:

a)    首先,由客户端连接到服务器,客户端通过IO流发送一段XML文件,在文件中包含了自身的用户名和密码

b)    服务器端接收到客户端的XML文件,从中获取用户名和密码进行验证,如果验证成功,服务器会发送一个XML文件给客户端表明已经登录成功

c)    登陆成功后,客户端可以通过发送一个获取好友名单的XML文件,服务器会将当前用户的好友以XML文件传到客户端

d)    客户端选择一个好友,向其发送信息(其实是向服务器发送,服务器收到后会转发给对应的好友),好友收到

8)      XMPP地址模式:JID=[ node”@” ] domain [ “/” resource ](如:cyber@cyberobject.com/res),domain:服务器域名,node: 用户名,resource:属于用户的位置或设备。一个用户可以同时以多种资源与同一个XMPP服务器连接

9)      XMPP xml消息格式定义:

<stram>

   <presence>  //此元素确定用户的状态

      <status/>

   </prensence>

   <message>  //用于两个用户之间发送信息

        <body/>

    </message>

    <iq> //信息/请求,是一个请求-响应机制,管理xmpp服务器上两个用户的转换,允许他们通过相应的xml格式的查询和响应

                     <bind/>

    </iq>

</stream>

10)    XMPP的安全机制:XMPP采用SASL作为身份认证协议,XMPP采用TLS的“START-TLS”扩展来为通信双方提供加密性和数据完整性服务

11)    XMPP体系架构:XMPP server:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。功能:1.会话管理器:负责客户端会话认证,在线状态,用户联系表等;2.数据存储器(XDB:连接数据库系统,保持用户信息、通信日志等;3.连接器管理器:管理与客户端之间的连接;4.服务器连接器:管理xmpp服务器之间的连接;5.传输器:建立xmpp服务器与非xmpp服务器通信

12)     

2.      Apache MINA框架

1)      XMPP协议是基于TCP/IP协议进行传输的,在openfire中,应用了apachemina框架作为NIO框架,简单的来说,openfire服务器用mina框架建立一个简单的服务器,可以接收和发送基本的IO流,然后在此基础上把接收到的IO流解析为XML文件,然后在根据XMPP协议对XML文件进行操作

2)      是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IPUDP/IP上抽象的事件驱动的异步API,对通信功能进行扩展

3)      为不同的传输类型(TCP/UDP)提供了统一的API

4)      过滤器作为一个扩展特性,类似Servlet过滤器

5)      低级(字节缓存)和高级(用户定义的消息对象和编码)的API

6)      高度定制化线程模型(单线程/线程池)

7)      超载保护和传输流量控制

8)      OpenfireConnectionHandler类继承了MINAIoHandlerAdaper,他主要负责连接的创建、销毁,以及接收到XML数据包的投递。ConnectionHandler有三个子类,其中ClientConnectionHandler负责客户端与服务器端的连接,ComponentConnectionHandler负责组件与服务器端的连接,类图如下:



 

3.      Openfiresocket网络连接

1)      服务器和服务器之间的连接(监听在端口5269

2)      外部组件和服务器之间的连接(监听在端口5275

3)      多元(complex)连接(监听在端口5269

4)      客户端和服务器的连接(监听在端口5222

5)      和客户端通过TLS/SSL3.0和服务器的连接。(监听在端口5223

6)      连接都是通过ConnectionManager接口实现管理的,程序中对ConnectionManager接口的实现类是ConnectionManagerImpl,它是作为一个模块(Module)类加载到服务器中的

六、      开发配置

1.      环境配置:

1)      http://blog.csdn.net/kingsonl/article/details/7730225

2)      http://blog.csdn.net/nomousewch/article/details/6534555

2.         Openfire源码目录结构

1)      build目录:build目录下收录的是生成安装文件(例如:rpm)所要的一些文件,例如JRE

2)      resources目录:resources目录下收录的是一些为实现国际化(i18n)和本地化的一些编码文件(例如:英文,中文,法文,德文等)

3)      documentation目录:documentation目录下收录的是一些关于Openfire安装和配置的信息,但最终要的是这里有Openfire开发的Javadoc

4)      src目录:顾名思义这个src文件夹就是我们想要的Openfire源代码了,这下面又有许多文件夹,我们只要Java文件夹就好,这里面实现的Openfire的核心功能,通过它就可以调试Openfire

3.         命名规则

Openfire中常见的类名后缀命名包括StarterPluginListenerDispatcherHandlerManagerProvider,通常情况下,这些命名类包括如下意义

1)      XXStarter系统启动类

2)      XXListener业务的最终处理类

3)      XXDispatcher调度类,其中有很多关键方法,如addListener(),以组合的方式,为类内定义的静态Set<XXListener>实例添加XXListener对象。以便调用dispatchEvent(String property, EventType eventType, Map<String, Object> params)方法遍历处理Set集中的XXListener对象(通过调用XXListener对象的各实际方法完成实际业务)

4)      XXPlugin实现Plugin接口的插件类,需实现initializePlugin(PluginManager manager, File pluginDirectory)方法和destroyPlugin()方法。在其初始化方法中调用Dispatcher实现类的addListener()方法如PropertyEventDispatcher.addListener(this)

5)      XXProvider实现面向接口编程方式的接口类,通过反射机制创建具体实现类的对象,反射类名配置在ofproperty表对应的记录propvalue属性中。若没有相关配置,则调用默认实现类,默认实现类类名命名规则为DefaultXXProvider

6)      XXHandler实际处理类,以ConnectionHandler为例,在org.jivesoftware.openfire.spi. ConnectionManagerImpl类的startClientSSLListeners(String localIPAddress)方法中,有这样一段代码:sslSocketAcceptor.bind(new InetSocketAddress(bindInterface, port), new ClientConnectionHandler(serverName));其中bind方法的第二个参数是新创建的一个ClientConnectionHandler的实例,而它就是ConnectionHandler的一个子类

4.         系统配置

Openfire的系统配置项采用文件结合数据库表的方式配置,也有部分默认配置项通过Java硬编码方式配置(如org.jivesoftware.openfire. ConnectionManager接口类中定义的DEFAULT_PORTDEFAULT_SSL_PORTDEFAULT_COMPONENT_PORT等),Openfire中比较重要的配置位置包括:

1)      src/conf目录下的openfire.xml配置文件。该配置文件为系统核心配置文件。在第一次启动Openfire并通过管理控制台完成安装配置后会往该配置文件中填入相应的配置信息

2)      plugin.xml配置文件。该配置文件为各插件包下的核心配置文件,由它确定插件核心处理类和相应页面插件的展现等。配置项及含义详见官方插件开发说明部分

3)      web.xmlweb-custom.xml配置文件。用于配置servlet和用户自定义servlet(插件页面用,放在插件对应目录下)

4)      ofproperty中的各条记录,该表中包括两个字段namepropvalue,分别代表配置项名和配置项值

5.         Openfire启动过程

系统启动时调用org.jivesoftware.openfire.starter.ServerStarter类中的start()方法,加载org.jivesoftware.openfire.XMPPServer类,并调用这个类的start()Start()方法中首先调用verifyDataSource()方法验证并确保数据库可以访问,然后会调用               loadModules();initModules();startModules();方法来对Module接口的实现类的各子类进行操作,依次完成模块的加载、初始化和启动操作。loadModules()方法中会调用loadModule(String module)方法通过反射加载各模块类,参数字符串module为对应的模块核心处理类的类名

6.         消息处理流程

Openfire服务器对XMPP的实现中,消息被封装为Packet对象,因此Openfire服务器的核心代码是对客户端Packet对象的监听和处理流程

Packet处理流程:



 

1)      首先,Openfire服务器需要启动一个基于TCP/IP的监听服务,用以接收客户端传过来的XML流文件。这个过程在XMPPServer类的start()方法中进行,这个监听服务是以loadModule(ConnectionManagerImpl.class.getName())来加载,调用ConnectionManagerImpl类的createClientListeners()方法

2)      其中的socketAcceptor是在buildSocektAcceptor()方法中定义的,它是作为一个服务端的接收器,是mina框架为我们封装好的一个socketserver,在上面这个方法中,我们为socketAcceptor添加了一个过滤器,XMPPCodeFactory,这个类将过滤xmpp相关请求,加以处理,我们再看同一个类的另外一个方法startClientListener()

3)      其中的socketAcceptor.bind()方法启动了监听服务器,来监听所有发送到服务器5222端口的数据,并用ClientConnetionHandler类来处理,ClinetConnectionHandler继承于ConnectionHandler类,后者实现了minaIoHandlerAdaptor接口,其中的messageReceived()方法是关键

4)      可以看到收到的信息交由StanzaHandlerprocess方法中进行XML解析并封装为packet对象,然后再进行下一步的处理,至此,从客户端到服务器端的packet传递结束,如下图所示:



 

 

 

7.         Spark 登录过程-安全认证

1)      Spark登录过程消息截图:



 

2)      Spark登录过程中的XMPP消息含义:



 

 

8.         WEB服务器

1)      Openfire采用内置的jettyweb服务器,在启动AdminConsolePlugin插件时调用startup()方法启动jetty服务器,9090为其明文端口,9091为其加密端口

2)      Openfire没有采用现在很流行的技术架构(SSH),只使用JSP+JavaBean,但是它有自己的系统设计,就连日志都是自己做的,没有使用我们熟悉的log4j

3)      现有的Openfire管理控制台可采用插件方式进行扩展,页面采用Jsp方式实现,页面直接调用业务处理逻辑类(通常命名为XXManager)的实例方法,通常通过request对象封装的方式传递页面展现判定变量,常出现本页跳转。每个插件可定义自己的Servlet类和web.xmlweb-custom.xml配置文件

4)      页面展现采用装饰框架方式,decorator页面有两个,即src/web/decorators目录下的两个页面main.jspsetup.jsp。采用自定义的admin标签实现,标签库admin.tld放置在src/web/WEB-INF目录下,标签解析类放置在org.jivesoftware.admin包下,有SidebarTagSubnavTagSubSidebarTagTabsTag四个解析类。在调用loadPlugin()方法进行插件加载时,解析插件的plugin.xml配置文件,将获取的相关信息封装在AdminConsole类的generatedModel对象中,后期通过插件解析类提取该对象中的数据并配合sitemesh装饰器进行页面展现。

  • 大小: 15.3 KB
  • 大小: 120.4 KB
  • 大小: 6.9 KB
  • 大小: 3.6 KB
  • 大小: 89.2 KB
  • 大小: 38.6 KB
  • 大小: 17.4 KB
  • 大小: 46.5 KB
  • 大小: 23.8 KB
  • 大小: 36.7 KB
分享到:
评论

相关推荐

    jitsi 基于 openfire 的 安卓 视频通话 源码

    通过分析"jitsi-android"源码,开发者不仅能学习到如何在Android平台上实现基于XMPP的即时通讯应用,还能深入理解Jitsi和Openfire的集成原理,以及视频通话的关键技术。这对于想要构建自己的音视频通信应用的开发者...

    Android开发各种demo集合

    ### Android开发经典Demo知识点概述 随着移动互联网技术的飞速发展,Android开发成为了软件开发领域的重要组成部分之一。本文将基于给定的文件信息,详细解析其中提到的经典Android开发Demo所涉及的关键技术和知识...

    qsmack 源文件

    这个协议被广泛用于许多即时通讯应用,如 Google Talk、ejabberd 和 Openfire 等。通过 QSmack,开发者可以方便地构建自己的 XMPP 客户端或者服务端应用程序。在你提供的压缩包 "qsmack322" 中,包含的就是 QSmack ...

    mina框架调研

    其应用范围广泛,包括Apache Directory、AsyncWeb、Apache Qpid、QuickFIX/J、Openfire、SubEthaSMTP、red5等多个知名项目。 #### 2. MINA框架特性 - **非阻塞I/O**: MINA基于非阻塞I/O技术,这使得它可以高效地...

    基于SSM+JSP+HTML的东风锻造有限公司重大停管理系统(Java毕业设计,附源码,数据库,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 ssm 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    数据库系统课程设计报告-体育项目比赛管理系统设计与开发

    一、系统需求分析 1 (一)需求概述 1 (二)业务流分析 1 从运动员角度分析 1 (三)数据流分析 4 (四)数据字典 5 二、数据库概念结构设计 6 (一)实体分析 6 (二)属性分析 6 (三)联系分析 8 (四)概念模型分析(.PDM图) 9 三、数据库逻辑结构设计 9 (一)概念模型转化为逻辑模型 9 1.一对一关系的转化 9 2.一对多关系的转化 9 3.多对多关系的转化 10 (二)逻辑模型设计(.PDM图) 10 四、 数据库物理实现(一)表设计 10 (一)表设计 10 (二)创建表和完整性约束代码设计 11 五、数据库功能调试 15 (一)运动员管理模块 15 (二)负责人管理模块 16 (三)系统管理员管理模块 17 六、设计系统前台软件 21 (一)开发软件选择 21 (二)软件功能要求与设计 22 (三)软件功能实现 22 (四)系统测试 24 七、设计总结 27

    基于SSM+JSP的文物管理系统+数据库(Java毕业设计,包括源码,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    智慧园区整体解决方案-37PPT(46页).pptx

    智慧园区,作为现代化城市发展的新兴模式,正逐步改变着传统园区的运营与管理方式。它并非简单的信息化升级,而是跨越了行业壁垒,实现了数据共享与业务协同的复杂运行系统。在智慧园区的构建中,人们常常陷入一些误区,如认为智慧园区可以速成、与本部门无关或等同于传统信息化。然而,智慧园区的建设需要长期规划与多方参与,它不仅关乎技术层面的革新,更涉及到管理理念的转变。通过打破信息孤岛,智慧园区实现了各系统间的无缝对接,为园区的科学决策提供了有力支持。 智慧园区的核心价值在于其提供的全方位服务与管理能力。从基础设施的智能化改造,如全面光纤接入、4G/5G网络覆盖、Wi-Fi网络及物联网技术的运用,到园区综合管理平台的建设,智慧园区打造了一个高效、便捷、安全的运营环境。在这个平台上,园区管理方可以实时掌握运营动态,包括道路状况、游客数量、设施状态及自然环境等信息,从而实现事件的提前预警与自动调配。同时,智慧园区还为园区企业提供了丰富的服务,如项目申报、资质认定、入园车辆管理及统计分析等,极大地提升了企业的运营效率。此外,智慧园区还注重用户体验,通过信息发布系统、服务门户系统及各类智慧应用,如掌上营销、智慧停车、智能安防等,为园区员工、企业及访客提供了便捷、舒适的生活与工作体验。值得一提的是,智慧园区还充分利用大数据、云计算等先进技术,对园区的能耗数据进行采集、分析与管理,实现了绿色、节能的运营目标。 在智慧园区的建设过程中,还涌现出了许多创新的应用场景。例如,在环境监测方面,智慧园区通过集成各类传感器与监控系统,实现了对园区水质、空气质量的实时监测与预警;在交通管理方面,智慧园区利用物联网技术,对园区观光车、救援车辆等进行实时定位与调度,提高了交通效率与安全性;在公共服务方面,智慧园区通过构建统一的公共服务平台,为园区居民提供了包括平安社区、便民社区、智能家居在内的多元化服务。这些创新应用不仅提升了园区的智能化水平,还为园区的可持续发展奠定了坚实基础。同时,智慧园区的建设也促进了产业链的聚合与发展,通过搭建聚合产业链平台,实现了园区内企业间的资源共享与合作共赢。总的来说,智慧园区的建设不仅提升了园区的综合竞争力,还为城市的智慧化发展树立了典范。它以用户需求为导向,以技术创新为驱动,不断推动着园区向更加智慧、高效、绿色的方向发展。对于写方案的读者而言,智慧园区的成功案例与创新应用无疑提供了宝贵的借鉴与启示,值得深入探索与学习。

    Java毕业设计-SpringBoot+Vue的基于SpringBoot的冬奥会科普平台(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    MATLAB设计的芯片字符识别(GUI界面设计).zip

    MATLAB设计的芯片字符识别(GUI界面设计)

    【工程项目】MATLAB口罩识别[自动定位颜色,多人检测,未戴预警 ].zip

    【工程项目】MATLAB口罩识别[自动定位颜色,多人检测,未戴预警 ]

    基于SSM+JSP的雅博书城在线系统+数据库(Java毕业设计,包括源码,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    基于SpringBoot+Vue的校园疫情防控系统 (2)(Java毕业设计,包括源码、数据库、教程).zip

    Java 项目,仅供学习参考。 Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    2007-2023年 省级-工业机器人安装密度.rar

    工业机器人安装密度通常指的是单位面积或单位人口所拥有的工业机器人数量。这一指标能够直观地反映出一个地区或国家工业机器人的普及程度和使用情况。 本数据参照康茜(2021)和芦婷婷(2021)的方法,根据IRF联盟公布的中国各行业工业机器人安装量(IFR公布的14个大类,对应国民经济行业分类与代码(GB/4754-2011)中13-43的细分行业代码),然后从《中国劳动统计年鉴》里面收集细分行业各个省份的就业人数占全国总就业人数的百分比,工业机器人安装密度=各个省份的就业人数占全国总就业人数的百分比×全国各行业机器人安装数量。 数据 年份、省份、省份代码、所属地域、工业机器人安装密度(台) 参考文献:[1]康茜,林光华.工业机器人与农民工就业:替代抑或促进[J].山西财经大学学报,2021,43(02):43-56. [2]芦婷婷,祝志勇.人工智能是否会降低劳动收入份额——基于固定效应模型和面板分位数模型的检验[J].山西财经大学学报,2021,43(11):29-41. [3]闫雪凌,朱博楷,马超.工业机器人使用与制造业就业:来自中国的证据[J].统计研究,2020,37(01):74-87. [4]王永钦,董雯.机器人的兴起如何影响中国劳动力市场?——来自制造业上市公司的证据[J].经济研究,2020,55(10):159-175.

    2006-2023年 地级市-绿色全要素生产率.rar

    绿色全要素生产率(Green Total Factor Productivity,GTFP)是一个综合考虑环境因素的生产效率指标,旨在更全面地评估经济发展的可持续性和环境友好性。通过提升绿色全要素生产率,可以促进资源的有效利用、环境保护和可持续发展。 本数据通过将劳动、资本等生产要素的投入与地区生产总值(GDP)作为合意产出相联系,同时考虑工业二氧化硫、烟粉尘和废水等非合意的环境排放,采用如SBM-Malmquist-Luenberger指数法等计量手段进行测算。这种方法不仅评估了生产效率的改善情况,还反映了技术进步和环境管理在促进绿色增长方面的作用。 参考文献:排污权交易制度与能源利用效率 -对地级及以上城市的测度与实证 数据 年份、城市、超效率SBM、超效率CCR

    航空航天领域翼型振动与颤振分析的MATLAB仿真程序实现及应用

    内容概要:本文档详细记录了一段用于进行航空器机翼加装挂载(如导弹或其他装备)后的结构动力响应分析,特别是对颤振现象研究的 MATLAB 代码片段。主要内容涵盖初始化几何参数、物性参数以及质量特性等基本信息设定,通过定义多个矩阵(弯曲模式、扭转模式)用以描述系统运动方程的形式表达;采用Theodorsen函数表征气动力特性对于系统稳定性的影响;最终利用模态分析确定临界速度并给出最小颤振速率发生位置的相关讨论与实验数据对比验证。 适合人群:航空航天专业研究人员,工程物理学者及高等院校飞行器设计方向研究生及以上水平的技术爱好者。 使用场景及目标:①理解机翼与附加载体之间的动态交互机制;②掌握利用数学工具进行复杂机械系统的稳定性判断方法;③为实际产品研发提供理论依据和技术支持。 其他说明:文档中的部分内容已被省略以保护原创版权,同时确保敏感算法细节不在未经授权的情况下传播。由于文中涉及到大量的矩阵运算以及高级工程力学概念,请在使用前确认自己拥有足够的前置知识。

    MATLAB 界面指纹识别MATLAB(GUI界面,比对两幅指纹)(构架).zip

    MATLAB 界面指纹识别MATLAB(GUI界面,比对两幅指纹)(构架)

    MATLAB车牌出入库识别(GUI界面,计时计费,停车位计算,倾斜矫正)【工程项目】.zip

    MATLAB车牌出入库识别(GUI界面,计时计费,停车位计算,倾斜矫正)【工程项目】

    基于SSM+JSP+HTML的电气与信息类书籍网上书店(Java毕业设计,附源码,数据库,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 ssm 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    红色博物馆省市县.xlsx

    ## 一、红色博物馆数据的介绍 本分享数据根据高德地图,汇总了全国范围内具有代表性的红色博物馆的基本信息,包括其地理位置、特色及教育意义。可便于对红色博物馆的区域分布和文化传承情况进行快速了解,并深入了解中国革命的历史背景和文化内涵 ## 二、数据指标 经度 纬度 地球表面上一点与本初子午线相距的度数 地球表面上某一点与赤道面之间的夹角 ## 三、数据概览 下图展示了全国范围内红色博物馆的基础数据

Global site tag (gtag.js) - Google Analytics