![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
答案
这个作者很懒,什么都没留下…
展开
-
netty学习笔记-netty的整体结构(一)
不使用netty是怎么实现网络通信的netty是一个网络框架, 本篇会向你介绍netty的整体结构.回忆下我们在上学时实现的"聊天室小程序", 当时是如何做的. 首先我们定义两个系统Server和Client, 然后在Server端构造一个ServerSocket, 绑定一个端口port, 通过accept()方法等待请求进来, 为了处理多个请求, 通常我们在这里获取到请求后会将具体的处理任务派给其他线程处理, 当前线程继续accept()等待下一次请求. Client这边会构造一个Socket, 绑定原创 2020-11-02 22:39:37 · 321 阅读 · 2 评论 -
dubbo学习(六) -- dubbo spi
前言了解过java spi后, 马上来看看dubbo spi有什么特殊之处dubbo spidemo还是以一个运行的demo开始, 基本和官网一样public static void main(String[] args) { ExtensionLoader<Robot> extensionLoader = ExtensionLoader.getExtensionLoader(Robot.class); Robot r = extensionL原创 2020-07-06 22:27:17 · 197 阅读 · 0 评论 -
guava EventBus 学习二 源码
上篇介绍了guava包中的event bus的使用, 本篇深入源码了解实现细节EventBus了解首先当然要看EventBus类, 类上的注释说了很多, 总结如下:1 EventBus保证在多线程环境下, 不会同时访问订阅者, 除非订阅者标注了AllowConcurrentEvents注解. 如果没有使用这个注解, 订阅者不需要担心消息重入的问题.2 消息接收方法只能接收一个参数, 而且会根据消息类型路由消息到指定的订阅者. 如果消息类型存在父子关系, 那么发送子类消息, 父类订阅者也会收到.3原创 2020-05-26 08:16:24 · 316 阅读 · 0 评论 -
消息中间件(三) 之 RabbitMQ延迟队列
延迟任务什么是延迟任务需要延迟一段时间才需要处理的任务. 比如订单关闭, 电商平台一般会给用户30分钟左右交钱时间, 当超时未交钱就需要关闭订单. 订单的延时关闭就是一种延迟任务.怎么实现延迟任务定时任务最普遍的做法应该就是定时任务了, 比如订单关闭例子, 我们会将订单存储在表中, 通过定时任务定时扫表, 比如10分钟一次, 对扫描结果进行时间处理, 如果是超时订单则执行关闭操作.定时任务实现简单, 缺点是时间延迟时间不准确, 在订单例子中, 如果第一次扫描发现订单为29分钟未支付, 那么该订单原创 2020-05-11 09:10:36 · 693 阅读 · 0 评论 -
guava EventBus 学习一
背景event bus 数据总线, 数据发送者发送信息到总线, 数据接收者从总线接收数据. 大概类似于下飞机去取行李的时候, 旅客在行李传送带旁边等候自己的行李, 在这个场景下, 飞机相当于发送者, 旅客为接收者, 传送带就是我们的数据总线, 旅客上飞机就是一个注册的过程. 与我们后面准备学习的guava中的EventBus不同的是, 旅客是自己"拉取"的行李, 但是在guava中是总线根据注册...原创 2020-04-20 08:34:09 · 222 阅读 · 0 评论 -
dubbo学习(四)-- 注册中心
注册中心在orz框架中(对就是我们在做的这个框架的名字orz~), 消费者是写死生产者地址的, 为了后面支持集群扩展(真的么…), 我们这次搞一个注册中心, orz是抄…咳咳…借鉴dubbo的产品(产品…), 所以我们使用zookeeper来作为注册中心. 现在先简单了解下注册中心, 帮助还不熟悉的同学(me~).下面是zk官方文档的一些翻译, 斜体是翻译, 粗体是个人理解zookeeper...原创 2020-04-11 23:25:34 · 239 阅读 · 0 评论 -
消息中间件 二 之AMQP实战(下) RabbitMQ springboot实践
实现内容RabbitMQ + springboot 实现消息的发送和监听springboot版本2.1.8直接上代码配置类@Configurationpublic class RabbitConfig { // mq地址 @Bean(value = "connectionFactory") @Primary public ConnectionFacto...原创 2020-03-10 22:16:30 · 154 阅读 · 0 评论 -
消息中间件 二 之AMQP实战(上)
实例分析前面我们看了AMQP说明文档, 对AMQP有了大体的了解, 本文从实例出发再过一遍AMQP的基本操作.准备环境RabbitMQ server 3.7.16RabbitMQ client 5.7.3客户端代码使用的是RabbitMQ官网教程, 如下:public static void main(String[] args) throws IOException, Timeou...原创 2020-02-11 22:44:26 · 1625 阅读 · 0 评论 -
消息中间件 一 之 AMQP译文(下)
3 Functional Specification 功能性说明3.1 Server Functional Specification 服务端功能性说明3.1.1 Messages and Content 信息和内容在中间件处理路由和队列系统中, 信息具有原子性. 信息中有一个内容, 内容包含一个内容头, 用来存储一系列属性; 还有一个内容体, 用来保存二进制数据块信息可以对应多种不同的应...翻译 2020-01-19 14:40:42 · 574 阅读 · 0 评论 -
消息中间件 一 之 AMQP译文(上)
RabbitMQ是AMQP的实现成果, 所以在研究RabbitMQ之前, 不如先看看协议本身.1 Overview 概述1.1 Goals of This Document 文档目标This document defines a networking protocol, the Advanced Message Queuing Protocol (AMQP), whichenables c...翻译 2020-01-07 22:19:14 · 655 阅读 · 0 评论 -
消息中间件 零
消息中间件是什么?MOM Message-Orientd Middleware is software infrastructure focused on sending and receiving messages between distributed systems.消息中间件就是在分布式系统中发送和接收信息的软件.从定义知, 我们通常说的消息中间件指的是在分布式系统中收发信息的工具...原创 2019-12-24 22:00:05 · 126 阅读 · 0 评论 -
JAVA RMI文档中文
原文链接 2.4 RMI 接口和类概述 负责rmi系统远程调用使用的类和接口都定义在 java.mri包中。下图展示了这些接口和类之间大概的关系: 2.4.1 java.rmi.Remote 接口 在RMI中,一个remote接口会声明一系列的方法,这些方法可能会被一个远端的java虚拟机调用。一个远端接口必须满足下列条件: 1、一个远端接口必须直接或间接实现java.rmi.Rem...翻译 2018-03-12 22:02:18 · 695 阅读 · 0 评论 -
JAVA RMI 文档中文(四)
3.4 类的动态加载 RMI允许任意可序列化的对象作为参数、返回值或者异常在RMI调用中传递。RMI利用对象的序列化机制实现虚拟机间对象的传递,也会使用合适的本地信息命名调用流,以便接收端可以下载这个文件。当远端方法的参数和返回值在接收端的虚拟机中分解组合为对象时,在流中的所有对象类型都需要类定义。分解组合过程中,首先会尝试通过本地类加载上下文中的名字来解析类。RMI也会为动态加载类...翻译 2018-09-10 21:56:02 · 218 阅读 · 0 评论 -
JAVA RMI 文档中文(二)
2.6 远端方法调用时的参数传递一个远端对象只要可以序列化就可以是方法参数或是返回值。这就包括了基础对象、远端对象和实现了java.io.Serializable的非远端对象。更多关于如何序列化类的信息科一参考 “Java Object Serialization Specification”。这些参数或者返回值不是本地的,它们是通过RMI系统动态下载的。更多细节查看Dynamic Class...翻译 2018-03-13 16:37:20 · 289 阅读 · 1 评论 -
JAVA RMI 文档中文(三)
2.7 远端对象的定位一个简单的命名服务器可以存储命名的远端对象的引用。java.rmi.Naming可以使用以URL为基础的方法存储一个远端对象的引用。对于客户端来说,如果要调用远端对象的方法的话,那么需要先获取到远端对象的引用。一个远端引用通常可以作为方法调用的参数或者返回值来获取。RMI系统提供了简单的命名服务器,它用于从指定的主机上获取远端对象。java.rmi.Naming提供了...翻译 2018-03-23 10:37:51 · 311 阅读 · 0 评论 -
OSGI起步
这周一直在研究项目的框架,项目主要使用了osgi框架。osgi的介绍就不说了。 开发环境: eclipse 4.6 java1.81.创建项目 创建Plug-in Project 其中osgi框架选择eclipse自带的Equinox。 点击finish创建完成。2.启动 创建后,src下默认生成了一个Activator类 在该类中有两个方法start和end,从名...原创 2017-07-31 21:46:53 · 330 阅读 · 0 评论