一、懶漢式單例模式,解決反射和還原序列化漏洞 package com.iter.devbox.singleton;import java.io.ObjectStreamException;import java.io.Serializable;/** * 懶漢式(如何防止反射和還原序列化漏洞) * @author Shearer * */public class SingletonDemo6 implements Serializable{// 類初始化時,不初始化這個對象(
測試線程死結,運行以下代碼: public class Test1 {private static Object o1 = new Object();private static Object o2 = new Object();public static void main(String[] args) {for( int i = 0;i<100;i++){new Thread(new Runnable() {@Overridepublic void run()
java並發線程的相關基礎知識 1. Synchronized方法和 Synchronized代碼塊和 wait(),notify()( wait,notify方法均屬於 Object類方法, 即任何類都具有該方法,至於 Thread類的其他方法都屬於其專屬方法,需要繼承 Thread類,或繼承 Runnable介面的,並建立 Thread執行個體來使用) (1
這是我參考了網上一些資料寫的第一個java爬蟲程式 本來是想擷取煎蛋網無聊圖的圖片,但是網路返回碼一直是503,所以換了網站 /* * 網路爬蟲取資料 * * */public class JianDan {public static String GetUrl(String inUrl){StringBuilder sb = new StringBuilder();try {URL url =new URL(inUrl);BufferedReader reader
曆屆試題 分糖果 時間限制:1.0s 記憶體限制:256.0MB 問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲: 每個小朋友都把自己的糖果分一半給左手邊的孩子。
package the_five_session_B; import java.util.Scanner; /* 標題:分糖果 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲: 每個小朋友都把自己的糖果分一半給左手邊的孩子。 一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。
曆屆試題 分糖果 時間限制:1.0s 記憶體限制:256.0MB 問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲: 每個小朋友都把自己的糖果分一半給左手邊的孩子。
開源地址 https://github.com/a466350665/smart https://git.oschina.net/a466350665/smart QQ交流群:454343484(群內含各種工具和文檔下載) 簡述 Smart定位用當下最流行的SSM(SpringMVC + Spring +
1. 高並發最佳化分析 關於並發 並發性上不去是因為當多個線程同時訪問一行資料時,產生了事務,因此產生寫鎖,每當一個擷取了事務的線程把鎖釋放,另一個排隊線程才能拿到寫鎖,QPS(Query Per Second每秒查詢率)和事務執行的時間有密切關係,事務執行時間越短,並發性越高,這也是要將費時的I/O操作移出事務的原因。 在本項目中高並發發生在哪。 在上圖中,紅色的部分就表示會發生高並發的地方,綠色部分表示對於高並發沒有影響。
《Java線程池》:Executor生命週期 我們知道線程是有多種執行狀態的,同樣管理線程的線程池也有多種狀態。JVM會在所有線程(非後台daemon線程)全部終止後才退出,為了節省資源和有效釋放資源關閉一個線程池就顯得很重要。有時候無法正確的關閉線程池,將會阻止JVM的結束。 線程池Executor是非同步執行任務,因此任何時刻不能夠直接擷取提交的任務的狀態。這些任務有可能已經完成,也有可能正在執行或者還在排隊等待執行。因此關閉線程池可能出現一下幾種情況:
按照範例輸入,起始的糖果數為15,在小B第一次拿走1顆糖後,媽媽同樣會拿走1顆糖,問題 就會變成在起始只有13顆糖的情況下最多能拿到多少顆糖;若小B又拿走1顆糖,媽媽又會拿走1顆, 問題又變成了在11顆糖中最多能拿到多少顆糖……很明顯子問題(新產生的問題)並不是相互獨立的, 應通過動態規劃解題 : 通過題目寫出狀態轉移方程: dp[i] = max{ dp[i] , dp[ i –temp * 2 ] + temp };
上次分享了java線程池的原理,這次對各種線程池從記憶體和cpu使用上進行分析,讓讀者清楚以後線程池的使用原理 和在實際項目中如何使用線程池和怎麼選取阻塞隊列 1.線程池不允許使用 Executors 去建立,而是通過 ThreadPoolExecutor 的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。 說明: (1)使用newFixedThreadPool記憶體模型
類變數、成員變數、局部變數 類變數(也叫靜態變數)是類中獨立於方法之外的變數,用static 修飾。(static表示“全域的”、“靜態”,用來修飾成員變數和成員方法,或靜態代碼塊(靜態代碼塊獨立於類成員,jvm載入類時會執行靜態代碼塊,每個代碼塊只執行一次,按順序執行))。 成員變數(也叫“執行個體變數”、“域”)也是類中獨立於方法之外的變數,不過沒有static修飾。 局部變數是類的方法中的變數。 看下面的虛擬碼說明: public
https://www.cnblogs.com/AlanLee/archive/2017/06/02/6933073.html 1、普通java pro 建立: package com.busy.webservice;import javax.jws.WebService;import javax.xml.ws.Endpoint;@WebServicepublic class WebServiceTest {public String transWords(String
Java中的Atomic包使用指南 本文首發於並髮網,作者:方騰飛 引言 Java從JDK1.5開始提供了java.util.concurrent.atomic包,方便程式員在多線程環境下,無鎖的進行原子操作。原子變數的底層使用了處理器提供的原子指令,但是不同的CPU架構可能提供的原子指令不一樣,也有可能需要某種形式的內部鎖,所以該方法不能絕對保證線程不被阻塞。 Atomic包介紹
單例類,也是將要序列化的類 package test;import java.io.Serializable;import java.util.Date;/** * 定義一個可序列化的單例類,單例實現方法是靜態內部類實現 同時為了在序列化後,再次還原序列化獲得對象還是單例模式。用readResolve方法 * 對於這個不是很懂。 * * @author cindy * */public class MyObject implements Serializable { /**
最近出現一個問題,在JBoss中部署完項目並運行時,請求網頁會報 java.lang.OutOfMemoryError: PermGen space 從網上搜資料後才知道,是由於PermGen space記憶體不足引起的。 分析原因: 1、 java.lang.OutOfMemoryError: PermGen space 從字面上也能看出是由於 PermGen space 的記憶體空間不足,而導致的記憶體溢出錯誤。 2、PermGen
刷微博時偶然看到 Lambda 的 HelloWorld 教程,覺得很酷炫。分享一下。 效果樣本 總體看起來效果就是代碼簡潔,如下 //之前的寫法btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println("hello lambda"); ...
點擊上方“程式員小灰”,選擇“置頂公眾號” 有趣有內涵的文章第一時間送達。 本文轉載自公眾號 Hollis 一直以來程式員都給大家以高智商低情商,不懂得浪漫不會哄女生開心的形象。但是,我覺得程式員都是浪漫的。對於這種錯誤觀念,只能用一首歌來表達廣大程式員的心聲:程式員的好,只有他身邊的那個人才知道。。。 每個程式員都知道的一句話其實就是最美的情話:“Hello
在Java多線程中,可以使用關鍵字Synchronized實現線程之間互斥。在JDK1.5之後,提供了線程並發庫java.util.concurrent用於操作多線程,其中包含了java.util.concurrent.atomic和java.util.concurrent.lock。atomic可以實現資料或變數的原子性操作,而lock可以實現線程互斥,可以實現讀寫鎖,跟Synchronized一樣同屬於可重新進入鎖,但在使用上比Synchronized更加靈活。