zoukankan      html  css  js  c++  java
  • 自己实现一些框架的思路

    1、LRU

    a.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次访问数组中的数据项的时候,将被访问的数据项的时间戳置为0。当数组空间已满时,将时间戳最大的数据项淘汰。
     
    b.利用一个链表来实现,每次新插入数据的时候将新数据插到链表的头部;每次缓存命中(即数据被访问),则将数据移到链表头部;那么当链表满的时候,就将链表尾部的数据丢弃。
     

    2、RPC

    使用到的技术
    1、动态代理
    生成 client stub和server stub需要用到 **Java 动态代理技术 **,我们可以使用JDK原生的动态代理机制,可以使用一些开源字节码工具框架 如:CgLib、Javassist等。
    
    2、序列化
    为了能在网络上传输和接收 Java对象,我们需要对它进行 序列化和反序列化操作。
    
    序列化:将Java对象转换成byte[]的过程,也就是编码的过程;
    反序列化:将byte[]转换成Java对象的过程;
    可以使用Java原生的序列化机制,但是效率非常低,推荐使用一些开源的、成熟的序列化技术,例如:protobuf、Thrift、hessian、Kryo、Msgpack
    
    关于序列化工具性能比较可以参考:jvm-serializers
    
    3、NIO
    当前很多RPC框架都直接基于netty这一IO通信框架,比如阿里巴巴的HSF、dubbo,Hadoop Avro,推荐使用Netty 作为底层通信框架。
    
    4、服务注册中心
    可选技术:
    
    Redis
    Zookeeper
    Consul
    Etcd
    
    作者:FX_SKY
    链接:https://www.jianshu.com/p/dbfac2b876b1
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
    

      

    3、IOC

    IoC则是一种 软件设计模式,简单来说Spring通过工厂+反射来实现IoC。
    其实就是通过解析xml文件,通过反射创建出我们所需要的bean,再将这些bean挨个放到集合中,然后对外提供一个getBean()方法,以便我们获得这bean。

    4、消息队列

     

    5、定时任务

    6、配置中心

    7、生产者消费者模型

    a wait otify  

    b blockingqueue

    参考

    https://www.jianshu.com/p/dbfac2b876b1

    https://zhuanlan.zhihu.com/p/21649950

    https://www.cnblogs.com/Ming8006/p/7243858.html

  • 相关阅读:
    数据结构学习(一)、线性表
    内容太多用省略号代替、内容不换行,鼠标移上去显示详情
    时间格式化
    51Nod--1018排序
    51Nod--1085背包问题
    51Nod--1049最大子段和
    51Nod--1051最大子矩阵和(DP入门)
    POj1852--Ants
    c# static用法
    group by用法
  • 原文地址:https://www.cnblogs.com/huilei/p/9433437.html
Copyright © 2011-2022 走看看