1. 程式人生 > >JAVA,最起碼,你應該知道這些!

JAVA,最起碼,你應該知道這些!

馬老師說過,員工的離職原因很多,只有兩點最真實: 
錢,沒給到位 
心,受委屈了 
當然,我是想換個平臺,換個方向,想清楚為什麼要跳槽,如果真的要跳槽,想要拿到一個理想的offer,除了運氣,基本功也要足夠的紮實,希望下面的面試經驗能給你們能夠提供一些幫助。 
專案經驗 
面試官在一開始會讓你進行自我介紹,主要是想讓你介紹一下自己做過的一些專案,看看你對這些專案的瞭解程度,因為很多人簡歷上寫的專案並非都是從頭到尾都參與的,有些只是參與並實現了其中的一些模組而已,或是接手維護別人的專案,所以在你簡歷上所寫的和麵試過程中所說的專案經驗,你自己必須能夠了解來龍去脈,因為面試官肯定會根據你的專案描述,對專案中的實現原理,或為什麼要這樣實現進行提問,這時不至於木訥住而不知如何作答,如此局面只會大大降低面試分。 

場景對話: 
面試官:(拿著簡歷)講講你最近做的這個專案 
我:&……%¥#*&¥@%¥!,說了一大通(不知道面試官聽進去多少,面試官會挑他會的進行提問) 
面試官:你說這個專案中用到了netty,能大概講講netty的執行緒模型麼? 
我:(幸好我看過netty的原始碼)netty通過Reactor模型基於多路複用器接收並處理使用者請求(能講就多講一點),內部實現了兩個執行緒池,boss執行緒池和work執行緒池,其中boss執行緒池的執行緒負責處理請求的accept事件,當接收到accept事件的請求時,把對應的socket封裝到一個NioSocketChannel中,並交給work執行緒池,其中work執行緒池負責請求的read和write事件(通過口述加畫圖的方式,把請求的執行過程大概描述了一遍,時間有限,也不可能把所有的細節都說完,挑重點講,挑記憶深刻的講) 

面試官:嗯,理解的還挺深入的…那你在做這個專案時有沒有遇到什麼困難,或者是覺得有挑戰的地方? 
我:(這時面試官想讓你自己出題自己回答了,所以一定要回答,不回答就突顯不出你這個專案了,要是這個問題沒有準備過,只能臨時發揮了,當然我就是屬於臨時發揮的)稍微想一下,因為之前確實碰到了這個問題,當時做這個專案時,對netty的不過熟悉,把請求的業務邏輯放在work執行緒池的執行緒中進行處理,進行壓測的時候,發現qps總是上不去,後來看了原始碼之後才發現,由於業務邏輯的處理比較耗時,完全佔用了work執行緒池的資源,導致新的請求一直處於等待狀態。 
面試官:那最後是如何解決的? 
我:最後把處理業務的邏輯封裝成一個task提交給一個新建的業務執行緒池中執行,執行完之後由work執行緒池執行請求的write事件。 

