seaboat的专栏——a free boat on the sea.

思想自由,技术自由

集群RPC通信

RPC即远程过程调用,它的提出旨在消除通信细节、屏蔽繁杂且易错的底层网络通信操作,像调用本地服务一般地调用远程服务,让业务开发者更多关注业务开发而不必考虑网络、硬件、系统的异构复杂环境。先看看集群中RPC的整个通信过程,假设从节点node1开始一个RPC调用,①先将待传递的数据放到NIO集群通信框...

2015-11-20 13:39:20

阅读数:5652

评论数:0

内存数据网格hazelcast的一些机制原理

hazelcast使用文档可以直接看官方文档,但机制原理相关的资料基本没有,本人硬撸源码写的一些东西,跟大家分享一下。

2015-08-03 16:53:51

阅读数:4072

评论数:1

《字符串连接你用+还是用StringBuilder》续

前言 前面的一篇文章《字符串连接你用+还是用StringBuilder》,有朋友找我反馈了一些问题,其中一位朋友说JDK10下生成的字节码跟文章中并不一样,这里继续看下是什么情况。 问题描述 如下图,按照《字符串连接你用+还是用StringBuilder》的代码在 javap 后发现它并...

2018-07-16 08:21:26

阅读数:143

评论数:0

Java如何获取当前线程

前言 Java 中经常会遇到要获取当前线程的情况,这时一般我们就会通过Thread.currentThread()来获取,接下去就看看执行该语句在 JVM 中做了什么吧。 简单例子 以下是一个简单的例子,获取当前线程并打印线程名称,输出是”main”,即主线程。 public cl...

2018-07-05 08:26:48

阅读数:1070

评论数:0

字符串连接你用+还是用StringBuilder

前言 据我所知字符串确实已经成为 Java 开发人员最常用的类了,而且是大量使用。我们都知道,String 其实是封装了字符,所以俩字符串连接就是将字符串对象里面的字符连起来。很多人习惯使用+来连接字符串,也有人会用 StringBuilder 的append方法。 “+”编译后 看看如...

2018-06-21 08:29:23

阅读数:118

评论数:0

Java线程的状态

线程拥有自己的生命周期,一条线程从创建到执行完毕的过程即是线程的生命周期,此过程可能在不同时刻处于不同的状态,线程到底有多少种状态?不同状态之间是如何转化的? 对于线程的状态的分类并没有严格的规定,只要能正确表示状态即可,如图,先看其中一种状态分类,一个线程从创建到死亡可能会经历若干个状态,但在...

2018-06-08 08:33:33

阅读数:87

评论数:0

Java9后String的空间优化

前言 据我所知 Java 开发人员几乎任何时候都会想到 String,字符串确实已经成为最常用的类了,而且是大量使用。我们都知道,String 其实是封装了字符,里面必须由字符或字节数组来存放,从 Java9 开始 Java 语言开发者对 String 做了一些空间的优化。 从char到b...

2018-05-19 09:33:21

阅读数:364

评论数:0

Java对象在JVM中长啥样

前言 Java 是门面向对象的开发语言,那么我们自己编写的 Java 类生成的对象是什么样的?它肯定保存在虚拟机的内存中,但它以怎样的结构来保存的呢?带着疑问往下看看。 关于Klass Java 层的开发可能不太熟悉 Klass,但肯定熟悉 class,我们只要知道 Klass 是 cl...

2018-05-12 08:14:50

阅读数:376

评论数:0

本地方法怎么映射Java层的数据类型

前言 Java 语言上定义了不同的数据类型,比如有基础类型int、double等等,还有所有类的父类Object等,这些都是 Java 层面的类型,而使用本地方法的处理过程需要有它们对应的类型。 大概的流程 Java 层编写的本地方法,被编译器编译为字节码,字节码将按照规范将不同类型的参...

2018-03-16 08:57:55

阅读数:369

评论数:0

System.arraycopy为什么快

前言 在 Java 编程中经常会遇到数组拷贝操作,一般会有如下四种方式对数组进行拷贝。 * for遍历,遍历源数组并将每个元素赋给目标数组。 * clone方法,原数组调用clone方法克隆新对象赋给目标数组,更深入的克隆可以看之前的文章《从JDK角度看对象克隆》。 * System.ar...

2018-03-10 08:25:14

阅读数:1841

评论数:0

从JDK角度看对象克隆

