标签:final

Java

JVM类加载过程

puefu.he 发布于 2018-12-09

在Java语言里,编译时并不进行链接工作,类型的加载、链接和初始化工作都是在Java虚拟机执行过程中进行的。在Java程序启动时,Java虚拟机通过加载指定的类,然后调用该类的main方法而启动。在JVM启动过程中,外部class字节码文件会经过一系列的过程转化为JVM中执行的数...

阅读(4)评论(0)赞 (0)

Java

HashMap实现原理

1

dulong 发布于 2018-12-09

HashMap 是在JDK1.2中引入的一种 K/V对 形式的集合类. 在底层, HashMap 通过 数组和单链表 组合的结构形式来存储数据,数组在这作为一个外部结构,数组中的每个节点被称做 Bucket(桶) ,而 桶是由在单链表构成 , JDK1.8 之后 为了解决长链表下...

阅读(6)评论(0)赞 (0)

Java

懒加载的艺术

zhuangli 发布于 2018-12-09

懒加载是一种加载方式,加载对象一般有两种方式,一是在启动时就立即创建好,另一种则是在需要用到的时候再去加载即懒加载。懒加载一般会针对单例场景,且一般是针对在加载消耗较大费时,且不一定会用到的场景。 好了,相信啥意思大家都明白!那么具体如何实现呢?其实挺有意思的! 方案1. 直接用...

阅读(9)评论(0)赞 (0)

Java

Effective Java Item28 – 列表優於數組

3

Harries 发布于 2018-12-09

這篇是Effective Java – Prefer lists to arrays章節的讀書筆記 本篇的程式碼來自於原書內容 Item28: 列表優於數組 我們來看看先講泛型跟數組的不同 covariant 協變 跟 invariant 不可變 Array 是協變 ...

阅读(10)评论(0)赞 (0)

Java

使用resilience4j-retry实现函数式重试

xiaoli.he 发布于 2018-12-08

Resilience4j中有一个特殊模块(Resilience4j -Retry),它是为Java8和函数式编程设计的容错库,它是具有最小依赖性的轻量级库(主要是vavr) 当你重试时,有很多例子: 用于远程系统调用的跨微服务通信,其中很可能还需要添加断路器逻辑 如果您...

阅读(19)评论(0)赞 (0)

Java

死磕java concurrent包系列(三)基于ReentrantLock理解AQS的条件队列

2

yanxinchi 发布于 2018-12-08

基于Codition分析AQS的条件队列 前言 上一篇我们讲了AQS中的同步队列队列,现在我们研究一下条件队列。 在java中最常见的加锁方式就是synchorinzed和Reentrantlock,我们都说Reentrantlock比synchorinzed更加灵活,其实就灵活...

阅读(17)评论(0)赞 (0)

Java

线程池中使用ThreadLocal方案 原 荐

1

zhuangli 发布于 2018-12-07

人工手打,翻译自: https://moelholm.com/2017/07/24/spring-4-3-using-a-taskdecorator-to-copy-mdc-data-to-async-threads 本来想自己写一篇关于线程池threadlocal的,偶然看到这...

阅读(26)评论(0)赞 (0)

Spring

SOFATracer 插件埋点机制详解

5

xiaoli.wang 发布于 2018-12-07

SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等。 从RoadMap 和 PR 来看,目前 SOFATracer 已经支持...

阅读(37)评论(0)赞 (0)

Java

Java代码复用的三种常用方式:继承、组合和代理

xubiao.zhuang 发布于 2018-12-07

复用代码是Java众多引人注目的功能之一。这句话很通顺,没什么问题,但问题在于很多人并不清楚“复用”是什么。就好像我说“沉默王二是一个不止会写代码的程序员”,唉,沉默王二是谁? 我们需要来给“复用”下一个定义。复用,说白了就是重复使用。 举个例子,很多名人说了很多名言,我们在说话...

阅读(15)评论(0)赞 (0)

Java

