文章851
标签121
分类10

正向代理 和 反向代理

正向代理和反向代理是两种不同类型的代理服务器,它们在网络架构中扮演着不同的角色。下面是它们之间的主要区别:

正向代理(Forward Proxy):

  1. 用途

    • 正向代理代表客户端向服务器发送请求。客户端通过正向代理与其他服务器进行通信,客2. 用途
    • 正向代理用于代表客户端发送请求到互联网上的其他服务器。客户端通过正向代理访问外部资源,而不直接访问这些资源。
  2. 隐藏客户端

    • 正向代理隐藏了实际发起请求的客户端,服务器只知道请求来自代理服务器,而不知道具体的客户端身份。
  3. 典型场景

    • 用户在企业网络内部使用正向代理来访问互联网,以绕过企业网络的限制或监测。在访问受限网站时,正向代理可以帮助用户绕过封锁。

反向代理(Reverse Proxy):

  1. 用途

    • 反向代理代表服务器处理客户端的请求。客户端通过反向代理访问服务器,反向代理负责将请求转发给后端服务器。
  2. 隐藏服务器

    • 反向代理隐藏了后端服务器的真实地址和信息,客户端只与反向代理通信,而不直接与后端服务器通信。
  3. 负载均衡

    • 反向代理常用于负载均衡,将客户端请求分发给多台后端服务器,以提高性能和可靠性。
  4. 缓存

    • 反向代理可以缓存静态内容,减轻后端服务器的负担,提高响应速度。

总结:

  • 正向代理代表客户端,隐藏客户端身份,用于访问外部资源。
  • 反向代理代表服务器,隐藏后端服务器,用于负载均衡、缓存和安全性。

在网络架构中,正向代理和反向代理服务器扮演着不同的角色,分别服务于客户端和服务器,提供了不同的功能和优势。

PHP json_encode/json_decode与serialize/unserializ性能测试

在数据库中要直接存储键值对,PHP中提供的json_encodeserialize都可以满足需求。在具体的性能对比上,网上查看比人的说法,包括国外网站上说的,基本上都是在编码和空间上json_encode效率会高很多,在解码上unserlize会比较快。

经过实际环境下测试,测试结果与以上说法并不全部一致。

测试版本PHP7.1.7

测试结果:

1、在存储空间上json编码确实是很有优势的;
2、当编码的对象比较简单时,如只有一两个数组项组成的额一位数组,执行速度上json_encodeserialize要快;
3、当编码对象项比较多或组成比较复杂时,执行速度上serializejson_encode要快;
4、在解码速度上,unserializjson_decode要快。

写脚本测试了一下:

$i = 0;
$data = array_fill(0,100, 1);
while($i < 1000000) {
    json_encode($data);
    //json_decode($data, true);
    $i++;
}
$i = 0;
$data = array_fill(0,100, 1);
while($i < 1000000) {

    serialize($data);
    //unserialize($data);
    $i++;
}

分别根据序列化及反序列化测试:
简单数组序列化 json_encode 胜出

#time php7 index.php index serialize
real    0m3.676s
user    0m3.559s
sys    0m0.034s
#time php7 index.php index json_encode
real    0m2.078s
user    0m1.959s
sys    0m0.036s

简单数组反序列化 json_encode 胜出

#time php7 index.php index json_decode
real    0m10.986s
user    0m10.446s
sys    0m0.038s
#time php7 index.php index unserialize
real    0m7.111s
user    0m6.893s
sys    0m0.037s

复杂数组 序列化 serialize 胜出

time php7 index.php index serialize
real    0m43.277s
user    0m41.875s
sys    0m0.059s
time php7 index.php index json_encode
real    1m0.988s
user    0m59.110s
sys    0m0.067s

复杂数组 反序列化 unserialize 胜出 (but 并不怎么明显)

$i = 0;
//$data = array_fill(0,100, 1);
$data = '{"c_id"...322"}';
while($i < 1000000) {
  //json_encode($data);
  json_decode($data, true);
  $i++;
}

$i = 0;
//$data = array_fill(0,100, 1);
$data = 'a:4:{s:4:"......2";}';
while($i < 1000000) {
  //serialize($data);
  unserialize($data);
  $i++;
}

