首页 文章 精选 留言 我的

精选列表

搜索[搭建],共10000篇文章
优秀的个人博客,低调大师

java B2B2C源码电子商务平台 ---搭建Eureka注册中心

一创建一个SpringBoot工程,命名为eureka-server,并在pom.xml中引入必要的依赖,代码如下。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.7.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!--<dependency>--> <!--<groupId>org.springframework.boot</groupId>--> <!--<artifactId>spring-boot-starter-actuator</artifactId>--> <!--</dependency>--> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.SR5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> 二 通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用程序进行对话,只需要在SpringBoot应用中添加下面这个注解就能开启此功能。 @EnableEurekaServer @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class).web(true).run(args); } } 三在默认情况下,服务注册中也会将自己作为客户端来尝试注册它自己,所以需要禁用它的客户端行为。 application.properties中增加如下配置。 spring.application.name=eureka-server server.port=1111 eureka.instance.hostname=localhost # 关闭保护机制 #eureka.server.enable-self-preservation=false eureka.client.register-with-eureka=false eureka.client.fetch-registry=false eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ logging.file=${spring.application.name}.log 说明:eureka.client.register-with-eureka:由于该应用为注册中心,所以设置为false,代表不向注册中心注册自己。eureka.client.fetch-registry:由于注册中心的职责就是维护服务实例,它并不需要去检索服务,所以也设置为false。整体代码结构如下:资料和源码来源

优秀的个人博客,低调大师

使用.NET Core搭建分布式音频效果处理服务(七)使用Docker压榨性能极限

