原创 計算機簡史:從計算器到手機

序言 計算機(特別是手機)已經改變了人們的生活方式,但是我們卻很少關心計算機底層原理。 計算機是什麼? 計算機是怎麼來的? 程序是怎麼在計算機中運行的? 有句名言:“不認識整體就不可能認識局部”。 程序員爲了更好的掌握編程技術,應該對計算

原创 技術理論-【JVM】-01-基礎概念

學習背景 JVM(Java Virtual Machine)是運行java程序的程序。 爲什麼要用java語言來開發程序呢? 面嚮對象語言; “一次編譯,到處運行”(跨平臺); 自動垃圾回收機制; 豐富的第三方工具庫 計算機

原创 技術理論-【JVM】-04-調優實驗

實驗內容 實驗案例 堆的大小; 堆的新生代和老年代比例; 堆的新生代中Eden和Survival區比例; java對象的成年標準; 方法區大小; 內存溢出; 手動觸發GC; 指定垃圾回收器; 實驗參數 //堆總內存大小 -X

原创 技術理論-【JVM】-02-垃圾回收器

GC核心概念 垃圾回收器是負責JVM中java堆的內存管理組件。 內存回收會產生兩個問題:效率問題和碎片問題。 效率問題是因爲JVM在垃圾回收的時候將暫停java程序運行。 碎片問題是因爲垃圾回收後內存可用空間不連續。 下面的學習

原创 技術理論-【JVM】-03-堆實現分代算法

分代算法 背景 JVM中堆是存放java對象的地方,也是內存管理的核心對象。 前面在垃圾收集器中已經介紹了GC會帶來2個問題,“碎片問題”和“效率問題”,爲了解決這兩個問題,人們不斷的再優化垃圾回收算法,已經介紹了常用的引用計數、

原创 架構小白到磚家-19-【應用腳手架問題】-eclipse整合maven archetype

應用框架的搭建需要一定工作量,我們每次開發新應用都手動搭建一遍,或者耐心的慢慢copy現有應用,這個工作確實不是一件愉快的事情。 我們需要一個應用腳手架,每次新應用只需要一個引導界面,填寫項目基本名稱信息,就可以完成框架的搭建工作。

原创 架構小白到磚家-18-【session共享問題】-springsession+redis實現共享session

咱們已經完成了單應用框架的整合工作,可以滿足開發工作需求了,應用在上線部署之前,咱們還要解決一個系統高可用問題,需要將應用部署成集羣。但是集羣會引發一個新的問題,那就是用戶登錄使用系統,會在每個集羣節點都有一個session,會導致我

原创 架構小白到磚家-17-【密碼安全問題】-springsecurity整合密碼加密機制BCryptPasswordEncoder

用戶認證需要驗證用戶的密碼是否正確,但是爲了保護用戶隱私,防止用戶賬號密碼泄露,用戶在註冊的時候,都需要將密碼進行加密。那麼在用戶認證的時候,就需要將原始密碼和加密密碼進行驗證。這樣就需要註冊加密和驗證加密的方式保存一致。 我們就補充

原创 架構小白到磚家-16-【權限管理問題】-springsecurity處理動態權限驗證

權限管理也面臨數據存儲同樣的動態處理問題,默認security都是使用提前配置權限設置,或者使用註解控制方法權限,但是這就造成了硬編碼的問題,實際生產中權限是根據業務要求進行動態調整的。 爲了解決硬編碼問題,就需要動態獲取權限信息。

原创 架構小白到磚家-15-【權限管理問題】-springboot整合springsecurity

我們已經掌握了權限管理理論,核心就是用戶認證和用戶授權。那麼我們就來學習springsecurity如何解決這兩個問題。 springboot整合springsecurity比較簡單,pom中引入直接使用starter相關的jar。

原创 架構小白到磚家-14-【權限管理問題】-權限管理理論

目前爲止咱們的應用所有人都是可以自由訪問的,但是有些功能不能讓所有人使用,那麼咱們就必須處理應用權限管理問題。權限管理分爲兩部分,用戶認證(Authentication)和用戶授權(Authorization)。用戶認證解決訪問用戶的

原创 架構小白到磚家-12-【應用日誌問題】-使用logback

應用在運行過程中,遇到生產問題是常有的事情,這種情況下,咱們需要獲取應用當時發生問題時的運行信息,來幫助我們排查問題原因。那麼如何保存應用運行信息呢?就需要引入日誌機制。 目前日誌工具已經很多了,咱們就採用springboot推薦的l

原创 架構小白到磚家-11-【數據庫監控問題】-打開druid的監控封印

單應用框架終於解決了用戶請求問題和數據存儲問題,日常生產運營過程中隨着業務發展,應用的性能將經受一個比較大的考驗,而數據庫SQL性能是在數據量增長過後,最容易產生查詢性能問題。爲了方便大家快速定位問題SQL,所以對應用執行的SQL進行

原创 架構小白到磚家-13-【密碼安全問題】-springboot整合druid加密

應用不光保障功能完整性就可以了,還需要保障信息安全,所以我們還需要關注如何隱藏應用敏感信息的問題。數據庫的賬號密碼就是這種信息,我們需要對其進行加密處理。正好druid又提供了非常好用的加密方案,讓我們來看看如何使用吧。 我們首先需要

原创 架構小白到磚家-09-數據庫的價值-多表查詢和特殊操作處理

通過前面對jpa提供的JpaRepository和JpaSpecificationExecutor兩種面向對象數據庫操作研究,已經解決了絕大多數開發工作中單表對象化操作。這兩種解決方案確實都非常優雅,省去了寫SQL的煩惱,甚至連接口的