遍历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的内

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

数据库Blob数据类型转String

November 15, 2015

blob数据是存储大对象数据类型, 一般存放二进制的,所以才用字节存取。 首先判断blob数据是否为空,然后采用输入流读出数据,具体代码如下:   1 String content = null; 2 try { 3 4 if(image != null){ 5 InputStream is = image.getBinaryStream(); 6 byte[] b = new byte[is.available()]; 7 is.read(b, 0, b.length); 8 content = new String(b); 9 } 10 System.out.println(content); 11 } catch ( IOException e) { 12 e.printStackTrace(); 13 }  

JSP数据交互(二)和Servlet基础

November 15, 2015

01.Application原理与应用   01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量。只要服务启动,则application对象就会存在。   02.在一个应用中只有一个application,每一个用户都会共享这一个application对象。   03.通过统计网站访问次数来讲解application的用法   02.对象作用域   03.Cookie简介 解析:cookie是Web服务器保存在客户端的一系列文本信息,根据域名和端口号区分是否保存成一个文件,文件大小为4k。注意:http://localhost:8080/news 和http://localhost:8080/news/util会形成两个cookie文件。   1. 什么是cookie   浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的连接。因此当一个请求发送到WEB服务器时,无论其是否是第一次来访,服务器都会把它当作第一次来对待,这样的不好之处可想而知。为了弥补这个