自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 final、finally、finalize的区别

问题:谈谈 final、finally、finalize 有什么不同?《极客时间-Java核心技术面试精讲》final 可以用来修饰类、方法、变量,分别有不同的意义,final 修饰的 class 代表不可以继承扩展,final 的变量是不可以修改的,而 final 的方法也是不可以重写的(override)。finally 则是 Java 保证重点代码一定要被执行的一种机制。我们可以使用 try-finally 或者 try-catch-finally 来进行类似关闭 JDBC 连接、保证 un

2020-11-25 23:59:24 132

原创 Exception和Error有什么区别

问题:请对比 Exception 和 Error,另外,运行时异常与一般异常有什么区别?《极客时间-Java核心技术面试精讲》Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 体现了 Java 平台设计者对不同异常情况的分类。Exception 是程序正常运行过程中,可以预料的意外情况,可能并且应该被捕获,进行

2020-11-24 23:15:02 202

原创 谈谈你对Java平台的理解

以下为个人模拟面试时的回答,谨供参考。欢迎移步个人博客小站参考:极客时间-Java核心面试精讲这里说的是 Java 平台,而不是 Java。个人理解 Java 平台应该包含三个部分: Java 语言 Java 虚拟机 Java 生态 首先说 Java 语言 它是一门面向对象的高级语言 跨平台:一次编译,到处运行 提供了丰富的基础类库,包括集合、IO、网络、并发等 Java 语言本身不进行垃圾回收 JDK 提供很多.

2020-11-04 17:11:11 869 2

原创 Spring 注解之 @ComponentScan

如何开启自动扫描?没有指定包且没有指定类时,默认使用当前类所在包哪些类会被扫描成 Spring Bean?扫描得到的 Spring Bean 上,如果有 @ComponentScan 或 @ComponentScans,会继续处理1. 如何开启自动扫描?在初始化 ApplicationContext 时,传入配置类,配置类上有 @ComponentScan 或 @ComponentS...

2020-04-24 09:25:33 228

原创 java基础之ThreadLocal

文章目录1. ThreadLocal 原理1.1 ThreadLocal 工具类1.1.1 ThreadLocal.set() 方法1.1.2 ThreadLocal.get() 方法1.1.3 ThreadLocal.remove() 方法1.2 ThreadLocalMap 容器1.2.1 ThreadLocalMap 容器初始化1.2.2 Entry 数据结构1.2.3 ThreadLoca...

2020-04-01 19:05:42 183

原创 Eureka页面中显示IP+端口

eureka: instance: prefer-ip-address: true instance-id: ${spring.cloud.client.ip-address}:${server.port}# spring.cloud.client.ip-address 为 2.x 版本,1.x 版本为 spring.cloud.client.ipAddress# ${sp...

2019-12-11 17:37:36 817

原创 Java判断图片格式

