跳至主要內容

钝悟的博客

大道至简,知易行难

dunwu.github.io
个人的技术文档归档
链接名称
链接详细描述
书籍名称
书籍详细描述
文章名称
文章详细描述
伙伴名称
伙伴详细介绍
自定义项目
自定义项目
自定义详细介绍
Dubbo 面试

Dubbo 面试

Dubbo 的实现过程?

节点角色:

节点 角色说明
Provider 暴露服务的服务提供方
Consumer 调用远程服务的服务消费方
Registry 服务注册与发现的注册中心
Monitor 统计服务的调用次数和调用时间的监控中心
Container 服务运行容器

钝悟...大约 11 分钟分布式分布式通信RPCDubbo分布式分布式应用微服务Dubbo面试
Elasticsearch 架构

Elasticsearch 架构

存储流程

ES 存储数据的流程可以从三个角度来阐述:

  • 集群的角度来看,数据写入会先路由到主分片,在主分片上写入成功后,会并发写副本分片,最后响应给客户端。
  • 分片的角度来看,数据到达分片后需要对内容进行格式校验、分词处理然后再索引数据。
  • 节点的角度来看,ES 数据持久化的步骤可归纳为:Refresh、写 Translog、Flush、Merge。

钝悟...大约 13 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch存储索引
Elasticsearch 搜索(上)

Elasticsearch 搜索(上)

搜索简介

Elasticsearch 支持多种搜索:

  • 精确搜索(词项搜索):搜索数值、日期、IP 或字符串的精确值或范围。
  • 全文搜索:搜索非结构化文本数据并查找与查询项最匹配的文档。
  • 向量搜索:存储向量,并使用 ANN 或 KNN 搜索来查找相似的向量,从而支持 语义搜索 等场景。

钝悟...大约 8 分钟数据库搜索引擎数据库Elasticsearch数据库搜索引擎数据库Elasticsearch搜索
《极客时间教程 - Elasticsearch 核心技术与实战》笔记一

《极客时间教程 - Elasticsearch 核心技术与实战》笔记一

第一章:概述

课程介绍(略)

课程综述及学习建议(略)

Elasticsearch 概述及其发展历史

Elasticsearch 是一款基于 Lucene 的开源分布式搜索引擎。


钝悟...大约 17 分钟笔记数据库数据库搜索引擎数据库Elasticsearch
《极客时间教程 - Elasticsearch 核心技术与实战》笔记二

《极客时间教程 - Elasticsearch 核心技术与实战》笔记二

第四章:深入搜索

基于词项和基于全文的搜索

基于词项的查询

Term 是表达语意的最小单位。搜索和利用统计语言模型进行自然语言处理都需要处理 Term

Term 级别查询:Term / Range / Exists / Prefix / Wildcard

在 ES 中,Term 查询,对输入不做分词。会将输入作为一个整体,在倒排索引中查找准确的词项,并且使用相关度计算公式为每个包含该词项的文档进行相关度计算。


钝悟...大约 19 分钟笔记数据库数据库搜索引擎数据库Elasticsearch
《Elasticsearch 实战》笔记

《Elasticsearch 实战》笔记

第 1 章 Elasticsearch 介绍

  • Elasticsearch 是构建在 Apache Lucene 基础之上的开源分布式搜索引擎。
  • Elasticsearch 常见的用法是索引大规模的数据,这样可以运行全文搜索和实时数据统计。
  • Elasticsearch 提供的特性远远超越了全文搜索。例如,可以调优搜索相关性并提供搜索建议。
  • 对于数据的索引和搜索,以及集群配置的管理,都可以使用 HTTP API 的 JSON,并获得 JSON 应答。
  • 可以将 Elasticsearch 当作一个 NoSQL 的数据存储,包括了实时性搜索和分析能力。它是面向文档的,默认情况下就是可扩展的。
  • Elasticsearch 自动将数据划分为分片,在集群中的服务器上做负载均衡。这使得动态添加和移除服务器变得很容易。分片也可以复制,使得集群具有容错性。

