- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 深入理解静态内部类实现单例模式
public class SingletonDemo3 { private static class SingletonClassInstance{ private static final SingletonDemo3 instance=new SingletonDemo3(); } private SingletonDemo3...
2019-08-31 17:14:04 1743
原创 java8(三)默认方法 冲突的解决
我们知道java只允许单继承类,但可以多继承接口。默认方法的实现,为API更新换代带来方便的,也留下了不少麻烦。每个接口都可以实现默认接口,而且是同样的签名。这个类去实现他们这些接口。那该如何继承有三条规则1.类和父类的优先级最高,高于任何的默认方法如果你继承了一个接口和类,且有一个方法有相同的签名,那就要听从父类的。不管父类的方法是不是抽象的,如果父类的方法是抽象的那你就必须...
2019-08-16 11:08:25 1807
原创 对于面向过程和面向对象的理解
程序员吧数据和过程分别作为独立的部分来考虑,数据代表问题空间中的客体。程序代码则用于处理这些数据。这种思维方式直接站在计算机的角度去抽象问题和解决问题。是面向过程站在现实世界的角度去抽象和解决问题,把数据和行为看做是对象的一部分。是面向对象...
2019-08-12 15:41:21 1928
原创 java虚拟机(十)synchronized是如何实现可见性和有序性的,和volatile的区别
大家都知道 synchronized 是锁。那怎么会实现可见性和有序性。volatile也能实现对吧。java内存模型是这么规定的关于主内存与工作内存之间的交互协议,即一个变量如何从主内存拷贝到工作内存。如何从工作内存同步到主内存中的实现细节。java内存模型定义了8种操作来完成。这8种操作每一种都是原子操作。8种操作如下:lock(锁定):作用于主内存,它把一个变量标记为一条线程独占...
2019-08-12 11:22:14 3557 5
原创 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 5927
原创 java虚拟机(八)语法糖
语法糖可以看成是编译器实现的一些功能。他们帮我们程序员特高代码开发效率。如泛型:泛型擦除前public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("hello", "你好"); map.put("ho...
2019-08-09 10:05:19 1604
原创 spring使用了环绕通知后,全局异常捕获失效 解决办法
项目出现这个问题。本来全局异常捕获好好的。只要抛出自己写的自定义异常就会传给前端。但我加入了环绕通知后,发现全局异常失效了。来看看我的全局异常package com.yiban.suoai.exception;import com.yiban.suoai.exception.SAException;import org.aspectj.lang.annotation.Aspect...
2019-08-07 11:12:14 5455 8
原创 java并发(三)CopyOnWriteArrayList源码分析
先看前面一部分 private static final long serialVersionUID = 8673264195747942595L;//用于序列化 /** The lock protecting all mutators */ final transient ReentrantLock lock = new ReentrantLock();//锁 ...
2019-08-06 20:46:39 1585
原创 equals() 如果避免空指针异常
(o1 == null) ? o2 == null : o1.equals(o2);看源码的时候看到的。觉得有用,记录下
2019-08-06 20:02:56 2222
原创 Jenkins上传项目已经删除文件,但是Jenkins中没有删除
最近,本人在项目中删除一个文件,因为不删除就跑不起来。删除后上传到Jenkins后,还是跑不起来。去码云上看,发现确实已经把该文件删除掉了。接下来,我直接把项目打包成war,手动上传到服务器。发现,又可以跑起来了。于是我想是不是Jenkis有缓存?我就去看看Jenkins中有没有删除缓存的选项,结果看到对,清理工作空间。清理后会重新构建,这次构建就完全是你自己上传的,没有缓存。...
2019-08-06 11:26:36 3499 1
原创 Https讲解(这一篇就够了)
我们要知道,http存在的不足。才能值到https出现的原因1.使用明文,没有加密,可能会被窃听互联网上任何地方都可以窃听2.不知道对方的身份http协议谁都可以发起请求,也就是说,有可能是伪装的客户端。当然服务器也可以伪装,那你就不知道你要发送到的那台服务器是不是你想要的。3.无法证明报文的完整性,就是可能在传递的过程中被修改了。(不是报文的内容可以通过md5转换来验证报文的...
2019-08-06 10:10:54 3220 1
原创 java虚拟机(七)静态分派与动态分派
通过分派的讲解可以知道java中重载和重写在java虚拟机中是如何是实现的。静态分派package org.fenixsoft.polymorphic;/** * 方法静态分派演示 * @author zzm */public class StaticDispatch { static abstract class Human { } static class Ma...
2019-08-02 16:40:24 1622
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人