public class ImageUtils { public static boolean isImage(File imageFile) { if (!imageFile.exists()) { return false; } try { Image img = ImageIO.read(imageFile); return img != null &amp...

2019-12-11 14:35:37 423

原创 Java字节转16进制

public class BinaryTest { public static String byteToHex(byte[] bytes) { StringBuilder result = new StringBuilder(); for (byte b : bytes) { int temp = b & 0xFF; String v ...

2019-12-10 17:02:33 866

原创 SpringBoot注解@ConfigurationProperties配置提示

一、使用1. 配置Bean@Component@ConfigurationProperties(prefix = "pay")@Datapublic class PayConfig { /** * 签名 */ private String signCode = "11111"; /** * 超时时间,单位:秒 */ private Integer timeOut...

2019-12-06 15:00:41 3450

原创 Spring注解@Conditional

作用在 Spring Bean 或返回 Spring Bean 的方法上,符合条件的 Bean 才实例化并加载到 Spring 容器中@Conditional 是 spring-context 包中的注解在 Spring Boot(spring-boot-autoconfigure) 中大量使用ConditionalOnBeanConditionalOnClassConditional...

2019-12-03 17:14:06 172

原创 单例模式

1. 概念广义单例模式,就是在jvm中,共用一个类的唯一实例狭义单例模式,即单例类,通过类本身去实现上述目的2. 优缺点优点避免频繁的创建和销毁实例,这点对大对象犹为重要缺点单例类较难扩展,牵一发而动全身单例类不能被继承,因为构造器私有3. 应用线程池、缓存、日志、配置文件、打印机/显卡等硬件设备的驱动程序对象等等Servlet、Spring、Strust2、S...

2019-10-22 09:34:15 104

原创 浏览器跨域问题和如何跨域访问

什么是浏览器跨域问题跨域只存在于浏览器中,当A网站访问的资源不是同源的,就会产生跨域问题同源策略是浏览器的一种安全机制,要求协议、域名、端口一致这是前后端分离后的一个热门话题,在单体应用年代,程序员很少接触这个问题,但浏览器一直有这个安全机制localhost和127.0.0.1都指向本机,但也不同源,也就是说,要dns的域名一样,ip一样也不行(why?)js引用脚本是可以跨域访问的...

2019-04-07 08:48:16 2664

原创 java8新特性

一、lambda表达式lambda表达式是一个函数的简洁书写方式lambda表达式可以作为参数传递给方法或存储在变量中lambda表达式使代码更简洁明了二、函数式接口函数式接口,就是有且仅有一个抽象方法的接口函数式接口,可加上注解 @FunctionalInterface函数式接口,是为了更好的使用lambda表达式而产生的概念三、方法引用方法引用是lambda表达式的...

2019-03-22 10:57:38 125

原创 注解@Resource与@Autowired的区别

注意:Spring容器以name为key储存bean!这里的name可以指定,否则取首字母小写的类名。有相同的就报异常:BeanDefinitionStoreException!@Resource@Resource有两个常用属性name、type,所以分4种情况指定name和type:通过name找到唯一的bean,找不到抛出异常;如果type和字段类型不一致,也会抛出异常指定nam...

2019-02-26 16:01:23 25085 5

原创 Java使用redis实现分布式锁

当并发时,有几种处理方案一、Java代码同步处理优点:使用简单缺点:程序等待造成响应慢、服务器集群时不能用总结:不推荐使用二、数据库悲观锁优点:相对简单、服务器集群时可以使用缺点:需要注意锁级别和表索引,否则容易造成锁表!总结:不推荐使用三、数据库乐观锁优点:相对简单、服务器集群时可以使用、不会造成锁表缺点:并发时,容易造成相同的业务代码多次执行总结:可以使用四、redi...

2019-02-25 14:35:10 391

原创 Java内存溢出与内存泄漏的区别

内存溢出程序需要内存,向虚拟机申请,虚拟机内存不够,向系统申请;当虚拟机的总内存达到设置的最大内存时,就不会再向系统申请了,这时程序再申请内存时,如果虚拟机可用内存不够了,就是内存溢出。内存泄漏没用的数据继续占用内存,就是内存泄漏,内存泄漏积累到一定程度,会造成内存溢出。个人认为,java不存在内存溢出。因为虚拟机会自动回收无用对象,也就是不可达对象。所有可达的对象,虚拟机都认为是有用的,...

2019-02-24 11:35:45 336

原创 java分批处理小算法

int sum = list.size(); // 总数int batch = 200; // 一个批次的数量List<Object> tmpList = new ArrayList<>(); // 储存一个批次的数据for (int i = 0; i < sum; i++) { tmpList.add(list.get(i)); // 储存数据 ...

2019-02-21 10:58:32 1530 2

原创 Java中的原子类-并发编程

1. 原子类是什么原子类包装了一个变量,然后提供对这个变量的原子操作的方法。注意:原子类中对变量的操作,都是原子操作。2. 原子类有什么用把变量的操作封装成原子操作,也就是保证了原子性。多线程的三大特性:原子性、有序性、可见性,详情可了解(ava内存模型-工作内存、主内存、原子性、有序性、可见性、volatile、synchronized)换句话说,当你的代码保证了有序性和可见...

2019-01-21 15:18:43 2016 2

原创 排序算法-插入排序

0123456…n304223451237…51. 基本思想通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。用生活中的例子解释:一队学生在操场,老师说,从矮到高排序第一个前面没人,自然不用动,排好了;第二个去看了一下第一个,发现比自己高,就站前面,比自己矮,就站后面,他说他跟第一个排好了;第三个...

2019-01-16 16:53:31 116

原创 排序算法-选择排序

0123456…n304223451237…5基本思想以从小到大排列为例, 每次循环找到剩余未排序数组中最小的值, 和未排序数组的第一个位置交换位置详细分析第1轮:假定arr[0]是最小元素,依次和后面的元素比较,较小者交换到arr[0]第1轮结束后,arr[0]就是最小的元素了第2轮:假定arr[1]是剩余元素中的最小值...

2019-01-16 10:25:37 109

原创 排序算法-冒泡排序

0123456…n304223451237…5一、第一种基本思想:假如待排序线性表的长度为 length,要使其从小到大排序,从前往后两两比较相邻元素的关键字,若第i+1个元素比第i个小,则交换它们,直到遍历整个线性表。每趟交换以后最后一个元素一定是最大的,不再参与下一趟交换。第1轮:从arr[0]开始,不断与后一个元素比较,较大者后移...

2019-01-15 18:37:44 240 3

原创 ArrayList源码一步步分析-jdk1.8

文章目录一、ArrayList知识点二、父类、接口三、成员变量1. 自身的成员变量2. 继承的成员变量EMPTY_ELEMENTDATA与DEFAULTCAPACITY_EMPTY_ELEMENTDATA的区别?四、构造函数1. ArrayList():无参构造函数,使用最多2. ArrayList(int initialCapacity):指定初始容量3. ArrayList(Collectio...

2019-01-15 15:35:28 114

原创 Excel文件加解密-POI

1. 概要只需要使用POI,就可以实现Excel文件的加密、解密,简洁方便。2. pom<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version>

2019-01-14 10:43:46 1005

原创 Java内存模型-工作内存、主内存、原子性、有序性、可见性、volatile、synchronized

文章目录一、概念二、背景2.1 高速缓存2.1 缓存一致性2.3 乱序执行2.4 引入Java内存模型三、Java内存模型3.1 主内存与工作内存3.2 内存间交互操作3.2.1 8种操作3.2.2 执行规则3.3 多线程三大特征3.3.1 原子性(Atomicity)3.3.2 可见性(Visibility)3.3.3 有序性(Ordering)3.4 先行发生原则3.5 volatile关键字...

2019-01-10 17:33:55 705

原创 外观模式详解

外观模式(Facade Pattern)结构型设计模式1. 定义外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。通俗点说,就是有很多子系统(或类或模块),它们各自有各自的功能,将它们的部分或全部功能按一定的流程去执行,就组合成一个完整的客户需要的功能,但是,客户一个个去执行这些功能,会费时费力,所以我们提供一个类(或模块或系统),...

2018-12-25 14:57:30 153

原创 适配器模式详解

适配器模式(Adapter Pattern)结构型设计模式1. 定义适配器模式将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。2. 适配器模式存在的意义?在代码架构设计或详细设计阶段,是用不到适配器模式的,它是为了后面的升级、扩展、更新而存在的补救措施。3. 何时使用系统需要使用现有的类(220v),而此类的接口不符合系统的需要(110v)。...

2018-12-23 21:47:48 162

原创 Arrays.copyOf()方法详解-jdk1.8

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) { @SuppressWarnings("unchecked") T[] copy = ((Object)newType == (Object)Object[].class) ...

2018-12-18 20:42:48 1993

原创 System.arraycopy()方法详解-jdk1.8

定义public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);可以看到,它是一个静态本地方法,由虚拟机实现,效率自然比用java一个个复制高方法含义从源数组src取元素,范围为下标srcPos到srcPos+length-1,取出共length个元素...

2018-12-18 16:43:24 5738 4

原创 原型模式详解

原型模式(Prototype pattern)定义通过已有对象,拷贝出一个新对象,具有一模一样的属性,存放在不同的内存地址上模式总结过程游戏DOTA,简化规则如下:分上中下三路,每路、每30秒就出现一波小兵,各路小兵沿种路向对方进发。每波小兵由一个远程小兵和三个进战小兵组成。当攻破一路兵营后,小兵会升级成中后,当攻破三路兵营后,会升级成大兵。小中大兵的区别在于血量、攻击力和体积不...

2018-12-17 23:14:39 157

原创 java浅克隆与深克隆详解

定义克隆:从已有对象,得到一个新对象浅克隆与深克隆的区别浅克隆:两个对象之间,还有共享的内容深克隆:两个对象之间,完全没有共享的内容造成这种区别的原因:基本类型和引用类型clone()方法原理clone()方法,是一个native方法,也就是虚拟机实现的方法,它会在堆中新开辟一块内存,然后储存已有对象的成员变量信息,成员变量是基本类型则存值,引用类型则存地址使用Object...

2018-12-13 17:53:06 197

原创 基本数据类型的值存放在哪里

备注:这里只针对基本数据类型做讨论(int long double float char byte boolean short)基本数据类型的值,到底存放在哪?这取决于它声明在哪,它只会声明在三个位置类变量成员变量局部变量public class Test { public static int a = 1;// 类变量 public int b = 2;// ...

2018-12-13 10:07:10 9259 15

原创 观察者模式详解

观察者模式(Observer Pattern)定义观察者模式定义了对象之间的一对多的依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。通俗的定义:发布订阅模式(报社-读者)模式总结过程公司经营电商系统,有自己的工厂,当工厂有新产品产出时,通知仓库更新库存、通知商店拿货、通知客户购买初步的实现如下// 自家工厂public class Factory...

2018-12-12 14:33:54 154

原创 模板方法模式详解

模板方法模式(Template Method Pattern)定义模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。——《HeadFirst设计模式》通俗地说,就是在超类中定义一系列方法,其中一个方法(骨架方法)顺序调用其它方法,子类则按需要重写部分方法(所谓的延迟到子类)模式总结过程公司要做...

2018-12-11 14:58:07 107

原创 策略模式详解

策略模式(Strategy Pattern)定义策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式使算法的变化独立于使用算法的客户。——《Head First设计模式》模式总结过程公司新开发一款打怪等级游戏,三个角色:猎人、剑士、枪手,所有角色都能移动、攻击和外观,但是有两个不同,1攻击的方式不同,猎人使用弓箭,剑士使用利剑,枪手使用手枪,2外观不同// 抽象角色类,...

2018-12-07 16:07:48 95

原创 建造者模式

建造者模式(Builder Pattern)定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示只把复杂对象(产品product)定义出来,定义它需要的各种属性,但属性的赋值交给另一个对象(builder),且在builder内决定赋值顺序,并把产品返回(个人理解)模式总结过程有一个村子,风景秀丽,而你是村长,有一天,一个人来找你,叫你帮给他出一个游玩的方案...

2018-12-06 15:05:18 98

原创 代理模式

代理模式(Proxy Pattern)定义代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。——《headfirst设计模式》个人理解:通过一个对象生成一个新的对象,新对象除了原对象的功能,还增加了些新的功能。如原对象方法执行前做些什么,执行后做些什么,异常了做些什么。原对象就是被代理对象,新对象就是代理对象。生活中的例子经纪人与明星中介:房地产中介(代理开发商)、...

2018-12-01 19:20:36 87

原创 抽象工厂模式

抽象工厂模式(Abstract Factory Pattern)定义提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类工厂方法和抽象工厂工厂方法生产的对象为同一层级的,如苹果手机、三星手机和华为手机等抽象工厂生产的对象为同一系列的,如苹果、三星和华为的手机、电脑和手环等工厂方法一个工厂对应一个产品抽象工厂一个工厂对应一个系列的产品抽象工厂是工厂方法的扩展优点...

2018-11-30 09:45:36 152 2

原创 工厂方法模式

工厂方法模式(Factory Method Pattern)定义工厂方法模式定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。优点符合依赖倒转原则,父类引用指向子类对象符合开闭原则,对扩展开放,对修改关闭,如增加小米手机时,则增加一个小米手机工厂,而不用修改现有代码客户端不需要关注创建对象的细节,解耦合缺点不适用于小型项目或简单的项目...

2018-11-30 09:44:30 133 1

原创 设计模式

设计模式是什么(Design pattern)一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式的好处解耦提高扩展性减少重复代码易读易维护设计模式...

2018-11-28 16:22:27 81

原创 字符串常量池

常量池有三种:class文件常量池、运行时常量池、字符串常量池class文件常量池(constant_pool)class文件中的一部分,是一个静态的存储结构,常量池中两大类常量字面量:文本字符串(类中所有用双引号引起来的字符串字面量)符号引用:类和接口的全限定名、字段的名称和描述符、方法的名称和描述符运行时常量池(runtime constant pool)class文件常量池的...

2018-11-22 11:56:55 245

深入理解java虚拟机(第二版)

深入理解java虚拟机(第二版),jvm内存分析,java字节码文件,类加载等

2018-11-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除