面試官:好的,你知道nio中selector可能觸發bug麼? 
我:嗯,對的,selector的select方法,因為底層的epoll函式可能會發生空轉,從而導致cpu100%。 
面試官:那如何解決該問題? 
我:這個問題在netty已經解決了,通過&^%&^(把netty的解決方案說一遍)  
面試官:嗯,對了,你們這個專案有給自己定指標麼?  
我:有的,&&…………¥¥##@,把自己專案的指標說了一通,如何進行AB實驗,如何迭代優化指標  
面試官:嗯,好的 ,專案的問題先到這裡,我們來考察一下java的基本點吧。  
如上只是本人所做的一個專案,當然了,具體專案具體分析,也不是每個面試官問的點都一樣,如果面試官不懂netty,自然會挑別的問題進行提問,不過你也可以嘗試著把問題往自己熟悉的方向去靠。  
面試知識點  
1、執行緒池  
執行緒池的實現原理,這個知識點真的很重要,幾乎每次面試都會被問到,一般的提問方式有如下幾種:  
1、“講講執行緒池的實現原理”  
2、“執行緒池中的coreNum和maxNum有什麼不同”  
3、“在不同的業務場景中,執行緒池引數如何設定”  
場景對話:  
面試官:平時執行緒池用的多麼?  
我:嗯,我的*專案中就用到了  
面試官:那好,你講講執行緒池的實現原理  
我:(還好我之前看過原始碼,但是時間久遠有點模糊了),能給我筆和紙麼,我畫圖分析給你看看,&&¥&假設初始化一個執行緒池,核心執行緒數是5,最大執行緒數是[email protected]@@  
面試官:嗯,好的,你繼續…  
我:在紙上畫了正方形,這個代表一個執行緒池,初始化的時候,裡面是沒有執行緒的  
面試官:嗯,好的,你繼續…  
我:又畫了一個細長的長方形,這個代表阻塞佇列,一開始裡面也是沒有任務的  
面試官:嗯,好的,你繼續…  
我:當來了一個任務時,在正方形中畫了一個小圓圈,代表初始化了一個執行緒,如果再來一個任務,就再畫一個圓圈,表示再初始化了一個執行緒,連續畫了5個圓圈之後,如果第6個任務過來了…  
面試官:嗯,好的,你繼續…  
我:這時會把第6個任務放到阻塞佇列中..  
面試官:嗯,然後呢?  
我:現線上程池中不是有5個執行緒了麼,如果其中一個執行緒空閒了,就會從阻塞佇列中獲取第6個任務,進行執行..  
面試官:嗯,對的,那如果任務產生的速度比消費的速度快呢?  
我:如果執行緒池的5個執行緒都在running狀態,那麼任務就先儲存在阻塞佇列中  
面試官:如果佇列滿了,怎麼辦?  
我:如果佇列滿了,我們不是設定了最大執行緒數是10麼,而執行緒池中只有5個執行緒,這時會新建一個執行緒去執行不能儲存到阻塞佇列的任務,然後我又在正方形中畫了5個圓圈。  
面試官:那如果執行緒池中的執行緒數達到10個了,阻塞佇列也滿了,怎麼辦?  
我:這種情況通過自定義reject函式去處理這裡任務了,舒了一口去,以為問完了…  
面試官:好的,那如果執行一段時間之後,阻塞佇列中的任務也執行完了,執行緒池中的執行緒會怎麼樣?  
我:…這個好像超過核心執行緒數的執行緒會在空閒一段時間內自動回收…因為有點不記得這個邏輯了,回答的有點虛…  
面試官:好的,那這種情況在什麼場景下會發生?  
我:(有時候真是笨啊,很多東西都知道,但是在面試的時候一緊張,全忘記)這個…那個…我好像沒有遇到過這樣的情況  
面試官:嗯,好的,你回去之後再好好想想  
我:……..  
我居然忘記了秒殺這個場景  
執行緒池分析的文章:  
深入分析java執行緒池的實現原理  
2、鎖的實現  
在關於鎖的面試過程中,一般主要問Synchronized和ReentrantLock的實現原理,更有甚者會問讀寫鎖。  
場景對話:  
面試官:都瞭解Java中的什麼鎖?  
我:比如Synchronized和ReentrantLock…讀寫鎖用的不多,就沒研究了(我就怕被問讀寫鎖,因為一直沒去看)  
面試官:那好,你先說說Synchronized的實現原理吧  
我:嗯,Synchronized是JVM實現的一種鎖,其中鎖的獲取和釋放分別是monitorenter和monitorexit指令,該鎖在實現上分為了偏向鎖、輕量級鎖和重量級鎖,其中偏向鎖在1.6是預設開啟的,輕量級鎖在多執行緒競爭的情況下會膨脹成重量級鎖,有關鎖的資料都儲存在物件頭中…&&@@#,(嗯,說了一大堆,面試官也沒打斷我)  
面試官:哦,嗯,理解的還挺透徹,那你說說ReentrantLock的實現吧…  
我:ReentrantLock是基於AQS實現的  
面試官:什麼是AQS?  
我:在AQS內部會儲存一個狀態變數state,通過CAS修改該變數的值,修改成功的執行緒表示獲取到該鎖,沒有修改成功,或者發現狀態state已經是加鎖狀態,則通過一個Waiter物件封裝執行緒,新增到等待佇列中,並掛起等待被喚醒&&&
(又說了一堆)
面試官:能說說CAS的實現原理麼?
我:CAS是通過unsafe類的compareAndSwap方法實現的(心裡得意的一笑)
面試官:哦,好的,那你知道這個方法的引數的含義的麼?
我:(這是在逼我啊...努力的回想,因為我真的看過啊)我想想啊,這個方法看的時間有點久遠了,第一個引數是要修改的物件,第二個引數是物件中要修改變數的偏移量,第三個引數是修改之前的值,第四個引數是預想修改後的值....(說出來之後都有點佩服自己,這個都記得,不過面試官好像還是不肯放過我...)
面試官:嗯,對的,那你知道作業系統級別是如何實現的麼?
我:(我去你大爺...)我只記得X86中有一個cmp開頭的指令,具體的我忘記了...
面試官:嗯,好,你知道CAS指令有什麼缺點麼
我:哦,CAS的缺點是存在ABA問題
面試官:怎麼講?
我:就是一個變數V,如果變數V初次讀取的時候是A,並且在準備賦值的時候檢查到它仍然是A,那能說明它的值沒有被其他執行緒修改過了嗎?如果在這段期間它的值曾經被改成了B,然後又改回A,那CAS操作就會誤認為它從來沒有被修改過。
面試官:那怎麼解決?
我:(有完沒完了啊...我的心裡是崩潰的)針對這種情況,java併發包中提供了一個帶有標記的原子引用類"AtomicStampedReference",它可以通過控制變數值的版本來保證CAS的正確性。
面試官:嗯,好的,這個問題到此為止,我們再看看別的
我:....我能喝口水麼
關於鎖分析的文章,希望對大家有用:
深入淺出java同步器AQS
java中的CAS
深入淺出synchronized
深入淺出ReentrantLock
java中的Unsafe
java volatile關鍵字解惑
深入分析Object.wait/notify實現機制
深入分析synchronized的JVM實現
3、ConcurrentHashMap
當考察資料結構時,面試官一開始會問HashMap的實現原理,當你說出HashMap並非執行緒安全之後,會讓你自己引出ConcurrentHashMap,接著就可能開始如下的對話。
場景對話:
面試官:談談ConcurrentHashMap實現原理
我:@#¥@@基於分段鎖的%%¥#@#¥,但是1.8之後改變實現方式了
面試官:1.8啥方式
我:把1.8的實現原理說了一通,其中提到了紅黑樹...
面試官:能講下紅黑樹的概念嗎
我:紅黑樹是一種二叉樹,並且是平衡……%……¥……,
面試官:能講下紅黑樹的。。。。。
我:打住,別問了,紅黑樹我只知道他是二叉樹,比其他樹多一個屬性,其他的我都不知道
面試官:好的,那換個,你知道它的size方法是如何實現的麼?
我:size方法?是想要得到Map中的元素個數麼?
面試官:對的....
我:我記得好像size方法返回是不準確的,平時也不會用到這個方法...
面試官:如果你覺得size方法返回值不準確,那如果讓你自己實現,你覺得應該怎麼實現呢?
我:[email protected]#¥@@...兩眼一黑
我:等等,讓我想想.....應該可以用AtomicInteger變數進行記錄...嗯,對的,每次插入或刪除的時候,操作這個變數,我得意的一笑...
面試官:哦,是麼,那如果我覺得這個AtomicInteger這個變數效能不好,還能再優化麼?
我:懵逼臉...(當時居然把volitile變數給忘記了)...好像沒有了,我想不出來了...
面試官:哦,那回頭你再看看原始碼吧,jdk中已經實現了...
我:哦,是麼....
面試官:那今天的面試到此結束,我們後面會通知你。
我:..................
關於ConcurrentHashMap,本人也寫過不少的分析文章,希望對大家有用:
深入淺出ConcurrentHashMap(1.8)
談談ConcurrentHashMap1.7和1.8的不同實現
ConcurrentHashMap的紅黑樹實現分析
深入分析ConcurrentHashMap1.8的擴容實現
虛擬機器JVM相關
這塊內容並非每個面試官都會問,但是如果是應聘高階職位的話,這一環節是不可缺少的,面試的難易程度也不一樣,有些面試官或許讓你講講虛擬機器的記憶體模型即可,有些也會讓你解釋垃圾回收的實現,當然也會有虛擬機器調優的實戰經驗,線上問題排查等等。
場景對話:
面試官:Java虛擬機器有了解麼?
我:恩,略有接觸過...(水哥說過,話不能說太滿,容易打臉)
面試官:那你先講講它的記憶體模型吧
我:Java堆,Java棧,程式計數器,方法區,1.7的永久代,1.8的metaspace....(噼裡啪啦概念講一通,簡短描述下每個記憶體區的用途,能想到的都講出來,不要保留,不要等面試官問 “還有嗎?”)
面試官:好,一般Java堆是如何實現的?
我:在HotSpot虛擬機器實現中,Java堆分成了新生代和老年代,我當時看的是1.7的實現,所有還有永久代,新生代中又分為了eden區和survivor區,survivor區又分成了S0和S1,或則是from和to,(這個時候,我要求紙和筆,因為我覺得這個話題可以聊蠻長時間,又是我比較熟悉的...一邊畫圖,一邊描述),其中eden,from和to的記憶體大小預設是8:1:1(各種細節都要說出來...),此時,我已經在紙上畫出了新生代和老年代代表的區域
面試官:恩,給我講講物件在記憶體中的初始化過程?
我:(千萬不要只說,新物件在Java堆進行記憶體分配並初始化,或是在eden區進行記憶體分配並初始化)要初始化一個物件,首先要載入該物件所對應的class檔案,該檔案的資料會被載入到永久代,並建立一個底層的instanceKlass物件代表該class,再為將要初始化的物件分配記憶體空間,優先線上程私有記憶體空間中分配大小,如果空間不足,再到eden中進行記憶體分配...^&&*%
面試官:恩,好,說下YGC的大概過程...
我:先找出根物件,如Java棧中引用的物件、靜態變數引用的物件和系統詞典中引用的物件等待,把這些物件標記成活躍物件,並複製到to區,接著遍歷這些活躍物件中引用的物件並標記,找出老年代物件在eden區有引用關係的物件並標記,最後把這些標記的物件複製到to,在複製過程還要判斷活躍物件的gc年齡是否已經達到閾值,如果已經達到閾值,就直接晉升到老年代,YGC結束之後把from和to的引用互換(能多說點就多說點,省的面試官再提問,我把老年代的cms回收也大致說了一遍,以為面試官會跳過這個話題了,還是太年輕了)。
面試官:你剛剛說到在YGC的時候,有些物件可能會發生晉升,如果晉升失敗怎麼處理?
我:....(斷片了幾秒鐘,我記得我分析過這段程式碼的,但是印象不深刻了)我記得在標記階段時,會把物件和對應的物件頭資料儲存在兩個棧中,如果晉升失敗的話,就把該物件的物件頭復原...
面試官:那你在實際專案中有碰到這種情況麼,會導致什麼問題?
我:...(這我真沒有遇到過)對,有遇到過一次,在分析gc日誌的時候,發現YGC發生之後,日誌顯示gc後的記憶體變大了,後來查出來是因為物件的晉升失敗造成的。(我隱約記得看過笨神的一篇文章,回答的心裡很虛)
面試官:(沒有反駁,繼續問)有過虛擬機器效能調優的經驗麼?
我:(說實話,調優經驗真的不多)恩,有一點吧,不是很足,就是我們XX專案上線的時候,發現YGC特別的頻繁^^&^8&,通過調整新生代的大小(線上環境的虛擬機器引數是預設的),同時檢查業務邏輯程式碼&*&
~~!  
面試官:恩?還有麼?  
我:(面試這麼久,好怕面試官的下一句是 “恩?還有麼?”,顯然面試官還不滿足我的回答,但是我也只能答到這個地步了…)恩,經驗確實有限,目前就根據這個專案做過一些相關的優化。  
面試官: 。。。。。。  
我:。。。。。。  
面試官: 那我們看看別的吧。  
關於虛擬機器方面的文章,我針對hotSpot的實現寫了一些分析,感興趣的同學可以看看,這些文章看著確實有點枯燥。  
相關文章:  
JVM原始碼分析之JVM啟動流程  
JVM原始碼分析之堆記憶體的初始化  
JVM原始碼分析之Java類的載入過程  
JVM原始碼分析之Java物件的建立過程  
JVM原始碼分析之如何觸發並執行GC執行緒  
JVM原始碼分析之垃圾收集的執行過程  
JVM原始碼分析之新生代DefNewGeneration的實現  
JVM原始碼分析之老年代TenuredGeneration的垃圾回收演算法實現  
細節問題  
細節決定成敗,在面試過程中,雖然也有運氣的成分存在,但是對於細節的掌握程度,可以很好的衡量應試者的技術水平。  
volatile  
場景對話:  
面試官:說說volatile關鍵字的實現原理  
我:volatile關鍵字提供了記憶體可見性和禁止記憶體重排序  
面試官:分別解釋一下  
我:因為在虛擬機器記憶體中有主記憶體和工作記憶體的概念,每個cpu都有自己的工作記憶體,當讀取一個普通變數時,優先讀取工作記憶體的變數,如果工作記憶體中沒有對應的變數,則從主記憶體中載入到工作記憶體,對工作記憶體的普通變數進行修改,不會立馬同步到主記憶體,記憶體可見性保證了在多執行緒的場景下,保證了執行緒A對變數的修改,其它執行緒可以讀到最新值&&%%……  
面試官:如何保證的?  
我:當對volatile修飾的變數進行寫操作時,直接把最新值寫到主記憶體中,並清空其它cpu工作記憶體中該變數所在的記憶體行資料,當對volatile修飾的變數進行讀操作時,會讀取主記憶體的資料&&&%%¥@  
面試官:你知道系統級別是如何實現的麼?  
我:(what,what are u 說啥呢)我記得操作volatile變數的彙編程式碼前面會有lock字首指令  
面試官:你這說的還是程式碼層面,我說的是系統級別  
我:(懵逼臉…)這個再底層下去我真的沒研究過了…  
相關文章:《java volatile關鍵字解惑》  
Object.finalize  
場景對話:  
面試官:和我講講Object類的finalize方法的實現原理  
我:(完全沒想到面試官會問這個)新建一個物件時,在JVM中會判斷該物件對應的類是否重寫了finalize方法,且finalize方法體不為空,則把該物件封裝成Finalizer物件,並新增到Finalizer連結串列。  
面試官:恩,然後呢?  
我:Finalizer類中會初始化一個FinalizerThread型別的執行緒,負責從一個引用佇列中獲取Finalizer物件,並執行該Finalizer物件的runFinalizer方法,最終會執行原始物件的finalize方法,&&%%##(這塊邏輯有點繞,當時答的也有點虛)  
面試官:Finalizer物件什麼時候會在引用佇列中?  
我:(努力回想中)在發生GC的時候,具體在什麼時間點或如何被插入到引用佇列中,這塊實現我已經忘記了…(我真的忘記了,只記得這塊邏輯太複雜了)  
面試官:恩,你驗證過finalize方法是否會執行麼?  
我:恩,自己寫過例子證明過,也看過原始碼的實現。  
面試官:怎麼證明的?  
我:初始化一個大陣列,可以明顯看出gc之後是否被回收,然後執行System.gc(),在finalize方法中輸出資訊 &&%%@@,(把之前做過的驗證說一遍)  
面試官:恩,可以…  
相關文章: 《深入分析Object.finalize方法的實現原理》  
大問題  
什麼是大問題,就是問題很大,讓你自己去理解,把你的畢生所學都拿出來.  
場景對話:  
面試官:如果給你一個系統,如何去優化?  
我:(優化什麼?效能,穩定性,還是其它方面,只能硬著頭皮上了,結合自己做的一個專案)  
1、分析系統,定義指標  
2、通過系統埋點,收集指標的度量值,對指標進行迭代優化&&^%&

