原创 Java8 內存結構

java8內存結構圖   一、虛擬機內存與本地內存的區別 Java虛擬機在執行的時候會把管理的內存分配成不同的區域,這些區域被稱爲虛擬機內存,同時,對於虛擬機沒有直接管理的物理內存,也有一定的利用,這些被利用卻不在虛擬機內存數據區的內存,

原创 Java 常用的幾個Json庫性能對比

本篇通過JMH來測試一下Java中幾種常見的JSON解析庫的性能。每次都在網上看到別人說什麼某某庫性能是如何如何的好,碾壓其他的庫。但是百聞不如一見,只有自己親手測試過的纔是最值得相信的。 JSON不管是在Web開發還是服務器開發中是相當常

原创 二十一種Jenkins替代方案

當談到CI/CD工具時,我們都會提到Jenkins。它是構建和測試項目的超級有效工具,從而使持續不斷的輕鬆集成成爲可能。 但是,Jenkins並不是唯一的CI/CD工具。我們還有其他很多選擇!   1、GitLab GitLab 它是一個

原创 Java 序列化,反序列化

遇到這個 Java Serializable 序列化這個接口,我們可能會有如下的問題 什麼叫序列化和反序列化 作用。爲啥要實現這個 Serializable 接口,也就是爲啥要序列化 serialVersionUID 這個的值到底是在怎麼

原创 十種常見安全漏洞淺析

我們日常開發中,很多小夥伴容易忽視安全漏洞問題,認爲只要正常實現業務邏輯就可以了。其實,安全性纔是最重要的。  SQL 注入 JSON反序列化漏洞——如Fastjson安全漏洞 XSS 攻擊 CSRF 攻擊 文件上傳下載漏洞  敏感數據泄

原创 Nginx 原理

Nginx 以其高性能,穩定性,豐富的功能,簡單的配置和低資源消耗而聞名。本文從底層原理分析 Nginx 爲什麼這麼快!   Nginx 的進程模型 Nginx 服務器,正常運行過程中: 多進程:一個 Master 進程、多個 Work

原创 MySQL百萬數據,你如何用分頁來查詢數據

在開發過程中我們經常會使用分頁,核心技術是使用limit進行數據的讀取,在使用limit進行分頁的測試過程中,得到以下數據: select * from news order by id desc limit 0,10 耗時0.003

原创 Java8 中的 StringJoiner

爲什麼會新增這樣一個string輔助類? 原有的stringbuilder太死板,不支持分割,如果想讓最終的字符串以逗號隔開,需要這樣寫: StringBuilder sb = new StringBuilder(); IntStre

原创 Java中的深淺拷貝問題你清楚嗎?

一、前言 拷貝這個詞想必大家都很熟悉,在工作中經常需要拷貝一份文件作爲副本。拷貝的好處也很明顯,相較於新建來說,可以節省很大的工作量。在Java中,同樣存在拷貝這個概念,拷貝的意義也是可以節省創建對象的開銷。 Object類中有一個方法cl

原创 Java反射到底慢在哪?

有朋友在我前兩天寫的一篇文章 深入淺出反射底下留言,問反射具體是怎麼影響性能的?這引起了我的反思。是啊,在闡述某個觀點時確實有必要說明原因,並且證明這個觀點是對的,雖然反射影響性能人盡皆知,我曾經也真的研究過反射是否存在性能問題,

原创 爲什麼強烈建議你不要做聯表查詢?

前言 一直想要聊一聊關於開發中更建議使用單表查詢+代碼層組裝 or 聯表查詢 的問題,在開發中每個同學的開發中有各自的習慣,筆者在公司也和一些同事關於這方面有一些探討。 關於本文,更像是一些個人的看法,想到什麼說什麼,一定有不同的意見,歡

原创 我想說:mysql 的 join 真的很弱

一、 問題提出: 《阿里巴巴JAVA開發手冊》裏面寫超過三張表禁止join,這是爲什麼?   二、問題分析: 對這個結論,你是否有懷疑呢?也不知道是哪位先哲說的不要人云亦云,今天我設計sql,來驗證這個結論。(實驗沒有從代碼角度分析,目前達

原创 爲什麼阿里巴巴禁止使用Apache Beanutils進行屬性的copy?

在日常開發中,我們經常需要給對象進行賦值,通常會調用其set/get方法,有些時候,如果我們要轉換的兩個對象之間屬性大致相同,會考慮使用屬性拷貝工具進行。 如我們經常在代碼中會對一個數據結構封裝成DO、SDO、DTO、VO等,而這些Bean

原创 再見,MySQL!性能被 MariaDB 吊打

MySQL的發展史 MySQL的歷史可以追溯到1979年,它的創始人叫作Michael Widenius,他在開發一個報表工具的時候,設計了一套API,後來他的客戶要求他的API支持sql語句,他直接藉助於mSQL(當時比較牛)的代碼,將

原创 Spring Security使用詳解6(自定義登錄頁、接口、結果)

在之前的所有樣例中,登錄表單一直都是使用 Spring Security 提供的默認登錄頁,登錄成功後也是默認的頁面跳轉。有時我們想要使用自定義的登錄頁,或者在前後端分離的開發方式中,前後端的數據交互通過 JSON 進行,這時登錄成功後就不