原创 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 "