JAVA ’ 目录归档

HotSpot虚拟机垃圾收集优化教程-垃圾收集调优简介

翻译原文

垃圾回收调优简介

从小的桌面应用到大型服务器上的web应用,各种各样的应用程序都使用标准版Java平台(Java SE)。为了支持这一系列不同的部署,Java HotSpot VM提供了多个垃圾收集器,每个垃圾收集器都是为满足不同的需求而设计的。Java SE基于应用程序在计算机上运行的类选择最合适的垃圾收集器。然而,对于每个应用程序,此选择可能不是最优的。具备严格的性能目标或者其他需求的用户,开发人员和管理员可能需要显式地选择垃圾收集器并优化某些参数已达到渴望的性能级别。本文档提供了帮助显式完成优化任务的信息。
首先,垃圾收集器的一般特性和基础的调优选项将被描述通过串行垃圾收集器,然后介绍其他垃圾收集器的具体特性以及选择垃圾收集器时要考虑的因素。

阅读全文

国内首本系统讲解Java异步编程的书籍-java异步编程实战

一 、认识异步编程

通常Java开发人员喜欢使用同步代码编写程序,因为这种请求(request)/响应(response)的方式比较简单,并且比较符合编程人员的思维习惯;这种做法很好,直到系统出现性能瓶颈;在同步编程方式时由于每个线程同时只能发起一个请求并同步等待返回,所以为了提高系统性能,此时我们就需要引入更多的线程来实现并行化处理;但是多线程下对共享资源进行访问时,不可避免会引入资源争用和并发问题;另外操作系统层面对线程的个数是有限制的,不可能通过无限的增加线程数来提供系统性能;最后使用同步阻塞的编程方式还会导致浪费资源,比如发起网络IO请求时候,调用线程就会处于同步阻塞等待响应结果的状态,而这时候调用线程明明可以去做其他事情,等网络IO响应结果返回后在对结果进行处理。

阅读全文

深度剖析Apache Dubbo核心技术内幕

一、前言

在单体应用时,不同业务模块部署在同一个JVM进程内,这时候通过本地调用就可以解决不同业务模块之间的相互引用;但多体应用时,不同业务模块大多部署到不同机器上,这时候一 个高效、稳定的RPC框架就显得特别重要了。Apache Dubbo作为阿里巴巴开源的分布式RPC框架,其已进入了Apache 孵化器项目,相信在开源社区的不断贡献下,其会成为RPC框架中的佼佼者。

阅读全文

Java Volatile关键字

原文地址 作者:Jakob Jenkov 译者:小龙虾

Java的volatile关键字用于标记一个变量“应当存储在主存”。更确切地说,每次读取volatile变量,都应该从主存读取,而不是从CPU缓存读取。每次写入一个volatile变量,应该写到主存中,而不是仅仅写到CPU缓存。

实际上,从Java 5开始,volatile关键字除了保证volatile变量从主存读写外,还提供了更多的保障。我将在后面的章节中进行说明。

阅读全文

探秘分布式解决方案: 分布式事务——从核心思想之2PC(两阶段提交)开始

本文原文地址: 点我

作者: skypyb

一、为什么要有分布式事务?

本地单机事务,有点工作经验的肯定不陌生,主要用于处理操作量大,复杂度高的数据,一般都由数据库自己实现。

开启一个事务,进行了多个对数据库进行更新(增删改)的语句后,可以自由的选择 commit rollback 来结束事务。

可以从根源上保证多个数据集合的同步。

比如一个订单系统,用户支付订单后,订单表的订单状态被改为已支付,同时,库存表中商品剩余数量减一。

阅读全文

走进Java

 作者:小村长

本项目是 周志明 老师写的《深入理解Java虚拟机》的读书笔记,也是我迄今为止读到的认为介绍JVM最好的一本书籍, 读了很多遍,每次都对JVM有新认识。本次笔记主要针对想了解JVM的同学,希望能够对大家的工作和学习有所帮助。

由于我也是第一次公开自己的读书笔记,还不是很深入,可能某些地方存在不足。希望大家有什么好的建议可以评价告诉我,我看到会尽力改进,力争能给大家提供优质的读书笔记。同时也希望有能力的同学也共享自己读书笔记方便大家交流学习。在此,我还是建议有时间的同学能够自己去看看周老师书籍。

概述

Java不仅仅是一门编程语言,还是一个由一些列计算机软件和规范形成的技术体系

Java技术体系

Sun定义的Java技术体系包括: – [x] Java程序设计语言 – [x] Java虚拟机 – [x] Class文件格式 – [x] Java API类库 – [x] Java类库

