摘要: 在做定时任务时,可能会使用到Timer+TimerTask类,但是这两个小小的类,却有大坑。 先来复现一下问题,如下,可能预期的是第一个PrintTask从1一直往后打印,直到为5时抛出异常,第二个PrintTask从100往后不间断打印。 public class Main12 { public s... 阅读原文
2020-03-24 23:59:02 阅读(2556) 评论(0)
摘要: 在使用多线程编程时,往往会使用一些手段保证线程安全,也就是加锁,但是加锁也必须合理,如使用synchronized对对象加锁时,如果不注意,还可能发生错误的加锁。 先看一段小测试,在这个小测试中,启动了1000个线程,每个线程在对integer加1前都先获得integer的锁,这看似是线程安全的,并且预期可能... 阅读原文
2020-03-24 23:28:02 阅读(2877) 评论(0)
摘要: 世界上不存在永远不出错的程序。可靠的程序必须处理好意外情况。java的异常处理机制降低了编写可靠程序的门槛。当系统运行变慢,排查发生最频繁的Excetion可以作为一种调优手段。那么: Exception和Error有什么区别? 我是李福春,我在准备面试。通过本篇,你可以学到下图的知识点。 Java异常的... 阅读原文
2020-03-24 21:59:06 阅读(2421) 评论(0)
摘要: Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是“master+agent(slave)”架构。Jenkins master负责提供界面、处理HTTP请求及管理构建环境;构建的执行则由Jenkins agent负责 Jenkins agent的横向扩容:只需要增加agent就可... 阅读原文
2020-03-24 20:26:08 阅读(2297) 评论(0)
摘要: 作者:IT-Evanhttps://www.cnblogs.com/IT-Evan/p/12444968.html 数据结构是一种特殊的组织和存储数据的方式,可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构... 阅读原文
2020-03-24 19:05:11 阅读(2457) 评论(0)
摘要: 在上篇文章《Java代理模式及动态代理详解》中我们介绍了Java中的静态代理模式与动态代理模式,并以JDK原生动态代理作为示例进行讲解。本篇文章我们来介绍一下基于CGLIB实现的动态代理,并与原生动态代理进行对比。 CGLIB介绍 CGLIB(Code Generation Library)是一个开源、高性能... 阅读原文
2020-03-24 17:37:02 阅读(2202) 评论(0)
摘要: 前言   在上一篇文章中,我们知道了JVM的内存划分,其中在说到方法区的时候说到方法区中存放的信息包括[已被JVM加载的类信息,常量,静态变量,即时编译的代码等],整个方法区其实就和类加载有关. 类加载过程   类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始... 阅读原文
2020-03-24 15:45:06 阅读(3672) 评论(0)
摘要: 1)Java是一门面向对象的程序设计语言; 2)1995年由sun公司发布,2010年由Oracle收购。 JVM: 1)Java Virtual Machine,Java虚拟机; 2)JVM是Java平台无关性的关键,一次编译,到处运行。 Java程序执行过程: .java源文件->编译器(compi... 阅读原文
2020-03-24 14:52:03 阅读(2875) 评论(0)
摘要: Java 7为懒惰的Java开发人员带来了一些非常好的功能。尝试资源是这种功能之一,它可以减少代码行,并使代码更健壮。在本教程中,我将讨论有关此功能的内容。 1.资源清除的旧方法(在Java 7之前) **我们长期以来一直在这样做。例如,从文件系统读取文件。代码可能看起来有所不同,但流程如下例所示: pub... 阅读原文
2020-03-24 14:18:02 阅读(2417) 评论(0)
摘要: 承接上文 通过discovery和define完成了第一轮企业级别的发散和收敛。即:站在企业的高度,基于企业愿景和内外部环境,通过战略分解和现状调研,应用企业架构的方法确定了最终的平台型企业架构,并确定了需要哪些中台,以及建设先后的问题。中台的设计阶段:进行第二轮的发散和收敛,站在一个中台产品的视角,看看如... 阅读原文
2020-03-24 13:40:06 阅读(2442) 评论(0)