在 Centos 7 中使用shadowsocks
本文不讨论,如何搭建或者获取shadowsocks服务,仅仅从技术角度探讨下如何在centos 7中使用这种socks5代理。
安装shadowsocks-qt5
wget https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.reposudo mv librehat-shadowsocks-epel-7.repo /etc/yum.repos.d/sudo yum updatesudo yum install -y shadowsocks-qt5
安装proxychains
wget https://github.com/rofl0r/proxychains-ng/archive/master.zipunzip master.zipcd master./configuremakesudo make installsudo cp ./src/proxychains.conf /etc/proxychains.conf
配置prox ...
使用wrk测试api性能
Restful Api 压力测试有很多专业工具,但那些工具对于开发人员说过于复杂了(我觉得那些是给测试人员用的)。wrk 是一个简单的多线程的基于命令行的测试工具,它的一个很好的特性是用很少的线程压出很大的并发,能快速的验证接口的性能,比较适合开发场景。下面是使用过程记录。需要注意的是 wrk 只能运行在 linux 平台。
安装wrk需要从github拉代码并编译
git clone https://github.com/wg/wrk.git cd wrk make
编译成功后,会在当前目录中生成可执行的wrk。将其copy到bin目录。
sudo cp wrk /usr/local/binwhick wrk
使用wrk简单使用
命令
wrk -t4 -c10 -d10s -T3s --latency http://www.lefer.cn
-t4 开启四个线程
-c10 保持10个连接
-d10s 持续测试10秒
-T3s 超时设置为3秒
–latency 统计延迟分布
执行结果
[web@localhost ~]$ wrk -t4 -c10 -d10 ...
Centos7安装最新内核并开启BBR
Google 开源了 TCP BBR 拥塞控制算法,并提交到了 Linux 内核(> 4.9)。据悉,特别适用于网速不稳定的场景。根据网上的测试,在开启BBR后,网速甚至可以提升好几个数量级。 以下是我在GCP上开启BBR的步骤。系统版本是Centos 7。
# 更新系统yum update -y# 安装内核rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpmyum --enablerepo=elrepo-kernel install kernel-ml# 查看安装内核并设置,从返回结果中找到版本号最大的一行的序号,设置为默认启动awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg# 0是版本号最大的一行的序 ...
Spring Boot 多数据源的另一种实现
Spring Boot提供了一套比较完善的多数据源的自动化配置机制,比如这里,但它的缺点是无法应对数据源不确定的场景,即软件在真正交付使用之前不知道到底会配置多少数据源。所以我这里提供多数据源自动化配置的另一种实现方法。可以把数据源配置放在库里或者放在配置文件里,程序启动时会自动根据你配置的多少初始化为对应的连接池供程序使用。
实现思路st=>start: 开始op0=>operation: 创建单例模式类:>https://www.lefer.cn/posts/10448/op1=>operation: 读取配置op2=>operation: 循环初始化连接池op3=>operation: 放入map中op4=>operation: 对外提供获取方法e=>end: 结束st->op0(right)->op1(right)->op2(right)->op3(right)->op4->e
核心代码初始化连接池这里使用的是hikar作为连接池。dataSourceMap是存放连接池的map。
Hika ...
disruptor的理解和应用
disruptor是一个大名鼎鼎的高性能的线程间的消息传递库,国内的资料不是很多。我近期在一个项目中使用了disruptor,有了一点理解,尝试着表达出来。可能不对,希望大家指正。
disruptor能干什么,不能干什么disruptor是Java阻塞队列,比如 ArrayBlockingQueue的替代,它在性能上高于阻塞队列。disruptor是线程级的,无法在进程间共享,也不会提供持久化、灾备等系统级的功能。disruptor的用处是通过线程级的消息传递来做线程间的解耦,通过发布订阅模式,去实现线程级的并发。但disruptor不是HQ,MQ等消息队列容器的替代品,没有监控API,没有宕掉后的自动恢复机制,也不能被其他程序访问。
为什么用disruptor,而不是queue下图是queue的处理示意。queue的线程安全的读写,至少需要维持3个变量:尾部位置,头部位置,容量。写入线程需要争用头部位置,以便写入数据;读取线程需要争用尾部位置,以便读到数据(假定是不重复读场景);同时都要争用容量,容量满了不能再写,容量空了,也不应再读,读写成功后容量要加减。此时在三个争用位置处, ...
自定义通用URL协议实现在浏览器中打开本机任意程序
以前写过一篇文章,总结了跨浏览器调用的方法。近期遇到一个场景,需要在浏览器中去打开本地的客户端程序,而且限定不允许使用IE。所以我实现了一个通用协议。通过这个协议,可以从浏览器去打开本机任意程序并支持传参数。以下是具体内容。
注册协议将以下文件保存为.reg文件。导入注册表项,注册协议ff。你可以将所有的ff替换成别的字符串,来实现自己的协议。
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\ff]"URL Protocol"=""@="Genaral Call"[HKEY_CLASSES_ROOT\ff\DefaultIcon]@=""[HKEY_CLASSES_ROOT\ff\shell][HKEY_CLASSES_ROOT\ff\shell\open][HKEY_CLASSES_ROOT\ff\shell\open\command]@="cmd /v:on /k set m=%1 &&call set n=%% ...
如何处理 gitlab fork pull request 冲突
gitlab提供了git的一个ui界面,但是在处理冲突方面表现的不好,一些复杂场景还需要通过命令行来解决。本文所述即是一例,解决过程记录如下。
问题背景repo A :http://ip:port/share/adminApi.git
repo B: http://ip:port/esb_dept/adminApi.git
B是从A里fork出来的。在实际软件开发过程中,A是框架工程,B是由A派生而出的一个实际项目。
现在A发生了更新,需要将A的变动合并到B中。
正常情况下,通过gitlab,在repo A中新建合并请求到B即可,但由于repo B中有工程师修改了框架代码,导致产生冲突,合并失败。
解决步骤
在本地 B 项目根目录,查看可用的远程仓库。默认情况下,只会有repo B
[web@localhost esbadminapi]$ git remote -vorigin http://ip:port/esb_dept/adminApi.git (fetch)origin http://ip:port/esb_dept/adminApi.git (push)
将 rep ...
解决 Centos7 IDEA IBUS 无法输入中文的问题
网上很多帖子都在说环境变量的事,说要在/etc/profile 或idea.sh中增加:
export XIM="ibus"export XIM_PROGRAM="ibus"export XMODIFIERS="@im=ibus"export GTK_IM_MODULE="ibus"export QT_IM_MODULE="ibus"
但很多时候问题并不出在这里,而是由于你的ibus包安装不完整,至少应该安装以下包:
ibus-setup-1.5.17-2.el7.noarchlibusbmuxd-1.0.10-5.el7.x86_64ibus-libs-1.5.17-2.el7.x86_64ibus-kkc-1.5.18-7.el7.x86_64ibus-gtk3-1.5.17-2.el7.x86_64libuser-python-0.60-9.el7.x86_64libusbx-1.0.21-1.el7.x86_64ibus-gtk2-1.5.17-2.el7.x86_64ibus ...
VMware内CentOS7 /dev/mapper/cl-root 扩容
刚遇到/dev/mapper/cl-root空间不足的问题,就看到了CSDN上Wang_Xin_SH写的文章,非常好,所以转载收藏 (已在原文末留言转载,侵删)。
简介CentOS7虚拟机原硬盘空间只分配了10GB,需要扩容到20GB。环境:VMware 10
VMware分配空间选中虚拟机->虚拟机设置->硬盘->实用工具->扩展->设置最大磁盘大小->点击扩展
CentOS7内部分配可以参考:http://jingyan.baidu.com/article/54b6b9c0fc8b0b2d583b47c6.html
查看当前磁盘空间,/dev/mapper/cl-root硬盘空间只有8GB,打算扩容:
# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/cl-root 8.0G 3.8G 4.3G 47% /devtmpfs 482M 0 482M 0% /devtmpf ...
CentOS 7 直接安装 gcc 7
在一台没有安装过低版本gcc的系统里,如何安装gcc 7 ?以下是详细步骤。
使用开发工具集安装:
sudo yum install centos-release-sclsudo yum install devtoolset-7-gcc*scl enable devtoolset-7 bashwhich gccgcc --version
这种方法同样适用于安装gcc6,只需要将上面命令中7改成6即可。详情请参考:devtoolset