原创 SpringBoot利用@Validated和@Valid進行校驗參數

什麼是Validator Spring Validation驗證框架對參數的驗證機制提供了@Validated(Spring's JSR-303規範,是標準JSR-303的一個變種),javax提供了@Valid(標準JSR-303規範)

原创 dubbo @Reference 註解注入原理

問題: 被@Reference 註解的 bean,是在什麼時機注入的? 被@Reference 註解的 bean,通常是一個接口,怎麼可以被實例化呢? 答案是: @Reference 的注入時機和 @Autowired 註解是類似的,但不

原创 駝峯命名法(CamelCase)和下劃線命名法(UnderScoreCase)之間的轉換

因爲數據庫表的字段名通常是用下劃線命名法,但前端通常傳的是駝峯命名法的字符串,我要將其轉化爲下劃線命名法的字符串去數據庫表中進行查詢。 例: select * from use where user_name=.....這時就要把user

原创 RocketMQ消息消費源碼分析(一消費者的啓動、消息拉取)

消息消費方式 Consumer分爲兩種,PullConsumer和PushConsumer。從名字就可以看出一種是拉取的方式,一種是主動Push的方式。具體實現如下: PullConsumer,由用戶主動調用pull方法來獲取消息,沒有則

原创 RocketMQ消息消費源碼分析(二消息的消費)

首先回到DefaultMQPushConsumerImpl  start方法 public synchronized void start() throws MQClientException { switch(this

原创 java 實現根據對象某屬性對List中的對象元素去重

可以利用TreeSet與java8提供的stream filter對List進行去重 代碼: public class TestRemoveDup { /** * TreeSet的本質是一個"有序的,並且沒有

原创 MySQL 添加索引、唯一約束以及修改字段

添加索引 1.添加PRIMARY KEY(主鍵索引)  mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )  2.添加UNIQUE(唯一索引)  mysql>ALTER

原创 java8 List轉Map,並進行分組過濾求和等操作

定義實體類: public class Person { private String name; private Integer age; public Person() { } publi

原创 關於JDK lambda表達式與匿名內部類的等價實現卻出現了截然不同的結果原因分析

發現了一個很奇怪的現象,先上代碼: public interface A { int f(); default A cf(A other){ return new A(){ @Ov

原创 Java利用反射進行對象深拷貝與類型轉換

Java利用反射進行對象賦值與類型轉換 首先利用反射創建目標類對象,獲取當前對象以及目標類所有的成員,然後對這些屬性雙層循環遍歷比較變量名,變量名稱相等則進行賦值。 獲取成員屬性時注意點:class.getDeclaredFields()

原创 BigDecimal格式化與工具類

由於NumberFormat類的format()方法可以使用BigDecimal對象作爲其參數,可以利用BigDecimal對超出16位有效數字的貨幣值,百分值,以及一般數值進行格式化控制。 以利用BigDecimal對貨幣和百分比格式化

原创 mysql的聚簇索引與非聚簇索引

在mysql數據庫中,myisam引擎和innodb引擎使用的索引類型不同,myisam對應的是非聚簇索引,而innodb對應的是聚簇索引。 聚簇索引 所謂聚簇索引,就是指主索引文件和數據文件爲同一份文件,聚簇索引主要用在Innodb存儲

原创 centos與Windows下安裝Redis

安裝: yum install redis 使用配置文件啓動 redis,配置文件在/etc/redis.conf redis-server /etc/redis.conf & 連接客戶端 redis-cli 服務器和客戶端在 /usr/

原创 springboot mybatis druid配置多數據源

1.項目代碼結構: 2,導入基本依賴:記得需要導入mysql驅動mysql-connector-java <dependencies> <dependency> <groupId>org.springframework.bo

原创 用BigDecimal解決doule類型相減時可能存在的誤差

double類型的兩個數相減可能存在誤差,比如System.out.println(2099 - 1999.9);的結果爲99.09999999999991 可以用BigDecimal解決: public class TestDoubl