
J2EE
文章平均质量分 73
IT农夫
古人学问无遗力,
少壮工夫老始成。
纸上得来终觉浅,
绝知此事要躬行。
展开
-
简明理解泛型中的? extends T 与 ? super T
简单来说,通过List<? extends T>定义的list只能从里面取数据,取出来的对象都是T类型或者T类型的子类。对于List<? super T>定义的list,只能将对象元素放入list,放入的对象是T类型或者T类型的子类。总结为PECS原则:由于<? extends T>的只能取,不能存,而<? super T>得只能存,不能取,因...原创 2019-11-25 16:58:26 · 678 阅读 · 1 评论 -
如何更改Linux中默认的openjdk为自己安装的JDK
(1)/etc/profileexport JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/export PATH=$PATH:$JAVA_HOME/binexport JRE_HOME="$JAVA_HOME/jre"export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar修改...原创 2015-12-20 19:43:59 · 12752 阅读 · 0 评论 -
JAVA I/O中面向字节的InputStream和OutputStream以及面向字符的Reader和Writer简介
Java的IO操作中有面向字节(Byte)和面向字符(Character)两种方式.面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类.面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类.下面是JAVA示原创 2012-07-24 18:26:43 · 10450 阅读 · 0 评论 -
Java对象的强、软、弱和虚引用
Java对象的强、软、弱和虚引用 转自 http://www.bitscn.com/java/oop/200803/131501.html 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说转载 2009-03-11 17:22:00 · 1347 阅读 · 0 评论 -
如何理解JAVA 参数传递总是值传递(pass-by-value )
有人说java 参数传递在对primitive类型的参数传递时候是值传递,对对象参数的传递是引用传递。 可是JAVA规范里面却说的是总是值传递。 看看这个图就理解了。 对传入的参数总是有个copy的过程。因为primitive类型的参数在JVM中,参数中存储的就是本身的值,copy后的参数和原来的参数就完全独立了。对于对象类型的参数,参数中存储的是对象在h原创 2009-03-09 10:08:00 · 3792 阅读 · 1 评论 -
JVM内存模型以及垃圾回收
JVM内存模型以及垃圾回收JAVA堆的描述如下:内存由 Perm 和 Heap 组成. 其中Heap = {Old + NEW = { Eden , from, to } }JVM内存模型中分两大块,一块是 NEW Generation, 另一块是Old Generation.在New Generation中,有一个叫Eden的空间,主要是用来存放新生的对象,还有两个S转载 2009-03-18 10:34:00 · 2715 阅读 · 0 评论 -
JAVA的class文件格式例解
JAVA程序从源代码到运行的一般过程为:JAVA源文件编译之后形成class文件,也就是java字节码文件,然后java虚拟机解释执行java字节码文件。我们来简单看看java字节码文件的格式。下图是java字节码文件的格式的定义。u4代表占4个字节,cp_info表示cp_info结构需要占据的字节,后面会介绍cp_info结构。假设有一个java文件的源代码如下publ原创 2013-12-31 16:49:08 · 2478 阅读 · 0 评论 -
JAVA中的字符编码操作
在JAVA源文件-->JAVAC编译-->Class-->Java运行-->getBytes()-->new String()-->显示的过程中,每一步都有编码的转换过程,这个过程总是存在的,只是有的时候用默认的参数进行。在编写JAVA源文件的时候要指定源文件的编码,这里是指源文件的文本以什么编码保存为操作系统中的文件。JAVAC编译的时候要把源文件编译成class文件,先要读取源原创 2013-12-22 18:00:39 · 2463 阅读 · 0 评论 -
JAVA类的静态加载和动态加载以及NoClassDefFoundError和ClassNotFoundException
我们都知道JAVA初始化一个类的时候可以用new 操作符来初始化,也可通过Class.forName的方式来得到一个Class类型的实例,然后通过这个Class类型的实例的newInstance来初始化.我们把前者叫做JAVA的静态加载,把后者叫做动态加载.后者在很多框架中经常使用,通过用property文件的方式指定类名称.如我们熟悉的在写JDBC代码的时候加载不同数据库的驱动.静态加载的时原创 2012-06-06 11:53:20 · 10861 阅读 · 1 评论 -
Jboss的server.xml配置文件中Connector的属性address的作用
jboss在运行run.sh时,如果/usr/local/jboss5/server/default/deploy/jbossweb.sar/server.xml配置文件中Connector的属性address是使用变量${jboss.bind.address},这样每次运行run.sh都必须-b ip方式来指定jboss所在机器的ip地址,否则客户端就连不上。我们可以把上面的那个变量替换成该机的转载 2012-11-19 22:57:08 · 6153 阅读 · 1 评论 -
Breif steps of installing Weblogic on Linux
1,install weblogic software./weblogic-server924_linux32.bin2,creating the domain/home/bea/weblogic92/common/binconfig.she.g. created /home/bea/user_projects/domains/mydomain3,start the admin原创 2012-08-01 17:38:44 · 1304 阅读 · 0 评论 -
JAVA多线程中synchronized,wait和notify的关系
synchronized是和一个锁对象关联的,synchronized限制static方法的时候,锁对象为这个类的class变量,相当于XXXClass.class.synchronized限制非static方法的时候,锁对象为这个类的实例(相当于this).synchronized限制一个对象实例的时候,如(synchronized (xlock)),锁对象为指定的这个对象实例,如x原创 2012-07-24 13:50:19 · 17352 阅读 · 0 评论 -
JAVA泛型的? extends和? super的比较
在JDK1.5之后可以使用泛型,通常可以在下面的地方使用.A,泛型类声明,如public class GeneralT B,泛型接口声明,如public interface GenIntfC,泛型方法声明,如public void thisIsT(List list, T e) { list.add(e);}D,泛型构造器(constructor)声明,如 Ge原创 2012-08-07 15:46:37 · 6286 阅读 · 0 评论 -
Java实现Immutable Class要点
Java中很多class都是immutable,像String,Integer等,它们通常用来作为Map的key.那么在实现自定义的Immutable的Class的时候,应该注意哪些要点呢?a)Class 应该定义成final,避免被继承。b)所有的成员变量应该被定义成final。c)不要提供可以改变类状态(成员变量)的方法。【get 方法不要把类里的成员变量让外部客服端引用,当需原创 2009-03-04 10:11:00 · 10509 阅读 · 1 评论 -
JAVA中通过编译时常量控制有的源代码不编译到字节码文件
JAVA在编译过程会对代码进行优化,如果某一行代码永远不可能被执行到,这行代码不会被编译到字节码文件中去。如下面的例子,flag是一个可以在编译阶段就可以确定的值,javac编译的时候不会把System.out.println编译到字节码文件中。public class T { public final static boolean flag = false; p原创 2014-01-03 14:26:47 · 2953 阅读 · 1 评论 -
web安全之跨站请求伪造
CSRF(Cross-site request forgery),中文名称:跨站请求伪造.因为这个不是用户真正想发出的请求,这就是所谓的请求伪造;因为这些请求也是可以从第三方网站提交的,所以前缀跨站二字。CSRF发生的场景如下图所示:用户登录访问了一个受信任的站点,在用户还没有退出登录的时候,打开另外一个tab页,访问了网站B。在B网站中,有CSRF攻击代码访问网站A。原创 2013-12-23 14:34:20 · 29977 阅读 · 4 评论 -
Java中IO流体系
转载: https://mp.weixin.qq.com/s?__biz=MzA5NzgzODI5NA==&mid=2454030958&idx=1&sn=df27aadb92e575e96115ec809506245a&chksm=872b9fd7b05c16c10f265b495b7204b843f6825771292b30a9124f6d32367d2d9485493316ea&scene=转载 2017-10-08 20:37:41 · 2017 阅读 · 0 评论 -
JAVA输出带BOM的UTF-8编码的文件
当从http 的response输出CSV文件的时候,设置为utf8的时候默认是不带 bom的,但是windows的Excel是使用bom来确认utf8编码的,所有需要把bom写到文件的开头。 否则用Excel打开CSV文件有可能是烂码的 示例代码如下: response.setContentType("text/csv"); response.setHeader("原创 2016-01-12 14:23:17 · 11501 阅读 · 0 评论 -
Java 工程师成神之路
转载 https://linux.cn/article-6739-1.html一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133 http://ifeve.com/jmm-faq/ 1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, jstac转载 2015-12-17 10:07:53 · 4379 阅读 · 0 评论 -
使用ANT编译项目报错 com.sun.image.codec.jpeg does not exist 解决方法
项目开发中在对图片进行裁切处理的时候,有时候是会使用到 com.sun 包下的类时,如果项目使用ant编译,会出现错误 com.sun.image.codec.jpeg does not exist 这是因为在JDK1.7+时,Oracle不允许使用sun.*的jar具体参见http://www.oracle.com/technetwork/java/faq-sun-packages-142232转载 2015-09-09 22:30:31 · 2554 阅读 · 0 评论 -
JAVA访问LDAP(openldap)的示例
1,安装openldap,下载openldap: http://download.youkuaiyun.com/detail/kkdelta/8090881 修改c:\openldap\slapd.conf本示例中的suffix 和rootdn修改为如下:database bdb#suffix "dc=maxcrc,dc=com"#rootdn "cn=Manager,dc=原创 2014-10-28 14:55:57 · 12878 阅读 · 0 评论 -
java.lang.OutOfMemoryError发生之前和之后...
OutOfMemoryError简单来讲就是JVM没有内存可用啦,具体来讲就是分配的heap空间不能再往里面放新的对象了.通常来讲造成这种错误的原因主要有:1,达到了heap所能支持的最大值.heap空间太小,放不下要new的对象,举一个极端的例子,heap的size是64m,你要new的对象占用的size为65m.比如业务高峰期发生,加载大的XML dom对象等.2,"内存泄原创 2012-08-10 15:34:57 · 5903 阅读 · 0 评论 -
HTTP基本认证(Basic Authentication)的JAVA示例
HTTP基本认证工作原理以及用JAVA如何实现原创 2014-06-04 14:22:11 · 72811 阅读 · 2 评论 -
JAVA集合中删除元素时的java.util.ConcurrentModificationException
在JAVA的集合(LIST,SET)中通过iterator.hasNext() 或者iterator.next()遍历集合中的数据时,如果这时候add或者remove集合中的元素,会发生ConcurrentModificationException异常.本文简单说明一下这种现象和解决方法.如下面的代码,不管是remove还是add都会发生ConcurrentModificationExce原创 2012-06-08 12:05:12 · 3615 阅读 · 0 评论 -
Java类加载原理解析
Java类加载原理解析 1 基本信息摘要:每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其转载 2012-07-18 13:48:59 · 6515 阅读 · 0 评论 -
JAVA class文件中的符号引用
在java代码中,一个类可能使用另外类或者接口的字段或者调用另外一个类的方法。在编译的时候,class文件中是通过叫做"符号引用"的方式来实现的。如下面的例子public interface Intf { public static String str = "abcde"; public static int ival = new Random().nex原创 2014-01-02 10:36:00 · 10805 阅读 · 0 评论 -
JAVA读取外部资源的方法
在java代码中经常有读取外部资源的要求:如配置文件等等,通常会把配置文件放在classpath下或者在web项目中放在web-inf下.1.从当前的工作目录中读取:try { BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("wkdir.txt")));原创 2010-05-05 16:55:00 · 8017 阅读 · 1 评论 -
用JAVA代码实现ARP攻击
ARP攻击原理一台电脑通过网络访问另一台电脑的时候,在数据链路层需要知道对方的MAC地址进行真正的物理通信.而电脑上的应用程序通常都是根据另一台电脑的IP地址来和对方建立通信,这时候就需要有一个协议将IP地址解析到MAC地址,这就是ARP协议.而ARP具体过程就是当需要通过IP获取一个远端的的MAC地址的时候,系统会首先检查ARP表中是否存在对应的IP地址,如果没有,则发送一个原创 2012-07-05 11:27:16 · 16917 阅读 · 11 评论 -
JAVA客户端传递对象数组到Oracle存储过程做大数据量插入
最近在项目中用到了JAVA客户端传递对象数组到Oracle存储过程做大数据量插入,比如10万级别.下面做一个插入10万条记录的示例步骤,,为了容易理解,表的结果很简单.1,假设表结构如下:CREATE TABLE UKBNOVCTCORDER(LosingLEName varchar2(200),LosingLECode varchar2(200))2,在数据库建立一个type,对应原创 2012-02-01 17:37:38 · 8939 阅读 · 12 评论 -
quartz中的corn表达式(转)
Quartz的cron表达式 一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099) 其中每个转载 2012-02-07 10:36:53 · 23985 阅读 · 1 评论 -
Oracle 服务器端客户端字符集设置对应用程序的影响
在Oracle数据库中如果服务器端客户端字符集设置不当,就会造成保存到数据库的数据不会正常保存,或者数据库里的数据在客户端不能正常显示,出现烂码的现象。尤其是以SQLPLUS操作的时候,由于SQLPLUS的"bug"(或者叫用户使用不当),会造成一些看起来不’正常‘的烂码现象,下面来解释一下:1,查看数据库的字符集:SQL> select * from database_propert原创 2012-01-14 11:15:39 · 3133 阅读 · 2 评论 -
如何得到JDBC Insert 语句执行后插入Oracle 数据库记录的主键
在应用中,很多时候会对表的主键用一个自动增涨的数来付值,如Oracle的sequence,插入后又想得到的主键的值。下面介绍一下相关的方法。1,用Oracle 的returning 语句。PreparedStatement sta = conn.prepareStatement("INSERT INTO LOGGING VALUES (TESTSEQ.NEXTVAL,SYSDATE)re原创 2009-10-07 19:23:00 · 7638 阅读 · 1 评论 -
在JAVA中使用DES算法加密数据
在JDK的javax.crypto 的包中提供了对一些通用算法的加密解密的支持,本文简介一下使用DES算法来对数据加密解密。通常是数据加密方用密钥将数据加密,数据解密方用同样的密钥将数据解密。这个密钥是包含8位byte的一个二进制的文件,加密解密方可以是任何开发语言。 用JAVA生成一个key并保存到一个二进制文件中去的方法如下: public static void原创 2011-12-07 16:41:55 · 3495 阅读 · 0 评论 -
dom4j处理超大XML
dom4j处理超大XML转载 2011-02-27 12:46:00 · 4876 阅读 · 0 评论 -
DOM4J中通过XPath操作DOM节点
本文通过介绍如何从XML文件中读入,操作DOM和输出DOM到文件来说明如何在DOM4J中通过XPath操作DOM节点.原创 2010-08-03 20:11:00 · 3364 阅读 · 0 评论 -
什么是JAVA
先说什么是javajava是一种面向对象语言,真正的面向对象,任何函数和变量都以类(class)封装起来至于什么是对象什么是类,我就不废话了关于这两个概念的解释任何一本面向对象语言的教材里面都有知道了什么是java,那自然就会对java能干什么感兴趣 在说java能做什么之前,先说java作为一个真正面向对象语言的优点首先第一个,既然是真正的面向对象,那就要做到彻底的封装这是java和c++最大的转载 2009-04-21 14:03:00 · 2381 阅读 · 0 评论 -
JAVA Exception 处理注意事项
1,先catch子的Exception,再catch父的Exception,这一点比较好避免,违反了的话会有compile错误。 2,不要用一个catch Exception来处理所有的exceptions。 3,最早抛出exception:exception的信息能够更准确和详细的描述异常信息。最迟catch exception,只有在能对catch的exception做具体原创 2009-03-12 11:12:00 · 2068 阅读 · 0 评论 -
JAVA 类初始化顺序
1,先初始化静态成员变量,因为客户程序可能不构造你的实例而access静态成员变量. 2,父类的构造函数,因为子类可能要access父类的东西.比如:在父类里加上 protected String str = null;在父类构造函数()里加上 str = "str";在子类里加上private String s = this.str;所以要先构造父类,子类就可以安全地访问父类的成员.原创 2009-03-08 18:19:00 · 1106 阅读 · 0 评论 -
java.lang.NoSuchMethod 分析
经常遇到恼人的java.lang.NoSuchMethod,分析分析都是在什么情况下发生的。 a)用JAVA 命令运行某个Class的时候,由于Class没有提供 JAVA命令期待的main方法,这个错误经常发生在java初学者身上,呵呵。* 必须提供一个像下面的main函数,(除了args那个参数名称可以变之外)public static void main(String[] a原创 2009-03-05 20:17:00 · 10596 阅读 · 2 评论 -
web.xml从2.3到2.4的issue
1,在web.xml不认解决办法: 如果是头是这样的 直接在后面加 /WEB-INF/struts-logic.tld /WEB-INF/struts-logic.tld 如果头是这样的 在后面加 /WEB-INF/validator-user.tld /WEB-INF/validator-user.tld转载 2012-02-17 16:33:17 · 2766 阅读 · 0 评论