Smali 语法解析——Hello World

1

xubiao.zhuang 发布于 2018-12-07

通过上一篇文章的学习,我们都知道了 Java 代码是如何执行的。Java 编译器将 .java 源文件编译为 .class 字节码文件, JVM (Java虚拟机)将字节码解释为机器代码最终在目标机器上执行。而在 Android 中,代码是如何执行的呢 ?首先看下面这张图: 这里...

阅读(27)评论(0)赞 (0)

Java

java内存模型–JMM

3

songhua.gao 发布于 2018-12-07

编辑推荐: 本文来自于cnblogs,本文介绍了Java运行时数据时的内存区域以及主内存和工作内存等相关内容。 在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。 线...

阅读(23)评论(0)赞 (0)

Java

深入理解Java虚拟机(二)

4

刘莉莉 发布于 2018-12-06

1、泛型出现之前存在的问题: 所有对象的类型都继承自Object,虚拟机只有到运行时才能知道这个Object具体是什么类型,在编译期是无法检查这个Object是否强制转型成功,会将ClassCaseException的风险转移到程序运行期。 2、泛型的作用: 通过泛型,编译器可以...

阅读(18)评论(0)赞 (0)

Java

Class 文件格式详解

15

尖兵 发布于 2018-12-06

Write once, run everywhere! ,我们都知道这是 Java 著名的宣传口号。不同的操作系统,不同的 CPU 具有不同的指令集,如何做到平台无关性,依靠的就是 Java 虚拟机。计算机永远只能识别 0 和 1 组成的二进制文件,虚拟机就是我们编写的代码和计算...

阅读(22)评论(0)赞 (0)

Java

Android全埋点解决方案之Javassist

9

likai 发布于 2018-12-06

Javassist Java 字节码以二进制的形式存储在 .class 文件中,每一个 .class 文件包含一个 Java 类或接口。Javaassist 就是一个用来 处理 Java 字节码的类库。它可以在一个已经编译好的类中添加新的方法,或者是修改已有的方法,并且不需要对字...

阅读(18)评论(0)赞 (0)

Java

【很全很新】C3P0 连接池和 DBUtils 配合事务使用总结

1

小丁 发布于 2018-12-06

很久没用原生连接池,最近想写个小功能,结果发现很多地方不太懂,然后网上搜了半天的 c3p0 相关内容,全不符合我想要的。相同内容太多 而且没什么,所以我自己来总结下吧。 01 总结全文 从以下来总结 连接池的作用,为什么要使用连接池 书写自己的连接池,用于理解框架 c3p0 等连...

阅读(23)评论(0)赞 (0)

Spring

spring cloud hystrix实践

4

xubiao.zhuang 发布于 2018-12-06

介绍 hystrix是spring cloud的熔断降级组件,由netflix公司开源,通过命令模式结合rxjava框架实现,命令模式封装了用户具体业务,使用rxjava对命令的执行结果进行统计,根据统计结果按一定策略执行熔断降级,避免造成应用失败雪崩。 执行流程如下图: 流程说...

阅读(17)评论(0)赞 (0)

Java

OKHttp源码解析(4)—-拦截器CacheInterceptor

小丁 发布于 2018-12-06

Serves requests from the cache and writes responses to the cache. 缓存拦截器,负责读取缓存直接返回、更新缓存。当网络请求有符合要求的Cache时,直接返回Cache。如果当前Cache失效,则删除。CacheStr...

阅读(13)评论(0)赞 (0)

Java

了解Vert.x:事件循环

xiaoli.wang 发布于 2018-12-06

让Vert.x框架实现高度可扩展和高性能的核心是事件循环,更具体地说是Multi-Reactor模式,以及它的消息总线,在Vert.x中称为EventBus。 在本文中,我想解决有关事件循环的误解,例如: “Vert.x有EventLoop,所以它是单线程的,只使用一个CPU”?...

阅读(19)评论(0)赞 (0)