
java
千丈
越努力,越幸运。
展开
-
javap 指令集
栈和局部变量操作1.将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将int类型常量...原创 2020-03-27 00:06:07 · 206 阅读 · 0 评论 -
java自己实现一个lock锁
package com.dinglit.lock;import java.util.concurrent.LinkedBlockingQueue;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Loc...原创 2020-02-01 22:19:17 · 362 阅读 · 0 评论 -
Java线程的状态
public enum State { /** * Thread state for a thread which has not yet started. * 一个尚未启动的线程的状态。也称之为初始状态、开始状态。 */ NEW, /** * Thread state fo...原创 2020-01-12 18:49:31 · 256 阅读 · 0 评论 -
java修炼之道
一:Java语言学习对线程(thread),串行化,反射,网络编程,JNI技术,容器(Map,List, Iterator), 类加载器(ClassLoader),输入输出流,垃圾回收机制, 有比较深入的了解,最起码做过项目应用。有过Java项目的性能优化经验,最起码掌握一种性能监视工具的使用,熟悉JVM参数,最起码知道可以在JVM启动时指定不同垃圾回收原创 2016-04-07 10:22:57 · 1204 阅读 · 0 评论 -
字符串处理类
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.MessageDigest;/** * MD5加密工具类 */public class MD5EncoderUtil { private final static String[原创 2016-04-18 14:28:52 · 312 阅读 · 0 评论 -
文件处理类
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileReader;import java.io.FileWriter;import java.io.FilenameFilter;import java.io.IOException;impo原创 2016-04-18 14:33:08 · 272 阅读 · 0 评论 -
DAO基类
package com.lz.ctsframework.core.support;import java.util.List;import org.apache.ibatis.annotations.Param;/** * * 类说明:dao基类 * * * 详细描述: * * @author liuhuanchao * @sin原创 2016-04-18 14:34:35 · 1283 阅读 · 0 评论 -
异常抛出类
package com.lz.ctsframework.core.support;import java.text.MessageFormat;/** * * 类说明:Service层统一抛出的异常 * * * 详细描述: * * @author liuhuanchao * @since 2016-04-18 */public class ServiceEx原创 2016-04-18 14:36:55 · 455 阅读 · 0 评论 -
JSON处理类
import java.io.IOException;import java.io.StringReader;import java.io.StringWriter;import java.util.ArrayList;import java.util.Collection;import java.util.HashMap;import java.util.List;import j原创 2016-04-18 14:38:04 · 494 阅读 · 0 评论 -
Integer源码浅析
首先,看一下代码:package example;/** * * @author liuhuanchao * email 740970978 */public class Test { public static void main(String[] args) { Integer a = new Integer(10); Integer b = new Intege原创 2016-04-16 21:34:53 · 378 阅读 · 0 评论 -
Java中的Stack栈和Heap堆的区别
首先分清楚Stack,Heap的中文翻译:Stack—栈,Heap—堆。Heap和Stack分别存储数据的不同。 Heap(堆)Stack(栈)JVM中的功能内存数据区 内存指令区存储数据对象实例(1)基本数据类型, 指令代码,常量,对象的引用地址(2)1. 保存对象实例,实际上是保存对象实例原创 2016-04-16 18:50:26 · 491 阅读 · 0 评论 -
HashMap面试题
1. “你知道 HashMap 的工作原理吗?” “你知道 HashMap 的 get ()方法的工作原理吗?” “HashMap 是基于 hashing 的原理,我们使用 put (key, value)存储对象到 HashMap 中,使用 get (key)从 HashMap 中获取对象。当我们给 put ()方法传递键和值时,我们先对键调用 hashCode ()方法,返回的原创 2016-05-10 19:14:12 · 1364 阅读 · 0 评论 -
Java工程师成神之路
一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, jstack, jmap转载 2016-04-11 14:33:56 · 622 阅读 · 0 评论 -
使用System.arraycopy()实现数组之间的复制
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是: public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) src:源数组; srcPos:源数组要复制的起始位置; dest:目的数组; destPos:目的数组放置原创 2016-04-14 16:31:15 · 349 阅读 · 0 评论 -
集合类学习之Arraylist 源码分析
ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小(如果不指定capacity,默认是10)。/** * Constru原创 2016-04-14 16:23:46 · 958 阅读 · 0 评论 -
java 集合ArrayList及LinkList源码分析
首先是ArrayList的继承体系,代码如下:Java代码 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable 源码打印?public cl原创 2016-04-14 09:56:34 · 890 阅读 · 0 评论 -
Java String 源码浅析 JDK1.7
从一段代码说起:public void stringTest(){ String a = "a"+"b"+1; String b = "ab1"; System.out.println(a == b);}大家猜一猜结果如何?如果你的结论是true。好吧,再来一段代码:public void stringTest(){ String a = new Stri原创 2016-04-13 13:26:42 · 499 阅读 · 0 评论 -
java String源码解析
首先String类是final的(final 关键字用于类说明该类是不能被继承的)类属性private final char value[];//这是用于存储String字符的数组 private final int offset;//这是value数组的第一个有效的字符的index private final int count;//这是String中的字符个数原创 2016-04-13 13:07:33 · 390 阅读 · 0 评论 -
日期处理类
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;import org.apache.commons原创 2016-04-18 14:25:11 · 339 阅读 · 0 评论 -
关于ArrayList的5道面试题
1、ArrayList的大小是如何自动增加的?你能分享一下你的代码吗?这是最有技巧性的的一个问题,大多数人都无法回答。事实上,当有人试图在arraylist中增加一个对象的时候,Java会去检查arraylist,以确保已存在的数组中有足够的容量来存储这个新的对象。如果没有足够容量的话,那么就会新建一个长度更长的数组,旧的数组就会使用Arrays.copyOf方法被复制到新的数组中去,现有原创 2016-05-03 13:36:43 · 789 阅读 · 0 评论 -
Spring事务原理
一.事物的传播属性1. required 如果存在一个事务,则支持事务,如果没有事务则开启一个新事务;被设置这个级别时,会为每一个被调用的方法创建一个逻辑事务域。如果前面的方法已经创建了事务,那么后面的方法支持当前的事务,如果当前没有事务会重新建立事务。2. required_new 新建事务,如果当前存在事务,就把当前事务挂起3. supports 支持当前事务,如果当前没有事务,就...原创 2019-01-11 17:23:44 · 214 阅读 · 0 评论 -
CGLIB动态代理与JDK动态区别
java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。而cglib动态代理是利用asm开源包,对代理对象类的class文件加载进来,通过修改其字节码生成子类来处理。在Spring中。1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP3、如果...原创 2019-01-11 17:03:45 · 240 阅读 · 0 评论 -
Java中的“池”概念
在系统设计中,我们尝尝会使用到”池”的概念。Eg:数据库连接池,socket连接池,线程池,组件队列。”池”可以节省对象重复创建和初始化所耗费的时间。对那些被系统频繁请求和使用的对象,使用此机制可以提高系统运行性能。”池”是一种”以空间换时间”的做法,我们在内存中保存一系列整装待命的对象,供人随时差遣。与系统效率相比,这些对象所占用的内存空间太微不足道了。 ...原创 2019-01-11 17:02:25 · 2339 阅读 · 0 评论 -
springboot全局异常捕捉
在一个项目中的异常我们我们都会统一进行处理的,那么如何进行统一进行处理呢?新建一个类CommonExceptionAdvice,在class注解上@ControllerAdvice,在方法上注解上@ExceptionHandler(value = Exception.class),具体代码如下:package com.dinglit.exception;import java.原创 2017-06-11 17:43:57 · 3413 阅读 · 0 评论 -
maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
用maven搭建的java web项目,上传到git仓库后,当同事clone下来项目,部署到tomcat运行时,就报了如下错误,即启动web项目时,加载web.xml文件,找不到spring的监听器,控制台错误如下十月 30, 2015 4:42:36 下午 org.apache.catalina.core.AprLifecycleListener init信息: The APR b原创 2016-01-16 14:19:18 · 2559 阅读 · 0 评论 -
springboot异常之Whitelabel Error Page解决办法
Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Sun Jun 11 09:07:08 CST 2017There was an unexpected error (type=Not Found, status=40原创 2017-06-11 09:12:59 · 22900 阅读 · 5 评论 -
spring boot起步之Hello World【从零开始学Spring Boot】
以前spring开发需要配置一大堆的xml,后台spring加入了annotaion,使得xml配置简化了很多,当然还是有些配置需要使用xml,比如申明component scan等。 Spring开了一个新的model spring boot,主要思想是降低spring的入门,使得新手可以以最快的速度让程序在spring框架下跑起来。 那么如何写Hello w原创 2017-06-07 23:10:36 · 778 阅读 · 0 评论 -
spring boot起步之返回json数据
在做如下操作之前,我们对之前的Hello进行简单的修改,我们新建一个包com.dinglit 然后新建一个类HelloControoler, 然后修改App.java类,主要是的这个类就是一个单纯的启动类。package com.dinglit;import org.springframework.boot.SpringApplication;import org.springframe原创 2017-06-11 09:29:53 · 654 阅读 · 0 评论 -
Springboot 热部署的两种方式
在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的 Class 文件,这个文件里记录着和代码等对应的各种信息,然后 Class 文件将被虚拟机的 ClassLoader 加载。而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的 ClaassLoader 进行加载该文件,经过一系列原创 2017-06-11 16:09:44 · 2093 阅读 · 0 评论 -
AbstractCollection<E>源码解读
package java.util;//提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作public abstract class AbstractCollection implements Collection { //每个实现该抽象类的,需要提供一个空的构造函数 public AbstractCollection() { } //返回迭原创 2016-04-21 13:58:42 · 527 阅读 · 0 评论 -
java为什么不直接实现Iterator接口,而是实现Iterable
Iterator是迭代器类,而Iterable是接口。好多类都实现了Iterable接口,这样对象就可以调用iterator()方法。 看一下JDK中的集合类,比如List一族或者Set一族,都是实现了Iterable接口,但并不直接实现Iterator接口。仔细想一下这么做是有道理的。 因为Iterator接口的核心方法next()或者hasNext原创 2016-04-20 15:07:55 · 2490 阅读 · 0 评论 -
transient详解
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。 ansient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,tran原创 2016-04-20 14:06:56 · 1360 阅读 · 0 评论 -
AbstractSequentialList源码分析
此类提供了 List 接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作。对于随机访问数据(如数组),应该优先使用AbstractList,而不是先使用此类。从某种意义上说,此类与在列表的列表迭代器上实现“随机访问”方法(get(int index)、set(int index, Object element)、set(int index, Obje原创 2016-05-04 14:26:21 · 481 阅读 · 0 评论 -
Java的线程模型
由于Java是纯面向对象语言,因此,Java的线程模型也是面向对象的。Java通过Thread类将线程所必须的功能都封装了起来。要想建立一个线程,必须要有一个线程执行函数,这个线程执行函数对应Thread类的run方法。Thread类还有一个start方法,这个方法负责建立线程,相当于调用Windows的建立线程函数CreateThread。当调用start方法后,如果线程建立成功,并自动调用Th原创 2016-04-19 15:09:32 · 669 阅读 · 0 评论 -
线程简介
一、线程概述线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少建立一个线程(这个线程被称为主线程)来作为这个程序运行的入口点。因此,在操作系统中运行的任何程序都至少有一个主线程。进程和线程是现代操作系统中两个必不可少的运行模型。在操作系统中可以有多个进程,这些进程包括系统进原创 2016-04-19 15:06:49 · 388 阅读 · 0 评论 -
centos 安装jdk
1、下载jdk到/usr/java目录下,解压之2、添加环境变量vi /etc/profile添加以下内容:export JAVA_HOME=/usr/java/jdk1.7export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport P原创 2016-04-12 16:53:56 · 296 阅读 · 0 评论 -
HTTP协议的头信息详解
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可 选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域 值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。转载 2016-04-08 15:21:26 · 331 阅读 · 0 评论 -
HTTP协议详解(真的很经典)
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。HTTP协议的主要特点可概括如下:1.支持客户/服务器模转载 2016-04-08 15:19:39 · 326 阅读 · 0 评论 -
使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样
使用QQ第三方登录时,手机应用和网站应用对同一个QQ号,获取到的openid不一样openid生成是根据应用的appid和QQ号的一些信息加密生成,对于一个appid和QQ号来说,openid是唯一的手机应用和网站应用使用的appid不是同一个,所以,获取到的openid也不会相同那么问题来了同一个QQ,通过手机端第三方登录进去,和通过网站登录进去,因为openid不一样,会生原创 2016-01-16 13:49:34 · 7596 阅读 · 0 评论 -
正则表达式收集
1.验证手机号 /^(1(([35][0-9])|(47)|[8][0123456789]))\d{8}$/2.验证数字 isNaN(number)==true;// 是数字原创 2016-01-16 13:46:52 · 291 阅读 · 0 评论