Mysql 高可用
复制
复制是解决系统高可用的常见手段。其思路就是:不要把鸡蛋都放在一个篮子里。
复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。主库和备库之 间可以有多种不同的组合方式。
MySQL 支持两种复制方式:基于行的复制和基于语句的复制。这两种方式都是通过在主库上记录 bin log、在备库重放日志的方式来实现异步的数据复制。这意味着:复制过程存在时延,这段时间内,主从数据可能不一致。
大道至简,知易行难
复制是解决系统高可用的常见手段。其思路就是:不要把鸡蛋都放在一个篮子里。
复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。主库和备库之 间可以有多种不同的组合方式。
MySQL 支持两种复制方式:基于行的复制和基于语句的复制。这两种方式都是通过在主库上记录 bin log、在备库重放日志的方式来实现异步的数据复制。这意味着:复制过程存在时延,这段时间内,主从数据可能不一致。
Redis 服务器是一个事件驱动程序,服务器需要处理两类事件:
文件事件(file event)- Redis 服务器通过套接字(Socket)与客户端或者其它服务器进行通信,文件事件就是对套接字操作的抽象。服务器与客户端(或其他的服务器)的通信会产生文件事件,而服务器通过监听并处理这些事件来完成一系列网络通信操作。时间事件(time event)- Redis 服务器有一些操作需要在给定的时间点执行,时间事件是对这类定时操作的抽象。关键词:
文件事件、时间事件
关键词:
Pipeline
Redis 是一种基于 C/S 模型以及请求/响应协议的 TCP 服务。通常情况下,一个 Redis 命令的请求、响应遵循以下步骤:
显然,如果每个 Redis 命令都发起一次请求、响应,会很低效。因此,Redis 客户端提供了一种批量处理技术,即
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。
Redis 有两种发布订阅模式
- 基于频道(Channel)的发布订阅
- 基于模式(Pattern)的发布订阅
关键词:
订阅、SUBSCRIBE、PSUBSCRIBE、PUBLISH、观察者模式
Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。
HBase 是一种 NoSQL 数据库,它是Java版本的 Google’s Big Table 实现,它原本是 Hadoop 的子项目,现在已独立出来,并成为 apache 的顶级项目。
HBase 的设计目标是用于存储大规模数据集。HBase 是列式数据库,与传统行式数据库相比,其非常适合用于存储稀疏性的数据。
HBase 是基于 HDFS 实现的。
HBase 关键特性:
💧 dunwu.github.ioopen in new window 是个人的技术文档归档仓库。
- 🔁 项目同步维护:Githubopen in new window
- 📖 电子书阅读:Github Pagesopen in new window
Pattern、Matcher、捕获与非捕获、反向引用、零宽断言、贪婪与懒惰、元字符、DFA、NFABase64、消息摘要、数字签名、对称加密、非对称加密、MD5、SHA、HMAC、AES、DES、DESede、RSALocale、ResourceBundle、NumberFormat、DateFormat、MessageFormatStream、lambda、Optional、@FunctionalInterfaceSPI、ClassLoader
Collection、泛型、Iterable、Iterator、Comparable、Comparator、Cloneable、fail-fastList、ArrayList、LinkedListMap、HashMap、TreeMap、LinkedHashMap、WeakHashMapSet、HashSet、TreeSet、LinkedHashSet、EmumSetQueue、Deque、ArrayDeque、LinkedList、PriorityQueue
InputStream、OutputStream、Reader、Writer、阻塞Channel、Buffer、Selector、非阻塞、多路复用Serializable、serialVersionUID、transient、Externalizable、writeObject、readObjectSocket、ServerSocket、DatagramPacket、DatagramSocketFile、RandomAccessFile、System、Scanner
进程、线程、安全性、活跃性、性能、死锁、饥饿、上下文切换Thread、Runnable、Callable、Future、wait、notify、notifyAll、join、sleep、yeild、线程状态、线程通信synchronized、volatile、CAS、ThreadLocalAQS、ReentrantLock、ReentrantReadWriteLock、ConditionCAS、AtomicConcurrentHashMap、CopyOnWriteArrayListExecutor、ExecutorService、ThreadPoolExecutor、ExecutorsCountDownLatch、CyclicBarrier、SemaphoreJMM、volatile、synchronized、final、Happens-Before、内存屏障
程序计数器、虚拟机栈、本地方法栈、堆、方法区、运行时常量池、直接内存、OutOfMemoryError、StackOverflowErrorGC Roots、Serial、Parallel、CMS、G1、Minor GC、Full GCClassLoader、双亲委派bytecode、asm、javassistjps、jstat、jmap 、jstack、jhat、jinfojconsole、jvisualvm、MAT、JProfile、Arthas配置、调优CPU、内存、磁盘、网络、GCTomcat 和 Jetty 都是 Java 比较流行的轻量级服务器。
Nginx 是目前最流行的反向代理服务器,也常用于负载均衡。
Java 项目需要通过 构建工具 来管理项目依赖,完成编译、打包、发布、生成 JavaDoc 等任务。
- 目前最主流的构建工具是 Maven,它的功能非常强大。
- Gradle 号称是要替代 Maven 等构件工具,它的版本管理确实简洁,但是需要学习 Groovy,学习成本比 Maven 高。
- Ant 功能比 Maven 和 Gradle 要弱,现代 Java 项目基本不用了,但也有一些传统的 Java 项目还在使用。
自从有了 IDE,写代码从此就告别了刀耕火种的蛮荒时代。
- Eclipse 是久负盛名的开源 Java IDE,我的学生时代一直使用它写 Java。
- 曾经抗拒从转 Intellij Idea ,但后来发现真香,不得不说,确实是目前最优秀的 Java IDE。
- 你可以在 vscode 中写各种语言,只要安装相应插件即可。如果你的项目中使用了很多种编程语言,又懒得在多个 IDE 之间切换,那么就用 vscode 来一网打尽吧。
监控/诊断 工具主要用于 Java 应用的运维。通过采集、分析、存储、可视化应用的有效数据,帮助开发者、使用者快速定位问题,找到性能瓶颈。
Java 领域比较流行的安全框架就是 shiro 和 spring-security。
shiro 更为简单、轻便,容易理解,能满足大多数基本安全场景下的需要。
spring-security 功能更丰富,也比 shiro 更复杂。值得一提的是由于 spring-security 是 spring 团队开发,所以集成 spring 和 spring-boot 框架更容易。
缓存可以说是优化系统性能的第一手段,在各种技术中都会有缓存的应用。
如果想深入学习缓存,建议先了解一下 缓存基本原理open in new window,有助于理解缓存的特性、原理,使用缓存常见的问题及解决方案。
关系型数据库 整理主流关系型数据库知识点。
Mysql 架构、Mysql 存储引擎、Mysql 索引、Mysql 事务、Mysql 锁、Mysql 高可用、Mysql 优化、Mysql 运维、Mysql 面试
MongoDB 是一个基于文档的分布式数据库,由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品。它是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。
MongoDB 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
Redis 基本数据类型、Redis 高级数据类型、Redis 数据结构、Redis 过期删除和内存淘汰、Redis 持久化、Redis 事件、Redis 复制、Redis 哨兵、Redis 集群、Redis 发布订阅、Redis 独立功能、Redis 管道、Redis 脚本、Redis 运维、Redis 实战、Redis 面试
Elasticsearch 是一个基于 Lucene 的搜索和数据分析工具,它提供了一个分布式服务。Elasticsearch 是遵从 Apache 开源条款的一款开源产品,是当前主流的企业级搜索引擎。
如果你是做通信领域的开发,或者是 Web 应用的开发,那就或多或少需要了解一些计算机网络的知识 。
理解计算机网络,首先需要从宏观层面了解计算机网络通信的分层结构。最有代表性的是 OSI 七层结构模型,但现实中更流行的是五层结构模型。
了解网络分层结构,需要了解每个网络层级在网络通信中的定位,以及这个层级主要的通信设备、通信协议。
PPP、CSMA/CD、局域网、以太网、MAC、适配器、集线器、网桥、交换机IP、ICMP、ARP、路由UDP、TCP、滑动窗口、拥塞控制、三次握手HTTP、DNS、FTP、TELNET、DHCP拜占庭将军、CAP、BASE、错误的分布式假设共识性算法共识性算法数据传播限流、熔断、降级、计数器法、时间窗口法、令牌桶法、漏桶法轮询、随机、最少连接、源地址哈希、一致性哈希、虚拟 hash 槽路由、条件路由、脚本路由、标签路由粘性 Session、Session 复制共享、基于缓存的 session 共享UUID、自增序列、雪花算法、Leaf定义、演进、利弊、如何拆分、容量规划、核心组件服务定义、注册中心、元数据、健康检查、服务订阅、一致性RPC、通信协议、传输方式、序列化微服务、序列化、动态代理、通信、服务注册发现、健康检查、路由、负载均衡、容错处理、优雅上线下线、限流、熔断、业务分组创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。
结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
行为模式负责对象间的高效沟通和职责委派。