对象克隆 对象克隆其实是很常见的操作,它完成的功能是将现有对象内容(属性)拷贝到新的对象中,得到的是一个新的对象,而并不只是一个对象引用。 其实对于属性不多的对象我们可以直接通过编写代码逐一属性复制,比如我们可以直接 new 一个新对象,然后通过 set 方法将属性值一个个设置进去。但这种做法...

2018-02-23 08:34:09

阅读数:772

评论数:0

细看Java序列化机制

概况 在程序中为了能直接以 Java 对象的形式进行保存,然后再重新得到该 Java 对象,这就需要序列化能力。序列化其实可以看成是一种机制,按照一定的格式将 Java 对象的某状态转成介质可接受的形式,以方便存储或传输。其实想想就大致清楚基本流程,序列化时将 Java 对象相关的类信息、属性及...

2018-01-31 08:35:06

阅读数:595

评论数:0

从JDK角度认识枚举enum

前言 对于比较稳定的值集合,Java 提供了枚举来定义,通过它可以很方便管理集合。那么 Java 的枚举是通过怎样的机制实现的?本文将从 JDK 角度来看看枚举的原理。 定义枚举 使用很简单,比如定义一个表示“环保”、“交通”、“手机”三个值的集合,那么就可以直接定义如下,然后可直接 L...

2018-01-12 09:04:12

阅读数:963

评论数:0

服务器模型——从单线程阻塞到多线程非阻塞(下)

前言的前言 服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: * 单线程/多线程阻塞I/O模型 * 单线程非阻塞I/O模型 * 多线程非阻塞I/O模型,Reactor及其改进 前言 这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。...

2018-01-04 09:14:01

阅读数:701

评论数:0

如何让你的传输更安全——NIO模式和BIO模式实现SSL协议通信

对于SSL/TLS协议,如果要每个开发者都自己去实现显然会带来不必要的麻烦,正是为了解决这个问题Java为广大开发者提供了Java安全套接字扩展——JSSE,它包含了实现Internet安全通信的一系列包的集合,是SSL和TLS的纯Java实现,同时它是一个开放的标准,每个公司都可以自己实现JSS...

2017-12-29 09:14:18

阅读数:578

评论数:0

集群RPC通信怎么做

RPCRPC即远程过程调用,它的提出旨在消除通信细节、屏蔽繁杂且易错的底层网络通信操作,像调用本地服务一般地调用远程服务,让业务开发者更多关注业务开发而不必考虑网络、硬件、系统的异构复杂环境。RPC过程先看看集群中RPC的整个通信过程,假设从节点node1开始一个RPC调用, 1. 先将待传递的...

2017-12-29 09:05:26

阅读数:645

评论数:0

服务器模型——从单线程阻塞到多线程非阻塞(中)

前言的前言 服务器模型涉及到线程模式和IO模式,搞清楚这些就能针对各种场景有的放矢。该系列分成三部分: * 单线程/多线程阻塞I/O模型 * 单线程非阻塞I/O模型 * 多线程非阻塞I/O模型,Reactor及其改进 前言 这里探讨的服务器模型主要指的是服务器端对I/O的处理模型。...

2017-12-26 10:34:19

阅读数:1499

评论数:0

Java安全管理器

总的来说,Java安全应该包括两方面的内容,一是Java平台(即是Java运行环境)的安全性;二是Java语言开发的应用程序的安全性。由于我们不是Java本身语言的制定开发者,所以第一个安全性不需要我们考虑。其中第二个安全性是我们重点考虑的问题。一般我们可以通过安全管理器机制来完善安全性,安全管理...

2017-09-25 09:20:59

阅读数:1038

评论数:0

volatile足以保证数据同步吗

在讨论之前必须先搞清四种存储介质:寄存器、高级缓存、RAM和ROM。RAM与ROM大家都比较熟悉了,可以看成是我们经常说的内存与硬盘,寄存器属于处理器里面的一部分,而高级缓存cache是CPU设计者为提高性能引入的一个缓存,也可以说是属于处理器的一部分。在利用CPU进行运算时必定涉及操作数的读取,...

2017-09-12 09:18:39

阅读数:2199

评论数:1

谈谈Java基础数据类型

Java的基本数据类型 类型 意义 取值 boolean 布尔值 true或false byte 8位有符号整型 -128~127 short 16位有符号整型 -pow(2,15)~pow(2,15)-1 int 32位有符号整型 -po...

2017-06-08 18:27:46

阅读数:2132

评论数:1

提示
确定要删除当前文章?
取消 删除