测试结果:

time php7 index.php index unserialize
real    1m47.532s
user    1m40.669s
sys    0m0.140s

time php7 index.php index json_decode
real    3m50.987s
user    3m43.805s
sys    0m0.271s

在 Sublime Text 中设置 Vim 模式

Sublime Text 是一个强大的文本编辑器,广泛用于代码编写和文本处理。对于习惯使用 Vim 的开发者来说,能够在 Sublime Text 中实现 Vim 的操作模式无疑会提升工作效率。在这篇文章中,我们将介绍如何在 Sublime Text 中设置 Vim 模式。

1. 安装 Sublime Text

首先,确保您的计算机上已安装 Sublime Text。如果尚未安装,可以从 Sublime Text 官方网站 下载并安装适合您操作系统的版本。

2. 安装 Vintageous 插件

Vintageous 是一个让 Sublime Text 支持 Vim 操作模式的插件。下面是安装步骤:

2.1 打开包控制

  1. 启动 Sublime Text。
  2. 按下 Ctrl + Shift + P (Windows/Linux) 或 Cmd + Shift + P (Mac) 打开命令面板。
  3. 输入 Install Package Control 并选择它以安装包控制。

2.2 安装 Vintageous

  1. 重新打开命令面板 (Ctrl + Shift + PCmd + Shift + P)。
  2. 输入 Package Control: Install Package 并选择它。
  3. 在搜索框中输入 Vintageous,然后选择它进行安装。

3. 配置 Vintageous

安装完成后,您可以根据需要进行一些基本配置:

3.1 启用 Vintage 模式

在 Sublime Text 中,您需要启用 Vintage 模式。打开命令面板,输入以下命令:

Toggle Vintageous

3.2 编辑设置

您可以通过以下步骤编辑 Vintageous 的设置:

  1. 打开命令面板,输入 Preferences: Settings 并选择。
  2. 在右侧的用户设置中,您可以添加以下配置:
{
    "ignored_packages": [],
    "vintageous_use_legacy_behavior": false,
    "vintageous_enable": true
}

4. 使用 Vim 快捷键

一旦 Vintageous 被启用,您就可以使用 Vim 的许多快捷键和命令。例如:

  • 插入模式:按 i 进入插入模式。
  • 普通模式:按 Esc 返回普通模式。
  • 保存文件:在普通模式下输入 :w
  • 退出:在普通模式下输入 :q

5. 检查其他配置

您可以在 Vintageous 的 GitHub 页面上查看其他可用的配置选项和快捷键:Vintageous GitHub

结论

通过以上步骤,您已成功在 Sublime Text 中设置了 Vim 模式。这将使您能够在熟悉的环境中使用 Vim 的操作方式,提高工作效率。如果您在设置过程中遇到任何问题或有任何疑问,请随时留言!

Redis-CLI 命令总结

Redis 是一个高性能的键值数据库,广泛用于缓存、消息队列和实时分析等场景。redis-cli 是 Redis 的命令行工具,允许用户与 Redis 服务器进行交互。在这篇文章中,我们将总结一些常用的 redis-cli 命令,帮助您更有效地使用 Redis。

1. 连接 Redis 服务器

要连接到 Redis 服务器,可以使用以下命令:

redis-cli -h <hostname> -p <port>
  • <hostname>:Redis 服务器的主机名(默认为 127.0.0.1)。
  • <port>:Redis 服务器的端口号(默认为 6379)。

示例:

redis-cli -h 127.0.0.1 -p 6379

如果 Redis 服务器设置了密码,可以使用 -a 选项:

redis-cli -h 127.0.0.1 -p 6379 -a <password>

2. 常用命令

2.1 键操作

  • 查看所有键

    keys *
  • 检查键是否存在

    exists <key>
  • 删除键

    del <key>

2.2 字符串操作

  • 设置字符串值

    set <key> <value>
  • 获取字符串值

    get <key>
  • 增加字符串值

    incr <key>

2.3 哈希操作

  • 设置哈希字段

    hset <hash> <field> <value>
  • 获取哈希字段

    hget <hash> <field>
  • 获取所有哈希字段

    hgetall <hash>