面試官:就這些?沒了麼? 
我:(因為是電話面試,感覺當時腦袋是空白的,估計和麵試官的級別也有關係)如果指標是介面效能的話,可以看下系統記憶體是不是可以使用快取進行效能上的優化,比如redis,如果是訪問很頻繁又不會經常變動的資料,如熱點資料,可以直接使用本地快取進行優化,畢竟一次網路請求也需要1~2毫秒 
面試官:沒了麼? 
我:(因為自己系統優化的經驗確實不豐富,讓面試官覺得怎麼就只能想到如此少的優化點呢)資料庫的讀寫分離,資料庫的分庫分表,如果經常條件查詢資料庫的話,可以引入搜尋服務es或則lucene進行優化 
1、具有1-5工作經驗的,面對目前流行的技術不知從何下手, 
需要突破技術瓶頸的。2、在公司待久了,過得很安逸, 
但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的。 
3、如果沒有工作經驗,但基礎非常紮實,對java工作機制, 
常用設計思想,常用java開發框架掌握熟練的。 
4、覺得自己很牛B,一般需求都能搞定。 
但是所學的知識點沒有系統化,很難在技術領域繼續突破的。 
5. 群號:高階架構群 606187239備註好資訊! 
6.阿里Java高階大牛直播講解知識點,分享知識, 
多年工作經驗的梳理和總結,帶著大家全面、 
科學地建立自己的技術體系和技術認知!

