0%

前言

Redis的高速建立在数据存储在内存中, 但是断电的话, 就会导致数据丢失的问题.
为此我们需要对数据进行持久化到硬盘中.
Redis提供了两种持久化存储方案, Redis在启动时会优先加载AOF文件恢复数据.

  1. AOF(Append Only File): 记录每次执行的命令到日志中, 恢复数据时重新执行一次日志文件中的命令.
  2. RDB(Redis Database Backup): 将数据库的所有数据直接写入磁盘
阅读全文 »

什么是单例模式?

单例模式算是设计模式入门的最简单的一个模式, 由于 Java 语言的特性(指令重排序), 导致同时也是最难的一个模式。

所幸, 先驱者Joshua BlochGoogle I/O 2008上的新书Effective Java介绍了单例模式的最佳实践。这本神书我还没来的及看, 但在国外好像备受推崇, 所以有机会还是看看。

阅读全文 »

前言

Redis的命令有一个生命周期, 比如发送一个set key value命令.

  1. Redis客户端发送set key valueRedis服务端
  2. 因为Redis是单线程, 所以命令在队列中排队.
  3. Redis服务端执行set key value命令, 并产生结果
  4. Redis服务端将结果发送给Redis客户端

Redis命令的慢查询命令就是Redis服务端消耗时间较长的命令, 耗时过长是导致客户端超时的原因之一.

阅读全文 »

前言

当我们使用Docker创建一个mysqlcontainer, 数据是存储在container内的.
如果有一天不小心执行了docker rm $(docker ps -aq)删除所有container. 那么mysql里的数据也会被删掉, 这是不安全的.
我们需要将数据持久化, 存储在container外部. 即使删除container也不会删除原有的数据.

阅读全文 »

前言

Docker有三种网络连接方式, bridgehostnone.
Docker会自动创建3个网络, 每种1个.

1
2
3
4
5
docker network ls
# NETWORK ID NAME DRIVER SCOPE
# 7b083adc391a bridge bridge local
# 5855c878dc68 host host local
# 9895a4ab897d none null local
阅读全文 »

network namespace

Linux network namespaceLinux 提供的网络虚拟化功能, 它能创建网络虚拟空间, 将容器(Docker)或虚拟机的网络隔离开来, 假装是一台独立的网络机器.
Docker也使用了Linux network namespace来隔离网络空间.
这里使用ip命令来查看网络信息.

阅读全文 »

前言

Docker有三种命令执行方式

  1. RUN: 执行命令并创建新的Image Layer
  2. CMD: 设置容器启动后默认执行的命令和参数
  3. ENTRYPOINT: 设置容器启动时运行的命令
阅读全文 »

前言

ThreadPoolExecutor是一个线程池的实现.
Java提供了Executors工厂类来创建ExecutorService线程池实例。

阅读全文 »

前言

mongodb是一个NoSQL数据库, 可以分词查询, 可以基于地理位置查询, 记录以JSON形式存储.
mongodb的数据表又叫做数据集合, 关键字为collection.
mongodb是不存在join这个概念的, 所以一切的关联查询都得通过外部程序来做.

阅读全文 »