Java筆記11-【異常、線程】

主要內容

  • 異常、線程

第一章 異常

1.1 異常概念

異常,就是不正常的意思。在生活中:醫生說,你的身體某個部位有異常,該部位和正常相比有點不同,該部位的功能將受影響.在程序中的意思就是:

  • 異常 :指的是程序在執行過程中,出現的非正常的情況,最終會導致JVM的非正常停止。

在Java等面向對象的編程語言中,異常本身是一個類,產生異常就是創建異常對象并拋出了一個異常對象。Java處理異常的方式是中斷處理。

異常指的并不是語法錯誤,語法錯了,編譯不通過,不會產生字節碼文件,根本不能運行.

1.2 異常體系

異常機制其實是幫助我們找到程序中的問題,異常的根類是java.lang.Throwable,其下有兩個子類:java.lang.Errorjava.lang.Exception,平常所說的異常指java.lang.Exception

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CPrMROu2-1572792773578)(img\異常體系.png)]

Throwable體系:

  • Error:嚴重錯誤Error,無法通過處理的錯誤,只能事先避免,好比絕癥。
  • Exception:表示異常,異常產生后程序員可以通過代碼的方式糾正,使程序繼續運行,是必須要處理的。好比感冒、闌尾炎。

Throwable中的常用方法:

  • public void printStackTrace():打印異常的詳細信息。

    包含了異常的類型,異常的原因,還包括異常出現的位置,在開發和調試階段,都得使用printStackTrace。

  • public String getMessage():獲取發生異常的原因。

    提示給用戶的時候,就提示錯誤原因。

  • public String toString():獲取異常的類型和異常描述信息(不用)。

出現異常,不要緊張,把異常的簡單類名,拷貝到API中去查。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-sDtUBWin-1572792773579)(img\簡單的異常查看.bmp)]

1.3 異常分類

我們平常說的異常就是指Exception,因為這類異常一旦出現,我們就要對代碼進行更正,修復程序。

異常(Exception)的分類:根據在編譯時期還是運行時期去檢查異常?

  • 編譯時期異常:checked異常。在編譯時期,就會檢查,如果沒有處理異常,則編譯失敗。(如日期格式化異常)
  • 運行時期異常:runtime異常。在運行時期,檢查異常.在編譯時期,運行異常不會編譯器檢測(不報錯)。(如數學異常)

? [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CC6oMzHi-1572792773580)(img\異常的分類.png)]

1.4 異常的產生過程解析

先運行下面的程序,程序會產生一個數組索引越界異常ArrayIndexOfBoundsException。我們通過圖解來解析下異常產生的過程。

工具類

public class ArrayTools {// 對給定的數組通過給定的角標獲取元素。public static int getElement(int[] arr, int index) {int element = arr[index];return element;}
}

測試類

public class ExceptionDemo {public static void main(String[] args) {int[] arr = { 34, 12, 67 };intnum = ArrayTools.getElement(arr, 4)System.out.println("num=" + num);System.out.println("over");}
}

上述程序執行過程圖解:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-icyz4zMX-1572792773581)(img\異常產生過程.png)]

第二章 異常的處理

Java異常處理的五個關鍵字:try、catch、finally、throw、throws

2.1 拋出異常throw

在編寫程序時,我們必須要考慮程序出現問題的情況。比如,在定義方法時,方法需要接受參數。那么,當調用方法使用接受到的參數時,首先需要先對參數數據進行合法的判斷,數據若不合法,就應該告訴調用者,傳遞合法的數據進來。這時需要使用拋出異常的方式來告訴調用者。

在java中,提供了一個throw關鍵字,它用來拋出一個指定的異常對象。那么,拋出一個異常具體如何操作呢?

  1. 創建一個異常對象。封裝一些提示信息(信息可以自己編寫)。

  2. 需要將這個異常對象告知給調用者。怎么告知呢?怎么將這個異常對象傳遞到調用者處呢?通過關鍵字throw就可以完成。throw 異常對象。

    throw用在方法內,用來拋出一個異常對象,將這個異常對象傳遞到調用者處,并結束當前方法的執行。

