原创 趨勢遞增分佈式ID生成方法:Snowflake

1.介紹 SnowFlake的結構如下(每部分用-分開): 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 1.第

原创 理解JSONP

1.AJAX ajax是基於XMLHttpRequest 的,是不能跨域的。 request = new XMLHttpRequest(); request.onreadystatechange = function () {

原创 配置中心:Spring Cloud Config

1.Spring Cloud Config 服務端(基於git) 1.1添加依賴 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>s

原创 Mybatis級聯查詢和緩存

1.表結構 create table t_lecture(  id int(20) not null auto_increment comment '編號',  lecture_name varchar(60) not null com

原创 CAP/BASE理論

     CAP理論告訴我們,一個分佈式系統是不可能同時滿足一致性(C:consistency)、可用性(A:Availability)和分區容錯性(P: Partition tolerance)這三個基本需求,最多隻能同時滿足其中的兩項

原创 服務治理 Spring Cloud Eureka

1.架構圖 1.ServiceProvider(服務提供者)會向EurekaServer做Register(服務註冊)、Renew(服務續約)、Cancel(服務下線)等操作。 2.EurekaServer之間會做註冊服務的

原创 Thrift和Spring集成

1.服務端通過TMultiplexedProcessor同時暴露多個服務 /** * Thrift通用服務啓動類 可以和spring集成 */ public class CommonServerDemo { private

原创 RabbitMQ三種Exchange

1.Direct Exchange     Direct Exchange是一種點對點模式。當消息發送到Direct Exchange時,如果routingkey匹配的話,消息就被投遞到對應的隊列。   注意有一個默認的direct類型

原创 客戶端負載均衡 Spring Cloud Ribbon

1.基本思路        客戶端從服務中心獲取服務提供者信息,當客戶端使用服務名調用服務時,攔截器幫你把服務名替換爲具體的服務地址,服務地址的選擇是由路由規則先定。默認是線性輪詢。 2.參數配置        主配置類:RibbonC

原创 消息驅動:Spring Cloud Stream

1.stream 配置中的含義 當我們使用默認group,和destination時默認創建名爲input 的持久化的topic類型的exchange。 隊列是一個destination前綴然後一個隨你名稱的自動刪除隊列。 現在我

原创 Spring Boot 配置文件和日誌文件放到jar之外

1.設置打包jar的時候排除文件 <resources> <resource> <directory>src/main/resources</directory> <excludes>

原创 Oracle批量插入

1.批量插入sql語法 insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE) select 8000,0,'Multi 8000',1 from dua

原创 聲明式服務調用:Spring Cloud Feign

1.使用方法    1.消費方基於spring mvc 註解自定義訪問接口,這樣相當於消費方和服務提供方各自維護一套接口。   2.基於繼承的方法,服務提供方將對外接口打成單獨的jar包提供出去,消費方依賴這個jar就可以了。缺點是服務提

原创 redis實現分佈式鎖

1.基本思想  http://doc.redisfans.com/string/set.html 有說明 如下 命令 SET resource-name anystring NX EX max-lock-time 是一種在 Redi

原创 ClassPathXmlApplicationContext 初始化流程

1.configLocations的解析 構造器代碼如下: super(parent); setConfigLocations(configLocations); if (refresh) { refresh(); } 我們先看s