自己实现一些框架的思路
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\notify
b blockingqueue
参考
https://www.jianshu.com/p/dbfac2b876b1
https://zhuanlan.zhihu.com/p/21649950
https://www.cnblogs.com/Ming8006/p/7243858.html