使用格式:

throw new 異常類名(參數);

例如:

throw new NullPointerException("要訪問的arr數組不存在");throw new ArrayIndexOutOfBoundsException("該索引在數組中不存在,已超出范圍");

學習完拋出異常的格式后,我們通過下面程序演示下throw的使用。

public class ThrowDemo {public static void main(String[] args) {//創建一個數組 int[] arr = {2,4,52,2};//根據索引找對應的元素 int index = 4;int element = getElement(arr, index);System.out.println(element);System.out.println("over");}/** 根據 索引找到數組中對應的元素*/public static int getElement(int[] arr,int index){ //判斷  索引是否越界if(index<0 || index>arr.length-1){/*判斷條件如果滿足,當執行完throw拋出異常對象后,方法已經無法繼續運算。這時就會結束當前方法的執行,并將異常告知給調用者。這時就需要通過異常來解決。 */throw new ArrayIndexOutOfBoundsException("哥們,角標越界了~~~");}int element = arr[index];return element;}
}

注意:如果產生了問題,我們就會throw將問題描述類即異常進行拋出,也就是將問題返回給該方法的調用者。

那么對于調用者來說,該怎么處理呢?一種是進行捕獲處理,另一種就是繼續講問題聲明出去,使用throws聲明處理。

2.2 Objects非空判斷

還記得我們學習過一個類Objects嗎,曾經提到過它由一些靜態的實用方法組成,這些方法是null-save(空指針安全的)或null-tolerant(容忍空指針的),那么在它的源碼中,對對象為null的值進行了拋出異常操作。

  • public static <T> T requireNonNull(T obj):查看指定引用對象不是null。

查看源碼發現這里對為null的進行了拋出異常操作:

public static <T> T requireNonNull(T obj) {if (obj == null)throw new NullPointerException();return obj;
}

2.3 聲明異常throws

聲明異常:將問題標識出來,報告給調用者。如果方法內通過throw拋出了編譯時異常,而沒有捕獲處理(稍后講解該方式),那么必須通過throws進行聲明,讓調用者去處理。

關鍵字throws運用于方法聲明之上,用于表示當前方法不處理異常,而是提醒該方法的調用者來處理異常(拋出異常).

聲明異常格式:

修飾符 返回值類型 方法名(參數) throws 異常類名1,異常類名2…{   }  

聲明異常的代碼演示:

public class ThrowsDemo {public static void main(String[] args) throws FileNotFoundException {read("a.txt");}// 如果定義功能時有問題發生需要報告給調用者。可以通過在方法上使用throws關鍵字進行聲明public static void read(String path) throws FileNotFoundException {if (!path.equals("a.txt")) {//如果不是 a.txt這個文件 // 我假設  如果不是 a.txt 認為 該文件不存在 是一個錯誤 也就是異常  throwthrow new FileNotFoundException("文件不存在");}}
}

throws用于進行異常類的聲明,若該方法可能有多種異常情況產生,那么在throws后面可以寫多個異常類,用逗號隔開。

public class ThrowsDemo2 {public static void main(String[] args) throws IOException {read("a.txt");}public static void read(String path)throws FileNotFoundException, IOException {if (!path.equals("a.txt")) {//如果不是 a.txt這個文件 // 我假設  如果不是 a.txt 認為 該文件不存在 是一個錯誤 也就是異常  throwthrow new FileNotFoundException("文件不存在");}if (!path.equals("b.txt")) {throw new IOException();}}
}

2.4 捕獲異常try…catch

如果異常出現的話,會立刻終止程序,所以我們得處理異常:

  1. 該方法不處理,而是聲明拋出,由該方法的調用者來處理(throws)。
  2. 在方法中使用try-catch的語句塊來處理異常。

try-catch的方式就是捕獲異常。

