原创 Feign的代碼和原理總結
Feign的源碼實現流程 1、首先啓動類上通過@EnableFeignClients 註解,開啓 FeignClient的功能。 2、在程序啓動時開啓包的掃描。把帶有@ FeignClient 的註解的類信息注入IoC 容器中。
原创 RecursiveTask的使用
package com.example.sina.thread; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPo
原创 JVM中工具jstat的使用
jstat命令命令格式: jstat [Options] vmid [interval] [count] 命令參數說明: Options,一般使用 -gcutil 或 -gc 查看gc 情況 pid,當前運行的 java進程號
原创 Java中new對象的執行流程
類加載過程(第一次使用該類) Java是使用 雙親委派模型 來進行類的加載的,所以在描述類加載過程前,我們先看一下它的工作過程: 雙親委託模型的工作過程是: 如果一個類加載器(ClassLoader)收到了類加載的請求,它首
原创 Edgex Foundry導出數據
1、啓動export-distro工程監聽接收消息 2、ZeroMQEventSubscriber.java接收消息 3、轉到spring integration 開始處理消息 4、分發到 “export-inboud-events”
原创 Edgex Foundry 簡介
EdgeX Foundry 是由Linux基金會主持的供應商中立的一個開源項目,爲物聯網邊緣計算構建一個通用的開放框架。該項目的核心是一個可互操作性框架,該框架託管在完全與硬件和操作系統無關的參考軟件平臺中,以實現即插即用組件生態系統,
原创 Kafka中的ACK機制
Kafka集羣的節點爲Broker,Broker中存取數據的基本單位爲partition,leader(紅色)和多個replica(藍色)分別爲指定Topic下的消息載體,生產者根據消息的topic和key值,確定了消息要發往哪個p
原创 Netty的簡單應用
Netty客戶端 package com.example.demo.netty; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture;
原创 CompletableFuture的簡單應用
package com.zhao.sian.hah; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Completable
原创 Edgex服務劃分
微服務的劃分 註冊中心 Consul或者Nacos 微服務列表 總父工程 CornerStoneEdge 公共模塊 CornerStoneEdge–Common
原创 JVM中工具jmap的使用
jmap <Options> pid 參數如下: -heap:打印jvm heap的情況 -histo:打印jvm heap的直方圖。其輸出信息包括類名,對象數量,對象佔用大小。 -histo:live :只打印存活對象
原创 Spring Boot的啓動流程
1、 如果我們使用的是SpringApplication的靜態run方法,在SpringApplication執行初始化 1.判斷webApplicationType類型 REACTIVE SERVLET NONE
原创 Guava RateLimiter 使用
RateLimiter令牌桶算法。令牌桶算法的思想是以固定的速率生成令牌,在請求之前都需要從令牌桶裏獲取足令牌。當令牌數量不足的時候,請求將被阻塞等待或者返回。RateLimiter常用於限制訪問資源的速率。 配置文件 ratelim
原创 觀察設模式
定義被觀察者接口 package com.zhao.sina.design.patterns.observer; /*** * 抽象被觀察者接口 * 聲明瞭添加、刪除、通知觀察者方法 * */ public inte
原创 Cpu佔用率高排查
1、top命令,然後按shift+p按照CPU排序,找到佔用CPU過高的進程的pid 2、ps -mp pid -o THREAD,tid,time | sort -rn 獲取線程信息,並找到佔用CPU高的線程 3、printf "