Skip to content

Latest commit

 

History

History
334 lines (195 loc) · 17.7 KB

WeChat_Blog.md

File metadata and controls

334 lines (195 loc) · 17.7 KB

微信公众号高质量技术贴

  • 过滤掉对自己感觉没有技术相关性的,或者是那种水贴
  • 对内容进行归类整理
  • 阅读完写下自己的读后感

LINUX

面试官:如何写出让 CPU 跑得更快的代码?

从无盘启动看 Linux 启动原理

Linux 机器 CPU 毛刺问题排查

Linux 入门必看:如何60秒内分析Linux性能

​Linux CPU 性能优化指南

Linux I/O 原理和 Zero-copy 技术全面揭秘

为什么 Linux 默认页大小是 4KB

面试官:如何写出让 CPU 跑得更快的代码?

彻底搞懂 IO 底层原理

Go netpoller 网络模型之源码全面解析

JVM GC JAVA

Twitter短链服务大bug: 预连到错误域名

内存泄漏事故:一顿debug猛如虎,定睛一看原地杵

一文掌握开发利器:正则表达式

为什么我们选择 Java 语言开发高频交易系统

Java内存泄漏、性能优化、宕机死锁的N种姿势

Java中9种常见的CMS GC问题分析与解决

你可能未曾使用的新 Java 特性

java线程池(newFixedThreadPool)线程消失疑问?

线程池的异常线程会被销毁,然后重新创建新的线程来补位

分享近期社区的几个经典的JVM问题

字节码增强:原理与实战

Java ConcurrentHashMap 高并发安全实现原理解析

java.util.ConcurrentModificationException详解

迭代ArrayList的Iterator中有一个变量expectedModCount
该变量会初始化和modCount相等,但如果接下来如果集合进行修改modCount改变,就会造成expectedModCount!=modCount
Iterator的remove会修改expectedModCount,对单线程有用多线程无用

Java并发编程:并发容器之CopyOnWriteArrayList

CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器
写操作复制出一个新的容器,然后新的容器里添加元素(加锁),读还是会读到旧的数据(不加锁)

深入分析ConcurrentHashMap

get方法里将要使用的共享变量都定义成volatile,java内存模型的happen before原则,对volatile字段的写入操作先于读操作
put方法里需要对共享变量进行写入操作,所以为了线程安全,在操作共享变量时必须得加锁
count方法先尝试两次不行再加锁,modCount变量,在put, remove和clean方法里操作元素前都会将变量modCount进行加1
那么在统计size前后比较modCount是否发生变化,从而得知容器的大小是否发生变化

ARM环境下Java应用卡顿优化案例

Java8之Consumer、Supplier、Predicate和Function攻略

java8 Stream的实现原理 (从零开始实现一个stream流)

Java 8 Stream原理解析

Java内存模型深入分析

Java 语言中锁的设计与应用

源码深度解析 Handler 机制及应用

vivo 调用链 Agent 原理及实践

Oracle JDK7 bug 发现、分析与解决实战

OKHttp Protobuf GRPC TOMCAT

OkHttp3线程池相关之Dispatcher中的ExecutorService

奇怪的知识: okhttp 是如何支持 Http2 的?

gRPC客户端详解

Thrift的客户端是线程不安全的——这意味着在Spring中无法以单例形式注入到Bean中
gRPC服务端的Response都是异步形式
gRPC的客户端有同步阻塞客户端(blockingStub) 和异步非阻塞客户端(Stub)两种

grpc原理

深入了解 gRPC:协议

巧用 Protobuf 反射来优化代码,拒做 PB Boy

获取 PB 中所有非空字段:bool has_field = reflection->HasField(message, field)
将字段校验规则放置在 Proto 中:optional string name =1 [(field_rule) .length_min = 5, (field_rule) .id = 1]
基于 PB 反射的前端页面自动生成方案
通用存储系统(根据反射取出K/V)

一文讲懂进程间通信的几种方式

Tomcat 优雅关闭之路

Tomcat 9.0.26 高并发场景下DeadLock问题排查与修复

Tomcat 应用中并行流带来的类加载问题

REDIS ES MYSQL MongoDB

Redis小功能大用处(1) -stat_expired_time_cap_reached_count

Redis常见客户端异常汇总(Jedis篇)

Redis在Linux系统的配置优化

Redis module功能介绍

败家玩意儿!Redis 竟然浪费了这么多内存!

从1到3分布式Redis电商实战&缓存穿透&缓存雪崩&缓存失效终极解决

替你踩过Redis缓存的坑,奉上使用规范和监控方法

运维:终于不用再背着数万实例的Redis集群了

一万字详解 Redis Cluster Gossip 协议

Codis VS Redis Cluster:我该选择哪一个集群方案

codis提供了
1.dashboard的fe界面运维简单
2.基于zookeeper的proxy代理slot-mapping映射
3.基于sentinel的主从切换高可用
codis提供了异步的数据迁移方案(其中对大key拆分迁移的原子性方案),对比redis-cluster来说相对应用较早

Redis 缓存性能实践及总结

pika集群水平扩展——让性能容量不再受限

超全的数据库建表/SQL/索引规范,适合贴在工位上!

我在MySQL原厂的那些年都经历了什么?

高并发场景下,百万级订单量系统的分库分表重构经历

3年部署3000套PG实例的架构设计与踩坑经验

简述3种CQRS架构模式

InnoDB 事务加锁分析

MySQL 的 crash-safe 原理解析

MySQL 8 新特性之Clone Plugin

干货 | 携程Elasticsearch数据同步实践

一次看完28个关于ES的性能调优技巧

ElasticSearch使用规范beta版