相關推薦

JAVA起碼應該知道這些

馬老師說過,員工的離職原因很多,只有兩點最真實: 錢,沒給到位 心,受委屈了 當然,我是想換個平臺,換個方向,想清楚為什麼要跳槽,如果真的要跳槽,想要拿到一個理想的offer,除了運氣,基本功也要足夠的紮實,希望下面的面試經驗能給你們能夠提供一些幫助。 專案經驗 面試官在一

關於首個受監管的穩定幣GUSD應該知道這些真相

今天早上,美國交易所 Gemini 和另外一個區塊鏈創業公司 Paxos 同時獲得了美國紐約金融服務局的批准,可以在受政府監管的情況下發行錨定美元的數字加密貨幣 GUSD 和 PAX。這種與美元掛鉤而且可以與美元進行直接兌換的數字加密貨幣在區塊鏈行業中有不少先例,比如我們熟悉

現在寫 PHP應該知道這些

轉載自:http://0x1.im/blog/php/php-now-you-shoud-know.html 首先你應該是在用 PHP 5.3 以上的版本,如果 PHP 版本在這之下,是時候該升級了。我建議如果有條件,最好使用最新的版本。 你應該看過 PHP The Ri

2月技術周 | OVS實現安全組需要知道這些

訪問控制 分享圖片 各類 eth 網絡協議 索引 網絡連接 靜態 路由 防火墻 防火墻是避免網絡信息基礎設施免受復雜網絡環境中安全***的必要設施。高效的防火墻則更需要實時跟蹤來往於不同網絡設備間的各類網絡連接,即“有狀態防火墻”。對於實際的硬件物理網絡基礎設施需要防火墻,

