JAVA中获取类名与行号的代价

我们在使用Java的日志库进行日志打印时,有个微小的功能,打印当前代码行所在的类名,方法名以及行号等信息,这个功能是如何实现的呢?说起来这还是一个推动JDK发展的事情,从最初的没提供相关的能力,到JDK1.5之后提供Thread.currentThread().getStackTrace()方法能够方便的获取StackTraceElement数组,进而方便的拿到类名与行号等信息,也是非常好的一个进化例子。但是我们这里关注的是调用这个方法,给应用带来的消耗是怎么样的?这是个快速简洁的方式么? 上测试验证的代码如下: 一次本地运行效果如下: 其中类型1,是执行类名与代码行号获取,类型0是执行路径完 …

架构杂谈:JAVA包命名设计

常见的JAVA Package命名规范如下: 在java开发的过程中,每名Java开发人员都可以编写属于自己的java package,为了在编写中保证每一个java package命名的唯一性,要求开发人员在自己定义的包名前加上唯一的前缀。所以多数开发人员采用自己公司的名称.项目名.模块名…在互联网上的域名称作为自己程序包的唯一前缀。例如: com.sun.xml… 但要是个人的项目我们又应该怎么命名呢?indi :个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,版权主要属于发起者。包名为indi.发起者名.项目名.模块名*..pers :个人项目 …

身边的网络常识

作为一个资深老码农,虽然一直专心于应用开发,但仍然免不了在某些场合去要接触与了解网络相关常识概念。这些对于网络工程师可能是入门级的知识,对于应用开发来说有些陌生,学习的时候,到处度娘搜索。给出几个权威的,比较专业以及正确的资料。 那比较权威和专业的资料来源来自于哪里呢?当然是设备厂商的官方网站了。 一、VRRP 对于目前常用的分布式微服务架构,在负载层,使用LVS作为4层负载是常见的一种设计。那LVS的高可用是什么原理?答案是VRRP协议。对于VRRP协议,原先是用于网络设备的高可用的,用在LVS这样的负载层最合适不过了。附两个权威VRRP资料,图文并茂,非常好: 1、华三官网:VRRP技术白 …

单例模式与最佳实践

一、单例模式的定义 单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下:Ensure a class has only one instance , and provide a global point of access to it .(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)单例模式的通用类图如图7-2所示。 Singleton类称为单例类,通过使用private的构造函数确保了在一个应用中只产生一个实例,并且是自行实例化的(在Singleton中自己使用new Singleton())。单例模式的通用源代码如代码清单7-3所示。 二 …

操作系统:信号量与PV原语

一、信号量的提出 1965 年,荷兰学者Dijkstra 提出的信号量(Semaphores)机制是一种卓有成效的进程同步工具。在长期且广泛的应用中,信号量机制又得到了很大的发展,它从整型信号量经记录型信号量,进而发展为“信号量集”机制。现在,信号量机制已被广泛地应用于单处理机和多处理机系统以及计算机网络中。 二、信号量的原子操作 要准确理解信号量的两个原子操作PV,有几个问题是绕不过的,第一,PV为什么叫PV?第二,PV所针对的信号量类型支持什么样的能力。 在第一章时我们提到,信号量以及其机制是荷兰学者Dijkstra提出的,P和V是来源于两个荷兰语词汇,P:passeren,中文译为&#8 …