  • 捕獲異常:Java中對異常有針對性的語句進行捕獲,可以對出現的異常進行指定方式的處理。

捕獲異常語法如下:

try{編寫可能會出現異常的代碼
}catch(異常類型  e){處理異常的代碼//記錄日志/打印異常信息/繼續拋出異常
}

**try:**該代碼塊中編寫可能產生異常的代碼。

**catch:**用來進行某種異常的捕獲,實現對捕獲到的異常進行處理。

注意:try和catch都不能單獨使用,必須連用。

演示如下:

public class TryCatchDemo {public static void main(String[] args) {try {// 當產生異常時,必須有處理方式。要么捕獲,要么聲明。read("b.txt");} catch (FileNotFoundException e) {// 括號中需要定義什么呢?//try中拋出的是什么異常,在括號中就定義什么異常類型System.out.println(e);}System.out.println("over");}/*** 我們 當前的這個方法中 有異常  有編譯期異常*/public static void read(String path) throws FileNotFoundException {if (!path.equals("a.txt")) {//如果不是 a.txt這個文件 // 我假設  如果不是 a.txt 認為 該文件不存在 是一個錯誤 也就是異常  throwthrow new FileNotFoundException("文件不存在");}}
}

如何獲取異常信息:

Throwable類中定義了一些查看方法:

