JiaHe's Blog

读万卷书,行万里路

wrk 是一款简单的 HTTP 压测工具, 托管在 Github 上,https://github.com/wg/wrk.
wrk 的一个很好的特性就是能用很少的线程压出很大的并发量。 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等。 其实它是复用了 redis 的 ae 异步事件驱动框架。 确切的说 ae 事件驱动框架并不是 redis 发明的, 它来至于 Tcl 的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而更多的被大家所熟知。

阅读全文 »

情况1 代理软件开放代理端口,虚拟机通过该端口进行代理

  1. Linux安装proxychains

    git clone https://github.com/rofl0r/proxychains-ng.git

    cd proxychains-ng

    ./configure
    make
    make install
    make install-config

    # make install-config 执行完毕后会输出配置文件的存放路径

    # 如果提示make: Nothing to be done for `all`,可以尝试执行
    make clean
  2. 配置conf

    vim /usr/local/etc/proxychains.conf

    # 根据代理软件具体开放的协议类型,配置代理ip和port

    http 本机ip 代理port
    socks5 本机ip 代理port
  3. Windows配置端口转发

    netsh interface portproxy add v4tov4 listenport=转发端口 listenaddress=监听地址 connectport=转发端口 connectaddress=转发地址

    # 举例
    netsh interface portproxy add v4tov4 listenport=64601 listenaddress=192.168.100.153 connectport=64601 connectaddress=127.0.0.1

    netsh interface portproxy show all

    # 查看端口转发列表
    侦听 ipv4: 连接到 ipv4:

    地址 端口 地址 端口
    --------------- ---------- --------------- ----------
    192.168.100.153 64601 127.0.0.1 64601
  4. 添加防火墙入站规则,开放代理端口,为了虚拟机可以访问到本机ip+端口port

  5. 测试虚拟机是否可以走代理访问

    proxychains telnet google.com

  1. docker exec -it mysql容器名 bash

    docker exec -it mysql bash
  2. 添加 skip-grant-tables 配置

    vi /etc/mysql/conf.d/docker.cnf

    [mysqld]
    skip-host-cache
    skip-name-resolve
    skip-grant-tables

    如果提示vi找不到,则执行以下命令

    apt-get update && apt-get install vim -y
  3. 执行exit,退出mysql容器

  4. 执行systemctl restart docker, 重启docker

  5. docker exec -it mysql容器名 mysql 进入无密码模式的mysql中

  6. 操作你需要改动的命令

  7. 最后记得执行 flush privileges;,使你刚刚改动的内容生效

本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法。按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得很多东西可以从一个简单的东西出发,到达本质,所以,我觉得有必要在这里写一篇的文章。不一定全对,只希望得到更多的讨论,因为有了更深入的讨论才能进步。

文章有点长,我在文章最后会给出相关的思考和总结陈词,你可以跳到结尾。

所谓箭头型代码,基本上来说就是下面这个图片所示的情况。

那么,这样“箭头型”的代码有什么问题呢?看上去也挺好看的,有对称美。但是……

关于箭头型代码的问题有如下几个:

1)我的显示器不够宽,箭头型代码缩进太狠了,需要我来回拉水平滚动条,这让我在读代码的时候,相当的不舒服。

2)除了宽度外还有长度,有的代码的if-else里的if-else里的if-else的代码太多,读到中间你都不知道中间的代码是经过了什么样的层层检查才来到这里的。

总而言之,“箭头型代码”如果嵌套太多,代码太长的话,会相当容易让维护代码的人(包括自己)迷失在代码中,因为看到最内层的代码时,你已经不知道前面的那一层一层的条件判断是什么样的,代码是怎么运行到这里的,所以,箭头型代码是非常难以维护和Debug的

阅读全文 »

这次重装系统(为何要重装有兴趣的可翻看上上篇)我是一万个不愿意的,因为我知道系统重装的成本有多大。就单纯装个系统来说可能只需要十几分钟,但是装系统前的准备工作(主要是备份和制作安装启动 U 盘)以及系统装完后的恢复备份、软件安装调试、系统设置等,要想完全恢复之前的使用环境,差不多得需要一天的时间。现在是晚上的 10:42,先记录下该做的一些工作,按步骤来就不会出错。

阅读全文 »