钝悟...大约 12 分钟笔记数据库数据库搜索引擎数据库Elasticsearch
《极客时间教程 - MongoDB 高手课》笔记一

《极客时间教程 - MongoDB 高手课》笔记一

第一章:MongoDB 再入门

MongoDB 简介

什么是 MongoDB?

一个以 JSON 为数据模型的文档数据库。

为什么叫文档数据库?

文档来自于“JSON Document”,并非我们一般理解的 PDF,WORD 文档。

谁开发 MongDB?

上市公司 MongoDB Inc. ,总部位于美国纽约。

主要用途

  • 应用数据库,类似于 Oracle, MySQL
  • 海量数据处理,数据平台。

钝悟...大约 24 分钟笔记数据库数据库文档数据库MongoDB
《极客时间教程 - MongoDB 高手课》笔记二

《极客时间教程 - MongoDB 高手课》笔记二

第三章:分片集群与高级运维之道

分片集群机制及原理

MongoDB 常见部署架构

TODO: 补图

为什么要使用分片集群?

——分而治之

分片如何解决?

TODO:补图

分片组件:

  • 路由节点(mongos) - 提供集群单一入口转发应用端请求选择合适数据节点进行读写合并多个数据节点的返回。无状态,建议至少 2 个。
  • 配置节点(config) - 提供集群元数据存储分片数据分布的映射。
  • 数据节点(shard) - 以复制集为单位水平扩展,最大 1024 分片。分片之间数据不重复所有分片在一起才可完整工作

钝悟...大约 10 分钟笔记数据库数据库文档数据库MongoDB
《高性能 MySQL》笔记

《高性能 MySQL》笔记

部分章节内容更偏向于 DBA 的工作,在实际的开发工作中相关性较少,直接略过。

第一章 MySQL 架构与历史

MySQL 逻辑架构

MySQL 逻辑架构分为三层:

  • 连接层 - 连接管理、认证管理
  • 核心服务层 - 缓存、解析、优化、执行
  • 存储引擎层 - 数据实际读写

并发控制

解决并发问题的最常见方式是加锁。

  • 排它锁(exclusive lock) - 也叫写锁(write lock)。锁一次只能被一个线程所持有

  • 共享锁(shared lock) - 也叫读锁(read lock)。锁可被多个线程所持有


钝悟...大约 28 分钟笔记数据库数据库关系型数据库MySQL
《MongoDB 权威指南》笔记一

《MongoDB 权威指南》笔记一

第 1 章 MongoDB 简介

MongoDB 简介

MongoDB 是一个分布式文档数据库,由 C++ 语言编写。

面向文档

面向文档的数据库使用更灵活的“文档”模型取代了“行”的概念。通过嵌入文档和数组,面向文档的方式可以仅用一条记录来表示复杂的层次关系。

MongoDB 中也没有预定义模式(predefined schema):文档键值的类型和大小不是固定的。由于没有固定的模式,因此按需添加或删除字段变得更容易。

综上,MongoDB 支持结构化、半结构化数据模型,可以动态响应结构变化


钝悟...大约 17 分钟笔记数据库数据库文档数据库MongoDB
2
3
4
5
...
59

starforkbuildcode style

dunwu.github.io

💧 dunwu.github.ioopen in new window 是个人的技术文档归档仓库。

Java

JavaCore

Java 基础特性

Java 高级特性

  • Java 正则 - 关键词:Pattern、Matcher、捕获与非捕获、反向引用、零宽断言、贪婪与懒惰、元字符、DFA、NFA
  • Java 编码和加密 - 关键词:Base64、消息摘要、数字签名、对称加密、非对称加密、MD5、SHA、HMAC、AES、DES、DESede、RSA
  • Java 国际化 - 关键词:Locale、ResourceBundle、NumberFormat、DateFormat、MessageFormat
  • Java JDK8 - 关键词:Stream、lambda、Optional、@FunctionalInterface
  • Java SPI - 关键词:SPI、ClassLoader
  • JavaAgent

