原创 2020年字節跳動面試題

字節跳動一面面試題: 自我介紹 聊聊項目,時間大概15種左右,面試官會根據項目的一些設計點來提問,提前做好準備,別自己坑了自己 分佈式鎖是鎖住一部分還是整個系統,既然是鎖住整個,爲什麼不用消息隊列? 詳細講下怎麼用 mq 實現的最終一致性

原创 redis集羣使用算法:一致性哈希算法原理

一致性Hash算法背景   一致性哈希算法在1997年由麻省理工學院的Karger等人在解決分佈式Cache中提出的,設計目標是爲了解決因特網中的熱點(Hot spot)問題,初衷和CARP十分類似。一致性哈希修正了CARP使用的簡單哈希

原创 HashMap 死循定位以及JDK8對它的優化

HashMap 是非線程安全的,在多線程處理場景下,嚴禁使用。多線程要用ConcurrentHashMap。 大家都知道,相比於HashTable,HashMap是一個非線程安全的實現類。爲什麼說HashMap是非線程安全的呢

原创 中國程序員越老越沒人要,國外程序員越老搶着要

目錄: 你以爲的人生 一次又一次的傷害 如何應對互聯網行業的「中年危機」 一、你以爲的人生 剛入行時,拿着傲人的工資,想着好好幹,以爲我們的人生是這樣的: 等真到了那一天,你會發現,你的人生很可能是這樣的: 二、一次又一次的

原创 雪花算法生成簡化數據中心和機器ID獲取

/** * @program: simple_tools * @description: 雪花算法代碼實現 * @author: qiqi **/ public class IdWorker { // 時間起始標記

原创 RocketMQ 怎麼處理消息丟失風險

先來一張最簡單的消費流程圖: 上圖中大致包含了這麼幾種場景: 生產者產生消息發送給RocketMQ RocketMQ接收到了消息之後,必然需要存到磁盤中,否則斷電或宕機之後會造成數據的丟失 消費者從RocketMQ中獲取消息消

原创 深入理解 MySQL—鎖、事務與併發控制

1. MySQL 服務器邏輯架構 (圖片來源MySQL官網) 每個連接都會在 MySQL 服務端產生一個線程(內部通過線程池管理線程),比如一個 select 語句進入,MySQL 首先會在查詢緩存中查找是否緩存了這個 select 的

原创 Shardingjdbc的深度定製化過程

公司原先使用的數據庫中間件是mycat,但是mycat由於很早就開始不維護了,所以我們再使用過程中出現了很多問題都無法的到解決,如果各位同學有興趣可以再壓測時觀察下mycat的堆棧活動,ygc是非常頻繁的,並且很不穩定,當時考慮切換到Sh

原创 阿里巴巴Arthas診斷工具平臺化改造

Arthas是一款開源且非常棒的在線診斷工具,阿里巴巴在16年就出品了,經過幾年的功能迭代以及代碼重構又出了不少新的診斷命令 在Github上面搜索Arthas即可下載源碼,原生的Arthas實現了TunnelClient和TunnelS

原创 Drools規則引擎接入詳解

Drools是Jboss開源的一個規則引擎,簡單來說就是一種運算速度極快且配置非常靈活的計算工具,這篇博客不分析底層實現了,因爲互聯網上面隨便一搜就能發現很多介紹,但是真正去使用的博客卻太少了,也許真正用的很深的不多大家都只是抄來抄去那些

原创 Raft算法概述

最近公司在選型分佈式框架時集中研究對比了Paxos和Raft一致性算法實現得原理,說實話Paxos在百度百科得描述真的複雜,可能需要反覆看很多遍才能理解個大概,而Raft得原理圖雖然也不簡單但是多看幾次還是能理解得   Raft 是一種共

原创 快速讀懂UML類圖繪製規範

架構師或者項目經理可能經常需要繪製UML類圖,但是很多人卻繪製的很不規範,其實UML針對Java是有專業規範存在的,下面開始詳解 一.類屬性描述: 在UML類圖中,類使用包含類名、屬性(field) 和方法(method) 且帶有分割線的

原创 Java-ReadWriteLock讀寫鎖的使用

Java併發包中ReadWriteLock是一個接口,主要有兩個方法,如下: public interface ReadWriteLock { /** * Returns the lock used for readi

原创 一致性哈希算法原理

一致性Hash算法背景   一致性哈希算法在1997年由麻省理工學院的Karger等人在解決分佈式Cache中提出的,設計目標是爲了解決因特網中的熱點(Hot spot)問題,初衷和CARP十分類似。一致性哈希修正了CARP使用的簡單哈希

原创 阿里面試題彙總 2019持續更新

Volatile的內存語義: 當寫一個volatile變量時,JMM會把線程對應的本地內存中的共享變量值刷新到主內存。 當讀一個volatile變量時,JMM會把線程對應的本地內存置爲無效,線程接下來將從主內存中讀取共享變量。 V