🔝 笔记索引

后端架构

System Design

负载均衡

轮询,比率(加权),优先分组,动态负载均衡算法包括:最少连接,最快(Fasttest) ……

限流

TODO

熔断

Circuit Breaker

常用于容错熔断的 Hystrix 项目不再开发,建议新项目转到 resilience4j

容错

failover, failfast, failback

平滑启动

SOA & 微服务

SOA(Service-Oriented Architecture),即面向服务的架构。

服务治理框架

服务治理框架演进

Spring Cloud

Dobbo

Motan

Service Mesh

服务网格

Istio

TODO

Conduit

TODO

RPC

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

Thrift

Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift基于自己的传输协议和序列化协议。

gRPC

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。

Dubbo RPC

Dubbo-RPC是服务治理框架Dubbo的子模块,提供了灵活的配置方式,支持常见的传输协议RMI、Dubbo、Hessain、WebService、Http 等,序列化支持Hessian2、dubbo、JSON、SOAP 等。

RPC-传输协议

常见RPC协议有: Dubbo/RMI(socket实现), Hessian/WebService(HTTP实现) 以及Redis, Memcached等。

RPC-序列化类库

包括gRPC使用的ProtoBuf、Thrift序列化协议、Avro协议。

API网关

Spring Cloud Gateway

TODO

Zuul

TODO

注册中心

Zookeeper

Consul

TODO

Etcd

TODO

Web Server

Nginx

Tomcat

缓存

TODO

Memcached

数据库

关系型数据库

MySQL

NoSQL

Mongo

Redis

HBase

消息队列

Kafka

RabbitMQ

TODO

ZeroMQ

TODO

分布式系统

TODO: https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#分布式一致

容器化

Docker

Kubernetes

Kubernetes(常简称为K8s)是用于自动部署、扩展和管理容器化(containerized)应用程序的开源系统。

资源调度

Mesos vs Yarn vs Kubernetes

Yarn

Mesos

Mesos可以理解为一种分布式集群的“系统内核”, 负责整个集群资源的分配(CPU、内存、存储资源、网络资源等)。在Mesos上可以运行Spark, Storm, Hadoop, Marathon等多种Framework。

DevOps & 监控

基础监控

Ganglia

除了对基础性能的监控、Ganglia还可以通过Coda Hale开发的Metrics库实现对Spark、Hadoop、Kafka、JStorm的监控。

Open Falcon

Open Falcon提供了对集群、MySQL、Redis、Nginx、JMX、Mesos等常见应用的监控功能。

APM

应用性能管理(Application Performance Management)

Zipkin

TODO

SkyWalking

TODO

压力测试

WRK

JMeter

大数据

批处理计算

Hadoop

流式计算

Storm

混合型计算

Spark

大数据分析

Hive

Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

Druid

Druid.io是一个开源的,分布式的,列式存储的,适用于实时数据查询分析的OLAP系统。

Spark SQL

TODO

机器学习 & 深度学习

机器学习

框架

TensorFlow

算法理论

有监督学习算法

LR

逻辑回归(Logistics Regression)

kNN

k-近邻算法

FM

因子分解机(Factorization Machine) 因子分解机(Factorization Machine, FM) 是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法。目前,被广泛的应用于广告预估模型中

FFM

Field-aware Factorization Machines(FFM)

朴素贝叶斯

Naive Bayes

SVM

支持向量机(Support Vector Machine)

决策树

决策树(Decision Tree)

随机森林

Random Forest

boosting

集成学习的两个流派,bagging & boosting派系

无监督学习算法

k-均值

k-means 算法

分层聚类
PCA

主成分分析(Principal Component Analysis)

DBSCAN

DBSCAN,英文全写为Density-based spatial clustering of applications with noise ,是在 1996 年由Martin Ester, Hans-Peter Kriegel, Jörg Sander 及 Xiaowei Xu 提出的聚类分析算法, 这个算法是以密度为本的:给定某空间里的一个点集合,这算法能把附近的点分成一组(有很多相邻点的点),并标记出位于低密度区域的局外点(最接近它的点也十分远),DBSCAN 是其中一个最常用的聚类分析算法

深度学习

深度学习框架

TensorFlow

Caffe2

TODO

MXNet

TODO

DeepLearning4j

TODO

神经网络

发展

积神经网络(CNN)

CNN经典模型:LeNet
CNN经典模型:AlexNet
CNN经典模型:VGGNet
CNN经典模型:GoogLeNet

循环神经网络(RNN)

度残差网络(DRN)

度信念网络(DBN)

推荐系统

搜索引擎

搜索引擎原理

评估方法

ElasticSearch

Lucene

TODO

Solr

TODO

Linux & DevOps

性能调优

网络编程

相关tag: #NIO #IO模型 #IO设计模式

并发(C100K)

OS系统原理

网络协议

数据结构与算法

数据结构

AVL

TODO

红黑树

TODO

B-树

TODO

优先队列(堆)

TODO

散列

TODO

算法设计

贪婪

分治

回溯

动态规划

图论算法

拓扑排序

TODO

最短路径算法

TODO

网络流问题

TODO

最小生成树

TODO

深度优先搜索

TODO

设计模式

正则表达式

C/C++

智能指针

