什么是网络代理

代理服务器英文全称是Proxy Server
代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,是直接联系到目的站点服务器,然后由目的站点服务器把信息传送回来。代理服务器是介于浏览器和Web服务器之间的另一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

  大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

  更重要的是:代理服务器是 Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联 (OSI) 模型的对话层,从而起到防火墙的作用。

  鉴于上述原因,代理服务器大多被用来连接INTERNET(局域网)和INTRANET(国际互联网)。在国内,所谓中国多媒体公众信息网和教育网都是独立的大型国家级局域网,是与国际互联网隔绝的。出于各种需要,某些集团或个人在两网之间开设了代理服务器,如果我们知道这些代理服务器的地址,就可以利用它到达网外网,例如从169到达163。代理服务器就象是连接两岸的桥梁,但是169与163之间的代理服务器一般的都被设置了访问密码,或者要收代理费用,阿Z搜索并提供的是完全免费的代理服务器地址,完全没有任何限制,不需缴交任何额外费用!
网络代理有两种:
1.局域网上,通过别人的计算机上网。这种,只要知道IP地址,用户,密码,在IE 选项-连接-局域网设置上把相应的东西填上就可以了。

2.突破上网限制,通过别的计算机来实现上网的无限制。设置就是在IE选项上相应网络连接点设置天上相应的地址,用户,密码就可以了。

3.国内的通通通,要下载软件。具体到通通通网站看吧。 什么是代理服务器?
代理服务器(Proxy server),从其名字上不难理解,就是做代理的,其作用与现在各种各样的代理商差不多。
作为教育网和169的用户来讲,他们不能直接访问国外的站点,而且网络速度也惊人的慢,这样很多网络功能就无法使用。最典型的例子就是不能用Icq了,因为Icq的服务器都在国外,直接连不上。因此在这个时候代理服务器就起了至关重要的作用。
通常我们访问网站都是直接与目的主机相连,使用了代理服务器,可先与代理服务器进行连接,然后把我们的请求(比如说我们想得到哪个网页的内容)告诉代理服务器,由代理服务器帮我们取下来。一般代理服务器都有一个很大的Cache,起缓冲的作用,它不断将新取得数据储存到它的存储器上;如果浏览器所请求的数据在它本机的存储器上已经存在,而且是最新的话,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著地提高浏览速度和效率了。
代理服务器通常有两种类型,Http代理和Socks5代理。Http代理是用来浏览网页用的,其端口一般是80和8080,不过也有3128等其它端口的;而socks5代理则可以看成是一种全能的代理,不管是telnet、ftp还是irc聊天都可以用它,这类代理的端口通常是1080。

php命名空间,自动加载

1:首先介绍下php魔术方法__autoload()
实现自动加载最简单的方式就是使用 __autoload 魔术方法。当需要使用的类没有被引入时,这个函数会在PHP报错前被触发,未定义的类名会被当作参数传入

2:在说下spl_autoload_register() 方法
这个方法需要你的 PHP 版本号大于 5.12。一旦调用 spl_autoload_register() 函数,当调用未定义类时,系统就会按顺序调用注册到 spl_autoload_register() 函数的所有函数,而不是自动调用 __autoload() 函数

3:PSR4规范
PSR-4 规范中必须要有一个顶级命名空间,它的意义在于表示某一个特殊的目录(文件基目录)。子命名空间代表的是类文件相对于文件基目录的这一段路径(相对路径),类名则与文件名保持一致(注意大小写的区别)。

举个例子:在全限定类名 \app\view\news\Index 中,如果 app 代表 C:\Baidu,那么这个类的路径则是 C:\Baidu\view\news\Index.php

4:实现过程
我们就以解析 \app\view\Index 为例,编写一个简单的 Demo:

namespace app\view; 
 class Index 
 {
     function __construct()
     {
         echo 'Welcome To Home';
     }
 }


接着我们在创建一个加载类(不需要命名空间),它处于 \ 目录中:

class Loader
{
    /* 路径映射 */
    public static $vendorMap = array(
        'app' => __DIR__ . DIRECTORY_SEPARATOR,
    );

    /**
     * 自动加载器
     */
    public static function autoload($class)
    {
        $file = self::findFile($class);
        if (file_exists($file)) {
            self::includeFile($file);
        }
    }

    /**
     * 解析文件路径
     */
    private static function findFile($class)
    {
        $vendor = substr($class, 0, strpos($class, '\\')); // 顶级命名空间
        $vendorDir = self::$vendorMap[$vendor]; // 文件基目录
        $filePath = substr($class, strlen($vendor)) . '.php'; // 文件相对路径
        return strtr($vendorDir . $filePath, '\\', DIRECTORY_SEPARATOR); // 文件标准路径
    }

