原创 怎麼解決跨域問題(cors、nginx、jsonp)

什麼是跨域問題 當前頁面地址與請求URL的協議、域名、端口有任意不同: 網絡協議不同,如http協議訪問https協議。 端口不同,如80端口訪問8080端口。 域名不同,如qianduanblog.com訪問baidu.com

原创 JAVA多線程(線程池、ThreadLocal、CountDownLatch)

目錄 1、線程池 瞭解線程池使用的幾種隊列(線程池的三種隊列區別) 常用的四種創建方法 ThreadPoolExecutor拒絕策略 ThreadPoolExecutor擴展 2、ThreadLocal 3、CountDownLatch計

原创 Redis緩存雪崩、緩存穿透、緩存一致性問題

一、緩存雪崩: 1、緩存失效時間相同導致大量緩存同時失效 緩存時間加隨機因子,不同商品設置不同失效時間 2、緩存系統故障 事前:增加緩存系統高可用方案設計,避免出現系統性故障(主從、集羣) 事故中: 增加多級緩存,在單一緩存故障時,仍

原创 maven處理循環依賴

第一步: 查看依賴。idea中點擊analyze module dependencies,紅色爲衝突,若依賴關係很簡單(比如只有某個類有問題),則直接修改代碼 第二步: 若依賴複雜(模​塊​C依​賴​於​模​塊​B,模​塊​B依​賴​於

原创 mybatis淺析

 SqlSession是Mybatis最重要的構建之一,提供select/insert/update/delete方法,SqlSession的運行主要是依靠Executor執行器調用(調度)StatementHandler、parame

原创 《架構探險從零開始寫javaweb》總結

導讀: IOC(實現加載指定路徑的類,實現加載指定註解的類,放在Map<Class<?>, Object>中) AOP (先將目標類的所有的切面類找出來,鏈式的將切面代理類作爲目標類的增強返回新的bean,替換原來的bean到map中。)

原创 實現一個線程安全並且可以設置過期時間的LRU(LinkedHashMap原理)

目錄 1、HashMap原理 2、LinkedHashMap實現LRU原理(accessOrder = true) 2.1 數據結構 2.2 put方法 2.3 get方法 2.4 remove方法 3、普通LRU代碼實現 4、實現一個線

原创 spring mvc 國際化配置

要使用spring mvc配置國際化,首先用MessageSource來管理國際資源文件: <!-- 國際化資源文件 messageSource配置的是國際化資源文件的路徑, classpath:messages指的是classpa

原创 spring事務的傳播規則

 一、事務的特性 原子性:事務包含的所有操作要麼全部成功要麼全部失敗 一致性:使數據庫從一個一致性狀態變換到另一個一致性狀態,比如A有100元 B有0元,A轉給B50元,結果爲A50元B50元 隔離性:多個併發事務之間要相互隔離 持久性:

原创 solr淺析

全文索引原理: 可以理解爲一本詞典。現在有100個商品名稱,首先用分詞器處理(拆分、去標點、去無意義的詞等)得到詞元,然後創建索引文件。進行檢索時,在索引表中找關鍵詞,如果有多個關鍵詞,將查找結果合併。 使用: 創建spring-s

原创 spring mvc踩坑 - jackson解析框架返回json多一層雙引號

問題: 兩套業務邏輯代碼相同,但返回的數據不同,導致相同的前端代碼用eval解析時出錯。其中一個多了一層雙引號,分別爲 "{\"aaa\":1}" "\"{\"aaa\":1}\"" //服務端代碼 @RequestMapping

原创 淺入理解jvm

目錄 自動內存管理機制 對象的內存佈局 垃圾回收機制 可達性分析 垃圾收集器 內存分配與回收策略  虛擬機性能監控工具 類加載 new一個對象發生了什麼 棧幀 類加載器 常量池 變量和線程安全 java內存模型 volatile 線程安全

原创 2020年5月社招java面試題總結

題目來源:阿里、美團、滴滴、快手、小米、拼多多、58同城、百度 一、集合框架 HashMap。 HashMap的長度爲什麼是2的n次方、底層數據結構、線程安全問題出在哪、擴容機制、爲什麼節點是8才轉紅黑樹 ConcurrentHashMa

原创 《Netty、Redis、Zookeeper高併發實戰》讀書筆記

使用java NIO Buffer類的基本步驟 使用創建子類實例對象的allocate()方法,創建一個Buffer類的實例對象 調用put方法,將數據寫入緩衝區 寫入完成後,調用flip()方法,將緩衝區轉換爲讀模式 調用get方法,從

原创 實現一個線程安全的阻塞隊列

 1、使用synchronized實現。由於synchronized是同一把鎖,所以使用notify()可能會喚醒非目標線程,notifyAll()喚醒全部線程則會帶來大量的 CPU 上下文切換和鎖競爭 public class Arr