package com.zhb.corejava.util; public class Stack<E> { private E[] elementData; private int top; private int count; @SuppressWarnings("unchecked") public Stack(int size) { this.elementData = (E[]) new Object[size]; top = -1; count = 0; } public Stack() { this(10); } /** * 返回堆棧長度 * @return */ public int getSize(){ return elementData.length; } /** * 返回棧中元素的個數 * @return */ public int getElementCount() { return count; } /** * 判棧空 * @return */ public boolean isEmpty(){ return top == -1; } /** * 判棧滿 * @return */ public boolean isFull(){ return top == (elementData.length-1); } /** * 入棧操作 * @param object */ public void push(E object){ if(isFull()){ throw new RuntimeException("棧已經滿"); }else{ elementData[++top] = object; count++; } } /** * 出棧操作,並返回被出棧的元素 * @return */ public E pop(){ if(isEmpty()){ throw new RuntimeException("棧是空的"); }else{ count--; return elementData[top--]; } } /** * 返回棧頂元素 * @return */ public E peek(){ if(isEmpty()){ throw new RuntimeException("棧是空的"); }else{ return elementData[top]; } } }
編寫測試類:
package com.zhb.corejava.util; public class ClientTest { public static void main(String[] args) { Stack<User> stack = new Stack<User>(); User user1 = new User("張三", 1); User user2 = new User("李四", 2); User user3 = new User("王五", 2); stack.push(user1); stack.push(user2); stack.push(user3); System.out.println("stack.size====" + stack.getSize()); User user = stack.pop(); System.out.println("user.name==1==" + user.getName()); System.out.println("-------------------------------------------"); user = stack.pop(); System.out.println("user.name==2==" + user.getName()); System.out.println("-------------------------------------------"); user = stack.pop(); System.out.println("user.name==3==" + user.getName()); System.out.println("stack.size====" + stack.getSize()); System.out.println("-------------------------------------------"); stack.push(user1); System.out.println("stack.size====" + stack.getSize()); System.out.println("stack.isEmpty==="+stack.isEmpty()); System.out.println("stack.isFull==="+stack.isFull()); } }
Callable接口與future類相結合可以實現future模式,Future模式在請求發生時,會產生一個Future對象給請求方,Future對象作用類似於代理,所代理的真實任務在另一個線程中繼續進行,真實任務完成之後把結果放在fut
緩存線程池與固定線程池的區別在於對於需要執行很多短期異步任務的程序來說,緩存線程池可以提高程序性能,因爲長時間保持空閒的這種類型的線程池不會佔用任何資源,調用緩存線程池對象將重用以前構造的線程(線程可用狀態),若線程沒有可用的,則創建一個
一。獲取接口請求的數據可以在Interceptor的afterCompletion中實現但是要重寫RequestWrapper,代碼記錄如下: HttpServletRequestFilter import javax.servlet.
如果題所示。遇到這樣的問題,可能出現的問題有兩個 1、BEAN對象沒有放在API包(公共包) 2、轉換的對象是否實現了Serializable,並且對象中 private static final long serialVersionU
1、添加註解類 package com.shby.core.common; import com.shby.core.enums.DatabaseCalculateEnum; import java.lang.annotation.
主流程如下: 1、建支付寶賬號 2、申請權限功能(APP支付、開發權限等) 3、用阿里給的工具生成密鑰和證書,並且上傳到阿里,然後他會生成三個文件(支付寶公鑰、ROOTCERT、公鑰證書) 4、最後就是代碼(這裏也用阿里封裝好的代碼,加
在做接口併發測試的時候,才發現Jmeter中的Parameters和Body Data兩種參數格式並不是簡單的一個是xx=xx,另外一個是json格式的參數 先看一個接口 [post] /api/xx/xxxx/xxxx 通知服務端文件上
下面是存儲過程的例子,刪除給定球員參加的所有比賽: mysql> delimiter $$ #將語句的結束符號從分號;臨時改爲兩個$$(可以是自定義) mysql> CREATE PROCEDURE delete_matches(IN
json串 []表示對象組成的數組,{}表示對象。 對象裏包含多個 "屬性":屬性值。屬性值可以是值,或數組,或對象。 JSON Extractor使用json path表達式匹配,可以一次取多個變量值。$表示響應的根對象。取子對象或
https://www.cnblogs.com/xiaoyu2018/tag/JMeter/
最近因爲項目原因客戶購買了一臺sun880服務器,打算將數據庫和web同時放在這臺服務器上,經過一段時間的使用,發現了不少問題,其中有一個問題就讓人很費解 將tomcat啓動後,日誌等一切顯示正常,但是在客戶端就是無法訪問,
import org.codehaus.jackson.map.ObjectMapper; List<Map<String,Object>> listData=new ArrayList<Map<String,Object>>(); M
1. 開通開發者帳號 開通開發者帳號,需要提前準備好以下材料: 1. 公司營業執照 2. 300元 3. 公司對公帳號 具體開通流程可以自行到【微信公衆號】官網查看操作。 2.配置網頁授權 成功開發者帳號後,登錄公衆號後臺,點
常用排序:冒泡排序與快速排序詳解。 在排序算法中,冒泡排序和快速排序可以算是排序算法入門必會的兩種排序了,今天和大家來分析一下如何快速理解並掌握這兩種排序。首先冒泡排序是初學者最常用的排序,所以我們先來詳解下冒泡排序。 1.冒泡排序 冒泡
注:本文來自風馬博客 需求描述 在正常的項目開發需求中,連接遠程服務器的場景一般有二: 1 自家實現的http服務器,api接口都已經約定好; 2 開發平臺服務,通常如新浪、百度雲等平臺提供的restful