1 xu505928168

尚未进行身份认证

华南农业大学

等级
TA的排名 4w+

深入理解静态内部类实现单例模式

publicclassSingletonDemo3{privatestaticclassSingletonClassInstance{privatestaticfinalSingletonDemo3instance=newSingletonDemo3();}privateSingletonDemo3...

2019-08-31 17:14:04

悲催!!!把null字符串看成null

铭记太惨了在编译器真的很难看出来

2019-08-22 17:38:35

java8(三)默认方法 冲突的解决

我们知道java只允许单继承类,但可以多继承接口。默认方法的实现,为API更新换代带来方便的,也留下了不少麻烦。每个接口都可以实现默认接口,而且是同样的签名。这个类去实现他们这些接口。那该如何继承有三条规则1.类和父类的优先级最高,高于任何的默认方法如果你继承了一个接口和类,且有一个方法有相同的签名,那就要听从父类的。不管父类的方法是不是抽象的,如果父类的方法是抽象的那你就必须...

2019-08-16 11:08:25

对于面向过程和面向对象的理解

程序员吧数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体。程序代码则用于处理这些数据。这种思维方式直接站在计算机的角度去抽象问题和解决问题。是面向过程站在现实世界的角度去抽象和解决问题,把数据和行为看做是对象的一部分。是面向对象...

2019-08-12 15:41:21

java虚拟机(十)synchronized是如何实现可见性和有序性的,和volatile的区别

大家都知道synchronized是锁。那怎么会实现可见性和有序性。volatile也能实现对吧。java内存模型是这么规定的关于主内存与工作内存之间的交互协议,即一个变量如何从主内存拷贝到工作内存。如何从工作内存同步到主内存中的实现细节。java内存模型定义了8种操作来完成。这8种操作每一种都是原子操作。8种操作如下:lock(锁定):作用于主内存,它把一个变量标记为一条线程独占...

2019-08-12 11:22:14

java虚拟机(九)编译是如何优化代码的

首先我们要明白优化代码,并不是建立在java的源码之上的。而是建立在代码的中间表达是或者机器码上面。公共子表达式消除如果一个表达式E已经出现过了。而且下面出现的E的所有变量值都没有发生改变,那就可以优化。如a=b*c+r+c*b这里b*c和c*b是一样的。所以可以变成a=e+r+e数组边界检查消除我们知道java是一门动态安全的语言。访问数组的时候,会进行上下界限的检...

2019-08-09 20:19:36

java虚拟机(八)语法糖

语法糖可以看成是编译器实现的一些功能。他们帮我们程序员特高代码开发效率。如泛型:泛型擦除前publicstaticvoidmain(String[]args){ Map<String,String>map=newHashMap<String,String>(); map.put("hello","你好"); map.put("ho...

2019-08-09 10:05:19

spring使用了环绕通知后,全局异常捕获失效 解决办法

项目出现这个问题。本来全局异常捕获好好的。只要抛出自己写的自定义异常就会传给前端。但我加入了环绕通知后,发现全局异常失效了。来看看我的全局异常packagecom.yiban.suoai.exception;importcom.yiban.suoai.exception.SAException;importorg.aspectj.lang.annotation.Aspect...

2019-08-07 11:12:14

java并发(三)CopyOnWriteArrayList源码分析

先看前面一部分privatestaticfinallongserialVersionUID=8673264195747942595L;//用于序列化/**Thelockprotectingallmutators*/finaltransientReentrantLocklock=newReentrantLock();//锁...

2019-08-06 20:46:39

equals() 如果避免空指针异常

(o1==null)?o2==null:o1.equals(o2);看源码的时候看到的。觉得有用,记录下

2019-08-06 20:02:56

Jenkins上传项目已经删除文件,但是Jenkins中没有删除

最近,本人在项目中删除一个文件,因为不删除就跑不起来。删除后上传到Jenkins后,还是跑不起来。去码云上看,发现确实已经把该文件删除掉了。接下来,我直接把项目打包成war,手动上传到服务器。发现,又可以跑起来了。于是我想是不是Jenkis有缓存?我就去看看Jenkins中有没有删除缓存的选项,结果看到对,清理工作空间。清理后会重新构建,这次构建就完全是你自己上传的,没有缓存。...

2019-08-06 11:26:36

Https讲解(这一篇就够了)

我们要知道,http存在的不足。才能值到https出现的原因1.使用明文,没有加密,可能会被窃听互联网上任何地方都可以窃听2.不知道对方的身份http协议谁都可以发起请求,也就是说,有可能是伪装的客户端。当然服务器也可以伪装,那你就不知道你要发送到的那台服务器是不是你想要的。3.无法证明报文的完整性,就是可能在传递的过程中被修改了。(不是报文的内容可以通过md5转换来验证报文的...

2019-08-06 10:10:54

java虚拟机(七)静态分派与动态分派

通过分派的讲解可以知道java中重载和重写在java虚拟机中是如何是实现的。静态分派packageorg.fenixsoft.polymorphic;/***方法静态分派演示*@authorzzm*/publicclassStaticDispatch{ staticabstractclassHuman{ } staticclassMa...

2019-08-02 16:40:24

java并发(二)CAS操作

在java中,使用锁线程会被阻塞,而且阻塞的时候线程切换上下文会有很大的开销。而volatile也只能解决共享变量中可见性的问题。不能解决原子问题。CAS通过硬件保证了原子性,而且是非阻塞的。下面以一个方法简单介绍publicfinalnativebooleancompareAndSwapInt(Objecto,longoffset,...

2019-07-31 20:12:52

java8(二)Lambda 使用局部变量为什么要显示声明为final 或者 事实上分final

inti=1;Runnabler=()->System.out.println(i);先来说下什么是事实上的final。如果我声明了一个变量,且在后面不更改它的值,那么那就是事实上的final。我改下代码inti=1;Runnabler=()->System.out.println(i);i=2;如果i是局部变量,那么会编译出错。为什么我们知...

2019-07-31 16:14:00

java8(一)Lambda 使用例子(四步走)

第一步行为参数化一般我们传参数是传值、引用。但这里我们要传行为。举例子:if(XXXXX)通过参数把判断的行为传进XXXXX就是行为参数化,我们可以传(i>19)等条件第二步使用函数式接口来传递行为这里我直接使用jdk中的接口*/packagejava.util.function;importjava.util.Objects;/***...

2019-07-30 16:59:44

public static <T> List<T> full(List<T> list, Predicate<T> p) 第一个T是什么意思?

第一个是用来声明类型参数的,后面的两个才是泛型的实现。也就是告诉大家&lt;T&gt;这是一种类型

2019-07-30 16:42:13

java虚拟机(六)局部变量表

局部变量表示一组变量值储存空间,用于存放方法参数和方法内部定义的局部变量。其最小单位为solt。一个slot可以存放一个boolean,byte,char,short,int,float,reference,returnAddress,的数据类型。但虚拟机规范确有没有明确规定一个solt占有的空间大小。此外long,double占用两个solt。因为连续占用两个solt,却不用担心数据安...

2019-07-29 11:32:11

java并发(一)线程中断 interrupt()

首先我们要明白线程中断并不能终止该线程的执行,被中断的线程根据自己的中断状态自己处理。举个例子。你正在学习,妈妈大声跟你说来吃饭了(此时就调用了interrupt())方法。这时候你知道了,哦,可以吃饭了。但是我还是想写完这道题目再去吃饭。当你写完这道题目。调用isInterrupted()方法后,返回true。原来有人告诉我已经可以吃饭了。好的。停止学习(中断线程)去吃饭。好了...

2019-07-27 15:12:56

java虚拟机(五)类加载的过程

类从加载到虚拟机开始到出去内存。有这么几个阶段加载验证准备解析初始化使用卸载这几个过程并不是有这绝对的先后顺序。某些可能会混合式进行。加载,其实虚拟机并没有规定什么时候要加载,但对于初始化是有这么几种情况必须要初始化。1.使用new实例化对象、读取或设置一个类的静态字段。但是如果被final修饰的就不用,因为final的静态字段在编译时就已经放...

2019-07-26 17:09:18

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。