正向代理和反向代理的理解

在知乎上看到了一篇关于讲解正向代理和反向代理的文章, 觉的还不错

https://www.zhihu.com/question/24723688

阅读全文 »


git同时推送到多个版本仓库

最近开发了个项目代码是放在公司的代码仓库里的,然后也想放在自己的github仓库里,下面配置可以实现:

1 编辑你本地的代码 .git/ 目录下的 config 文件,添加如下配置即可, 前提是开通代码库权限:

[remote "all"]
    url = ssh://git@git.xxxxxxx/user/cron_monitor.git
    url = git@github.com:xxxxx/cron_monitor.git

其中每个url代表一个仓库, ssh 和 http 方式都可以
2 然后执行 git push all 命令即可

阅读全文 »


解释型语言和编译型语言

最近在和朋友讨论编译型语言和解释型语言的一些细节, 整理了一下:

1 传统意义上的所谓编译和解释, 区别在于代码是什么时候被翻译成目标CPU的指令, 这是一直以来大家更认可的更约定俗称的定义

2 对 C 语言或者其他编译型语言来说,编译生成了目标文件,而这个目标文件是针对特定的 CPU 体系的, 为 ARM 生成的目标文件,不能被用于 MIPS 的 CPU。这段代码在编译过程中就已经被翻译成了目标 CPU 指令,所以,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。

3 对于各种非编译型语言(例如python/java)来说,同样也可能存在某种编译过程,但他们编译生成的通常是一种『平台无关』的中间代码, 这种代码一般不是针对特定的 CPU 平台,他们是在运行过程中才被翻译成目标 CPU 指令的,因而,在 ARM CPU 上能执行,换到 MIPS 也能执行,换到 X86 也能执行,不需要重新对源代码进行编译。

4 至于为什么会有虚拟机的存在?这个答案也很简单了,因为那些非编译型语言生成的并不是目标平台的代码,而是某种中间代码。而能够运行这种中间代码的机器并不广泛存在,所以我们在每个不同的平台中用软件模拟出这个假想平台的虚拟机, 这个虚拟机执行这种中间代码,而虚拟机负责把代码转换成最终的目标平台上的指令。

阅读全文 »


php进程间通信

常见的进程通信方式有:消息队列、共享内存与信号量、管道、socket,注释和代码请在github中查看。 github地址:https://github.com/wanghongjun2014/php_thread_demo

阅读全文 »


centos6.5安装mysql5.6/5.7

由于公司业务需要, 需要在一台线上机器装mysql5.6/5.7, 之前是装了mysql5.1(但是没有人用), 因为是线上机器, 所以装的时候比较谨慎, 记录下遇到的坑

安装步骤

step1 : 检测系统是否自带安装mysql

yum list installed | grep mysql

step2 : 删除系统自带mysql及依赖, 可能要删除多个,

yum -y remove mysql-libs.x86_64

step3: 给CentOS添加rpm源,并且选择较新的源(安装5.6或者5.7根据自己的需要)

# wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
# yum localinstall mysql-community-release-el6-5.noarch.rpm
# yum repolist all | grep mysql
# yum-config-manager --disable mysql55-community
# yum-config-manager --disable mysql56-community
# yum-config-manager --enable mysql57-community-dmr
# yum repolist enabled | grep mysql

ps : yum-config-manager命令如果找不到的话, 可以通过如下命令安装, 系统默认是没有安装这个包的

yum -y install yum-utils

step4: 安装mysql 服务器

yum install mysql-community-server

step5 : 启动mysql, 设置开机启动

service mysqld start
chkconfig --list | grep mysqld
chkconfig mysqld on
mysql_secure_installation

遇到的问题

1 mysql启动失败, 查看mysql-error log, 如下图所示 result

原因是/etc/my.cnf里配置的data_dir目录空间不足引起的, 更换目录即可

参考文章:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

阅读全文 »


php的4种回调函数风格

匿名函数

$server->on('Request', function ($req, $resp) {
    echo "hello world";
});

类静态方法

class A
{
    static function test($req, $resp)
    {
        echo "hello world";
    }
}
$server->on('Request', 'A::Test');
$server->on('Request', array('A', 'Test'));

函数

function my_onRequest($req, $resp)
{
    echo "hello world";
}
$server->on('Request', 'my_onRequest');

对象方法

class A
{
    function test($req, $resp)
    {
        echo "hello world";
    }
}

$object = new A();
$server->on('Request', array($object, 'test'));

阅读全文 »