Docker相信很多朋友都使用过,做微服务比虚拟机还好用。 需要安装的一些东西 ffmpeg: docker pull ffmpeg dotnet: docker pull dotnet 默认全是latest最新即可,具体怎么配置网上搜索一下即可。 调用用REST? 还是用RPC? 微服务之间的接口调用通常包含两个部分,序列化和通信协议。常见的序列化协议包括json、xml、bytes等;通信比较流行的是http、soap、websockect,RPC通常基于TCP实现,常用框架例如dubbo,netty、thrift。 REST:严格意义上说接口很规范,操作对象即为资源,对资源的四种操作(post、get、put、delete),并且参数都放在URL上。 RPC:即我们常说的远程过程调用,就是像调用本地方法一样调用远程方法,通信协议大多采用二进制方式。 一般来说,对内选择rpc,因为他是直接基于TCP/IP协议通讯,性能要好很多。对外选择REST,因为他是更规范的、更标准的、更通用的、更简单的。 但是对于追求较高性能的RPC,会消耗额外很多成本,因此有时候对内一般也采用REST。 因此,笔者为了偷懒o(∩_∩)o ,在这个项目中选择REST,而抛弃RPC那臃肿的调用方式。 发布你的应用 dotnet 已经完全可以跨平台,但是如果直接用bin下面将文件夹拷贝到指定的地方,那么你将得到无数抓狂的错误,这是因为netcore和 net framewor本身的不同而造成,前者提供的是基础平台、让使用者自行去开发和扩展相应模块、且开源,而后者是所有东西都已经为你打包到他的集合中去了,你只管调用NET系统根目录中相应的库即可。 比如你需要发布到linux平台,进入你的项目主目录。执行: dotnet publish -r linux-x64 注意:从dotnet core 2.1开始,发布的时候已经不再需要先还原源码包(dotnet restore)。 进入到publish文件夹(一般在bin下),你会发现多了一些runtime库和一些你根本就没引用的库,这样才能有效的在其他操作系统上直接运行。 运行你的应用 你可以通过主机docker命令并附加子命令来运行docker内的dotnet程序,例如这样: docker run -dit \ -p 50532:80 \ -v /home/dotnet/Service:/wwwroot \ -w /wwwroot \ --restart always \ --name dotnet_service \ 6d25f57ea9d6 \ dotnet Service.Web.Api.dll -p:内外端口映射 -v:内外路径映射 -w:工作目录 6d25f....:你的dotnet镜像名称。 但笔者启动的程序需要附带大量的参数,而且不喜欢这样通过docker宿主进行命令输入,启动中有没有报错不能及时反馈(docker启动镜像返回的是一组hash代码,不会返回程序的的任何启动信息,需要通过docker log查阅),这样就变成如下操作: 进入在docker中的dotnet容器(成功运行镜像后都会成为一个容器),找到与你项目相关的主程序集文件,例如笔者是Service.Web.Api.dll,执行dotnet Service.Web.Api.dll(当然你也可以附带一大堆的启动参数,例如笔者这样)便可以运行这个项目。 dotnet Service.Web.Api.dll --ASPNETCORE_ENVIRONMENT=Development --ASPNETCORE_URLS=http://localhost:5052 --USE_CONTENTS_DIRECTORY=/home/netcore.MicroService/src/Service.Web.Api 小技巧:linux上面SSH相信大家有耳熟能详,但是一旦关闭控制台,运行的后台也将随之关闭,我们可以通过安装screen建立一个虚拟子屏幕,以保证shell程序在后台能一直运行下去。 保存你的netcore容器到镜像 如果我们需要在一台服务器上面建几十个docker容器,每一个都像上面那样进行一步一步的手动输入,那不是要崩溃... 我们保存一个已经在运行的容器,修改他子程序的运行参数,例如修改映射端口号,就可以实现快速的多个相同镜像的目的。使用命令: docker commit c16378f943fe service_media c1637...:这是笔者这边已经在运行的容器实例。 接下来再执行“运行你的应用”中的命令,将外部映射端口改成你想要的端口号,不断的重复这个操作,即可在同一台服务器上运行多个实例。 为何要选择docker进行实例运行 有的朋友也许不明白为何要这样做重复的操作,直接用dotnet自带的宿主,复制多条相同的命令,修改端口号一样也能达到如上的需求。 是的,这样的确也可以在同一台服务器上运行多个主机宿主实例,但是,他们并没有隔离。 对,就是这个词语----隔离: 说到这个词语可以牵涉一堆专业术语,而笔者又不想太多去复制太官方的东西,喜欢用白话文介绍自己所理解的内容。 当所有的子程序都运行在主机(非docker)下,内存分配,IO读取,系统底层调用等等一些处理,都会交给主机操作系统执行,这样会存在一定的风险。而docker虽然运行在主机之上,可他却有一套自己的底层进行处理,这样带来第一层隔离,其次,运行在docker容器内的程序,容器本身也是一个操作系统,不外乎是被建立镜像的时候将操作系统进行了大范围的瘦身,只保留该TAG需要的LIB就行,这样又做了一层隔离。 具体详细的隔离架构,朋友们可网上搜一搜,很多的。 运行多个docker dotnet core镜像 上面噼里啪啦的说了一大堆,其实就是一张图片就解释的事情: 笔者用了三台服务器做处理服务,每台上面运行相同的docker实例32个,总共3*32=96个实例(全傻瓜式的水平扩展),通过客户端模拟100个请求,得到结论如下: 反而比单机模拟6台服务器性能降低了3%-6%,但是: 1:单机一次请求是8个,而在该系统测试中,一次请求是100个。 2:单次时间变长,是因为服务器的U比本地测试的U的主频低,但是核心却是本地U的4倍。 这样一来,其实整体性能会随着服务器的数量的添加而增加,根据业务需求而定吧,就说目前某度云的视频转换最高请求也就是几千左右,如果真有那个量级,傻瓜式的增加服务器就行了。 本系列完,感谢阅读

优秀的个人博客,低调大师

基于蚂蚁金服「如何管理好10万行代码」搭建了 Vue 项目架构

此文是对蚂蚁金服文章的解读,所以要看懂此文一定要先去看原文:如何管理好10万行代码的前端单页面应用。 当时看到蚂蚁金服这篇文章有点茅塞顿开,只不过他们是基于 React 技术栈开发的,但是架构是一种思想,不区分语言不区分框架的,所以我相信这套架构一定可以应用到 Vue 项目中。废话不多说,直接进入正文。 同一“页面”内的模块再划分 这里意思是每个页面划分为 MVC 结构。那么如何用代码提现 MVC 结构呢。对于 Vue 项目中,难点在于 MC 两层。最后小组讨论用 Vuex 来架构 MC 两层,如下图所示。 领域模型 领域模型是指可跨模块复用的公共数据,所以我们也用 Vuex 来架构它,存放目录如下。 视图型组件和容器型组件 这一点要在 Vue 中实现其实也很好做,请看这篇文章。但是我们这边基于业务考虑,暂时觉得没必要弄得这么细,所以通用业务组件这一块,在我们 Vue 项目架构就没采用视图和容器这种组合方式了。 跨模块通信 为了保证模块的纯粹性,所以跨模块通信采用中介者模式来解耦。我们建立了一个 pageTalk 目录用中介者模式来处理跨模块通信。 总结 以上便是我们基于蚂蚁这套架构实现了 Vue 架构版。此套架构实现仅为我方团队的理解,不能作为标准,但可以为大家提供参考价值。 作者:深圳人人聚财前端团队 链接:https://juejin.im/post/5b0d0b556fb9a00a284982aa 来源:掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

