如果想验证一个日志文件,是否匹配 error、ERROR、Error 中的任何一个?
到底是 3 次 contains 快,还是直接 "error|ERROR|Error" 更快?
实战测试
我们用一个长文本 8k 左右,循环 100W 次。
基本变量
public class PerConst {
public static final int times = 1000000;
public static final String log = "8K 长的文本";
}
如果想验证一个日志文件,是否匹配 error、ERROR、Error 中的任何一个?
到底是 3 次 contains 快,还是直接 "error|ERROR|Error" 更快?
我们用一个长文本 8k 左右,循环 100W 次。
public class PerConst {
public static final int times = 1000000;
public static final String log = "8K 长的文本";
}
生产 oom,分析如何产生的原因。
https://github.com/electerm/electerm
通过 sz 命令下载。
如果没有下载,那么使用 yum install lrzsz 安装。
分析dump文件,我们可以用jdk里面提供的jhat工具,执行
用于生成与给定正则表达式匹配的字符串的 Java 库。
它可以帮助您根据索引从匹配的字符串中生成与给定正则表达式匹配的所有字符串、随机字符串或一个字符串。
Generex 基于图书馆 http://www.brics.dk/~amoeller/automaton/。
生成与正则表达式匹配的随机字符串。
指定随机生成的字符串的最小/最大长度。
生成匹配正则表达式的所有字符串的列表,如果匹配正则表达式的字符串数量大于 Integer.MAX_VALUE ,则返回的列表将包含不超过 java.util.List 的大小限制的字符串,即 Integer.MAX_VALUE (在这种情况下,请参阅迭代器的功能)。
根据字典顺序生成与 Regex 匹配的字符串子列表。
给定一个索引 'n' ,按照与 Regex 匹配的字符串列表的字典顺序生成第 n 个元素。
准备一个迭代器,循环遍历与正则表达式匹配的所有字符串。 即使匹配给定正则表达式的字符串集是无限的。
这个 Java 包包含一个带有 Unicode 字母表 (UTF16) 的 DFA/NFA(有限状态自动机)实现,并支持标准正则表达式操作(连接、联合、Kleene 星)和许多非标准操作(交集、补集、 等等。)
与许多其他自动机/regexp 包相比,这个包快速、紧凑,并实现了真正的、不受限制的常规操作。
它使用基于 Unicode 字符间隔的符号表示。
完整的源代码和文档在 BSD 许可下可用。
最新版本 1.12-3 于 2021 年 8 月 11 日发布。 (ChangeLog)
dk.brics.automaton 包由奥胡斯大学的 Anders Møller 开发,其中包括来自 Alexandar Bakic、Jodi Moran、Brandon Lee、David Lutterkort、John Gibson、Alex Meyer、Daniel Lowe、Harald Zauner、Dawid Weiss 的贡献、建议和错误报告 、罗伯特·缪尔、汉斯-马丁·阿多夫、戴尔·理查森、雅尼克·弗斯利、古斯塔夫·伦德、维克多·贝切特、阿斯特丽德·穆里尔·温贾·尤南、瓦伦丁·维斯托尔茨、西蒙·格雷格森和刘易斯·约翰·麦吉布尼。
适用于 Java 平台的安全、动态跟踪工具
BTrace 是用于 Java 平台的安全、动态跟踪工具。
BTrace 可用于动态跟踪正在运行的 Java 程序(类似于 OpenSolaris 应用程序和操作系统的 DTrace)。
BTrace 动态检测目标应用程序的类以注入跟踪代码(“字节码跟踪”)。
您将需要安装以下应用程序
Git
JDKs - JDK 8, Java 9 and Java 11 are required to be available
(optionally, the default launcher is the bundled gradlew wrapper) Gradle
这是 Xeger 库的维护分支。 它是一个用于生成匹配特定正则表达式的字符串的 Java 库。
Xeger 的原始版本可从该地址获得,但开发似乎已停止:
http://code.google.com/p/xeger/
这个分支的目标是简单地维护 Xeger,在报告的错误出现时修复它们。 不过,欢迎请求请求:-)。
作为参考,我复制了以下原始网站的几个有用部分。
我们定义 cron。
并支持他们。
cron-utils 是一个 Java 库,用于定义、解析、验证、迁移 cron 以及为它们获取人类可读的描述。
该项目遵循语义版本控制约定,提供 OSGi 元数据并使用 Apache 2.0 许可。
创建任意的 cron 表达式:您可以定义自己的 cron 格式!支持的字段有:秒、分、小时、月中的某天、月份、星期几、年。
您可以将最后一个字段标记为可选!
支持所有 cron 特殊字符: * / , -
非标准字符 L、W、LW、'?'和 # 也支持!
flexmark-java 是 CommonMark(规范 0.28)解析器的 Java 实现,首先使用块,在 Markdown 解析架构之后内联。
它的优势在于速度、灵活性、基于 Markdown 源元素的 AST,以及源位置的详细信息,包括构成元素的词素的单个字符和可扩展性。
API 允许对解析过程进行精细控制,并针对使用大量已安装扩展的解析进行了优化。解析器和扩展为解析器行为和 HTML 呈现变体提供了大量选项。最终目标是让解析器和渲染器能够非常准确地模拟其他解析器。现在已经部分完成了 Markdown Processor Emulation 的实现
Jahmm 是一个 Java 库,实现了与 Hidden Makov 模型(简称 HMM)相关的各种知名算法。
库的源代码可用; 它在 GPL 下获得许可(请参阅资源/复制文件)。
这个库简短而简单。 它是为了清楚起见而写的。 它特别适合研究和学术用途。
与该库相关的网站是:[http://jahmm.googlecode.com/] 可以在那里找到与该软件相关的大部分信息。
JavaPoet 是用于生成 .java 源文件的 Java API。
在执行诸如注释处理或与元数据文件(例如,数据库模式、协议格式)交互等操作时,源文件生成非常有用。
通过生成代码,您无需编写样板,同时还为元数据保留了单一的真实来源。
JavaPoet is the successor to JavaWriter.