Python:應該知道這些

服務 數學 語言特點 這樣的 數學庫 郵件 說明 商業 圖形顯示 1. Python的出生 1989年  Guido van Rossum開始編寫Python語言編輯器(龜叔為了打發無聊的聖誕節) 1991年  第一個Python編譯器誕生(正式誕生) 1994年  Pyt

理解大型分散式網站應該知道這些概念

I/O優化 增加快取,減少磁碟的訪問次數。 優化磁碟的管理系統,設計最優的磁碟方式策略,以及磁碟的定址策略,這是在底層作業系統層面考慮的。 設計合理的磁碟儲存資料塊,以及訪問這些資料庫的策略,這是在應用層面考慮的。例如,我們可以給存放的資料設計索引,通過定址索引來加快和減少磁碟的訪問量,

關於HTTP協議應該知道這些

概念 HTTP協議(HyperText Transfer Protocol, 超文字傳輸協議)是因特網上應用最為廣泛的一種網路協議,所有的www檔案都必須遵循這個標準。 HTTP基於TCP/IP通訊協議來傳遞資料(包括:HTML,檔案,圖片,查詢結果等)。 協議

當我們在聊 Serverless 時應該知道這些

作者 | 楊澤強(竹澗)阿里雲技術專家 說起當前最火的技術,除了最新的區塊鏈、AI,還有一個不得不提的概念是 Serverles

