原创 jvm-sandbox分享

引子 相信大家都遇到過這種場景,線上出故障了,但是關鍵代碼裏面忘記打日誌了,導致無法復現和準確定位問題。這時候可能需要重寫加上日誌,部署到服務器,但這第一耗時間,第二可能破壞現場,比如可能是線程池的問題呢?所以如果可以不重啓服務器

原创 手動實現線程池

通過手寫線程池,理解了以下問題: 1.當任務堆滿阻塞隊列後,線程池會new新的線程來處理新的任務,直到線程數量達到最大值。這些新new出來的線程什麼時候銷燬呢? 答:new出新線程後,這些線程同核心線程一樣,處理阻塞隊列裏面的任務

原创 快捷工具

idea: 還原 ctrl+z – >crtl + shift +z 自動生成get,set方法等 control + enter 代碼上移

原创 Spring Restful風格

一、什麼是Restful風格 REST是REpresentational State Transfer的縮寫(一般中文翻譯爲表述性狀態轉移),REST 是一種體系結構,而 HTTP 是一種包含了 REST 架構屬性的協議,爲了便於

原创 SimpleDateFormat的時區問題

Date data = new Date(); //2019-12-17 11:49:35 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH

原创 Mac下 nginx安裝使用

一、安裝Nginx使用brew命令簡單方便: 常用指令如下: brew 搜索軟件 brew search nginx brew 安裝軟件 brew install nginx brew 卸載軟件 brew uninstall ng

原创 自己實現字節碼增強

涉及技術: JVMTI ,javaagent,Attach API, Instrument ,Javassist JVMTI: JVM TI(JVM TOOL INTERFACE,JVM 工具接口)是 JVM 提供的一套對

原创 新電腦Java環境配置

MySQL配置: mac: https://juejin.im/post/5cc2a52ce51d456e7079f27f#heading-0 centos: http://www.05bk.com/517.html 1.Can’

原创 BTrace實現字節碼增強

下載BTrace,配置BTrace環境 引入pom依賴 <dependency> <groupId>com.sun.tools.btrace</groupId> <artifactId>btrace-age

原创 數據庫的一些知識點記錄

爲什麼大公司不推薦用連表查詢而使用單表查詢 第一:單機數據庫計算資源很貴,數據庫同時要服務寫和讀,都需要消耗CPU,爲了能讓數據庫的吞吐變得更高,而業務又不在乎那幾百微妙到毫秒級的延時差距,業務會把更多計算放到service層做

原创 MySQL之B樹和B+樹

首先拋個問題,MySQL的索引爲何用樹而不是其他數據結構如hash,hash的讀和寫都是O(1),而樹的話查詢和插入都是O(log(n))? 答:因爲索引設計成樹,是和SQL需求相關的,如果單獨只查詢某條數據,自然是hash算法快

原创 MySQL之索引分享

索引本質 官方對索引的定義爲:索引(Index)是幫助MySQL高效獲取數據的數據結構 本質:索引是數據結構 Innodb B-Tree 索引 B+樹成因: 我們知道,每一種數據結構的出現都是爲了解決特定的問題,那麼B+樹的出現

原创 發佈訂閱模式和觀察者模式區別

一 觀察者模式 觀察者模式定義了對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都將得到通知,並自動更新。觀察者模式屬於行爲型模式,行爲型模式關注的是對象之間的通訊,觀察者模式就是觀察者和被觀察者之間

原创 jvm sandbox實現字節碼增強

1.安裝jvm-sandbox 2.引入依賴 <parent> <groupId>com.alibaba.jvm.sandbox</groupId> <artifactId>sandbox-module-start

原创 valatile原理

一 volatile定義 官方定義: java語言規範第三版中對volatile的定義如下:java編程語言允許線程訪問共享變量,爲了確保共享變量能被準確和一致的更新,線程應該確保通過排它鎖單獨獲得這個變量。java語言提供了vo