    /**
     * 引入文件
     */
    private static function includeFile($file)
    {
        if (is_file($file)) {
            include $file;
        }
    }
}

最后,将 Loader 类中的 autoload 注册到 spl_autoload_register 函数中:

include 'Loader.php'; // 引入加载器
spl_autoload_register('Loader::autoload'); // 注册自动加载

new \app\view\Index(); // 实例化未引用的类

/**
 * 输出:  Welcome To Home 
 */

post请求超过1024字节解决方法

基础知识背景:


“Expect: 100-continue”的来龙去脉:
HTTP/1.1 协议里设计 100 (Continue) HTTP 状态码的的目的是,在客户端发送 Request Message 之前,HTTP/1.1 协议允许客户端先判定服务器是否愿意接受客户端发来的消息主体(基于 Request Headers)。
即, Client 和 Server 在 Post (较大)数据之前,允许双方“握手”,如果匹配上了,Client 才开始发送(较大)数据。
这么做的原因是,如果客户端直接发送请求数据,但是服务器又将该请求拒绝的话,这种行为将带来很大的资源开销。

libcurl 发送大于1024字节数据时启用“Expect:100-continue‘特性:

在使用 curl 做 POST 的时候,当要 POST 的数据大于 1024 字节的时候,curl 并不会直接就发起 POST 请求,而是会分为两步
1:发送一个请求,包含一个 "Expect: 100-continue" 头域,询问 Server 是否愿意接收数据;
2:接收到 Server 返回的 100-continue 应答以后,才把数据 POST 给 Server;

PHP Curl-library 可以主动封禁此特性:

PHP curl 遵从 libcurl 的特性。由于不是所有 web servers 都支持这个特性,所以会产生各种各样的错误。如果你遇到了,可以用下面的命令封禁”Expect”头域:

<?php
    //添加如下head头就可传输大于1024字节请求
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
?>


Centos 安装或更新 cmake

使用命令 查看当前cmake版本

cmake --version

第一步:首先yum安装gcc gcc-c++

yum install gcc-c++ gcc -y

第二步:去 cmake官网 下载 cmake-3.10.3.tar.gz 以tar.gz结尾的源码包,不要下错

wget https://cmake.org/files/v3.10/cmake-3.10.3.tar.gz

第三步:解压cmake源文件 并将源文件放入/tmp/文件下

cd /tmp
tar -zxvf cmake-3.10.3.tar.gz

第四步:编译安装cmake

cd cmake-3.10.3
./configure
make
make install

第五步:安装完成之后 再次查看当前cmake版本

cmake --version

作者:jartin
来源:CSDN
原文:https://blog.csdn.net/jartins/article/details/80041858
版权声明:本文为博主原创文章,转载请附上博文链接!

linux查看和修改PATH环境变量的方法

查看PATH:echo $PATH
以添加mongodb server为列
修改方法一:
export PATH=/usr/local/mongodb/bin:$PATH
//配置完后可以通过echo $PATH查看配置结果。
生效方法:立即生效
有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置
用户局限:仅对当前用户

修改方法二:
通过修改.bashrc文件:
vim ~/.bashrc
//在最后一行添上:
export PATH=/usr/local/mongodb/bin:$PATH
生效方法:(有以下两种)
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.bashrc”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户

修改方法三:
通过修改profile文件:
vim /etc/profile
/export PATH //找到设置PATH的行,添加
export PATH=/usr/local/mongodb/bin:$PATH
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户

修改方法四:
通过修改environment文件:
vim /etc/environment
在PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"中加入“:/usr/local/mongodb/bin”
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户

Centos 安装 opencv

下载opencv : https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/
opencv视频处理部分是基于ffmpeg的,所以如果想用opencv3来处理视频那么必须安装ffmpeg依赖,并且不能下载官网上最新的ffmpeg,opencv调用的是比较老的系统版本
然后如果需要ffmpeg支持,那么需要安装相关的库,安装过程如下:
安装epel扩展源 : yum -y install epel-release
添加扩展源 :

yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm https://download1.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-7.noarch.rpm
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
安装ffmpeg依赖 : yum -y install ffmpeg ffmpeg-devel

安装opencv

解压 : unzip opencv-3.4.3.zip
cd opencv-3.4.3

开始安装 :
rm CMakeCache.txt (防止报错 error : in-source builds are not allowed)
mkdir build (opencv不允许在源目录安装)
cd build
cmake ..
make
make install

mac php开发环境配置

httpd -v 查看当前Apache 和PHP 版本
PHP -v 查看版本
sudo apachectl stop 关闭系统自带的Apache
如果已经加入launchctl就用下面的命令关闭sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

