2024年必用的九大顶级Java分析器:性能优化的利器

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

最近,我在开发一个第三方Linux应用时,开始遇到一些问题,我怀疑我的一个应用程序可能存在内存泄露,因为我不断收到内存不足的异常。

因此,我决定启动一个分析器来监控这个第三方应用程序。我的想法是将分析器附加到正在运行的Java进程上,然后使用分配调用树视图记录被调用的方法及其关联的类。

当我开始寻找可以帮助我的Java分析器时,我意识到有很多这样的工具,所以我决定尝试YourKit。它是一个受欢迎且健壮的Java分析器,专为Java应用程序设计。设置分析器相当简单,与我听到的谣言相反。

我启动了分析器,发现它具有很好的潜力,但实际上要确定问题所在非常困难,需要很长时间。一旦我得到了数据,分析起来很难,因为我需要实际查看调用树并手动得出结论。

我记得我最近偶然发现了一个很酷的工具,在读了一篇关于优化SQL查询的文章后,我打算尝试它。这个工具并不是传统意义上的分析器,但它可以辅助我的分析工作,因为它可以分析可观测性数据。我认为Digma的持续反馈工具可以帮助我分析分析器的结果,更快地得出结论,并帮助我知道在分析器中寻找什么。因此,我同时打开了Digma和YourKit分析器。

在这篇博客中,我将分享我为什么决定启动一个分析器,我发现的适合分析Java应用的分析器列表,以及Digma持续反馈如何帮助分析分析器的数据并得出结论。

什么是Java分析器?


Java分析器是一种工具,用于衡量和检查Java应用程序的性能。它收集程序执行的数据,包括每个函数所需的时间、内存使用情况和函数调用频率。

Java分析对于确定软件应用中的性能瓶颈非常有益。分析分析器收集的数据可以帮助开发者识别代码中负责最显著延迟或资源消耗的部分。这些数据可以改善代码,提升性能,并减少资源消耗。

因此,Java分析器是一种检查Java字节码结构和操作的工具,这些编程结构和操作包括创建对象、重复过程(包括递归调用函数)、执行方法、运行线程和进行垃圾收集。

Java分析器的类型


- 采样分析器:这些分析器定期对运行中的程序进行快照,并分析调用堆栈以识别热点。

- 仪器分析器:这些分析器修改程序的代码以收集更详细的性能数据。

Java分析器的使用场景


基本上,Java分析工具可以以三种方式使用:

性能优化:开发者可以使用Java分析器来确定代码中负责性能问题的部分,如慢函数调用或高内存使用。这些数据可以用来改进代码以获得更好的性能。

内存管理:Java分析器可以帮助检测内存泄露,即程序未能释放未使用的内存。这些泄露可能导致内存不足,从而导致程序崩溃。通过确定内存泄露,开发

者可以更正代码以释放不再需要的内存。

测试:Java分析器可以评估程序在不同场景下的性能,如输入大小或用户数量的变化。这可以帮助在程序发布前识别潜在的性能问题。

Java分析器如何工作?


JVM允许Java开发者将一个代理附加到正在运行的JVM(Java虚拟机)上。当开发者将一个代理附加到JVM时,JVM将在加载它之前提供一个类给代理。然后代理转换这个类。代理可以更改任何类的代码。

Java分析器基本上是代理。它们在方法的开始和结束处添加仪器代码,以跟踪它们花费了多长时间。它们还在每个类的构造器和finalize方法中添加代码,以跟踪使用了多少内存。

在Java中,代码分析可以通过一系列工具实现,包括内置工具和第三方工具。一些受欢迎的工具包括:

  1. - JVM工具
  2. - Digma
  3. - VisualVM
  4. - YourKit
  5. - JProfiler
  6. - NetBeans分析器
  7. - IntelliJ分析器
  8. - Async分析器
  9. - Arthas
  10. - OpenTelemetry和Java Flight Recorder(JFR)涵盖了大多数基础。如果你想要自动化仪器,使用OpenTelemetry Java代理,或者如果你想进行自己的仪器,就使用API。

