基于 OpenClaw 官方 Security 文档,梳理可落地的四类安全措施,并给出聊天场景、代码场景与最严格公开代理的限制策略和配置示例,帮助你快速完成安全上线。
bean手动实例化依赖注入
Spring bean 注入失败
现象
spring 的 component 在使用的时候,依赖注入全部都是 null,分析现象是没有进行注入
代码
1 | 使用class.newInstance() 获取bean的实例 |
拿到后的实例中,bean 中的依赖是没有注入进去的,导致使用的时候都是 nul 的
排查
spring 的 bean 的管理模式,默认是单例模式 singleton
解决
1 | public class xxximpl implements xxxManager, ApplicationContextAware { |
还是正常的新建实例,在创建实例之后,使用 autowireCapableBeanFactory 对新的 bean 进行相关依赖的注入
Integer-parstInt源码解读
git cherry-pick 使用
背景
项目有两个分支同时在进行开发,A和B,之前在提交代码的时候,本来是应该提交到B,结果一直是提交到A中了,现在应用要发布,A中包含着别人的代码,不能一起发上去,于是现在只想把A中自己提交的部分pick出来,然后进行发布
使用 方法
- 使用git logs查看到自己的提交记录,找到自己提交的commitId并记录下来

- 选择要pick的记录,执行
1 | git cherry-pick eaa909 (要pick出来的hash值) |
如果提示下面的错误,则说明要pick的commit是一个merge的commit,需要使用参数 -m ,后面加上属于1或者2,1或者2表示在出现冲突的时候,以哪个代码分支作为parent。如果是1的话,就是说将当前的代码作为parent,然后接受来自要pick的代码的变动。
这里我是需要将远程的merge操作同步到我本地,因此我使用的是2
1 | error: commit eaa909f0a353778f339b3a8c52611d2cfcd20c89 is a merge but no -m option was given. |
1 | git cherry-pick -m 1 03c3c85d |
- 如果涉及到要同步多个连续commit,则可以使用范围pick。将开始的commit和结束的commit用两个小数点进行连接,注意!区间pick是左开右闭的范围,也就是说不包含开始的commit,包含结束的commit。
以下面为例,就是最终合并的代码中不包含startHash,包含endHash
1 | git cherry-pic startHash..endHash |
CyclicBarrier源码分析
用来做多线程时候的同步,当所有线程都准备好了之后,才进行放行。例如现在有10个线程,在调用了cyclicBarrier的await()方法的线程数量不为10的时候,线程都会处于阻塞状态,只有达到10了才会进行释放,然后阻塞线程被唤醒,程序继续执行
CountDownLatch源码分析
AQS源码分析
zookeeper源码学习-读取配置文件
zookeeper源码学习-SyncedLearnerTracker
该类主要的功能是记录节点ack的信息,并且判断是否超过了半数等信息
这个东西是在FastleaderElection中通过getVoteTracker获取到的
关系图
![]()
变量
1 | protected ArrayList<QuorumVerifierAcksetPair> qvAcksetPairs = new ArrayList<QuorumVerifierAcksetPair>(); |
只有一个变量,节点验证器的ack集合,所以重点是这个qvAcksetPairs
QuorumVerifierAcksetPair
用来存储验证器,以及ack的列表。
1 | public static class QuorumVerifierAcksetPair { |
hasAllQuorums 核心功能,用来判断是否满足了Quorum机制
如果其中存在某个验证器没有拿到超过半数的机器的ack,则认为是失败的。
1 | public boolean hasAllQuorums() { |
1 | public class SyncedLearnerTracker { |
zookeeper源码学习-QuorumCnxManager
原本的代码很长,只记录了个别在看代码时候有用的一些
里面会启动两个线程,一个发送线程QuorumConnectionReqThread还有一个接受线程QuorumConnectionReceiverThread。
在zk启动的时候,会在QuorumConfig里面读到所有的节点信息,然后生成一个Quorum验证器,这时候已经包含了所有的节点信息。
然后是一些节点数据或者投票的发送,已经接到返回时候的相关处理,这个没有仔细研究,有兴趣的可以去看下QuorumCnxManager的源码

