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          集合

修改ueditor1_4_3编辑器jsp版使上传图片支持水印

November 15, 2015

主要思路:ueditor编辑器上传图片以request请求发送到后台,后台接收通过流的形式进行处理,我们只要在后台拦截到图片文件并进行加水印处理就能够实现该功能。 一、 下载ueditor1_4_3编辑器jsp版,使其能够正常工作; 二、 修改源码   主要修改StorageManager.java文件          1) 添加将上传文件和水印文件合成带水印图片的代码 /** * 将上传文件和水印文件合成带水印图片 */ public static void setWaterMark(File targetFile, String rootPath, String path) throws IOException { //源文件 Image src = ImageIO.read(targetFile); int width = src.getWidth(null); int height = src.getHeight(null); BufferedImag

java按值传递理解

November 15, 2015

Java没有引用传递只有按值传递,没有引用传递只有按值传递,值传递。 通过下面代码解释: 1 public class Test { 2 public static void main(String[] args ){ 3 int var = 1 ; 4 f(var) ; 5 System.out.println(var) ; 6 } 7 public static void f(int newVar ){ 8 newVar = 2 ; 9 } 10 } 执行结果:  1 分析: 当执行 int var = 1 时,jvm在栈中开辟一块空间存放值---1,同时var变量指向值1所对应的内存空间,也就是var变量也有自己的内存空间,不过它的空间里存放的是值1所对应的内存地址。   当执行到第七行,要将var的值传递进方法f中时,jvm执行的操作是创建一个新的变量newVar,并将var里存放的值(也就是值1的内

java项目打成jar包时引用了第三方jar,此时我们该如何解决呢

November 15, 2015

Web项目做多了,反而对单纯的java项目陌生了,今天我们在开发项目的过程中,碰到一个这样的需求:需要将java项目放到linux系统上跑起来,当然这个javaSE项目是带main方法的。我们知道在IDE里写完JavaSE项目后,运行非常简单,只要本地java环境装好了,右击main方法---->run as-->java application就行,那么放到linux上呢?目前我们想到的有两种方法:一种是打成jar包放到服务器上,用命令java -jar ****.jar执行jar包即可。另外一种也是挺常见的将java项目放到服务器上,然后写一个shell脚本执行。关于方法二,还正在尝试之中。今天我要说的是方法一操作时需要注意的。 打jar包很简单,直接在myeclipse或者eclipse里导出jar包就行。具体做法是: 右击项目------->export---->选择JAR file: ------>next----->:指定导出的jar包具体存放位置即jar包名称: ------>next--->默认: ------>选择要执行的main方法: ----->finesh,这样

Java Web开发介绍

November 15, 2015

转自:http://www.cnblogs.com/pythontesting/p/4963021.html Java Web开发介绍 简介 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,JavaSe

什么是单例模式?

November 15, 2015

单例模式的定义:一个类就有一个实例对象,而且自行实例化,并向整个系统提供这个实例。 单例模式根据实例化对象的时机不同分为两种:饿汉式单例、懒汉式单例。 懒汉式单例: public class Singleon{ private static Singleon singleon = new Singleon(); private Singleon(){} pulic static Singleon getInstance(){ return singleon;    } } 饿汉式单例: public class Singleon{ private static Singleon singleon = null; private Singleon(){} public static synchronized Singleon getInstance(){ //加上synchronized 纯粹就是为了线程安全,这里我就不多说了,自己接触的不多,没有发言权