Loading

摘要: Grpc四种服务方法的Java远程调用 快速入门安装grpc请参考官方案例 详细说明 也可参考官方GitHub的grpc-java说明 下载/添加JAR包 添加JAR包。或对于非Android的Maven,添加到您的pom.xml <dependency> <groupId>io.grpc</gro 阅读全文
posted @ 2020-05-28 21:00 RainbowSea1 阅读(1997) 评论(0) 推荐(0)
摘要: gRPC概念 gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,基于protobuf 3.x,基于Netty 4.x +。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, No 阅读全文
posted @ 2020-05-28 20:19 RainbowSea1 阅读(2134) 评论(0) 推荐(1)
摘要: gradlew(gradle wrapper) 作用:使得使用者即便在本地没有提前安装以及配置gradle工具的前提下,依然可以通过一个很简单的命令就可以实现对项目的构建 执行gradlew执行流程 gradlew完成的第一件事情就是,首先监测本地有没有安装gradle如果没有安装(默认监测的位置是 阅读全文
posted @ 2020-05-28 20:01 RainbowSea1 阅读(357) 评论(0) 推荐(0)
摘要: 本案例使用Java与Python两种语言进行互相调用测试Thrift IDL文件(.thrift文件) #定义命名空间: namespace 语言名 路径 namespace java thrift.generated namespace py py.thrift.generated #定义类型别名 阅读全文
posted @ 2020-05-28 20:00 RainbowSea1 阅读(338) 评论(0) 推荐(0)
摘要: Apache Thrift是什么? Apache Thrift软件框架用于可扩展的跨语言服务开发,将软件堆栈与代码生成引擎相结合,构建可在C ++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#之间高效无缝工作的服务, Cocoa,JavaScript,Nod 阅读全文
posted @ 2020-05-28 19:59 RainbowSea1 阅读(504) 评论(0) 推荐(0)
摘要: Protobuf生成的代码多工程共享 使用Git作为版本控制系统,多工程引用中间代码文件,本示例引用对象为Protobuf生成的代码。 方案一(不推荐) 使用 git submodule:git仓库里的仓库 需要引入Protobuf生成的中间代码的git仓库:ServerProject Client 阅读全文
posted @ 2020-05-28 19:58 RainbowSea1 阅读(243) 评论(0) 推荐(0)
摘要: 解决多类型传输限制 解决方案一:第一种方式利用了自定义协议,传递消息的时候,对消息的前几位(比如2位)进行自定义的位置(比如AB)解码器解析的时候前二位为AB表示一种协议类型,CD一种协议类型。这种方式没有利用protobuf,而是直接使用Netty自定义协议来解决的方案。 解决方案二:在proto 阅读全文
posted @ 2020-05-28 19:57 RainbowSea1 阅读(752) 评论(0) 推荐(0)
摘要: 背景 学过java的都使用过RMI框架(remote method invocation),远程方法调用,比如A,B二个服务器,A调用B服务器上的方法就像调用本地方法一样,但是本质上是跨机器的调用了,A机器将调用的方法名,参数通过字节码的形式传输到B这台机器上,B这台机器将这些字节码转换成对B机器上 阅读全文
posted @ 2020-05-28 19:56 RainbowSea1 阅读(291) 评论(0) 推荐(0)
摘要: 出现背景 WebSocket是一种规范,是Html5规范的一部分,websocket解决什么问题呢?解决http协议的一些不足。我们知道,http协议是一种无状态的,基于请求响应模式的协议。 无状态:客户端多次请求之间是没有关系的,这样的协议存在很多问题,例:无法追踪请求来自那个客户端以及这个客户端 阅读全文
posted @ 2020-05-28 19:54 RainbowSea1 阅读(460) 评论(1) 推荐(0)
摘要: 前言: 集群之间的主节点与从节点之间实现数据的最终一致性。节点与节点之间实现数据的异步同步。节点与节点之间怎样才能感知对应节点状态。这就要求节点每隔一段时间定时的发送心跳包去感知对方的服务健康状态。一般在设置几个心跳包之后我们就可以认为对方节点已经挂了,我们就可以将该节点从集群中踢出去。 我们有个疑 阅读全文
posted @ 2020-05-28 19:52 RainbowSea1 阅读(485) 评论(0) 推荐(0)
摘要: 具体功能: 1.服务器启动,n多个客户端与服务器进行连接,一个客户端上线之后,服务器端控制台会打印xx上线了,其他的客户端控制台打印xx上线了。如果一个客户端下线了,服务器端的控制台上打印,xx下线了,其他的客户端控制台打印xx下线了。 2.多个客户端都上线之后,一个客户端(比如说A)给服务端发送消 阅读全文
posted @ 2020-05-28 19:51 RainbowSea1 阅读(522) 评论(0) 推荐(0)
摘要: 功能实现:客户端向服务端发送消息,服务器接收到消息后向客户端响应。(此程序是个死循环) 添加netty-all依赖根据不同的包管理工具以不同的方式引入 可查 https://search.maven.org/ 服务端代码 服务端主启动类 public class MyServer { public 阅读全文
posted @ 2020-05-28 19:44 RainbowSea1 阅读(605) 评论(0) 推荐(0)
摘要: 功能实现:使用netty构建一个类似于tomcat的web服务器,服务端监听8899端口,当访问8899端口的时候,服务器端给客户端hello world的响应。 服务端代码 启动主程序 public class TestServer { public static void main(String 阅读全文
posted @ 2020-05-28 19:43 RainbowSea1 阅读(270) 评论(0) 推荐(0)
摘要: Netty是一个非阻塞I/O客户端-服务器框架,主要用于开发Java网络应用程序,如协议服务器和客户端。异步事件驱动的网络应用程序框架和工具用于简化网络编程,例如TCP和UDP套接字服务器。[2]Netty包括了反应器编程模式的实现。Netty最初由JBoss开发,现在由Netty项目社区开发和维护 阅读全文
posted @ 2020-05-28 19:42 RainbowSea1 阅读(244) 评论(0) 推荐(0)
摘要: 在软件工程中, 行为型模式为设计模式的一种类型,用来识别对象之间的常用交流模式并加以实现。如此,可在进行这些交流活动时增强弹性。 模板方法模式 应用案例 - 豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程 选材—>添加配料—>浸泡—>放到豆浆机打碎 通过添加不同的配料,可以制作出不同口 阅读全文
posted @ 2020-05-28 19:34 RainbowSea1 阅读(421) 评论(0) 推荐(0)
摘要: 结构型模式(Structural Pattern)描述如何将类或者对象结合在一起形成更大的结构,就像搭积木,可以通过简单积木的组合形成复杂的、功能更为强大的结构。 适配器模式 泰国旅游使用插座问题 现实生活中的适配器例子 :泰国插座用的是两孔的(欧标),可以买个多功能转换插头 (适配器) ,这样就可 阅读全文
posted @ 2020-05-28 19:03 RainbowSea1 阅读(224) 评论(0) 推荐(0)
摘要: 在软件工程中,**创建型模式是处理对象创建的设计模式,**试图根据实际情况使用合适的方式创建对象。基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度。创建型模式通过以某种方式控制对象的创建来解决问题。 创建型模式由两个主导思想构成。一是将系统使用的具体类封装起来,二是隐藏这些具体类的实例创 阅读全文
posted @ 2020-05-28 18:50 RainbowSea1 阅读(142) 评论(0) 推荐(0)
摘要: 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验, 模式不是代码,而是某类问题的通用解决方案,设计模式(Design pattern) 代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时 间的试验和错误总结出来的。 设计模式的本质提高 软件的维护性,通用性和扩展性,并 阅读全文
posted @ 2020-05-28 18:43 RainbowSea1 阅读(142) 评论(0) 推荐(0)
摘要: 设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模 式的基础(即:设计模式为什么这样设计的依据) 设计模式常用的七大原则有: 单一职责原则 降低类的复杂度,一个类只负责一项职责。 只有逻辑足够简单,才可以在代码级违 反单一职责原则;只有类中方法数量足够少,可以在方法级别保持单一职责 阅读全文
posted @ 2020-05-28 18:41 RainbowSea1 阅读(232) 评论(0) 推荐(0)
摘要: UML——Unified modeling language UML (统一建模语言),是一种用于软件系统 分析和设计的语言工具,它用于帮助软 件开发人员进行思考和记录思路的结果 。UML本身是一套符号的规定,就像数学 符和化学符号一样,这些符号用于描 述软件模型中的各个元素和他们之间的 关系,比如 阅读全文
posted @ 2020-05-28 09:29 RainbowSea1 阅读(2797) 评论(2) 推荐(1)