手动删除一同自带的Apache
sudo rm /usr/sbin/apachectl
sudo rm /usr/sbin/httpd
sudo rm -r /etc/apache2/

删除自带的php
sudo rm -r /usr/bin/php

安装brew : http://brew.sh/

安装nginx : brew install nginx

修改配置文件:
sudo vim /usr/local/etc/nginx/nginx.conf #修改默认的8080端口为80

给予管理员权限:
sudo chown root:wheel/usr/local/opt/nginx/bin/nginx
sudo chmod u+s/usr/local/opt/nginx/bin/nginx

运行nginx:
sudo nginx #打开 nginx
nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出
nginx nginx -t #测试配置是否有语法错误

用法详解:
nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
选项列表
-?,-h : 打开帮助信息
-v : 显示版本信息并退出
-V : 显示版本和配置选项信息,然后退出
-t : 检测配置文件是否有语法错误,然后退出
-q : 在检测配置文件期间屏蔽非错误信息
-s signal : 给一个 nginx 主进程发送信号:stop(停止), quit(退出), reopen(重启), reload(重新加载配置文件)
-p prefix : 设置前缀路径(默认是:/usr/local/Cellar/nginx/1.2.6/)
-c filename : 设置配置文件(默认是:/usr/local/etc/nginx/nginx.conf)
-g directives : 设置配置文件外的全局指令

mysql的安装与配置

brew install mysql
cd /usr/local/opt/mysql/
修改配置文件
sudo vim my.cnf #如果出现无法启动mysql,rm my.cnf
加入launchctl启动控制:
mkdir -p ~/Library/LaunchAgents/ cp /usr/local/opt/mysql/homebrew.mxcl.mysql.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
#取消启动 # launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

初始化:mysql
./bin/mysql_install_db

执行安全设置脚本,设置root账号密码
./bin/mysql_secure_installation

命令行连接mysql:
mysql -uroot -p

php的安装与配置

brew 默认没有 php 安装包:
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
现在可以安装php了:
brew search php 查找可安装的PHP包
brew install php@7.2
将php路径加入PATH
在文档最后,添加: export PATH="/usr/bin/php/bin:$PATH"
保存,退出,然后运行: #source /etc/profile


Nginx.cong 配置

server {
listen 80;
server_name test.oa2.com;
location / {
root /usr/local/var/www/oa;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ .php$ {
root /usr/local/var/www/oa;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~* ^.+.(ico|gif|jpg|jpeg|png)$ {
access_log off;
root /usr/local/var/www/oa;
expires 7d;
}
}


linux php7 安装memcached扩展

cd /usr/local/php/ext/ (自己的PHP安装目录)
git clone https://github.com/php-memcached-dev/php-memcached memcached
cd memcached/git checkout php7 (切换到php7分支)
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config \--with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
注释 : /usr/local/libmemcached 是安装memcached客户端的地址 ,如果没有先安装
make && make install
------Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/
------ls /usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012/ (查看so文件)
vim /usr/local/php/etc/php.ini 加入:extension=memcached.so
service php-fpm restart

Linux 快速安装 php运行环境

1: yum install screen
2: screen -S lnmp 会打开一个新的窗口,由于为CentOS系统,我们只需继续在新窗口中执行安装lnmp一键包的命令即可。
3: wget -c http://soft.vpser.net/lnmp/lnmp1.4.tar.gz && tar zxf lnmp1.4.tar.gz && cd lnmp1.4 && ./install.sh lnmp
敲击回车之后,会提示要求选择DataBase、PHP、MySQL的版本号,我们均可以选择敲击回车来选择默认的版本即可。我们数据库的默认账号为root,安装过程中会要求我们设置数据库的密码,若我们也敲击回车,则默认的数据库密码为root(我们需要记清我们设置过的数据库的账号和密码以保证我们之后能正常的访问)。当运行至出现如下提示,我们只需键入任何一个键,就开始安装了。接下去只需等待30至40分钟,即可完成自动安装。

命令行连接 redis / memcache

reids 连接命令

-h : host
-p : port
-a : pass
redis-cli -h 192.168.3.120 -p 20000 -a 'xhc12345!QWEASD901'

连接memecache

telnet 192.168.3.120 11211

memcace使用

命令格式:
<command> <key><flags><exptime><bytes>\r\n <data block>\r\n
<command> : add , set , 或者 replace
<key> : 缓存的key
<flag> : 16位无符号整数,和key存储的数据一起存储,在get时返回
<exptime> : 过期时间,0表示永远不过期,如果非0,表示unix时间或者距此秒数
<bytes> : 存储数据的字节数

例:
add test_key 1 0 5 【回车键】 hello
set test_key 1 0 5 【回车键】 hello
get test_key