应用监控CAT,cat-client源码阅读

CAT 由大众点评开发的,基于 Java 的实时应用监控平台,包括实时应用监控,业务监控。对于及时发现线上问题非常有用。(不知道大家有没有在用) 应用自然是最初级的,用完之后,还想了解下其背后的原理,所以有了源码阅读一说。 今天来看看 cat-client 模块,重在调用方。 打开文件,首先看一下使 ... »

从源码角度彻底理解ReentrantLock(重入锁)

[TOC] 1.前言 在 "ReentrantLock(重入锁)功能详解和应用演示" 这篇文章里我们讲解并演示了ReentrantLock(重入锁)的各种功能,其中就谈到ReentrantLock可以有公平锁和非公平锁的不同实现,只要在构造它的时候传入不同的布尔值,继续跟进下源码我们就能发现,关键在 ... »

JDK 定时任务 Timer 与 ScheduledExecutorService 排坑记录

正在认真敲代码的楼主,突然收到数据维护系统发过来的报警邮件说楼主凌晨跑的定时任务没有成功,于是便开始了楼主今天的找坑填坑的过程。 <! more 定时任务,关于 Timer 与 ScheduledExecutorService 的抉择 这事肯定会有小伙伴说了为啥不用Quartz啊,因为楼主的庙小啊, ... »

JQ-bootstrap我的开源前端框架

因为实在不知道写啥,所以迟迟没有相关的介绍。但是必须要积累过程资产,所以还是介绍一下,不定哪天就有人用了。 首先还是介绍遇到的问题,我是做传统后台管理系统的,公司赶时髦,要用bootstrap。公司其他团队已经用bootstrap作为前端做出一套系统了,算是当前系统的升级,我没参与,进入测试阶段后, ... »

HashMap的工作原理

HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至 ... »

spring源码解读-ioc

本系列博客结合我的理解,对spring的ioc进行简单分析,欢迎大家批评指正。 beanfactory 我们从beanfactory开始,beanfactory是最根部的容器,描述了整个ioc的一些规范和原则,也就是这个接口定义了ioc容器的最基本的条件,下面列出了整个接口中的方法 对于这些方法都可 ... »

总结:Java 集合进阶精讲2-ArrayList

初探: ArrayList底层结构是数组,是List接口的 可变数组的实现,所以会占用一块连续的内存空间。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组的大小,可以动态增长。 自动增长会带来数据向新数组的重新拷贝,因此,如果可预知数据量的大小,就可在构造ArrayList ... »

Java学习路线

Java学习路线 1.引言 目前网络上的学习路线质量良莠不齐,要么不是很实用,要么已经过时,要么是一些培训机构的软文广告。最近重新系统学习了一下,觉得受益匪浅,故记录下来供大家分享。 该学习路线只适合具有一定的Java基础,且有工作经验的同学,如果是新入职的新手或者基础很不好的请从基础做起。 2.路 ... »

spring boot 2.0 源码分析(五)

在上一篇文章中我们详细分析了spring boot是如何准备上下文环境的,今天我们来看一下run函数剩余的内容。还是先把run函数贴出来: 我们接着往下看,来看一下this.refreshContext(context);函数,这个函数用于刷新上下文,跟踪到源码看一下: 在refreshContex ... »

总结:Java 集合进阶精讲1

集合进阶1 为集合指定初始容量 集合在Java编程中使用非常广泛,当容器的量变得非常大的时候,它的初始容量就会显得很重要了. 因为扩容是需要消耗大量的人力物力财力的。 同样的道理,Collection的初始容量也显得异常重要。所以:对于已知的情景,请为集合指定初始容量。 分析: 插入1000000条 ... »

spring boot 2.0 源码分析(四)

在上一章的源码分析里,我们知道了spring boot 2.0中的环境是如何区分普通环境和web环境的,以及如何准备运行时环境和应用上下文的,今天我们继续分析一下run函数接下来又做了那些事情。先把run函数的代码贴出来: 紧接着我们就看到了这行代码:exceptionReporters1 = th ... »

spring boot 2.0 源码分析(三)

通过上一章的源码分析,我们知道了spring boot里面的listeners到底是什么(META INF/spring.factories定义的资源的实例),以及它是创建和启动的,今天我们继续深入分析一下SpringApplication实例变量中的run函数中的其他内容。还是先把run函数的代码 ... »

spring boot 2.0 源码分析(二)

在上一章学习了spring boot 2.0启动的大概流程以后,今天我们来深挖一下SpringApplication实例变量的run函数。 先把这段run函数的代码贴出来: 我们先来分析其中的第一个关键代码:SpringApplicationRunListeners listeners = getR ... »

spring boot 2.0 源码分析(一)

在学习spring boot 2.0源码之前,我们先利用spring initializr快速地创建一个基本的简单的示例: 1.先从创建示例中的main函数开始读起: 2.在这里我们可以看到,spring boot是通过SpringApplication.run这个函数来进行启动的,其中args可以 ... »

源码:Java集合源码之:数组与链表(一)

数组和链表是数据结构中最基本的部分。 数组 在java中,数组定义为一种基本类型,其可以通过下标获取到对应位置的数据。那么这种结构的数据,在内存中是怎么存放的呢? 数组在内存中是一段连续的存储单元,每个数据依次放在每个单元中。 分析这种结构,我们可以得出以下几个结论: 创建一个数组,必须声明其长度, ... »

软件生产线技术、开源软件声明、源码下载地址

管理信息系统软件生产线3.0版全部源码目前正在地址:http://blog.sciencenet.cn/?2551公开发布。该套程序涉及多种数据库,适应一般管理信息系统设计与制作,包括数据查询、表格式维护、表单式维护、常见多种数据处理、数据导入导出、打印报表等100多个程序,采用JAVA开发。如果掌... ... »

PHP内核之旅-3.变量

PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli PHP内核之旅-3.变量 一、弱类型语言 php是弱类型语言。一个变量可以表示任意数据类型。 php强大的一部分 ... »