JAVA ’ 目录归档

Hystrix熔断机制原理剖析

一、前言

在分布式系统架构中多个系统之间通常是通过远程RPC调用进行通信,也就是 A 系统调用 B 系统服务,B 系统调用 C 系统的服务。当尾部应用 C 发生故障而系统 B 没有服务降级时候可能会导致 B,甚至系统 A 瘫痪,这种现象被称为雪崩现象。所以在系统设计时候要使用一定的降级策略,来保证当服务提供方服务不可用时候,服务调用方可以切换到降级后的策略进行执行。 阅读全文

《JDK10新特性官方文档》从JDK10中移除javah工具

原文链接

  • JEP 313: 移除Native-Header生成工具 (javah)
  • Owner    Jonathan Gibbons
  • Created    2017/06/23 17:28
  • Updated    2018/01/10 22:02
  • Type    Feature
  • Status    Closed / Delivered
  • Component    tools / javah
  • Scope    JDK
  • Discussion    compiler dash dev at openjdk dot java dot net
  • Effort    XS
  • Priority    3
  • Reviewed by    Brian Goetz, Joe Darcy
  • Endorsed by    Brian Goetz
  • Release    10
  • Issue    8182758

概要

 

从JDK中移除javah工具。

阅读全文

《JDK10新特性官方文档》-317:实验性的基于JAVA的JIT编译器

JEP 317: 实验性的基于JAVA的JIT编译器
阅读全文

实现高可用的两种方案与实战

我之前在一片文章 用Nginx+Redis实现session共享的均衡负载 中做了一个负载均衡的实验,其主要架构如下:

架构

debian1作为调度服务器承担请求分发的任务,即用户访问的是debian1,然后debain1把请求按照一定的策略发送给应用服务器:debian2或者debain3,甚至更多的debain4、5、6……

阅读全文

关于阅读源码的一些心得

一、前言

本文来谈谈自己关于阅读源码的一些心得体会,希望大家能够提供更好的意见,留言回复。 阅读全文

《JDK10新特性官方文档》– 五月翻译邀请

原文链接       邀请者:小村长

 

概述

本篇是 Open JDK10官方文档的新特性介绍翻译邀请函。北京时间3月21日,Oracle官方宣布JDK10正式发布。从此JDK开启一个新的旅程。因为Oracle和OpenJDK大致相同,所以在此采用的是OpenJDK的版本进行翻译的。本次翻译邀请针对对新技术感兴趣的同学,希望本次翻译大家积极参加,同时能够以专业的素养为大家提供一份技术盛宴。

如何领取

通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节。领取完成之后,译文最好在一个星期内翻译完成,如果不能完成翻译,也欢迎你邀请其他同学和你一起完成翻译。请谨慎领取,很多文章领取了没有翻译,导致文章很长时间没人翻译。

阅读全文

《Hibernate快速开始》Query /HQL and JPQL (上)

Hibernate查询语言(HQL)和Java持久性查询语言(JPQL)都是与SQL类似的面向对象模型的查询语言。JPQL是受HQL影响很大的子集。所有的JPQL查询都是有效的HQL查询,但反过来并不正确。

      HQL和JPQL都是非类型安全的方式来执行查询操作。Criteria 查询提供了一种查询类型安全的方法。有关更多信息,请参阅标准

阅读全文

分布式限流

前言

本文接着上文应用限流进行讨论。

之前谈到的限流方案只能针对于单个 JVM 有效,也就是单机应用。而对于现在普遍的分布式应用也得有一个分布式限流的方案。

基于此尝试写了这个组件:

https://github.com/crossoverJie/distributed-redis-tool

阅读全文

基于一致性哈希的分布式内存键值存储——CHKV

Consistent Hashing based Key-Value Memory Storage

基于一致性哈希的分布式内存键值存储——CHKV。

系统设计

  • NameNode : 维护key与节点的映射关系(Hash环),用心跳检测DataNode(一般被动,被动失效时主动询问三次),节点增减等系统信息变化时调整数据并通知Client;
  • DataNode : 存储具体的数据,向NameNode主动发起心跳并采用请求响应的方式来实现上下线,便于NameNode挪动数据
  • Client : 负责向NameNode请求DataNode数据和Hash算法等系统信息并监听其变化,操纵数据时直接向对应DataNode发起请求就行,暂时只包含set,get,delete三个操作

阅读全文

并发编程之——读锁源码分析(解释关于锁降级的争议)

1. 前言

在前面的文章 并发编程之——写锁源码分析中,我们分析了 1.8 JUC 中读写锁中的写锁的获取和释放过程,今天来分析一下读锁的获取和释放过程,读锁相比较写锁要稍微复杂一点,其中还有一点有争议的地方——锁降级

今天就来解开迷雾。

阅读全文

秒杀架构实践

前言

之前在 Java-Interview 中提到过秒杀架构的设计,这次基于其中的理论简单实现了一下。

本次采用循序渐进的方式逐步提高性能达到并发秒杀的效果,文章较长请准备好瓜子板凳(liushuizhang?)。

本文所有涉及的代码:

阅读全文

使用Dubbo中需要注意的事项

一、前言

Dubbo作为高性能RPC框架,已经进入Apache卵化器项目,虽然官方给出了dubbo使用的用户手册,但是大多是一概而过,使用dubbo时候要尽量了解源码,不然会很容易入坑。 阅读全文

深入理解线程通信

前言

开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景。或者是线程 A 在执行到某个条件通知线程 B 执行某个操作。这些场景可以通过以下几种方式实现:

阅读全文

使用JetCache的异步API访问Redis缓存

摘要:
本文介绍了JetCache的异步API,通过异步方式访问缓存可以提升性能,降低RT。
JetCache的异步API和同步API是完全兼容的,甚至用同步的开发方式也能获得一部分异步带来的好处。

阅读全文

结合JVM源码浅谈Java类加载器

一、前言

之前文章 Java 类加载器揭秘 从Java层面讲解了Java类加载器的原理,这里我们结合JVM源码在稍微深入讲解下。

阅读全文

return top