Java程序设计语言、Java虚拟机、Java API类库统称为JDK,JDK是用于Java程序开发的最小环境 <br/> Java API类库中的Java SE API子集和Java虚拟机统称为JRE,JRE是支持Java程序运行的标准环境

Java技术体系可分为四个平台: – Java Card:是一个让Java小程序(Applets)运行在小内存设备(智能卡等)的平台 – Java ME:这个平台支持的是在移动终端(手机平板等)运行Java程序 – Java SE:是一个支持桌面级应用程序(例如windows中的应用程序)的平台,提供了完整的Java核心API – Java EE: 是一个支持多层架构企业应用(例如企业资源计划的平台

展望Java技术的未来
  • 模块化
  • 混合语言
  • 多核并行
  • 进一步丰富语法
  • 64位虚拟机

Dubbo中参数回调 Callback 实现深究

参数回调 Callback是Dubbo中一种机制,与调用本地callback相同,将基于长连接生成反向代理在服务端执行客户端的逻辑,本文将以以下内容展开。

阅读全文

一个线程罢工的诡异事件

原文地址:https://crossoverjie.top/2019/03/12/troubleshoot/thread-gone/


背景

事情(事故)是这样的,突然收到报警,线上某个应用里业务逻辑没有执行,导致的结果是数据库里的某些数据没有更新。虽然是前人写的代码,但作为 Bug maker&killer 只能咬着牙上了。因为之前没有接触过出问题这块的逻辑,所以简单理了下如图:

阅读全文

Java并发之AQS详解

一、概述

  谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!

  类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch…。

  以下是本文的目录大纲:

  1. 概述
  2. 框架
  3. 源码详解
  4. 简单应用
阅读全文

线程安全的可控制最大容量且带有过期时间的本地缓存

最近在公司优化一个接口的时候打算使用一个key-value结构的本地缓存。
需要实现的功能非常简单:
1、可以控制本地缓存的最大对象数量。
2、线程安全,防止发生OOM。
3、同时支持设置单个对象的过期时间。

阅读全文

透过CountDownLatch窥探AQS

本文来自公众号“Kahuna”,可搜索Alitaba119,欢迎关注,转载请注明出处,非常感谢


 A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.

这是CountDownLatch这个类要解决的问题:实现一个同步器,让一个或者多个线程一直等待,直到一组在其他线程中执行的操作完成。

阅读全文

下一代的多语言JVM:GraalVM

GraalVM是一款高性能的可嵌入式多语言虚拟机,它能运行不同的编程语言,包括:

  • 基于JVM的语言,比如Java, Scala, Kotlin和Groovy
  • 解释型语言,比如JavaScript, Ruby, R和Python
  • LLVM支持的原生语言,比如C, C++, Rust和Swift
阅读全文

手撕面试题ThreadLocal!!!

摘要: 原创出处 http://www.jiangxinlingdu.com/ 「公众号:匠心零度 」欢迎关注和转载,保留摘要,谢谢!

说明

面试官:讲讲你对ThreadLocal的一些理解。

那么我们该怎么回答呢????你也可以思考下,下面看看零度的思考;

  • ThreadLocal用在什么地方?
  • ThreadLocal一些细节!
  • ThreadLocal的最佳实践!
  • 思考
阅读全文

Java 10的类型推导

Java 10带来了全新的语言特性:局部变量类型推导(local variable type inference)。它的主要目标就是减少样板代码(boilerplate),增强代码可读性。可以使用关键词var来替代局部变量的类型声明——编译器会根据变量初始化语句来自己填充正确的类型的。比如说:

Map<User, List<String>> userChannels = new HashMap<>();

阅读全文

谈谈Netty的线程模型

一、前言

Netty是一个异步、基于事件驱动的网络应用程序框架,其对 Java NIO进行了封装,大大简化了 TCP 或者 UDP 服务器的网络编程。Netty 的简易和快速开发并不意味着由它开发的程序将失去可维护性或者存在性能问题,它的设计参考了许多协议的实现,比如 FTP,SMTP,HTTP 和各种二进制和基于文本的传统协议,因此 Netty 成功的实现了兼顾快速开发,性能,稳定性,灵活性为一体,不需要为了考虑一方面原因而妥协其他方面。Netty 的应用还是比较广泛的,比如Apache Dubbo 、Apache RocketMq、Zuul 2.0服务网关、Spring WebFlux、Sofa-Bolt 底层网络通讯都是基于 Netty 来实现的,本文探讨Netty4。

阅读全文

return top