[转载]Redis 核心原理:基于事件的处理流程

概述本文介绍了Redis核心原理和架构:基于事件驱动的模型。事件模型是构成Redis内核的引擎,Redis的丰富功能和组件都是构建在这个模型上的。如果你使用过Redis,那么本文可以为你打开一道进入Redis内部世界的门,窥探Redis如何构建它的帝国。本文先对Redis使用的事件模型和原理进行介绍

[转载]细说 Java 主流日志工具库

在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息。在 Java 世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子。我们先来逐一了解一下主流日志工具。日志框架java.util.logging (JUL)JDK1.4 开始,通过 java.util.logging 提供日志功

[转载]MySQL 核心三剑客 —— 索引、锁、事务

一、常见存储引擎1.1 InnoDBInnoDB 是 MySQL 5.5 之后默认的存储引擎,它具有高可靠、高性能的特点,主要具备以下优势:DML 操作完全遵循 ACID 模型,支持事务,支持崩溃恢复,能够极大地保护用户的数据安全;支持多版本并发控制,它会保存数据的旧版本信息,从而可以支持并发和事务

[转载]Redis是如何处理大量的网络IO的?

Redis 采用事件驱动机制来处理大量的网络IO。它并没有使用 libevent 或者 libev 这样的成熟开源方案,而是自己实现一个非常简洁的事件驱动库 ae_event。Redis中的事件驱动库只关注网络IO,以及定时器。该事件库处理下面两类事件:文件事件(file event):用于处理

[转载]一次完整 HTTP 调用涉及到的技术

DNS 解析域名什么是 DNS我们访问网站的时候会输入域名,而在真实网络中主机通信是通过 IP 地址进行通信的,DNS 服务器的作用就是将这域名字符串解析为对应的 IP 地址有哪些 DNS 服务器如果说每输入一个域名都需要去一个 DNS 服务器解析的话,全世界这么高的访问量,肯定是无法承载的,所以会

[转载]红黑树的理解与 Java 实现

前言前段时间在研究JDK1.8的hashmap源码,看到put方法的插入环节,遇到了红黑树,不得不停止阅读源码的过程,因为还没掌握红黑树是无法完全读透hashmap源码的。红黑树作为一种数据结构,它被应用得非常多,可能很多人不认识它,但其实它已经在默默为我们的代码在发光发热。例如,你只要在Java中

[转载]常用的设计模式汇总,超详细!

1.单例模式2.观察者模式3.装饰者模式4.适配器模式5.工厂模式6.代理模式(proxy)单例模式简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返

[转载]经验:一个秒杀系统的设计思考

前言秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是12306抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是本

[转载]一文搞懂 ThreadLocal 原理

当多线程访问共享可变数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要线程封闭出场了。数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为「线程封闭」。本文主要介绍线程封闭中的其中一种体现:ThreadLocal,将会介绍什么是 T

[转载]聊聊Linux 五种IO模型

在正式开始讲Linux IO模型前,比如:同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。1 概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间进程切换进程的阻塞文件描述符缓存 IO1.1 用户空