您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 訂閱節點轉換網站源碼查看(java swing左邊樹圖,當點擊任意節點時,右邊顯示顯示數據, 求一個簡單的源碼例子)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-20 21:44:02【】5人已围观
简介javaswing左邊樹圖,當點擊任意節點時,右邊顯示顯示數據,求一個簡單的源碼例子import java.awt.BorderLayout;import java.awt.Con
java swing左邊樹圖,當點擊任意節點時,右邊顯示顯示數據, 求一個簡單的源碼例子
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
public class TestSwingTree extends JFrame {
private JPanel p;
public TestSwingTree(String title){
super(title);
}
public void init(){
Container c = this.getContentPane();
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("child1");
DefaultMutableTreeNode child11 = new DefaultMutableTreeNode("child11");
DefaultMutableTreeNode child12 = new DefaultMutableTreeNode("child12");
DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("child2");
DefaultMutableTreeNode child3 = new DefaultMutableTreeNode("child3");
DefaultMutableTreeNode child31 = new DefaultMutableTreeNode("child31");
root.add(child1);
root.add(child2);
root.add(child3);
child1.add(child11);
child1.add(child12);
child3.add(child31);
JTree tree = new JTree(root);
tree.setPreferredSize(new Dimension(120, 400));
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
p.removeAll();
JLabel l = new JLabel(e.getPath().toString());
l.setBounds(5, 190, 170, 20);
p.add(l);
p.repaint();
}
});
c.add(tree,BorderLayout.WEST);
p = new JPanel();
p.setLayout(null);
p.setPreferredSize(new Dimension(180, 400));
c.add(p,BorderLayout.CENTER);
this.setLocation(400, 300);
this.setSize(300, 400);
this.setResizable(false);
this.setVisible(true);
this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
}
public static void main(String[] args) {
new TestSwingTree("Test Swing Jtree").init();
}
}
以太坊源碼分析--p2p節點發現
節點發現功能主要涉及 Server \ Table \ udp 這幾個數據結構,它們有獨自的事件響應循環,節點發現功能便是它們互相協作完成的。其中,每個以太坊客戶端啟動后都會在本地運行一個 Server ,并將網絡拓撲中相鄰的節點視為 Node ,而 Table 是 Node 的容器, udp 則是負責維持底層的連接。下面重點描述它們中重要的字段和事件循環處理的關鍵部分。
PrivateKey - 本節點的私鑰,用于與其他節點建立時的握手協商
Proto買粉絲ls - 支持的所有上層協議
StaticNodes - 預設的靜態 Peer ,節點啟動時會首先去向它們發起連接,建立鄰居關系
newTransport - 下層傳輸層實現,定義握手過程中的數據加密解密方式,默認的傳輸層實現是用 newRLPX() 創建的 rlpx ,這不是本文的重點
ntab - 典型實現是 Table ,所有 peer 以 Node 的形式存放在 Table
ourHandshake - 與其他節點建立連接時的握手信息,包含本地節點的版本號以及支持的上層協議
addpeer - 連接握手完成后,連接過程通過這個通道通知 Server
Server 的監聽循環,啟動底層監聽socket,當收到連接請求時,Accept后調用 setupConn() 開始連接建立過程
Server的主要事件處理和功能實現循環
Node 唯一表示網絡上的一個節點
IP - IP地址
UDP/TCP - 連接使用的UDP/TCP端口號
ID - 以太坊網絡中唯一標識一個節點,本質上是一個橢圓曲線公鑰(PublicKey),與 Server 的 PrivateKey 對應。一個節點的IP地址不一定是固定的,但ID是唯一的。
sha - 用于節點間的距離計算
Table 主要用來管理與本節點與其他節點的連接的建立\更新\刪除
bucket - 所有 peer 按與本節點的距離遠近放在不同的桶(bucket)中,詳見之后的 節點維護
refreshReq - 更新 Table 請求通道
Table 的主要事件循環,主要負責控制 refresh 和 revalidate 過程。
refresh.C - 定時(30s)啟動Peer刷新過程的定時器
refreshReq - 接收其他線程投遞到 Table 的 刷新Peer連接 的通知,當收到該通知時啟動更新,詳見之后的 更新鄰居關系
revalidate.C - 定時重新檢查以連接節點的有效性的定時器,詳見之后的 探活檢測
udp 負責節點間通信的底層消息控制,是 Table 運行的 Kademlia 協議的底層組件
買粉絲nn - 底層監聽端口的連接
addpending - udp 用來接收 pending 的channel。使用場景為:當我們向其他節點發送數據包后(packet)后可能會期待收到它的回復,pending用來記錄一次這種還沒有到來的回復。舉個例子,當我們發送ping包時,總是期待對方回復pong包。這時就可以將構造一個pending結構,其中包含期待接收的pong包的信息以及對應的callback函數,將這個pengding投遞到udp的這個channel。 udp 在收到匹配的pong后,執行預設的callback。
gotreply - udp 用來接收其他節點回復的通道,配合上面的addpending,收到回復后,遍歷已有的pending鏈表,看是否有匹配的pending。
Table - 和 Server 中的ntab是同一個 Table
udp 的處理循環,負責控制消息的向上遞交和收發控制
udp 的底層接受數據包循環,負責接收其他節點的 packet
以太坊使用 Kademlia 分布式路由存儲協議來進行網絡拓撲維護,了解該協議建議先閱讀 易懂分布式 。更權威的資料可以查看 wiki 。總的來說該協議:
源碼中由 Table 結構保存所有 bucket , bucket 結構如下
節點可以在 entries 和 replacement
很赞哦!(38364)
相关文章
- facebook和instagram的區別(國內的ins和國外的ins有什么區別) - 副本
- facebook可以更改電話號碼嗎(facebook的賬號是手機號碼嗎)
- 08 ins為什么注冊了說等幾分鐘(tfboys一共有多少粉絲)
- 08 instagram怎么看點贊記錄(怎樣從零開始做短視頻)
- 08 inspired造句簡單(英語句子排列的順序是怎樣的,)
- facebook和twitter哪個好(Facebook、Instagram、Twitter哪個平臺推廣效果更好?) - 副本
- facebook可以看到別人的聯系方式嗎(facebook姓名別人看得見嗎) - 副本
- 08 inspire用法及固定搭配(inspire固定搭配)
- facebook和twitter哪個好用(ins twitter facebook區別) - 副本
- 08 institution怎么記住(英語單詞識背方法技巧。。。急!!!)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片
职业:程序员,设计师
现居:河北省保定望都县
工作室:小组
Email:[email protected]
热门文章
站长推荐
08 instagram最新版本下載2022安卓(買粉絲為什么會自動升級新版本呢?)
facebook和推特的區別(微博跟facebook和推特的區別是?)
08 insomnia原唱mp3下載(求一首英文歌名 女的唱的 比較快 里面有一句歌詞是you are trying to save m)
08 ideas to make youtube 買粉絲(雙語閱讀筆記一)
facebook可以給陌生人發消息嗎(fb給陌生人發消息怎么算收到) - 副本
08 insomnia歌曲表達什么感情(求最有感情好聽的英文歌)
facebook名字怎么起(Facebook上怎么改下面那個名字(如圖),就是一直顯示的名字。)
facebook可以更改電話號碼嗎(facebook手機號碼已停用無法驗證怎么辦)