不灭的焱

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

作者: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 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-------关键字:异步通知

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

图2.1展示了我们即将要编写的Netty服务器端和客户端的俯瞰图,如果你是一个专注于web开发的开发者我想你还是很熟悉的,你应该会对Netty服务器端和客户端的模型有着更深的完整理解。

作者:php-note.com  发布于:2018-09-24 16:20  分类:Java库/系统 

一、无依赖其他任何jar

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>com.think.TestMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>
作者:php-note.com  发布于:2018-09-23 19:31  分类:Java库/系统 

在这个章节,我们将向你展示如果构建一个基于Netty的客户端和服务端,编写的例子很简单------客户端发送信息到服务器端,服务器端将信息原样返回,这个实战例子很重要,这这么两个原因:

 1)这个例子首先需要搭建你的开发环境,并且验证你的开发环境是否可用,当然,如果你打算我们列举的例子应用到你的项目之中做好准备,这也是很重要的

 2)你将获取亲手实践Netty的经验,感受前一章节我们讲述的:用ChannelHandlers去构建你的逻辑应用,这将为你在第三章的深入学习Netty打好良好的基础