原创 MongoDB保存文檔的小“坑”

什麼“坑”?   使用MongoTemplate對文檔進行增改操作時,稍不注意就會造成數據丟失,究其原因在於對增改操作理解不到位,特定場景下沒有理解save操作含義。 場景   假設文檔共有10個字段,保存文檔時保存10個字段,更

原创 跨站點請求僞造(CSRF)

是什麼?   CSRF攻擊指誘使用戶訪問僞造的頁面,然後以該用戶身份在第三方站點執行一次操作,CSRF攻擊是利用用戶身份操作用戶賬戶的一種攻擊方式。 怎麼辦? 驗證碼:CSRF攻擊的過程,往往是在用戶不知情的情況下構造了網絡請求。

原创 XSS跨站腳本攻擊

是什麼?   XSS攻擊通常指通過“HTML”等程序篡改網頁插入惡意代碼,從而在用戶瀏覽網頁時,控制用戶瀏覽器的一種攻擊。 三種類型 反射型XSS(非持久型XSS)   把用戶輸入的數據“反射”給瀏覽器,攻擊成功需要具備兩個條件:

原创 SpringBoot實現Swagger接口響應信息自定義(二)

  上一篇SpringBoot實現Swagger接口響應信息自定義(一)講到了實現Swagger接口響應信息自定義的初版解決方案,本篇講述終版解決方案。 場景   接口相關信息如路徑、參數等數據可能來自枚舉、模板文檔、數據庫等。

原创 SpringBoot實現Swagger接口響應信息自定義(三)

  新需求的解決方案與原有思路不同,具體見下文 新的需求   我們想要對自定義的接口信息進行分組,可以進行權限控制、分組查詢等操作,僅僅靠上一篇SpringBoot實現Swagger接口響應信息自定義(二)思路是無法實現了,如何解

原创 SpringBoot實現Swagger接口響應信息自定義(一)

  swagger提供了一套完整的接口文檔解決方案,只需在pom文件中加入swagger相關的包並簡單配置一下即可得到一份完整的接口文檔,想要更詳細規範的信息還可在Controller類中加入類似@ApiOperation註解,諸

原创 SpringMVC接收Date類型的數據

接收形式   SpringMVC接收日期類型的數據有兩種形式,一種是直接接收日期類型的參數,一種是在模型中接收。 第一種:直接接收日期類型的參數 如果參數直接寫 dateMapping(Date test)會拋異常指示無法轉換,

原创 RabbitMQ多消費者消費同一批數據

  最近在使用RabbitMQ作消息轉發,供消費者使用,遇到了多消費者消費同一批數據的問題。 場景   1.多個消費者消費同一批數據;   2.每條數據每個消費者都要消費 解決方案:採用direct模式,消費者創建隊列形式   生

原创 Git 的 revert 命令撤銷多次提交

git revert 命令的含義 git revert commitId 表示撤銷某個提交,並不是說撤銷至某個提交。 舉個例子: 新增1.txt文件進行第一次提交,新增2.txt文件進行第二次提交; 此時使用 git log 命

原创 裝飾模式

介紹   GoF 23種設計模式之一。 定義   在不必改變原類文件和使用繼承的情況下,動態地擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。 舉例 手機抽象接口 public interface Pho

原创 適配器模式

介紹   GoF 23種設計模式之一。 定義   將一個類的接口轉換成客戶希望的另外一個接口,使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。 舉例 適配接口 interface Target { void reque

原创 觀察者模式

介紹   GoF 23種設計模式之一。 定義   定義對象間一種一對多的依賴關係,使得當每一個對象改變狀態,則所有依賴於它的對象都會得到通知並自動更新。 舉例 觀察者接口 interface Observer { public vo

原创 策略模式

介紹   GoF 23種設計模式之一。 定義   定義一組算法,將每個算法都封裝起來,並且使他們之間可以互換。 舉例 策略接口 public interface IStrategy { public void doSomething

原创 模板方法模式

介紹   GoF 23種設計模式之一。 定義   定義一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變算法的結構即可重定義該算法中的某些特定步驟。 舉例 排序抽象類 public abstract class Abs

原创 單例模式

介紹   GoF 23種設計模式之一。 定義   保證在內存中只有一個對象,並提供一個全局訪問點。 舉例 單例類 public class Singleton { // 懶漢式 private Singleton() {