  • public String getMessage():獲取異常的描述信息,原因(提示給用戶的時候,就提示錯誤原因。

  • public String toString():獲取異常的類型和異常描述信息(不用)。

  • public void printStackTrace():打印異常的跟蹤棧信息并輸出到控制臺。

? 包含了異常的類型,異常的原因,還包括異常出現的位置,在開發和調試階段,都得使用printStackTrace。

2.4 finally 代碼塊

finally:有一些特定的代碼無論異常是否發生,都需要執行。另外,因為異常會引發程序跳轉,導致有些語句執行不到。而finally就是解決這個問題的,在finally代碼塊中存放的代碼都是一定會被執行的。

什么時候的代碼必須最終執行?

當我們在try語句塊中打開了一些物理資源(磁盤文件/網絡連接/數據庫連接等),我們都得在使用完之后,最終關閉打開的資源。

finally的語法:

try…catch…finally:自身需要處理異常,最終還得關閉資源。

注意:finally不能單獨使用。

比如在我們之后學習的IO流中,當打開了一個關聯文件的資源,最后程序不管結果如何,都需要把這個資源關閉掉。

finally代碼參考如下:

public class TryCatchDemo4 {public static void main(String[] args) {try {read("a.txt");} catch (FileNotFoundException e) {//抓取到的是編譯期異常  拋出去的是運行期 throw new RuntimeException(e);} finally {System.out.println("不管程序怎樣,這里都將會被執行。");}System.out.println("over");}/*** 我們 當前的這個方法中 有異常  有編譯期異常*/public static void read(String path) throws FileNotFoundException {if (!path.equals("a.txt")) {//如果不是 a.txt這個文件 // 我假設  如果不是 a.txt 認為 該文件不存在 是一個錯誤 也就是異常  throwthrow new FileNotFoundException("文件不存在");}}
}

當只有在try或者catch中調用退出JVM的相關方法,此時finally才不會執行,否則finally永遠會執行。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-JmCpkI2V-1572792773581)(img\死了都要try.bmp)]

2.5 異常注意事項

  • 多個異常使用捕獲又該如何處理呢?

    1. 多個異常分別處理。
    2. 多個異常一次捕獲,多次處理。
    3. 多個異常一次捕獲一次處理。

    一般我們是使用一次捕獲多次處理方式,格式如下:

    try{編寫可能會出現異常的代碼
    }catch(異常類型A  e){try中出現A類型異常,就用該catch來捕獲.處理異常的代碼//記錄日志/打印異常信息/繼續拋出異常
    }catch(異常類型B  e){try中出現B類型異常,就用該catch來捕獲.處理異常的代碼//記錄日志/打印異常信息/繼續拋出異常
    }
    

    注意:這種異常處理方式,要求多個catch中的異常不能相同,并且若catch中的多個異常之間有子父類異常的關系,那么子類異常要求在上面的catch處理,父類異常在下面的catch處理。

  • 運行時異常被拋出可以不處理。即不捕獲也不聲明拋出。

  • 如果finally有return語句,永遠返回finally中的結果,避免該情況.

  • 如果父類拋出了多個異常,子類重寫父類方法時,拋出和父類相同的異常或者是父類異常的子類或者不拋出異常。

  • 父類方法沒有拋出異常,子類重寫父類該方法時也不可拋出異常。此時子類產生該異常,只能捕獲處理,不能聲明拋出

第三章 自定義異常

3.1 概述

為什么需要自定義異常類:

我們說了Java中不同的異常類,分別表示著某一種具體的異常情況,那么在開發中總是有些異常情況是SUN沒有定義好的,此時我們根據自己業務的異常情況來定義異常類。例如年齡負數問題,考試成績負數問題等等。

在上述代碼中,發現這些異常都是JDK內部定義好的,但是實際開發中也會出現很多異常,這些異常很可能在JDK中沒有定義過,例如年齡負數問題,考試成績負數問題.那么能不能自己定義異常呢?

什么是自定義異常類:

在開發中根據自己業務的異常情況來定義異常類.

自定義一個業務邏輯異常: RegisterException。一個注冊異常類。

異常類如何定義:

  1. 自定義一個編譯期異常: 自定義類 并繼承于java.lang.Exception
  2. 自定義一個運行時期的異常類:自定義類 并繼承于java.lang.RuntimeException

3.2 自定義異常的練習

要求:我們模擬注冊操作,如果用戶名已存在,則拋出異常并提示:親,該用戶名已經被注冊。

首先定義一個登陸異常類RegisterException:

// 業務邏輯異常
public class RegisterException extends Exception {/*** 空參構造*/public RegisterException() {}/**** @param message 表示異常提示*/public RegisterException(String message) {super(message);}
}

模擬登陸操作,使用數組模擬數據庫中存儲的數據,并提供當前注冊賬號是否存在方法用于判斷。

public class Demo {// 模擬數據庫中已存在賬號private static String[] names = {"bill","hill","jill"};public static void main(String[] args) {     //調用方法try{// 可能出現異常的代碼checkUsername("nill");System.out.println("注冊成功");//如果沒有異常就是注冊成功}catch(RegisterException e){//處理異常e.printStackTrace();}}//判斷當前注冊賬號是否存在//因為是編譯期異常,又想調用者去處理 所以聲明該異常public static boolean checkUsername(String uname) throws LoginException{for (String name : names) {if(name.equals(uname)){//如果名字在這里面 就拋出登陸異常throw new RegisterException("親"+name+"已經被注冊了!");}}return true;}
}

第四章 多線程

我們在之前,學習的程序在沒有跳轉語句的前提下,都是由上至下依次執行,那現在想要設計一個程序,邊打游戲邊聽歌,怎么設計?

要解決上述問題,咱們得使用多進程或者多線程來解決.

4.1 并發與并行

  • 并發:指兩個或多個事件在同一個時間段內發生。
  • 并行:指兩個或多個事件在同一時刻發生(同時發生)。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-74fAasWp-1572792773582)(img\并行與并發.bmp)]

在操作系統中,安裝了多個程序,并發指的是在一段時間內宏觀上有多個程序同時運行,這在單 CPU 系統中,每一時刻只能有一道程序執行,即微觀上這些程序是分時的交替運行,只不過是給人的感覺是同時運行,那是因為分時交替運行的時間是非常短的。

而在多個 CPU 系統中,則這些可以并發執行的程序便可以分配到多個處理器上(CPU),實現多任務并行執行,即利用每個處理器來處理一個可以并發執行的程序,這樣多個程序便可以同時執行。目前電腦市場上說的多核 CPU,便是多核處理器,核 越多,并行處理的程序越多,能大大的提高電腦運行的效率。

注意:單核處理器的計算機肯定是不能并行的處理多個任務的,只能是多個任務在單個CPU上并發運行。同理,線程也是一樣的,從宏觀角度上理解線程是并行運行的,但是從微觀角度上分析卻是串行運行的,即一個線程一個線程的去運行,當系統只有一個CPU時,線程會以某種順序執行多個線程,我們把這種情況稱之為線程調度。

4.2 線程與進程