Java 容器

Java IO

Java 并发

Java 虚拟机

JavaEE

JavaWeb

Java 服务器

Tomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。

Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。

Java 软件

Java 构建

Java 项目需要通过 构建工具 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。

  • 目前最主流的构建工具是 Maven,它的功能非常强大。
  • Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。
  • Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。

Java IDE

自从有了 IDE,写代码从此就告别了刀耕火种的蛮荒时代。

  • Eclipse 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。
  • 曾经抗拒从转 Intellij Idea ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。
  • 你可以在 vscode 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。

Java 监控诊断

监控/诊断 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。

Java 工具

Java IO

JavaBean 工具

Java 模板引擎

Java 测试工具

其他

Java 框架

Spring

综合
核心
数据
Web
IO
集成
其他

ORM

安全

Java 领域比较流行的安全框架就是 shiro 和 spring-security。

shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。

spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。

IO

Java 中间件

缓存

缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。

如果想深入学习缓存,建议先了解一下 缓存基本原理open in new window,有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。

流量控制

数据结构和算法

数据库

数据库综合

数据库中间件

关系型数据库

关系型数据库 整理主流关系型数据库知识点。

公共知识

Mysql 教程

Mysql 架构Mysql 存储引擎Mysql 索引Mysql 事务Mysql 锁Mysql 高可用Mysql 优化Mysql 运维Mysql 面试

其他

文档数据库

MongoDB

MongoDB 是一个基于文档的分布式数据库,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品。它是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。

MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

KV 数据库

Redis

Redis

列式数据库

HBase

搜索引擎数据库

Elasticsearch

Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。

Elastic

网络

如果你是做通信领域的开发,或者是 Web 应用的开发,那就或多或少需要了解一些计算机网络的知识 。

网络综合

理解计算机网络,首先需要从宏观层面了解计算机网络通信的分层结构。最有代表性的是 OSI 七层结构模型,但现实中更流行的是五层结构模型。

了解网络分层结构,需要了解每个网络层级在网络通信中的定位,以及这个层级主要的通信设备、通信协议。

网络协议

网络技术

分布式

分布式综合

分布式协同

分布式调度

  • 服务注册和发现 - 关键词:服务注册服务发现元数据
  • 负载均衡 - 关键词:轮询随机最少连接源地址哈希一致性哈希虚拟 hash 槽
  • 流量控制 - 关键词:限流熔断降级计数器法时间窗口法令牌桶法漏桶法
  • 路由和网关 - 关键词:路由条件路由脚本路由标签路由
  • 分布式 ID - 关键词:UUID自增序列雪花算法Leaf

分布式高可用

分布式通信

RPC

RPC 综合
Dubbo

MQ

MQ 综合
Kafka
RocketMQ
其他 MQ

分布式存储

  • 分布式缓存 - 关键词:进程内缓存分布式缓存缓存雪崩缓存穿透缓存击穿缓存更新缓存预热缓存降级
  • 读写分离
  • 分库分表 - 关键词:分片路由迁移扩容双写聚合

编程

编程范式

编程语言

设计

架构

综合

微服务

  • 微服务简介 - 关键词:定义演进利弊如何拆分容量规划核心组件
  • 微服务之注册和发现 - 关键词:服务定义注册中心元数据健康检查服务订阅一致性
  • 微服务之服务调用 - 关键词:RPC通信协议传输方式序列化
  • 微服务基本原理 - 关键词:微服务序列化动态代理通信服务注册发现健康检查路由负载均衡容错处理优雅上线下线限流熔断业务分组

安全

设计模式

面向对象原则

创建型模式

创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。

结构型模式

结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

行为型模式

行为模式负责对象间的高效沟通和职责委派。

重构

UML

DevOps

CI

CD

监控

工具

工作

方法论

规范

工具

🚪 传送

◾ 💧 钝悟的 IT 知识图谱open in new window