导航:首页 > 编程语言 > javab2b源码

javab2b源码

发布时间:2022-09-23 20:14:45

㈠ 如何利用字节流实现java文件上传下载

实现上传下载实际上就是io的转换。举例:
import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;

public class CCFCCBFTP {

/**
* 上传文件
*
* @param fileName
* @param plainFilePath 明文文件路径路径
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上传文件开始");
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("检查文件路径是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}

}

/**
*下载文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FileOutputStream fos = null;
FTPClient ftpClient = new FTPClient();
String SFP = System.getProperty("file.separator");
String bl = "false";
try {
Log.info("下载并解密文件开始");
Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);
// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);
FTPFile[] fs;

ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("下载文件开始。");
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is = ftpClient.retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下载文件结束:"+localFilePath);
}
}
Log.info("检查文件是否存:"+fileName+" "+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");
return bl;
}
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}}
备注:以上方法就实现了流的二进制上传下载转换,只需要将服务器连接部分调整为本地的实际ftp服务用户名和密码即可。

㈡ 哪有php电子商务系统源码

推荐 shopnc 或者上 php开源大全 没记错的话开源大全里就有

㈢ 什么是“JAVA”

JavaJava,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。
Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.5,最近版本为Java1.7。 Java分为三个体系JavaSE(Java2 Platform Standard Edition,java平台标准版),JavaEE(Java 2 Platform,Enterprise Edition,java平台企业版),JavaME(Java 2 Platform Micro Edition,java平台微型版)。 * Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。 * Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。 * Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。 2009年04月20日,oracle(甲骨文)宣布收购sun。 1991年,Sun公司的James Gosling。Bill Joe等人,为电视、控制烤面包机等家用电器的交互操作开发了一个Oak(一种橡树的名字)软件,他是Java的前身。当时,Oak并没有引起人们的注意,直到1994年,随着互联网和3W的飞速发展,他们用Java编制了HotJava浏览器,得到了Sun公司首席执行官Scott McNealy的支持,得以研发和发展。为了促销和法律的原因,1995年Oak更名为Java。Java的得名还有段小插曲呢,一天,Java小组成员正在喝咖啡时,议论给新语言起个什么名字的问题,有人提议用Java(Java是印度尼西亚盛产咖啡的一个岛屿),这个提议得到了其他成员的赞同,于是就采用Java来命名此新语言。很快Java被工业界认可,许多大公司如IBM Microsoft.DEC等购买了Java的使用权,并被美国杂志PC Magazine评为1995年十大优秀科技产品。从此,开始了Java应用的新篇章。 Java的诞生是对传统计算机模式的挑战,对计算机软件开发和软件产业都产生了深远的影响: (1)软件4A目标要求软件能达到任何人在任何地方在任何时间对任何电子设备都能应用。这样能满足软件平台上互相操作,具有可伸缩性和重用性并可即插即用等分布式计算模式的需求。 (2)基于构建开发方法的崛起,引出了CORBA国际标准软件体系结构和多层应用体系框架。在此基础上形成了Java.2平台和.NET平台两大派系,推动了整个IT业的发展。 (3)对软件产业和工业企业都产生了深远的影响,软件从以开发为中心转到了以服务为中心。中间提供商,构件提供商,服务器软件以及咨询服务商出现。企业必须重塑自我,B2B的电子商务将带动整个新经济市场,使企业获得新的价值,新的增长,新的商机,新的管理。 (4)对软件开发带来了新的革命,重视使用第三方构件集成,利用平台的基础设施服务,实现开发各个阶段的重要技术,重视开发团队的组织和文化理念,协作,创作,责任,诚信是人才的基本素质。 总之,目前以看到了Java对信息时代的重要性,未来还会不断发展,Java在应用方面将会有更广阔的前景。
[编辑本段]JAVA-名字起源
Java自1995诞生,至今已经15年历史。Java的名字的来源:Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。SUN和JAVA的标识也正是一杯正冒着热气的咖啡。 据James Gosling回忆,最初这个为TV机顶盒所设计的语言在Sun内部一直称为Green项目。我们的新语言需要一个名字。Gosling注意到自己办公室外一棵茂密的橡树Oak,这是一种在硅谷很常见的树。所以他将这个新语言命名为Oak。但Oak是另外一个注册公司的名字。这个名字不可能再用了。 在命名征集会上,大家提出了很多名字。最后按大家的评选次序,将十几个名字排列成表,上报给商标律师。排在第一位的是Silk(丝绸)。尽管大家都喜欢这个名字,但遭到James Gosling的坚决反对。排在第二和第三的都没有通过律师这一关。只有排在第四位的名字、得到了所有人的认可和律师的通过,这个名字就是Java。 10多年来,Java就像爪哇咖啡一样誉满全球,成为实至名归的企业级应用平台的霸主。而Java语言也如同咖啡一般醇香动人。
[编辑本段]Java语言特点
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。 当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。那么Java到底有何神奇之处呢? Java语言其实最早诞生于1991年,起初被称为OAK语言,是SUN公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发一种独立于平台的软件技术,而且在网络出现之前,OAK可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了OAK的命运。 在Java出现以前,Internet上的信息内容都是一些乏味死板的HTML文档。这对于那些迷恋于WEB浏览的人们来说简直不可容忍。他们迫切希望能在WEB中看到一些交互式的内容,开发人员也极希望能够在WEB上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的安全保障。对于用户的这种要求,传统的编程语言显得无能为力。SUN的工程师敏锐地察觉到了这一点,从1994年起,他们开始将OAK技术应用于WEB上,并且开发出了HotJava的第一个版本。当SUN公司1995年正式以Java这个名字推出的时候,几乎所有的WEB开发人员都心生感叹:噢,这正是我想要的!于是Java成了一颗耀眼的明星,丑小鸭一下子变成了白天鹅。
[编辑本段]Java主要特性
1、Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。 9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。 11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。
[编辑本段]Java相关技术
1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。 3、Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。 4、Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无缝的互操作性。这使得Java能集成异构的商务信息资源。 5、JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。 6、JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。 7、JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。 8、JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。 9、JMF(Java Media Framework API), 她可以帮助开发者把音频、视频和其他一些基于时间的媒体放到Java应用程序或applet小程序中去,为多媒体开发者提供了捕捉、回放、编解码等工具,是一个弹性的、跨平台的多媒体解决方案。 10、Annotation(Java Annotation),在已经发布的JDK1.5(tiger)中增加新的特色叫 Annotation。Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,本地变量,包和元数据联系起来。这样编译器可以将元数据存储在Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。 在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常,在一个支持JavaBeans规范的开发环境(如Sun Java Studio 和IBM VisualAge for Java)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。现在,EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深入讨论超出了本书的范围。 11、javaFX Sun刚刚发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发富互联网应用程序(RIA)。JavaFX Script编程语言(以下称为JavaFX)是Sun微系统公司开发的一种declarative, staticallytyped(声明性的、静态类型)脚本语言。JavaFX技术有着良好的前景,包括可以直接调用Java API的能力。因为 JavaFXScript是静态类型,它同样具有结构化代码、重用性和封装性,如包、类、继承和单独编译和发布单元,这些特性使得使用Java技术创建和管理大型程序变为可能。 12、JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入 管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝 集成的系统、网络和服务管理应用。 java-参见 计算机科学课程列表 JNI(Java Native Interface)Java本地接口。
[编辑本段]Java开源项目
Spring Framework 【Java开源 J2EE框架】 Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的 Inversion of Control容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了 Hibernate和其他O/R mapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。 Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的 aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。【SpringIDE:Eclipse平台下一个辅助开发插件】. WebWork 【Java开源 Web框架】 WebWork 是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork目前最新版本是2.1,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL – the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。 WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成 Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用 JSP, Velocity, FreeMarker, JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.【EclipseWork:用于WebWork辅助开发的一个Eclipse插件】 Struts 【Java开源 Web框架】 Struts 是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。【StrutsIDE:用于Struts辅助开发的一个Eclipse插件】 Hibernate 【Java开源 持久层框架】 Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】 Quartz 【Java开源 Job调度】 Quartz 是OpenSymphony开源组织在Job scheling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 1.5.0。 Velocity 【Java开源 模板引擎】 Velocity 是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。 【VeloEclipse :Velocity在Eclipse平台下的一个辅助开发插件】 IBATIS 【Java开源 持久层框架】 使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。 Compiere ERP&CRM 【Java开源ERP与CRM系统】 Compiere ERP&CRM为全球范围内的中小型企业提供综合型解决方案,覆盖从客户管理、供应链到财务管理的全部领域,支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只需要短短几个小时,您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。 Roller Weblogger 【Java开源 Blog博客】 这个weblogging 设计得比较精巧,源代码是很好的学习资料。它支持weblogging应有的特性如:评论功能,所见即所得HTML编辑,TrackBack,提供页面模板,RSS syndication,blogroll管理和提供一个XML-RPC 接口。 Eclipse 【Java开源 开发工具】 Eclipse平台是IBM向开放源码社区捐赠的开发框架,它之所以出名并不是因为IBM宣称投入开发的资金总数 —4千万美元,而是因为如此巨大的投入所带来的成果:一个成熟的、精心设计的以及可扩展的体系结构。 NetBeans 【Java开源 开发工具】 NetBeans IDE 是一个为软件开发者提供的自由、开源的集成开发环境。您可以从中获得您所需要的所有工具,用 Java、C/C++ 甚至是 Ruby 来创建专业的桌面应用程序、企业应用程序、web 和移动应用程序。此 IDE 可以在多种平台上运行,包括 Windows、Linux、Mac OS X 以及 Solaris;它易于安装且非常方便使用。 XPlanner 【Java开源 项目管理】 XPlanner 一个基于Web的XP团队计划和跟踪工具。XP独特的开发概念如iteration、user stories等,XPlanner都提供了相对应的的管理工具,XPlanner支持XP开发流程,并解决利用XP思想来开发项目所碰到的问题。 XPlanner特点包括:简单的模型规划,虚拟笔记卡(Virtual note cards),iterations、user stories与工作记录的追踪,未完成stories将自动迭代,工作时间追踪,生成团队效率,个人工时报表,SOAP界面支持。 HSQLDB 【Java开源 DBMS数据库】 HSQLDB(Hypersonic SQL)是纯Java开发的关系型数据库,并提供JDBC驱动存取数据。支持ANSI-92 标准 SQL语法。而且他占的空间很小。大约只有160K,拥有快速的数据库引擎。 Liferay 【Java开源 Portal门户】 代表了完整的J2EE应用,使用了Web、EJB以及JMS等技术,特别是其前台界面部分使用Struts 框架技术,基于XML的portlet配置文件可以自由地动态扩展,使用了Web Services来支持一些远程信息的获取,使用 Apahce Lucene实现全文检索功能。 JetSpeed 【Java开源 Portal门户】 Jetspeed 是一个开放源代码的企业信息门户(EIP)的实现,使用的技术是Java和XML。用户可以使用浏览器,支持WAP协议的手机或者其它的设备访问Jetspeed架设的信息门户获取信息。Jetspeed扮演着信息集中器的角色,它能够把信息集中起来并且很容易地提供给用户。 JOnAS 【Java开源 J2EE服务器】 JOnAS 是一个开放源代码的J2EE实现,在ObjectWeb协会中开发。整合了Tomcat或Jetty成为它的Web容器,以确保符合Servlet 2.3和JSP 1.2规范。JOnAS服务器依赖或实现以下的Java API:JCA、JDBC、JTA 、JMS、JMX、JNDI、JAAS、JavaMail 。 JFox3.0 【Java开源 J2EE服务器】 JFox 是 Open Source Java EE Application Server,致力于提供轻量级的Java EE应用服务器,从3.0开始,JFox提供了一个支持模块化的MVC框架,以简化EJB以及Web应用的开发! 如果您正在寻找一个简单、轻量、高效、完善的Java EE开发平台,那么JFox正是您需要的。

㈣ 怎样用java开发ftp客户端

package zn.ccfccb.util;
import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import zn.ccfccb.util.CCFCCBUtil;
import zn.ccfccb.util.ZipUtilAll;

public class CCFCCBFTP {

/**
* 上传文件
*
* @param fileName
* @param plainFilePath 明文文件路径路径
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上传文件开始");
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// Log.info("连接远程上传服务器"+"192.168.54.106:"+2021);
// ftpClient.connect("192.168.54.106", 2021);
// ftpClient.login("hkrt-CCFCCBHK", "3OLJheziiKnkVcu7Sigz");
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("检查文件路径是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}

}

/**
*下载并解压文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FileOutputStream fos = null;
FTPClient ftpClient = new FTPClient();
String SFP = System.getProperty("file.separator");
String bl = "false";
try {
Log.info("下载并解密文件开始");
Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);
// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);
FTPFile[] fs;

ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("下载文件开始。");
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is = ftpClient.retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下载文件结束:"+localFilePath);
}
}
Log.info("检查文件是否存:"+fileName+" "+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");
return bl;
}
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}

// 调用样例:
public static void main(String[] args) {
try {
// 密钥/res/20150228
// ZipUtilAll.unZip(new File(("D:/123/123.zip")), "D:/123/");
// ZipDemo1232.unZip(new File(("D:/123/123.zip")), "D:/123/");
// 明文文件路径
String plainFilePath = "D:/req_20150204_0011.txt";
// 密文文件路径
String secretFilePath = "req_20150204_00134.txt";
// 加密
// encodeAESFile(key, plainFilePath, secretFilePath);
fileDownloadByFtp("D://123.zip","123.zip","req/20150228");
ZipUtilAll.unZip("D://123.zip", "D:/123/李筱/");
// 解密
plainFilePath = "D:/123.sql";
// secretFilePath = "D:/test11111.sql";
// decodeAESFile(key, plainFilePath, secretFilePath);
} catch (Exception e) {
e.printStackTrace();
}
}

}

㈤ 开源商城源码系统哪个好

很多人觉得开源商城系统就一定很好,其实不一定,现在的商城系统开发主要是用java,.net,PHP,它们各有优势,相对来说,JAVA,.net会比较好点,可以关注一下HiShop的商城系统。

㈥ P2P是什么啊

交互,真正地消除中间商。P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。P2P另一个重要特点是改变互联网现在的以大网站为中心的状态、重返“非中心化”,并把权力交还给用户。 P2P看起来似乎很新,但是正如B2C、B2B是将现实世界中很平常的东西移植到互联网上一样,P2P并不是什么新东西。在现实生活中我们每天都按照P2P模式面对面地或者通过电话交流和沟通。

即使从网络看,P2P也不是新概念,P2P是互联网整体架构的基础。互联网最基本的协议TCP/IP并没有客户机和服务器的概念,所有的设备都是通讯的平等的一端。在十年之前,所有的互联网上的系统都同时具有服务器和客户机的功能。当然,后来发展的那些架构在TCP/IP之上的软件的确采用了客户机/服务器的结构:浏览器和Web服务器,邮件客户端和邮件服务器。但是,对于服务器来说,它们之间仍然是对等联网的。以email为例,互联网上并没有一个巨大的、唯一的邮件服务器来处理所有的email,而是对等联网的邮件服务器相互协作把email传送到相应的服务器上去。另外用户之间email则一直对等的联络渠道。 当然但是过去的5年里,互联网的发展至少从表面上远离了P2P,互联网上绝大部分的节点也不能和其他节点直接地交流。Napster正是唤醒了深藏在互联网背后的对等联网。Napster的文件共享功能在局域网中共享目录也是再平常不过的事情。但是Napster的成功促使人们认识到把这种“对等联网”拓展到整个互联网范围的可能性。当然,在许多人的眼中,Napster并不是纯粹的P2P,它仍然需要一个处于中心协调机制。

事实上,网络上现有的许多服务可以归入P2P的行列。即时讯息系统譬如ICQ、AOL Instant Messenger、Yahoo Pager、微软的MSN Messenger以及国内的OICQ是最流行的P2P应用。它们允许用户互相沟通和交换信息、交换文件。用户之间的信息交流不是直接的,需要有位于中心的服务器来协调。但这些系统并没有诸如搜索这种对于大量信息共享非常重要的功能,这个特征的缺乏可能正 是为什么即时讯息出现很久但是并没有能够产生如Napster这样的影响的原因之一。
另外一个可以归入P2P是拍卖网站譬如eBay,人们在总结eBay的模式的时候用了C2C,是不是和P2P有一点类似?eBay就是一个将人们联系的和交易物品的社区,用户可以方便的搜索其他用户叫卖的商品。eBay提供了一些使得交易得以顺利进行的服务,但是交易是直接在用户之间进行的。如果将“交易”的概念推广,C2C就是P2P的一个特例,这里人们互相交换的是商品。

但如果仔细深究的话,Napster和即时讯息在赋予用户之间直接交流的能力、eBay使用户可以直接交易的同时,却破坏了服务器端的那种自互联网出现之初就存在的对等联网思想,因为它们都需要有一个位于中心的服务器来协调,而不是分布在世界上不同地方的、对等联网的许多服务器。这也正是诸如Gnotella和Freenet不断的宣称它们创造了“纯粹”的P2P,完全没有中心服务器的P2P服务。

(2)p2p的思想溯源:回到互联网的本质
如果回顾一下,我们会发现在WWW出现伊始P2P就是互联网的本质特征之一。人们各自建立网页、互相做链接,人们上网是沿着链接冲浪。那时的web是真正的“网”(web)。但是当Yahoo!和Lycos建立了搜索引擎和门户站点后,人们上网的方式被改变了,人们从此到一个地方去获取所有的信息。记得新浪曾经有一段时间说它们是“目标站点”模式,但是如果多问一句,现在人们一条一条地阅读新浪的新闻,在头脑中还有一个“网”的概念吗?最大的问题是,这些站点控制了信息的流动、充斥了过时的信息、阻碍了真正的交流,或者对于很多人来说,另外还有太多的广告。 P2P就是把控制权重新还到用户手中去。人们通过P2P可以共享硬盘上的文件、目录甚至整个硬盘。这种能量是非常令人激动的,那些费心存储在自己的硬盘上的东西肯定是我们认为最有价值,所有人都共享了他们认为最有价值的东西,这将使互联网上信息的价值得到极大的提升。是不是有一种和WWW刚刚出现的时候同样的激动呢?有一点。

因为每个Peer都代表了其后的人,基于自组织的网上社区也正在显现。与门户站点从上而下建立社区的方式不同,人们将以自发的方式形成社区。

当人们加入P2P网络的时候,所有人都拥有了平等的机会,所有人都拥有了极容易地在网络上创造“内容”的机会。当然,真正在网络上创造或提供内容的人还是少数的,据统计Gnotella的用户中仅仅有2%向其他用户提供了内容,即使在比较活跃的Usenet张贴文章的用户也仅占所有用户的7%。但是,P2P第一次使得所有上网的人都拥有了平等的机会。

下面试图用三句话来揭示P2P的影响:

对等联网:是只读的网络的终结(Peer-to-peer is the end of the read-only Web)

对等联网:使你重新参与互联网(Peer-to-peer allows you to participate in the Internet again)

对等联网:使网络远离电视(Peer-to-peer steering the Internet away from TV)如上文所言,P2P不是一个新思想,从某些角度看它甚至是整个最初创建互联网的最基本的思想。我们不妨花时间作一点回顾。

互联网的发展于近现代的许多尖端科学技术的发展模式并无不同,即都是先在军事工业形成,再转到民用领域。互联网发源于至今看来也十分新颖的战略思想:为了避免敌人的毁灭性武器命中全国的军事指挥控制中心,应该怎么办?传统的方法是一方面想方设法尽可能地不让敌人知道中心的确切位置,另一方面提高中心的抵御打击的能力。但在当今的核武器年代,对方有着连一个星球都可以炸毁的核弹,再固若金汤的防御措施一旦受到攻击肯定马上化为乌有。而只要有机密存在,总有打探出机密的方法,所以靠保密中心所在位置的方法也不是长远之计。在这种情况下,美国的军事人员充分发挥逆向思维,想到既然不可能长期、有效地保护中心免受攻击,那么还不如根本不设中心!让每一个基地乃至每一台电脑都能独立运作,这么一来等于有了无数中心,敌人除非真的将这个星球炸了,否则其中一个基地或电脑受损,也不影响其他基地或电脑继续发挥作用。正是这种“非中心化”的思想成为形成互联网最基本的概念。 但是许多技术出现之后往往并不会完全按照原先的设计发展,服务器/客户机的架构逐渐变成了互联网的主流,浏览变成了人们在互联网上最主要的生存方式。互联网的普通用户似乎在慢慢的退化、和电视观众一样被动地浏览着大网站们创造的内容。人们在网络上的主要活动访问了在这么门户站点上,读新闻、参与讨论组、聊天。但是这使得设计的互联网的一个特性消失了——如果Yahoo因故中断服务如出现什么情况?这种假设不太容易看到,但是年初的黑客攻击各大网站造成的混乱似乎可以给我们一点联想的线索。

上面提到像Napster和即时讯息还是需要位于中心的服务器,那么Gnotella网站上的一句话可能表达了它们所推广的“纯粹”的P2P所包含的“非中心化”的理念:设计Gnotella是为了在核战中生存(Gnotella Is Designed to Survive Nuclear War)。它的网站上这样描述,纽约的用户受到攻击至多只会影响那个地区的部分用户,而其他地方的Gnotella用户还能正常的使用,这不正是互联网最初的理想吗?

(3)Napster带来的革命

Napster是去年当时由只有18岁的肖恩·范宁(Shawn Fanning)开发的,它提供服务允许音乐迷们交流MP3文件。它与先前也被推上被告席的提供免费音乐下载MP3.com的不同就是在Napster服务器没有一首歌曲,Napster提供了一个新的软件供音乐迷在自己的硬盘上共享歌曲文件,搜索其他用户共享的歌曲文件,并到其他也使用Napster服务的用户硬盘上去下载歌曲。Napster在短时间里吸引了5000万用户,最终,它被五大唱片商以侵犯版权推上被告席而成为世界的焦点。

可能从来没有一个行业象唱片业这样,生存会因为一个小小的软件而受到如此深重的威胁。对于Napster引起的版权问题有过很多的讨论,但是多花一些时间讨论还是值得的,因为这个案件决定了也决定了P2P文件共享这一分支的前途,也决定了未来如何处理互联网上的版权问题。

10月31日原告之一BMG公司和Napster达成和解协议。舆论认为这表明唱片业意识到通过数字方式发布音乐将是不可阻挡的潮流,消灭Napster也无法阻止其他模仿Napster的服务商出现。因此还不如与之合作改变Napster,将之变成在线音乐销售的渠道。现在的唱片工业面临的可能不是如何“像压碎一个鸡蛋”那样压碎,而是与之合作,将Napster的5000万用户变成自己的客户。也就是将Napster的模式变成“合法化的Napster”模式。唱片工业的困境是如何防止那些Napster的模仿者继续免费提供歌曲。

2000年2月12日,美国旧金山第九巡回上诉法院的三名法官就音乐网站Napster版权纠纷案作出裁决,认为它侵害了各大唱片公司的版权。但是三名法官并没有应唱片公司的要求,决定立即关闭网站,而是把最初的判决送回给低一级的地方法院。法官们说,这项裁决内容过于复杂,需作进一步澄清。但错综复杂的法律过程和长达58页的判决书反映了现在既缺乏与互联网相关的版权法,也缺乏相应的司法实践。

但是,不管Napster案的结果如何都不能改变Napster后面的技术和思想给互联网带来的影响。“魔鬼”已经钻出了魔瓶,而魔瓶也已经被打破了。对于唱片界来说,至少它们销售唱片的方式被彻底改变了。下一个可能是好莱坞的电影工业,压缩技术和宽带网络将使得人们会在网络上轻易地传输整部电影。

事实上合法化的网络上已经出现了许多试图推出“合法化的Napster”模式的公司,譬如由Napster的创办人之一创办的lightshare.com和Flycode.com。P2P对于唱片商来说的确有吸引力,如果它们能够从用户身上收费的话。对于利用诸如一个集中的站点提供收费的mp3音乐下载,用户每次从网站下载的时候,网站都必须向电信交流量费,而使用P2P则使得这部分费用不再存在了。因此唱片商获得更多的利润,用户也应该可以得到更便宜的音乐。
从某种意义上软件也好像预测到了大规模盗版和文件共享可能带来的影响,这主要归功于开放源码软件给软件业带来的“头脑风暴”。在亚洲和东欧,软件业已经在反对盗版上打了败仗。这也正是微软极力推广一种“软件注册模式”,把软件作为按月付费的服务出售,而不再是向过去那样出售容易复制和盗版的硬拷贝。
当然,对所谓“合法化的Napster”模式还是有很多质疑。P2P的这种文件共享功能似乎没有带来什么附加值,尽管这个过程可能是非常有趣的。从另一方面来说,这项技术可能被用来推动人们重新参与互联网、创造他们自己的内容,这也许是价值所在。所有的社区网站都有一个“梦想”,让用户互动来产生内容,但是由于由上而下创建的社区的最根本上的问题,这种梦想从来没有真正实现过。P2P或许可以改变这一点。

Napster创造的奇迹同时也是揭示了在互联网时代普通人也具有改变整个世界的能力。当肖恩·范宁在波士顿的东北大学校园开发Napster的时候,他只不过是想和他在维吉尼亚的朋友共享mp3歌曲文件。现在这个小软件改变了整个世界。

(4)p2p改变了什么?内容转移到“边缘”
在回顾了Napster了问题和困境之后,下面将看看P2P的更多激动人心的东西和消除围绕这个新词的种种误解,以及看看P2P的机会主要在哪儿。

P2P带来的一个变化就是改变了“内容”所在的位置,内容正在从“中心”走向“边缘”,也就是说内容将主要不是存在几个主要的服务器上,而是存在所有用户的个人电脑上。

Napster的成功使我们不得不去质疑流传已久的两个断言,“应用服务提供商(ASP)是未来趋势”和“个人电脑死了”。ASP的一个基本假设就是对于大多数客户来说购买和维护高性能的服务器的成本太高了,但是P2P使得每个人办公桌上的电脑都可以成为“服务器”。用户原来是用台式电脑准备好数据之后再把数据上载到服务器上去,而使用P2P将不再需要这个过程。“个人电脑死了”这个断言就是个人电脑将主要用来浏览互联网、字处理等,因此最简单的瘦客户机就可以满足需求。P2P使得个人电脑再一次成为“中心”。P2P使得个人电脑重新焕发活力、不再是被动的客户端,而成为具有服务器和客户端的特征的设备,个人电脑将重新成为互联网的中心。

互联网的存储模式将由现在的“内容位于中心”模式转变为“内容位于边缘”模式。从这个角度看P2P带来了几个改变:

首先,客户不再需要将文件上载到服务器,而只需要使用P2P将共享信息提供出去;

其次运行P2P的个人电脑不需要固定IP地址和永久的互联网连接,这使得那些拨号上网的用户也可以享受P2P带来的变革,这部分用户在所有用户中占有极大的比重;

最后,P2P完全改变过去控制互联网的客户机/服务器模式,消除客户机和服务器二者之间的差别。

上文对Napster所遭遇的法律问题有很多讨论,但是换个角度来阐述,盗版问题往往也正显示存在大量未能满足的需求。Napster的惊人成功(这里指吸引大量用户而不是获得利润)是一种难得的对P2P的概念上可行性的证明,揭示了P2P改变互联网的潜力。直通桌面的宽带网络逐渐成为现实、个人电脑越来越强大足以胜任“服务器”功能也从另外的方面确保P2P发挥其能量。

个人电脑取代位于中心的服务器成为内容的主要存储地将对互联网的几个主要发展方向有着意义深远的影响:这可能改变Windows和Linux几年的“战争”的局面,当“桌面”和服务器逐渐融合,微软可能会极力推广其基于Windows2000的Web服务和“内容处于边缘”(内容处于桌面)模式,从而可能破坏Linux在服务器市场上存在的基础。

提供免费个人主页服务的公司存在的一个理由就是目前互联网使得普通用户很难拥有自己的服务器放置自己的内容。可以预言类似Napster的服务将会出现供人们在自己的个人电脑上发布主页和内容。

WAP等移动服务协议目前还主要关注让人们去使用处于中心的商业服务如新闻、股票信息等。但更多的时候人们最需要的信息是那些在他们的个人电脑上的信息,P2P使这成为可能。人们可以通过无线联网P2P访问他们的个人电脑,这也就是一些公司所宣传的个人化P2P(Personal P2P)的“无线版本”。

当然,这也不是说使用P2P的个人电脑可以取代服务器,那些安全的备份和需要专家来不断更新的数据还将存在于位于中心的服务器上。 可以这样看待P2P带来的转变,“内容位于中心”模式较好的适应了互联网初期的情况,个人电脑性能太差因而需要有专门的服务器、带宽太窄使得个人电脑不得不退化到被动浏览。宽带互联网、更稳定的更高性能的个人电脑使得我们有理由预言下一个5年将是由“内容位于边缘”模式主导。

(5)重新解读P2P
每个具有划时代意义的创新出现的时候它往往可能被人们误读。P2P这次也不例外,Napster让人们开始关注P2P,但也使得许多人认为P2P就是歌曲交换、文件交换,甚至认为P2P和盗版有着必然的联系。可以说人们对P2P的理解是被误导的和不完全的。

自由软件(Free software)出现之初也面临着误读的困境,人们开始的时候将Free理解为免费的,从而认为自由软件是不可靠的、认为自由软件运动是激进的“反文化的”。事实上Free更多的应该指自由地探索想法、在软件中表达出来和共享软件。这一点对自由软件的鼓吹者们来说是自然而然的,但是需要有人去告诉商界、媒体和公众自由软件在经济上和逻辑上是可行的。当时著名出版人O’reilly组织了一次自由软件峰会重新定义自由软件,将自由软件改名为开放源码软件(open source software)。这一重新定义使得人们开始拨开误解的乌云,了解Free的本质。开放源码将人们从有缺陷的软件、锁定效应和传统的软件分发渠道中解脱出来。自由表示合作将可以跨越公司的边界、共享基础性的开发,使人们可以把注意力集中到高附加值的服务上去。 今年8月,O’Reilly又组织另一次峰会来帮助人们认识P2P的潜力和消除Napster、Gnotella造成的P2P是盗版技术的负面影响。另外,他认为目前P2P的状态类似于“盲人摸象”,P2P技术的领导者们每个人都看到了P2P这头“巨象”的一些特征。,如果他们能够有机会交流思想,P2P将会更快地发展。这次P2P峰会主要有三个目的:定义P2P,我们要从中的到什么以及为什么;描述P2P的机会,P2P能解决什么样的问题;形成一个提供给大众的关于P2P的信息,消除那些负面影响。

参与P2P峰会的有媒体不断报道的那些提供文件交换服务如Napster、Gnotella、Freenet的开发者,也有那些试图挖掘P2P分布计算能力的公司和组织如Popular Power、SETI@home、distributed.net等的开发者。后面的三家公司希望使用P2P技术集中那些联接在网络上的电脑的空闲的CPU时间片断、内存空间、硬盘空间来替代“超级计算机”。其它正在进行的P2P应用还有,IBM、微软、Ariba也在合作开展一个名为UDDI的项目以将B2B电子商务标准化;Eazel正在建立下一代的Linux桌面;Jabber已经开发了一种基于XML、开放的即时讯息标准,Jabber被认为是建立了未来使用P2P数据交换的标准;由Lotus Notes的开发者创建的Groove试图“帮助人们以全新的方式沟通”;英特尔也在推广它的P2P技术以帮助更有效地使用芯片的计算能力。

列这样一个名单有一点枯燥,尤其是对于那些对于具体细节没有太多兴趣的读者,但这又是必要的。因为这些描述可以让我们更全面的了解。

(6)尚未被了解的P2P
Napster是与设备相关的,用户连接到到由它创建的P2P网络上是为了获取Mp3歌曲文件。但是对于即时讯息这一类P2P应用来说是完全不同的,别人连接的目的是和另一个Peer交流,而不必管他使用的是电脑、手持电脑或者手机。P2P提供了在网络上与设备无关的实时交流的能力。

这种将把用户实时的连接起来的能力是P2P最令人感到激动的特性。事实上我们可以从AOL的AIM、国内Oicq受欢迎的程度认识到这个事实。

能够实时地寻找和联络需要的人是商业应用的基本要求,电话可以做到这一点,而在网络上最常用的E-mail并不能做到这一点。因此,即时讯息将不仅仅是一个有趣的服务,更多的它将是下一个最基本的互联网商业工具。即时讯息现在看起来可能成为诸如客户服务、供应链管理等商业应用的平台。开发了一个开放源码的基于XML和Java即时讯息服务的Jabber似乎正是创建了一个这样的平台。Jabber的开发者似乎刻意集中了互联网现有的所有激动人心的东西:P2P、Java、XML和开放源码。它是不是有这种潜力呢?我们最好拭目以待,但Jabber的模式至少要比Napster要清晰得多。

Negroponte在其《数字化生存》中曾经有一个著名的论述,“网络上的东西将比人要多”。P2P将使得这些“东西”之间的直接交流成为可能,网络上每个设备都是“活跃”的,而不是像过去那样有部分是非常活跃,而有的则被动的,有时候直接交流的那些设备可能都是某一个用户自己的,譬如说掌上电脑和台式电脑的数据同步是最好的例子。如果用户的掌上电脑上有些数据和内容是台式电脑上没有的,台式电脑也应该能够向掌上电脑要求获取那些信息,这应该跟我们通过Napster到其他用户那儿去搜索和下载mp3歌曲一样。

最重要的一点是,不是网络上的节点数目而是这些节点如何参与网络决定网络是否强大、是否有价值。怎样使得网络上几亿的人和更多的设备都活跃地参与呢?P2P正是一系列架构、技术、策略的开端,它使得互联网的这一理想开始变为现实。现在人们看到的和预言的都只是冰山露出的一个小角,更多的还在水下。

(7)P2P中的P是人(People)!
Dave Winner的论断P2P中的P是人(people)!这可能是我读到的关于P2P最深刻的解读之一。

事实上,我们所处的真实生活是P2P的环境,人们可以和其他人直接地的交流。信息技术将我们带到了网络空间,在网络空间我们仍然希望还能够按照原来的P2P方式交流沟通。尽管互联网本质上是支持对等交流模式,但是网络的发展给对等交流增加了许多障碍。

正如许多技术专家所指出的,动态IP地址、防火墙、代理服务器从技术上使得对等连接变得很困难。更不用说目前的网络主导模式已经发展成为服务器/客户端模式,人们在网络上只能被动的接受那些大公司诸如Yahoo!、ABCnews.com等提供的信息,交流是非常困难的。(当然,在现实生活中诸如空间、社会等级等也束缚了人们的对等交流。但是如果网络能够使我们看到对等交流的可能性,为什么不去追求?)

可以这样类比,互联网的出现和电话的发明是具有同样的意义的,但是互联网最开始的主要特征是非实时的,更类似于传真,而没有提供像电话那样实时交流,现在P2P的即时讯息可能使得互联网上的实时交流变得和Web页面、E-mail那样普遍和不可或缺。

对于所有的P2P应用来说,最先要做的就是恢复互联网曾经失去的对等联网能力。这也正是Napster从概念上最大的缺陷。(email是具有P2P交流的特征的,但email缺乏实时交流的能力,它类似与传真,但我们还需要“电话”的。)
从“人”的角度上将,P2P发展的要点并不是P2P网络架构是如何,而是P2P将人们在网络上连接起来了,人们可以在网络这个更迅疾的媒介上处理那些需要沟通的问题。这是最重要的。尽管到今天还有人在怀疑互联网作为零售商业和B2B媒介的有效性,但是互联网已经从根本上改变了我们的交流方式是不需要任何讨论的。过分的谈了“纯粹的”的、完全消除控制的P2P是毫无意义的。中心化或者非中心化都只是工具,都是为了创造出使人们可以更有效地沟通的工具。

人类在现实生活中的经验至今仍只有极少的部分被应用到网络上,如新闻、B2C、B2B。现在,人们最常使用的P2P被移植到了网络空间。P2P可能改变一些我们已经熟知的、习惯了的产品和服务,也会创造更多。

究竟会出现些什么?预言未来的最好办法是去创造。

2、p2p能做什么
P2P引导网络计算模式从集中式向分布式偏移,也就是说网络应用的核心从中央服务器向网络边缘的终端设备扩散:服务器到服务器、服务器到PC机、PC机到PC机,PC机到WAP手机……所有网络节点上的设备都可以建立P2P对话。这使人们在Internet上的共享行为被提到了一个更高的层次,使人们以更主动深刻的方式参与到网络中去,正如I2(第二代互联网)之父Doug. Van Houweling 在几个月前的中国之行时说到的:“下一代互联网民们将真正参与到网络中来,每个人都能为网络的资源和功能扩展作出自己的贡献。”

P2P给互联网的分布、共享精神带来了无限的遐想,有观点认为至少有100种应用能被开发出来,但从目前的应用来看,P2P的威力还主要体现在大范围的共享、搜索的优势上。在这方面主要引发了,或者是说更好的解决网络上四大类型的应用:对等计算、协同工作、搜索引擎、文件交换。

(1)对等计算
通过众多计算机来完成超级计算机的功能,一直是科学家梦寐以求的事情。采用P2P技术的对等计算,正是把网络中的众多计算机暂时不用的计算能力连结起来,使用积累的能力执行超级计算机的任务。任何需要大量数据处理的行业都可从对等计算中获利,如天气预报、动画制作、基因组的研究等,有了对等计算之后,就不再需要昂贵的超级计算机了。在硅谷现在有许多公司正在投入对等计算的开发,如Popular Power,Centrata,United Devices,Entropia等,并获得了巨大的风险资金。Intel也利用对等计算技术来设计其CPU,并为其节省极大的费用,同时对等计算的发展是以PC机资源的有效利用为根本出发点的,自然也极力受到Intel的极力推崇。从本质而言,对等计算就是网络上CPU资源的共享。

(2)协同工作
公司机构的日益分散,给员工和客户提供轻松、方便的消息和协作的工具,变得日益重要。网络的出现,使协同工作成为可能。但传统的WEB方式实现,给服务器带来了极大的负担,造成了昂贵的成本支出。P2P技术的出现,使得互联网上任意两台PC都可建立实时的联系,建立了这样一个安全、共享的虚拟空间,人们可以进行各种各样的活动,这些活动可以是同时进行,也可以交互进行。P2P技术可以帮助企业和关键客户,以及合作伙伴之间建立起一种安全的网上工作联系方式,因此基于P2P技术的协同工作也受到了极大的重视,Lotous公司的创始人奥奇更是获得了6000万美元的风险投资,来开发其协同工作产品Groove。

(3)搜索引擎
P2P技术的另一个优势是开发出强大的搜索工具。P2P技术使用户能够深度搜索文档,而且这种搜索无需通过Web服务器,也可以不受信息文档格式和宿主设备的限制,可达到传统目录式搜索引擎(只能搜索到20%-30%的网络资源)无可比拟的深度(理论上将包括网络上的所有开放的信息资源)。以P2P技术发展的另一先锋Gnutella进行的搜索为例:一台PC上的Gnutella软件可将用户的搜索请求同时发给网络上另外10台PC,如果搜索请求未得到满足,这10?/td>

㈦ B2B电商平台APP方案开发要多少钱

电商类的APP需要开发的功能是比较多的,而功能则决定了开发费用的问题,功能多,开发费用就高。
具体的开发方案可以看一下英唐众创的,其电商类的APP开发比较多,有成熟的方案和开发工程师,相对的开发时间变短成本也可以降低。

㈧ java 的电商系统的完整源码+文档

各大网站上都会有一些简单的实例的,注册开发去下载看看。

㈨ 谁有java图书管理系统 视频教程....发个地址

我们能针对此需求提供一套与需求相匹配的源代码(教学版,个人版,专业版,企业版)
为获取帮助,你需要提供合法的电子信箱地址。

您还可以直接应用Bai Hi联系我们, 或通过网络知道向我求助, 或使用网络知道发送短消息
或QQ:六五七幺五六幺五('幺'读 yao 一声)
有机会可以解决你的问题

ES:\
交易提醒:预付订金是诈骗
定制开发信息管理系统,B2B/B2C电子商务,企业/个人网站更有优惠

阅读全文

与javab2b源码相关的资料

热点内容
mstcam数控铣床编程如何串连 浏览:502
d4252用什么软件编程 浏览:35
大学生如何参与大数据 浏览:779
autocad3维教程 浏览:2
港澳台版本有什么区别 浏览:263
java四个月能学到什么 浏览:46
开发板和linux文件 浏览:202
appstore外国帐号怎么看预约游戏 浏览:137
有什么免费加速网站的cdn 浏览:781
哪个文件存在最安全 浏览:199
淘宝导航栏分割线代码 浏览:271
win10开不了机按f8没用 浏览:12
河南营销网站推广多少钱 浏览:135
华为畅享6手机文件管理 浏览:939
linux驱动环境 浏览:893
ae用什么打开文件 浏览:877
湖南岳阳大数据中心 浏览:710
DSP大数据公司 浏览:510
win10检测不到u盘启动 浏览:941
电脑文件怎么重命名文件 浏览:507

友情链接