Java基础
文章平均质量分 75
michael_daiyuntao
程序员
展开
-
Struts1线程问题
Struts1线程问题Struts1是单例模式,所有的请求共用一个实例,线程是不安全的,所有的Action请求只有一个Action对象处理,因此尽量不要在Action中定义实例变量(或者使用synchronized进行同步),在execute方法中使用局部变量是最简单的保证线程安全的办法也可以使用LocalThread来定义属性Struts2线程问题Struts2是线程转载 2013-12-16 11:29:38 · 673 阅读 · 0 评论 -
线程的中断阻塞与控制
// 中断阻塞// 当线程Test14处于阻塞状态时,如果定时器线程调用Test14线程的interrupt()方法,那么线程Test14会收到一个InterruptedException,并退出阻塞状态,开始进行异常处理// 线程控制// 当线程执行完run方法后,自动终止运行,Thread类中也提供了一些控制线程的方法,start启动,suspend使线程暂停,但不释放对象原创 2014-04-07 00:05:32 · 908 阅读 · 0 评论 -
Java线程组与线程未捕获的异常
// 以编程的方式控制线程,在实际编程中,一般是在受控制的线程中定义一个标志变量,其他线程通过改变标志变量的值,来控制线程的暂停// 恢复运行及自然终止,以下Test15类就是一个可以被控制的线程,状态包括 SUSP 暂停, STOP 终止,RUN 运行// Test15类继承于ControlledThread类,因此Test15类是受控制的线程,在Test15类的run方法的while循原创 2014-04-07 00:07:41 · 880 阅读 · 0 评论 -
Java线程ThreadLocal
// ThreadLocal类:这个类可用来存放线程的局部变量,每个线程都有单独的局部变量,彼此之间不会共享// 这个类包括三个方法:get() 返回当前线程的局部变量, initialValue() 返回当前线程的局部变量的初始值// set(T value)设置当前线程的局部变量// initialValue方法是一个延迟调用方法,当线程第一次调用ThreadLocal对象的get原创 2014-04-07 00:09:43 · 630 阅读 · 0 评论 -
Java I/O流的认识
// java I/O系统// 程序主要是操作数据,在运行时,这些数据都必须位于内存中,并且属于特定的类型,程序才能操纵他们,// 介绍如何从数据源中读取数据以供程序处理,以及如何把程序处理后的数据写到数据目的地中,数据目的地也称为数据汇// 在java中,把一组有序的数据序列称为流,根据操作的类型,可以把流分为输入流和输出流两种// 数据源包括文件,内存,键盘,数据汇包括文件,内原创 2014-04-07 00:11:56 · 674 阅读 · 0 评论 -
Java Reader/Write的概述
// Reader/Write概述:// inputStream和OutputStream类处理的是字节流,也就是数据最小单元是一个字节,它包括8个二进制位,// 很多时候都要在文件中存放采用特定字符编码的字符,为了便于读取采用各种字符编码的字符,java.io包中提供// 了Reader/Writer类,他们分别表示字符输入流和字符输出流// 在处理字符流时,最重要的问题是进行字原创 2014-04-07 00:13:52 · 971 阅读 · 0 评论 -
Java标准I/O的概念
// 当程序读写文件时,在读写完毕后,就会及时关闭输入流和输出流,这些输入流和输出流对象的// 生命周期是短暂的,不会存在于程序运行的整个生命周期中,对于某些应用程序,需要在程序运行// 的整个生命周期中,从同一个数据源读入数据,或向同一个数据汇输出数据,最常见的就是一些日志// 信息,以便用户能跟踪程序的运行状态// 在JDK的java.lang.System类中,提供了三个静态原创 2014-04-07 00:15:50 · 636 阅读 · 0 评论 -
Java 新I/O类库
// 新I/O类库// 新的I/O类库,他们位于java.nio包中,其目的在于提高I/O操作的效率,nio是new io的缩写,包中引入4个关键的数据类型// Buffer:缓冲区,临时存放输入或输出数据// Charset:具有把Unicode字符编码转换为其他字符编码,以及把其他字符编码转换为Unicode字符编码的功能// Channel:数据传输通道,能够把Buffer中原创 2014-04-07 00:17:28 · 668 阅读 · 0 评论 -
Java字符编码转换与文件加锁
// 字符编码转换// ByteBuffer中存放了表示Unicode字符编码的字节,那么asCharBuffer()方法会返回包含正确字符的CharBuffer,否则,asCharBuffer()方法返回的CharBuffer// 会包含乱码,此时应该利用Charset类来进行Unicode字符编码与其他类型字符编码的转换// 缓冲区视图// ByteBuffer类提供了原创 2014-04-07 00:19:33 · 852 阅读 · 0 评论 -
Java对象的序列化和反序列化
// 对象的序列化和反序列化// 对象的序列化是指把对象写到一个输出流中,对象的反序列化是指从一个输入流中读取一个对象,java语言要求实现Serializable接口的类才能被序列或反序列// JDK类库中如String,包装类,Date类都实现了这个接口// 执行步骤:// 1 创建一个对象的输出流,他可以包装一个其他类型的输出流,例如文件输出流,2 通过对象输出流的write原创 2014-04-07 00:22:20 · 613 阅读 · 0 评论 -
SLF4J LogBack
SLF4J LogBack初步认识Commons-Logging + Log4J一直是Java日志的经典组合,不过后来由于Commos Logging中经常在服务器上遇到类加载ClassLoader问题,还有就logger.isDebugEnabled()的问题,后来就有了SLF4J来取代Commons Logging,并且由于Log4J的性能问题,就使用了LogBack取代了Log4J.转载 2014-03-04 19:56:41 · 1266 阅读 · 0 评论 -
SVN使用
创建tagssvn copy https://192.168.1.112:8443/svn/TAIHAI/trunk https://192.168.1.112:8443/svn/TAIHAI/tags/release-1.0 -m "release-1.0"创建branchessvn copy https://192.168.1.112:8443/svn/TAIHAI/trunk原创 2014-04-07 11:42:21 · 879 阅读 · 0 评论 -
Java 异常
// 异常机制,通过把各种不同类型的异常情况进行分类,把异常情况表示成异常类,可以充分发挥类的可扩展性和可重用性// 并且将异常流程的代码和正常流程的代码分离,提高程序的可读性,灵活的处理异常,如果当前有能力处理异常,就捕获// 否则只需要抛出异常,由方法调用者来处理它// java虚拟机的方法调用栈,每个线程都有一个独立的方法调用栈,对于java应用程序的主线程,堆栈底部是程序的入口原创 2014-04-06 23:41:54 · 495 阅读 · 0 评论 -
RPC,RMI,CORBA,DCOM,SOAP,JMS及JMS的实现(通讯)
RMI 和 RPC均可以均提供远程方法访问的基础通信和参数引用要求的串行化机制,RPC和RMI之间的一个重要差别是RPC用快速而不够可靠的UDP协议,RMI用低速而可靠的TCP/IP协议。另外 RMI 调用远程对象方法,允许方法返回 Java 对象以及基本数据类型。而 RPC 不支持对象的概念,传送到 RPC 服务的消息由外部数据表示 (External Data Representati原创 2015-06-23 10:23:24 · 987 阅读 · 0 评论 -
OSGI的含义
OSGI的定义为:The Dynamic Module System For Java,主要责任就是为了让开发者能够建立动态化,模块化的java系统使用OSGI后,应用就可以像搭积木一样完成搭建,例如对于一个正在运行的系统,其中一个模块使用到了日志服务,但是目前系统中没有提供日志服务的模块,就可以直接从网上下载实现了日志服务API的模块,然后动态的将此模块进行安装,其他要使用日志服务的原创 2015-07-02 15:01:43 · 646 阅读 · 0 评论 -
Java线程通信
// 线程通信// 不同的线程执行不同的任务,如果这些任务有某种联系,线程之间必须能够通信,协调完成工作,例如生产者和消费者共同操作堆栈// 当堆栈为空时,消费者无法取出产品,应该通知生产者向堆栈中加入商品,当堆栈已满时,生产者无法继续加入产品,应该先通知消费者从堆栈中取出商品// Object类中提供了两个用于线程通信的方法:// wait()执行时释放对象的锁,java虚拟机把原创 2014-04-07 00:04:14 · 626 阅读 · 0 评论 -
Java线程死锁的概念
//死锁的概念:当一个线程等待由另一个线程持有的锁,而后者正在等待已被第一个线程持有的锁时,就会发生死锁,java虚拟机不监测也不试图避免这种情况,因此保证不会发生死锁就成了程序员的责任//从以下这个例子中之所以导致死锁,是由于两个线程都要访问counter1和counter2这个两个public class Test12 extends Thread{ private Counter co原创 2014-04-07 00:03:04 · 788 阅读 · 0 评论 -
Java线程同步于并发
// 线程同步的特征// 1,如果一个同步代码块和非同步代码块同时操作共享资源,仍然会造成对共享资源的竞争,因为一个线程执行一个对象的同步代码块时,其他线程仍然可以执行对象的非同步代码块// 所谓线程之前的保持同步,是指不同的线程在执行同一个对象的同步代码块时,因为要获得这个对象的锁而相互牵制// 2.每个对象都有唯一的同步锁// 3.在静态方法前面也可以使用synchronize原创 2014-04-07 00:01:40 · 572 阅读 · 0 评论 -
版本控制工具Subversion
Subversion是Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录Slik-Subversion-1.8.5-x64.msi安装好之后先建立版本库:svnadmin create D:\svn\svn-repos,此时就会在此目录下创建一个版本库也可以在目录下右键TortoiseSVN->CreateRepositoryhere...“转载 2013-12-23 01:04:54 · 896 阅读 · 0 评论 -
PermGen space(内存溢出)
For Windows (Catalina.bat)set JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"For Unix (Catalina.sh)export JAVA_OPTS="-Xms1024m -X转载 2013-12-26 14:56:06 · 738 阅读 · 0 评论 -
Struts1 工作流程
Struts1 工作原理及过程:1. 初始化Struts1框架的总控制器ActionServlet,ActionServlet抽象类继承了GenericServlet,这个类继承下来的Service()方法外还提供了很多方法:doGet doPost 从指定URL中取得数据, doHead获取HTTP header的信息,doPut主要用来向服务器端上传文件(与使用FTP的方法类似),d转载 2014-02-24 13:18:33 · 736 阅读 · 0 评论 -
LOG4J COMMON-LOGGING 简单认识
Common-logging:这个包中提供了一个LOG接口,只要实现了这个接口,他就是一个名副其实的LOGGER组件,因此Log4JLogger类实现了这个接口,还有类似jdk的sun logger(Jdk14Logger)也实现了这个LOG接口,而LogFactory 是一个专为提供 Log 的工厂(abstract class),LogFactoryImpl继承了这个抽象类,也就是说C原创 2014-03-04 12:03:06 · 868 阅读 · 0 评论 -
JS 跨域设置和取Cookie
Cookie每当用户计算机通过浏览器请求某个页面时,服务器端通过response进行返回,客户端将cookie的值保存下来,Cookie不设定时间的话,默认他的生命周期为浏览器会话的期间,只要关闭浏览器,Cookie就会消失了,这种Cookie被成为会话Cookie,保存在客户端的内存中,如果设置了过期时间,那么浏览器就会把Cookie保存到硬盘中。Expires-过期时间,如果想要让转载 2014-03-10 10:40:23 · 3435 阅读 · 0 评论 -
抽象类
// 抽象类可以没有抽象方法,但是包含了抽象方法的类必须被定义为抽象类,如果子类没有实现// 父类中的所有方法,那么子类也必须定义为抽象类,否则编译出错,没有抽象构造方法,也没有// 抽象静态方法,抽象类中可以有非抽象的构造方法,不能使用final,例如水果就是抽象类,苹果,香蕉就是实现类// final不能被继承,没有子类,不能被子类覆盖,表示常量,只能被赋一次值,private、类原创 2014-04-06 23:43:49 · 467 阅读 · 0 评论 -
Java接口
// 接口中的成员变量默认都是public,static,final类型的,必须被显示初始化,成员方法都是public,static类型的// 接口中不能定义实例变量,非抽象实例方法和静态方法,接口中不能有构造方法,不能被实例化。// 一个接口不能实现另一个接口,但可以继承多个其他接口,// 不能创建接口的实例,但是允许创建接口类型的引用变量,该变量引用实现了这个接口的类的实例//原创 2014-04-06 23:45:18 · 431 阅读 · 0 评论 -
Java继承的概念
//继承//sub类是base类的子类,当sub类和base类位于同一个包中,sub类继承base类中public,protected//和默认访问级别的成员变量和成员方法,当sub类和base类位于不同的包中,sub类继承base类中public和//protected访问级别的成员变量和成员方法,//public protected 默认 private//protect原创 2014-04-06 23:46:38 · 1194 阅读 · 0 评论 -
Java变量
//十进制,二进制,八进制,十六进制//012 八进制 = 0 * 8二次方 + 1* 8一次方 + 2 * 8零次方 (10)//0x12 十六进制 = 1 * 16一次方 + 2 * 16零次方 (18)//0XF1 十六进制 = 15 * 16一次方 + 1 * 16零次方 (241)//计算机的内存只能存储二进制数据原创 2014-04-06 23:48:27 · 481 阅读 · 0 评论 -
Java类的生命周期
// 类的生命周期从类被加载,链接,初始化开始,到类被卸载,类的二进制数据位于方法区内,在堆区内还会有一个相应的描述这个类的Class对象// 当java命令运行一个java程序时,就启动一个java虚拟机进程,java虚拟机从启动到终止的过程,称为java虚拟机的生命周期,// 以下情况会使java虚拟机结束生命周期:程序正常结束,程序出现异常,执行了system.exit()方法,操作原创 2014-04-06 23:50:53 · 517 阅读 · 0 评论 -
Java对象的生命周期
// 在堆区中的对象一个个被陆续的创建,又一个个被销毁,在对象生命周期的开始阶段,需要为对象分配内存// 并且初始化他的实例变量,当程序不再使用某个对象时,他就会结束生命周期,他的内存可以被Java虚拟机的垃圾回收器回收// 创建对象的方式,new,运用反射Class类或者Constructor类的newInstance(),调用对象的clone方法,运用反序列化手段,调用ObjectIn原创 2014-04-06 23:52:19 · 604 阅读 · 0 评论 -
Java内部类的概念
// 外部类只能处于public和默认访问级别,而成员内部类可以处于public,protected,private和默认这四种访问级别,// 访问内部类的格式 Outer.InnerTool tool = new Outer().new InnerTool();而在外部类中可以直接使用InnerTool,private InnerTool tool = new InnerTool();/原创 2014-04-06 23:53:45 · 400 阅读 · 0 评论 -
Java数组的概念
// 数组是一组数据的集合,数组也是java对象,数组中的元素可以是任意类型(包括基本类型和引用类型),// 数组声明时要指定长度,// new语句执行以下步骤,在堆区中为数组分配内存空间,例如创建一个包含100个元素的int数组,每个元素// 都是int类型,占用4个字节,因此整个数组对象在内存中占用400个字节,为数组中的每个元素赋予其数据// 类型的默认值,int是0,boo原创 2014-04-06 23:55:28 · 1104 阅读 · 0 评论 -
Java集合的概念
// java集合,在数组中只能存放相同类型的数据,数组一旦创建,其长度不能被改变,为了使程序能方便的存储和操纵// 数目不固定的一组数据,jdk类库提供了java集合,集合类位于java.util包中,// 集合中不能存放基本类型数据,而只能存放对象的引用,// Set:不按特定方式排序,并且没有重复对象,他的有些实现类能对集合中的对象按特定方式排序// List:集合中的对象按原创 2014-04-06 23:56:59 · 876 阅读 · 0 评论 -
Java基础的线程概念
// 每次执行JDK的java.exe程序,就启动了一个独立的java虚拟机进程,该进程的任务是解析并执行java程序代码// 线程是指进程中的一个执行流程,一个进程可以有多个线程,分别执行不同的任务,当一个进程中的多个线程同时运行时,称为并发运行// 许多服务器程序,如数据库服务器和Web服务器,都支持并发运行,这些服务器能同时响应来自不同客户的请求。// 进程需要操作系统为其分配独原创 2014-04-07 00:00:21 · 487 阅读 · 0 评论 -
Apache CXF框架简介
Apache CXF框架是一个开源的Web Services框架,它来源于两个开源项目--ObjectWeb Celtix和Codehaus XFireApache CXF提供了对JAX-WS规范的全面支持,一方面提供了对多种绑定(Binding) 数据绑定(DataBinding)传输协议(Transport)以及数据格式(Format)的支持,另一方面可以根据实际项目的需要,采用代码优原创 2015-07-03 11:06:34 · 1530 阅读 · 0 评论