本文目錄一覽:
- 1、java 物理節點是什麼意思
- 2、java單鏈表根據內容刪除節點
- 3、關於java節點的問題
- 4、JAVA中如何刪除樹中所選的節點?
- 5、java 關於節點 鏈表
- 6、java裡面的節點流和處理流是什麼意思?
java 物理節點是什麼意思
物理節點廣義雲計算是指服務的交付和使用模式,指通過網路以按需、易擴展的方式獲得所需的服務。這種服務可以是IT和軟體、互聯網相關的,也可以是任意其他的服務。
解釋:
這種資源池稱為「雲」。「雲」是一些可以自我維護和管理的虛擬計算資源,通常為一些大型伺服器集群,包括計算伺服器、存儲伺服器、寬頻資源等等。雲計算將所有的計算資源集中起來,並由軟體實現自動管理,無需人為參與。這使得應用提供者無需為繁瑣的細節而煩惱,能夠更加專註於自己的業務,有利於創新和降低成本。
有人打了個比方:這就好比是從古老的單台發電機模式轉向了電廠集中供電的模式。它意味著計算能力也可以作為一種商品進行流通,就像煤氣、水電一樣,取用方便,費用低廉。最大的不同在於,它是通過互聯網進行傳輸的。
雲計算是並行計算(Parallel Computing)、分散式計算(Distributed Computing)和網格計算(Grid Computing)的發展,或者說是這些計算機科學概念的商業實現。雲計算是虛擬化(Virtualization)、效用計算(Utility Computing)、IaaS(基礎設施即服務)、PaaS(平台即服務)、SaaS(軟體即服務)等概念混合演進並躍升的結果。
總的來說,雲計算可以算作是網格計算的一個商業演化版。早在2002年,我國劉鵬就針對傳統網格計算思路存在不實用問題,提出計算池的概念:「把分散在各地的高性能計算機用高速網路連接起來,用專門設計的中間件軟體有機地粘合在一起,以Web界面接受各地科學工作者提出的計算請求,並將之分配到合適的結點上運行。計算池能大大提高資源的服務質量和利用率,同時避免跨結點劃分應用程序所帶來的低效性和複雜性,能夠在目前條件下達到實用化要求。」如果將文中的「高性能計算機」換成「伺服器集群」,將「科學工作者」換成「商業用戶」,就與當前的雲計算非常接近了。
雲計算具有以下特點:
(1) 超大規模。「雲」具有相當的規模,Google雲計算已經擁有100多萬台伺服器, Amazon、IBM、微軟、Yahoo等的「雲」均擁有幾十萬台伺服器。企業私有雲一般擁有數百上千台伺服器。「雲」能賦予用戶前所未有的計算能力。
(2) 虛擬化。雲計算支持用戶在任意位置、使用各種終端獲取應用服務。所請求的資源來自「雲」,而不是固定的有形的實體。應用在「雲」中某處運行,但實際上用戶無需了解、也不用擔心應用運行的具體位置。只需要一台筆記本或者一個手機,就可以通過網路服務來實現我們需要的一切,甚至包括超級計算這樣的任務。
(3) 高可靠性。「雲」使用了數據多副本容錯、計算節點同構可互換等措施來保障服務的高可靠性,使用雲計算比使用本地計算機可靠。
(4) 通用性。雲計算不針對特定的應用,在「雲」的支撐下可以構造出千變萬化的應用,同一個「雲」可以同時支撐不同的應用運行。
(5) 高可擴展性。「雲」的規模可以動態伸縮,滿足應用和用戶規模增長的需要。
(6) 按需服務。「雲」是一個龐大的資源池,你按需購買;雲可以象自來水,電,煤氣那樣計費。
(7) 極其廉價。由於「雲」的特殊容錯措施可以採用極其廉價的節點來構成雲,「雲」的自動化集中式管理使大量企業無需負擔日益高昂的數據中心管理成本,「雲」的通用性使資源的利用率較之傳統系統大幅提升,因此用戶可以充分享受「雲」的低成本優勢,經常只要花費幾百美元、幾天時間就能完成以前需要數萬美元、數月時間才能完成的任務。
雲計算可以徹底改變人們未來的生活,但同時也用重視環境問題,這樣才能真正為人類進步做貢獻,而不是簡單的技術提升。
java單鏈表根據內容刪除節點
代碼:
// 刪除下標為index的節點
public void remove(int index) {
if (index = modCount) {
// 拋異常
System.out.println(“indexOutOfBoundsException!”);// 最好自定義異常拋出,這裡演示
return;
}
Node node = head;
// 如果節點為第一個節點
if (index == 0) {
head = head.next; // 將頭節點指向第二個節點
modCount–;
return;
}
// 如果節點為最後一個節點,找到最後一個節點的前一個節點,不用管
if (index == modCount – 1) {
System.out.println(“ddd”);
// 找到最後一個節點的前一個節點
int j = 0;
while (node != null j index – 1) {
// 最後一個節點的前一個節點
node = node.next;
j++;
}
last = node; // 最後一個節點設置為前一個節點
modCount–;
return;
}
// 如果節點為中間節點
int j = 0;
while (node != null j index – 1) {
// 查找被刪除的節點的前一個節點
node = node.next;
j++;
}
node.next = node.next.next; // 被刪除節點的下一個節點設置為被刪除節點的下下個節點
modCount–;
}
關於java節點的問題
你這個程序,的意思,也就是想封裝
鏈表
這樣一種數據結構,但是你這代碼寫的實在是。。而且介面ECollection也沒有給出,程序好像還有錯,所以我仔細沒看了,給你解釋一下,
所謂節點,在鏈表這種數據結構中,術語應該叫做
鏈結點,一個鏈結點是某個類的對象(比如Link),數據包含在鏈結點中,每一個鏈結點對象除了存儲數據之外,還提供一個自身類型的引用(通常叫做next),用於指向下一個鏈接點。
這個數據結構的知識,我看你還是自己看書自學吧,大學那些課程。。。。
JAVA中如何刪除樹中所選的節點?
//獲得商品分類樹形結構
private JTree getTree(){
if(tree ==null)
{
tree = new JTree(getTreeModel());
tree.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
// tree = new JTable(getModel());
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
// 節點選擇事件
tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent e) {
treeSelection();
}
});
tree.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
if(e.getButton()==MouseEvent.BUTTON3)
{
int selRow = tree.getRowForLocation(e.getX(), e.getY());
tree.setSelectionRow(selRow);
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
if(selRow != -1) {
if(e.getClickCount() == 1) {
// myRightClick(selRow, selPath);
selectedNode = (DefaultMutableTreeNode) selPath.getLastPathComponent();
showPopMenu(selRow,selPath,e.getX(),e.getY());
}
}
}
}
});
}
return tree;
}
/**
* 獲得當前選擇的商品對象
* @return
*
*/
private Goods getSelectedGoods(){
int row = table.getSelectedRow();
if(row!=-1)
{
String code = (String)getModel().getValueAt(row,0);
Goods g= gHandle.getGoodsByCode(code);
return g;
}
return null;
}
/**
* 樹形結構上顯示右鍵菜單
* @param selRow
* @param selPath
*
*/
private void showPopMenu(int selRow, TreePath path,int x,int y) {
// tree.add(getPopMenu());
if (path == null)
return;
//點的是根結點
if(selectedNode.isRoot())
{
JPopupMenu pop = getPopMenu(1,path,selRow);
// System.out.println(selRow);
this.getContentPane().add(pop);
pop.show(tree,x,y);
}
//葉結點
if(selectedNode.isLeaf())
{
JPopupMenu pop = getPopMenu(0,path,selRow);
this.getContentPane().add(pop);
pop.show(tree,x,y);
}
}
/**
* 創建右鍵菜單
* @param action
* @return
*
*/
private JPopupMenu getPopMenu(int action,final TreePath path,final int selRow){
if(pop==null)
{
pop = new JPopupMenu();
//新建類別事件處理
addItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String value = JOptionPane.showInputDialog(“請輸入新類別的名稱:”);
if(value==null||value.trim().length()==0)
return;
GoodsCategoryHandle gcHandle = new GoodsCategoryHandle();
if(gcHandle.isExsited(value))
{
JOptionPane.showMessageDialog(null, “該類別名稱已經存在!”, “提示”, JOptionPane.ERROR_MESSAGE);
return ;
}
DefaultMutableTreeNode newNode =new DefaultMutableTreeNode(value);
treeModel.insertNodeInto(newNode,(MutableTreeNode)treeModel.getRoot(),selRow-1);
GoodsCategory gc = new GoodsCategory();
gc.setCategoryName(value);
//更新到資料庫中
gcHandle.addCategory(gc);
}
});
//重命名類別名稱事件處理
renameItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String value = JOptionPane.showInputDialog(null,”請輸入新類別的名稱:”,selectedNode.toString());
if(value==null||value.trim().length()==0)
return;
GoodsCategoryHandle gcHandle = new GoodsCategoryHandle();
if(gcHandle.isExsited(value))
{
JOptionPane.showMessageDialog(null, “該類別名稱已經存在!”, “提示”, JOptionPane.ERROR_MESSAGE);
return ;
}
GoodsCategory gc =gcHandle.getCategory(selectedNode.toString());
gc.setCategoryName(value);
//更新到資料庫中
gcHandle.modifyCategory(gc);
selectedNode.setUserObject(value);
tree.setModel(getTreeModel());
}
});
//移除結點事件處理
delItem.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
int i =JOptionPane.showConfirmDialog(null,
“慎重!刪除類別後,該類別下的所有商品將全部被刪除,確認後繼續”, “提示”, JOptionPane.YES_NO_OPTION);
if(i==JOptionPane.YES_OPTION)
{
GoodsCategoryHandle gcHandle = new GoodsCategoryHandle();
GoodsHandle gHandle = new GoodsHandle();
int id = (gcHandle.getCategory(selectedNode.toString().trim())).getCategoryId();
ArrayList al = gHandle.getGoodsByCategory(id);
boolean b_bak = false;
//對刪除商品的備分
try {
FileWriter out = new FileWriter(“/”+CommonUtil.getTime()+”商品刪除bak.db”,true);
out.write(“商品名稱”+” “+”商品分類”+” “+
“商品別名”+” “+”商品單位”+” “+
“商品廠商”+” “+”商品庫存上限”+” “+
“商品庫存下限”+” “+
“商品庫存下限”+” “+
“商品參考售價”+” “+
“商品實際庫存”);
out.write(‘\n’);
for(int j=0;jal.size();j++)
{
Goods g = (Goods)al.get(j);
out.write(g.toString());
out.write(‘\n’);
}
out.close();
b_bak=true;
} catch (IOException e1) {
e1.printStackTrace();
b_bak = false;
}
gcHandle.setCommit(false);
boolean g_del=gHandle.deleteByCategoryId(id);
boolean gc_del=gcHandle.deleteById(id);
//只有類別刪除成功,該類別下的商品刪除成功,並且備分成功後才提交刪除
if(g_delgc_delb_bak)
gcHandle.commit();
else
{
// System.out.println(“fail”);
gcHandle.rollBack();
JOptionPane.showMessageDialog(null, “刪除失敗,可能是因為該類別下的商品存在銷售記錄,不能被刪除!”, “提示”, JOptionPane.ERROR_MESSAGE);
}
tree.setModel(getTreeModel());
tree.setSelectionRow(0);
}
else
return;
}
});
pop.add(addItem);
pop.add(delItem);
pop.add(renameItem);
}
if(action ==1)
{
delItem.setEnabled(false);
renameItem.setEnabled(false);
}
if(action ==0)
{
delItem.setEnabled(true);
renameItem.setEnabled(true);
}
return pop;
}
/**
* 用戶在商品分類樹上的事件處理
*
*
*/
private void treeSelection(){
TreePath path = tree.getSelectionPath();
if (path == null)
return;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
.getLastPathComponent();
selectedCategory = cHandle.getCategory(node.toString());
// 若選中的是根節點
if (node.isRoot())
showAllGoods();
if(node.isLeaf()){
model.setRowCount(0);
ArrayList al = gHandle.getGoodsByCategoryName(node
.toString());
for (int i = 0; i al.size(); i++) {
Goods g = (Goods) al.get(i);
model.addRow(getRow(g));
}
}
}
public GoodsCategory getCategory(){
return this.selectedCategory;
}
/**
* 生產樹形列表的數據模型
*
* @return
*
*/
private TreeModel getTreeModel() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(
PropertiesUtil.getString(“categoryTree.all”));
ArrayList categoryList = cHandle.getAllCategory();
// 添加子節點
for (int i = 0; i categoryList.size(); i++) {
GoodsCategory gc = (GoodsCategory) categoryList.get(i);
String name = gc.getCategoryName();
DefaultMutableTreeNode node = new DefaultMutableTreeNode(name);
root.add(node);
}
// 生產treeModel
treeModel = new DefaultTreeModel(root);
return treeModel;
}
java 關於節點 鏈表
Node n = new Node(data,null);
第一步: 一個新進來的節點,next是沒有滴。
n.next = this.head;
第二步:新節點的next設置成head 。
this.head = n;
第三步:把當前節點設置成head 。
Good Luck !
java裡面的節點流和處理流是什麼意思?
在JAVA中的流按流動方向可以分為輸入流及輸出流兩種,按流的處理位置可分為節點流和包裝流。輸入流,輸出流是以程序為參考點來說的,所謂的輸入流就是程序從中獲取數據的流,輸出流就是程序要其寫數據的流。在輸入流的一邊是程序,而另一邊就是流的數據源。而輸出流的一邊則目標,一邊就是程序。其實流可以想像成是一條長河,在上游有一水庫提供水源,河邊住著一戶人,隨時都可以從河邊取到水,同時,這戶人也可以把一些廢水倒進河裡,使得廢水可以流進大海。這裡所提到河就是一個數據的流動通道,而水庫就好比是計算機上的一切數據源,包括磁碟文件,內存,IO設備,鍵盤等等,JAVA提供了非常完善的輸入流類來把這些數據源掛接到流上使得程序能從這些輸入流中獲取所需的數據。河邊上的用戶就是程序,它能隨時隨地從流中取得數據,只要有數據源掛接到這個通道上可以。而大海就是程序處理完數據後要流向的目的地,這些目的地包抱磁碟文件,內存,IO設備,顯示器等,這些目的地只是相對程序來說的,它們也可能是別的進程的輸入流。如下例子,將數據輸出到別的文件,再從文件中讀出數據\x0d\x0aFilef=newFile(「1.test」);\x0d\x0aTry{FileOutputStreamout=newFileOutStream(f);\x0d\x0aBytebuf[]=」helloworld」.getBytes();Out.write(buf);\x0d\x0aOut.close();}catch(Exceptione){\x0d\x0aSystem.out.println(e.getMessage());\x0d\x0a}try\x0d\x0a{FileInputStreamin=newFileInputStream(f);\x0d\x0abytebuf[]=newbyte[1024];intlen=in.read(buf);\x0d\x0aSystem.out.println(newString(buf,0,len));}\x0d\x0acatch(Exceptione){\x0d\x0aSystem.out.println(e.getMessage());}\x0d\x0a程序用於直接操作目標設備所對應的類叫節點流類,程序也可以通過一個間接流類去調用節點流類,以達到更加靈活方便地讀寫各種類型的數據,這個間接流類就是包裝流類。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/152300.html