Java
文章平均质量分 61
zIconKr
这个作者很懒,什么都没留下…
展开
-
Java基本类型,默认取值,取值范围,数据转换
自动类型转换Java支持自动类型转换的类型如下所示,左边的数值类型可以自动类型转换成箭头右边的数值类型。1),byte->short->int->long->float->double2),char->int->long->float->double { // 下面3行代码int类型自动转换成float类型 int a = 6原创 2017-10-06 18:38:15 · 326 阅读 · 0 评论 -
Java正则表达式的语法与示例
Java正则表达式的语法与示例正则表达式是什么?用我的理解就是一个表达式。用来匹配,替换,判断字符串,之前业务就出现过判断返回值是否为邮箱。以下内容来自于http://baike.xsoftlab.net/view/207.html#3更多干货等你来拿 http://www.itit123.cn/java正则表达式正则表达式语法java正则表达式语法java正则表达式概要:Java正则表转载 2017-10-21 18:22:42 · 247 阅读 · 0 评论 -
Math类四个常用方法辨析,floor、ceil、round、rint
1.Math.floorfloor,英文原意:地板。 Math.floor 函数是求一个浮点数的地板,就是 向下 求一个最接近它的整数,它的 值肯定会小于或等于这个浮点数。再看下面的例子的时候,脑中想象一个竖着的数轴,负数在下,正数在上。这样对于向上取整和向下取整的说法,可能会更容易理解。例子: System.out.println("Math.floor(-1.1): " + M原创 2017-10-13 10:42:52 · 467 阅读 · 0 评论 -
关于死锁的四个条件以及如何解决死锁的记录
一、什么是死锁?我们先看看这样一个生活中的例子:在一条河上有一座桥,桥面较窄,只能容纳一辆汽车通过,无法让两辆汽车并行。如果有两辆汽车A和B分别由桥的两端驶上该桥,则对于A车来说,它走过桥面左面的一段路(即占有了桥的一部分资源),要想过桥还须等待B车让出右边的桥面,此时A车不能前进;对于B车来说,它走过桥面右边的一段路(即占有了桥的一部分资源),要想过桥还须等待A车让出左边的桥面,此时B车也不转载 2017-10-15 19:38:24 · 682 阅读 · 0 评论 -
Java多线程面试题及回答
1.现在有T1,T2,T3三个线程,你怎么样保证T2在T1执行完后执行,T3在T2执行完后执行。这个考察的知识点是对join的使用实际上先启动三个线程中哪一个都行,因为在每个线程的run方法中用join方法限定了三个线程的执行顺序。即便是第二个线程先启动执行了,由于t1.join()方法,使得线程2需要等待线程1运行结束后才能继续运行。所以三个线程的启动顺序无关紧要!!原创 2017-10-22 19:14:08 · 301 阅读 · 0 评论 -
HashMap的工作原理
先来些简单的问题“你用过HashMap吗?” “什么是HashMap?” “你为什么用到它?”几乎每个人都会回答“是的”,然后回答HashMap的一些特性,譬如HashMap可以接受null键和值,而HashTable则不能,HashMap是非synchronized,HashMap很快;以及HashMap存储的是键值对等等。这显示出你已经用过HashMap,而且对它相当的熟悉。但是转载 2017-10-14 19:07:44 · 234 阅读 · 0 评论 -
Log4j和Log4j2的区别(SpringBoot中配置使用)
官方文档:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html前言:日志的级别:默认的几个级别:trace说明: 1.级别之间是包含关系,意思是如果你设置日志级别是trace,则大于等于这个级别的日志都会输出。 2.trace:追踪,就是程序推进一下,你就原创 2017-11-28 15:48:50 · 3753 阅读 · 0 评论 -
说说Java的Comparable 与 Comparator
转自公众号 IT哈哈Comparable和Comparator是Java核心API提供的两个接口。从它们的名字就可以看出,他们用于比较对象的大小。接下来的两个例子来回答这个问题。这个简单的例子就是比较两种HaHa的尺寸。当阅读完下面的代码,你就知道如何使用Comparable和Comparator。1、Comparable一个类实现Comparable接口,是为了可以让其自转载 2017-11-21 22:57:07 · 265 阅读 · 0 评论 -
Java8之Lambda表达式
前言:为什么使用lambda表达式Lambda是一个匿名函数,我们可以把Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。一、Lambda表达式语法Lambda表达式在Java语言中引入了一个新的语法元素和操作符。这个操作符为“->”,该操作符被称为Lambda原创 2017-12-17 16:23:45 · 319 阅读 · 0 评论 -
Java8之强大的Stream API
前言:了解StreamStream 是Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用SQL 执行的数据库查询。也可以使用Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。流(Stream)到底是什么呢原创 2017-12-17 16:11:20 · 426 阅读 · 0 评论 -
Java8之Optional类(避免空指针异常)
Optional类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。常用方法:Optional.of(T t) : 创建一个Optional 实例Optional.empty() : 创建一个空的Optional 实例Optional.ofNull原创 2017-12-18 13:24:39 · 1382 阅读 · 1 评论 -
Java8之新时间日期API
一、使用LocalDate、LocalTime、LocalDateTimeLocalDate、LocalTime、LocalDateTime类的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。他们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表达法原创 2017-12-18 15:51:41 · 409 阅读 · 0 评论 -
什么是Java OOM?如何分析及解决oom问题?
最近查找了很多关于OOM,甚至于Java内存管理以及JVM的相关资料,发现这方面的东西太多了,竟有一种眼花缭乱的感觉,要想了解全面的话,恐非一篇文章能说清的,因此按照自己的理解整理了一篇,剩下的还需要继续学习。1)什么是OOM? OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown ...转载 2018-03-07 15:27:16 · 960 阅读 · 0 评论 -
使用Lombok来精简你的项目代码
什么是Lombok一言以蔽之:lombok是一种工具,提供了简单的注解来简化我们的重复冗长Java代码。比如一个Java Bean,注解了lombok的@Data:@Datapublic class NormalBean { private String name;}等价于以下代码,Getter/Setter,toString,equals和h...转载 2018-03-07 17:07:46 · 353 阅读 · 0 评论 -
redis缓存在项目中的使用
原文:[原文地址](https://www.cnblogs.com/fengli9998/p/6755591.html)关于redis为什么能作为缓存这个问题我们就不说了,直接来说一下redis缓存到底如何在项目中使用吧:1.redis缓存如何在项目中配置? 1.1redis缓存单机版和集群版配置?(redis的客户端jedis常用)?1234567891011...转载 2018-04-01 23:28:54 · 9499 阅读 · 0 评论 -
Java多线程的同步机制(synchronized)
原文地址一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就把锁还给同步对象,其他在锁池转载 2017-10-12 10:14:24 · 611 阅读 · 0 评论 -
Java基础之子父类调用
Java基础转载 2017-10-06 15:35:07 · 453 阅读 · 0 评论 -
Java中的匿名内部类总结
匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有一个前提条件:必须继承一个父类或者实现一个接口实例1:不使用匿名内部类来实现抽象方法abstract class Person { public abstract void eat();} class Child extends Person {原创 2017-10-07 21:03:18 · 200 阅读 · 0 评论 -
Java类的初始化过程
1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;3.其次,初始化父类中的普通成员变量和代码块,再执行父类的构造方法;4.最后,初始化子类的普通成员变量和代码块,再执行子类的构造方法;例题,执行以下代码的输出:(1)首先初始化父类的普通成员变量和代码块,原创 2017-10-07 21:39:14 · 249 阅读 · 0 评论 -
Java 8中HashMap冲突解决
在Java 8 之前,HashMap和其他基于map的类都是通过链地址法解决冲突,它们使用单向链表来存储相同索引值的元素。在最坏的情况下,这种方式会将HashMap的get方法的性能从O(1)降低到O(n)。为了解决在频繁冲突时hashmap性能降低的问题,Java 8中使用平衡树来替代链表存储冲突的元素。这意味着我们可以将最坏情况下的性能从O(n)提高到O(logn)。在Java 8中使用常原创 2017-10-08 09:44:40 · 297 阅读 · 0 评论 -
JVM内存配置参数
-Xmx:最大堆大小-Xms:初始堆大小-Xmn:年轻代大小-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值Survivor区有两个,即将年轻代分为5份,两份Survivor,三份Eden例题:对于JVM内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3原创 2017-10-08 11:19:19 · 598 阅读 · 0 评论 -
Java性能优化之JVM GC(垃圾回收机制)
JVM GC(垃圾回收机制)在学习Java GC之前,我们需要记住一个单词:stop-the-world。它会出现在任何一种GC算法中。stop-the-world意味着JVM因为需要执行GC而停止了应用程序的执行。当stop-the-world发生时,除GC所需的线程外,所有的线程都进入等待的状态,直到GC任务完成。GC优化很多时候就是减少stop-the-world的发生。原创 2017-10-08 13:12:55 · 4465 阅读 · 1 评论 -
泛型代码与JVM
1.创建泛型对象的时候,一定要指出类型变量T的具体类型。争取让编译器检查出错误,而不是留给JVM运行的时候抛出类不匹配的异常。2.JVM如何理解泛型概念---类型擦除。事实上,JVM并不知道泛型,所有的泛型在编译阶段都已经被处理成了普通类和方法。处理方法很简单,我们称为类型变量T的擦除(erased)。总结(1)虚拟机中没有泛型,只有普通类与方法。(2)在编译阶段,所有泛型类的原创 2017-10-17 21:07:18 · 599 阅读 · 0 评论 -
内部类and调用静态or非静态内部类
class Out{ //非静态内部类 class InsideOne{} //静态内部类 static class InsideTwo{}}public class Ex1 { public static void main(String[] args) { //非静态内部类 Out.InsideOne ob1 = new Out().new InsideOne();原创 2017-10-06 12:51:46 · 299 阅读 · 0 评论 -
Java工具之javac---javadoc--javah--jar
javac编译javadoc它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档javah 把java代码声明的JNI方法转化成C/C++头文件。jar 将许多文件组成成一个jar文件 = 打包原创 2017-10-09 20:18:54 · 483 阅读 · 0 评论 -
Java锁
Java锁的种类以及辨析锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA中常见的锁以及其特性,为大家答疑解惑。1.自旋锁2.自旋锁的其他种类3.阻塞锁4、可重入锁 5、读写锁转载 2017-10-09 21:50:55 · 252 阅读 · 0 评论 -
Java整数整型最大值最小值
原创 2017-10-10 09:02:55 · 26262 阅读 · 1 评论 -
Java运行时的数据区
Java运行时的数据区包括:(其中前两个是线程共享的)1.方法区(Method Area)存储已被虚拟机加载的类信息、常量、静态变量、即编译器编译后的代码等数据2.堆(Heap)存放对象实例,几乎所有对象实例都在这里分配内存3.虚拟机栈(VM Stack)描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个Stack Frame(方法运行时的基础数据结构)用于存储局部变量原创 2017-10-06 11:18:15 · 494 阅读 · 0 评论 -
CopyOnWriteArrayList----ReadWriteLock---ConcurrentHashMap
1.CopyOnWirteArrayList 适用于写少读多的并发场景2.ReadWriteLock 即为读写锁,要求写与写之间互斥,读与写之间互斥,读与读之间可以并发执行,在读多写少的情况下可以提高效率。3.ConcurrentHashMap是同步的HashMap,读写都加锁4.volatile只保证多线程操作的可见性,不保证原子性例题:下列关于Java并发的说法中原创 2017-10-06 14:03:18 · 1576 阅读 · 0 评论 -
【转】CommonLang3中的StringUtils最全解析
public static boolean isEmpty(CharSequence cs)常用函数之一,判断字符串是否为""或者null StringUtils.isEmpty(null) = true StringUtils.isEmpty("") = true St...转载 2018-04-12 10:14:40 · 1138 阅读 · 3 评论