java学习
文章平均质量分 81
pantherCode
弱者看中道德和情感,强者重视利益和力量,我喜欢这个美丽又肮脏的世界!
展开
-
java学习链接整理
java8新特性: https://blog.csdn.net/liu136313/article/details/51249598#comments原创 2018-08-20 14:45:15 · 278 阅读 · 0 评论 -
java异常之Throwable源码
1 java异常类结构:常用的CheckedException常用的RuntimeException:原创 2016-02-29 11:10:22 · 2332 阅读 · 2 评论 -
java中String,StringBuffer,StringBuilder拼接效率对比
比较JAVA中String ,StringBuffer,SrtingBuilder三个对象连接字符串的效率。我们经常都听有经验的人说,避免使用String通过“+”连接字符串,特 别是连接的次数很多的时候,一定要用StringBuffer。测试代码:package com.panther.demo.exercise6;/** * String,String原创 2016-03-10 23:48:18 · 7552 阅读 · 1 评论 -
java中的坑(一)
package com.panther.demo.pit;/** * 坑一 * Created by panther.dongdong on 2016/3/10. */public class TunnelDemo1 { public static void main(String[] args) { char a = 'a'; int i =原创 2016-03-10 13:24:41 · 813 阅读 · 0 评论 -
java泛型详解
1. 概述在引入范型之前,Java类型分为原始类型、复杂类型,其中复杂类型分为数组和类。引入范型后,一个复杂类型就可以在细分成更多的类型。例如原先的类型List,现在在细分成List, List等更多的类型。注意,现在List, List是两种不同的类型,他们之间没有继承关系,即使String继承了Object。下面的代码是非法的 List ls = new Arra转载 2016-03-09 23:17:48 · 384 阅读 · 0 评论 -
java中的正则表达式
正则表达式:符合一定规则的表达式作用:专门用于操作字符串用一些特定的符号来表示一些代码操作,这样就简化书写,所以学习正则表达式就是在学习一些特殊符号的使用。好处:可以简化对字符串的复杂操作弊端:符号定义越多,正则越长,阅读性越差具体操作功能:1、 匹配:String matches方法,用规则匹配整个字符串,只要有一处不符合,就匹配结束,返回false转载 2016-03-09 00:13:39 · 484 阅读 · 0 评论 -
java中的快速失败
在JDK中,查看集合有很多关于快速失败的描述:注意,此实现不是同步的。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的任何操作;仅改变与实例已经包含的键关联的值不是结构上的修改。)这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.sync转载 2016-03-08 17:40:18 · 730 阅读 · 0 评论 -
java中的Comparator和Comparable的区别
Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序,所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法。Comparator位于包java.util下,而Comparable位于包原创 2016-03-08 16:53:28 · 354 阅读 · 0 评论 -
java面向对象之向上转型和向下转型
转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处父类对象可以是接口向下转型:父类引用的对象转换为子类类型称为向下转型。前者是一个向上转型,Animal dog 引用指向原创 2016-03-08 16:42:01 · 1369 阅读 · 0 评论 -
java中的SuppressWarnings注解的用法
一、前言 编码时我们总会发现如下变量未被使用的警告提示: 上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了。这时我们可以在方法前添加 @SuppressWarnings("unused") 去除这些“感叹号”。 二、 @SuppressWarings注解转载 2016-03-17 16:06:29 · 1504 阅读 · 0 评论 -
java内部类
将一个类的定义放在另一个类的内部,这就是内部类 内部类是一种非常有用的特性,因为他允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可见性。内部类能了解外围类,并且与之通信!!!1 创建内部类:创建内部类就如同你想的一样,把类的定义置于外围类的里面:代码如下:package inner;/** * Created by panther.dongdong原创 2016-01-12 22:58:47 · 317 阅读 · 0 评论 -
java thread源码分析
线程的六种状态[通过枚举定义]:/** * A thread state. A thread can be in one of the following states: * * {@link #NEW} * A thread that has not yet started is in this state. *原创 2015-12-26 23:16:09 · 431 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
一.内存模型的相关概念大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此转载 2016-03-14 20:16:13 · 415 阅读 · 0 评论 -
idea设置行号
File->Settings->Editor->Appearence->ShowLine Number原创 2016-05-25 11:47:22 · 711 阅读 · 0 评论 -
java并发之Unsafe类
java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:1、通过Unsafe类可以分配内存,可以释放内存;类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应。2、可以定位对象某字段的内存位置,也可以修改对象的转载 2016-05-13 18:19:58 · 379 阅读 · 0 评论 -
AtomicInteger 源码分析
JDK 里面提供的以 Atomic* 开头的类基本原理都是一致的, 都是借助了底层硬件级别的 Lock 来实现原子操作的。 本文以 AtomicInteger 为例进行讲述, 其他的类似。阅读本文前建议先阅读基础篇:Java 内存模型一. 处理器原子操作: 3种加锁方式关于 CPU 的锁有如下 3 种:1. 处理器自动保证基本内存操作的原子性首先处理器会自动保证基本的内存操作的原子性。 处理器保证转载 2017-06-06 15:01:23 · 418 阅读 · 0 评论 -
java中的各种数据类型在内存中的存储
1.Java是如何管理内存的Java的内存管理就是对象的分配和释放问题。(其中包括两部分)分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对象都在堆(Heap)中分配空间。释放:对象的释放是由垃圾回收机制决定和执行的,这样做确实简化了程序员的工作。但同时,它也加重了JVM的工作。因为,GC为了能够正确释放对象,GC必须监控转载 2017-03-26 23:35:12 · 527 阅读 · 0 评论 -
java中值传递和引用传递
java中值传递和引用传递 最近工作中使用到了值传递和引用传递,但是有点懵,现在看了下面的文章后清晰多了。一下是文章(网摘) 1:按值传递是什么指的是在方法调用时,传递的参数是按值的拷贝传递。示例如下:public class TempTest { private void test1(int a){ //做点事情 } public sta原创 2017-03-17 10:30:01 · 569 阅读 · 0 评论 -
Unsafe与CAS
Unsafe简单讲一下这个类。Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。这个类尽管里面的方法都是public的,但是并没有办法使用它们,JDK API文档也没有提供任何关于这个类的方法的解释。总而言之,对于Unsafe类的使用都是受限制的,只有授信的代码才能获得该原创 2017-03-21 11:52:59 · 433 阅读 · 0 评论 -
java枚举详解
enum实现: jdk5中增加了一种新类型[也可以说是一种语法糖]---枚举,原创 2016-09-30 22:07:22 · 440 阅读 · 0 评论 -
java中的坑
1.除0代码: Java代码 System.out.println(1.0d / 0); System.out.println(0.0d / 0); System.out.println(1 / 0); System.out.println(0 / 0); 输出:InfinityNaN转载 2016-09-30 22:58:12 · 1179 阅读 · 0 评论 -
idea快捷键
查询快捷键CTRL+N 查找类CTRL+SHIFT+N 查找文件CTRL+SHIFT+ALT+N 查找类中的方法或变量CIRL+B 找变量的来源CTRL+ALT+B 找所有的子类CTRL+SHIFT+B 找变量的类CTRL+G 定位行CTRL+F 在当前窗口查找文本CTRL+SHIFT+F 在指定窗口查找文本CTRL+R 在当前窗原创 2016-08-03 11:57:07 · 336 阅读 · 0 评论 -
idea修改文件头内容
原创 2016-07-18 11:40:19 · 1437 阅读 · 0 评论 -
基本数据类型boolean的封装类型之Boolean源码分析
public final class Boolean implements java.io.Serializable, ComparableBoolean类是final的,说明是不能被继承的,这里首先回顾一下final关键字在 java中的用法:原创 2016-07-16 23:55:59 · 1558 阅读 · 0 评论 -
nanoTime()和currentTimeMillis()的区别
平时产生随机数时我们经常拿时间做种子,比如用System.currentTimeMillis的结果,但是在执行一些循环中使用了System.currentTimeMillis,那么每次的结果将会差别很小,甚至一样,因为现代的计算机运行速度很快。后来看到Java中产生随机数函数以及线程池中的一些函数使用的都是System.nanoTime,下面说一下这2个方法的具体区别。转载 2016-07-23 17:08:09 · 2265 阅读 · 0 评论 -
char与byte的区别
很多初学者(包括我,已经学了一年多Java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享: byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—转载 2016-06-08 12:18:18 · 680 阅读 · 0 评论 -
java中String源码分析
1先介绍一下jvm内存模型:栈: 存放基本数据类型及对象变量的引用,对象本身不存放于栈中而是存放于堆中1)、基础类型 byte (8位)、boolean (1位)、char (16位)、int (32位)、short (16位)、float (32位)、double (64位)、long (64位)2)、java代码作用域中定义一个变量时,则java就在栈中为这个变量分配内存空间,原创 2015-12-27 19:04:10 · 435 阅读 · 0 评论 -
web安全编程防御
如何进行web应用安全防御,是每个web安全从业者都会被问到的问题,非常不好回答,容易过于肤浅或流于理论,要阐明清楚,答案就是一本书的长度。而本文要介绍一本能很好回答这个问题的优秀书籍——《web application defender's cookbook》,这 是一本被低估的“干货”书籍,虽然是为ModSecurity量身定制,但里面提到的防御技巧对web安全从业者均有启发,是WAF版的孙子转载 2015-12-23 23:57:23 · 2863 阅读 · 0 评论 -
java8新增特性(一)---Lambda表达式
Lambda表达式也成为闭包,是java语言层次上的改变,Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中),或者把代码看成数据,函数式程序员对这一概念非常熟悉。在JVM平台上有很多语言(groovy,scala等等)从一开始就有Lambda,但是程序员不得不使用匿名类来代替lambda。看一下jdk7之前实现字符串排序:package com.panther.dong.原创 2015-08-22 14:43:09 · 1442 阅读 · 0 评论 -
java反射获得运行时属性的值
java反射原创 2015-08-06 10:39:36 · 1319 阅读 · 0 评论 -
java中的异常详解
java中的exception关系图如图下图所示:Throwable是Exception(异常)和Error(错误)的超类!!两者的区别:Exception表示程序需要捕捉和处理的的异常;Error表示系统级别的错误和程序无需处理的。我们日常程序中所遇到的是Exception,Exception分为两种:第一种是JDK标准自带的异常,当程序违反了jdk的语法规则或者原创 2015-08-02 20:04:03 · 1180 阅读 · 0 评论 -
idea自动生成serialVersionUID
通过一下设置idea自动生成序列化serialVersionUIDSetting->Inspections->Serialization issues->Serializable class without ’serialVersionUID’ 选上以后,在你的class中:Alt+Enter就会提示自动创建serialVersionUID了。如图所示,勾上画红线部分即可:原创 2015-08-10 13:16:18 · 767 阅读 · 0 评论 -
java8新增特性(二)----函数式接口(Functional)
上一篇博客介绍了java8新增的Lambda表达式,这一节介绍一下java8的函数式编程,两者之间有什么联系呢?请往下看~~~ Lambda表达式如何在java类型中表示的呢? 语言设计者投入了大量的精力来思考如何使现有的函数友好地支持lambda。最终采取的办法是:增加函数式接口的概念,函数式接口接口就是具有一个方法的普通接口。像这样的接口可以被隐式的转换为La原创 2015-08-22 15:40:55 · 3091 阅读 · 0 评论 -
java注解例子
java注解在web框架中使用比较广泛,这使得对象之间的关系配置起来更加容易目前web框架中最常用的两种配置对象依赖关系的方式就是注解和xml配置文件的方法,api配置相对来说用的少一些,下面实现一个Table注解来实现数据库表和实体bean之间的对应关系,实现一个Column注解来实现数据库表中每个字段和实体bean每个属性之间的对应关系。java中的orm基本上就是根据这种思想来实原创 2015-08-08 21:00:59 · 1431 阅读 · 0 评论 -
java中接口和抽象类的区别
一个没有抽象方法的抽象类从功能上来看与接口类似但是有如下区别:一个类可以实现多个接口,但只能继承最多一个抽象类抽象类可以包含具体的方法;接口所有的方法都是抽象的(不管是否对接口声明都是抽象的)(jdk1.7以前,jdk1.8开始新增功能接口中有default 方法,有兴趣自己研究)抽象类可以声明和使用字段;接口则不能,但是可以创建静态的final常量抽象类中的方法可以是原创 2015-08-22 19:02:49 · 2688 阅读 · 2 评论 -
arrayblockigqueue和linkedblockingqueue的区别
http://zhidao.baidu.com/link?url=GRHjufflZW3vgV-GOBncpWxr7_cgkOKI7HIMhCsB4Qlhh8tuLnIsIivKRtm7jbgGuw6xStx6DuO3GAEhtz8YjPnzsuX15wcuabEe4mxZuCa转载 2015-04-15 11:59:53 · 755 阅读 · 0 评论 -
深入理解java'中的String
public class StringQuestion { public static void m1() { String a = "a1"; String b = "a" + 1; System.out.println(a == b); } public static void m2() { String a = "ab"; String bb = "b"; String b = "a" +原创 2014-11-23 11:36:53 · 565 阅读 · 0 评论 -
override 和 overload的区别
override(重写,覆盖)转载 2014-11-22 21:54:53 · 532 阅读 · 0 评论 -
Log4 日志级别
Log4 日志级别博客分类:Log4 日志级别 日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。: 1.static Level DEBUG :DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。2.static Level INFO INFO level表明 消息在粗粒度级别上突出强调应用程序转载 2014-11-02 19:15:01 · 1328 阅读 · 0 评论 -
java面向接口编程
在oop中有一种设计原则是面向接口编程,面向接口编程有很多好处,具体百度一大片,我来谈一下具体的使用中的一些不成熟的见解!!首先面向接口编程可以消除类之间的依赖关系,使得业务只依赖接口。这样有什么好处呢?这样的好处大大的,比如说我们声明一个car的接口,我们对车有以下行为,我们可以开车,洗车,推车,修车,拆车等等,具体用代码实现:package com.panther.dong原创 2015-08-09 19:54:56 · 2596 阅读 · 5 评论