原创 生成模板代碼實現Golang泛型

生成模板代碼實現Golang泛型 Golang是強類型靜態語言,暫不支持泛型。那麼如何定義通用類型的數據結構和算法呢?使用interface{}不是好的解決方案,接口需要轉換同時會丟失靜態類型的優勢。本文我們介紹模板代碼結合代碼生

原创 介紹 Golang 通道(channel)

介紹 Golang 通道(channel) 本文介紹如何使用Golang通道。通道是Go應用中鏈接協程通信的管道,協程可以往通道中推入值或從中讀取值。利用通道可以非常方便地實現高性能、高併發應用,相比與其他語言更簡單,這並不是巧合

原创 Java InputStream 轉 Byte Array 和 ByteBuffer

Java InputStream 轉 Byte Array 和 ByteBuffer 本文介紹如何實現InputStream 轉 Byte Array 和 ByteBuffer,首先使用Java原生方式,然後介紹Guava和Com

原创 介紹Elasticsearch排序上下文

介紹Elasticsearch排序上下文 使用Painless腳本對查詢文檔進行排序,一般用於實現自定義的排序規則。 1. 語法說明 params (Map, read-only) 用戶定義參數,出入作爲查詢的一部分。 doc (

原创 Elasticsearch Painless獲取當前時間

Elasticsearch Painless獲取當前時間 本文討論下Elasticsearch如何獲取當前時間,通常需要計算時間間隔時使用。日期處理Painless使用標準的Java庫,主要類有: java.time java.

原创 Spring 條件Bean配置實現

Spring 條件Bean配置實現 本文介紹Spring 4引入的一個新特性,條件實例化Bean。我們首先了解下Spring4之前的實現方式,接着學習Spring4 提供的Condition接口和 @Conditional註解。

原创 學習Elasticsearch必需瞭解的十個概念

學習Elasticsearch必需瞭解的十個概念 與學習其他數據庫或語言一樣,學習Elasticsearch首先需要掌握基本概念,理解這些基本概念會讓你的學習曲線少些波折。雖然這些概念特別適用於Elasticsearch,但是在應

原创 Elasticsearch動態映射與日期類型

Elasticsearch動態映射與日期類型 JSon沒有日期類型,但Elasticsearch能自動爲我們映射日期字段。如果結合日期字段命名約定可以幫我我們準確實現動態映射。 1. 動態映射 Elasticsearch的動態映射

原创 Golang 同步等待組(WaitGroup)

Golang 同步等待組(WaitGroup) 如果你正在學習Go的高性能併發應用開發,那麼瞭解同步等待組至關重要。本文帶你認識同步等待組並通過示例進行說明。 1. 同步等待組(WaitGroup) 讓我們直入主題,說明是同步等待

原创 介紹BoltDB:Golang高性能持久化解決方案

介紹BoltDB:Golang高性能持久化解決方案 1. 介紹Bolt BoltDB是純Go語言實現的持久化解決方案,保存數據至內存映射文件。稱之爲持久化解決方案不是數據庫,因爲數據庫這個詞有很多額外功能是bolt所不具備的。正是

原创 使用Jackson和JSON Pointer查詢解析任何JSON節點

使用Jackson和JSON Pointer查詢解析任何JSON節點 JSON Pointer是字符串表達式,用於標識JSON文檔特定節點。RFC 6901規範有定義,用於查詢複雜Json文檔結構。 1.示例Json文檔 {

原创 Redis事務命令介紹

Redis事務命令介紹 Redis基礎命令在數據管理中扮演重要角色,Redis命令被設計爲原子的,即Redis事務使用全由或全無命題,即一組命令要麼都執行要麼都不執行,一旦執行不會受其他事物干擾。因此瞭解事務的基本命令是簡化工作量

原创 Golang現代命令行應用框架Cobra

Golang現代命令行應用框架Cobra 本文介紹強大的命令行應用框架Cobra,讓我們專注業務快速搭建強大的命令行應用。 1. 認識Cobra Cobra是非常便利和流行的Golang包,用於開發強大命令行應用,包括命令、子命令

原创 介紹Golang互斥鎖

介紹Golang互斥鎖 使用Go實現高度並行程序並不妨礙你實現具有競爭條件特性的應用。競爭條件會引起應用出現不期望的問題,且很難調試和修復。因此我們需要使用Go實現在安全方式下實現並行應用,並且不影響性能,這就是互斥鎖要發揮的作用

原创 介紹Golang 協程實現並行應用

介紹Golang 協程實現並行應用 Go是一種令人難以置信的高性能語言。它擁有大量的優秀特性,可以讓你構建出速度驚人的應用程序。通過提供這些goroutine(協程)和channel(通道)機制使得構建並行程序相當簡單。 使用協程