JAVA ’ 目录归档

使用Redis单实例实现分布式锁

一、前言

在同一个jvm进程中时,可以使用JUC提供的一些锁来解决多个线程竞争同一个共享资源时候的线程安全问题,但是当多个不同机器上的不同jvm进程共同竞争同一个共享资源时候,juc包的锁就无能无力了,这时候就需要分布式锁了。常见的有使用zk的最小版本,redis的set函数,数据库锁来实现,本节我们谈谈Redis单实例情况下使用set函数来实现分布式锁。 阅读全文

司空见惯的包

作者:刘文敏

本文所说的包不是LV,也不是Chanel,而是Java语言中的包package,是Java程序员从写“Hello World”开始就接触的概念,Java引入包机制是为了更好的组织类,防止命名冲突,进行访问控制,提供搜索和定位类。

程序员对包的使用可以说是烂熟于心,但是笔者近日在自动构建后代码合规检查过程中发现了一个有趣的现象,某个Ant项目在自动构建时顺利通过,而代码合规检查的报告中则有许多类报声明的包”com.test“与期望的包”com.Test“不匹配这类错误,查看报错的源文件及文件目录,笔者发现源文件中写的是类似package com.test,而文件目录则为com\Test,笔者对Ant能编译通过深感好奇与困惑,立马写一个测试程序进行试验。

阅读全文

计算机科学中抽象的好处与问题—伪共享实例分析

David John Wheeler有一句名言“计算机科学中的任何问题都可以通过加上一层间接层来解决”一层不够就再加一层。后半句是我加的 (* ̄︶ ̄) ,虽然有点玩笑的意思,但是也的确能说明一些问题。计算机科学的确是靠着一层又一层的抽象与封装解决了巨量的问题。

阅读全文

高性能网络通信框架Netty-Netty客户端底层与Java NIO对应关系

5.1 Netty客户端底层与Java NIO对应关系

在讲解Netty客户端程序时候我们提到指定NioSocketChannel用于创建客户端NIO套接字通道的实例,下面我们来看NioSocketChannel是如何创建一个Java NIO里面的SocketChannel的。

阅读全文

初探Kafka Streams

Kafka在0.10版本推出了Stream API,提供了对存储在Kafka内的数据进行流式处理和分析的能力。

本文将从流式计算出发,之后介绍Kafka Streams的特点,最后探究Kafka Streams的架构。

阅读全文

如何在MQ中实现支持任意延迟的消息?

什么是定时消息和延迟消息?

  • 定时消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是推迟到在当前时间点之后的某一个时间投递到 Consumer 进行消费,该消息即定时消息。
  • 延迟消息:Producer 将消息发送到 MQ 服务端,但并不期望这条消息立马投递,而是延迟一定时间后才投递到 Consumer 进行消费,该消息即延时消息。

定时消息与延迟消息在代码配置上存在一些差异,但是最终达到的效果相同:消息在发送到 MQ 服务端后并不会立马投递,而是根据消息中的属性延迟固定时间后才投递给消费者。

阅读全文

第七章.虚拟机类加载机制

类加载的生命周期

类加载的整个生命周期:加载–验证–准备–解析–初始化–使用–卸载 7个阶段,其中验证、准备、解析部分统称为连接。

类初始化的5中条件

1. 使用new关键字实例化对象的时候,读取或设置一个类的静态字段(该字段不被final修饰)的时候,以及调用一个类的静态方法的时候
2. 使用java.lang.reflect包的方法对类进行反射调用的时候
3. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先初始化其父类
4. 当虚拟机启动的时候,用户需要指定一个要执行的主类,虚拟机需要先初始化这个主类
5. 当使用JSK1.7的动态语言支持时,如果一个java.lang.invoke.MethodHandle实例最后的解析结果REFgetStatic、REFputStatic、REF_invokeStatic的方法句柄,并且这个方法句柄说对应的类没有进行过初始化

阅读全文

《技术人求职指南》(六)如何选择Offer

作者:方腾飞  原文首发于极客时间

大家阅读这篇文章的时候,也许大家已经拿到了很多offer,在这里首先要恭喜大家但是很多应聘者拿到了offer之后还是有很多疑问,比如“我拿到了两家公司的offer,哪一家公司好,我该去哪一家公司”,“某家公司给了我口头offer,我把另一家公司的offer拒了”,“如果A公司比B公司大,但是B公司给的薪水多,我如何选择呢”,“某某公司的offer我是否应该拒绝”。

阅读全文

《技术人求职指南》(二)如何写好简历

作者:方腾飞  原文首发于极客时间

