Tmux常用命令与快捷键
Tmux 常用命令与快捷键详解1. 什么是 Tmux?Tmux(Terminal Multiplexer)是一个优秀的终端复用软件,类似 GNU Screen,但来自于 OpenBSD,采用 BSD 授权。 使用 Tmux 最直观的好处是: 多窗口运行:通过一个终端登录远程主机后,可以开启多个控制台,无需多次连接 SSH。 会话保持:即使断开终端连接,服务器端的会话仍会运行,重新连接后可以随时恢复。 安装方式在 Ubuntu/Debian 系统中: 1sudo apt-get install tmux 2. 核心概念Tmux 使用 C/S(客户端/服务器)模型构建,主要包含以下层级: Server (服务器):输入 tmux 命令时即开启。 Session (会话):一个服务器可以包含多个会话。 Window (窗口):一个会话可以包含多个窗口(类似浏览器标签)。 Pane (面板):一个窗口可以分割成多个面板(类似分屏)。 3. 会话管理 (Session)会话是 Tmux 的最高层级,建议通过会话来组织不同的任务。 功能 命令...
CyclicBarrier详解
之前的文章中讨论过了[[CountDownLatch详解| CountDownLatch]]的使用方法和原理。今天再来讨论一下CyclicBarrier,CyclicBarrier的使用场景其实和CountDownLatch非常相似,用法也非常像,唯一地区别就是,不像CountDownLatch那样用一次就没了,CyclicBarrier可以重复使用。就像它名字的含义:“可以重复使用的栅栏”。今天将依然分别从它的使用和原理进行讨论。 1. CyclicBarrier的使用首先看看JavaDoc中给出的例子: 12345678910111213141516171819202122232425262728293031323334353637383940414243class Solver { final int N; final float[][] data; final CyclicBarrier barrier; class Worker implements Runnable { int myRow; Worker(int ...
End-to-End Encrypted Traffic Classification with One-Dimensional Convolution Neural Networks
此篇方法是第一个将端到端的方法应用到加密流量分类领域,使用数据集ISCX-VPN-NonVPN-2016数据集进行研究。 1、概念介绍1.1 流量加密技术依据ISO/OSI层的不同,加密技术可以分为 应用层加密:应用程序在应用层实现自己的协议以实现数据的安全传输(如BitTorrent或Skype),在一些论文中也称为常规加密。 表示层加密 网络层加密:如IPSec加密协议 1.2 常见加密协议 IPSec协议:网络层加密协议。分为传输与隧道两种模式 传输模式:在IP报头和高层协议报头中插入一个IPSec报头,该模式不会改变IP报头中的目的地址,源IP地址也保持明文状态。 隧道模式:报文的源IP地址以及数据被封装成一个新的IP报文,并在内部和外部报头之间插入一个IPSec报头,原来的IP地址作为需要进行安全业务处理的一部分来提供安全保护,并且该模式下,可以对整个IP报文进行加密操作,常用来实现虚拟专用网VPN。 SSL/TLS协议:传输层协议。对于TLS,简单地说,是在TCP层之上再封装了SSL层。安全套接层协议 SSL 提供应用层和传输层之间的数...
Git常用命令
Git命令集合1. 提前配置12git config --global user.name USERNAME #配置用户名git config --global user.email USEREMAIL #配置用户邮箱 2. 提交步骤12345git init #初始化git仓库git status #查看文件状态git add #添加到缓存区,追踪文件git commit -m MESSAGE #提交信息,向仓库中提交代码git log #查看提交记录 3. Git撤销123git checkout FILENAME #用暂存区的文件覆盖工作目录中的文件git rm --cached FILENAME #将文件从暂存区删除git reset --hard COMMITID #将git仓库中指定的更新记录恢复出来,并覆盖暂存区和工作目录 4. Git分支1234567git branch #查看分支git branch 分支名称 #创建分支git checkout 分支名称 #切换分支git merge 来源分支 #合并分支git bran...
Deep Packet: A Novel Approach For Encrypted Traffic Classification Using Deep Learning
论文提出的方案称为“深度包”(deep packet),可以处理网络流量分类为主要类别(如FTP和P2P)的流量表征,以及需要终端用户应用程序(如BitTorrent和Skype)识别的应用程序识别。与现有的大多数方法不同,深度报文不仅可以识别加密流量,还可以区分VPN网络流量和非VPN网络流量。网络架构基于CNN与SAE,能同时进行应用识别与流量类型的分类任务。 1、介绍 准确的流量分类已成为提供适当的服务质量(quality of service, QoS)、异常检测等高级网络管理任务的先决条件之一。流量分类在与网络管理相关的学术界和工业界都引起了极大的兴趣。 本文贡献: 在Deep Packet中,不需要专家来提取与网络流量相关的特征。这种方法省去了查找和提取特征的繁琐步骤。(只要是基于DL的方法都能做到这一点) Deep Packet可以在两个粒度级别(应用程序识别和流量表征)上识别流量,并获得最先进的结果。 深度数据包可以准确地分类最难的一类应用程序,已知是P2P。 2、相关工作 Port-based approach(基于端口):提取过程简单,端口号不受...
InnoDB中MVCC的实现原理
MVCC 在 MySQL InnoDB 中的实现主要是为了提高数据库并发性能,用更好的方式去处理读-写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。 本文将从以下几点进行讨论: 前置知识介绍; MVCC的原理; MVCC相关的问题 1. 前置知识介绍1.1 快照读和当前读当前读:像 select lock in share mode (共享锁), select for update; update; insert; delete (排他锁)这些操作都是一种当前读。就是它读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。 快照读: 不加锁的select操作就是快照读,即不加锁的非阻塞读。是基于提高并发性能的考虑,快照读的实现是基于多版本并发控制,即MVCC,可以认为MVCC是行锁的一个变种,但它在很多情况下,避免了加锁操作,降低了开销;既然是基于多版本,即快照读可能读到的并不一定是数据的最新版本,而有可能是之前的历史版本。 注意:快照读的前提是隔离级别不是串行级别,串行级别下的快照读会退化成当前读。 1.2 当前读,...
JVM中的引用
JVM中的引用有五种,分别是:强引用、软引用、弱引用、虚引用、终结器引用(引用强度逐渐减弱)。区分这几种引用的主要原因是可以根据不同强度的引用来使用不同的垃圾回收策略。 1. 强引用(Strongly Reference)JVM中的默认的引用关系就是强引用,即对象被局部变量、静态变量等GC Root关联的对象引用,只要这层关系存在,普通对象就不能被回收。 2. 软引用(Soft Reference)软引用的引用强度弱于强引用,当一个程序的内存不足时,就会将软引用中的数据进行回收。 软引用主要用于实现缓存。如: 12345678910111213141516public class MyCache { private static Map<Integer, SoftReference<Object>> cache = new ConcurrentHashMap<>(); public static Map<Integer, SoftReference<Object>> getIns...
InnoDB中的Change Buffer是个啥?
Change Buffer 是作为InnotDB的一个优化技术,用于减少对MySQL的磁盘IO操作,从而提升磁盘性能。本文将从一个解决问题的角度来了解一下Change Buffer是个啥。 1. Change Buffer总览众所周知,存储引擎瓶颈有很大一部分来源于对磁盘的随机IO操作。那么对于频繁的随机磁盘IO操作有哪些优化方案呢? 一般情况下,最常见的思路就是,直接加一层读缓存即可,此方案实现起来并不是很复杂。 但是,如果能让写请求也减少与磁盘的IO操作,那性能不是能再提升一步吗?没错,Change Buffer就是针对此方案的成果。整体的结构总览如下: 官方文档中,对Change Buffer的定义如下:更改缓冲区是一种特殊的数据结构,当二级索引页不在缓冲池中时,它会缓存对二级索引页的更改。可能由INSERT、UPDATE或DELETE(DML) 操作导致的缓冲更改,稍后在其他读取操作将页面加载到缓冲池时合并。 注意: 这里为什么声明了二级索引?不要着急,后面会解释。 接下来我们看看它的工作流程。 2. Change Buffer的工作流程假定一个场景,要对...
JVM介绍及结构
1. 什么是JVM?JVM指的是Java虚拟机,本质上是一个运行在计算机上的程序,负责运行Java字节码文件。充当一个适配器的角色,以实现Java跨平台的特性。 1.1 JVM的功能 解释执行字节码指令 管理内存中对象的分配,完成自动的垃圾回收 优化热点代码以提升效率(JIT) 1.2 JVM的组成总体分为,类加载子系统、运行时数据区、执行引擎、本地方法接口四部分。如图: 2. 运行时数据区组成运行时数据区指的是JVM所管理的内存区域。按照是否线程共享分类,分为两类: 线程共享: 方法区、堆 线程不共享: 本地方法栈、虚拟机栈、程序计数器 如下图所示: 2.1 程序计数器(Program Counter Register)也叫PC寄存器,每个线程通过PC来记录当前要执行的字节码地址。主要作用有两个: 用于控制程序指令的进行,实现分支、跳转、异常等逻辑; 多线程下,JVM通过PC记录线程切换钱执行到哪一句指令,并继续解释执行。 2.2 虚拟机栈数据结构如其名,采用栈结构来管理方法调用中的基本数据,每个方法调用采用一个栈帧来保存。每个线程都会包含自己的虚拟机栈。因此,生...
JVM中常见的垃圾回收算法
了解垃圾回收算法前,需要先了解评价垃圾回收算法的评价标准和指标。有以下几点: 吞吐量 最大暂停时间 内存使用效率(堆使用效率)在这里不做过多介绍。 1. 总览垃圾回收算法的整体迭代历史如下: 标记-清除算法(Mark Sweep GC):于1960年发布; 复制算法(Copying GC):于1963年发布; 标记-整理算法(Mark Compact GC) 分代GC(Generational GC) 2. 标记-清除算法(Mark Sweep GC)标记-清除算法核心分为两个阶段: 标记阶段:将所有存活的对象进行标记; 清除阶段:从内存中删除没有标记的对象,即非存活对象。 优点很明显,实现简单。整体逻辑就是标记存活对象,然后删除非存活对象即可。 缺点 碎片化问题严重:由于内存是连续的,在对象被删除后,内存中会出现很多内存碎片,如果需要分配一个较大的对象的话,可能会出现,剩余总量够,但依然无内存可分配的情况; 分配速度太慢:其实也是碎片化的问题造成的。由于内存碎片的存在,要想分配空间,就必须维护一个表用于记录空闲内存。有一定可能需要遍历整个表才能获得合适的内存空间。 ...