
Java
文章平均质量分 94
hiping_cao
这个作者很懒,什么都没留下…
展开
-
java反射
转载:http://yangactive.iteye.com/blog/1851086 Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等)、superclass(例如Object)、实现之interfaces(例转载 2013-04-22 14:37:03 · 393 阅读 · 0 评论 -
深入理解Java内存模型(五)——锁
锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a+转载 2014-06-05 15:13:56 · 437 阅读 · 0 评论 -
深入理解Java内存模型(三)——顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存一致性做了如下转载 2014-06-05 14:47:24 · 480 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后,再转载 2014-06-05 14:07:39 · 543 阅读 · 0 评论 -
深入理解Java内存模型(一)——基础
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通转载 2014-06-05 13:54:21 · 436 阅读 · 0 评论 -
Apache POI组件操作Excel(导入和导出)
Apache的POI组件是Java操作Microsoft Office办公套件的强大API,其中对Word,Excel和PowperPoint都有支持,当然使用较多的还是Excel,因为Word和PowerPoint用程序动态操作的应用较少。那么本文就结合POI来介绍一下操作Excel的方法。这里介绍两种方法实现excel的操作。代码都有注释,可以很清楚的看懂,一种是循环遍历excel转载 2014-04-25 11:12:45 · 2736 阅读 · 0 评论 -
编程面试的10大算法概念汇总
在编程面试中排名前10的算法相关的概念,可以通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含下面的这些概念:1. 字符串2. 链表3. 树4. 图5. 排序6. 递归 vs. 迭代7. 动态规划8. 位操作9. 概率问题10. 排列组合1. 字符串如果IDE没有代码转载 2013-11-29 22:27:31 · 460 阅读 · 0 评论 -
Java数组技巧攻略
0. 声明一个数组(Declare an array)123String[] aArray = new String[5];String[] bArray = {"a","b","c","d", "e"};String[] cArray = new String[]{"a","b","c","d","e"};转载 2013-09-20 12:56:23 · 511 阅读 · 0 评论 -
JAVA序列化基础概念
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。把Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。对象的序列化主要有两种用途:1) 把对象的转载 2013-05-15 10:09:00 · 536 阅读 · 0 评论 -
深入理解Java内存模型(七)——总结
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:转载 2014-06-05 16:19:43 · 473 阅读 · 0 评论 -
命令式编程和声明式编程
Aspect Oriented Programming(面向方面编程,简称AOP)是一种Declarative Programming(声明式编程)。Declarative Programming(声明式编程)是和Imperative Programming(命令式编程)相对的概念。我们平时使用的编程语言,比如C++、Java、Ruby、Python等,都属于Imperative Programm转载 2014-06-05 16:35:41 · 1165 阅读 · 0 评论 -
1 Shiro简介
转载:http://jinnianshilongnian.iteye.com/blog/20189361.1 简介Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就转载 2014-11-22 09:13:44 · 514 阅读 · 0 评论 -
Quartz集成spring开发大全
一. 固定xml调用quartz转载 2014-11-15 15:44:51 · 710 阅读 · 0 评论 -
java Spring调整Quartz定时备份MySQL数据库
利用QuartZ第三方插件定时备份MySQL数据库,首先要实现能够单独备份db的java程序,其具体的思路是,先调用配置文件的相关属性值来动态生成要执行的批处理命令, 将其写入1个bat文件中,然后调用java程序执行这个批处理执行语句:mysqldump -u root-p 123456 sshweb >E:\mysql_backup\2013-1-3_15_29_00.s转载 2014-11-15 11:25:37 · 2842 阅读 · 1 评论 -
在JSP里使用CKEditor和CKFinder
1. 下载CKEditor相关的安装文件CKEditor: 在 http://ckeditor.com/download 页面左侧,可以下载到各种版本的CKEditor,包括完整版full、标准版standard、基础版basic等。在页面右侧上方,还有可定制的下载,可以选择Toolbar类型、插件、语言等。这里我们选择4.1版本的Full版本,下载后得到CKEditor_4.1_full转载 2014-09-27 09:57:02 · 633 阅读 · 0 评论 -
Android、iPhone和Java三个平台一致的加密工具
移动开发中遇到的最让人纠结的要属Java、Android和iPhone三个平台加解密不一致的问题。因为手机端后台通常是用JAVA开发的Web Service,Android和iPhone客户端调用同样的Web Service接口,为了数据安全考虑,要对数据进行加密。头疼的问题就来了,很难编写出一套加密程序,在3个平台间加解密的结果一致,总不能为Android和iPhone两个客户端各写一套Web转载 2014-05-28 10:54:23 · 599 阅读 · 0 评论 -
15个顶级Java多线程面试题及回答
Java 线程面试问题在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。用于直接面转载 2014-05-28 10:35:46 · 360 阅读 · 0 评论 -
深入理解Java内存模型(六)——final
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说明这转载 2014-06-05 15:22:06 · 457 阅读 · 0 评论 -
深入理解Java内存模型(四)——volatile
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L;转载 2014-06-05 15:02:04 · 478 阅读 · 0 评论 -
java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较
1 详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个转载 2013-05-15 10:05:13 · 680 阅读 · 0 评论 -
JAVA反射实例
下面是java反射的两个例子Reflection,通过一个类名,打印出构造函数,方法和变量[java] view plaincopyprint?package senior; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.la转载 2013-05-15 09:59:19 · 503 阅读 · 0 评论 -
JavaMail学习笔记(四)使用POP3协议接收并解析电子邮件
[java] view plaincopyprint?package org.yangxin.study.jm; import java.io.BufferedInputStream; import java.io.BufferedOutputStream;import java.io.File; import java.io.FileNotFoundExce转载 2013-05-26 11:49:05 · 1615 阅读 · 0 评论 -
图解Java多态内存分配以及多态中成员方法的特点
图解Java多态内存分配以及多态中成员方法的特点Person worker = new Worker(); 子类实例对象地址赋值给父类类型引用变量。多态的体现。多态中成员方法的特点分析:【子类有,父类没有】编译失败!!!worker.startWork(); 为什么编译不通过呢?提示:找不到符号。因为引用变量worker是Person类型,在Person转载 2013-05-06 13:57:15 · 631 阅读 · 0 评论 -
图解Java继承内存分配
图解Java继承内存分配继承的基本概念:(1)Java不支持多继承,也就是说子类至多只能有一个父类。(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员转载 2013-05-06 13:56:14 · 817 阅读 · 0 评论 -
图解Java单例模式内存分配
图解Java单例模式内存分配1:虚拟机加载StaticDemo类,保存类型信息到方法区。2:通过保存在方法区的字节码,虚拟机开始main方法,main方法入栈。3:进入main方法第一条指令, Person.getInstance(); 首先虚拟机加载Person类到方法区,然后完成对Person类的初始化操作。疑问来了,类变量不是保存在方法转载 2013-05-06 13:54:59 · 586 阅读 · 0 评论 -
类和对象的初始化
类的生命周期:分为装载,链接,初始化 如图:1)装载:查找并装载类型的二进制数据2)连接:执行验证,准备,和解析(可选) a) 验证:确保导入类型正确 b) 准备:为类变量分配内存,并将其初始化为默认值 c) 解析:把类型中的符号引用转换成直接引用3)初始化:把类变量初始化为默认初值 随着转载 2013-05-06 13:53:57 · 492 阅读 · 0 评论 -
图解Java对象初始化过程以及方法调用
出处:http://blog.youkuaiyun.com/thinging_in_android图解Java对象初始化过程以及方法调用 1:虚拟机加载OOPDemo类(省略详细加载过程(装载、链接、初始化)),提取类型信息(具体保存哪些类型信息查看博文:Java虚拟机体系结构),存储到方法区中,对应图中的绿色矩形区域。2:通过保存在方法区的字节码,虚拟机开始执行m转载 2013-05-06 13:52:02 · 657 阅读 · 0 评论 -
JAVA虚拟机体系结构
一、JAVA虚拟机的生命周期 一个运行时的Java虚拟机实例的天职是:负责运行一个java程序。当启动一个Java程序时,一个虚拟机实例也就诞生了。当该程序关闭退出,这个虚拟机实例也就随之消亡。如果同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。 Java虚拟机实例通过调用某个初始类的main()方转载 2013-05-06 13:45:10 · 603 阅读 · 0 评论 -
Java泛型问答
转载:http://yangactive.iteye.com/blog/1850799 孔夫子问:“java泛型为什么存在?"颜回答曰:“安全简单!”孔夫子问:"何为安全简单!"颜回答曰:“在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。”泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法转载 2013-04-22 14:45:12 · 480 阅读 · 0 评论 -
深入理解JAVA JDK动态代理机制
一、现实生活中的代理? 在现实生活中,我们常见的有服务器代理商、联想PC代理商、百事可乐、火车票、机票等代理商,为什么会有这些个代理商呢?设想以买火车票为场景,如果我要买一张从广州去长沙的火车票,就必须去火车站排队购票,如果排队的人比较多的话,非常的耽误时间。但有了火车票代理商之后,我就可以直接去找个离我最近的代理商买票,因为这样的代理商不止一个二个,遍布全市各地。 所以代理转载 2013-05-26 11:05:09 · 1207 阅读 · 0 评论 -
深入分析Java ClassLoader原理
一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在的,转载 2013-05-26 11:11:29 · 621 阅读 · 0 评论 -
Java集合类 总结
集合 collection讲集合collection之前,我们先分清三个概念:colection 集合,用来表示任何一种数据结构 Collection 集合接口,指的是 java.util.Collection接口,是 Set、List 和 Queue 接口的超类接口Collections 集合工具类,指的是 java.util.Collections 类。 要求转载 2013-05-27 22:33:42 · 956 阅读 · 0 评论 -
走进序列化之基础篇
目录:1:浅谈序列化2:走进Java序列化第一:内置序列化机制之完全性序列化第二:内置序列化机制之选择性序列化第三:内置序列化机制+自定义序列化(重点)第四:完全自定义序列化第一部分:浅谈序列化序列化并非只是Java语言特有的一种机制,有很多面向对象语言都支持。序列化是指将对象的状态信息转换成可存储、可传输的特定格式的数据并保存到一种临时(如主存)或者永转载 2013-05-14 09:14:01 · 629 阅读 · 0 评论 -
JavaMail学习笔记(五)使用IMAP协议接收并解析电子邮件
[java] view plaincopyprint?package org.yangxin.study.jm; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Properties; import javax.mail.Flags.Flag转载 2013-05-26 11:50:44 · 1357 阅读 · 0 评论 -
JavaMail学习笔记(三)使用SMTP协议发送电子邮件
[java] view plaincopyprint?package org.yangxin.study.jm; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream;转载 2013-05-26 11:46:25 · 2728 阅读 · 0 评论 -
Java定时任务
http://blog.youkuaiyun.com/xyang81/article/details/7425943 在日常工作中,定时进行任务调度的业务随处可见,比如:定时清理系统的临时文件、有新的活动定时向用户发送电子邮件、定时检查系统是否需要更新、定时发送短信等业务。在Java中由两个类完成定时任务的调度,分别为:java.util.Timer和java.util.TimerTask创建一个转载 2013-05-26 13:08:19 · 887 阅读 · 0 评论 -
JavaMail学习笔记(二)JavaMail API简介和配置开发环境
一、JavaMail API 简介 JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如:SMTP、POP3、IMAP和MIME等。开发人员使用JavaMail API编写邮件处理软件时,无须考虑邮件协议底层的实现细节,只要调用JavaMail开发包中相应的API类就可以了。JavaMail转载 2013-05-26 11:20:43 · 689 阅读 · 0 评论 -
注解+反射+JDBC,实现一个简易的泛型DAO接口
一、实现思路 1、定义3个Annotation(注解):Entity、Id、Column,Entity作用于Type级别,用于标识JavaBean与数据库表名的映射关系。Id作用于Field级别,用于标识JavaBean中ID属性与表中ID字段的映射关系,Column作用于Field级别,用于标识JavaBean中除ID属性外的其它属性与表中字段的映射关系。 2、在D转载 2013-05-26 10:59:32 · 1310 阅读 · 0 评论 -
JavaMail学习(一)理解邮件传输协议
电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则,这些规则就是邮件传输协议。SMTP协议定了邮件客户端与SMTP服务之间,以及两台SMTP服务器之间发送邮件的通信规则;POP3/IMAP协议定义了邮件客户端与POP3服务器之间收发邮件的通信规则。一、SMTP协议 SMTP(Simple Mail Transfer转载 2013-05-26 11:18:04 · 1651 阅读 · 0 评论 -
身份认证(shiro)
身份验证,即在应用中用什么能证明他就是他所本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份:principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principal转载 2014-11-22 09:43:31 · 690 阅读 · 0 评论