原创 類的加載時機與加載過程

摘要:   在Java中,一個對象在可以被使用之前必須要被正確地初始化,這一點是Java規範規定的。在實例化一個對象時,JVM首先會檢查相關類型是否已經加載並初始化,如果沒有,則JVM立即進行加載並調用類構造器完成類的初始化。在類初始化過

原创 自定義 之 如何自定義異常?

爲什麼自定義異常呢?主要有以下幾個理由值得你去做: 1,統一異常,團隊開發一定要有規則,不能自己想怎麼拋異常就怎麼拋,不僅僅是格式,可以對每種業務新建一個異常。 2,結合業務中斷程序運行,有時候java代碼本身不會有錯誤,但是不符合業務邏

原创 多線程:synchronized關鍵字解析

原理 synchronized是JVM層面的鎖,是一種重量級的鎖。synchronized可以同步方法和代碼塊。 public class Synchronized { public static void main(Strin

原创 如何防止短信驗證碼被攻擊?

    如何防止驗證碼被攻擊?驗證碼可以用來攻擊單個用戶,也就是短信轟炸,也可以刷量增加網站成本,雖然一條几分錢,但是量多了也是一種成本。以下幾種驗證碼被攻擊的解決方案。 1.發送間隔限制,每過60秒或120秒之後纔可以再次發送    

原创 java對象的創建過程:類的初始化與實例化

摘要:   在Java中,一個對象在可以被使用之前必須要被正確地初始化,這一點是Java規範規定的。在實例化一個對象時,JVM首先會檢查相關類型是否已經加載並初始化,如果沒有,則JVM立即進行加載並調用類構造器完成類的初始化。在類初始

原创 多線程:線程池的原理和使用解析

目錄 1,線程池相關的類接口(類)及其關係 2,線程池的實現原理(即任務的處理流程) 3,線程池的幾種創建方式 4,使用線程池提交任務 5,關閉線程池 1,線程池相關的類接口(類)及其關係     ThreadPoolExecutor作

原创 自定義 之 使用參數註解獲取當前用戶(基於參數解析器HandlerMethodArgumentResolver)

    之前寫了篇自定義註解,這次的註解原理依舊是java的annotation以及反射機制,不過是結合了spring mvc框架而已 做一個簡單的比較常用的參數註解,用來獲取當前的登錄用戶。 首先定義一個參數類型的註解CurrentUs

原创 分佈式session共享的幾種實現方案

單個服務時不會出現session共享的問題,分佈式服務時就需要考慮多個web容器之間的session共享問題,如果沒有考慮session問題,就會導致很多問題,例如用戶請求落到沒有session的容器上就會出現重新登錄的情況。常見的解決方

原创 Tomcat內部實現架構解析

一,Tomcat頂層架構 可以看到一個Server可以有多個Service,一個Service可以有多個Connector和一個Container,這兩部分是tomcat的核心。 1,Connector用於處理連接相關額事情,並提供So

原创 JVM:四、類文件結構解析

虛擬機的語言無關性靠的是字節碼來實現的,虛擬機不和包括Java在內的任何語言綁定,只和“Class文件”綁定,Java,Jruby,Groovy程序經過各自的編譯器形成字節碼文件(.class)或叫做類文件。虛擬機處理類文件。類文件結構主

原创 自定義 之 自定義註解解析

一.註解基礎回顧 @interface,使用這個關鍵字可以說明這是一個註解。 java.lang.annotation 提供了四種元註解,可以用來註解其他的註解,像Override這些註解都會用到它們,我們自定義註解的時候也會用到,四種註

原创 自己寫一個Spring MVC

看了一個自定義的實現spring mvc的文章,自己敲了一下。原文地址:https://mp.weixin.qq.com/s/36F_fFbGKkRL20DJgX4ahg Spring mvc流程圖: 請求流程: ⑴ 用戶發送請求至前端

原创 異步消息及使用ActiveMQ發送消息

一,異步消息     像RMI和Hession/Burlap這些遠程調用機制都是同步的,當客戶端調用遠程方法時,客戶端必須等到遠程方法完成後,纔可以繼續執行,但是有些操作是不需要等待,這時就可以用異步消息。     有兩個主要概念,消息代

原创 JVM:一、運行時數據區域

概述     Java的虛擬機使Java的成爲了一種跨平臺的語言,Java的不直接與操作系統接觸,而是通過虛擬機這個中間橋樑,通過JVM與底層接觸。不同的系統有不同的JVM,但是所有的這些JVM都完美的支持Java語法,這就使得write

原创 JVM:三、垃圾回收器與內存分配簡介

目錄:                   對象已死嗎? 垃圾回收算法 垃圾收集器 內存分配與回收策略 對象已死嗎? 如何判斷對象已經死了呢,如下: 1. 引用計數算法     引用計數算法給對象添加一個引用計數器,每當一個地方引用它是時