前段时间有朋友问他投了简历为什么公司迟迟没有给他面试机会,还有朋友说他因为频繁跳槽在复试的时候被拒绝,但是他说每次跳槽都有进步不过我从他简历中只能看到频繁跳槽,没有看到进步。这些问题都和所写的简历息息相关。

在工作中,我筛选过近千封简历,面试过300名左右的求职者,也推荐过上百封简历。这个过程中,我发现一些求职者的简历确实有写得不尽如人意的地方,有的简历写得太简单缺少必要信息,有的简历写得太多没有突出重点。

今天我将个方面和大家谈谈如何写好简历首先什么是简历其次为什么要写好简历再次简历的内容最后,五点建议。

阅读全文

《技术人求职指南》(一)你是否应该选择跳槽

作者:方腾飞   原文首发于极客时间

每天都会有很多的人在跳槽,刚毕业几年技术人员跳槽很容易,薪水也容易让自己满意,因为公司愿意为你的潜力买单并培养你。但是随着年龄的增长,跳槽变得不那么容易,薪资也很难增长你对薪资的期望会越来越高,而公司对的要求也越来越高,如果你和应届生做的事情差不多,或者你能做的事情应届生都能做,公司花三万可以招聘三个应届生,为什么要花三万招聘你呢?在这种残酷的竞争之下,技术人员需要打造属于自己的技术壁垒,争取为公司创造更大价值,你能为公司创造千万收益,能拿百万收入。

大家都知道跳槽有利也有弊,所以需要非常谨慎的对待跳槽。跳得好可能更符合你未来的职业规划和能力提升,跳的不好则是会影响职业生涯,或者是新公司浪费你一两年的时间,比如一直做之前做过的事情,熟悉新公司的环境新业务和新同事建立信任感等都需要时间。在原公司你最重要财富是建立的根基,这个根基包括同事对你的信任、你的团队、和你在整个公司的地位,这个跟进在新公司是需要花很长一段时间才能建立起来的。

阅读全文

《JDK10新特性官方文档》在可选内存设备上的分配堆内存

原文链接

JEP 316: 在可选内存设备上的分配堆内存

Owner

Kishor Kharbas

Created

2016/12/13 19:31

Updated

2018/03/20 20:32

Type

Feature

Status

Closed / Delivered

Component

hotspot / gc

Scope

JDK

Discussion

hotspot dash dev at openjdk dot java dot net

Effort

M

Duration

M

Priority

3

Reviewed by

Mikael Vidstedt

Endorsed by

Mikael Vidstedt, Vladimir Kozlov

Release

10

Issue

8171181

 

 
阅读全文

Netty(一) SpringBoot 整合长连接心跳机制

前言

Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty。

最终能达到的效果:

  • 客户端每隔 N 秒检测是否需要发送心跳。
  • 服务端也每隔 N 秒检测是否需要发送心跳。
  • 服务端可以主动 push 消息到客户端。
  • 基于 SpringBoot 监控,可以查看实时连接以及各种应用信息。

阅读全文

《JDK10新特性官方文档》额外的 Unicode 语言标签扩展

原文地址

JEP 314: 额外的 Unicode 语言标签扩展

Owner

Naoto Sato

Created

2017/03/24 23:19

Updated

2018/03/06 17:15

Type

Feature

Status

Closed / Delivered

Component

core-libs / java.util:i18n

Scope

SE

Discussion

i18n dash dev at openjdk dot java dot net

Priority

2

Reviewed by

Alan Bateman, Brian Goetz

Endorsed by

Brian Goetz

Release

10

Issue

8177568

Summary

增强 java.util.Locale 和相关 API,实现 BCP 47 语言标签中额外的 Unicode 扩展。

阅读全文

《JDK10新特性官方文档》JEP304: 垃圾收集器接口

作者: Roman Kennke

创建时间:2016/08/06 08:45

更新时间:2018/04/09 12:37

类型: 特性

状态: 已关闭/已提交

组件:hotspot/gc

范围:实现类

讨论: openjdk.java.net上的hotspot-gc-dev

阅读全文

《JDK10新特性官方文档》JEP307: G1 Full GC的并行化

 

作者: Stefan Johansson

创建时间:2017/01/17 11:40

更新时间:2018/03/29 07:39

类型: 特性

状态: 已关闭/已提交

组件:hotspot/gc

范围:实现类

讨论: openjdk.java.net上的hotspot-gc-dev

影响:M

持续时间:M

优先级:3

审阅人:Mikael Vidstedt

支持者:Mikael Vidstedt

版本:10

问题讨论8172890

阅读全文

return top