原创 Spring IOC循環依賴問題
A對象引用B對象 B對象引用A對象 spring中採用三級緩存來解決: private final Map<String, ObjectFactory<?>> singletonFactories = new HashMap(1
原创 mysql性能優化之sql優化
1、SQL優化 (1)show status 命令 mysql> show status like'Com_%'; mysql> SHOW STATUS LIKE 'THREADS _%'; 當然除了上述操作之外,還存在
原创 mysql性能優化之索引優化
在MySQL數據庫中索引的優化是最重要的優化手段之一,能夠解決生產過程中的大部分SQL性能問題。在對MySQL數據庫優化的時候,對系統進行基於索引的梳理,這個動作是最有效的操作。創建唯一性索引,加快數據的檢索速度。通過索引訪問表
原创 二叉樹、二叉搜索樹、平衡二叉樹、紅黑樹、B樹、B+樹
原文鏈接:http://www.sohu.com/a/280609547_818692 說呂老師給小史講完人工智能的一些知識後,他們一起回家吃小史姐姐做的飯去了。 【飯後】 呂老師:面試
原创 冒泡排序、選擇排序、快速排序、插入排序、希爾排序、歸併排序、基數排序以及堆排序
1、冒泡排序 - 依次比較相鄰兩元素,若前一元素大於後一元素則交換之,直至最後一個元素即爲最大;然後重新從首元素開始重複同樣的操作,直至倒數第二個元素即爲次大元素;依次類推。如同水中的氣泡,依次將最大或最小元素氣泡浮出水面。 實現代碼就是
原创 StringUtils裏的isEmpty方法和isBlank方法的區別
1.isEmpty 沒有忽略空格參數,是以是否爲空和是否存在爲判斷依據。 2.isBlank 是在 isEmpty 的基礎上進行了爲空(字符串都爲空格、製表符、tab 的情況)的判斷。
原创 代理模式之靜態代理和動態代理
靜態代理 靜態代理是由程序員創建或工具生成代理類的源碼,再編譯代理類。 所謂靜態也就是在程序運行前就已經存在代理類的字節碼文件,代理類和委託類的關係在運行前就確定了。 (1)基於接口實現方式 (2)接口繼承方式實現 public c
原创 Java 208道面試題及部分答案
原文鏈接:https://www.cnblogs.com/chen1005/p/10481102.html 一、Java 基礎 1.JDK 和 JRE 有什麼區別? 答:JRE是java運行時環
原创 多線程鎖的升級和無鎖、偏向鎖、輕量級鎖、重量級鎖
隨着競爭情況逐漸升級,鎖可以升級但不能降級。 鎖一共四種狀態,低-->高 無鎖狀態、偏向鎖狀態、輕量級鎖狀態、重量級鎖狀態。 偏向鎖: 優點:加鎖和解鎖不需要額外的消耗,和執行非同步方法相逼僅存在納秒級的差距。 缺點:如果線程間存在鎖競爭
原创 string使用等號比較的問題
代碼: String s3= new StringBuilder("ni").append("hao").toString(); System.out.println(s3.intern() == s3)
原创 錦囊
具體如下 一、Java 基礎 1. JDK 和 JRE 有什麼區別? 2. == 和 equals 的區別是什麼? 3. 兩個對象的 hashCode()相同,則 equals()也一定爲 true,對嗎? 4. final 在
原创 單例 雙重檢查鎖定的重排序問題
雙重檢查鎖定代碼: //雙重檢查鎖定 public class DoubleCheckedLocking { private static Instance instance; public static Instan
原创 堆外內存
在Java中創建的對象都處於堆內內存(heap)中,堆內內存是由JVM所管控的Java進程內存,並且它們遵循JVM的內存管理機制,JVM會採用垃圾回收機制統一管理堆內存。與之相對的是堆外內存,存在於JVM管控之外的內存區域,Java中對堆
原创 volatile 關鍵字和多處理器總線嗅探
volatile變量修飾的共享變量在進行寫操作的時候回多出一行彙編: 0x01a3de1d:movb $0×0,0×1104800(%esi);0x01a3de24:lock addl $0×0,(%esp); Lock前綴的指令在多核處
原创 ConcurrentLinkedQueue常用方法:
ConcurrentLinkedQueue常用方法: 增: add :底層調用offer offer : 將指定元素插入此隊列的尾部 刪: poll 是從隊列取出元素並且刪除該元素 remove 如果此元素不存在,則返回 false,移除