logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

openGauss——SyncRepLock同步机制概述

lsn更新的时候可以一次性唤醒所有后台线程队列,避免唤醒期间队列又有更小lsn的后台线程插入,能够保证所有等待唤醒进程都根据lsn数组由WalSnder唤醒;后台线程在插入SyncRepQueue的时候通过加锁可以保证链表的有序性,所有的遍历和唤醒操作都是建立在链表有序这一大前提上;

文章图片
openGauss——主备同步机制概述

在PostgreSQL流复制过程中,有三个进程协同工作:walsender进程、walreceiver进程和startup进程。walsender进程位于主节点,负责向备节点发送WAL记录;walreceiver和startup进程位于备节点,walreceiver用于接收主节点发送的WAL记录并写入磁盘上的XLOG文件,随后startup进程对这些WAL数据进行重放。三个进程共同协作,完成主备节

文章图片
#github
openGauss——锁机制概述

当一个线程尝试获取自旋锁时,如果锁已经被其他线程占用,那么这个线程会进入一个循环,不断检查锁是否可以获取,直到成功获取锁为止。然而,自旋锁在等待期间不会释放CPU,如果持有自旋锁的线程长时间不释放锁,那么等待的线程会一直占用CPU资源,导致CPU时间的浪费。行级锁:同一个事务可能会在相同的行上保持冲突的锁,甚至是在不同的子事务中。在此过程中,线程不会进入阻塞状态,而是保持活跃,通过反复检查锁的状态

文章图片
#算法
LeetCode 2061. 扫地机器人清扫过的空间个数**

具体思路:模拟+方向记录,自己确实没想到;不能用dfs,否则会重复记录;具体代码:class Solution {public://右 下 左 上int numberOfCleanRooms(vector<vector<int>>& room) {int ans = 0, m = room.size(),n = room[0].size();int dir[4][2

#leetcode
到底了