Fork me on GitHub
摘要: 本文會使用排除法的手段,來講解新生代的區域劃分,從而讓讀者能夠更清晰的理解分代回收器的原理,在開始之前我們先來整體認識一下分代收集器。 分代收集器會把內存空間分為:老生代和新生代兩個區域,而新生代又會分為:Eden 區和兩個 Survivor區(From Survivor、To Survivor),閱讀全文
posted @ 2019-02-22 09:25 王磊的博客 閱讀(189) 評論(0) 編輯
摘要: 全文共 2195 個字,讀完大約需要 8 分鐘。 如果垃圾回收的算法屬于內存回收的方法論的話,那本文討論的垃圾回收器就屬于內存回收的具體實現。 因為不同的廠商(IBM、Oracle),實現的垃圾回收器各不相同,而本文要討論的是 Oracle 的 HotSpot 虛擬機所使用的垃圾回收器。 常用垃圾回閱讀全文
posted @ 2019-02-13 09:53 王磊的博客 閱讀(424) 評論(1) 編輯
摘要: 全文共 1890 個字,讀完大約需要 6 分鐘。 上一篇我們講了垃圾標記的一些實現細節和經典算法,而本文將系統的講解一下垃圾回收的經典算法,和Hotspot虛擬機執行垃圾回收的一些實現細節,比如安全點和安全區域等。 因為各個平臺的虛擬機操作內存的方法各不相同,且牽扯大量的程序實現細節,所以本文不會過閱讀全文
posted @ 2019-01-25 08:09 王磊的博客 閱讀(268) 評論(0) 編輯
摘要: 好的文章是能把各個知識點,通過邏輯關系串連起來,讓人豁然開朗的同時又記憶深刻。 導讀:對象除了生死之外,還有其他狀態嗎?對象真正的死亡,難道只經歷一次簡單的判定?如何在垂死的邊緣“拯救”一個將死對象?判斷對象的生死存活都有那些算法?本文帶你一起找到這些答案。 在正式開始之前,我們先來了解一下垃圾回收閱讀全文
posted @ 2019-01-21 09:29 王磊的博客 閱讀(225) 評論(0) 編輯
摘要: 實現效果圖: 上圖合成了2個人視頻,中途有1個人先離開之后又重新加入了房間。 一、業務場景 業務場景是這樣的:多個用戶(2 4人)直播的視頻,合成為一個視頻,這期間要滿足2個條件:首先,錄制途中可能有一個或多個用戶不定次數的離線、重進(網絡差和人為操作)的情況;第二,要保證合成的視頻和錄制的效果是一閱讀全文
posted @ 2019-01-16 19:13 王磊的博客 閱讀(340) 評論(4) 編輯
摘要: 導讀:詳細而深入的總結,是對知識“豁然開朗”之后的“刻骨銘心”,想忘記都難。 Java虛擬機(Java Virtual Machine)下文簡稱jvm,上一篇我們對jvm有了大體的認識,進入本文之后我們將具體而詳細的介紹jvm的方方面面,而本文主要講的是jvm的組成,了解了它,就揭開了jvm的神秘面閱讀全文
posted @ 2019-01-13 19:21 王磊的博客 閱讀(273) 評論(0) 編輯
摘要: 提到Java虛擬機(JVM),可能大部分人的第一印象是“難”,但當讓我們真正走入“JVM世界”的時候,會發現其實問題并不像我們想象中的那么復雜。唯一真正令我們恐懼的,其實是恐懼本身。而作為整個JVM系列的首篇,本文將帶你解除剛開始學習JVM時的種種疑惑。比如:什么是JVM?為什么學習JVM?怎么有效閱讀全文
posted @ 2019-01-06 18:40 王磊的博客 閱讀(459) 評論(0) 編輯
摘要: 2018年已步入尾聲,還有2天將迎來嶄新的2019,按照國際慣例,又到了一年一度總結過去,計劃將來的日子。而今年和以往唯一不同的是,以前只是“悵然若失”的假裝自己到了“而立之年”,而2019年,真的要步入“而立之年”了,若說自己沒有那么一絲的感傷和恐懼,那是自欺欺人,但既然“木已成舟”,也只能欣然接閱讀全文
posted @ 2018-12-29 16:25 王磊的博客 閱讀(1012) 評論(12) 編輯
摘要: 反射和動態代理放有一定的相關性,但單純的說動態代理是由反射機制實現的,其實是不夠全面不準確的,動態代理是一種功能行為,而它的實現方法有很多。要怎么理解以上這句話,請看下文。 一、反射 反射機制是 Java 語言提供的一種基礎功能,賦予程序在運行時自省(introspect,官方用語)的能力。通過反射閱讀全文
posted @ 2018-12-11 18:33 王磊的博客 閱讀(327) 評論(0) 編輯
摘要: 導讀:本文你將獲取到:同/異步 + 阻/非阻塞的性能區別;BIO、NIO、AIO 的區別;理解和實現 NIO 操作 Socket 時的多路復用;同時掌握 IO 最底層最核心的操作技巧。 BIO、NIO、AIO 的區別是什么? 同/異步、阻/非阻塞的區別是什么? 文件讀寫最優雅的實現方式是什么? NI閱讀全文
posted @ 2018-12-04 17:40 王磊的博客 閱讀(367) 評論(1) 編輯
摘要: 導讀:Map竟然不屬于Java集合框架的子集?隊列也和List一樣屬于集合的三大子集之一?更有隊列的正確使用姿勢,一起來看吧! <! more Java中的集合通常指的是Collection下的三個集合框架List、Set、Queue和Map集合,Map并不屬于Collection的子集,而是和它平閱讀全文
posted @ 2018-11-28 08:27 王磊的博客 閱讀(247) 評論(0) 編輯
摘要: 一、Spring Boot 系列誕生原因 上學那會主要學的是 Java 和 .Net 兩種語言,當時對于語言分類這事兒沒什么概念,恰好在2009年畢業那會陰差陽錯的先找到了 .Net 的工作,此后就開始了漫長的 .Net 編程之旅,說實話最初的“編程思想”的形成和確立都是在頭幾年做 .Net 的時候閱讀全文
posted @ 2018-11-24 22:31 王磊的博客 閱讀(819) 評論(0) 編輯
摘要: 樂觀鎖、悲觀鎖、公平鎖、自旋鎖、偏向鎖、輕量級鎖、重量級鎖、鎖膨脹...難理解?不存的!來,話不多說,帶你飆車。 上一篇介紹了線程池的使用,在享受線程池帶給我們的性能優勢之外,似乎也帶來了另一個問題:線程安全的問題。 那什么是線程的安全問題呢? 一、線程安全問題的產生 線程安全問題:指的是在多線程編閱讀全文
posted @ 2018-11-22 09:34 王磊的博客 閱讀(327) 評論(0) 編輯
摘要: 本文你將獲得以下信息: 線程池源碼解讀 線程池執行流程分析 帶返回值的線程池實現 延遲線程池實現 為了方便讀者理解,本文會由淺入深,先從線程池的使用開始再延伸到源碼解讀和源碼分析等高級內容,讀者可根據自己的情況自主選擇閱讀順序和需要了解的章節。 一、線程池優點 線程池能夠更加充分的利用CPU、內存、閱讀全文
posted @ 2018-11-19 17:25 王磊的博客 閱讀(451) 評論(0) 編輯
摘要: 一、前言 延遲隊列的使用場景:1.未按時支付的訂單,30分鐘過期之后取消訂單;2.給活躍度比較低的用戶間隔N天之后推送消息,提高活躍度;3.過1分鐘給新注冊會員的用戶,發送注冊郵件等。 實現延遲隊列的方式有兩種: 1. 通過消息過期后進入死信交換器,再由交換器轉發到延遲消費隊列,實現延遲功能; 2.閱讀全文
posted @ 2018-11-16 10:01 王磊的博客 閱讀(627) 評論(1) 編輯
摘要: 一、前言 RabbitMQ是一個開源的消息代理軟件(面向消息的中間件),它的核心作用就是創建消息隊列,異步接收和發送消息,MQ的全程是:Message Queue中文的意思是消息隊列。 1.1 使用場景 1. 削峰填谷:用于應對間歇性流量提升對于系統的“破壞”,比如秒殺活動,可以把請求先發送到消息隊閱讀全文
posted @ 2018-11-13 09:11 王磊的博客 閱讀(490) 評論(2) 編輯
摘要: 一、介紹 JUnit是一款優秀的開源Java單元測試框架,也是目前使用率最高最流行的測試框架,開發工具Eclipse和IDEA對JUnit都有很好的支持,JUnit主要用于白盒測試和回歸測試。 白盒測試:把測試對象看作一個打開的盒子,程序內部的邏輯結構和其他信息對測試人 員是公開的; 回歸測試:軟件閱讀全文
posted @ 2018-11-05 12:52 王磊的博客 閱讀(1282) 評論(2) 編輯
摘要: 一、簡介 Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key Value數據庫,并提供多種語言的API,Redis也是技術領域使用最為廣泛的存儲中間件,它是「Remote Dictionary Service」首字母縮寫,也就是「遠程字典服務」。 <! m閱讀全文
posted @ 2018-11-03 11:52 王磊的博客 閱讀(374) 評論(0) 編輯
摘要: 一、簡介 Java知名的日志有很多,比如:JUL、Log4j、JCL、SLF4J、Logback、Log4j2,那么這些日志框架之間有著怎樣的關系?誕生的原因又是解決什么問題?下面一起來看。 <! more 1.1 JUL Java有自己的日志框架JUL(Java Util Logging)在jav閱讀全文
posted @ 2018-10-30 19:08 王磊的博客 閱讀(770) 評論(0) 編輯
摘要: 一、簡介 在當下這個前后端分離的技術趨勢下,前端工程師過度依賴后端工程師的接口和數據,給開發帶來了兩大問題: <! more 問題一、后端接口查看難:要怎么調用?參數怎么傳遞?有幾個參數?參數都代表什么含義? 問題二、返回數據操作難:數據返回不對或者不夠怎么辦?怎么才能靈活的操作數據? 這是很多公司閱讀全文
posted @ 2018-10-24 09:31 王磊的博客 閱讀(1374) 評論(2) 編輯
摘要: 一、概述 在開始學習Thread之前,我們先來了解一下 線程和進程之間的關系: 線程(Thread)是進程的一個實體,是CPU調度和分派的基本單位。 線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。 線程和進程的關系是:線程是屬于進程的,線程運行在進程空間內,同一進程所產生閱讀全文
posted @ 2018-10-09 19:40 王磊的博客 閱讀(505) 評論(0) 編輯
摘要: 一、MongoDB簡介 1.1 MongoDB介紹 MongoDB是一個強大、靈活,且易于擴展的通用型數據庫。MongoDB是C++編寫的文檔型數據庫,有著豐富的關系型數據庫的功能,并在4.0之后添加了事務支持。 隨著存儲數據量不斷的增加,開發者面臨一個困難:如何擴展數據庫?而擴展數據庫分為橫向擴展閱讀全文
posted @ 2018-10-08 09:33 王磊的博客 閱讀(813) 評論(1) 編輯
摘要: 一、簡介 1.1 MyBatis Generator介紹 MyBatis Generator 是MyBatis 官方出品的一款,用來自動生成MyBatis的 mapper、dao、entity 的框架,讓我們省去規律性最強的一部分最基礎的代碼編寫。 1.2 MyBatis Generator使用 M閱讀全文
posted @ 2018-09-30 10:13 王磊的博客 閱讀(1034) 評論(0) 編輯
摘要: 一、簡介 1.1 MyBatis介紹 MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC代碼和手動設置參數以及獲取結果集。 1.2 MyBatis發展史 MyBatis 原本是apache的一個開源項目iBatis, 201閱讀全文
posted @ 2018-09-12 19:13 王磊的博客 閱讀(1432) 評論(0) 編輯
摘要: 一、前言 Hexo 是一個基于 NodeJs 博客框架,可以快速的幫我們搭建一個博客系統,Hexo使用的是Markdown(下文簡稱MD)解析文章的,在幾秒內即可利用靚麗的主體生成靜態網頁。 <! more 推薦使用 Hexo 有三大理由: 有大量的主題可供人們選擇 使用MD解析文章,MD是現在主流閱讀全文
posted @ 2018-09-07 17:19 王磊的博客 閱讀(478) 評論(0) 編輯
耐克篮球多少钱