hqfBlog


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

RPC框架设计与实现系列

置顶 | 发表于 2020-01-06 | 分类于 RPC

前言


本项目实现了一个简易RPC框架,项目中迭代了五个版本的RPC框架。每个版本最终实现的结果:

V1:jdk动态代理+BIO通信+反射。

V2:较第一版利用线程池实现伪异步。

V3:较第二版利用NIO实现通信。

V4:较第三版利用Netty对原生的NIO进行简化。

V5:较第四版利用ZooKeeper实现服务治理,同时利用SPI机制对负载均衡策略进行选择。

源码可访问我的github获取。

服务端暴露相应服务。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class provider {
public static void main(String[] args) throws Exception {
// 用来暴露服务的类
HelloService helloService = new HelloServiceImpl();
// 端口号
int port = 1234;
ExportService.exportHelloService_v5(helloService, port);
//ExportService.exportHelloService_v1(helloService, port);
//ExportService.exportHelloService_v2(helloService, port);
//ExportService.exportHelloService_v3(helloService, port);
//ExportService.exportHelloService_v4(helloService, port);
}
}

客户端实现相应逻辑,向服务端发送请求,并接收和解析服务端的响应结果。

阅读全文 »

ThreadLocal源码分析

发表于 2020-05-25 | 分类于 Java并发编程

前言


ThreadLocal类作为线程相关的比较重要的类,在开发和面试中经常被用到或者问到。比如之前我们实现的分布式锁中,在基于ZK的分布式锁中就有被用到。当时它的作用是记录下在ZK中当前锁的目录和前一个锁的目录。从而达到有序释放和获取锁的目的。

阅读全文 »

Hadoop之MapReduce原理分析(转载整理)

发表于 2020-05-21 | 分类于 Hadoop

前言


本篇的目的是

阅读全文 »

Spring源码解读之AOP

发表于 2020-05-13 | 分类于 Spring

前言


Spring中的AOP用于在程序运行期间,不修改源码对已有方法进行增强,其优势在于减少重复代码,提高开发效率,方便维护,比如说通常用在日志、事务等场景下,AOP的实现是基于动态代理技术,本章会先从AOP的概念出发, 到AOP的使用,最终涉及到相关的源码解析部分。

阅读全文 »

Spring源码解读之IOC容器

发表于 2020-04-23 | 分类于 Spring

前言


IOC(Inversion Of Controll,控制反转)是一种设计思想,将原本在程序中手动创建对象的控制权,交由给Spring框架来管理。IOC容器可以看作Spring实现IOC的载体,它实际上就是一个Map,Map中存放的是各种对象,IOC容器就像是一个工厂,当需要创建一个对象,只需要配置好配置文件/注解即可,不用考虑对象是如何被创建出来的,大大增加了项目的可维护性且降低了开发难度。

阅读全文 »

分布式锁的实现

发表于 2020-04-19 | 分类于 分布式锁实现

前言


锁的出现防止了在多线程的情况下对一些共享变量的错误操作,一般用的最多的锁无非是synchronized和Lock,在单机的情况下能保证线程的安全性,但是在分布式的情况下这种加锁方式并不能保证线程的安全性,因此提出分布式锁的概念。分布式锁的实现主要有Redis、Zookeeper、Mysql等,本篇主要介绍基于Redis和Zookeeper的分布式锁实现。

阅读全文 »

git命令总结(转载整理)

发表于 2020-04-18 | 分类于 Git

前言


项目的版本管理在开发的时候是一个常规操作,结合其他博客与实际操作来整理一下Git的一些常规操作。

阅读全文 »

关于递归与回溯的想法

发表于 2020-02-27 | 分类于 算法

前言


在刷过一些搜索相关算法题之后,BFS类的题实现都比较简单,我的关注点主要在DFS上,相关的算法题非常多,而回溯作为DFS中的一种,可以解决全排列、组合等等的一系列问题。

阅读全文 »

jdk1.8新特性学习与总结

发表于 2020-01-27 | 分类于 Java基础

前言


现在常用的jdk版本就是1.8的版本,1.8版本是一次重大的版本升级,本篇简单总结一下常用的一些新特性。
阅读全文 »

RocketMQ知识点整理

发表于 2020-01-19 | 分类于 RocketMQ

前言


本文旨在总结和整理在学习RocketMQ中遇到的零碎问题,方便之后的回顾。
阅读全文 »
12…6>
hqf1996

hqf1996

51 日志
17 分类
44 标签
© 2020 hqf1996
博客全站共字 |
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4