  • 進程:是指一個內存中運行的應用程序,每個進程都有一個獨立的內存空間,一個應用程序可以同時運行多個進程;進程也是程序的一次執行過程,是系統運行程序的基本單位;系統運行一個程序即是一個進程從創建、運行到消亡的過程。

  • 線程:線程是進程中的一個執行單元,負責當前進程中程序的執行,一個進程中至少有一個線程。一個進程中是可以有多個線程的,這個應用程序也可以稱之為多線程程序。

    簡而言之:一個程序運行后至少有一個進程,一個進程中可以包含多個線程

我們可以再電腦底部任務欄,右鍵----->打開任務管理器,可以查看當前任務的進程:

進程

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cBnb80IL-1572792773583)(img\進程概念.png)]

線程

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6Vr3Fzqa-1572792773583)(img\線程概念.png)]

線程調度:

  • 分時調度

    所有線程輪流使用 CPU 的使用權,平均分配每個線程占用 CPU 的時間。

  • 搶占式調度

    優先讓優先級高的線程使用 CPU,如果線程的優先級相同,那么會隨機選擇一個(線程隨機性),Java使用的為搶占式調度。

    • 設置線程的優先級

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QLHsBm6J-1572792773584)(img/設置線程優先級.bmp)]

    • 搶占式調度詳解

    大部分操作系統都支持多進程并發運行,現在的操作系統幾乎都支持同時運行多個程序。比如:現在我們上課一邊使用編輯器,一邊使用錄屏軟件,同時還開著畫圖板,dos窗口等軟件。此時,這些程序是在同時運行,”感覺這些軟件好像在同一時刻運行著“。

    實際上,CPU(中央處理器)使用搶占式調度模式在多個線程間進行著高速的切換。對于CPU的一個核而言,某個時刻,只能執行一個線程,而 CPU的在多個線程間切換速度相對我們的感覺要快,看上去就是在同一時刻運行。
    其實,多線程程序并不能提高程序的運行速度,但能夠提高程序運行效率,讓CPU的使用率更高。

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-1utF0KG4-1572792773584)(img/搶占式調度.bmp)]

4.3 創建線程類

Java使用java.lang.Thread類代表線程,所有的線程對象都必須是Thread類或其子類的實例。每個線程的作用是完成一定的任務,實際上就是執行一段程序流即一段順序執行的代碼。Java使用線程執行體來代表這段程序流。Java中通過繼承Thread類來創建啟動多線程的步驟如下:

  1. 定義Thread類的子類,并重寫該類的run()方法,該run()方法的方法體就代表了線程需要完成的任務,因此把run()方法稱為線程執行體。
  2. 創建Thread子類的實例,即創建了線程對象
  3. 調用線程對象的start()方法來啟動該線程

代碼如下:

測試類:

