原创 購物流程接口設計+案例

購物流程接口設計 爲什麼要設計這個接口 要實現代碼校驗和邏輯抽離 數據出錯修復,打個比方說,用戶支付訂單後,但是訂單數據還是未支付。 異步執行修復數據或者任務,不影響業務功能,加速請求校驗。 打個比方說:服務商取消訂單,需要發

原创 java 內存模型與線程

java 內存模型與線程  一 Java 內存模型   1 主內存和工作內存之間的交互 2對於 volatile 型變量的特殊規則     關鍵字 volatile 是 Java 虛擬機提供的最輕量級的同步機制。 一個變量被定義

原创 java程序的運行過程

一java程序在的執行過程 程序運行前 當程序準備執行時,由 JVM 向操作系統請求一定的內存空間,稱爲初始內存空間。程序執行過程中所需的內存都由 Java 虛擬機從這片內存空間中劃分。這樣做的一個重要優點是保證了程序的平臺無關性。 程

原创 JDK7和JDK8的JVM內存模型的總結

一、方法區變化 1.8同1.7比,最大的差別就是: 元數據區取代了永久代,就是JDK8沒有了PermSize相關的參數配置了。 元空間的本質和永久代類似,都是對JVM規範中方法區的實現。不過元空間與永久代之間最大的區別在於:元數據空間並

原创 JVM啓動流程

 一 JVM啓動流程圖 二 Java程序執行的流程圖 三jvm.cfg 、jvm.dll的位置

原创 LAST_INSERT_ID使用造成訂單串單問題

訂單串單問題 代碼 String sql ="insert into ....."; this.update(sql); List<Long> list = this.queryBySql(Long.class, "select

原创 jvm字節碼指令

字節碼簡介 Java字節碼指令由一個字節長度的,代表某種特定操作含義的數字(操作碼)以及其後的零至多個代表此操作所需參數(操作數)。 此外字節碼指令是面向操作數棧的,這裏操作數棧在功能上對應實體機的寄存器但是結構上有所區別。 字節碼與數據

原创 JVM運行時棧幀結構

JVM運行時棧幀結構 1棧幀組成部分 局部變量表 操作數棧 動態連接 方法返回地址和一些額外的附加信息。 在編譯代碼的時候,棧幀中需要多大的局部變量表,多深的操作數棧都已經完全確定了,並且寫入到了方法表的Code屬性中,因此一個棧幀

原创 JAVA方法調用中的解析與分派

JAVA方法調用中的解析與分派 方法調用 方法調用並不等於方法的執行 方法調用階段唯一的任務就是確定被調用方法的版本(考慮多態情況)。 解析 所有的方法調用中的目標方法在Class文件中都是一個常量池中的符號引用,在類加載的解析階段,

原创 類加載

一類加載機制 將class文件字節碼文件加載到內存中, 並將這些靜態數據轉換成方法區中的運行時數據結構,在堆(並不一定在堆中,HotSpot在方法區中)中生成一個代表這個類的java.lang.Class 對象,作爲方法區類數據的訪問入口

原创 class文件解析

測試的代碼  public class Hello{ private int test; public int test(){ return test; } } 對應的二進制代碼 CA FE

原创 API安全接口安全設計

如何保證外網開放接口的安全性。 使用加簽名方式,防止數據篡改 信息加密與密鑰管理 搭建OAuth2.0認證授權 使用令牌方式 搭建網關實現黑名單和白名單 一令牌方式搭建搭建API開放平臺 方案設計: 1第三方機構申請一個appId,通

原创 忘記密碼漏洞+上傳文件漏洞

忘記密碼漏洞 使用抓包工具分析Http請求,在忘記密碼找回時,需要發送一套短信驗證碼,如果驗證碼數字比較短的話(4位),使用暴力破解方式攻擊破。 防禦手段: 1忘記密碼驗證碼最好在6-8位,數字加字母 2一旦頻繁調用接口驗證時,應該使用圖

原创 xss攻擊+SQL注入攻擊+Http請求防盜鏈+CSRF攻擊+API接口冪等性設計

1xss攻擊 XSS攻擊使用Javascript腳本注入進行攻擊  打個比方說,寫評論的時候,內容是 <script>window.location.href='http://www.1111.com';</script> 那麼每次刷新評

原创 springboot+ElasticSearch

開源ElasticSearch 目前全文搜索引擎的首選。 可以快速的存儲、搜索和分析海量數據。 是一個分佈式搜索服務,提供Restful API,底層基於Lucene,採用多shard(分片)的方式保證數據安全,並且提供自動reshard