Tomcat源代码阅读----源代码部署(1)

November 15, 2015

Tomcat源代码部署分为几个步骤 源代码下载 使用ant和build.xml进行编译 修改BuildPath,添加Jar包环境不报错为止 (1) 源代码下载的SVN路径为:http://svn.apache.org/repos/asf/tomcat/tc7.0.x/tags/TOMCAT_7_0_35 这边是使用的是Myeclipse下载的svn插件进行下载的。 http://svn.apache.org/repos/asf/tomcat/目录下还可以找到其他的版本的Tomcat。 (2) 下载之后需要进行对Tomcat工程使用ant进行编译,ant为Myeclipse的插件,build.properties.default修改成build.properties ,ant会按照build.properties内容进行下载依赖的包,然后根据build.xml进行打包编译。未与-source 1.6 一起设置引导类路径,在ant编译的时候可能会出现如下图的问题,这边需要工程的编译环境设置成1.6的JDK即可。 (3)修改BuildPath 增加SOURCE文件 增加Jar包 1.增加So

Java应用一般架构原理

November 15, 2015

当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现。 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不同语言之间的交互使用WebService,Http请求。WebService,即“Web 服务”,简写为 WS。从字面上理解,它其实就是“基于 Web 的服务”。而服务却是双方的,有服务需求方,就有服务提供方。服务提供方对外发布服务,服务需求方调用服务提供方所发布的服务。如果说得再专业一点,WS 其实就是建立在 HTTP 协议上实现异构系统通讯的工具。没错!WS 说白了还是基于 HTTP 协议的,也就是说,数据是通过 HTTP 进行传输的。最早我们是用CXF开发SOAP服务实现WS,后面我们是用REST服务实现WS(这个目前使用比较多,也最我用得最多的这一种)。基于CXF也可以开发REST服务,不过我们一般直接使用springMVC或者其他MVC框架实现REST服务。 但是在很多人的印象中Web service的话一般指十来年前IBM主导的基于XML的各种交互技术,现在除了一些公司在用之外用得人也很少了。广

遍历ArrayList时同时修改引发的问题

November 15, 2015

看见一篇博客,没有写完整,于是增补了一下: 博客原文:http://www.cnblogs.com/alipayhutu/archive/2012/08/11/2634073.html 注:黄色字体为我添的 CopyOnWriteArrayList,因何而存在? ArrayList的一个线程安全的变体,其所有可变操作(add、set 等)都是通过对底层数组进行一次新的复制来实现的,代价昂贵。 CopyOnWriteArrayList,是因”并发”而生。   【场景一】对于ArrayList,使用直接方式,一边遍历,一边删除,会报错。 // 删除/修改元素 for(String item : list){ list.remove(item); }     原因:foreach语法是通过Iterator来实现的,当遍历这个List的时候,会生成一个ArrayList.Itr对象,这个私有内部类实现了Iterator接口,也就是说上面这段代码与下面这段代码效果一样:   Iterator it = list.iterator() ;   while(it.hasNext())

Java Web开发介绍

November 15, 2015