每种工具都有其特点和适用场景,从简单的命令行工具到复杂的图形界面应用,开发者可以根据自己的需要选择合适的分析器。例如,Digma的持续反馈工具通过自动收集可观察性数据,持续地找到代码中的问题,与传统的分析器相比,它提供了一种更动态和自动化的方式来分析和优化Java应用。

结论是,通过结合使用YourKit和Digma,以及利用Grafana进行应用日志的可视化,可以实现最佳的优化效果:YourKit用于分析应用潜在的瓶颈,Digma提供对问题代码片段的无缝洞察。

FAQ部分指出,JProfiler是一个为Java应用设计的强大的高级Java分析器,提供了10天的完整试用版。

Java内存分析器专门检查Java应用如何使用内存,以确定性能问题并修复内存泄露。

Java的CPU分析是一种通过检查CPU利用率来评估和提高应用效率的方法,它帮助识别热点、瓶颈和代码中可能导致CPU使用率增加或性能不佳的低效率。

全部整体翻译成中文:

1. JVM 工具

这些 Java 分析工具随标准 JDK 一起捆绑,并且不需要单独安装或设置。大约有五种:jstat、jmap、jcmp、jhat 和 hprof。

a. jstat

这个内置命令行工具随标准 JDK 一起提供,不需要安装或设置。通过命令行监控 JVM 内存、堆大小和垃圾回收活动非常有益。

该工具利用 JVM 中默认启用的内置检测功能,通过虚拟机标识符(VMID)识别目标 Java 过程,无需任何特殊命令启动 JVM。

你可以使用 jstat 的三种方式:

使用预定义的性能约束运行 Java 程序

java -Xmx125m -Xms25m -Xmn15m -XX:PermSize=30m -XX:MaxPermSize=30m -XX:+UseSerialGC HelloWorld


你可以使用以下命令获取进程 ID

ps aux | grep java


要开始监控 JVM 堆内存使用情况,请在终端上运行带有 -gc 选项的 jstat。

jstat -gc 98132 17527
b. jmap

这个命令行工具也包含在标准 JDK 中。它显示了一个活动 VM 或核心文件的内存相关数据(堆摘要、Java 对象堆直方图、类加载器统计、终结队列信息、以 hprof 二进制格式转储的 Java 堆)。

特别有益于检查基本配置和算法。

我建议使用自 JDK 8 起可用的较新工具 jcmd,而不是 jmap 工具,以获得改进的诊断和减少的性能影响。

以下是如何在终端上使用 jmap

jhsdb jmap —heap <JAVA_PID>

你也可以使用这个命令创建堆转储

jhsdb jmap —dump:file=<FILE> <JAVA_PID>

c. jcmp


这个命令行工具随标准 JDK 一起提供,不需要任何安装或设置过程。它用于向 JVM 发送诊断命令指令。

你可以使用这个命令创建堆转储。

jcmd <JAVA_PID> GC.heap_dump filename=<FILE>

d. jhat

这个命令行工具预装于标准 JDK(无需安装/设置)。它用于探索堆快照(也称为堆转储)中对象的结构。

这个工具是 Heap Analysis Tool(HAT)的替代品。它处理以二进制格式的堆转储,例如由 jcmd 生成的。

这个工具还可以帮助识别意外的对象连接(类似于 Java 中的内存泄漏——因为它从 rootset 中被引用而仍在使用的对象)

e. hprof

这个内置命令行工具随标准 JDK 提供。通过分析堆和 CPU 分析、锁竞争、内存泄漏和其他问题来检查性能。它是一个动态链接库(DLL),通过 Java 虚拟机工具接口(JVMTI)与 JVM 通信。

它以 ASCII 或二进制形式记录文件或套接字的分析数据。它可以提供有关堆分配统计、堆转储、CPU 使用情况、JVM 中所有监视器和线程的状态以及争用配置文件的信息。

java –agentlib:hprof HelloWorld
使用以下命令,你可以使用 hprof 获取堆分配概况。

javac –J-agentlib:hprof=heap=sites HelloWorld.java
使用以下命令,你可以创建堆转储。

javac –J-agentlib:hprof=heap=dump HelloWorld.java


2. Digma 持续反馈

