原创 JVM系列——垃圾收集(三)

垃圾收集器 上一篇講的收集算法是內存回收的方法論,而垃圾收集器則是內存回收的具體實現。書中討論的收集器基於JDK1.7之後的HotSpot虛擬機 如果兩個收集器之間存在連線,就說明它們可以搭配使用,而虛擬機所處的區域,則表示它是屬於新生

原创 JVM系列——垃圾收集(二)

垃圾收集算法 1. 標記—清除算法 標記—清除算法就和其名字一樣,分爲標記和清除兩個階段:首先按上一篇文章中提到的標記方法對可回收對象進行標記,接着在標記完成後統一回收所有被標記的對象,過程如下: 圖中的上半部分是回收前的內存狀態,下半部

原创 第四章 行爲和態度

最初,心理學家認爲:瞭解人們的態度就可以預測其行爲。比如納粹的種族滅絕和伊拉克的自殺式爆炸說明,極端的態度可能會導致極端的行爲。 但是之後又有心理學家指出,改變人們的態度並不能改變他麼的行爲。 “我們訓練有素,十分擅長爲我們所做的事情尋找理

原创 第二章 社會中的自我

焦點和錯覺:對了解我們自己的啓示 爲什麼我們常常會高估別人對我們的關注程度? 焦點效應: 人類往往會把自己看作一起的中心,並且直覺地高估別人對我們的關注程度。 透明度錯覺: 我們總是傾向於認爲我們的情緒總是表現的比實際情況更明顯。如果我們意

原创 JVM系列——垃圾收集(一)

垃圾收集 哪些內存需要回收? 什麼時候回收? 怎麼回收? 爲什麼需要了解垃圾收集呢? 當需要排查各種內存溢出、內存泄漏問題時,當垃圾收集成爲系統達到更高併發量的瓶頸時,我們就需要對這些“自動化”的技術實施必要的監控和調節。 由於棧是

原创 龜兔賽跑算法

最近在刷leetcode的時候又刷到一道鏈式結構中的環問題,具體問題見:https://leetcode-cn.com/problems/find-the-duplicate-number/ 簡短概述一下,就是一個大小爲n+1的數組中,每個

原创 String、StringBuilder和StringBuffer的區別

在刷leetcode 451的時候,遇到這樣一個問題,當一個字符串類型的變量頻繁地進行字符連接操作(+=)的時候,內存溢出了,後面看了網上的代碼發現用StringBuilder可以解決,於是到網上去學習了一下String、StringBui

原创 第三章 社會信念和判斷

社會世界的感知 我們並非總是如實的對現實進行反應,而是根據我們對現實的構建作出反應。 啓動 我們的記憶系統是一個互相聯結的網絡,而啓動就是喚醒或者激活其中的某些特定聯結。 某項實驗,研究者請一些人補全含有諸如“老的”、“退休的”等詞語的句

原创 上司的小祕密

很久很久以前我在的公司,有一天老闆說他手機有問題,讓我看看,結果我一看就停不下來了。 原來我們公司早就已經負債累累,老闆似乎知道我看到了那些不該看的東西,臉色有些無奈。 當時我心裏真的特別過意不去,前幾天居然還跟他談加薪,原來老闆開豪車出入

原创 JVM系列——JAVA內存區域與內存溢出異常

最近更新的兩篇String分析的文章,其實都是學習JAVA虛擬機時候遇到的一些問題總結,剛把《深入理解JAVA虛擬機》第二章看完,這篇文章將會介紹一下JAVA內存區域中常見 的一些問題。 1.運行時的數據區域 程序計數器 程序計數器(P

原创 HashSet源碼分析

前兩天覆習數據結構,剛看完散列這一章,於是就想研究一下HashSet和HashMap的源碼是怎麼實現的。但是大概看了下HashMap,底層貌似用到了紅黑樹的數據結構,而HashSet比較簡單,是基於HashMap實現的,所以這篇文章主要還是

原创 String中有趣的intern函數

!!注意 本文討論的是jdk1.7後的intern()特性 先說.intern()這個方法是做什麼的:返回這個字符串在字符串常量池中的地址。 再來看下面這段懵逼的代碼: String s = new StringBuil