原创 MySQL如何進行慢SQL優化?

思路: 通過慢查詢日誌去尋找哪些 SQL 執行效率低 使用 explain 獲取低效率 SQL 的執行計劃 結合 SQL 與執行計劃,進行分析與優化​   引起 SQL 查詢很慢的原因與解決辦法: 1、沒有索引。解決辦法: 根據 wher

原创 使用 MQ 的缺陷有哪些?

系統可用性降低:以前只要擔心繫統的問題,現在還要考慮 MQ 掛掉的問題,MQ 掛掉,所關聯的系統都會無法提供服務。 系統複雜性變高:要考慮消息丟失、消息重複消費等問題。 一致性問題:多個 MQ 消費系統,部分成功,部分失敗,要考慮事務問題

原创 如何保證消息不被重複消費?

消息被重複消費,就是消費方多次接受到了同一條消息。根本原因就是,第一次消費完之後,消費方給 MQ 確認已消費的反饋,MQ 沒有成功接受。比如網絡原因、MQ 重啓等。 所以 MQ 是無法保證消息不被重複消費的,只能業務系統層面考慮。 不被重

原创 如何保證消息不丟失?

生產者丟失消息:如網絡傳輸中丟失消息、MQ 發生異常未成功接收消息等情況。  解決辦法:主流的 MQ 都有確認或事務機制,可以保證生產者將消息送達到 MQ。如 RabbitMQ 就有事務模式和 confirm 模式。 MQ 丟失消息:MQ

原创 MQ 有哪些使用場景?

異步處理:用戶註冊後,發送註冊郵件和註冊短信。用戶註冊完成後,提交任務到 MQ,發送模塊並行獲取 MQ 中的任務。 系統解耦:比如用註冊完成,再加一個發送微信通知。只需要新增發送微信消息模塊,從 MQ 中讀取任務,發送消息即可。無需改動註

原创 MQ 是什麼?爲什麼使用?

MQ(Message Queue)消息隊列,是 "先進先出" 的一種數據結構。   MQ 的作用:一般用來解決應用解耦,異步處理,流量削峯等問題,實現高性能,高可用,可伸縮和最終一致性架構。 應用解耦: 當 A 系統生產關鍵數據,發送數據

原创 如何保證MQ的高可用?

ActiveMQ: Master-Slave 部署方式主從熱備,方式包括通過共享存儲目錄來實現(shared filesystem Master-Slave)、通過共享數據庫來實現(shared database Master-Slave

原创 消息大量積壓怎麼解決?

消息的積壓來自於兩方面:要麼發送快了,要麼消費變慢了。 單位時間發送的消息增多,比如趕上大促或者搶購,短時間內不太可能優化消費端的代碼來提升消費性能,唯一的辦法是通過擴容消費端的實例數來提升總體的消費能力。嚴重影響 QM 甚至整個系統時,

原创 《Java編程思想(第4版)》讀書筆記

爲什麼看這本書? Java 四大名著之一,看完《Effective Java》自然想看下這本書。   書的整體情況 900 多頁,書中的內容都是 Java 編程語言中的重難點集合。讀完本書,花了兩個星期, 10 幾個小時。 書提到了這些知

原创 jquery獲取與修改元素的style屬性

//獲取 div 的高度 $("#div").css("height"); //設置 div 的高度 $("#div").css("height","400px"); 其他 style 屬性類似     【Java面試題與答案】整理推

原创 你瞭解哪些常用的 MQ?

ActiveMQ:支持萬級的吞吐量,較成熟完善;官方更新迭代較少,社區的活躍度不是很高,有消息丟失的情況。 RabbitMQ:延時低,微妙級延時,社區活躍度高,bug 修復及時,而且提供了很友善的後臺界面;用 Erlang 語言開發,只熟

原创 《Effective Java中文版 第2版》讀書筆記

爲什麼看這本書? Java 四大名著之一,Java 之父 James Gosling 推薦的書。說來慚愧,搞 Java 6 年半都沒有看過這本書。 前兩天研究 Builder 模式解決構造函數參數過多的問題,被一位大佬推薦看一下這本書,於

原创 Java常見類庫與工具及官網

Javahttps://www.oracle.com/java/technologies/ OpenJDKhttps://openjdk.java.net/ w3c(萬維網聯盟)https://www.w3.org/ apache(開源項

原创 查看 MySQL 的執行計劃與被優化後的SQL

查看 MySQL 的執行計劃與被優化後的SQL explain extended select ... show warnings;   explain partitions select 用於分區表   在 navicate 數據庫客

原创 Mysql 中 exists 和 in 的區別

最近刷到面試題:Mysql 中 exists 和 in 的區別,先說下答案。   下面將主查詢的表稱爲外表;子查詢的表稱爲內表。exists 與 in 的區別如下: 子查詢使用 exists,會先進行主查詢,將查詢到的每行數據循環帶入子查