java 从零开始手写 RPC (02)-server 服务端代码实现
说明
上一篇代码基于 socket 的实现非常简单,但是对于实际生产,一般使用 netty。
至于 netty 的优点可以参考:
为什么选择 netty?
https://houbb.github.io/2019/05/10/netty-definitive-gudie-04-why-netty
代码实现
maven 引入
<dependency>
...
2018-08-24 08:23:15 |
Java
java 从零开始手写 RPC (01) 基于 websocket 实现
RPC
解决的问题
RPC 主要是为了解决的两个问题:
(1)解决分布式系统中,服务之间的调用问题。
(2)远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。
这一节我们来学习下如何基于 websocket 实现最简单的 rpc 调用,后续会实现基于 netty4 的版本。
开源地址: https://github.com/houbb/rpc
完整流...
2018-08-24 08:23:15 |
Java
java 从零开始手写 RPC (00) 概览 overview
rpc
rpc 是基于 netty 实现的 java rpc 框架,类似于 dubbo。
主要用于个人学习,由渐入深,理解 rpc 的底层实现原理。
特性
基于 netty4 的客户端调用服务端
p2p 调用
serial 序列化支持
timeout 超时处理
register cente...
2018-08-24 08:23:15 |
Java
Google AutoML
Google AutoML
automl 可以让你只需极少的工作量和机器学习专业知识,
即可训练出高质量的自定义机器学习模型。
Microsoft cognitive-services
cognitive-services 向应用、网站和机器人注入智能算法,以自然的沟通方式来观察、倾听、谈话、了解和解释用户需求。立即使用 AI 转换业务。
参考资料
如何评价谷歌刚推出的Clo...
2018-08-22 08:39:07 |
AI
Alibaba ICE
Alibaba ICE
ICE 让前端开发简单而友好。
海量可复用物料,配套桌面工具极速构建前端应用,效率提升 100%。
⚡️ 海量高质量物料
物料丰富:组件、区块、布局、模版,场景化分类,覆盖面广,官方与社区共同维护;专业视觉设计,每周持续有新增,满足日常开发之所需。
🎯 ICEWORKS 桌面工具
极速上手,全链路工程支持:多项目管理、页面路由管理、包依赖管理、零配置本地构...
2018-08-22 08:39:07 |
Web
SQL Lock In Action
场景描述
今天在 review 代码的时候,发现代码中的一个并发 BUG。
记录一下,便于以后查阅。
BUG
问题
所有的查询之后,再更新同一条订单,在并发情况下是有问题的
场景
同时 2 个 rpc 回调,A 撤销 order,B 更新 order。
进程 A、B 同时查询订单 order(状态正常)。
实际上,A 操作之后,B 实际上是不允许的。
但是...
2018-08-22 07:12:15 |
SQL
IBO
信用拆借
概念
信用拆借是金融机构之间以各自的信用为担保进行的短期资金融通业务。
根据央行现行政策规定,可以叙做人民币信用拆借业务的金融机构有商业银行、外资银行、财务公司、农信社和证券公司。
中国外汇交易中心暨全国银行间同业拆借中心是信用拆借的服务主体。
信用拆借的利率就是拆借利率。
拆借利率水平的高低主要取决于四个因素:
一是货币资金的时间成本,即不考虑信用风险时拆借资金的利...
2018-08-22 03:23:01 |
Biz
Java Reference 弱引用 强引用 幻引用
强引用(Strong Reference)
概念
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。
Object o = new Object();
当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。
如果不使用时,要通过如下方式来弱化引用:
o = nu...
2018-08-20 06:45:45 |
Java