随笔分类 - Java
摘要:说明:本文乃学习整理参考而来. 一、Java类加载机制 1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能
阅读全文
摘要:在讲解String之前,我们先了解一下Java的内存结构。 一、Java内存模型 按照官方的说法:Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。 JVM主要管理两种类型内存:堆和非堆,堆内存(Heap Memory)是在 Java 虚拟机启动时创建,非堆内存(N
阅读全文
摘要:注解作用:每当你创建描述符性质的类或者接口时,一旦其中包含重复性的工作,就可以考虑使用注解来简化与自动化该过程。 Java提供了四种元注解,专门负责新注解的创建工作。‘ 元注解 @Target @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、
阅读全文
摘要:文件上传 普通文件和url文件 主要用来学习使用common-fileupload.jar和java.net.httpURLConnection 普通文件: url文件上传: 更多详细关于HttpURLConnection的学习资料请参考: HttpURLConnection学习 JDK中的URLC
阅读全文
摘要:HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身
阅读全文
摘要:Commons-configuration Commons-FileUploadCommons DbUtilsCommons BeanUtils Commons CLI Commons CodecCommons Collections Commons DBCPCommons HttpClient C
阅读全文
摘要:主题:多线程进阶 多线程的一些核心内容以及要关注的细节。 一、线程的实现 继承thread类重写run()方法和实现Runnable接口实现run()方法 注意点:new线程实例时建议加线程名和要处理下线程的中断异常([InterruptedException]) 二、不得不提的[ThreadLoc
阅读全文
摘要:多线程下[HashMap]的问题: 1、多线程put操作后,get操作导致死循环。 2、多线程put非NULL元素后,get操作得到NULL值。 3、多线程put操作,导致元素丢失。 本次主要关注[HashMap]-死循环问题。 为何出现死循环? 大家都知道,HashMap采用链表解决Hash冲突,
阅读全文
摘要:一、ThreadLocal基础知识 原始线程现状: 按照传统经验,如果某个对象是非线程安全的,在多线程环境下,对对象的访问必须采用synchronized进行线程同步。但是Spring中的各种模板类并未采用线程同步机制,因为线程同步会影响并发性和系统性能,而且实现难度也不小。 ThreadLocal
阅读全文
摘要:集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的
阅读全文
摘要:一、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
阅读全文