Time of Update: 2018-07-27
前言 最近發現有時候看完一本書,時間久了容易忘記,看書不總結思考效果大打折扣,故打算寫這一系列文章,一是為了整理書中的要點,協助自己消化理解;二是勉勵自己多看書思考。文章中不會把書中內容講解的非常詳細,只是總結概括,適合已經閱讀過該書的讀者。 第2章:Java記憶體地區與記憶體溢出異常 (1)JVM運行時資料區 程式計數器 當前線程所執行的位元組碼的行號指標 Java虛擬機器棧
Time of Update: 2018-07-27
字串轉換為整數 : atoi 可能的輸入: 1 帶符號數 2 無符號數 3 零 4 null 指標 5 超出表示範圍 – 暫時僅僅是直接退出且設定最小 – 可以考慮此時拋個異常 6 非法輸入,比如並不是一個0-9或者+ -組成的字串 – 對於非法輸入一律返回的是Integer.MIN_VALUE public class _Q49<T> { public long StrToInt(String str){ if(str ==
Time of Update: 2018-07-27
想瞭解下Java線程池的用法,恰好最近要做一個簡易的郵件通知中間功能,所以寫下這個筆記。見笑。 servlet代碼SendEmailServlet.java: package servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingDeque;
Time of Update: 2018-07-27
package com.qingyuan.huake;/** * reference: <[http://my.oschina.net/BreathL/blog/41063]> * 對樣本進行統計, 計算樣本的方差&標準差 * Sn = Sn-1 + (xn - Mn-1)*(xn - Mn) * Mn = Mn-1+ (xn - Mn-1)/n */public final class StandardDeviation{ /** 樣本的個數*/
Time of Update: 2018-07-27
JAVA多線程實現方式 JAVA多線程實現方式主要有三種:繼承Thread類、實現Runnable介面、使用ExecutorService、Callable、Future實現有返回結果的多線程。其中前兩種方式線程執行完後都沒有傳回值,只有最後一種是帶傳回值的。
Time of Update: 2018-07-27
寫在前面 只是學棧的描述之類的似乎很無聊,所以我特意找了幾個比較有意思的例子,一則加深對棧的理解和運用,二則,也可以開拓一下思路,此為例三 例三、算術運算式求值 1、問題描述 當一個算術運算式中含有多個運算子,且運算子的優先順序不同的情況下,如何才能處理一個算術運算式。。。。。
Time of Update: 2018-07-27
Java記憶體地區與記憶體溢出異常 1. 概述(為什麼要去瞭解虛擬機器是怎樣使用記憶體的。) 2. 運行時資料區域(虛擬機器中的記憶體是如何劃分的。) 3. HotSpot 虛擬機器對象探秘 (HotSpot 虛擬機器在 Java 堆中對象是如何建立、如何布局以及如何訪問的。) 4. 實戰:OutOfMemoryError 異常(哪部分地區、什麼樣的代碼和操作可能導致記憶體溢出異常。) 3、HotSpot 虛擬機器在 Java 堆中對象是如何建立、如何布局以及如何訪問的。
Time of Update: 2018-07-27
方法一: 第一:發現原來是他的設定檔不是放在WEB-INF下,而是放在src目錄下,解決的方法可將其spring的設定檔applicationContext轉移陣地,轉到WEB-INF下,或在web.xml下加入如下語句: <!-- Spring ApplicationContext設定檔的路徑,可使用萬用字元,多個路徑用,號分隔此參數用於後面的Spring-Context loader --> <context-param> <
Time of Update: 2018-07-27
package com.util.push;import cn.jpush.api.common.resp.APIConnectionException;import cn.jpush.api.common.resp.APIRequestException;import cn.jpush.api.push.model.PushPayload.Builder;import cn.jpush.api.JPushClient;import
Time of Update: 2018-07-27
Java代碼產生pdf回執檔案,直接上代碼: package com.pdf;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import
Time of Update: 2018-07-27
例如下面的二維數組就是每行、每列都是遞增排序。如果在這個數組中尋找數字7,則返回true,如果尋找數組5,由於數組中不含有該數字,則返回false。 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15
Time of Update: 2018-07-27
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST. According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that
Time of Update: 2018-07-27
前言 在前一篇文章中我們學習了Java虛擬機器的結構原理與運行時資料區域,那麼我們大概知道了Java虛擬機器的記憶體的概況,那麼記憶體中的資料是如何建立和訪問的呢。這篇文章會給你答案。 1.對象的建立 對象的建立通常是通過new一個對象而已,當虛擬機器接收到一個new指令時,它會做如下的操作。(1)判斷對象對應的類是否載入、連結、初始化
Time of Update: 2018-07-27
讀讀之間不互斥,但讀寫之間,寫寫之間互斥。提高了效率保證了安全。 import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class MyQueue {// 共用資料。該資料只能被一個線程寫,可以被多個線程同時讀private Object data;// 讀讀之間不互斥,但讀寫之間,寫寫之間互斥ReadWriteLock
Time of Update: 2018-07-27
一:char的初始化 char是Java中的保留字,與別的語言不同的是,char在Java中是16位的,因為Java用的是Unicode。不過8位的ASCII碼包含在Unicode中,是從0~127的。 Java中使用Unicode的原因是,Java的Applet允許全世界範圍內運行,那它就需要一種可以表述人類所有語言的字元編碼。Unicode。但是English,Spanish,German,
Time of Update: 2018-07-27
對於classpath作用的解釋在《Thinking in Java》中有如下解釋: Java 解譯器的工作程式如下: 首先,它找到環境變數CLASSPATH(將Java 或者具有Java 解釋能力的工具——如瀏覽器——安裝到機器中時,通過作業系統進行設定)。CLASSPATH 包含了一個或多個目錄,它們作為一種特殊的“根”使用,從這裡展開對.class 檔案的搜尋。從那個根開始,解譯器會尋找包名,並將每個點號(句點)替換成一個斜杠,從而產生從CLASSPATH
Time of Update: 2018-07-27
【題目描述】請實現兩個函數,分別用來序列化和還原序列化二叉樹 【解題思路1】 //1. 利用前序走訪序列化二叉樹,然後從屬記錄的字串中還原序列化二叉樹。 //2. 遇到空節點需要用特殊字元加以標記。如“#” public class Solution { public int index = -1; String Serialize(TreeNode root) { StringBuilder s = new StringBuilder();
Time of Update: 2018-07-27
把一個字串轉換成int類型,比如“123” --> 123 這道題目主要考查邊界情況及非法輸入的處理,c++跟Java處理起來不一樣,Java是不存在整數比Integer.MAX_VALUE還大的數,Java會將溢出的數自動進行處理成合法的值,負數也是同理,劍指offer49題用c++實現,直接比較了一下正數或負數跟最大正整數和最小負整數的值,Java這樣比較是不行的。參考Integer("123455")的構造方法,實現如下: public
Time of Update: 2018-07-27
【題目描述】請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字串所有字元的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則該路徑不能再進入該格子。 例如 a b c e s f c s a d e e 矩陣中包含一條字串”bcced”的路徑,但是矩陣中不包含”abcb”路徑,因為字串的第一個字元b佔據了矩陣中的第一行第二個格子之後,路徑不能再次進入該格子。 【解題思路】
Time of Update: 2018-07-27
1、如何將字串String轉化為整數int int i = Integer.parseInt(str); int i = Integer.valueOf(my_str).intValue(); 注: 字串轉成Double, Float, Long的方法大同小異。 2、如何將字串String轉化為Integer Integer