简介 Java很好地支持web开发,在桌面上Eclipse RCP谈不上成功,JAVA是主要用在服务器端,和Python一样是极其重要的Web后台开发语言。 Java Web应用通常不直接在服务器上运行,而是在Web容器内。容器提供的运行时环境,提供JVM (Java Virtual Machine)运行本地Java应用。容器本身也运行在JVM。 通常Java的分为两个容器:Web容器和Java EE容器。典型的Web容器是Tomcat或Jetty。Web容器支持Java Servlet和JavaServer Page的执行。 Java EE容器支持更多的功能,例如,服务器负载的分布。 大部分现代的Java Web框架是基于servlet的。流行的Java Web框架有GWT,JavaServer Faces,Struts和Spring框架。这些Web框架通常需要至少需要Web容器。 Java Web应用程序是动态的资源(如Servlet,JavaServer页,Java类,jar)和静态资源(HTML页面和图片)的集合。 Java Web应用程序可以部署为WAR(Web ARchiv

spring注入静态成员变量提示invalid setter method

November 15, 2015

果然还是不够细心啊,被坑一晚上.. 一个极其简单的小程序,但是需要通过xml文件配置注入一个值,唯一的特别是要注入的属性是类中的静态成员变量.. 如下,然后自动生成get和set方法..坑就从此开始了... public class Food{ private static String desc; public static String getDesc(){ return desc; } public static void setDesc(String desc){ Food.desc = desc; } } 然后xml中如下配置: 然后启动就会报找不到set方法的错误...反复对比set方法的名字,无任何异常..然后一晚上就这样报废了... 最后发现自动生成的方法会带static修饰符,而spring的set方法不能

Java应用一般架构原理

November 15, 2015

当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现。 1. 不同系统不同语言之间的交互 现在我们常见的不同系统不同语言之间的交互使用WebService,Http请求。WebService,即“Web 服务”,简写为 WS。从字面上理解,它其实就是“基于 Web 的服务”。而服务却是双方的,有服务需求方,就有服务提供方。服务提供方对外发布服务,服务需求方调用服务提供方所发布的服务。如果说得再专业一点,WS 其实就是建立在 HTTP 协议上实现异构系统通讯的工具。没错!WS 说白了还是基于 HTTP 协议的,也就是说,数据是通过 HTTP 进行传输的。最早我们是用CXF开发SOAP服务实现WS,后面我们是用REST服务实现WS(这个目前使用比较多,也最我用得最多的这一种)。基于CXF也可以开发REST服务,不过我们一般直接使用springMVC或者其他MVC框架实现REST服务。 但是在很多人的印象中Web service的话一般指十来年前IBM主导的基于XML的各种交互技术,现在除了一些公司在用之外用得人也很少了。广

遍历ArrayList时同时修改引发的问题

November 15, 2015

看见一篇博客,没有写完整,于是增补了一下: 博客原文:http://www.cnblogs.com/alipayhutu/archive/2012/08/11/2634073.html 注:黄色字体为我添的 CopyOnWriteArrayList,因何而存在? ArrayList的一个线程安全的变体,其所有可变操作(add、set 等)都是通过对底层数组进行一次新的复制来实现的,代价昂贵。 CopyOnWriteArrayList,是因”并发”而生。   【场景一】对于ArrayList,使用直接方式,一边遍历,一边删除,会报错。 // 删除/修改元素 for(String item : list){ list.remove(item); }     原因:foreach语法是通过Iterator来实现的,当遍历这个List的时候,会生成一个ArrayList.Itr对象,这个私有内部类实现了Iterator接口,也就是说上面这段代码与下面这段代码效果一样:   Iterator it = list.iterator() ;   while(it.hasNext())

Java Web开发介绍

November 15, 2015

简介 Java很好地支持web开发,在桌面上Eclipse RCP谈不上成功,JAVA是主要用在服务器端,和Python一样是极其重要的Web后台开发语言。 Java Web应用通常不直接在服务器上运行,而是在Web容器内。容器提供的运行时环境,提供JVM (Java Virtual Machine)运行本地Java应用。容器本身也运行在JVM。 通常Java的分为两个容器:Web容器和Java EE容器。典型的Web容器是Tomcat或Jetty。Web容器支持Java Servlet和JavaServer Page的执行。 Java EE容器支持更多的功能,例如,服务器负载的分布。 大部分现代的Java Web框架是基于servlet的。流行的Java Web框架有GWT,JavaServer Faces,Struts和Spring框架。这些Web框架通常需要至少需要Web容器。 Java Web应用程序是动态的资源(如Servlet,JavaServer页,Java类,jar)和静态资源(HTML页面和图片)的集合。 Java Web应用程序可以部署为WAR(Web ARchiv

glassfish中新建数据源(创建数据库连接池)

November 15, 2015

1.浏览器输入:http://localhost:4848 登录glassfish域管理控制台,默认的用户名和密码是amin和adminadmin。(也可以通过NetBeans的服务选项卡--服务器--GlassFishServer--右键,查看域管理控制中心) 2.新建数据库连接池; 3.新建jdbc资源; 输入JNDI名称,选择刚创建的连接池。   当然如果你使用NetBeans的话,有一个简单的方法,在你通过数据库生成实体类的时候,ide会提示你一步步的创建数据源。   选中包--右键新建,通过数据库生成实体类--新建数据源--输入JNDI名称和新建数据库连接。   当然,数据库驱动要放到glassfish中的domain下。        

黑马程序员系列第四篇 集合(1)

November 15, 2015

ASP.Net+Android+IOS开发  、Net培训、期待与您交流!   (前言:本篇文章主要依据毕向东老师的课程视频整理而成,如要详细学习,请观看毕老师视频  百度网盘链接地址:http://pan.baidu.com/s/1o6mwDzO   目录:1、集合概述      2、Collection、Iterator接口     3、List接口与其ArrayList、LinkedList、Vector子类   4、Set接口及其HashSet、TreeSet子类   1、集合概述    下图为JDK中集合的框架设计图,我们主要使用的集合为黑色方框中的四种集合。 数组和集合的不同:集合中对象数量不定,而数组中对象数量必须是确定的。 ArrayList  底层数据存储结构是数组结构   特点:查询速度快,增删稍慢,线程不同步 LinkedList 底层数据结构是链表结构        特点:查询稍慢,增删快 Vector      底层是数组数据结构             特点:都很慢,线程同步,出现最早,已经被ArrayList替代了现在很少用 Set          集合