Java程式碼常用功能實現總結
目錄
1.獲取當前系統時間:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式
System.out.println(df.format(new Date()));
執行結果:
2017-10-22 12:18:37
(1)時間戳(精確到秒為10位)轉換為日期格式:
df.format(new Date(Long.valueOf(1538209477+"000")))
(2)日期格式轉換為時間戳:
String.valueOf(df.parse("2018-09-29 16:27:42").getTime())
2.獲取當前時間戳:
-------------------------------------------
(1)方法 一
System.currentTimeMillis();
(2)方法 二
Calendar.getInstance().getTimeInMillis();
(3)方法 三
new Date().getTime();
補充:獲取時間戳三種方法執行效率比較
import java.util.Calendar; import java.util.Date; public class TimeTest { private static long _TEN_THOUSAND=10000; public static void main(String[] args) { long times=1000*_TEN_THOUSAND; long t1=System.currentTimeMillis(); testSystem(times); long t2=System.currentTimeMillis(); System.out.println(t2-t1); testCalander(times); long t3=System.currentTimeMillis(); System.out.println(t3-t2); testDate(times); long t4=System.currentTimeMillis(); System.out.println(t4-t3); } public static void testSystem(long times){ for(int i=0;i<times;i++){ long currentTime=System.currentTimeMillis(); } } public static void testCalander(long times){ for(int i=0;i<times;i++){ long currentTime=Calendar.getInstance().getTimeInMillis(); } } public static void testDate(long times){ for(int i=0;i<times;i++){ long currentTime=new Date().getTime(); } } } 執行結果: 43 1885 45 Calendar.getInstance().getTimeInMillis() 這種方式速度最慢,這是因為Canlendar要處理時區問題會耗費較多的時間。
Python:
import time
print (time.time())
print(int(round(time.time()*1000)))
print(int(time.time()))
執行結果:
1513776456.43
1513776456440
1513776456
疑惑:java上面的三種方法獲取的時間戳都是13位的,而python用自帶的time模組獲取的卻是1513776456.43,還得自己轉換成10位或13位的
解答:時間戳的位數是根據演算法計算的,沒有固定的位數。 可信時間戳計算出來的電子檔案的數字指紋是40位~
由於精度不同,導致長度不一致,直接轉換錯誤。 JAVA時間戳長度是13位,如:1294890876859 PHP時間戳長度是10位(不知道js預設是多少位,但是在工作中python傳給js的時間戳還必須是13位,10位的解析不出來), 如:1294890859 php echo date!
3.獲取主機名和IP
-------------------------------------------
InetAddress a=InetAddress.getLocalHost();
String localname=a.getHostName();
String localip=a.getHostAddress();
System.out.println("本機名稱是:" + localname);
System.out.println("本機的ip是 :" + localip);
System.out.println(InetAddress.getLocalHost());
執行結果:
本機名稱是:h66
本機的ip是 :192.168.205.66
h66/192.168.205.66
4.new String用法:
byte[] bytes = "hui".getBytes(); //String轉bytes
String receiveText = new String( bytes,1,2); //bytes轉String
System.out.println(receiveText);
執行結果:
ui
5.ByteBuffer和String的互相轉換:
String hui = "hehe";
ByteBuffer buffer = ByteBuffer.wrap(hui.getBytes());
Charset charset = Charset.forName("UTF-8");
CharsetDecoder decoder = charset.newDecoder();
CharBuffer charBuffer = decoder.decode(buffer.asReadOnlyBuffer());
System.out.println(buffer);
System.out.println(charBuffer.toString());
執行結果:
java.nio.HeapByteBuffer[pos=0 lim=4 cap=4]
hehe
6.int和string相互轉換:
-------------------------------------------
int -> String:
int i=12345;
String s="";
第一種方法:s=i+"";
第二種方法:s=String.valueOf(i);
String -> int或long:
s="12345";
int i;
第一種方法:i=Integer.parseInt(s);或Long.parseInt(s)
第二種方法:i=Integer.valueOf(s).intValue();或Long.valueOf(s).longValue()
這兩種方法有什麼區別呢?作用是不是一樣的呢?是不是在任何下都能互換呢?答:
第一種方法:s=i+""; //會產生兩個String物件
第二種方法:s=String.valueOf(i); //直接使用String類的靜態方法,只產生一個物件
第一種方法:i=Integer.parseInt(s);//直接使用靜態方法,不會產生多餘的物件,但會丟擲異常
第二種方法:i=Integer.valueOf(s).intValue();//Integer.valueOf(s) 相當於 new Integer(Integer.parseInt(s)),也會拋異常,但會多產生一個物件
7.把多個json放到list中:
List<String> keysList1 = new ArrayList<>();
JSONObject json1 = new JSONObject();
json1.put("littleTitle", "你愛誰");
json1.put("text", "小強簽名設計");
keysList1.add(json1.toString());
JSONObject json2 = new JSONObject();
json2.put("littleTitle", "我愛誰");
json2.put("text", "你猜");
keysList1.add(json2.toString());
System.out.println("keysList11-->"+keysList1);
執行結果:
keysList11-->[{"littleTitle":"你愛誰","text":"小強簽名設計"}, {"littleTitle":"我愛誰","text":"你猜"}]
8.List集合去除重複資料:
import java.util.*;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class printt {
public static void main(String[] args) {
List<String> strs = new ArrayList<String>();
String str2 = "world";
String str1 = "hello";
String str3 = "world";
strs.add(str1);// 通過add方法
strs.add(str2);
strs.add(str3);
System.out.println(removeDuplicate(strs));
System.out.println(removeDuplicate1(strs));
System.out.println(removeDuplicate3(strs));
removeDuplicate4(strs);
// 可用於效率測試
final List<String> list = new ArrayList<String>();
for (int i = 0; i < 1000; i++) {
list.add("haha-" + i);
}
long time = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
removeDuplicate2(list);
}
long time1 = System.currentTimeMillis();
System.out.println("time1:" + (time1 - time));
}
public static List removeDuplicate(List list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
return list;
}
// 利用HashSet不能新增重複資料的特性
public static List removeDuplicate1(List<String> list) {
// 如果對list新增順序無要求則可直接用
// HashSet set = new HashSet(list);
// list.clear();
// list.addAll(set);
// 如果對list新增順序有要求的話,由於HashSet不能保證新增順序,所以只能作為判斷條件
HashSet<String> set = new HashSet<String>();
List<String> result = new ArrayList<String>();
for (String str : list) {
if (set.add(str)) {
result.add(str);
}
}
list.clear();
list.addAll(result);
return list;
}
// 利用LinkedHashSet不能新增重複資料並能保證新增順序的特性
private static void removeDuplicate2(List<String> list) {
LinkedHashSet<String> set = new LinkedHashSet<String>(list);
/*
* 或者: LinkedHashSet<String> set = new LinkedHashSet<String>();
* set.addAll(list);
*/
list.clear();
list.addAll(set);
// System.out.println(list);
}
// 利用List的contains方法迴圈遍歷
public static List removeDuplicate3(List list) {
List listTemp = new ArrayList();
for (int i = 0; i < list.size(); i++) {
if (!listTemp.contains(list.get(i))) {
listTemp.add(list.get(i));
}
}
return listTemp;
}
// 刪除ArrayList中重複元素,保持順序
public static void removeDuplicate4(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println(list);
}
}
執行結果:
[hello, world]
[hello, world]
[hello, world]
[hello, world]
time1:1396
參考:
9.判斷陣列中是否包含某個元素
參考:
在java中,我們如何判斷一個未排序陣列中是否包含一個特定的值?這在java中是一個頻繁非常實用的操作。那麼什麼樣的方法才是最高效的方式?
使用List:
public static boolean useList(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);}
使用Set:
public static boolean useSet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);}
使用迴圈判斷:
public static boolean useLoop(String[] arr, String targetValue) {
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;}
使用Arrays.binarySearch():
優點:使用二分查詢法,效率快捷。
缺點:查詢的陣列必須是有序的,如果不是有序的話,使用此方法是沒有用的。
public static boolean useArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if(a >= 0)
return true;
else
return false;}
時間複雜度
下面的程式碼可以大概的得出各種方法的時間成本。基本思想就是從陣列中查詢某個值,陣列的大小分別是5、1k、10k。這種方法得到的結果可能並不精確,但是是最簡單清晰的方式。
使用一個長度為5的資料:
public static void main(String[] args) {
String[] arr = new String[] { "CD", "BC", "EF", "DE", "AB"};
//use list
long startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useList(arr, "A");
}
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("useList: " + duration / 1000000);
//use set
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useSet(arr, "A");
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("useSet: " + duration / 1000000);
//use loop
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useLoop(arr, "A");
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("useLoop: " + duration / 1000000);
// String[] array = {"AB","EF","GH"};
// System.out.println(Arrays.binarySearch(array,"EF"));
//use Arrays.binarySearch()
startTime = System.nanoTime();
for (int i = 0; i < 100000; i++) {
useArraysBinarySearch(arr, "A");
}
endTime = System.nanoTime();
duration = endTime - startTime;
System.out.println("useArrayBinary: " + duration / 1000000);}
執行結果:
useList: 13
useSet: 72
useLoop: 5
useArraysBinarySearch: 9
使用一個長度為1k的陣列
String[] arr = new String[1000];
Random s = new Random();for(int i=0; i< 1000; i++){
arr[i] = String.valueOf(s.nextInt());}
結果:
useList: 112
useSet: 2055
useLoop: 99
useArrayBinary: 12
使用一個長度為10k的陣列
String[] arr = new String[10000];
Random s = new Random();for(int i=0; i< 10000; i++){
arr[i] = String.valueOf(s.nextInt());}
結果:
useList: 1590
useSet: 23819
useLoop: 1526
useArrayBinary: 12
除了以上幾種以外,Apache Commons類庫中還提供了一個ArrayUtils類,可以使用其contains方法判斷陣列和值的關係。
import org.apache.commons.lang3.ArrayUtils;
public static boolean useArrayUtils(String[] arr, String targetValue) {
return ArrayUtils.contains(arr,targetValue);}
同樣使用以上幾種長度的陣列進行測試,得出的結果是該方法的效率介於使用集合和使用迴圈判斷之間(有的時候結果甚至比使用迴圈要理想)。
useList: 323
useSet: 3028
useLoop: 141
useArrayBinary: 12
useArrayUtils: 181
-------
useList: 3703
useSet: 35183
useLoop: 3218
useArrayBinary: 14
useArrayUtils: 3125
其實,如果檢視ArrayUtils.contains的原始碼可以發現,他判斷一個元素是否包含在陣列中其實也是使用迴圈判斷的方式。
部分程式碼如下:
if(array == null) {
return -1;
} else {
if(startIndex < 0) {
startIndex = 0;
}
int i;
if(objectToFind == null) {
for(i = startIndex; i < array.length; ++i) {
if(array[i] == null) {
return i;
}
}
} else if(array.getClass().getComponentType().isInstance(objectToFind)) {
for(i = startIndex; i < array.length; ++i) {
if(objectToFind.equals(array[i])) {
return i;
}
}
}
return -1;
}
所以,相比較之下,我更傾向於使用ArrayUtils工具類來進行一些合數祖相關的操作。畢竟他可以讓我少寫很多程式碼(因為自己寫程式碼難免有Bug,畢竟apache提供的開源工具類庫都是經過無數開發者考驗過的),而且,效率上也並不低太多。
10.遍歷Map的四種方法
(來自http://www.cnblogs.com/kristain/articles/2033566.html)
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
//第一種:普遍使用,二次取值
System.out.println("通過Map.keySet遍歷key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二種
System.out.println("通過Map.entrySet使用iterator遍歷key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第三種:推薦,尤其是容量大時
System.out.println("通過Map.entrySet遍歷key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
//第四種
System.out.println("通過Map.values()遍歷所有的value,但不能遍歷key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
參考:http://blog.csdn.net/luanlouis/article/details/43017071
11.除去字串(String)中的換行字元(\r \n \t):
-------------------------------------------
String hui = "'ab cd" + "\n" + "efg'";
System.out.println("轉換前:"+hui);
hui = hui.replaceAll("\r|\n", "");
System.out.println("轉換後:"+hui);
執行結果:
轉換前:'ab cd
efg'
轉換後:'ab cdefg'
補充:
例2:
System.out.println("\\r 輸出:"+"abc"+"\r"+"abc");
System.out.println("\\n 輸出:"+"abc"+"\n"+"abc");
以上兩句在控制檯輸出的格式是一樣的:
\r輸出:abc
abc
\r輸出:abc
abc
那麼他們有什麼區別呢?
例3:
String hui = "'ab cd" + "\n\r" + "efg'";
System.out.println("轉換前:"+hui);
hui = hui.replaceAll("\r|\n", "");
System.out.println("轉換後:"+hui);
執行結果:
轉換前:'ab cd
efg'
轉換後:'ab cdefg'
可以看出\r表示回車,\n表示另起一行(\r 叫回車 Carriage Return ;\n 叫新行 New Line)
我們可以再做一個實驗:
String hui = "'ab cd" + "\r\n" + "efg'";
System.out.println("轉換前:"+hui);
hui = hui.replaceAll("\r|\n", "");
System.out.println("轉換後:"+hui);
執行結果:
轉換前:'ab cd
efg'
轉換後:'ab cdefg'
注:
trim()用來去首尾的空格符
\n 換行(\u000a)
\t 水平製表符(\u0009)
\s 空格(\u0008)
\r 回車(\u000d)
12.System.getProperty("屬性名")方法的使用:
(參考自:http://blog.csdn.net/wodewutai17quiet/article/details/68946890)
System.out.println("作業系統的名稱:"+System.getProperty("os.name")); //Windows 8
System.out.println("作業系統的架構:"+System.getProperty("os.arch")); //amd64
System.out.println("作業系統的版本:"+System.getProperty("os.version")); //6.2
System.out.println("Java 執行時環境版本:"+System.getProperty("java.version")); //1.7.0_25
System.out.println("Java 執行時環境供應商:"+System.getProperty("java.vendor")); //Oracle Corporation
System.out.println("Java 供應商的 URL:"+System.getProperty("java.vendor.url")); //http://java.oracle.com/
System.out.println("Java 安裝目錄:"+System.getProperty("java.home")); //C:\Program Files\Java\jdk1.7.0_25\jre
System.out.println("Java 虛擬機器規範版本:"+System.getProperty("java.vm.specification.version")); //1.7
System.out.println("Java 虛擬機器規範供應商:"+System.getProperty("java.vm.specification.vendor")); //Oracle Corporation
System.out.println("Java 虛擬機器規範名稱:"+System.getProperty("java.vm.specification.name")); //Java Virtual Machine Specification
System.out.println("Java 虛擬機器實現版本:"+System.getProperty("java.vm.version")); //23.25-b01
System.out.println("Java 虛擬機器實現供應商:"+System.getProperty("java.vm.vendor")); //Oracle Corporation
System.out.println("Java 虛擬機器實現名稱:"+System.getProperty("java.vm.name")); //Java HotSpot(TM) 64-Bit Server VM
System.out.println("Java 執行時環境規範版本:"+System.getProperty("java.specification.version")); //1.7
System.out.println("Java 執行時環境規範供應商:"+System.getProperty("java.specification.vendor")); //Oracle Corporation
System.out.println("Java 執行時環境規範名稱:"+System.getProperty("java.specification.name")); //Java Platform API Specification
System.out.println("Java 類格式版本號:"+System.getProperty("java.class.version")); //51.0
System.out.println("Java 類路徑:"+System.getProperty("java.class.path"));
System.out.println("載入庫時搜尋的路徑列表:"+System.getProperty("java.library.path"));
System.out.println("預設的臨時檔案路徑:"+System.getProperty("java.io.tmpdir"));
System.out.println("要使用的 JIT 編譯器的名稱:"+System.getProperty("java.compiler"));
System.out.println("一個或多個擴充套件目錄的路徑:"+System.getProperty("java.ext.dirs"));
System.out.println("檔案分隔符(在 UNIX 系統中是“/”):"+System.getProperty("file.separator"));
System.out.println("路徑分隔符(在 UNIX 系統中是“:”):"+System.getProperty("path.separator"));
System.out.println("行分隔符(在 UNIX 系統中是“/n”):"+System.getProperty("line.separator"));
System.out.println("使用者的賬戶名稱:"+System.getProperty("user.name"));
System.out.println("使用者的主目錄:"+System.getProperty("user.home"));
System.out.println("使用者的當前工作目錄:"+System.getProperty("user.dir"));
13.獲取昨天,上個星期一,本月開始時間:
//昨天
Date date=new Date();//取時間
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.DATE,-1);//把日期往後增加一天.整數往後推,負數往前移動
date=calendar.getTime(); //這個時間就是日期往後推一天的結果
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String dateString = formatter.format(date);
System.out.println(dateString);
//上個星期一
// Calendar cal = Calendar.getInstance();
// int n = cal.get(Calendar.DAY_OF_WEEK) - 1;
// if (n == 0) {
// n = 7;
// }
// cal.add(Calendar.DATE, -(7 + (n - 1)));// 上週一的日期
// Date monday = cal.getTime();
// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
// String dateString = formatter.format(monday);
// System.out.println(dateString);
//本月第一天
// Calendar cal_1=Calendar.getInstance();//獲取當前日期
// cal_1.add(Calendar.MONTH, -1);
// cal_1.set(Calendar.DAY_OF_MONTH,1);//設定為1號,當前日期既為本月第一天
// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
// String firstDay = formatter.format(cal_1.getTime());
// System.out.println(firstDay);
參考:https://zhidao.baidu.com/question/523653874220755605.html
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date nowDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(nowDate);
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1);
Date updateDate5 = calendar.getTime();
System.out.println(updateDate5.getTime() + "往前推1天的時間=" + sdf.format(updateDate5));
System.out.println(updateDate5.getTime() / 1000 + "往前推1天的時間=" + sdf.format(updateDate5));
Long time = 1537845150178L;
System.out.println(System.currentTimeMillis() - time < 1 * 24 * 3600 * 1000L);
// 往前推一個月
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
Date updateDate2 = calendar.getTime();
System.out.println("往前推1個月的時間" + sdf.format(updateDate2));
// 往後推13個月
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) + 13);
Date updateDate3 = calendar.getTime();
System.out.println("往後推13個月的時間=" + sdf.format(updateDate3));
// 往後推一天
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) + 1);
Date updateDate4 = calendar.getTime();
System.out.println("往後推1天的時間=" + sdf.format(updateDate4));
執行結果:
1537845735819往前推1天的時間=2018-09-25 11:22:15
1537845735往前推1天的時間=2018-09-25 11:22:15
false
往前推1個月的時間2018-08-25 11:22:15
往後推13個月的時間=2019-09-25 11:22:15
往後推1天的時間=2019-09-26 11:22:15
(1)昨天八點到現在:
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,8);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
calendar.add(Calendar.DAY_OF_YEAR,-1);
Date date = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startTime = sdf.format(date);
System.out.println("startTime-->"+startTime);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String endTime = sdf1.format(new Date());
System.out.println("endTime-->"+endTime);
}
執行結果:
startTime-->2018-10-09 08:00:00
endTime-->2018-10-10 14:28:04
14.概率實現:
(可參考https://www.cnblogs.com/zz-3m23d-begining/p/7767214.html)
public static void main(String[] args) {
double d = Math.random();//生成一個0~1的隨機數
if(d<=0.5){
System.out.println("A");//50%概率
}else if(d<=0.8){
System.out.println("B");//30%概率
}else{
System.out.println("C");//20%概率
}
}
15.正則匹配:
public static void main(String[] args) {
String line = "6414636447";
String pattern = "^\\d+$";
Pattern p = Pattern.compile(pattern);
Matcher matcher = p.matcher(line);
if (matcher.matches()) {
System.out.println(true);
}
}
相關推薦
Java程式碼常用功能實現總結(二)
文章目錄 1.如何取得map裡key得最大值: 2.多執行緒寫法樣例: 1.如何取得map裡key得最大值: 方法一: 將Map中的k
Java程式碼常用功能實現總結
目錄 1.獲取當前系統時間: SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設定日期格式 System.out.prin
java calendar 常用功能總結(SimpleDateFormat 格式化取值)
importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; importjava.util.TimeZone; publicclassTest
Java集合排序功能實現分析
需要 基本 eas elong rst length 查看 fin after Java如何實現集合的排序? - 本文以對Student對象集合為例進行排序Java通過Collections.sort(List<Student> stuList)和Collect
Java封裝常用功能
內容: 1.介紹 2.封裝輸入輸出 3.封裝其他功能 1.介紹 Java中的API實在是太長了,讓人敲得很煩,於是我準備把一些常用的功能封裝一下,在Java自有的API上打造一個屬於自己用的比較舒服上手的API,比如說Java中的輸出是System.o
Java中常用的API總結
Java API是JDK所提供的使用類,這些類將底層的程式碼給封裝起來了。Object類是java語言中的根類,它所描述的所有方法子類都可以使用,所有類在建立物件的時候,最終找的父類就是Object。在Objec類中,最常見的就是euqals方法和toString方法。equals方法用於比較兩個物
ionic學習(七):問答社群03:登入功能實現 總結篇
登入功能整整搞了一天,期間各種錯誤不斷,剛接觸ionic,對Angular也不太熟悉,沒正規的學過html,css,js等前端知識。 整理一下流程: 1.製作登入頁面 2.構造登入等待遮罩層和登入錯誤遮罩層 3.通過storge儲存登入的資訊 4.通過判斷是否登入,並顯示相應頁面 備
短連結的java版完整功能實現及ngx_lua版本的簡單實現
短連結 ngx_lua版本 https://github.com/feiyangtianyao/short_url 對lua不熟,只實現了最基本的功能。 java版本 https://gitee.com/xiaoyaofeiyang/short_url 執行sql語句
三維裝箱問題Java程式碼的簡單實現過程(程式碼)
兩年前發了篇關於三維裝箱的日記,許諾過要分享程式碼的,結果一直沒發,後來居然忘記了。一直有人加我QQ來的,這幾年都用微信了,直到最近才發現這個問題, 千萬不要輕易許諾別人什麼,否則事後真的很難兌現,兩年前的欠下的程式碼,今天,還了罷。為了我寫了好久的,腦力不夠了,空
sql常用功能實現
2018年11月03日 09:49:28 蘇泊賽亞人 閱讀數:3 個人分類: 資料庫
File類常用功能實現
1.遞迴 獲取資料夾的大小 在java IO流中 只能直接獲取資料夾的大小 對於資料夾的話 程式碼如下 import java.io.File; import java.util.Scanner; public class Main{ public stat
Java程式碼之JDBC實現資料庫之間定時的表格傳輸(由一個庫讀取到另一個庫)例項,親測有效
package com.openup.system.service.imp;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import ja
java面試常用問題的總結
1:JDK,JRE,JVM分別是什麼?它們之間有什麼關係? jdk是Java開發環境,jre是Java執行環境,jvm是Java虛擬機器,jre包含jvm。 2:什麼是環境變數?使用者變數與系統變數有什麼區別? 環境變數相當給系統和使用者程式設定引數的
JAVA開發常用英語單詞總結四
platform [ˈplætfɔ:m]n.平臺; 臺; 站臺; 綱領;v.把…放在臺上; 為…設(平)臺; in which case 在這種情況下; 那樣的話; immutable [ɪˈmju:təbl] adj不可改變的 behalf[bɪˈhɑ:f] n.利益; 維護; 支援; facilities
【java】Java驗證碼功能實現
一、前言 驗證碼可以說在我們生活中已經非常普遍了,任何一個網站,任何一個App都會有這個功能,但是為啥要有這個呢?如何做才能做出來呢?下面小編會帶領大家一起用java完成一個驗證碼的功能。 二、驗證碼的作用 一般可以防止有人利用機器
java 線上支付功能實現一
實現的兩種方法 1 直接與銀行對接: 交易比較安全,適合資金流量比較大的企業,這種方案適合於,每月結算金額百萬以上的. 但開發工作量比較大,而且銀行會不定期升級交易系統,每個銀行的介面都不同,交納的費用也不低. 2 通過中間公司 間接與銀行對接:
java程式碼在頁面實現展示pdf檔案
public void findPdf() throws IOException{HttpServletResponse response = ServletActionContext.getResponse();response.setContentType("appli
Qt日誌功能實現總結
1、資訊基本分類:qDebug : 除錯資訊提示qWarning : 一般的警告提示qCritical: 嚴重錯誤提示qFatal : 致命錯誤提示2、如何截獲這些資訊Qt提供了qInstallMsgHandler 方法用來定製訊息發生後如何來處理。qInstallMsgHa
第一講,整數劃分 JAVA 程式碼(分治實現之一)
整數劃分問題相信很多人都做過,題意是這樣的: 將正整數n表示成一系列正整數之和, n=n1+n2+,,,,,+nk(其中n1>=n2>=......>=nk>=1,k>1) 例如:正整數6有如下11種不同的劃分, 6=1+1+1+1+
RecyclerView常用功能全面總結
簡介 RecyclerView可以說是做Android應用開發使用最廣的幾個控制元件之一。它是在Android 5.0版本引入進來的,位於support-v7包中,可以通過在build.gradle中新增如下程式碼將它引入到專案中: implem