文章分类 -  Java

1
摘要:一. 对接口的三个疑问 很多初学者都大概清楚interface是什么, 我们可以定义1个接口, 然后在里面定义一两个常量(static final) 或抽象方法. 然后以后写的类就可以实现这个接口, 重写里面的抽象方法. 很多人说接口通常跟多态性一起存在. 接口的用法跟抽象类有点类似. 但是为何要这 阅读全文 »
posted @ 2020-08-10 10:03 yaphetsfang 阅读(992) 评论(1) 推荐(3) 编辑
摘要:【测试】 Java如何优雅的生成测试数据 前言 在日常的测试中,我们经常需要提前准备一大堆测试数据,用来验证业务逻辑。当然对于简单的数据类型完全可以通过 JDK 自带的 Random 类来实现。但是对于一个比较复杂的类,或者参数的格式有特殊要求的时候,Random 就不适用了,这个时候就需要借助一些 阅读全文 »
posted @ 2020-08-04 09:40 yaphetsfang 阅读(1464) 评论(0) 推荐(0) 编辑
摘要:线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如 jstack、jmap 等工具也是不囿于一个方面的问题的,基本上出问题就是 df、free、top 三连,然后依次 jstack、jmap 伺候,具体问题 阅读全文 »
posted @ 2020-05-28 10:38 yaphetsfang 阅读(166) 评论(0) 推荐(0) 编辑
摘要:线上常见问题定位 常见问题 1:CPU 利用率高 CPU 使用率是衡量系统繁忙程度的重要指标,一般情况下单纯的 CPU 高并没有问题,它代表系统正在不断的处理我们的任务,但是如果 CPU 过高,导致任务处理不过来,从而引起 load 高,这个是非常危险需要关注的。 CPU 使用率的安全值没有一个标准 阅读全文 »
posted @ 2020-05-14 15:56 yaphetsfang 阅读(281) 评论(0) 推荐(0) 编辑
摘要:本文主要介绍java的单例模式,以及详细剖析静态内部类之所以能够实现单例的原理。OK,废话不多说,进入正文。 首先我们要先了解下单例的四大原则: 1.构造私有。2.以静态方法或者枚举返回实例。 3.确保实例只有一个,尤其是多线程环境。 4.确保反序列换时不会重新构建对象。 我们常用的单例模式有: 饿 阅读全文 »
posted @ 2020-05-12 14:22 yaphetsfang 阅读(130) 评论(0) 推荐(0) 编辑
摘要:前言 找了一圈也没有找到合适内置容器源码解读的文章,就打算自己写一篇,方便后面阅读加深映像 Springboot相对于以前的Spring省去了很多配置xml的麻烦,而且还支持使用内嵌式的Servlet容器,非常的便利。既然这样,为了精准快速的定位问题,以及满足我们膨胀的好奇心,那我们就有必要了解便利 阅读全文 »
posted @ 2020-03-23 15:12 yaphetsfang 阅读(819) 评论(1) 推荐(1) 编辑
摘要:1、线程池的工作原理? 线程池刚创建时,里面没有一个线程。任务队列是作为参数传进来的。不过,就算队列里面有任务,线程池也不会马上执行它们。 当调用 execute() 方法添加一个任务时,线程池会做如下判断: 如果正在运行的线程数量小于 corePoolSize,那么马上创建线程运行这个任务; 如果 阅读全文 »
posted @ 2020-03-18 16:25 yaphetsfang 阅读(414) 评论(0) 推荐(0) 编辑
摘要:一、ReentrantLock 1、ReentrantLock简介 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特 阅读全文 »
posted @ 2020-03-18 13:48 yaphetsfang 阅读(136) 评论(0) 推荐(0) 编辑
摘要:HashMap的几个关键参数很重要,大家非常熟悉capacity loadFactory threshold table size 以及下列jdk1.8后特有的红黑树相关参数。其中,最小树形化参数MIN_TREEIFY_THRESHOLD 的作用到底是什么呢? /** * 与红黑树相关的参数 */ 阅读全文 »
posted @ 2020-03-17 11:47 yaphetsfang 阅读(1913) 评论(0) 推荐(0) 编辑
摘要:分布式 实战(干货) 阅读全文 »
posted @ 2020-02-25 15:34 yaphetsfang 阅读(133) 评论(0) 推荐(0) 编辑
摘要:1、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下: 1 Object o=new Object(); // 强引用 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回 阅读全文 »
posted @ 2020-01-10 09:00 yaphetsfang 阅读(361) 评论(0) 推荐(0) 编辑
摘要:之前参加阿里的性能挑战大赛,需要使用缓存,我就采用了HashMap对数据进行缓存,可运行了一段时间电脑爆卡,我查了一下,可能是死循环问题,就用 jstack dump 了当时的线程快照,发现这次死循环问题的起源是 HashMap 的 get()方法。今天总结一下。 这次事故的原因是因为开发时没有注意 阅读全文 »
posted @ 2020-01-09 18:04 yaphetsfang 阅读(617) 评论(0) 推荐(0) 编辑
摘要:String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西容易被忽略的。 就如本文我们要讨论的问题:Java中的String有没有长度限制? 这个问题要分两个阶段看,分别是编译期和运行期。不同的时期限制不一样。 0 阅读全文 »
posted @ 2020-01-09 08:47 yaphetsfang 阅读(606) 评论(0) 推荐(0) 编辑
摘要:一个类中包含如下几类东西,他们前后是有顺序关系的 静态属性:static 开头定义的属性 静态方法块: static {} 圈起来的方法块 普通属性: 未带static定义的属性 普通方法块: {} 圈起来的方法块 构造函数: 类名相同的方法 方法: 普通方法 初始化顺序 public class 阅读全文 »
posted @ 2019-12-25 15:01 yaphetsfang 阅读(78) 评论(0) 推荐(0) 编辑
摘要:导读:本文你将获取到:同/异步 + 阻/非阻塞的性能区别;BIO、NIO、AIO 的区别;理解和实现 NIO 操作 Socket 时的多路复用;同时掌握 IO 最底层最核心的操作技巧。 BIO、NIO、AIO 的区别是什么? 同/异步、阻/非阻塞的区别是什么? 文件读写最优雅的实现方式是什么? NI 阅读全文 »
posted @ 2019-11-15 10:03 yaphetsfang 阅读(174) 评论(0) 推荐(0) 编辑
摘要:在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足 阅读全文 »
posted @ 2019-11-08 16:48 yaphetsfang 阅读(94) 评论(0) 推荐(0) 编辑
摘要:在ModelExample里,添加方法,如下 public Criteria andOrModel(String condition,String value) { addCriterion("("+condition+" = \"" + value + "\" or "+condition+" i 阅读全文 »
posted @ 2019-08-23 16:36 yaphetsfang 阅读(714) 评论(0) 推荐(0) 编辑
摘要:本节主要内容: 一、Spring 通过XML配置文件形式来AOP 来实现前置,环绕,异常通知 1. Spring AOP 前置通知 XML配置使用案例 2. Spring AOP 环绕通知 XML配置使用案例 3. Spring AOP 抛出异常后通知 XML配置使用案例 4. Spring AOP 阅读全文 »
posted @ 2019-08-19 18:58 yaphetsfang 阅读(275) 评论(0) 推荐(0) 编辑
摘要:解决问题 1、拥有前置通知和后置通知的功能,并能解决前置通知和后置通知在共享信息方面的不足(例如:统计切点方法执行时间); 2、在多线程并发条件下,能保证线程安全(因为在一个方法内定义的局部变量); 3、解决代码重复性,降低代码复杂程度; 内容说明 1、以下会给出前置通知、后置通知与环绕通知实例(观 阅读全文 »
posted @ 2019-08-19 18:28 yaphetsfang 阅读(3310) 评论(0) 推荐(0) 编辑
摘要:自己编译个JDK来提升对JVM的兴趣。本文分三部分来描述编译OpenJDK的过程,分别是编译前准备工作、构建编译环境、进行编译,在这三部分内容中顺带把趟的坑一起说明下。 一、编译前准备工作 1.1 安装Linux环境 编译OpenJDK,Windows环境要比Linux环境复杂,故选择安装Linux 阅读全文 »
posted @ 2019-08-05 11:35 yaphetsfang 阅读(950) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示