public class Demo01 {public static void main(String[] args) {//創建自定義線程對象MyThread mt = new MyThread("新的線程!");//開啟新線程mt.start();//在主方法中執行for循環for (int i = 0; i < 10; i++) {System.out.println("main線程!"+i);}}
}

自定義線程類:

public class MyThread extends Thread {//定義指定線程名稱的構造方法public MyThread(String name) {//調用父類的String參數的構造方法,指定線程的名稱super(name);}/*** 重寫run方法,完成該線程執行的邏輯*/@Overridepublic void run() {for (int i = 0; i < 10; i++) {System.out.println(getName()+":正在執行!"+i);}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455463.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455463.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455463.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

摘抄自知乎的redis相關

1.知乎日報的基礎數據和統計信息是用 Redis 存儲的&#xff0c;這使得請求的平均響應時間能在 10ms 以下。其他數據仍然需要存放在另外的地方&#xff0c;其實完全用 Redis 也是可行的&#xff0c;主要的考量是內存占用。就使用經驗而言&#xff0c;Redis 的數據結構很豐富&…

Java微信開發_00_資源匯總貼

1.微信公眾平臺技術文檔&#xff08;https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432&#xff09; 2.微信企業號開發接口文檔&#xff08;http://qydev.weixin.qq.com/wiki/index.php?title%E4%B8%BB%E5%8A%A8%E8%B0%83%E7%94%A8&#xff09; 3.企業微…

webgl獲取鼠標形狀_三模無線搭配對稱手型設計,游戲致勝利器,ROG烈刃2無線鼠標...

要想有效地提升游戲體驗&#xff0c;我認為除了電腦主機本身的硬件配置要盡可能的硬核之外&#xff0c;玩游戲時所選配的鼠標、鍵盤等外設的作用也是不可忽視的&#xff0c;所以很多比較注重游戲體驗的游戲愛好者都會選擇一款自己用著比較順手的游戲外設裝備。我這次入手的華碩…

牛人學習h264運動估計的方法

轉載自&#xff1a;http://bbs.chinavideo.org/forumdisplay.php?fid29 Chinavideo&#xff0c;一個非常棒的學習論壇 從答辯結束(2008-12-13)起就想寫一篇文章給學習運動估計的朋友們&#xff0c;因為我知道有很多正在寫論文的朋友們&#xff0c;特別是正在入門的朋友們&…

Java筆記11-軟件開發流程設計原則

今天內容: 1.常用的設計原則2.常用的設計模式3.常用的查找算法4.常用的排序算法 1.常用的設計原則(記住) 1.1軟件的開發流程 軟件開發授權-投標 -> 100萬 1. 編寫需求分析文檔 > 2. 概要設計文檔(架構) > 3. 詳細設計文檔(類圖) > 4. 編碼(項目經理分具體任…

magnify.m —— 圖像局部放大鏡工具函數

magnify.m 函數下載地址&#xff1a;magnify - File Exchange - MATLAB Central&#xff1b; magnify.m 函數在執行時&#xff0c;是一種交互式處理。 簡單演示如下&#xff1a; clear, clc% 加載圖像到內存&#xff0c;如讀取matlab自帶的圖像&#xff0c;并將其顯示出來 I i…

【大數據系列】hadoop單節點安裝官方文檔翻譯

Hadoop: Setting up a Single Node Cluster. HADOOP&#xff1a;建立單節點集群 PurposePrerequisites Supported PlatformsRequired SoftwareInstalling SoftwareDownloadPrepare to Start the Hadoop ClusterStandalone OperationPseudo-Distributed Operation Configuration…

qmlcanvas繪制3d圖形_透視Matplotlib核心功能和工具包 - 繪制3D圖形

關聯知識MatplotlibPython線圖在此&#xff0c;我們將學習如何創建3D線圖。 它類似于2D等效折線圖&#xff0c;并且2D折線圖的許多屬性都結轉到3D。我們將在相同的軸上繪制凹凸曲線&#xff0c;并從不同角度查看它們&#xff0c;例如平行視圖&#xff0c;頂視圖以及圍繞z軸的旋…

264 解碼之 yuv

博客訪問量日漸減少&#xff0c;于是我決定丟一點技術東東上去&#xff0c;吸引爬蟲光顧一下。先談談 h.264 的編解碼問題。個人建議做視頻、音頻的孩子們&#xff0c;一定要抓住 RFC 和 standard &#xff0c;然后多看開源編解碼程序。近來抽空看了兩個 decoder &#xff0c;一…

Java筆記12-函數式接口

主要內容 自定義函數式接口函數式編程常用函數式接口 第一章 函數式接口 概念 函數式接口在java中指的是:有且只有一個抽象方法的接口 函數式接口,即適用于函數式編程場景的接口.而java中共的函數式編程體現就是Lambda,所以函數式接口就是可以適用于lambda使用的接口.只有…

雷軍曬3億估值,意欲“收編”臺灣硬件創業者?

1月13日&#xff0c;在臺灣的CSMIC 2015移動互聯網兩岸年會上&#xff0c;雷軍以獵豹移動董事長的身份做了《給年輕創業者的兩大方向性建議》演講。 演講中雷軍表示&#xff0c;“在未來5到10年&#xff0c;特別適合臺灣年輕創業者做的兩個方向&#xff0c;一個是移動互聯網&am…

網頁“console”輸出圖文信息

http://www.monmonkey.com/javascript/jiben2.html 參考以上鏈接中的轉義字符使用。 http://www.cnblogs.com/Wayou/p/chrome_dev_tool_style_console.html https://segmentfault.com/a/1190000002511877 以上鏈接里有各種 console 輸出 ASCII圖文的實現方法。 ASCII圖文動態效…

記事本安卓軟件代碼設計_用輕量級工具 Notepad3 替代 36 歲的微軟記事本

一不小心&#xff0c;微軟記事本發布 36 年了。雖然微軟記事本自 1985 年 Windows 1.0 以來已包含在所有版本的 Microsoft Windows 中&#xff0c;但它太基礎了&#xff0c;以至于幾乎所有人都要替代它&#xff0c;比如輕量級的 Notepad3&#xff0c;支持代碼高亮/折疊、括號匹…

H.264編碼技術

H.264基本概況隨著HDTV的興起&#xff0c;H.264這個規范頻頻出現在我們眼前&#xff0c;HD-DVD和藍光DVD均計劃采用這一標準進行節目制作。而且自2005年下半年以來&#xff0c;無論是NVIDIA還是ATI都把支持H.264硬件解碼加速作為自己最值得夸耀的視頻技術。H.264到底是何方“神…

Java筆記13-兄弟連在線考試系統

今天內容&#xff1a; 1.兄弟連在線考試系統 1.1 軟件開發的流程 需求分析文檔 > 概要設計文檔 > 詳細設計文檔 > 編碼和測試1.2 編寫目的 (1)復習JavaSE所學的所有內容。 (2)鍛煉基本的編程能力。 1.3 功能分析 考試系統&#xff1a;(1)學員系統a.修改密碼b.開始…

macOS自帶Python2.7刪除之后的悲劇

2019獨角獸企業重金招聘Python工程師標準>>> 起因 今天打開xcode想要開始繼續寫項目的時候悲劇了. Loading a plug-in failed. The plug-in or one of its prerequisite plug-ins may be missing or damaged and may need to be reinstalled. 嘗試用終端打開看看報…

EasyUI 表格點擊右鍵添加或刷新 綁定右鍵菜單

例1 在HTML頁面中設置一個隱藏的菜單&#xff08;前提是已經使用封裝的Easyui&#xff09; 代碼&#xff1a; <div id"contextMenu_jygl" class"easyui-menu" style"width: 80px; display: none;"> <div …

python神奇的小海龜_Python筆記_第一篇_面向過程_第一部分_8.畫圖工具(小海龜turtle)...

turtle 是一個簡單的繪圖工具。提供一個小海龜&#xff0c;可以把它理解為一個機器人&#xff0c;只能聽懂有限的命令&#xff0c;且繪圖窗口的原點(0,0)在中間&#xff0c;默認海龜的方向是右側海龜的命令包括三類&#xff1a;運動命令、筆畫控制命令、其他命令。1. 運動命令…

jupyter淺析

一、jupyter 起步:簡介 Jupyter Notebook是一個開源的Web應用程序&#xff0c;允許用戶創建和共享包含代碼、方程式、可視化和文本的文檔。它的用途包括&#xff1a;數據清理和轉換、數值模擬、統計建模、數據可視化、機器學習等等。它具有以下優勢&#xff1a; 可選擇語言&a…

我在全球最大的同性社交平臺那點事

本文作者&#xff1a;夏之冰雪&#xff0c;i春秋簽約作家 《我在百度網盤上看到上萬條車主個人信息,企業、政府高官信息、各種數據庫和無窮無盡的盜版》&#xff0c;一時間&#xff0c;這篇文章就火了&#xff0c;火爆程度另百度猝不及防。 其實呢&#xff0c;這事真不能全怪百…