2.4 列表操作

  • 添加元素到列表

    lpush <list> <value>
  • 获取列表元素

    lrange <list> <start> <end>

2.5 集合操作

  • 添加元素到集合

    sadd <set> <value>
  • 获取集合所有元素

    smembers <set>

2.6 有序集合操作

  • 添加元素到有序集合

    zadd <zset> <score> <value>
  • 获取有序集合的排名

    zrank <zset> <value>

3. 事务和管道

  • 开始事务

    multi
  • 执行事务

    exec
  • 放弃事务

    discard

4. 服务器信息

  • 获取服务器信息

    info
  • 检查 Redis 服务器状态

    ping

5. 关闭连接

要退出 redis-cli,可以使用以下命令:

exit

结论

通过以上总结,您现在应该对 redis-cli 的常用命令有了一个基本的了解。这些命令将帮助您更有效地与 Redis 数据库进行交互。

在 Linux 环境下编译安装 PostgreSQL 源码

PostgreSQL 是一个功能强大的开源关系数据库管理系统,广泛用于各种应用程序。如果您希望自定义 PostgreSQL 的配置或想要使用最新的版本,编译安装源码是一个不错的选择。在这篇文章中,我们将详细介绍如何在 Linux 环境中编译安装 PostgreSQL。

前提条件

在开始之前,请确保您的系统已安装以下依赖项:

  • gcc:GNU 编译器
  • make:构建工具
  • libreadline-dev:命令行编辑库
  • zlib1g-dev:压缩库
  • flexbison:解析器生成工具

您可以使用以下命令安装这些依赖项(以 Debian/Ubuntu 为例):

sudo apt update
sudo apt install -y gcc make libreadline-dev zlib1g-dev flex bison

步骤一:下载 PostgreSQL 源码

首先,访问 PostgreSQL 官方网站,下载您希望安装的版本的源码包。您也可以使用 wget 命令直接下载。

wget https://ftp.postgresql.org/pub/source/v14.5/postgresql-14.5.tar.gz

请根据需要替换 URL 中的版本号。

步骤二:解压源码包

下载完成后,解压源码包:

tar -xzf postgresql-14.5.tar.gz
cd postgresql-14.5

步骤三:配置编译选项

在编译之前,您可以配置编译选项。使用 ./configure 脚本来配置 PostgreSQL。您可以根据需要添加不同的选项,以下是一些常用选项:

./configure --prefix=/usr/local/pgsql --with-readline --with-zlib
  • --prefix:指定 PostgreSQL 的安装目录。
  • --with-readline:启用命令行编辑功能。
  • --with-zlib:启用压缩功能。

步骤四:编译和安装

配置完成后,使用 make 命令进行编译:

make

编译完成后,使用以下命令进行安装:

sudo make install

步骤五:创建 PostgreSQL 用户和数据目录

创建一个 PostgreSQL 用户并设置数据目录:

sudo useradd postgres
sudo mkdir /usr/local/pgsql/data
sudo chown postgres:postgres /usr/local/pgsql/data

步骤六:初始化数据库

以 PostgreSQL 用户身份初始化数据库:

sudo -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

步骤七:启动 PostgreSQL 服务

使用以下命令启动 PostgreSQL 服务:

sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

您可以通过查看日志文件确认 PostgreSQL 是否成功启动。

步骤八:设置环境变量

为了方便使用 PostgreSQL,您可以将其二进制路径添加到您的 PATH 环境变量中。编辑 ~/.bashrc~/.bash_profile 文件,添加以下行:

export PATH=$PATH:/usr/local/pgsql/bin

保存文件并运行以下命令以使更改生效:

source ~/.bashrc

步骤九:访问 PostgreSQL

您现在可以使用以下命令访问 PostgreSQL:

psql -U postgres

输入密码后,您将进入 PostgreSQL 命令行界面。

结论

通过以上步骤,您已成功在 Linux 环境中编译并安装了 PostgreSQL。编译安装源码不仅使您能够自定义配置,还能让您使用最新的 PostgreSQL 功能

">