一、懶漢式單例模式,解決反射和還原序列化漏洞 package com.iter.devbox.singleton;import java.io.ObjectStreamException;import java.io.Serializable;/** * 懶漢式(如何防止反射和還原序列化漏洞) * @author Shearer * */public class SingletonDemo6 implements Serializable{// 類初始化時,不初始化這個對象(
一.前言: CentOS7.0雖然內建JDK1.7和1.8,運行“java -version”命令也可以看到版本資訊,但是jdk的安裝環境不全,比如缺少tool.jar和dt.jar等,這就導致“javac”等這樣的命令即便配置了環境變數也不能用,所以要重新安裝jdk,並且配置環境變數,並解決“javac”命令停用問題。 二.下載安裝JDK 1.CentOS下,首先讓目前使用者擷取root許可權,開啟終端輸入命令: su root 1
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 1.8的API也嚴格說明了線程的幾種狀態: 這裡的NEW 狀態說的是,這個線程還沒有啟動。對應我們下圖的建立狀態。 RUNNABLE:線程已經正在執行或者將要執行(都在JVM),對應下圖的就緒和運行狀態。 BLOCKED:等待監視鎖,處於阻塞狀態。對應下圖的阻塞狀態。比如synchronized WAITING: 無限期的等待其他線程執行特定的操作。比如:線程調用Join()方法。
問題描述 媽媽給小B買了N塊糖。但是她不允許小B直接吃掉。 假設當前有M塊糖,小B每次可以拿P塊糖,其中P是M的一個不大於根號下M的質因數。這時,媽媽就會在小B拿了P塊糖以後再從糖堆裡拿走P塊糖。然後小B就可以接著拿糖。 現在小B希望知道最多可以拿多少糖。 輸入格式 一個整數N 輸出格式 最多可以拿多少糖 範例輸入 15
上次分享了java線程池的原理,這次對各種線程池從記憶體和cpu使用上進行分析,讓讀者清楚以後線程池的使用原理 和在實際項目中如何使用線程池和怎麼選取阻塞隊列 1.線程池不允許使用 Executors 去建立,而是通過 ThreadPoolExecutor 的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。 說明: (1)使用newFixedThreadPool記憶體模型
java 記憶體可分為: 堆和meta space . 查看堆: jmap -heap pid 查看metaSpace: 使用 jstat -gc pid mc mu. 查看進程內的其他佔用: top 裡的rs佔用 減去 jmap -heap 裡的佔用. /proc/$PID/maps smaps是更詳細的資訊
類變數、成員變數、局部變數 類變數(也叫靜態變數)是類中獨立於方法之外的變數,用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
轉自http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html#!comments 本篇文章講解了電腦的原碼, 反碼和補碼. 並且進行了深入探求了為何要使用反碼和補碼, 以及更進一步的論證了為何可以用反碼, 補碼的加法計算原碼的減法. 論證部分如有不對的地方請各位牛人幫忙指正! 希望本文對大家學習電腦基礎有所協助! 一. 機器數和真值 在學習原碼, 反碼和補碼之前,
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"); ...
在Java多線程中,可以使用關鍵字Synchronized實現線程之間互斥。在JDK1.5之後,提供了線程並發庫java.util.concurrent用於操作多線程,其中包含了java.util.concurrent.atomic和java.util.concurrent.lock。atomic可以實現資料或變數的原子性操作,而lock可以實現線程互斥,可以實現讀寫鎖,跟Synchronized一樣同屬於可重新進入鎖,但在使用上比Synchronized更加靈活。