摘要:
一、Arrays.sort()数组排序Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型:采用调优的快速排序; 对象类型:采用改进的归并排序。1、对于基本类型源码分析如下(以int[]为例): Java对Primitive(int,float等原型数据)数组采用快速排序,对Object对象数组采用归并排序。对这一区别... 阅读全文
摘要:
一、源码解析1、 LinkedList类定义。 1 public class LinkedList 2 extends AbstractSequentialList 3 implements List, Deque, Cloneable, java.io.SerializableLinkedList 是一个继承于AbstractSequentialList的双向链表。它也... 阅读全文
摘要:
一、 ArrayList概述: ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函 阅读全文
摘要:
一、 HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null元素。 二、 HashSet的实现: 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用H 阅读全文
摘要:
一、HashMap概述 HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 值得注意 阅读全文
摘要:
在开发工作中,我们常常需要获取客户端的IP。一般获取客户端的IP地址的方法是:request.getRemoteAddr();但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。 原因:由于在客户端和服务之间增加了中间代理,因此服务器无法直接拿到客户端的IP,服务器 阅读全文
摘要:
上传文件时经常需要做文件类型判断,例如图片、文档等,普通做法是直接判断文件后缀名,而文艺青年为了防止各种攻击同时也会加上使用文件头信息判断文件类型。原理很简单:用文件头判断,直接读取文件的前2个字节即可。 1 public class FileUtil { 2 /** 3 * byte数组转换成16进制字符串 4 * 5 * @param src ... 阅读全文
摘要:
一、Log4j简介Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。1、LoggersLoggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。... 阅读全文
摘要:
概述:Java解析apk文件,获取apk文件里的包名,版本号,图标文件等;功能:可以提供给windows和linux平台使用;原理:利用aapt.exe或者aapt这些anroid平台解析apk文件的工具,借用终端shell调用命令解析输出信息;代码: 这里贴出一些关键代码,并给出代码注释,如下 1 package com.apkutils; 2 3 import java.io... 阅读全文
摘要:
一:代码图解: 二:配置文件: 三:获取配置文件信息 PathUtil.java PropertiesConfig.java PropertyReadUtil.java 四:JDBC 获取连接的封装 阿里巴巴开源的数据库连接jar 连接工具类 :DruidDataSourceUtil.java c3 阅读全文
摘要:
1:javascript对JSON的支持2:java对JSON的支持 alibaba->fastjson 封装工具类: 1 import com.alibaba.fastjson.JSONObject; 2 3 public class JSONBuilder { 4 JSONObject json = new JSONObject(); 5 6 publi... 阅读全文
摘要:
JFreeChart主要用来各种各样的图表,这些图表包括:饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等 (源代码下载) 示例程序运用的jar包: jcommon-1.0.17.jar jfreechart-1.0.14.jar 1:普通柱状图 这是 阅读全文
摘要:
一、Java数组初始化Java数组是静态的,即当数组被初始化之后,该数组的长度是不可变的。Java数组使用之前必须先对数组对象进行初始化,所谓初始化,就是为数组的所有元素分配内存空间,并为每个数组元素指定初始值。(文章来源于李刚老师的《突破java程序员的16课》)1:基本类型数组的两种初始化方式静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度。动态初始化:初始化时程序... 阅读全文
摘要:
下面这段代码可用于Jsp+Servle+JavaBean中做验证码: 1 2 255) fc=255; 6 if(bc>255) bc=255; 7 int r=fc+random.nextInt(bc-fc); 8 int g=fc+random.nextInt(bc-fc); 9 int b=fc+random.ne... 阅读全文
摘要:
1:java中垃圾回收机制主要完成下面两件事情:跟踪并监控每个java对象,当某个对象处于不可达状态时,回收该对象所占的内存清理内存分配,回收过程中产生的内存碎片2:对于JVM的垃圾回收机制来说,是否回收一个对象的标准是:是否还有引用变量引用该对象? 只要还有引用变量引用该对象,立即回收机制就不会回收它。3:基本上,可以把JVM内存中对象引用理解成一种有向图,把引用变量,对象都当成为有向图... 阅读全文
摘要:
1. java.lang.NullPointerException(空指针异常)调用了未经初始化的对象或者是不存在的对象经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。对数组操作中出现空指针,即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还需要对每个元素都进行初始... 阅读全文
摘要:
一、为什么要编码?由于人类的语言太多,因而表示这些语言的符号太多,无法用计算机的一个基本的存储单元----byte来表示,因而必须要经过拆分或一些翻译工作,才能让计算机能理解。byte一个字节即8个bit,所以能表示的字符范围是0~255个,这满足不了人类的需要,要解决这个矛盾必须需要一个新的数据结构char,从char到byte必须经过编码。二、常用编码介绍ASCII码 总共128... 阅读全文
摘要:
Spring IOC设计原理解析:本文乃学习整理参考而来一、什么是Ioc/DI? IoC 容器:最主要是完成了完成对象的创建和依赖的管理注入等等。先从我们自己设计这样一个视角来考虑:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的... 阅读全文
摘要:
项目代码pom.xml 文件Quartz 的包是整个项目不可缺少的 1 2 3 4.0.6.RELEASE 4 5 2.2.1 6 7 8 9 10 junit 11 junit 12 3.8.1 1... 阅读全文
摘要:
1 //配置类 2 3 package test; 4 5 import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; 6 import org.springframework.context.annotation.ComponentScan; 7 import org.springfram... 阅读全文