Centos7安装L2TP
L2TP是一种工业标准的Internet隧道协议,功能大致和PPTP协议类似,比如同样可以对网络数据流进行加密。不过也有不同之处,比如PPTP要求网络为IP网络,L2TP要求面向数据包的点对点连接;PPTP使用单一隧道,L2TP使用多隧道;L2TP提供包头压缩、隧道验证,而PPTP不支持。本文来介绍如何在CentOS上搭建L2TP。
数据结构之线段树
如果我们要求一个数组内任意区间的和,那么很容易想到用前缀和的方式去实现,每次计算任意区间和的时间复杂度都是O(1)。但是如果现在能对数组的任意一项进行修改,那么为了保证前缀和仍然有效,最坏情况下必须去更新前缀和数组的每一项,这样修改数据造成的时间复杂度是O(n)。所以线段树由此而生,它的目标也是求数组内任意区间的和,但对于数据的修改,它的时间复杂度只需要O(log n)。
短链接的生成方式
短链接是一种 URL 简化服务, 比如:当你输入一个 URL https://www.xdull.com 时,它将返回一个简化的URL http://tinyurl.com/weuZn ...
守护进程Supervisor
在一个分布式环境中,每台机器上可能需要启动和停止多个进程,使用命令行方式一个一个手动启动和停止非常麻烦,而且查看每个进程的状态也很不方便。为此Supervisor工具应运而生,它能够对很方便的对多个进程进行简单高效中心化管理。
蓄水池抽样算法
从n个数字中随机选取m个数字作为样本,要求这n个数字每个被选到的概率都相等。但如果n是不确定的,如何保证概率仍然相等?
CXXABI_1.3.8 not found
‘CXXABI_1.3.8’ not found运行程序时,出现c++依赖缺失错误,Error: /lib64/libstdc++.so.6: version 'CXXABI_1.3.8' not found
主要问题在于没有CXXABI_1.3.8,可通过如下命令检查:
1strings /usr/lib64/libstdc++.so.6|grep CXXABI
可以看到目前包是libstdc++.so.6.0.19
下载一个较新的版本libstdc++.so.6.0.26,将其上传到/usr/lib64/目录。
备份原来的libstdc++.so.6
1mv libstdc++.so.6 libstdc++.so.6.bak
创建新的libstdc++.so.6软链接
1ln -s libstdc++.so.6.0.26 libstdc++.so.6
再次检查是否有缺失的版本,可以看到CXXABI_1.3.8有了
1strings /usr/lib64/libstdc++.so.6|grep CXXABI
再次运行程序,错误解除。
附libstdc++. ...
JVM参数配置及调优
JVM参数分类jvm 参数可分为三类:
标准参数:以 “-“ 开头的参数
非标准参数:以 “-X“ 开头的参数
不稳定参数:以”-XX“ 开头的参数
标准参数标准参数是指在各个JVM版本中基本保持不变,相对比较稳定。
标准参数统一都是以 “-“ 开头,如:
1java -classpath E:/code -Dprofile=dev HelloWorld tom jack
注意:其中HelloWorld 是被运行的 HelloWorld.class。HelloWorld 之前就是设置的JVM标准参数(-classpath、-D),HelloWorld 之后的参数(tom、jack)是用来传给 main(String[] args) 方法的args数组变量的,两者位置不要放错。
查看所有标准参数:
打开一个命令终端,执行 java -help,就可以展示所有的JVM标准参数。
非标准参数非标准参数表示不保证所有JVM实现都支持这些参数,在将来的JVM版本中可能会发生改变。非标准参数统一以 -X 开头,如 -Xmx20M 设置最大java堆大小,示例:
1java -classpa ...
Kafka快速入门
基本概念AR:分区的所有副本集合,AR=ISR+OSR
ISR:与leader副本一定程度同步的所有副本(包括leader副本)
OSR:与leader副本同步滞后过多的副本集合
HW:高水位,所有副本都同步到的offset,消费者只能拉取HW之前的消息
LEO:Log End Offset,待写入消息的offset,即最后一条消息的offset+1
安装JDK安装123456789101112131415# 解压jdk压缩包至/opttar zxvf jdk-8u181-linux-x64.tar.gz# 配置jdk环境变量vim /etc/profile# 添加如下配置export JAVA_HOME=/opt/jdk1.8.0_181 export JRE_HOME=$JAVA_HOME/jreexport PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib# 使配置生效source /etc/profilejava -version
ZooKeeper安装12345678910111 ...
Redis五种数据类型
String键值对
12345678910> set name codehole OK > get name "codehole"> exists name (integer) 1 > del name (integer) 1 > get name (nil)
批量键值对
12345678910111213> set name1 codehole OK > set name2 holycoder OK > mget name1 name2 name3 # 返回一个列表1) "codehole" 2) "holycoder" 3) (nil) > mset name1 boy name2 girl name3 unknown > mget name1 name2 name3 1) "boy" 2) "girl" 3) "unknown"
过期时间
12345678910111213> set name c ...
Typora激活方法
前言Typora自正式版1.0.0发布后,需要付费获取激活码才能使用,beta版仍可继续免费使用。
以下方法采用非常规方法在1.0.4版本亲测激活成功,特别声明:该方法仅供学习交流,切勿用于任何商业用途。
准备首先需要获得asar的解包和打包工具,工具的使用依赖于以下环境:
python环境
node环境(可选)
源码地址:https://github.com/Mas0nShi/typoraCracker
步骤1.获取工具源代码,进入到工具的根目录。
2.安装工具所需依赖环境:
1pip install -r requirements.txt
该命令需要本机安装有Visual Studio C++ Build Tools,否则安装过程会报错。
3.找到Typora安装目录下的app.asar文件,例如:C:\Program Files\Typora\resources\app.asar。
4.执行工具解包命令:
1python typora.py "C:\Program Files\Typora\resources\app.asar" workstation ...