當問起執行緒池(Java中的ThreadPoolExecutor類)應該知道的基礎知識點

執行緒池 執行緒池是一種多執行緒處理形式,處理過程中將任務新增到佇列,然後在建立執行緒後自動啟動這些任務。執行緒池執行緒都是後臺執行緒。每個執行緒都使用預設的堆疊大小,以預設的優先順序執行,並處於多執行緒單元中。如果某個執行緒在託管程式碼中空閒(如正在等待某個事件),則執行緒池將插入另一個輔助執

關於 Token應該知道的十件事

敏感信息 you load 冒充 tro hex 服務器 xhr cors 轉自:http://ju.outofmemory.cn/entry/134189 原文是一篇很好的講述 Token 在 Web 應用中使用的文章,而這是我和 Special 合作翻譯的譯文。 1.

做網站SEO優化這些網絡引流方法應該知道

尋求 可能 垃圾郵件 百度搜 如果 什麽 網站鏈接 很快 建立 對於網站SEO優化來說,網站流量的重要性不言而喻!國內的站長平臺工具通過用網站流量來衡量一個網站的權重,當你的網站流量很高的時候,同時會影響你網站的權重,進而影響你網站SEO優化排名。所以說流量對於一個網站的意

Select 使用不當引發的core應該知道

retcode 代碼 async fetch sse com 基礎 -a cnblogs 排查一個死機問題,搞了好幾天時間,最終確定原因;最終確定問題原因,在此分享一下; 第一步:常規根據core文件查看棧信息,gdb –c core xxxx 如下rip不正確,指令地址錯

