//*************************==測試***************************===
//******************************=stack******************************==public class main
}
//********************===myarraylist*************************=package com.fine.stack;
import com.fine.list;
import com.fine.list.myarraylist;
/** * @description: 後進先出
* @author:
* 介面設計: size 入棧 出棧 清空 獲取棧頂元素 是否為空
*/public class mystack
/*** 出棧
** @return
*/public e pop()
/*** 獲取棧頂元素
*/public e gettop()
/*** 模擬瀏覽器頁面前進、後退、進入新頁面
*/public void go(mystackoldstack, mystacknewstack) else
}public void back(mystackoldstack, mystacknewstack) else
}public void insertnewpage(e element, mystackoldstack, mystacknewstack)
}
//*************************====abstractlist******************************==package com.fine.list;
import com.fine.abstractlist;
@suppresswarnings("unchecked")
public class myarraylistextends abstractlist
public myarraylist(int capacity) else
}/**
* 清除所有元素
*/public void clear()
size = 0;
}/**
* 是否包含某個元素
** @param element
* @return
*/public boolean contains(e element)
}return result;
}/**
* 新增元素到尾部
** @param element
*/public void add(e element) else
}/**
* 在index位置插入乙個元素
* 在指定位置插入,後面位置的元素向後挪動,如果超出了索引範圍就追加在最後面,索引小於0加在最前面
** @param index
* @param element
*/public void addindex(int index, e element)
for (int i = size - 1; i >= index; i--) else
}if (index >= elements.length)
elements[index] = element;
++size;
}/**
* 獲取index位置的元素,訪問時間和下標沒有關係
* 不管取索引是多少的元素複雜度都是o(1),因為底層是直接解析nums[index]算出位址,通過位址去找元素
** @param index
* @return
*/public e get(int index)
/*** 設定index位置的元素
** @param index
* @param element
* @return 原來的元素ֵ
*/public e set(int index, e element)
/*** 刪除index位置的元素
* 刪除乙個元素其實是改為元素的後乙個元素向前覆蓋
** @param index
* @return 成功移除的元素, 失敗拋異常
*/public e remove(int index)
//最後乙個元素
elements[--size] = null;
if (elements.length >> 2 >= size && elements.length > default_capacity) else
return oldele;
}/**
* 縮容
*/private void tirm()
elements = newelements;
system.out.println(oldcapacity + "縮容為" + newcapacity);
}/**
* 檢視元素的索引
** @param element
* @return
*/public int indexof(e element)
} else
}return element_not_found;
}/**
* 保證要有capacity的容量
* 不允許在老陣列後面申請新的記憶體空間,只有重新開闢一塊新空間,把老資料加進去
** @param capacity
*/private void ensurecapacity(int capacity)
//浮點數的計算比整數計算更耗時間,所以這裡不用浮點數計算
//double newcapacitydoub = oldcapacity * 1.5; >>1 = /2 ;<<1 = *2
int newcapacity = oldcapacity + (oldcapacity >> 1);
e newelements = (e) new object[newcapacity];
for (int index = 0; index < size; index++)
elements = newelements;
system.out.println(oldcapacity + "擴容為" + newcapacity);
}@override
public string tostring() else else }}
return new string(sb);
}}
//*************************===list介面******************************package com.fine;
/** * 抽象類可以不實現介面的方法
* 此類不對外公開,負責封裝公共方法
* @param */
public abstract class abstractlistimplements list
/*** 是否為空
** @return
*/public boolean isempty()
public void outofbounds(int index)
public void rangecheck(int index)
}public void rangecheckforadd(int index)
}}
package com.fine;
public inte***ce list
瀏覽器頁面載入效能
window.performance.timing返回網頁中所有資源和標記的資料 window.performance.getentries 根據entrytype返回資料 window.performance.getentriesbytype window.performance.getentri...
瀏覽器渲染頁面過程
今天在某論壇上看到這麼乙個問題。現在頁面有個空div,我用js向裡面插入一段html,然後獲取div的高度,發現有時候得到的div的高度不準確,請問各位有什麼方法解決一下。那麼為了更好的理解這個問題,咱們今天來聊聊瀏覽器的渲染過程 解析html 解析css 構建render tree 布局 layo...
瀏覽器頁面渲染流程
渲染流水線中css和js的載入 相關概念 html css js資料通過渲染模組的處理最終輸出為螢幕上的畫素 渲染模組被劃分為很多子階段,輸入的資料通過這些子階段最後輸出畫素,這樣的乙個處理流程叫做渲染流水線 注意 每個子階段都有其輸入內容 處理過程和輸出內容 因為瀏覽器無法直接理解和使用html,...