哨兵节点(Sentinel Node)
Sentinel
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
项目地址:https://gitcode.com/gh_mirrors/sentine/Sentinel
·
Sentinel Node
哨兵节点相当于一个哑单元,或者一个傀儡,作用是防止首节点为空时(first == null),出现无法指向下个节点情况。哨兵节点指向的下个单元为首节点。
public class SLList {
public class IntNode {
public int item;
public IntNode next;
public IntNode(int i, IntNode n) {
item = i;
next = n;
}
}
private IntNode first;
private int size;
public SLList() {
first = null;
size = 0;
}
public SLList(int x) {
first = new IntNode(x, null);
size = 1;
}
/** Adds an item to the front of the list. */
public void addFirst(int x) {
first = new IntNode(x, first);
size += 1;
}
/** Retrieves the front item from the list. */
public int getFirst() {
return first.item;
}
/** Returns the number of items in the list. */
public int size() {
return size;
}
/** Adds an item to the end of the list. */
/* 这里已经通过讨论首节点为空的情况修正,但采用哨兵节点会更简洁*/
public void addLast(int x) {
size += 1;
if(first == null){
first = new IntNode(x , first);
return 0;
IntNode p = first;
while(p != null){
p = p.next;
}
p.next = IntNode(x , null);
}
/** Crashes when you call addLast on an empty SLList. Fix it. */
public static void main(String[] args) {
SLList x = new SLList();
x.addLast(5);
}
}
添加节点的方法:
public void addLast(int x) {
size += 1;
if(first == null){
first = new IntNode(x , first);
return 0;
IntNode p = first;
while(p != null){
p = p.next;
}
p.next = IntNode(x , null);
}
利用哨兵节点进行优化:
public void addLast(int x) {
size += 1;
IntNode p = sentinel;
while(p != null){
p = p.next;
}
p.next = IntNode(x , null);
}
本文为CS61B学习笔记,参考链接:https://joshhug.gitbooks.io/hug61b/content/chap2/chap22.html
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
最近提交(Master分支:4 个月前 )
222670e6
* fix: Endpoint#toString host formatting; add Endpoint unit test
* test: remove empty EndpointTest.java (fix accidental PR changes)
---------
Signed-off-by: 赖尧 <yujitang_2006@qq.com> 25 天前
e7a9c560
* chore: remove node_modules from git & add to .gitignore
* fix(docs): normalize README table style (MD060) across adapters and cluster modules
* docs: fix compact table style in parameter flow README
* docs: fix markdownlint MD009 and MD060 in README files
* docs: fix table format in parameter-flow-control README (MD060/MD009)
* docs: fix table format in spring-webmvc README files (MD060/MD009)
* fix: restore UTF-8 encoding and fix markdownlint errors
* fix: wrap remaining bare URLs with angle brackets (MD034)
* fix: remove trailing spaces from table rows (MD009)
---------
Signed-off-by: 赖尧 <yujitang_2006@qq.com> 30 天前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)