java基础
文章平均质量分 79
wjxbj
这个作者很懒,什么都没留下…
展开
-
slf4j 与 log4j
SLF4J不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。 简单日记门面(Facade)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以...原创 2013-03-16 09:00:52 · 67 阅读 · 0 评论 -
java.sql.SQLException: ORA-01461: can bfor insert into a LONG column问题分析与小结
java.sql.SQLException: ORA-01461: can bfor insert into a LONG column 1.发现系统报此问题的第一反应是插入数据时,数据长度超出数据库的字段长度。2.而根据错误日志不难分析出是向邮件发送信息表中插入数据时,数据超过定义的最大值限制了,但到底是哪个字段,需进一步看一下代码和日志。3.根据错误日志的时间找到跟踪日志,...2013-04-01 20:35:21 · 216 阅读 · 0 评论 -
java编码与解码
package com.bijian.url;import java.io.UnsupportedEncodingException;public class URLEncodeTest { public static void main(String[] args) { String str = "栢莱哈希"; try { //编码 ...2013-04-02 20:27:08 · 172 阅读 · 0 评论 -
Java截取指定字节长度的字符串
在实际的项目中,我们后台的数据库是根据指定编码(如GBK)保存数据的,为防止操作数据库时,因字段值长度超过数据库定义的长度,须在JAVA甚至JS层面做长度的校验控制,如数据库定义的长度是varchar2(10),即10个字节的长度,此时应该在JAVA甚至JS层面校验其对应数据的字节长度是否小于10,如果超过10,应截取为10个甚至9个字节长度(第10、第11个字节正好是一个占两...原创 2013-06-01 17:48:04 · 1810 阅读 · 0 评论 -
Java中equals()与hashCode()方法详解
一.equals()方法详解 equals()方法在object类中定义如下: public boolean equals(Object obj) { return (this == obj);} 很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、Integer、Double等这些封装类在使用equals...原创 2013-11-07 09:42:24 · 193 阅读 · 0 评论 -
业务DTO定义实践
一.定义抽象类,重写toString()方法 在toString()方法中调commons-lang.jar的ToStringBuilder类的reflectionToString方法。这样,在日志输出时直接输出业务DTO对象,就能输出对象的属性及属性值。package com.bijian.study;import org.apache.commons.lang.bu...2013-11-07 10:56:35 · 203 阅读 · 0 评论 -
JAVA的getBytes()方法
在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同OS下,返回的东西不一样! String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示,如: byte[] b_gbk = "深".getBytes("GBK"); byt...原创 2013-01-07 14:14:01 · 6873 阅读 · 0 评论 -
findbugs:may expose internal representation by returning
findbugs:1. *** getXXX() may expose internal representation by returning ***.getXXX 2. *** setXXX(DATE )may expose internal representation by storing an externally mutable object into setXXX *** 翻译:...原创 2013-11-25 19:41:46 · 1144 阅读 · 0 评论 -
entrySet和keySet之比较
错误码:WMI_WRONG_MAP_ITERATOR 案例:StringBuffer resultDetail = new StringBuffer();Iterator<String> it = resultDetailMap.keySet().iterator();while (it.hasNext()) { String key = it.next...原创 2013-11-25 20:25:17 · 267 阅读 · 0 评论 -
遍历Map的四种方法
package com.bijian.study;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class HashMapTest { public static void main(String[] args) { Map&...原创 2013-11-25 20:31:28 · 68 阅读 · 0 评论 -
一种扫描指定主机端口号Socket连接是否成功的小程序
import java.net.Socket;public class ThreadTest implements Runnable { public static int portno = 1023; public synchronized void checkSocket(int port) { try { ...原创 2013-07-18 20:25:51 · 162 阅读 · 0 评论 -
ObjectInputStream、ObjectOutputStream实现对象的克隆
CloneUtil类:package com.bijian.study.clone;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;...2013-07-19 14:55:32 · 179 阅读 · 0 评论 -
HashMap的实现原理详解
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构...原创 2014-01-03 19:46:14 · 77 阅读 · 0 评论 -
HashSet的实现原理详解
1. HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 2. HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简...原创 2014-01-03 19:51:45 · 139 阅读 · 0 评论 -
LinkedHashSet的实现原理详解
1. LinkedHashSet概述: LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少一个线程修改了该Set,则它必须保...原创 2014-01-03 19:59:24 · 939 阅读 · 0 评论 -
LinkedHashMap的实现原理详解
1. LinkedHashMap概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 LinkedHashMap实现与HashMap的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代...原创 2014-01-03 20:10:53 · 129 阅读 · 0 评论 -
ArrayList的实现原理详解
1. ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向ArrayList中不断添加元 素,其...原创 2014-01-04 15:00:22 · 87 阅读 · 0 评论 -
解释@Component @Controller @Service @Repository
一般版本低的JDK在用到@Resource注解时,可能需要引入j2ee/common-annotations.jar。我用的是JDK1.6,没需要引入。 @Component大致可以分为以下几个注解: a.@controller控制器(注入服务),用于标注控制层组件(如struts中的action) b.@service服...原创 2014-05-11 10:21:57 · 161 阅读 · 0 评论 -
Java 8:HashMap的性能提升
HashMap<K, V>是一个高效通用的数据结构,它在每一个Java程序中都随处可见。先来介绍些基础知识。你可能也知道,HashMap使用key的hashCode()和equals()方法来将值划分到不同的桶里。桶的数量通常要比map中的记录的数量要稍大,这样每个桶包括的值会比较少(最好是一个)。当通过key进行查找时,我们可以在常数时间内迅速定位到某个桶(使用h...原创 2014-05-11 10:22:22 · 133 阅读 · 0 评论 -
一道栈的输入输出序列问题
一个栈输入序列为1,2,3,4,5,则下列序列中不可能是栈的输出序列是( )A.1 2 3 4 5B.5 4 3 2 1C.2 3 4 5 1 D.4 1 2 3 5分析:可以根据答案来判定的,像A的话,顺序是1 2 3 4 5 那么当1进来的时候应该马上出去,如果不这样做的话,1肯定不是第一个出去的,依此类推。A.1进 1出 2进 2出 3进 3出 4进 4出 5进 5出B...原创 2013-08-06 09:39:26 · 1272 阅读 · 3 评论 -
java支持的最大内存
一.jdk各个版本在不同操作系统中支持的最大内存是不一样的,但是可以通过以下方法来进行测试 c:>java -Xmxxxxxm(g) -version 其中xxxx为最大内存数值, m(g)是内存的计量单位,如果命令能够正确显示出jdk的版本等信息,说明当前jdk支持测试的最大内存数量,否则说明测试的内存超出了jdk支持的最大值,例如: c:\\documents and ...原创 2014-05-20 22:32:17 · 1332 阅读 · 0 评论 -
一次OutOfMemoryError异常的分析
为什么我给JVM分配的堆已经足够大了,但在给一个数据结构分配内存的时候却抛出了OutOfMemoryError异常?这是我最近面临的一个问题。 看了下开发人员这段代码到底是干什么的并且再三确认了通过-Xmx参数给JVM设置的堆大小之后,看样子问题确实是有点诡异了。 通常来说,想弄清楚一个问题的最好方式就是通过一个实例来进行说明。这里我创建一个小的测试...原创 2014-05-24 13:03:28 · 125 阅读 · 0 评论 -
java override overwrite与overload
Overload是重载的意思,Override是覆盖的意思,也就是重写。 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。 重写Override表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相 当于把父类中定义的那个完全相同的方法给...原创 2013-08-13 21:10:24 · 184 阅读 · 0 评论 -
Quartz的cron表达式
按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099) 其中每个元素...原创 2014-01-29 12:57:05 · 64 阅读 · 0 评论 -
Java开发中常见的危险信号
这里将要谈及的很多“危险信号”通常都会收到来自于FindBugs等代码分析工具所发出的警告信息,流行的Java IDE也会将它们标记出来。不过,我发现有不少开发者(包括我自己)会忽略掉这些来自于工具与IDE的警告信息,要么是因为他们关掉了提示信息,要么是出于自身的开发习惯或是不理解与这些警告信息所关联的风险,因此会忽略掉警告信息。 对引用使用==(而不是.equals) ...原创 2014-02-08 11:48:45 · 88 阅读 · 0 评论 -
6 个重构方法可帮你提升80%的代码质量
在过去做了不少代码的ReView,发现了一些代码质量上比较普遍的问题,以下是其中的前五名:臃肿的类: 类之所以会臃肿,是因为开发者缺乏对最基本的编码原则,即“单一职责原则”(SRP)的理解。这些类往往会变得很臃肿,是由于不同的且在功能上缺少关联的方法都放在了相同的类里面。长方法: 方法之所以会变得很长主要是有以下几个原因:许多没有关联性的、功能复杂的模块的代...原创 2014-02-08 12:04:36 · 85 阅读 · 0 评论 -
Java单例模式的五种写法
在网上看到《单例模式的七种写法》,写的非常好,于是转载过来学习学习,在此我按原博客一位读者同学的分类,分成懒汉、恶汉、静态内部类、枚举和双重校验锁五种。 第一种(懒汉,线程安全):public class Singleton { private static Singleton instance; private Singl...原创 2014-02-08 15:14:22 · 148 阅读 · 0 评论 -
夏令时导致数据错误
中国曾在1986~1991这6年间实施过夏令时,具体作法是每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时,夏令时开始;到九月中旬第一个星期日的凌晨2时整(北京夏令时间),再将时钟拨慢一小时,即将表针由2时拨至1时,夏令时结束。这样会导致夏令时开始日实际只有23 小时,而夏令时结束日有25小时。 夏令时日期范围:1986年5...原创 2014-07-17 21:05:06 · 467 阅读 · 0 评论 -
Table Driven(表驱动)方法实例
实例一:/** * 驾驶人年龄段 * 保险行业,会对驾驶人的年龄做年龄段的区分判断 * 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞) */public class AgePeriodTest { //if...el...2015-01-06 18:37:44 · 493 阅读 · 0 评论 -
Java安全—Java实现Base64加密
一.密码常用术语 明文:待加密信息 密文:经过加密后的明文 加密:明文转为密文的过程 加密算法:明文转为密文的转换算法 加密密钥:通过加密算法进行加密操作用的密钥 解密:将密文转为明文的过程 解密算法:密文转为明文的算法 解密密钥:通过解密算法进行解密...原创 2015-01-24 15:27:50 · 312 阅读 · 0 评论 -
Java中List与Map初始化的一些写法
Java的在还没有发现新写法之前时,我一直是这么初始化List跟Map://初始化ListList list = new ArrayList();list.add("string1");list.add("string2");//some other list.add() code......list.add("stringN");//初始化MapMap map...原创 2014-03-05 22:55:54 · 312 阅读 · 0 评论 -
JAVA静态块加载实例
一个类要想运行,首先被Java虚拟机将class文件内部字节码指令读取至内存并且包装成一个Class类型的对象,这个过程称为类加载,Class类的一个对象是对某一个类的一个描述! 调用类的某一个方法时,第一步是类加载。注意!static块,也就是静态块,在类加载的时候就执行了,而且只执行一次,因为不可能进行第二次类加载,从这个意义上说,静态的成员是第一...2014-03-08 18:09:18 · 114 阅读 · 0 评论 -
Java安全—Java实现消息摘要算法加密
一.概述 我们打开Apache的官网的如下页面,可以看到md5,点击md5的超链接,在新打开的页面将看到一串字符串,即是MD5的消息摘要。 消息摘要算法有:MD(Message Digest)、SHA(Secure Hash Algorithm)、MAC(Message Authentication Code),它们的作用是验证数据完整性,是数字签名核心算法...原创 2015-01-30 22:35:23 · 451 阅读 · 0 评论 -
JAVA版身份证获取性别、出生日期及年龄
工作中需要根据身份证获取性别、出生日期及年龄,且要还要支持15位长度的身份证号码,网上搜索了一下,经过测试好像多少存在点问题,干脆自已写一个。CertificateNo.javapackage com.bijian.study;import java.util.Calendar;import java.util.regex.Pattern;/**...2015-02-08 17:49:32 · 1221 阅读 · 0 评论 -
Java安全—Java实现对称加密
对称加密算法的加密密钥和解密密钥是完全相同的。它是初等加密算法,常见的有DES、3DES、AES、PEB、IDEA等。一.对称加密算法DES IBM提交的算法,1998年之后不断被破解,实际使用中它不具备安全性。 DES(Data Encryption Standard)数据加密标准 实例:package com.b...原创 2015-02-26 22:08:53 · 139 阅读 · 0 评论 -
浅谈Java堆内存
一.Java中的堆空间是什么? 当Java程序开始运行时,JVM会从操作系统获取一些内存。JVM使用这些内存,这些内存的一部分就是堆内存。堆内存通常在存储地址的底层,向上排列。当一个对象通过new关键字或通过其他方式创建后,对象从堆中获得内存。当对象不再使用了,被当做垃圾回收掉后,这些内存又重新回到堆内存中。 二.如何增加Java堆空间? 在大多数32位机、...原创 2014-03-30 19:48:50 · 105 阅读 · 0 评论 -
细数JDK里的设计模式
一.结构型模式适配器模式: 用来把一个接口转化成另一个接口。java.util.Arrays#asList()javax.swing.JTable(TableModel)java.io.InputStreamReader(InputStream)java.io.OutputStreamWriter(OutputStream)javax.xml.bind.annotat...原创 2014-03-30 20:07:27 · 164 阅读 · 0 评论 -
JSONObject以及json串
一.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: 1.commons-lang-2.0.jar 2.commons-beanutils-1.7.0.jar 3.commons-collections-3.1.jar 4.commons-logging-1.1.1.jar 5.e...原创 2014-08-21 23:59:55 · 119 阅读 · 0 评论 -
JSON与JAVA数据的转换
JSON与JAVA数据的转换(JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。) 常见的java代码转换成json:1. List集合转换成json代码List list = new ArrayList();list.add("first");l...原创 2014-08-22 00:45:45 · 75 阅读 · 0 评论 -
jsonObject的使用
在项目中难免会用java处理json格式的数据,因此封装了一个JSONUtil工具类。JSONUtil.javapackage com.bijian.json.study;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util...原创 2014-08-22 01:01:59 · 97 阅读 · 0 评论