【个人笔记】数据一致性的解决方案 用的是阿里的canel插件),拿到日志中具体操作的数据,再根据这条数据,用消息队列去删除对应的缓存,由专门的消费者来不断重试,直到删除成功。如果更新后不一定被读取,那么会进行很多次无意义的更新,万一你写入数据库的值,并不是直接写入缓存的,而是要经过一系列复杂的计算再写入缓存。:指保证redis里的数据和mysql的数据是一致的,不能说mysql更新了,但redis里面的还是旧的数据,反之亦然。3)通过消息队列的"删除缓存消费者"将缓存数据删除(缓存删除失败则通过MQ不断重试,直至删除成功)(用死信队列)
【个人笔记】线程池为何要构建空任务的非核心线程? 在一个新任务进来时,如果核心线程数设置为0或者设置核心线程的存活时间导致超时被销毁,线程池内无核心线程可用(因为阻塞队列没满,所以也没有非核心线程)但是新任务被放到了阻塞队列,这种情况会导致任务一直在队列中放着(任务会饥饿),所以需要添加非任务的空核心线程避免任务饥饿。(通过调用 addWorker(null, false),新创建的线程会自动从队列中获取任务,这符合线程池的工作流程,保持了线程池操作的简单和一致性。,应该依赖线程池中的线程从队列中提取任务并执行,而不是在入队后直接将任务交给新创建的线程。
【leetcode44. 通配符匹配】 (1)dp[i][j] = dp[i-1][j](0个) || dp[i-1][j-1](1个) || dp[i-1][j-2](2个)|| …(2)dp[i][j-1] = dp[i-1][j-1](0个) || dp[i-1][j-2](1个)|| …dp[i-2][j-2]:if p[i-1]=s[j]=s[j-1],2次(匹配2个前一元素)所以dp[i][j] = dp[i-1][j](0个) || dp[i][j-1](多个)dp[i-2][j]:匹配0次,不匹配前一元素。当p[i]为’*'时,
【个人笔记】一个例子理解工厂模式 创建时类名过长或者参数过多或者创建很麻烦等情况时用,可以减少重复代码,简化对象的创建过程,避免暴露创建逻辑,也适用于需要统一管理所有创建对象的情况,比如线程池的工厂类Executors。(啥车都卖,目前只卖比亚迪(实现类),厂里还能生产秦、宋、汉(类里的方法),你要问界M7我就再开一个问界的厂(实现类),先卖M7(类里的方法),有人要M5的话也可以产):定义一个工厂接口,把类似的对象归纳到同一个工厂实现类(比亚迪工厂)中,一个实现类可以有多个生产不同对象(秦、宋、汉)的方法。简单工厂:比亚迪的秦。
【一些论文写作心得体会】 确保每句话至少携带2个信息,减少重复或无意义的补充说明,除非是在讲你这么做的原因;abtract先讲研究背景和意义,引出存在的问题,然后自己的方法解决了这个问题,自己做了什么(提出了xxx方法并进行实验验证了有效性)introduction先总结现有方法,每类方法后面都要有一个很宏观的能概括你列举的方法的总结,再提一下你的方法和他们的区别/改进。第二段结合示意图介绍你的idea(非workflow).方法部分按大家熟悉的逻辑讲而不是按顺序讲,主体逻辑先讲前向传播再讲反向传播,如果按顺序讲可能要附带很
【个人笔记】685. 冗余连接 II 的解释(并查集) 所以这里只处理不成环的情况,入度为2时的边记为conflict,并跳过这种可能会导致冗余的边(无论是情况1)的真冗余边还是2)的非冗余边)。由于肯定存在一条冗余边,如果只有circle,那就是circle,如果只有conflict,那就是conflict,如果两个都有,说明是(1)的成环的情况(a)(1)有一个结点有2个入度(破环其他结点只有一个入度的条件)(可能成环可能不成环)(2)形成一个每个节点都只有一个入度的环(破环根节点入度为0的条件)(成环)(a)没去掉真正的冗余边,会出现情况(2)成环。
【笔记】HashMap的头插死循环问题 假设T1得到时间片先完成了扩容,然后通过新的hash函数变到了新位置(这里刚好还是1),然后用不带头结点的头插法把原来位置的元素挪过来,因为头插法所以顺序变反了(735变成357),但T2还是e指针指着7,next指针指着5(下图是T2的e)在轮到T2扩容的时候,e.next=newTable[i], newTable[i] = e;虽然JDK1.8改成尾插法了,不会死循环,但是因为put和get都没加同步锁,仍是线程不安全的。此时T1、T2都指着同一个位置,都是e指针指着7,next指针指着5,
【个人笔记】事务隔离级别以及MVCC解决幻读 MVCC(多版本并发控制):数据库中同时存在多个版本的数据,一个版本是一张快照(ReadView文件),它们通过版本链连接,版本链的头节点代表当前记录的最新值。不仅给事务加了行锁,还给行前后的间隙加了间隙锁,当另一个事务尝试在一个已经被锁定的间隙插入新的记录时,会被阻塞,从而避免了幻读问题。:事务1对数据进行修改但还没提交,事务2读取修改后的数据,之后事务1执行错误,回滚了,此时。了某些数据,之后事务1再次根据条件查询,发现读取的数据。,之后事务1的再次读取数据1时,发现。:数据库中事务之间的隔离程度。
【笔记】【矩阵的二分】668. 乘法表中第k小的数 (2)此外,下面的k=i~m-1行也存在比matrix[i][j]小/等于的数:第k行matrix[k][mid/k]左边的值必然比matrix[i][mid/i]小,因为matrix[i][j]=i*j, k>i, 左边的值
【解决报错+个人笔记】unable to access ‘https://github 说明pom.xml文件有问题,自己打开这个文件会发现有多个版本混在一起,选一个版本保存就可(就是说有>>>>>>>>>>>>>>>>和
【解决问题】解决vscode无法debug python3.6的问题以及连接linux远程服务器的vscode如何在root模式下调试代码 解决方法:vscode将python扩展的版本降到2022.8.1(最新的扩展不再支持py36)遇到问题:降级后代码不高亮且点击debug没有反应。解决方法:配置launch.json文件。解决方法:这个插件对应的依赖也要降级。
【解决报错】新镜像源request to https://registry.npm.taobao.org/xxx.tgz failed, reason: certificate has expired 已换新镜像源报错如下:解决方法:用浏览器打开这个网址然后下载,发现有个readme.md文件,教你怎么安装,一般是:比如上面的报错就是npm install css-select所以说运行npm install xxx就行。
【个人笔记】idea的注解中的mysql语句无法自动补全 在idea的右侧的database(或view->tool windows->database)->选“MySQL”将方言设为MySQL, 点击+选择项目路径,将语言设置为MySQL。填上信息后,点击 Test Connect 测试,再点ok和应用。(或者在settings中搜SQL Dialects)(2)安装Database Navigator插件。右键驱动->Add as Library…(1)设置全局方言为MySQL。以下(1~4)步骤不分先后。(4)安装jdbc驱动。(5)为语句注入语言。
【解决报错】Pytorch dataloaders : OSError: [Errno 9] Bad file descriptor 报错OSError: [Errno 9] Bad file descriptor
【个人笔记】chatgpt-mirai-qq-bot-browser-version项目搭建过程及其踩坑(ubuntu+onebot(go-cqhttp)+newbing)) 【个人笔记】chatgpt-mirai-qq-bot-browser-version项目搭建过程及其踩坑(ubuntu+onebot(go-cqhttp)+newbing))