`
#天琪#
  • 浏览: 161754 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多
今天我们开发的 J2EE 网络应用程序,在表现层常用的就是Struts, Tapestry, WebWork, or Spring。这些工具一般使用MVC体系结构,输出HTML到浏览器。典型的程序网络开发模型就是要求 用户对程序的每一个动作都要发送请求到服务器上。对于程序的每个用户请求,服务器生成一个回复允许用户提交一个新请求用以获得更多信息。一个浏览器通常用来为用户渲染界面。但是浏览器是一个有太多限制的客户端,同时缺乏开发和用户体验。

富网络应用程序(RIA)技术用来处理表现层的缺陷。这篇文章将以注重实践的态度来理解什么是RIA,怎样把它融入你的应用体系中。文章也将提出一种是跟几个流行的 开源框架组合潜在的挑战。

浏览器的局限

当前已有的解决方案的问题是什么呢?当程序行为正确时也许并没有什么问题,可是曾经大多数的网络开发者都抱怨在使用浏览器作为客户端的能力限制。这里有几个当网络应用程序使用浏览器产生的问题:

l 各种浏览器以一些不协调的方式解释象javascript这样的脚本语言,这迫使开发者花费出几倍的时间写相同的代码来适应不同的浏览器。

l 一些象标签,向导表单,大型数据列表处理 等普通的功能却困扰着开发人员并需要付出额外的实践来为浏览器写代码。

l HTML本身就有局限性,静态的标签无法扩展。

l 用户界面上的事件处理有着巨大的挑战,因为渲染HTML页面只能同时显示一个,事件无法不通过服务器更新其它页面上的数据。

l 存储程序状态只能通过无法是用对象的cookies,

l 使用浏览器几乎无法开发需要脱机工作的程序



这些例子反复说明了大部分开发者都已知道的:当前的工具是由局限性的。开发者使用浏览器时经常会因为这些问题要去找到解决方案。开发者和用户都已经对这种瘦客户端的能力失去信心。



富网络应用程序

有一种克服以上一些局限性的办法,我们称之为RIA,一个RIA 提供用户一个扩展了浏览器无法实现的能力的胖客户端。大多数普通的J2EE RIA客户端是java和Flash。当需要开发一个以数据为中心的大型应用程序时,RIA通常比较适合。一些可用的开发RIA解决方案有 JDNC (JDesktop Network Components), Laszlo, Thinlet, Java Web Start, and Macromedia Flex。

RIA能解决上面所说的问题,以下是一些RIA能提供的功能列表:

l RIA 提供类似于浏览器的 UI组件,增加了新本地化,更多组件。例如:包含数字递进器,滑动控制,在线数据表格逐渐,和 菜单栏。

l RIA允许使用布局管理组件,象标签向导,折叠栏,树型,还有一些其它的布局,已经接近AWT和SWING开发。

l RIA提供拖动-释放 能力

l RIA中的语言风格对所有客户端都是一致的,所以无需为不同应用重写

l 请求/回复 模型不是所有用户界面动作说必须的。使用RIA,用户与界面交互只需要处理所需要的部分。RIA 可以使用HTTP协议方法上传数据到应用程序服务器。通常,无论如何,首选的机制是remoting,它支持不同的方式使用RIA。RIA 特别的使用一些扩展协议来在HTTP之上交流。

l 多组件事件处理可使用。

l RIA允许你存储更多信息在客户端代替httpsession,这减少了服务器的内存消耗。

l 持久化状态,大多是在form对象,提供脱机时的能力



RIA是一个比较新的技术,引进了新的观念来发展这些类型的应用。它不是所有应用程序的银弹,根据实现,提供试验。但是,假如你的应用能够受益于富UI设计,那么RIA也许适合你。这篇文章现在将介绍一个RIA解决方案- Macromedia Flex,我们还将讨论整合问题。



Macromedia Flex

Macromedia Flex 是 一种提供RIA的商业表现层服务器。Flash插件是flex程序运行时环境所不可缺少的。大多数浏览器已经预装了Flash插件,这将有助于你 立刻使用flex。我们将讨论是用Flash插件代替java插件与J2EE应用服务器交互的一些问题。

开发者使用两种核心的语言来创建flex程序,第一个是MXML,Macromedia Flex标记语言,它包含了大量的XML标签,允许开发者布局他们的界面。 MXML能引用到XUL,或者XML UI语言,这些标记可以被扩展,有程序需要的额外能力,不象HTML。其它MXML结构允许你拥有自己的 look and feel MXML组件。

第二个语言是 ActionScript 2.0,它是一种ECMA-compliant 语言很像 JavaScript。ActionScript元素编码在MXML页面中。这是一种强类型的面向对象的语言,很容易被熟悉 java的开发上手。ActionScript 还有丰富的事件处理能力允许应用程序响应动态的用户交互。因为ActionScript 在Flash插件中运行,所以无需为不同的浏览器编写相似的代码。



MXML跟ActionScript 都是基于文本的语言,能够在普通的文本编辑器,一个象eclipse 的IDE,或者其它成熟的工具象flex builder。假如你有java,XML经验,或一些脚本语言象 javascript,你就只有很小的学习曲线学习flex开发。

Flex 服务器 是为了将MXML和ActionScript 编译转化成Flash 字节码.swf文件。这个过程就像java web服务器容器编译JSP文件成servlet。Swf文件在客户端的Flash运行时环境中运行。Flex 服务器提供其它类似缓存,并发,处理远程对象的功能。



为你的遗留体系引入一个RIA框架

现在你已经有一些RIA方面的理解了,让我们来看看怎样为你已经存在的应用程序引入一个RIA框架。这将包括一些关于RIA应该在少耦合的程序中处于什么层的外置的讨论。此外,讨论将会在特别强调一些可能存在在开发flex与一些流行的开源框架结合的缺陷。这个例子会帮助你确定在引入RIA时潜在的问题。

让我们开始标识一个分层的体系结构。一个这样的体系一般包括 表现层,业务委托层,业务综合/服务层,和持久层。这是一个可能的个层实现关系:

Flex + Business Delegates + Spring Framework + Hibernate



接下来的讨论将集中在 综合各个层。



关于我这个已经存在的MVC表现层

表现层是一个web应用程序展现给用户的界面,把请求转发到服务器,存储数据信息模型。刚开始的RIA开发者总是希望能重用已经存在的struts组件。但是象flex这样的产品提供了他自己的MVC架构。你会真的需要去维持并存两个表现层框架在你的应用中吗?



让我们看看一个实际的例子中flex客户端发出一个通过struts组件的请求到应用程序服务器上。一个来自flex的请求发送到struts表现框架之后被高层的程序接收。图1显示了一个这样的例子




图1 :怎么样用其它java组件组合 flex 和 struts



象struts这样的表现成框架在HTTP上传送HTML请求,虽然我们可以使用HTTP协议,但更鼓励开发者使用 remote object 调用,因此,使用这两个表现层框架会逐渐产生协议不搭配,除非我们有一个特殊的需求直接用RIA组合struts。,避免他们。图2 显示一个更好的组合flex 和struts的方案:




图2 ,介绍flex struts 平行存在于 java 组件中



图2 提出了怎样去隔离 struts 组件和flex 组件使他们共存。这满足了应用程序需要平行的RIA组建和 轻量级 类struts组件。



开发者必须明白他们使用RIA客户端是要做什么。这要求我们明确的转换我们熟悉的传统的请求/应答这种编程思想。象flex这样的RIA产品不像struts这样是 请求或者应答 驱动的。RIA 客户端更新UI而无需全部的实例都返回服务器进行交互。



Struts 并不是你在使用RIA时需要唯一考虑的问题。我们只需花费一点时间就可以熟悉这些类型的技术。在这个学习路途中,最大的问题是组合java服务器端的组件。底线是不背离RIA观念。



在业务层集成flex

现在我们了解了一些表现层技术,让我们来讨论一下对程序结构的其它层的影响。我们要重新配置我们的表现成组件,怎样跟业务层组合在一起呢?

Flex 是一个可扩展的RIA框架,提供了很多方法来与你的J2EE组件进行通信。Flex提供 HTTP 通信,web service通信,和 macromedia公司所特有的AMF(ActionScript Messaging Format)网关。AMF网关是一个高性能的二进制协议,就像Flash里面的 remoting协议。Remote对象使用HTTP协议通过AMF网关传递信息。Flex为所有这些通信协议提供MXML标记,极大地减少了编码复杂度。此外,flex允许你使用同步的或者异步的方式去调用远程的业务层。当使用异步远程调用时,用户可以执行一些客户端行为,而不会有传统web应用程序的阻塞现象。当然,你可以在适当的地方使用同步方法来阻塞用户操作。

现在让我们来考虑 怎样在业务/综合层中集成flex。讨论中我们将使用spring框架作为我们的综合层,当然这并不限制你使用任何你自己选择的其它实现方式。让我们假设你有一些服务操作在你的spring微容器中,而你需要在flex中调用这些远程对象。

既然flex 无法直接知道任何关于spring的东西,所以你用一个担当代理服务器组件的小层来分离他们。另外,既然spring在java接口中有不俗的表现,它也一定适合去构建一些实现了一些spring服务接口的代理对象。这些代理对象将会提供一个在 flex跟综合层之间的分隔网关。唯一你需要去做的就是在flex配置文件中配置这些对象,然后你就可以通过AMF网关调用了。这里有一个关于在服务器端 flex-config.xml文件中怎样配制代理对象的例子:

<object name="OrderBusinessDelegate">

<source>

com.meagle.flexro.FlexBusinessDelegate

</source>

<type>stateless-class</type>

<use-custom-authentication>

true

</use-custom-authentication>

<allow-unnamed-Access>

false

</allow-unnamed-Access>

<roles>

<role>OrderUser</role>

<role>Admin</role>

</roles>

</object>

第一眼你就可以看出来flex一些特别的能力,如配置安全选项,和确定代理对象是有状态的还是无状态的。当一个远程对象调用一个综合层对象时,调用会被 flex代理java对象截获。代理将会产生一个对综合层或服务层的调用。结果对象将会被通过AMF网关发送回flex客户端,在那里被解释成 actionscript对象。这里有一个MXML代码使用远程调用和存储结果在数据模型中的例子:

<mx:RemoteObject id="soapro"

named="OrderBusinessDelegate"

protocol="https"

showBusyCursor="true">

<mx:method name="saveNeWorder"

result="saveNeWorder_result(event)"

fault="faultHandler(event.fault)"/>

<mx:method name="findOrderById"

result="findOrderById_result(event)"

fault="faultHandler(event.fault)"/>

<mx:method name="updateOrder"

result="updateOrder_result(event)"

fault="faultHandler(event.fault)"/>

</mx:RemoteObject>



<mx:Model id="roModel" >

<!-- The object graph for the Order object

will be stored here -->

<Order/>

</mx:Model>



域对象是用就类似于actionscritp 的java写成,它来回于AMF网关。这个过程开始于一个来自于flex客户端的请求,通过AMF网关到应用程序的其它层。结果对象图表将会通过其他 java层被发送回,最终通过AMF网关回到客户端。当一个对象通过网关他会被转换回actionscript等价物。图3 显示了这个过程




图3 AMF 网关的 轮廓图



其它的一些关于返回对象 通过flex和你的java层: 因为actionscript 2.0是一个面向对象的语言,它可以创建actionscript的java等价物对象。这样就使得在对象来回穿越于AMF网关变得容易多了。Actionscript 对象被发送回Flash插件类似于 数据转换对象DTO,这是必须的,因为Flash插件没有任何java运行时组件。这里有一个熟悉的例子,一个java的命令 域对象:

package com.meagle.bo;



import java.util.ArrayList;

import java.util.Collections;

import java.util.List;



/**

* This object represents an order.

* @hibernate.class table="TestOrder"

* @author meagle

*/

public class Order {

private int id;

private double total;

private int version;

private String userName;

private List orderLineItems = new ArrayList();



// other fields and getter/setter methods not

// shown to save space

}



下面是一个 actionscript 等价物:

/**

* Generated Action Script Object

* for com.meagle.bo.Order. Do not edit!

*/

class com.meagle.bo.Order extends Object {



public function Order(){}



public static var regClass =

Object.registerClass("com.meagle.bo.Order",

com.meagle.bo.Order);



var id : Number;

var orderLineItems : Array = new Array();

var total : Number;

var userName : String;

var version : Number;



// other fields and getter/setter methods not

//shown to save space

}



你已经注意到了在actionscript Order对象中有一个特殊的方法Object.registerClass()。这个Object.registerClass()方法是用来使AMF 网关知道如何去耦合和解耦 java和actionscript 对象。这个方法注册了 对应于 服务器端 java类的 客户端actionscript 类。因为这些对象如此的相似,你无需去重写你的域对象,只需要一些细微的格式化。一些象Xdoclet 和ant 这样的工具允许你自动生成 这些 actionscript 对象。现在你可以在flex 客户端操纵你的java对象就像 actionscript一样。



在持久成集成你的flex

在一个结构良好的的网络应用程序中,我们一般不直接跟持久层通信。使用flex不会改变这个架构。大多数情况下综合层会与你的持久层通讯。一般我们使用 DAO 来访问在一个象数据库一样的存储地的数据。Flex 客户端也不会直接与持久层通信,即使知道这些层的存在,因为这样会产生强耦合。让我们使用hibernate 来做持久成做一个范例吧。

使用hibernate和Macromedia的 AMF网关的远程对象有两个缺点。Hibernate用户知道你不能访问一个懒加载的集合collection,因为你还没有在 session中初始化他们。访问一个没有被初始化的动态代理对象集合会导致运行时异常。AMF网关不知道如何去寻找hibernate动态代理对象。一种可能的解决方案是面向方面的编程(AOP)拦截器,它能放置一个将要通过AMF网关的对象在一个委托对象中,然后移除动态代理。这个过程包括发送结果对象穿过一个递归查询那些使用反射和没有被初始化的代理对象的拦截器类。假如一些懒代理对象或者集合被发现了,他就会把他们的值设置为null。这是一个面向方面的一个截面,我们可以使用一些象 JBoss AOP, AspectJ, Spring AOP等等 AOP语言来实现。AOP 拦截器将在业务代理层中应用。图4 显示了这样的程序架构的框架:




图4 在通过AMF网关之前引入AOP拦截器和advice来代理对象. 跟进一步说,它会在一些像综合层,持久层等地方减少耦合。

好消息是AMF 网关不知道如何你缓存双向对象,所以无止境的递归操作也不会在转换对象过程中产生。因此你可以在传送它们往返于AMF网关时保持这些完整的关系。还有,因为对象是无连接和拷贝过来的,你必须使用Session.saveOrUpdateCopy(Object object) 方法持久化你的结构到数据库当中。这个方法必须被使用,因为对象在穿越AMF网关的过程中丢失了一些hibernate可以使用的特殊的字节码信息。



认证

典型的 J2EE 应用程序有一些相同的认证设计。也许是 基于容器的认证模式或者是自定义的用户认证代码。像flex这样的RIA服务器允许你在Flash客户端使用自定义认证表单,或者 在大多数应用程序服务器上基于容器的认证。此外,假如你要再上面的这个例子中查找业务委托配置,你就会注意到你能够安全的为这些对象配置角色。经常做的是在AMF网关中允许开发者获取HttpRequest,HttpResponse和ServletConfig对象再你的代理对象方法中使用来增强安全性。



总结

这篇文章有目的的介绍了一些在使用象flex这样的RIA时进行的权衡和可能的缺陷。不管你是否使用flex或者其他RIA实现,这里有些在使用这些技术主要的考虑的事情。当评价一个RIA框架,确定它在遇到一些问题时是否有足够的可扩展性。另外,在RIA和java之间传送数据需要注意小心评价综合的问题。

AMF协议是基于Http协议的.
它的内容处理过程大致是这样:
1.从客户端获取Http请求(Request)流.
2.对流进行解串行化(Deserialize),得到服务器端程序能够识别的数据,并建立一个响应(Response)消息
3.Debug开始
4. 对流进行各种处理(记录、许可、服务)得到返回值
5.对响应流进行串行化
6.发送Http响应给客户端

Flash ActionScript 数据类型在AMF协议中对应的值是:
Number     0x00;
Boolean     0x01;
String     0x02;
Object     0x03;
MovieClip     0x04;
Null      0x05;
Undefined     0x06;
Reference     0x07;
ECMAArray     0x08;
ObjectEnd     0x09;
StrictArray    0x0a;
Date      0x0b;
LongString    0x0c; 
Unsupported    0x0d; 
Recordset     0x0e; 
XMLObject     0x0f; 
TypedObject(Class) 0x10;

资源

Macromedia Flex home page
Open XUL Alliance
Mark Eagle is a Senior Software Engineer at MATRIX Resources, Inc. in Atlanta, GA.
分享到:
评论

相关推荐

    (源码)基于C语言的SmartPlugModbus固件项目.zip

    # 基于C语言的SmartPlugModbus固件项目 ## 项目简介 该项目是一个基于C语言的固件项目,旨在实现一个支持Modbus RTU通信协议的智能设备固件。该固件被设计为与SmartPlugModbus设备配合使用,用于控制和管理多个电源插座,提供过流、欠流、过压、欠压和过热保护,同时监控插座状态和电压、电流等参数。 ## 项目的主要特性和功能 1. Modbus RTU通信协议支持固件实现了Modbus RTU通信协议,允许通过Modbus协议与设备进行通信,包括读取和写入设备参数、状态和控制命令。 2. 多插座控制固件支持控制多个电源插座,包括开启、关闭、查询状态等。 3. 保护功能设备提供过流、欠流、过压、欠压和过热保护,防止设备损坏和安全事故。 4. 参数配置通过Modbus协议,用户可以配置设备的保护参数,如电流、电压限制等。

    毕设单片机实战项目基于ESP8266 Mesh SDK开发,通过HSPI与STM32通讯.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于龙芯派的物联网食品仓储监测系统.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于嵌入式系统的StackAttack游戏项目.zip

    # 基于嵌入式系统的StackAttack游戏项目 ## 项目简介 StackAttack是一个基于嵌入式系统的游戏项目,设计用于SPI TFT彩色液晶显示面板上运行。游戏的核心玩法是操控一个名为“Claw”(爪子)的游戏角色,在由格子组成的地图上移动并抓取箱子。玩家通过操纵杆控制游戏角色,成功抓取并移动箱子到目标位置后得分。游戏地图由二维数组表示,每个格子代表一个位置。当玩家成功将所有箱子移动到目标行时,游戏结束。 ## 项目的主要特性和功能 1. 游戏角色控制玩家通过操纵杆控制Claw(爪子)角色移动。 2. 地图和箱子管理游戏地图由二维数组表示,每个格子代表一个位置。箱子在游戏地图上的位置由数组中的值表示。 3. 游戏逻辑包括角色的移动、箱子的抓取和移动、得分计算等。 4. 图形显示使用SPITFTILI9341图形库控制SPI TFT显示屏,实现游戏的图形输出。 5. 暂停功能游戏支持暂停功能,方便玩家随时暂停游戏。

    【嵌入式系统与计算机视觉】基于STM32、OpenCV和CNN的车牌识别系统:社区车辆管理与收费应用

    内容概要:本文档提供了基于STM32、OpenCV和卷积神经网络的车牌识别系统的完整代码示例。系统通过摄像头捕捉视频流,利用OpenCV进行图像处理(如灰度化、二值化、轮廓检测等)以定位车牌区域,并使用预训练的ONNX模型对车牌字符进行识别。之后,系统将识别到的车牌号与预先存储在CSV文件中的居民车牌数据库进行匹配,以判断车辆是否为小区居民所有,从而实现对外来车辆的收费管理。; 适合人群:对嵌入式系统开发、计算机视觉和深度学习感兴趣的开发者,尤其是有一定C++编程基础和技术背景的研究人员或工程师。; 使用场景及目标:①适用于社区、停车场等场所的车辆管理;②帮助开发者理解车牌识别的基本流程,包括图像预处理、车牌定位、字符识别以及与数据库的交互;③提供一个可扩展的基础框架,便于后续优化和功能增加。; 阅读建议:读者应确保具备基本的OpenCV库使用经验和C++编程能力。在学习过程中,建议同时参考相关文献资料,深入理解每个步骤背后的原理,并尝试调整参数或替换模型以提高识别精度。此外,还需准备相应的硬件设备(如摄像头)和软件环境(如安装OpenCV库),以便实际运行代码并观察效果。

    fregefffewfw

    efwfw

    基于S7-200 PLC与MCGS组态的智能交通灯控制系统设计与实现

    内容概要:本文详细介绍了利用西门子S7-200 PLC和MCGS组态软件构建智能交通灯控制系统的方法。首先阐述了系统的硬件配置,包括PLC的选择、IO分配、光电开关的应用等。接着深入探讨了梯形图编程的核心逻辑,如定时器嵌套、车流判断、紧急模式处理等。同时,还讲解了MCGS组态界面的设计要点,如动态指示灯、车流统计曲线、急停按钮等功能的实现。此外,文中分享了一些调试经验和优化技巧,如信号隔离、通信参数设置、夜间模式优化等。 适合人群:对PLC编程和工业自动化感兴趣的工程技术人员、高校相关专业学生。 使用场景及目标:适用于城市交通管理部门进行智能交通灯系统的规划与实施,旨在提高交通效率,减少拥堵。通过学习本文,读者能够掌握PLC编程的基本方法和MCGS组态软件的使用技巧。 其他说明:文中提供了详细的接线图、梯形图代码片段和组态界面截图,便于读者理解和实践。同时,作者还分享了许多实际操作中的注意事项和经验教训,有助于初学者少走弯路。

    毕业设计物联网实战项目基于物联网的气象台站系统.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    VB珠宝首饰店管理系统设计(源代码+系统+开题报告+答辩PPT).zip

    摘 要 面对信息时代的机遇与挑战,利用高科技手段来提高企业的管理水平无疑是一条行之有效的途径。利用计算机管理可以最大限度的发挥准确、快捷、高效等作用, 在越来越激烈的珠宝行业中,计算机管理技术对珠宝首饰公司的服务管理提供强有力的支持。因此,利用全新的计算机网络和珠宝首饰管理系统,已成为提高珠宝首饰公司的管理效率,改进服务水准的重要手段之一。本系统应用Visual Basic 6.0 中文版开发前台,用Microsoft Access 作后台服务器,采用客户机/服务器(C/S)管理思想来对珠宝首饰进销存管理。 关键词:管理水平, 管理效率,服务水准,珠宝首饰管理系统,客户机/服务器,管理思想

    稀疏分解方法在信号去噪中的应用研究_内含源码数据论文.zip

    稀疏分解方法在信号去噪中的应用研究_内含源码数据论文.zip

    2008年领导力发展年度报告

    本书由吉姆·诺埃尔和大卫·多蒂奇编辑,旨在探讨领导力发展领域的最新趋势和实践。书中不仅提供了领导力发展领域的历史回顾,还挑战了组织对领导力发展的战略视角,详细介绍了如何培养全球领导者,并提供了关于领导力发展方法、策略和系统、高潜力人才发展、高层管理参与、有效学习方法以及领导力指标等方面的深入案例研究和理论分析。此外,书中还探讨了创新的领导力发展方法,并对未来的发展趋势进行了展望。

    一种基于 QR 二维码的彩色二维码编码译码设计及其软件实现.zip

    一种基于 QR 二维码的彩色二维码编码译码设计及其软件实现.zip

    毕设单片机实战项目基于机智云和 esp8266-12F WIFI 模块的智能插座控制安卓APP.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于mqttd-centos7-v2.3.11.zip 配置的emqtt服务器,配套金大万翔物联网管理平台.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    【光子晶体模拟】基于COMSOL弱形式PDE的三维光子晶体能带结构计算与优化:电磁场切向连续性处理及带隙分析系统设计使用COMSOL

    内容概要:本文详细介绍了使用COMSOL Multiphysics的弱形式接口对三维光子晶体进行数值模拟的方法和技巧。文章通过具体的代码示例,解释了如何构建光子晶体的介电常数分布、设置弱形式PDE、处理电磁场切向连续性、应用Floquet周期边界条件以及特征值求解等关键步骤。特别强调了弱形式接口相比传统物理场接口的优势,如灵活性和对复杂边界的处理能力。文中还分享了一些实用的经验和注意事项,如布洛赫边界条件的实现、特征值求解器参数的优化配置以及网格划分的技巧。 适合人群:具备一定电磁学和数值模拟基础的研究人员或工程师,尤其是对光子晶体仿真感兴趣的读者。 使用场景及目标:①理解并掌握COMSOL弱形式接口在光子晶体仿真中的应用;②学习如何通过弱形式设置处理复杂的电磁场问题;③提高对光子晶体能带结构和带隙特性的认识;④掌握特征值求解和网格划分的最佳实践。 阅读建议:由于本文涉及较多的具体代码和物理概念,建议读者在阅读过程中结合COMSOL软件进行实际操作,同时查阅相关电磁理论书籍以加深理解。此外,对于文中提到的一些具体参数设置和技巧,可以通过尝试不同的配置来巩固所学知识。

    机械工程PT5000汽轮机滑动轴承系统模拟试验台:动态行为与振动控制研究

    内容概要:PT5000汽轮机滑动轴承系统模拟试验台是一个类似于电厂汽轮机发电机的缩小模型,旨在帮助用户获取汽轮机转子动态行为和滑动轴承油膜现象的实际经验,并研究振动控制方法。该试验台模拟两级涡轮机(低压和中压),每级转子两侧各有8个叶片,共计16个叶片。通过电机驱动而非涡轮发电机,可以进行启停机测试,识别共振现象。试验台还支持多种实验,如不平衡/现场动平衡、轴不对中实验、摩擦实验、油膜故障试验、轴颈轴承实验以及根据油压和温度进行的转子动力学试验。试验台配备了多种传感器和控制系统,包括电涡流传感器、温度传感器、压力传感器等,用于监测和记录实验数据。 适合人群:从事汽轮机设计、制造、维护的技术人员,以及相关专业的高校师生和研究人员。 使用场景及目标:①研究汽轮机转子的动态行为和滑动轴承的油膜现象;②进行振动控制方法的研究;③模拟再现油膜涡动转和油膜震荡,研究其控制条件;④进行不平衡、不对中、摩擦等常见故障的模拟和分析;⑤通过调整油压、温度和预加载力,研究轴的行为变化。 其他说明:该试验台不仅适用于教学和科研,还可用于工业领域的培训和技术验证。试验台具有丰富的配置和可选配件,可以根据具体需求进行定制。试验台的机械和电气参数详细列出,确保用户能够全面了解设备性能。

    知识图谱,电影领域,知识图谱构建

    电影类型知识图谱构建,包含相关数据集

    (源码)基于C++的Minimal BASIC解释器.zip

    # 基于C++的Minimal BASIC解释器 ## 项目简介 本项目是一个C++实现的Minimal BASIC解释器。该解释器能够解释并执行一些基本的BASIC语言命令,如赋值、打印、输入、条件跳转等。用户可以通过命令行交互地输入命令,或者编写一个按行数升序依次运行的大程序。 ## 项目的主要特性和功能 1. 解释执行能够解释并执行简单的BASIC语言命令。 2. 变量定义与赋值支持定义变量并为其赋值。 3. 打印输出支持将表达式的值打印到控制台。 4. 输入支持从用户获取输入值并赋值给变量。 5. 条件跳转支持基于条件的跳转语句。 6. 注释支持注释语句,使程序更加易读。 ## 安装使用步骤 1. 准备环境确保你的开发环境已经安装了C++编译器,如GCC。 3. 编译使用CMake工具编译源代码。 4. 运行编译成功后,运行可执行文件,即可与解释器交互。 ## 注意事项

    自适应神经进化编程解决暂态稳定性最优潮流问题

    本文提出了一种结合自适应进化编程(AEP)与神经网络的方法,用于解决暂态稳定性约束最优潮流(TSCOPF)问题。AEP在优化过程中能够自动调整种群大小,以获得TSCOPF问题的解决方案。神经网络的嵌入能够降低由暂态稳定性约束引起的计算负担。文章通过在IEEE 30节点系统上测试,使用两种不同的燃料成本函数,验证了AEP方法在搜索全局解方面的有效性,并且当结合神经网络后,显著提高了计算速度。此外,本文还对神经网络的架构进行了研究和讨论。

    毕设单片机实战项目基于ESP8266组建的智能安防系统.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

Global site tag (gtag.js) - Google Analytics