Digma 依赖于它使用 OTEL 自动收集的可观察性数据。像其他分析工具一样,其目的是分析代码在运行时的工作方式并找出问题;唯一的区别是 Digma 会自动不断地发现它们。

让我们看几个例子:

找出对应用程序影响最大的代码/查询(性能影响)。
a. 你可以在资产标签中找到性能影响最大的代码并按性能影响排序:

数据库查询洞察
性能影响
这种视图对开发者很有价值,因为它提供了哪些端点可能需要因性能问题进行优化的快速概览。执行时间和性能影响的结合允许优先解决故障排除和开发重点,帮助提高应用程序的整体性能和可靠性。

b. 或者打开仪表板并使用客户端跨度性能影响小部件:

Digma 仪表板:性能影响
这个小部件帮助开发者快速识别他们的应用程序中哪些部分可能在导致性能问题。他们可以优先调试和优化工作,从标记有高性能影响的端点开始。

2. 在最近的提交中识别性能下降——持续时间变化

持续时间变化
另一种跟踪代码性能最近变化的方式是持续时间洞察。它提供了对特定跨度调用持续时间分布的视觉表示。

最后一次调用性能:小部件显示最近一次调用的持续时间(91.95 毫秒),这可以立即与典型性能进行比较,以确定它是否在预期范围内或是一个异常值。

中位持续时间:中位

持续时间最近发生了变化(增加了 16.19 毫秒)。红色表示最近的变化,这可能表明性能下降或提高。

性能分布:直方图本身显示了调用持续时间的频率,让开发者能快速看到各种性能时间的普遍性。它展示了特定持续时间范围发生的频率。

最慢的 5%:代表调用最慢的 5% 的直方图部分被突出显示。这对于识别可能从平均或中位数统计中不明显的长尾性能问题至关重要。

使用这一洞察力,开发者可以随时间跟踪代码的性能。该可视化有助于识别趋势,如延迟增加,这可能表示潜在问题,如内存泄露、数据库查询效率低下或其他资源争用问题。红色块表示的最近变化特别有用,因为它可以将性能变化与最近的代码更改或部署更新相关联,促使更即时的调查。

3. 分析寻找扩展问题——扩展洞察力
Digma 提供了代码可扩展性的洞察力,识别可能阻碍应用程序扩展能力的潜在问题。

例如,通过扩展问题洞察力,开发者可以快速发现与并发处理和请求处理时间相关的性能瓶颈。

性能下降指标有助于识别性能下降的负载水平。这个指标可以引导开发者检查在这些事务期间执行的代码路径,以找出效率低下或资源争用

并发信息通知开发者,系统在处理并发过程或线程时遇到问题。这可能表明应用程序在处理并行处理方面存在问题,或者为应用程序在此级别的并发性能优化分配的资源不足。

时间持续:广泛的范围表明,在某些条件下,响应时间可能显著增加,这可能是由于处理瓶颈、算法效率低下、数据库查询性能或其他系统限制

通过综合这些信息,开发者被引导关注应用程序需要注意的方面,并开始形成关于可能导致问题的假设,如代码效率低下、数据库瓶颈、硬件资源不足或次优的架构决策。目标是调查和解决这些领域,以提高应用程序的可扩展性。

3. VisualVM


这个工具在 JDK 9 中被移除之前,是 Java 开发套件(JDK)的一部分,目前作为一个独立工具可用。这个 Java 分析器非常适合 CPU 抽样、内存抽样、运行垃圾收集、分析堆错误、拍摄快照,并使用图形用户界面。

这个 Java 分析器支持本地和远程分析,但不支持通过 SSH 隧道进行分析;你需要配置 JMX 端口进行远程分析。

VisualVM 允许为以后分析而拍摄分析会话的快照。

VisualVM 依赖于随 JDK 一起提供的其他独立工具,如 JConsole、jstat、jinfo、jstack 和 jmap。

以下是你可以使用 VisualVM 的三种方式:

使用预定义的性能约束运行 Java 程序

java -Xmx125m -Xms25m -Xmn15m -XX:PermSize=30m -XX:MaxPermSize=30m -XX:+UseSerialGC HelloWorld

