LRU Cache原理与实现(转载)
1. LRU原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 1.1. 实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当缓存命中(即缓存数据被访… 阅读更多 »LRU Cache原理与实现(转载)
1. LRU原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 1.1. 实现 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当缓存命中(即缓存数据被访… 阅读更多 »LRU Cache原理与实现(转载)
1. 数据同步问题 有很多情况下需要考虑线程安全问题,一个全局的变量如果有可能会被多个同时执行的线程去修改,那么对于这个变量的修改就需要有一种机制去保证值的正确性和一致性,这种机制普遍的做法就是加锁。其实也很好理解,和现实中一样,多个人同时修改一个东西,必须有一种机制来把多个人进行排队。计算机的世界中也是如此,多个线程乃至多个进… 阅读更多 »数据同步及锁
1. 问题描述 对于不同的package,有些可能在proto3环境下编译,有些可能是proto2.因此会造成编译失败,报错等问题。 2. 解决办法 卸载原有版本,安装新版本。 在保留安装源码的前提下,只需要几行命令便可以快速切换。 具体步骤: 首先protoc –version 查询本机版本。假设从protoc2更换到pro… 阅读更多 »protoc版本更换(转载)
1. 前置条件 Go Protocol buffer编译器:protoc,安装可参考Protocol buffer编译安装 Go 协议编译插件 下载并安装编译插件,这里确保已配置代理可以下载。 $ export GO111MODULE=on # Enable module mode $ go get google.golang.… 阅读更多 »gRPC的Golang编译及简单使用
BGP 建立连接ACTIVE或CONNECT状态修复,需要依次排查如下: 物理线是否正常,IP基础配置是否正确; 排查防火墙是否拦截,是否需要关闭service firewall stop, 或者修改指定条目放开179端口; #关闭防火墙 systemctl stop firewalld #iptables添加端口179; ip… 阅读更多 »BGP建立连接问题排查
VRF (Virtual Routing and Forwarding)使同一系统下拥有多种且独立的路由表。在LINUX的内核中,从4.3版本已开始支持VRF,若需要较好支持vrf功能,建议Linux操作系统内核版本4.8以上。 操作环境:本文操作系统采用CentOS8,已经安装iproute2。 如下将… 阅读更多 »VPP与FRR基于Linux网络协议栈通信(vrf方式)
1. 同步与互斥的概念 现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能: 都需要访问/使用同一种资源; 多个任务之间有依赖关系,某个任务的运行依赖于另一个任务。 1.1. 同步 是指散步在不同任务之间的若干程序片断,它们… 阅读更多 »多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)转载