Java SE

  • ✐笔记: Java 30分钟快速入门:《Java核心技术》读书笔记,包括Java对象,字符串,反射和RTTI,异常,泛型,集合,I/O流,多线程,网络编程API,NIO,Native Method,Java 8~9新特性(Lambda,Stream),etc.
  • ✐笔记: More about Java:Java虚拟机相关笔记,JVM内存分代,JVM参数调优,垃圾回收,Java内存模型,etc.

异常

集合

List

两种主要的List:ArrayList & LinkedList

Queue

LinkedList 同时实现了Deque和Queue接口,ArrayDeque 以循环数组实现的Dueue,PriorityQueue 用二叉堆实现的优先级队列

Set

Set是不能包含重复的元素的集合:HashSet 由HashMap实现,TreeSet 由TreeMap实现

Map

HashMap 散列表,LinkedHashMap 遍历时与插入顺序一致,TreeMap 用红黑树实现按Key排序的Map

并发

线程API

线程安全集合

线程安全的Queue

阻塞队列 PriorityBlockingQueue, SynchronousQueue 等;
非阻塞队列 ConcurrentLinkedQueue, ConcurrentLinkedDueue;

线程安全的Set

ConcurrentSkipListSet 由ConcurrentSkipListMap实现

线程安全的Map

ConcurrentHashMap 分段加锁的并发安全Map,ConcurrentSkipListMap 跳表实现的并发安全SortedMap

异步

JVM

JAVA内存模型

深入理解Java内存模型-系列

GC

GC算法

TODO

GC回收器

性能分析

深入 Java 调试体系

JProfiler

VisualVM

Btrace

BTrace是SUN Kenai云计算开发平台下的一个开源项目,旨在为java提供安全可靠的动态跟踪分析工具。

HouseMD

比BTrace更轻量级的Java进程运行时的诊断调式命令行工具,可以用来跟踪跟踪方法的耗时。

Memory Analyzer (MAT)

Java堆转储 (Heap Dump) 文件分析工具,可以分析堆内存中每种对象的数量,还可以跟踪对象的引用链,排查内存泄漏问题。

构建 & 测试

第三方类库

当你想重新发明轮子时,应该先去Guava & Apache Commons库里找找看。

Guava

Guava包含了若干被Google的 Java项目广泛依赖的核心库,例如:集合collections、caching 、并发库 concurrency libraries 、通用注解 common annotations 、字符串处理 string processing 、I/O、原生类型支持 primitives support 等等。

Apache Commons

Apache Commons 提供了FileUpload, Lang, Pool(对象池), IO工具集等

Metrics

目前最为流行的 metrics 库是来自 Coda Hale 的 dropwizard/metrics,该库被广泛地应用于各个知名的开源项目中。例如 Hadoop、Kafka、Spark、JStorm。并且Metrics生成的数据可以很方便的与Graphite、Ganglia等监控系统结合使用。

Java 8/9/10新特性

深入拆解 Java 虚拟机

注:文章来自极客时间课程,需要付费购买才可以查看完整内容。

Java EE

Web 框架

Servlet

Spring MVC

Spring Boot

Spring WebFlux

  • 聊聊 Spring Boot 2.0 的 WebFlux
    1. Spring Web MVC 基于 Servlet API 和 Servlet 容器设计。Spring WebFlux 基于 Reactive Streams API 和 Servlet 3.1+ 容器设计
    2. Reactive Streams API 是什么?
      • 流是序列,是生产者生产,一个或多个消费者消费的元素序列。这种具体的设计模式成为发布订阅模式。
      • Back pressure是一种常用策略,使得发布者拥有无限制的缓冲区存储 item,用于确保发布者发布 item 太快时,不会去压制订阅者。
      • Reactive Streams (响应式流)是提供处理非阻塞back pressure异步流的一种标准。JDK 9 java.util.concurrent 包提供了两个主要的 API 来处理响应流:
        • java.util.concurrent.Flow
        • java.util.concurrent.SubmissionPublisher

ORM框架

MyBatis

Hibernate

数据库中间件

Sharding JDBC

Sharding JDBC是当当开源的轻量级分库分表Jar包

MyCAT

Mycat是一个数据库分库分表代理中间件

数据库连接池

Durid

Durid 不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个 SQL Parser。

DBCP

DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序中使用,Tomcat的数据源使用的就是DBCP。

c3p0

c3p0是一个开放源代码的JDBC连接池,它在lib目录中与Hibernate一起发布,包括了实现jdbc3和jdbc2扩展规范说明的Connection 和Statement 池的DataSources 对象。

日志框架

J2EE规范

响应式编程

响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。

Reactive Streams

Java 9 新特性:Reactive Streams(响应式流)是一个使用非阻塞back pressure(背压机制)的异步流处理标准。在java.util.concurrent包中提供

Reactor

Reactor是Pivotal发布的第四代响应式框架,跟RxJava 2有些相似。 Spring WebFlux 以Reactor为基础,实现Web领域的反应式编程框架。

RxJava

Reactive Extensions for Java

Akka

Actor模型为编写并发和分布式系统提供了一种更高的抽象级别。它将开发人员从显式地处理锁和线程管理的工作中解脱出来,使编写并发和并行系统更加容易。

Vert.x

Java 异步非阻塞编程框架,底层基于Netty异步通信。Vert.x本身是事件驱动、非阻塞纯异步IO模型,这意味着可以使用很少的线程处理大量并发请求。

其他技术类笔记