
java基础
LJHSkyWalker
热爱各种技术
星战迷!
展开
-
java中 int、char、long各占多少字节数
所谓的占用字节数 就是申请内存的时候所占的空间大小byte1字节最小值是 -128(-2^7);最大值是 127(2^7-1);boolean至少1字节这种类型只作为一种标志来记录 true/false 情况;short2字节最小值是 -32768(-2^15);最大值是 32767(2^15 - 1);char2字节最小值是 \u0000(即为0);最大值是 \uffff(即为65,535);i...原创 2018-06-04 23:22:36 · 42709 阅读 · 3 评论 -
java 关于初始化的一些知识点
1、成员初始化java尽力保证,所有的变量在使用前都能得到恰当的初始化对于方法中的局部变量,Java为了贯彻这种思想,会对所有未给出默认值的局部变量予以编译错误的提示对于类中的成员变量,Java会自动为没有做初始化的基本类型数据变量赋予一个默认值,默认值参见下表booleanfalsechar[]byte0short0int0long0float0.0double0.0referencenull2...原创 2018-07-11 23:22:16 · 204 阅读 · 0 评论 -
Java异常实现 及 原理
Java的基本理念是:结构不佳的代码 不能运行发现代码错误的时机: 1、程序编译期间,由编译器对代码进行编译,遇到错误会给出提示 2、程序运行期间,运行时出现了不可预料的错误,会抛出异常异常的意义:不允许程序沿着其正常的路径继续走下去,并告诉我们程序发生了什么问题。一个异常的执行顺序1、new一个异常对象2、终止当前的执行程序。3、弹出异常对象的引用。4、异常处理机制接管被终止的执行程...原创 2018-07-07 23:16:28 · 8087 阅读 · 0 评论 -
同步阻塞 异步阻塞 同步非阻塞 异步非阻塞
我喜欢一个女孩,于是每天就盯着屏幕守候在手机旁边等待她的来信---同步阻塞时间长了眼睛疼,于是就开启了来信提醒,听到声音时唤醒我迷醉的心---异步阻塞老醉生梦死也不是事儿,于是就一边关注着屏幕,一边做着自己的工作---同步非阻塞后来发现一心二用太tm累了,于是乎主要干着自己的工作,喜欢的女孩来电提醒我再去关注----异步非阻塞 同步和异步区别:相当于状态的变化是又我主动发现还是...原创 2018-07-25 14:08:45 · 182 阅读 · 0 评论 -
什么情况下会发生堆内存溢出,栈内存溢出,结合实例说明
一、 栈溢出(StackOverflowError)栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变量表,操作数栈,动态链接,方法出口灯信息。局部变量表又包含基本数据类型,对象引用类型(局部变量表编译器完成,运行期间不会变化)所以我们可以理解为栈溢出就是方法执行是创建的栈帧超过了栈的深度。那么最有可能的就是方法递归调用产生这种结果。publ...原创 2018-10-09 14:58:17 · 35435 阅读 · 3 评论 -
JDK动态代理 - 实现一个最简单的代理demo附赠代码解析
前言所谓代理其实就是代你打理一些事情,比如你选择了一个三天两晚的特色主题游产品。那么你需要做的仅仅是交钱就好,剩下的机票酒店签证路途门票等一系列事情,旅行社会帮你搞定。动态代理技术在Spring和Mybatis中应用十分广泛,举个例子我们平时写代码只需要编写增删改查的强业务关联代码即可,至于开关数据库连接,事物回滚等操作,都是基于代理的方式去帮我们搞定。代理方法会在我们的sql执行前,执行...原创 2018-10-28 17:12:20 · 236 阅读 · 0 评论 -
三言两语说清类加载器是做什么的 实现原理是什么
一、类加载器是做什么的1、将Class文件加载到JVM。2、根据父级优先原则,决定一个类由谁加载。3、将Class文件解析成JVM认识的结构。二、类加载器的种类1、BootstrapClassLoader,顶级类加载器,加载JVM自身需要的类。2、ExtClassLoader,他负责加载扩展类,如jre/lib/ext或java.ext.dirs目录下的类。3、AppC...原创 2018-10-25 23:46:40 · 925 阅读 · 0 评论 -
结合源码分析==与equals与hashCode
.equals()与==equals是所有类都具有的方法,注意基本八种数据类型是不具备equals方法的,只有他们对应的包装类才具备。//Character public boolean equals(Object obj) { if (obj instanceof Character) { return value == ((Ch...原创 2018-10-31 21:42:53 · 172 阅读 · 0 评论 -
eclipse用普通java项目实现最简单的SPI Demo
先上源码及实现效果后解释:1、项目结构请注意META-INF文件夹建的位置。2、编写一个接口:IUserManagerServicepackage service;public interface IUserManagerService { public void add(); public void delete(); public void updat...原创 2018-11-02 22:26:10 · 673 阅读 · 0 评论 -
运用反射原理 + POI工具写一个java接口doc工具 (扫描包下接口并生成简单接口文档)
目标:通过java反射的方式,获取一个包结构下所有的接口数据。之后通过POI工具生成一份Excel文档,来实现最简单的JavaInterfaceDoc.相应源码以上传至基友网站:https://github.com/liujinghui1994/JavaInterfaceDocTool.git首先我们先定义一个Excel数据的VO:package com.util.doctool;...原创 2018-11-15 00:41:15 · 721 阅读 · 0 评论 -
RandomAccessFile简介与使用
今儿翻阅jdk源码的时候,无意间发现了RandomAccessFile这个类,从来没见过,也没使用过,带着好奇心,我决定深入了解一下这个类的意义和使用方法。从字面意思来看这个:随机 通行 文件其实个人感觉就是:一款功能较丰富的文本编辑api翻阅类的注释可以看出,这是一个增强版的文本处理类。曾经的我们如何处理文本以前我们要处理一个文件会怎么做?是不是如下图所示:上面是...原创 2019-03-15 00:20:08 · 91789 阅读 · 13 评论 -
将ArrayList集合转换成数组
ArrayList集合转换成数组以String类型为例,我们使用List接口的toArray()方法。用法1:Object[] toArray();用法2:<T> T[] toArray(T[] a);注意这里有两种写法,使用示例如下所示 用法1 List<String> stringList2 = new Array...原创 2019-04-18 19:22:16 · 48194 阅读 · 2 评论 -
获取指定日期的前一天 后一天、前一周 后一周、前一年 后一年等
/** * 获得指定日期的前一天 * @param currentTime * @return * @throws Exception */ public static long getSpecifiedDayBefore(long currentTime){ Calendar c = Calendar.getI...原创 2019-05-08 10:39:07 · 2090 阅读 · 0 评论 -
finalize是什么,干什么用,有必要用么
finalize是一个Object的方法,基本用法:Class A{ void finalize(){ //do sth... super.finalize(); }}Java不同于c++的一点是:c++中销毁内存的对象必须要用到析构函数,而用了析构函数只要程序没问题的话对象一定会被销毁。java中销毁对象的方式是垃圾回收,但是即使你调用了...原创 2018-07-11 22:08:34 · 3235 阅读 · 1 评论 -
Serializable接口描述
Serializablepackage java.io;public interface Serializable {}以上是它的源代码 什么都没有。如果一个接口里面什么内容都没有,那么这个接口是一个标识接口。标识接口是没有任何方法和属性的接口。标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。在Java中的这个Serializable接口是给JVM看的,告诉...原创 2018-07-03 22:55:58 · 351 阅读 · 0 评论 -
int和Integer的区别
1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、Integer的默认值是null,int的默认值是05、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过n...转载 2018-06-04 23:29:41 · 156 阅读 · 0 评论 -
static含义
之前讲过一篇关于this关键字的文章,主要介绍了this的三种用法,分别是1、调用本类属性2、调用本类中其他方法3、返回对象的值。而今天说的static方法就是一个没有this方法的方法,因为static方法内部不能调用非static方法。static独立于类而存在,不需要依赖特定的对象实例即可访问,被类的所有实例共享。静态成员变量,随着类的加载而存在,随着类的消失而消失。静态变量存在于方法区中。...原创 2018-06-11 23:34:32 · 222 阅读 · 0 评论 -
为什么要引入连接池
一、问题当应用在执行持久化数据到数据库的时候,会使用jdbc连接数据库,并插入数据我们都知道jdbc在连接数据库分成如下步骤建立数据库连接增删改查数据关闭数据库连接如果有上万个请求同时进行持久化的操作,那就意味着开关数据库的次数达到上万次,这样会带来一些问题1、如果持久化的时候出现异常,导致数据库没有正确的关闭连接,会造成大量的连接积压在数据库的会话列表中,出现数据库无法访问的情况。(专有名词:数...原创 2018-06-13 23:11:30 · 817 阅读 · 0 评论 -
图文并茂的阐述clone方法 &amp;amp;&amp;amp; 了解深浅拷贝的概念
clone代表克隆的意思,也就是说把一只绵羊复制粘贴一份,生成一个新的绵羊。可以看出两只绵羊外形都是一样的,DNA是一样的。在JAVA中也是如此,如果你希望得到一份对象的拷贝副本,那么就用克隆方法吧。源码:protected native Object clone() throws CloneNotSupportedException;当某各类要复写clone方法时,需要继承Cloneable接口...原创 2018-06-15 15:19:15 · 336 阅读 · 0 评论 -
在java中 如何写this
this是一个神奇的东西,你经常用它,但是它真正代表的是什么你知道么。如何在合适的位置添加this让我们的代码更好看,下面我们就由浅入深的一探究竟。首先介绍this的第一种用法:this调用本类中的属性,也就是类中的成员变量;package com.umbrella.common.model;public class Person { private String name; ...原创 2018-06-01 22:29:26 · 493 阅读 · 0 评论 -
当你使用HttpSession时,可以做哪些操作
首先HTTP是无状态的,也就意味着它并不会记住你是谁你在干什么你之前干过什么等等。所以为了让客户端跟服务器之间的HTTP通信拥有记忆能力,Cookie和Session就应运而生。Cookie保存在客户端:Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。Session保存在服务器端:当用户请求来...原创 2018-09-12 20:58:44 · 1900 阅读 · 0 评论 -
wait方法和sleep方法的区别
当类执行wait方法,只能在同步控制方法或者同步控制块里面使用:虽说我有老婆,但是这位小姑娘真可人!聊她!跟现在的老婆离婚(放弃对象锁)!之后发现这姑娘喜欢抽烟喝酒烫头,唤醒了懵懂的我(notify),她不合适,接着非诚勿扰(锁池)找老婆(对象锁)!当一个线程执行sleep方法,可以在任何地方使用:我有老婆(对象锁)!想睡就睡!随便我在哪睡!我的永远是我的!...原创 2018-06-09 21:40:27 · 627 阅读 · 0 评论 -
什么是System.getProperties();Properties里都有哪些信息
//---------------------------jdk信息---------------------//Java运行时的数据位数:sun.arch.data.model=64 编译器:sun.management.compiler=HotSpot 64-Bit Tiered Compilers sun.io.unicode.encoding=UnicodeLittle CPU字节类型:...原创 2018-06-25 23:10:34 · 8778 阅读 · 0 评论 -
言简意赅的描述什么是事务 和 Spring事务处理
了解Spring事物前 先要了解ACID(原子性,一致性,隔离性,持久性)这是可靠数据库所应具备的几个特性。 原子性: 网上买一件商品要执行两个操作,1,扣款。2、发货。 这两个要么都执行成功,要么都失败,不能没交钱就发货,也不能光交钱不发货,怎么都说不过去是吧。 一致性: 就是在一定的规则下你的数据要是完整的,比如银行开户,可能要往很多个表插入你的各种信息,其中一个表没有插入都会导致数据库...原创 2018-06-26 17:54:32 · 2125 阅读 · 4 评论 -
字符串String的+和+=及循环操作String的原理
String对象是不可变的:意思就是无论是对String的新增或修改,出现一个全新的String内容时,都意味着诞生了一个新的对象。例如:String a = "ljh";String b = "ljh";String c = "ljh";System.out.println(a==b);System.out.println(b==c);但是这种不可变性会产生一些性能上的问题,所以JVM...原创 2018-07-03 00:06:38 · 9563 阅读 · 0 评论 -
java中的注解是什么 如何自定义一个注解 通过实例分析并完成注解一个model来生产SQL脚本的工具
注解的意义:使得代码更加的整洁,并且便于维护。java目前内置了三种注解:override、suppressWarning和Deparecatedoverride:覆盖超类的方法。suppressWarning:关闭不当的编译器警告信息Deparecated:使编译器发出警告同时Java 还提供了四种元注解,他们用于为注解进行注解。我们将在下面的代码中进行介绍。注解元素:所有基本类型 、Strin...原创 2018-07-10 00:57:31 · 483 阅读 · 0 评论 -
匹配一个/** ... */注释块儿的正则表达式
如果要匹配这样的注释,使用下面的正则表达式\/\*(\s|.)*?\*\/原创 2018-07-16 23:12:27 · 7754 阅读 · 1 评论 -
获取当前时间的00:00:00:000 和 当月1日00:00:00:000
获取当天时间的00:00:00:000Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, ...原创 2019-05-08 20:42:06 · 2977 阅读 · 0 评论