在终端上运行 jvisualvm 并开始监控 JVM 堆内存使用情况

jvisualvm

接下来,Java VisualVM 程序将启动。导航到工具 > 插件并下载 Visual GC 插件(也会显示其他插件选择。根据需要使用它们。

4. Yourkit


YourKit Java 分析器与各种平台兼容,并为每个支持的操作系统提供不同的安装,如 Windows、MacOS、Linux、Solaris 和 FreeBSD。

像 JProfiler 一样,YourKit 也包括显示线程、垃圾收集、内存使用和内存泄漏的基本功能。它支持通过 SSH 隧道进行本地和远程分析。

YourKit 提供商业用途的付费许可,包括免费试用和个人使用的折扣或免费许可。

YourKit 对分析抛出的异常也很有用。直接识别抛出的异常及其频率很简单。

YourKit 提供了一个独特的 CPU 分析功能,专注于我们代码的特定部分,如方法或线程内的分支。这个功能很有用,因为它允许通过其 what-if 功能进行条件分析。

YourKit 也允许对 SQL 和 NoSQL 数据库调用进行分析。

5. JProfiler


JProfiler 是由 ej-technologies 创建的 Java 应用程序分析工具。JProfiler 提供了监控内存使用、系统性能、潜在内存泄漏和线程分析的界面,界面友好。

有了这些信息,我们就可以轻松识别系统基础中的优化、移除或修改区域。

JProfiler 是由 ej-technologies 创建的 Java 应用程序分析工具。JProfiler 提供了监控内存使用、系统性能、潜在内存泄漏和线程分析的界面,界面友好。

有了这些信息,我们就可以轻松识别系统基础中的优化、移除或修改区域。

JProfiler
这个 Java 分析器需要购买许可证,但它提供了免费试用。主要关注四个关键领域:

  • 方法调用:分析方法调用可以提供对应用程序功能的洞察,并帮助提高其总体性能。
  • 分配:通过检查存储在堆中的项、引用关系和管理垃圾收集,这个功能允许你解决内存泄漏并提高内存效率。
  • 线程和锁:JProfiler 提供了各种关于线程和锁的分析视角,帮助你识别多线程问题。
  • 高级子系统:许多性能问题出现在更高的语义级别。对于 Java 数据库连接中的 JDBC 调用,识别最慢的 SQL 语句至关重要。JProfiler 允许对这些子系统进行集成检查。JProfiler 可以与 IntelliJ IDEA、Eclipse 和 NetBeans 等知名 IDE 集成。甚至可以从快照直接跳转到实际的源代码。
6. NetBeans 分析器


虽然 NetBeans 主要以其出色的调试能力而闻名,但它也出人意料地作为顶级 Java 分析器之一脱颖而出。Oracle 的开源 NetBeans IDE 包括 NetBeans 分析器作为其捆绑包的一部分。它也是进行简便开发和分析的绝佳选择。

Netbeans 分析器
将分析器和调试器的特性结合起来,允许监控代码执行时间和运行时行为,并在多线程等调试方法中提高效率。Netbeans 分析器提高了应用程序的速度,从而提高了内存效率。很棒的是,你可以免费从他们的网站下载它。

虽然 Java VisualVM 和 Netbeans 分析器在特性上相似且都是免费的,但 Netbeans 通过将所有特性捆绑在一个带有 IDE 的程序中而脱颖而出。

7. IntelliJ 分析器


IntelliJ 分析器是一个简单而强大的工具,用于分析 CPU 和内存分配。它结合了两个知名 Java 分析器的能力:JFR 和异步分析器。

尽管提供了一些高级功能,主要侧重点是简单性。IntelliJ 分析器提供了一个无需设置即可开始的简单方法,并为我们的日常开发任务提供了有用的工具。

在 IntelliJ IDEA Ultimate 中,IntelliJ 分析器可以轻松连接到 Java 进程,允许在快照和源代码之间无缝导航。其他方面,如独特的火焰图,使我们能够视觉上评估各种方法的效率,并快速、有效地理解运行时过程。

8. 异步分析器


这个 Java 分析工具具有最小的开销,并避免了 Safepoint 偏见问题。它包括特定于 HotSpot 的 API,用于收集堆栈跟踪和监控内存分配。该分析器与使用 HotSpot JVM 的 OpenJDK 和其他 Java 运行时兼容。

异步分析器能够监控各种类型的事件:

中央处理单元操作
性能计数器,如缓存未命中、分支未命中、页面错误和上下文切换,监控硬件和软件性能。
Java 堆内的内存分配
争用的锁试验,包括 Java 对象监视器和 ReentrantLocks。
在撰写本文时,异步分析器仅支持 Linux 和 Mac 操作系统。如果你使用 IntelliJ IDEA,你不需要安装任何其他东西。集成预先安装,并包括:

  • 启动和结束分析会话
  • 连接到已经进行中的进程
  • 检查分析评估。

9. Arthas


阿里巴巴 Arthas 是一个用于诊断 Java 应用程序的工具,提供跟踪、分析和解决问题的能力。利用 Arthas 的一个主要优势是无需修改代码或重启正在监控的 Java 服务。

Arthas


其他坚实的 Java 分析器


一些值得一提的是 Java Mission Control、New Relic、Glowroot、JMH、Arthas、XRebel/JRebel、JProbe、Pinpoint 和 Stackify Prefix。虽然它们占据市场的份额较小,但它们确实值得认可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/486379.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Java的桃花峪滑雪场租赁系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

性能测试丨GreatSQL TPC-H 性能测试报告正式发布!

1、测试背景概述 本次测试针对GreatSQL开源数据库基于标准 TPC-H 场景的测试。 TPC-H&#xff08;商业智能计算测试&#xff09;是美国交易处理效能委员会&#xff08;TPC&#xff0c;TransactionProcessing Performance Council&#xff09;组织制定的用来模拟决策支持类应用…

数据容器-序列-集合-Python

师从黑马程序员 序列 序列的常用操作-切片 切片&#xff1a;从一个序列中&#xff0c;取出一个子序列 语法&#xff1a;序列[起始下标:结束下标&#xff0c;步长] 注&#xff1a;此操作不会影响序列本身&#xff0c;而是会得到一个新的序列 my_list[0.1,2,3,4,5,6] result1…

【大模型】VS Code(Visual Studio Code)上安装的扩展插件用不了,设置VS Code工作区信任

文章目录 一、找到【管理工作区信任】二、页面显示处于限制模式&#xff0c;改为【信任】三、测试四、总结 【运行环境】win 11 相关文章&#xff1a; 【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程 【问题】之前在 VS Code上安装 CodeGeeX 插件后&…

C语言中如何动态分配内存并进行操作

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

100个openharmony开源demo:1.日历

准备用开发者手机写100个开源的demo不知道能不能实现&#xff0c;日拱一卒&#xff0c;期待蜕变。 第一个demo&#xff1a;日历&#xff0c;借鉴了网上的日历算法&#xff0c;自己用arkts写了界面和点击事件&#xff0c;各位可根据此demo写自己的日历选择器等组件。 1.目录结…

Go——map操作及原理

一.map介绍和使用 map是一种无序的基于key-value的数据结构&#xff0c;Go语言的map是引用类型&#xff0c;必须初始化才可以使用。 1. 定义 Go语言中&#xff0c;map类型语法如下&#xff1a; map[KeyType]ValueType KeyType表示键类型ValueType表示值类型 map类型的变量默认…

python总结-Linux系统使用

设置变量并输出 [rootldpbzhaonan py]$ cat var01.py str1hello str2worldprintf "${str1} ${str2} \n" printf ${str1} ${str2} \n\n就是代表换行&#xff0c;使用printf输出的话&#xff0c;没有自动换行。 不使用换行如下图显示 [rootldpbzhaonan py]$ cat var0…

C语言学习 五、一维数组与字符数组

5.1一维数组 5.1.1数组的定义 数组特点&#xff1a; 具有相同的数据类型使用过程中需要保存原始数据 C语言为了方便操作这些数据&#xff0c;提供了一种构造数据类型——数组&#xff0c;数组是指一组具有相同数据类型的数据的有序集合。 一维数组的定义格式为 数据类型 数…

虚拟+现实,刷新线上直播的“打开方式”

近年来&#xff0c;短视频和线上直播大热&#xff0c;成为我们看世界的途径之一&#xff0c;我们渐渐习惯了看屏幕里面的虚拟世界。随着AIGC技术的不断革新&#xff0c;让虚拟直播间的体验感越来越真实&#xff0c;给我们带来了不同寻常的体验。 虚实融合&#xff0c;超越传统…

将ORB-SLAM3用图像增强的方式打开

ORB-SLAM3在复杂光照环境下&#xff0c;特征提取和特征匹配的性能明显下降&#xff0c;其准确性和鲁棒性收到很大影响&#xff0c;尤其是当周围环境获取的ORB特征点数量不足时&#xff0c;位姿的估计过程无法进行&#xff0c;甚至或导致初始化和跟踪失败的情况&#xff0c;目前…

03、Lua 基本语法

Lua 基本语法 Lua 基本语法第一个 Lua 程序交互式编程脚本式编程 注释单行注释多行注释 标示符关键词全局变量 Lua 基本语法 Lua学习起来非常简单&#xff0c;我们可以创建第一个 Lua 程序&#xff01; 第一个 Lua 程序 交互式编程 Lua提供了交互式编程模式。我们可以在命令…

开始喜欢上了runnergo,JMeter out了?

RunnerGo是一款基于Go语言、国产自研的测试平台。它支持高并发、分布式性能测试。和JMeter不一样的是&#xff0c;它采用了B/S架构&#xff0c;更灵活、更方便。而且&#xff0c;除了API测试和性能测试&#xff0c;RunnerGo还加上了UI测试和项目管理等实用功能&#xff0c;让测…

蓝桥杯刷题-串的处理

串的处理 代码 s input().split() l_new [] for i in s:i list(i)new""for j in range(len(i)-1): # 遍历newi[j]if i[j].isdigit() and i[j1].isalpha(): # 在字母和数字之间添加“_”new_if i[j].isalpha() and i[j1].isdigit(): # 同上new_newi[-1]l_new.appe…

K3 计划订单投放时,将“关联物料”传递到采购和生产订单的“组部件”字段

参考K/3 WISE 中MRP计算投放过程中 销售订单自定义字段怎么携带到任务单这篇文章&#xff0c;进行优化。 在表ICMrpDestBills下增加触发器&#xff0c;代码如下 CREATE TRIGGER [dbo].[ICMrpDestBills_update]ON [dbo].[ICMrpDestBills]AFTER INSERT,UPDATE AS BEGINSET NO…

mysql 设置初始密码

link 1.首先输入以下指令&#xff1a; sudo cat /etc/mysql/debian.cnf运行截图如下&#xff1a; 2. 再输入以下指令&#xff1a; mysql -u debian-sys-maint -p//注意! //这条指令的密码输入是输入第一条指令获得的信息中的 password ZCt7QB7d8O3rFKQZ 得来。//请根据自己的实…

【CKA模拟题】如何发布一个SVC资源

题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetesYou have an existing Nginx pod named nginx-pod . Perform the following steps: Expose the nginx-pod internally within the cl…

Linux系统部署Paperless-Ngx文档管理系统结合内网穿透实现公网访问

文章目录 1. 部署Paperless-ngx2. 本地访问Paperless-ngx3. Linux安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 Paperless-ngx是一个开源的文档管理系统&#xff0c;可以将物理文档转换成可搜索的在线档案&#xff0c;从而减少纸张的使用。它内置…

二手车交易网站|基于JSP技术+ Mysql+Java+ B/S结构的二手车交易网站设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;ssm&#xff0c;springboot的平台设计与实现项目系统开发资源&#xff08;可…

一些恶意样本的流量分析学习

Trickbot Trickbot 是一种自 2016 年以来一直在感染受害者的信息窃取者和银行恶意软件。Trickbot通过恶意垃圾邮件&#xff08;malspam&#xff09;分发&#xff0c;也由其他恶意软件&#xff08;如Emotet&#xff0c;IcedID或Ursnif&#xff09;分发。 分析来自恶意垃圾邮件…