Linux下使用iptables禁止指定IP地址的网络连接

在Linux下,使用iptables来维护IP规则表。要封停或者是解封IP,其实就是在IP规则表添加规则。
要禁止指定IP地址的网络连接,可以使用以下两种方法来快速实现。

1.禁止特定IP的连接
要禁止一个IP,使用下面这条命令:
iptables -I INPUT -s ***.***.***.*** -j DROP

要解封一个IP,使用下面这条命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

参数-I是表示 Insert (添加),-D表示 Delete (删除)。后面跟的是规则, INPUT 表示入站,***.***.***.*** 表示要封停的IP, DROP 表示放弃连接。

service iptables save
service iptables restart

可以使用下面的命令来查看当前的IP规则表: 
iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       all  --  120.120.120.36       anywhere                      

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

如果输出非常慢,可使用:
iptables -n -L
-n选项,主机和端口都以数字形式输出,不会去查询主机名(DNS查询是比较慢的)


2. 禁止IP段的网络连接
添加IP段到封停列表中: 
iptables -I INPUT -s 121.0.0.0/8 -j DROP

CentOS 7 SSH使用证书登录

客户端建立私钥和公钥
在客户端终端运行命令
ssh-keygen -t rsa


ssh服务端配置
vi /etc/ssh/sshd_config
# 是否让 sshd 去检查用户家目录或相关档案的权限数据,
# 这是为了担心使用者将某些重要档案的权限设错,可能会导致一些问题所致。
# 例如使用者的 ~.ssh/ 权限设错时,某些特殊情况下会不许用户登入
StrictModes no
# 是否允许用户自行使用成对的密钥系统进行登入行为,仅针对 version 2。
# 至于自制的公钥数据就放置于用户家目录下的 .ssh/authorized_keys 内
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys


把客户端的公钥添加到服务器的authorized_keys
vi ~/.ssh/id_rsa.pub
复制到服务器上的
/home/username/.ssh/authorized_keys
文件中


服务端重启sshd
systemctl restart sshd


客户端通过私钥登录ssh服务器
ssh -i ~/.ssh/id_rsa name@


每次敲命令,都要指定私钥,是一个很繁琐的事情,所以我们可以把私钥的路径加入ssh客户端的默认配置里
vi /etc/ssh/ssh_config
#其实默认id_rsa就已经加入私钥的路径了,这里只是示例而已
IdentityFile ~/.ssh/id_rsa
#如果有其他的私钥,还要再加入其他私钥的路径
IdentityFile ~/.ssh/blue_rsa

OnePlus 5T刷机

OnePlus 5T OxygenOS http://downloads.oneplus.net/
H2OS http://www.h2os.com/download

http://www.oneplusbbs.com/thread-3841246-1-13.html

第一步:打开手机设置-关于手机-连续点击版本号(5-7次)打开开发者选项
第二步:设置-开发者选项-打开OEM解锁、USB调试和高级重启选项

下载一加5T工具箱v1.5.3版 http://www.oneplusbbs.com/thread-3798911-1-1.html

启动工具箱
0 检查手机状态
16 启动设备到Fastboot模式

3 检查是否解锁
4 解锁手机(解除BootLoader锁)
手机按照提示选YES

9 刷写ROM或ZIP包(从USB安装升级文件)
拖入rom文件到5T工具箱
注意:ROM文件路径中不能出现中文

重启
!!!拷贝APP到手机!!!

6) 刷写第三方Recovery(TWRP)
自带的twrp-3.2.1-0

8) 刷写自选Recovery
拖入twrp-3.2.1-1-dumpling.img文件到5T工具箱
注意:ROM文件路径中不能出现中文

刷入氧OS:
重启设备到Recovery模式
如果您是第三方TWRP Recovery,刷写任意ROM或ZIP包(ROOT权限包等),请依次点击”Advanced”(高级) ADB Sideload,并滑动 显示”正在启动adb sideload”即为启动成功

音量键加 + 电源键,进入FastBoot模式
8) 刷写自选Recovery
拖入twrp-3.2.1-1-dumpling.img文件到5T工具箱
注意:ROM文件路径中不能出现中文

进入twrp
刷入SuperSU
重启

打开SuperSU

设置 – 按键 – 切换按钮
Home键长按操作:关闭屏幕

Nexus 6P刷机

下载:
https://dl.twrp.me/angler/
http://www.supersuer.com/
http://repo.xposed.info/module/de.robv.android.xposed.installer

刷入系统:
flash-all.bat

启动并按提示设置完毕

刷入twrp:
fastboot flash recovery twrp-3.2.1-0-angler.img
再执行一次:
fastboot flash recovery twrp-3.2.1-0-angler.img

开机
拷贝SuperSU-v2.82-201705271822.zip到SD卡

重启手机进入recovery
刷入SuperSU

去除网络连接感叹号:
adb shell settings put global captive_portal_mode 0

安装XposedInstaller_3.1.4.apk

VS2015 vcpkgsrv.exe进程CPU占用高的解决方法

