不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2018-10-16 23:46  分类:Java库/系统 

Maven的多模块项目搭建还是比较方便的,结构清晰,模块依赖明确,很适合用来作为开发RPC的开发架构,我们开发的RPC起一个名字,因为大学一直酷爱魔兽,喜欢魔兽解说xiaoy,他有一个别名叫做laopopo,所以我就没多想,就起了一个名字叫做laopopo-rpc,名字蹩脚了一点,不过不重要,明朝开国皇帝朱元璋真名叫朱重八,老爸叫做朱五四,他依旧做了皇帝,所以英雄不问姓名~ 虽然我写的也不是英雄,个人兴趣~

作者:php-note.com  发布于:2018-10-16 23:41  分类:Java库/系统 

RPC 技术出来很多年了,出来的时候我估计还刚刚上大学,在国内,dubbo应该算是先驱者吧,下面的图更是RPC架构经典中的经典

作者:php-note.com  发布于:2018-10-16 23:30  分类:Java库/系统 

本来只是想写一写,学一学的,不过觉得还是应该跟大家一起分享一下一个完整的在我知识体系中相对健全的RPC框架

写这个RPC的时候,我是写过一个的RPC的,其实不能称之为写,算抄吧,看过别人写的RPC,也无脑的抄了一遍别人的代码,抄完之后,问了冯大神,感觉收获很多,比每天看书看帖收获多得多

作者:php-note.com  发布于:2018-10-14 21:34  分类:Java基础 

Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。从而达到网络传输、本地存储的效果。

本文主要要看看JDK中使用Serializable和Externalizable接口来完成Java对象序列化,并给出部分属性序列化的几种方式,最终做出Serializable和Externalizable接口的几个方面的对比。

注:本文不讨论为什么不用第三方工具包完成序列化等~

作者:php-note.com  发布于:2018-10-14 19:52  分类:Java基础 

transient的作用及使用方法

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。

然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信息(如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输,这些信息对应的变量就可以加上transient关键字。换句话说,这个字段的生命周期仅存于调用者的内存中而不会写到磁盘里持久化。

作者:php-note.com  发布于:2018-10-14 11:19  分类:Java库/系统 

在我们的开发过程中,序列化是经常需要处理的问题,比如在做分布式访问数据时,或者是在做redis缓存存储数据时,如果我们涉及的知识面不够广的话,可能会简单的使用JDK的序列化,也即在需要序列化的类上implements Serializable接口去实现序列化,我想说的是这种方式在小系统中尚且可以用一用,如果是并发很大的系统会受到严重影响,这是由于JDK自带的序列化效率很低,不论是时间上还是空间上。我们经常使用的序列化方式还有XML和Json,说实在的我更多的是使用Json,我觉得它很方便很友好,但这些都不够好,我今天要将的是google开发的开源的序列化方案protocol buffer(简称protobuf),它的好处很多,独立于语言,独立于平台,最最重要的是它的效率相当高,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一。

作者:php-note.com  发布于:2018-10-03 16:34  分类:Java库/系统 

为什么要有引用计数器

Netty里四种主力的ByteBuf,其中UnpooledHeapByteBuf 底下的byte[]能够依赖JVM GC自然回收;而UnpooledDirectByteBuf底下是DirectByteBuffer,如 Java堆外内存扫盲贴 所述,除了等JVM GC,最好也能主动进行回收;而PooledHeapByteBuf 和 PooledDirectByteBuf,则必须要主动将用完的byte[]/ByteBuffer放回池里,否则内存就要爆掉。所以,Netty ByteBuf需要在JVM的GC机制之外,有自己的引用计数器和回收过程。

一下又回到了C的冰冷时代,自己malloc对象要自己free。 但和C时代又不完全一样,内有引用计数器,外有JVM的GC,情况更为复杂。

作者:php-note.com  发布于:2018-10-03 14:14  分类:Java库/系统 

在执行 mvn clean test 时报错:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project hello: Compilation failure: Compilation failure:
[ERROR] /D:/mavenWork/src/test/java/com/clc/helloworld/test/TestHelloworld.java:[2,17] 程序包org.junit不存在
[ERROR] /D:/mavenWork/src/test/java/com/clc/helloworld/test/TestHelloworld.java:[4,10] 找不到符号
作者:php-note.com  发布于:2018-10-02 01:31  分类:Java库/系统 

本章节包括:

1)OIO-------阻塞IO传输服务

2)NIO-------异步IO传输服务

3)本地传输服务-----在JVM内异步的通信

4)嵌入式传输服务------测试你的ChannelHandlers

作者:php-note.com  发布于:2018-10-01 23:11  分类:Java库/系统 

在接下来的几个小节中,我们将为你讲解Channel,EventLoop,ChannelFuture这几个组件的细节的讨论,这几个组件可以视为Netty网络模块抽象的几个典范

1)Channel-------关键字:Sockets

2)EventLoop-------关键字:控制流,多线程,并发

3)ChannelFuture-------关键字:异步通知