非日志型(搜索型、线上业务型) 的shard容量在1030GB(建议在10G) 日志型的shard容量在30100GB(建议30G) 单个shard的文档个数不能超过21亿左右(Integer.MAX_VALUE - 128)

一个节点管理的shard数不要超过200个
routing id不均衡:集群容量和访问不均衡,对于分布式存储是致命的
拒绝大聚合 :ES计算都在JVM内存中完成
拒绝模糊查询:es一大杀手
拒绝深度分页
禁止查询 indexName-*

干货 | 携程Elasticsearch数据同步实践

分布式搜索引擎Elasticsearch的架构分析

连环触发!MongoDB核心集群雪崩故障背后竟是……

KAFKA MQ ZOOKEEPER

运维必备:Zookeeper集群“脑裂”问题处理大全

运维必备:Zookeeper集群“脑裂”问题处理大全

这样做RabbitMQ高可用,业务流量猛增10倍也不怂

vivo 基于原生 RabbitMQ 的高可用架构实践

简单理解 Kafka 的消息可靠性策略

ISR : leader 副本保持一定同步的 follower 副本, 包括 leader 副本自己,叫 In Sync Replica
HW: Highwater, 俗称高水位,它表示了一个特定的消息偏移量(offset) 在一个 parttion 中 consumer 只能拉取这个 offset 之前的消息(此 offset 跟 consumer offset 不是一个概念)
LEO: LogEndOffset, 日志末端偏移量, 用来表示当前日志文件中下一条写入消息的 offset
leader HW: 该 Partititon 所有副本的 LEO 最小值
follower HW: min(follower 自身 LEO 和 leader HW)
Leader HW = 所有副本 LEO 最小值
Follower HW = min(follower 自身 LEO 和 leader HW)
Leader 不仅保存了自己的 HW &LEO 还保存了远端副本的 HW &LEO
在kafka配置为AP系统的情况下发生截断发生的概率会大大提升
Kafka Broker 会在内存中为每个分区都缓存 Leader Epoch 数据,同时它还会定期地将这些信息持久化到一个 checkpoint 文件中

Linux Page Cache调优在Kafka中的应用

Hystrix Seata Sentinel

分钟简述熔断器使用方法

Sentinel 是如何做限流的

Seata是什么?一文了解其实现原理

Canal 组件简介与 vivo 帐号实践

Hystrix 如何解决 ThreadLocal 信息丢失

分布式事务:Saga模式

logging tracing metrics

构建 Netflix 分布式追踪(tracing)体系

报警的哲学

基于Prometheus来做微服务监控,有多吃香?

Prometheus远程写入InfluxDB,遇到OOM引发的错误怎么解?

深入浅出开源监控系统Prometheus(上)

OpenTSDB 数据存储详解

CI CD UnitTest

如何有效地进行代码 Review?

这才是真正的Git——Git实用技巧

万字详文告诉你如何做 Code Review

如何有效地进行代码 Review?

TCP HTTP STOCKET

爱奇艺网络协程编写高并发应用实践

彻底弄懂TCP协议:从三次握手说起

一文读懂 HTTP/1HTTP/2HTTP/3

白话http2的多路复用

移动端APM网络监控与优化方案
网络状况较好时,HTTP2.0多路复用,带来了性能上的优势,但在网络不稳定时,HTTP1.1错误率低于HTTP2.0。

  1. 多域名连接共享,实现0RTT多路复用。
  2. 避免了DNS解析,防止DNS劫持。
  3. protobuf编码私有协议,节省流量。

深入理解web协议(二) :DNS、WebSocket

深入理解 web 协议(一) - http 包体传输

HIVE HBASE FLINK KYLIN

万亿数据下的多维实时分析系统,如何做到亚秒级响应

高效大数据开发之 bitmap 思想的应用

滴滴实时数仓逐层剖解:实时与离线数据误差<0.5%

数仓引入ClickHouse之后,性能提升了400%!

pache Kylin的实践与优化

美团之前没有好好的看kylin的源码和配置参数,导致线上的CPU、内存、文件数没有规划
引擎升级至:spark(最近是flink了) 数据源采用hive 全局字典依赖配置

应对万亿数据上亿并发!字节跳动的图数据库研发实践

自研的图数据库:解决了热点无问题,性能单节点R:200k W:10k
不支持ACID事务、总之还在发展中

基于Kafka+Flink平台化设计,实时数仓还能这样建

网易云音乐将实时计算的多个sink下kafkasource的重复消费问题:增加了一个data update标记同一个表计算合并
多个kafka集群部署在一个交换机下,离线计算和实时计算等其他情况造成的交换机带宽问题:拆分机房规划

HBase数据迁移到Kafka?这种逆向操作你懵逼了吗?

serviceMesh K8S Docker

Service Mesh在腾讯云中间件团队的实践与思考

后分布式时代: 多数派读写的「少数派」实现

你真的知道怎么实现一个延迟队列吗 ?

微信研发体系下的分布式配置系统设计概要

Docker 底层原理浅析

越来越复杂,为什么是中台?

Kubernetes Ingress 基于内容的路由

高可用架构怎么选?常见多活建设这么一对比就懂了

谷歌可靠性工程的“封神”之路:从大规模分布式系统高效故障响应说起

复杂环境下落地Service Mesh的挑战与实践

delete later

漫画:什么是一致性哈希?

漫画:三种 “奇葩” 的排序算法

原创 | 手把手刷二叉搜索树(第二期)

读者问:到底怎么学操作系统和计算机网络呀?

双指针技巧秒杀四道数组/链表题目

只能用分布式锁,也能搞定每秒上千订单的高并发优化?

万字详文阐释程序员修炼之道

SpringBoot 配置类解析

分布式定时任务调度框架实践

一文了解 Consistent Hash

分布式高并发服务三种常用限流方案简介