是 VC 智能感知问题,可以禁了。
方法是: 菜单: 工具 -》 选项 -》 文本编辑器 -》 C++ -》 高级
右边 Intellisense false 改为 Ture
注意:此设置会导致无法使用代码高亮与智能提示

其他减少VS的CPU占用率的方法:
工具 -》 选项 -》 搜索codelens, 将 启用 取消勾选,重启VS
工具 -》 选项 -》 源代码管理 -》 当前源代码管理插件:无

FFmpeg新版API接口编译报错解决方法

PIX_FMT_YUV420P -> AV_PIX_FMT_YUV420P


'AVStream::codec': 被声明为已否决:
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO){
=>
if(pFormatCtx->streams[i]->codecpar->codec_type==AVMEDIA_TYPE_VIDEO){


'AVStream::codec': 被声明为已否决:
pCodecCtx = pFormatCtx->streams[videoindex]->codec;
=>
pCodecCtx = avcodec_alloc_context3(NULL);
avcodec_parameters_to_context(pCodecCtx, pFormatCtx->streams[videoindex]->codecpar);


'avpicture_get_size': 被声明为已否决:
avpicture_get_size(AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height)
=>
#include "libavutil/imgutils.h"
av_image_get_buffer_size(AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height, 1)


'avpicture_fill': 被声明为已否决:
avpicture_fill((AVPicture *)pFrameYUV, out_buffer, AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height);
=>
av_image_fill_arrays(pFrameYUV->data, pFrameYUV->linesize, out_buffer, AV_PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->height, 1);


'avcodec_decode_video2': 被声明为已否决:
ret = avcodec_decode_video2(pCodecCtx, pFrame, &got_picture, packet); //got_picture_ptr Zero if no frame could be decompressed
=>
ret = avcodec_send_packet(pCodecCtx, packet);
got_picture = avcodec_receive_frame(pCodecCtx, pFrame); //got_picture = 0 success, a frame was returned
//注意:got_picture含义相反


'av_free_packet': 被声明为已否决:
av_free_packet(packet);
=>
av_packet_unref(packet);



Xcode 编译 OpenCV3

下载CMake,https://cmake.org/download/
下载OpenCV源码,解压

====
GUI编译方法:
安装,启动CMake
Browse Source 指到OpenCV源码目录
Browse Build 指向一个新的目录,例如/Users/lee/Downloads/opencv-3.4.1/gui_release
Configure
选择Unix Makefiles
等待执行完毕
Generate

cd gui_release
make -j4
sudo make install
====

====
命令行编译方法:
安装,启动CMake,打开 Tools - How to install For Command Line Use,按照说明操作

cd /Users/lee/Downloads/opencv-3.4.1
mkdir release
cd release
cmake -G "Unix Makefiles" ..
make
sudo make install
====


====
在终端中使用:
mkdir TestOpenCV
cd TestOpenCV


vi CMakeLists.txt
#版本
cmake_minimum_required(VERSION 2.8)

#项目名称
project( test )

#设置OpenCV所在目录,为后面的find_package提供位置
#OpenCV_DIR为OpenCV源码编译后得到的文件夹(如上面的release目录)
set( OpenCV_DIR /Users/lee/Downloads/opencv-3.4.1/release )

#会在OpenCV所在目录查找配置文件OpenCVConfig.cmake
find_package( OpenCV REQUIRED )

#向工程添加源文件
add_executable( test main.cpp )

#添加链接库
target_link_libraries( test ${OpenCV_LIBS} )


vi main.cpp
#include 
using namespace cv;
int main(int argc, char** argv) {
    Mat image;
    image = imread("/Users/lee/Downloads/20180128214955.jpg", 1);
    namedWindow("Display Image", WINDOW_AUTOSIZE);
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}


cmake .
make
./test
会显示对应的图片
====


====
在Xcode中使用:
创建C++项目
项目属性 - Build Settings - Search Paths
Header Search Path = /usr/local/include/
Library Search Path = /usr/local/lib
在项目下创建lib目录,Add Files To,Command+Shift+G,输入/Usr/local/lib,将所有不带箭头的文件添加进去

#include 
using namespace cv;
int main(int argc, char** argv) {
    Mat image;
    image = imread("/Users/lee/Downloads/20180128214955.jpg", 1);
    namedWindow("Display Image", WINDOW_AUTOSIZE);
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

编译运行
====

Epson驱动编译

[root@localhost epson-inkjet-printer-escpr-1.6.16]# find / -name “libescpr.so”
/root/epson-inkjet-printer-escpr-1.6.16/lib/.libs/libescpr.so
/usr/local/lib/libescpr.so

[root@localhost epson-inkjet-printer-escpr-1.6.16]# find / -name “libescpr.so”
/root/epson-inkjet-printer-escpr-1.6.16/lib/.libs/libescpr.so
/usr/local/lib/libescpr.so
/opt/epson-inkjet-printer-escpr/lib/libescpr.so

rpm -qp –scripts ../epson-inkjet-printer-escpr-1.6.16-1lsb3.2.x86_64.rpm

ln -sf /opt/epson-inkjet-printer-escpr/ppds /usr/share/ppd/epson-inkjet-printer-escpr