原创 冒泡排序(Bubble Sort)

冒泡排序是一種簡單的排序算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因爲越小的元素會經由交換慢慢“浮

原创 選擇排序(Selection Sort)

表現最穩定的排序算法之一,因爲無論什麼數據進去都是O(n2)的時間複雜度,所以用到它的時候,數據規模越小越好。唯一的好處可能就是不佔用額外的內存空間了吧。理論上講,選擇排序可能也是平時排序一般人想到的最多的排序方法了吧。 選擇排序(Sel

原创 sql 的case when 使用

select t.*,case when t.is_valid=1 then t.chr_code || ' ' || t.chr_name || ' 已啓用' when t.is_valid = 2 th

原创 分頁查詢 模板SQL

1:Oracle select bb.* from (select pp.*,rownum as id from ("普通sql") pp where rownum<="傳入的當前頁數參數"*"傳入的頁面大小參數") bb where

原创 架構圖

原创 Oracle複製另外一張表結構到一張新表中

oracle複製另外一張表結構到一張新表中 create table newtable as select * from oldtable where 1=2

原创 通過 IDEA 去 Debug Jar包

代碼打成Jar之後,要如何進行Debug呢?  下面以 IDEA 來例進行說明: 首先,以以下方式來啓動 Jar包 java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,serv

原创 Spring boot項目啓動後,自動執行特定的初始化操作(比如直接打開一個頁面)

本篇文章拿springboot啓動後,自動打開1個瀏覽器訪問項目的html5頁面來演示 介紹2種方法,推薦第2種 第一種 手動給spring加入監聽任務,比較麻煩 第1步:先寫1個線程類,在springboot啓動加載完,自動執行的操作放

原创 Spring(4) Spring初始化加載流程分析

前言: Spring 源碼比較複雜,個人能力有限,在自身的理解基礎上理解框架的部分結構和部分流程。 正文: Spring框架的初始化加載流程 初始化環境—>加載配置文件—>實例化Bean—>調用Bean顯示信息 完整類圖如下,重點的已標出

原创 Spring Bean的初始化-循環依賴的解決

總結 Spring通過三級緩存加上“提前曝光”機制,配合Java的對象引用原理,比較完美地解決了某些情況下的循環依賴問題!   前言 在實際工作中,經常由於設計不佳或者各種因素,導致類之間相互依賴。這些類可能單獨使用時不會出問題,但是在使

原创 Thymeleaf事件傳參寫法

th:onclick="'javascript:editUser('+${prod.id}+');'"   ❌ 正確寫法 <input type="button" value="名字" th:onclick="'getName(\''+$

原创 併發編程 ThreadLocal

結論先寫出來: ThreadLocal  主要是用於和Thread 線程級別  進行參數綁定的類,依據Thread線程類中threadLocals的屬性進行存儲值。 而該屬性的類型是ThreadLocal類中靜態類ThreadLocalM

原创 併發編程 volatile關鍵字

 大家都知道,計算機在執行程序時,每條指令都是在CPU中執行的,而執行指令過程中,勢必涉及到數據的讀取和寫入。由於程序運行過程中的臨時數據是存放在主存(物理內存)當中的,這時就存在一個問題,由於CPU執行速度很快,而從內存讀取數據和向內存

原创 多線程情況的僞共享問題

僞共享是對稱多處理器(SMP)系統中一個著名的性能問題,在SMP中,每個處理器都有各自的本地cache。僞共享發生在如下情況下:不同處理器上的線程修改了位於同一個cache line上的數據,如圖1所示。   圖1. 僞共享發生情景:不

原创 IDEA 快速輸入 main foreach 等

今天偶然發現了IntelliJ中 創建main函數的快捷鍵,依次還有for循環,System.out.println(); 在編寫代碼的時候直接輸入psv就會看到一個psvm的提示,此時點擊tab鍵一個main方法就寫好了。 psvm 也