關於分散式儲存這是應該知道的(圖文詳解)(關於儲存的一些好文轉載--1)

轉自:http://stor.51cto.com/art/201711/556946.htm 關於分散式儲存,這是你應該知道的(圖文詳解) 前言 分散式儲存存在的風險,其實就是因為“共享”、“大資料量”、“高效能”和X86伺服器+廉價的磁碟為載體之間的矛盾所產生的,不是有些讀者說的“資料

2018年末Java主流技術還有哪些是知道的?

2018年全新的Java後端技術(如下圖) 1.原始碼分析   2.1分散式架構   2.2分散式架構   2.3分散式架構   3.微服務架構   4.併發程式設計

關於Java面試應該準備這些知識點

自天子以至於庶人,壹是皆以修身為本 《禮記·大學》 馬老師說過,員工的離職原因很多,只有兩點最真實: 錢,沒給到位 心,受委屈了 當然,我是想換個平臺,換個方向,想清楚為什麼要跳槽,如果真的要跳槽,想要拿到一個理想的offer,除了運氣,基本功也要足夠的紮實,希

關於影像辨識所有應該知道的深度學習模型

YOLO: You Only Look OnceYOLO 有個很討喜的名字,取自 You Only Live Once,但用在 Object detection 上則為 You only look once,意思是說 YOLO 模型的特性只需要對圖片作一次 CNN 便能夠判斷裡面的物體類別跟位置,大大提升辨識

應該知道的 RPC 原理(好文忍不住轉到自己空間。)

在校期間大家都寫過不少程式,比如寫個hello world服務類,然後本地呼叫下,如下所示。這些程式的特點是服務消費方和服務提供方是本地呼叫關係。 而一旦踏入公司尤其是大型網際網路公司就會發現,公司的系統都由成千上萬大大小小的服務組成,各服務部署在不同的機器

關於分散式儲存這是應該知道

作者簡介: 顧炯 中國電信浙江公司中國電信雲端計算實驗室、SDx聯合技術開放實驗室專家委員。作為第一完成人,多個專案獲得省部級和集團級科技進步獎。 前言 分散式儲存存在的風險,其實就是因為“共享”、“大資料量”、“高效能”和X86伺服器+廉價的磁碟為載體之間的矛盾所產生的,不是有些讀者說的“資料

看完這篇應該知道什麼是Linux了~

Linux上的檔案系統一般來說就是EXT2或EXT3,但這篇文章並不準備一上來就直接講它們,而希望結合Linux作業系統並從檔案系統建立的基礎——硬碟開始,一步步認識Linux的檔案系統。 1.機械硬碟的物理儲存機制 現代計算機大部分檔案儲存功能都是由機械硬碟這種裝置

2019Java依然免費應該知道的事實真相不要被誤導--技術領導必讀

     2019年關於Java是否免費,一直存在誤解,國內新聞斷章取義,搞錯概念,誤導開發者。 作為企業的技術領導應該弄清楚關鍵的概念,避免被誤導。      國內一直謠傳Java2019年1月1號收費,今天都2號了,使用Java的企業運轉一切正