Java运行时分析工具
Jps
jps 可以看到运行中的java进程
1 | sh-4.2$ jps |
Jcmd
jcmd可以看到运行中的java进程以及参数
1 | sh-4.2$ jcmd |
Jmap
jmap是可以查看整个JVM内存的工具。
jps 可以看到运行中的java进程
1 | sh-4.2$ jps |
jcmd可以看到运行中的java进程以及参数
1 | sh-4.2$ jcmd |
jmap是可以查看整个JVM内存的工具。
1 | sudo yum remove docker \ |
1 | kubeadm init --pod-network-cidr 10.244.0.0/16 --control-plane-endpoint k8s-control-plane-endpoint-vip:6443 --upload-certs --kubernetes-version=v1.22.1 |
1 | 加入控制平面 |
这篇Blog记录了笔者对《破坏之王: DDoS攻击与防范深度剖析》的学习记录,贡献出来和大家一起学习。
为什么学这个,笔者的服务在2021年9月4日晚上遭受了惨重的DDoS攻击,攻击者使用了100多台肉鸡,对笔者对服务进行了持续的CC攻击,最终导致产生了18TB的流量,这部分费用总计高达4000元人民币,当然在腾讯工作人员的积极帮助下,对这笔费用进行了处理,笔者也不用对这些费用进行支付,所以笔者在此由衷地感谢腾讯云团队,另外也感谢笔者的大学室友,谢谢你们的帮助。
语法制导翻译分为两类,一类是S型语法制导翻译,另一类是L型语法制导翻译。这里我们主要介绍S型语法制导翻译,因为他更简单,更加适用于语法树。
当我们构建出语法书以后,其每个节点与自己的子节点的关系就是产生式的关系,对语法树进行DFS就是遍历整个语法树,很多信息可以在遍历的过程中自底向上进行逐步翻译。
经过了前面的LL语法分析,现在我们进入到了LR语法分析,LR语法分析也是一套算法,这里主要介绍两个,一个是SLR算法,领个是LR1算法。
LR语法分析本质上为从左到右自底向上算法,从左到右一个一个读入字符,然后按照产生式进行规约,直到规约出文法开始的符号。
LR语法分析最重要的就是移入和规约。下面举一个例子来理解移入和规约。
1 | 加法:( |
文法的种类有很多,正则文法,上下文无关文法,上下文有关文法。
这一块内容就是我们平时所用到的正则表达式的文法,他的词是各个字符。
上下文无关文法涉及到4个定义
例子
1 | 加法: |
上诉文法可以接受 1+2, 我们只需要把1和2视为number,即可,此时的词法单元就是1,2,+
由于高级程序设计语言基本可以被视为上下文无关文法,文法的语法分析有很多算法,后面会依次对他们进行介绍。
词法分析,如其名,只分析词语,即token,词是一个文法的最小单元。至于什么是文法,后面会介绍,这里不需要过多忧虑。
比如我们有一个代码,这个代码和c/c++很相似(但是这个是pava代码,读者目前可以理解为c代码),这是一个计算斐波那契数列的代码,他的词法分析结果是什么呢?
1 | int fib(int x){ |
下文的代码就是词法分析结果, 词法分析器从源文件依次读取,然后分割出最小的词法单元,