原创 記錄一次 MongoDB aggregate的性能優化經歷

在一臺配置爲2核4G的阿里雲服務器上,硬盤是普通的雲盤(即SATA盤),除mongoDB外,運行了若干個java應用,單節點mysql和redis,mongo的實際可用內存在1.5G左右。單表數據200萬條的時候,一個聚合函數響應時間約爲6

原创 如何在交易數據中查詢各個版本交易量前三的股票?(MySQL分組排名)

SQL查詢中,根據列A分組,分組後針對列B執行統計函數,是一件常用也很重要功能,如select T.a, max(T.b) from T order by T.a asc, T.b desc group by T.aselect T.a

原创 長整型Long返回到前端,js出現精度丟失怎麼辦

前端後接口對接時,如果後臺的id或者其他字段使用了長整型Long,就很容易出現js丟失精度問題。用接口工具調用時,往往id返回都是對的,但是一到頁面上,js就後綴000。前端說返回的值有問題,F12看看!後端說沒問題,Postman看看!這

原创 事務的隔離級別和傳播級別有何區別

事務的隔離級別 事務的隔離級別源於事務ACID的I(Isolation),即多個事務同時操作同一實體時,其中一個事務的讀寫操作對其他事務及其自身的可見性影響程度。具體可以分爲如下幾個等級: 讀未提交某個事務未提交前,其修改的數據對其他事

原创 SpringBoot項目中的配置文件如何動態刷新

SpringBoot 項目通常將一些重要的參數配置在application.yml或者application.properites中,譬如外部服務連接、數據庫地址及賬號信息、某些業務變量。隨着業務的開展,實現一個完整的業務流程通常需要開發並

原创 http請求header相關的幾個常見問題

http協議可能是目前web遠程調用領域最常用的協議,一如之前的soap協議。作爲輕量級可靠傳輸協議,基於http協議的服務幾乎成了restful的代名詞,今天列舉幾個使用過程中http 相關的問題。 跨域大家也最常遇到,解決辦法也有很多

原创 如何通過Zipkin或SKYwalking實現鏈路追蹤

前言 微服務架構將原先業務鏈條中的各個環節(節點或過程),如用戶、產品、訂單、支付拆分實現成獨立的服務運行,一定程度上提高了系統的容錯能力,例如支付服務失敗時,用戶依然可以通過產品及訂單服務,達到查看訂單和瀏覽產品的目的。隨着微服務應用開發

原创 Spring Cloud 微服務公共配置處理

Spring Cloud Config Server提供了微服務獲取配置的功能,這些配置文件(application.yml或者application.properties)通常維護在git或者數據庫中,而且支持通過RefreshScope

原创 Apache-common StringUtils工具類 字符分割方法split

最近開發微信小程序,openId的處理涉及一個自定義後綴的分割,所以想當然的使用了apache-common的StringUtils工具類的split方法: org.apache.commons.lang3.StringUtils.spli

原创 Mongo基於一張表的數據更新另一張表

業務場景中,經常有這樣一個需求,就是根據A表中的信息,更新B表的某個字段,在關係型數據庫中,這個需求很簡單,一條SQL搞定: update B set B.f1=A.a1 where xxxx 但在mongo數據庫中,一條SQL就解決不了。

原创 MongoDB學習系列

用mongodb已經有3年多時間,但是一直沒有系統的學習過,更多時候是在問題中摸索,隨着最近遇到的問題越來越多,回過頭系統的瞭解下這個數據庫,就顯得格外有必要了。本稿將從如下幾個方面介紹,當然文中內參閱了很多mongodb用戶朋友的經驗,僅

原创 阿里雲環境遷移記錄 - MYSQL高可用搭建

MYSQL高可用方案主要分爲兩大類,一類是前置管理,一類是後置管理。前置管理的思想是利用各種前置管理工具,動態切換或者分發請求到不同的實例並切換master,如keepalived、MHA、packmaker+Corosync、MySQLP

原创 URL和URI的區別

URI,統一資源描述符,範圍更廣,可以是URL(統一資源定位符),也可以是URN(統一資源名稱),還是可以URL+URN。 所以URL是一種可以訪問到具體資源的URI,但是URI不一定可以定位資源。 參考文章: https://www.c

原创 Spring Data Redis 序列化

在Spring中使用的Redis緩存數據,可以通過RedisTemplate直接操作,也可以通過@Cacheable註解實現緩存(可參照另一篇文章的介紹:Spring Cachable Key的定義及應用)。不論使用何種方式,最終都要將ke

原创 Tomcat遠程調試

開發調試過程中,有些場景無法在本地完成,譬如調試微信開發相關功能。由於微信要求回調地址必須是認證過的域名,本地顯然無法滿足這個要求,所以遠程調試就可以派上用場。 Tomcat遠程調試的配置主要有兩種方式,一種基於JAVA_OPTS,另一種則