WiFi密码破解教程
本文基于 Oracle VirtualBox
本文基于 kali-linux-2022.4-virtualbox-amd64
本文基于 RT3572(同时支持 2.4GHz 和 5GHz) 无线网卡
本文基于 Aircrack-ng 1.7
前置准备虚拟机 VirtualBox虚拟机的安装和 Kali-Linux 的安装不再赘述,读者可自行搜索安装教程。
Kali-Linux
我们不建议将 Kali-Linux 作为你的主力操作系统。俗话说的好: Kali 用的好,牢饭吃到饱😈
Kali-Linux 是基于 Debain 的 Linux 发行版,其内部预先安装了众多的安全审计工具,戳这里了解更多。
我们可以前去 Kali-Linux 下载系统镜像或者虚拟机安装包。我们一般推荐 Installer Images 和 Virtual Machines 这两个版本,当然你也可以根据自己的需要下载对应的版本。
无线网卡
网卡可以去某宝搜索 RT3070 和 RT3572 关键词,几十块就可以搞定。
笔记本的网卡、台式机的网卡和外置的台式机外卡一般都不可使用。
无线网卡需要事先被虚拟 ...
Java 夜话(1)
背景今天上班时被问到一个问题,题目如下:
给定一个 Set<String> 里面一些列关键字字符串,现要求,给定一个长度 length,要求 Set 中的关键字组成一个用 , 分割的并且不超过给定长度的字符串,但 , 不算字数,每个关键词可以随意组合,每个关键词只能使用一次。
例如:Set(String) = {“你好”, “世界”, “来玩”, “LOL”, “学习”, “天气好”, “明天下雨”},length = 5
其中一个正确的输出为 {“你好,世界”, “来玩,LOL”, “学习,天气好”, “明天下雨”},答案并不固定,只需要符合要求即可。
实现我们需要记录下 , 的个数,使用 StringBuilder 来构造候选结果集元素,候选结果集元素是包含 , 的全部字符,我们只需要用候选结果集元素减去逗号的个数就能得到真正的字符长度,用此长度来与 length 比较即可。
此种方法并不是最优解,只是遍历了一遍 Set 集合,并没有主动寻找最优的字符串。
public List<String> m1(Set<String> ...
Java 单点应用获取方法调用链路分析
本文基于 slot
本文基于 JDK1.8
方法与线程JVM 规范中虚拟机栈为线程私有,每个方法在执行时都会在虚拟机中创建一个栈帧。每一个栈帧表示没有执行完的方法,执行完的的方法,其栈帧会被弹出栈。
如何存放方法调用链路如果想记录应用的方法调用链路,那么首要的问题就是这些调用数据应该存在什么地方才能够被全局访问到,并且是线程隔离的。
Java 提供 ThreadLocal 来隔离各个线程的私有变量,我们只需要在 ThreadLocal 中村放各个线程的调用 Stack 即可。
链路追踪关于链路追踪的原理可以参阅 Google 发布的一篇论文 《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》
slot 的实现较为简单还不是很成熟,只遵循了 OpenTelemetry 的部分语义,后续会实现 OpenTracing 的全部语义。
全局 traceId 控制具体实现为 TraceContext
public class TraceContext { // 每个线程的 TraceId 私有 ...
hdfs 如何精细化为用户赋权
本文基于 Hadoop-3.3.5
hdfs 权限模型
具体可以参阅 HDFS Permissions Guide
hdfs 实现了一套 POSIX 模型。权限分为可读权限(r)、可写权限(w)和可执行权限(x)。
对于文件,需要可读权限才能读取文件,并且需要可写权限才可以往文件中写或者追加内容,hdfs 不存在可执行文件的概念。
对于目录,需要可读权限才能列出目录的内容,可写权限可以创建或删除文件或目录,并且需要可执行权限才能访问目录子内容。
每个文件和目录都与所有者和一个组关联。 该文件或目录为所有者(owner),组成员的其他用户(group)以及所有其他用户(other)具有单独的权限。
drwx(owner)r-x(group)r-x(other) - hdfs hdfs 0 2023-03-27 00:00 /user
HDFS 还为 POSIX ACL(访问控制列表)提供了可选的支持,以增强对特定命名用户或命名组的详细规则的文件权限。这也是以最小粒度分配文件权限的基础。
hdfs 用户hdfs 其实并不提供用户功能,一般的,hdfs 使用的是 ...
Apache Livy 如何将 SparkSQL 结果作为 json 返回的方法分享
本文基于 Apache Livy-0.8.0-incubating-SNAPSHOT,Apache Spark-3.3.1,Apache Hadoop-3.3.4读者需要自行编译相关版本
Apache Livy
livy 的默认端口为 8998
Apache Livy 是一项服务,可通过 REST 接口与 Spark 集群轻松交互。 它支持通过简单的 REST 接口或 RPC 客户端库轻松提交 Spark 作业或 Spark 代码片段、同步或异步结果检索以及 Spark 上下文管理。Apache Livy 还简化了 Spark 与应用程序服务器之间的交互,从而使 Spark 能够用于交互式 Web/移动应用程序。
livy 的相关配置和使用还请读者自行阅读。
Apache SparkApache Spark 是一种多语言引擎,用于在单节点机器或集群上执行数据工程、数据科学和机器学习。
spark sql 的相关使用和配置还请读者自行阅读。
livy 结果返回格式说明
所有操作均可通过接口测试工具 PostMan 进行
我们主要会想要获取每个 statement 的执行 ...
Java 无痕埋点实现思路分享-javaagent篇
本篇文章基于我的开源 slot 工程。本文基于 jdk8 编写
埋点系统对比一般的,埋点系统可分为两大类:侵入式埋点和无侵入式埋点。
侵入式埋点一般通过 SDK 来提供埋点能力。
侵入式埋点优点
埋点粒度可以随意控制,想在哪埋点就在哪埋点
使用简单,开发人员根据需要在指定的业务代码处调用 API 即可
侵入式埋点缺点
需要对业务代码进行改造,可能会需要重新进行回归测试和重新发版
对业务人员不友好,所有的埋点操作都需要通过研发人员进行操作,对于业务的响应有滞后
无侵入埋点一般通过 agent 来实现。
无侵入埋点优点
无需对原有的业务代码进行改造
对业务人员较友好,业务人员可以配置需要埋点的内容
无侵入埋点缺点
埋点粒度无法控制,只能依托于埋点 agent 的实现粒度。
埋点的时效性只能依托于埋点 agent 实现,如果是通过 javaagent 来实现,那么需要重启应用来刷新埋点配置,如果是 attach 来实现则无需重启应用。
javaagent
在这片文章中对于 javaagent 只做简单介绍,无痕埋点的思路是本篇文章的重点。
如果读者想深入了解 ja ...
Hexo+Butterfly+GitHubPages 搭建个人博客
你可能会问本站是怎么来的?既然你诚心诚意的发文了,那我就大发慈悲的告诉你!
前置准备安装 git前去 gitbash 官网 根据自己的系统下载 gitbash。
如果你从未安装过 gitbash,那么在安装过程中只要一路默认即可,需要注意的是软件的安装路径;如果你安装过 gitbash,那么就按自己的喜好进行安装即可。
当你已经安装好 gitbash 后,我们还需要一些必要的配置,请到工作目录右键选择 Git bash here 来启动 gitbash,并在终端执行如下命令:
# 设置 Git 用户名:git config --global user.name "your github username"# 确认您正确设置了 Git 用户名:git config --global user.name# 设置 Git Email:git config --global user.email "your github email"# 确认在 Git 中正确设置了电子邮件地址:git config --global user.email
配置 G ...