0%

什么是单例模式?

单例模式算是设计模式入门的最简单的一个模式, 由于 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有四种网络连接方式.

  1. 单机模式: bridgehostnone.
  2. 多机模式: overlay
    Docker会自动创建3个网络.
    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来隔离网络空间.

阅读全文 »

前言

Docker有三种命令执行方式

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

前言

你好啊,感谢你阅读本文。
18年的时候,我发布了这篇文章,介绍了如何部署一套我当时以为安全的流量混淆和多用户限流工具。

转眼到了22年,现在我遇到了几个问题

  1. 我的Linux虚拟机迫切需要使用科学上网,但是当时这篇文章里没有介绍关于Linux Client的使用。
  2. 我的shadowsocks-libev版本过于老旧,不知道是否会有安全漏洞,需要更新。
  3. simple-obfs混淆插件已经停止维护,拙劣的混淆可能会暴露自己。

随后我在搜索引擎上找到了一篇文章,如何部署一台抗封锁的Shadowsocks-libev服务器
PS:在写这篇文章的时候,根据上文进行配置,第二天就被封IP了,建议大家还是开上simple obfs等混淆插件,不要裸奔。

本文基于Ubuntu 18.04在虚拟机中进行操作, 并于VPS上测试成功。

阅读全文 »

前言

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

阅读全文 »