优秀的个人博客,低调大师

北京Workshop准备条件:《云数据·大计算:快速搭建互联网在线运营分析平台》

实验背景介绍 了解更多2017云栖大会·北京峰会 TechInsight & Workshop. 本手册为云栖大会Workshop之《云计算·大数据:海量日志数据分析与应用》场的前提准备条件所需。主要为保障各位学员在workshop当天能够顺畅进行动手实操,那么本场需要各位学员再参加之前确保自己云账号已免费开通表格存储TableStore、大数据计算服务MaxCompute、DataWorks和Quick BI。 实验涉及大数据产品 表格存储 TableStore 大数据计算服务 MaxCompute 数据工场 DataWorks 智能分析套件Quick BI 其中表格存储TableStore、大数据计算服务MaxCompute的服务Region都选择华北2. 实验环境准备 必备条件:首先需要确保自己有阿里云云账号并已实名认证。详细点击

优秀的个人博客,低调大师

ClouderManger搭建大数据集群时ERROR 2003 (HY000): Can't connect to MySQL server...

root@ubuntucmbigdata1:~# mysql -uhive -hubuntucmbigdata1 -phive_password ERROR 2003 (HY000): Can't connect to MySQL server on 'ubuntucmbigdata1' (111) root@ubuntucmbigdata1:~# mysql -uhive -hlocalhost -phive_password Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 58 Server version: 5.5.55-0ubuntu0.14.04.1 (Ubuntu) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit; Bye 解决办法 若是centos系统,则是可以直接 [root@cmbigdata1 ~]# yum install mysql-connector-java Is this ok [y/N]: y 就好了。 但是,在ubuntu系统里, root@ubuntucmbigdata1:/home/bigdata# apt-get install libmysql-java 则会失败。 解决办法1 root@ubuntucmbigdata1:~# sudo /etc/init.d/mysql start 查看你的mysql服务启动没。 解决办法2 root@ubuntucmbigdata1:/usr/share/java# pwd /usr/share/java root@ubuntucmbigdata1:/usr/share/java# ls gettext.jar java_defaults.mk java_uno.jar juh-4.2.8.jar juh.jar jurt-4.2.8.jar jurt.jar libintl.jar mysql-connector-java-5.1.28.jar mysql-connector-java.jar mysql.jar ridl-4.2.8.jar ridl.jar unoloader.jar root@ubuntucmbigdata1:/usr/share/java# sudo cp /usr/share/java/mysql-connector-java-5.1.28.jar /var/lib/oozie root@ubuntucmbigdata1:/usr/share/java# cd /var/lib//oozie/ root@ubuntucmbigdata1:/var/lib/oozie# ls examples.desktop mysql-connector-java-5.1.28.jar root@ubuntucmbigdata1:/var/lib/oozie# sudo cp/usr/share/java/mysql-connector-java-5.1.28.jar/var/lib/oozie bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib$ pwd /opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib$ ls avro debug hadoop-hdfs hadoop-yarn hive-hcatalog kite libImpalaUdf-retail.a libzookeeper_mt.so.2 libzookeeper_st.so mahout search sqoop zookeeper-native bigtop-tomcat flume-ng hadoop-httpfs hbase hue libhdfs.so libzookeeper_mt.a libzookeeper_mt.so.2.0.0 libzookeeper_st.so.2 oozie sentry sqoop2 bigtop-utils hadoop hadoop-kms hbase-solr impala libhdfs.so.0.0.0 libzookeeper_mt.la libzookeeper_st.a libzookeeper_st.so.2.0.0 parquet solr whirr crunch hadoop-0.20-mapreduce hadoop-mapreduce hive impala-shell libImpalaUdf-debug.a libzookeeper_mt.so libzookeeper_st.la llama pig spark zookeeper bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib$ cd hive bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive$ ls bin cloudera conf lib LICENSE NOTICE scripts sentry bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive$ cd lib/ bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib$ ls accumulo-core-1.6.0.jar commons-compress-1.4.1.jar hbase-client.jar hive-jdbc-1.1.0-cdh5.6.0.jar jackson-databind-2.2.2.jar metrics-jvm-3.0.2.jar accumulo-fate-1.6.0.jar commons-configuration-1.6.jar hbase-common.jar hive-jdbc-1.1.0-cdh5.6.0-standalone.jar jackson-jaxrs-1.9.2.jar opencsv-2.3.jar accumulo-start-1.6.0.jar commons-dbcp-1.4.jar hbase-hadoop2-compat.jar hive-jdbc.jar jackson-xc-1.9.2.jar oro-2.0.8.jar accumulo-trace-1.6.0.jar commons-digester-1.8.jar hbase-hadoop-compat.jar hive-jdbc-standalone.jar janino-2.7.6.jar paranamer-2.3.jar activation-1.1.jar commons-httpclient-3.0.1.jar hbase-protocol.jar hive-metastore-1.1.0-cdh5.6.0.jar jcommander-1.32.jar parquet-hadoop-bundle.jar ant-1.9.1.jar commons-io-2.4.jar hbase-server.jar hive-metastore.jar jdo-api-3.0.1.jar pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar ant-launcher-1.9.1.jar commons-lang-2.6.jar high-scale-lib-1.1.1.jar hive-serde-1.1.0-cdh5.6.0.jar jersey-server-1.14.jar php antlr-2.7.7.jar commons-logging-1.1.3.jar hive-accumulo-handler-1.1.0-cdh5.6.0.jar hive-serde.jar jersey-servlet-1.14.jar plexus-utils-1.5.6.jar antlr-runtime-3.4.jar commons-math-2.1.jar hive-accumulo-handler.jar hive-service-1.1.0-cdh5.6.0.jar jetty-all-7.6.0.v20120127.jar py apache-curator-2.6.0.pom commons-pool-1.5.4.jar hive-ant-1.1.0-cdh5.6.0.jar hive-service.jar jetty-all-server-7.6.0.v20120127.jar regexp-1.3.jar apache-log4j-extras-1.2.17.jar commons-vfs2-2.0.jar hive-ant.jar hive-shims-0.23-1.1.0-cdh5.6.0.jar jline-2.12.jar servlet-api-2.5.jar asm-3.2.jar curator-client-2.6.0.jar hive-beeline-1.1.0-cdh5.6.0.jar hive-shims-0.23.jar jpam-1.1.jar snappy-java-1.0.4.1.jar asm-commons-3.1.jar curator-framework-2.6.0.jar hive-beeline.jar hive-shims-1.1.0-cdh5.6.0.jar jsr305-3.0.0.jar ST4-4.0.4.jar asm-tree-3.1.jar datanucleus-api-jdo-3.2.6.jar hive-cli-1.1.0-cdh5.6.0.jar hive-shims-common-1.1.0-cdh5.6.0.jar jta-1.1.jar stax-api-1.0.1.jar avro.jar datanucleus-core-3.2.10.jar hive-cli.jar hive-shims-common.jar junit-4.11.jar stringtemplate-3.2.1.jar bonecp-0.8.0.RELEASE.jar datanucleus-rdbms-3.2.9.jar hive-common-1.1.0-cdh5.6.0.jar hive-shims.jar libfb303-0.9.2.jar super-csv-2.2.0.jar calcite-avatica-1.0.0-incubating.jar derby-10.11.1.1.jar hive-common.jar hive-shims-scheduler-1.1.0-cdh5.6.0.jar libthrift-0.9.2.jar tempus-fugit-1.1.jar calcite-core-1.0.0-incubating.jar eigenbase-properties-1.1.4.jar hive-contrib-1.1.0-cdh5.6.0.jar hive-shims-scheduler.jar log4j-1.2.16.jar velocity-1.5.jar calcite-linq4j-1.0.0-incubating.jar geronimo-annotation_1.0_spec-1.1.1.jar hive-contrib.jar hive-testutils-1.1.0-cdh5.6.0.jar logredactor-1.0.3.jar xz-1.0.jar commons-beanutils-1.7.0.jar geronimo-jaspic_1.0_spec-1.0.jar hive-exec-1.1.0-cdh5.6.0.jar hive-testutils.jar mail-1.4.1.jar zookeeper.jar commons-beanutils-core-1.8.0.jar geronimo-jta_1.1_spec-1.1.1.jar hive-exec.jar htrace-core.jar maven-scm-api-1.4.jar commons-cli-1.2.jar groovy-all-2.4.4.jar hive-hbase-handler-1.1.0-cdh5.6.0.jar httpclient-4.2.5.jar maven-scm-provider-svn-commons-1.4.jar commons-codec-1.4.jar gson-2.2.4.jar hive-hbase-handler.jar httpcore-4.2.5.jar maven-scm-provider-svnexe-1.4.jar commons-collections-3.2.2.jar guava-14.0.1.jar hive-hwi-1.1.0-cdh5.6.0.jar jackson-annotations-2.2.2.jar metrics-core-3.0.2.jar commons-compiler-2.7.6.jar hamcrest-core-1.1.jar hive-hwi.jar jackson-core-2.2.2.jar metrics-json-3.0.2.jar bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib$ cp /usr/share/java/mysql-connector-java-5.1.28.jar . cp: cannot create regular file ‘./mysql-connector-java-5.1.28.jar’: Permission denied bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib$ sudo cp /usr/share/java/mysql-connector-java-5.1.28.jar . [sudo] password for bigdata: bigdata@ubuntucmbigdata1:/opt/cloudera/parcels/CDH-5.6.0-1.cdh5.6.0.p0.45/lib/hive/lib$ ls accumulo-core-1.6.0.jar commons-compress-1.4.1.jar hbase-client.jar hive-jdbc-1.1.0-cdh5.6.0.jar jackson-databind-2.2.2.jar metrics-jvm-3.0.2.jar accumulo-fate-1.6.0.jar commons-configuration-1.6.jar hbase-common.jar hive-jdbc-1.1.0-cdh5.6.0-standalone.jar jackson-jaxrs-1.9.2.jar mysql-connector-java-5.1.28.jar accumulo-start-1.6.0.jar commons-dbcp-1.4.jar hbase-hadoop2-compat.jar hive-jdbc.jar jackson-xc-1.9.2.jar opencsv-2.3.jar root@ubuntucmbigdata1:~# mysql -uhive -hubuntucmbigdata1 -phive_password ERROR 2003 (HY000): Can't connect to MySQL server on 'ubuntucmbigdata1' (111) root@ubuntucmbigdata1:~# mysql -uhive -hlocalhost -phive_password Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 58 Server version: 5.5.55-0ubuntu0.14.04.1 (Ubuntu) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> exit; 断定不是授权的问题。 #bind-address = 127.0.0.1 原文地址 原文地址:http://stackoverflow.com/questions/1420839/cant-connect-to-mysql-server-error-111 成功! 本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/7086500.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

5分钟搭建网站实时分析:Grafana+日志服务实战

阿里云日志服务是针对日志类数据一站式服务,用户只需要将精力集中在分析上,过程中数据采集、对接各种存储计算、数据索引和查询等琐碎工作等都可以交给服务。2017年9月日志服务加强日志实时分析功能(LogSearch/Analytics),可以使用查询+SQL92语法对日志进行实时分析。 在结果分析可视化上,除了使用自带Dashboard外,还支持DataV、Grafana、Tableua、QuickBI等对接方式。本文主要通过一个例子,演示如何通过日志服务对Nginx日志进行分析与可视化。 演示:线上Demo, 配置视频 整体架构 日志从收集到分析的架构如下图: 主要分3个步骤: 数据采集,参考文档 索引设置 与控制台查询,参考索引设置与可视化,或最佳实践中网站日志分析案例 安装Grafana插件,将实时查询SQL转化为视图 我们主要演示步骤3,在做完

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册