自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

洪晓鸿

武艺双全的全栈攻城狮

  • 博客(303)
  • 收藏
  • 关注

原创 arthas线上调试入门

arthas 是一款线上调试的工具, 十分强大好用

2024-04-07 23:24:45 165

原创 potplayer 设置记住播放进度

f5打开设置——播放——右下方 “记忆播放位置”

2023-09-23 23:28:04 830

原创 Quasar 基础教程

Quasar 的工作原理主要基于 Vue.js 和 Webpack。Vue.js 是一个用于构建用户界面的渐进式框架,而 Webpack 是一个模块打包器。Quasar 使用 Vue.js 来构建用户界面,然后通过 Webpack 将所有的资源(包括 JS、CSS、图片等)打包成一个或多个 bundle,这些 bundle 可以被浏览器直接加载。此外,Quasar 还使用了 Babel 和 ESLint。

2023-05-21 17:03:28 1126 1

原创 如何使用Lua脚本来实现原子性操作

Lua脚本可以用于实现原子性操作。原子性操作指的是一组操作要么全部执行成功,要么全部不执行。使用Lua脚本可以将多个Redis命令组合成一个原子性操作,从而避免在多个命令之间产生竞态条件。在执行Lua脚本时,Redis会保证脚本的原子性,即脚本在执行期间不会被其他命令中断。redis.call加载Lua脚本:将Lua脚本加载到Redis中,使用命令。该命令会返回一个脚本的SHA1摘要,用于后续的脚本调用。

2023-04-30 23:12:41 2244 1

原创 JdbcTemplate、JPA和MyBatis效率还是易用,你说了算

在执行效率方面,JdbcTemplate通常会有更好的性能,因为它允许直接编写SQL语句并有更多的控制权。MyBatis在性能和便捷性之间取得了平衡,而JPA则以自动化和简化为主要优势,但可能在某些情况下性能较差。

2023-04-30 23:12:23 1168

原创 Nginx Ingress 控制器:零基础教程

想象一下,Kubernetes(k8s)集群就像是一个繁忙的机场,而 Nginx Ingress 控制器就是那位疏导交通的空中交通管制员。控制器基于 Nginx,是一个专门为 Kubernetes 设计的 Ingress 控制器。它负责监听集群中的 Ingress 资源变化,并根据这些变化自动更新Nginx 配置,从而实现外部流量的路由和负载均衡。Nginx Ingress 控制器使用 Nginx 作为底层代理服务器,并监听 Kubernetes 集群中的 Ingress 资源的变化。

2023-04-28 22:32:28 394

原创 F5 零基础教程

F5 是一个知名的应用交付和安全解决方案提供商。F5 旗下的 BIG-IP 系列产品可以帮助企业优化、保护和管理他们的应用程序,提高应用程序的性能和可用性。简而言之,F5就像是一位勤奋的邮差,确保您的应用程序信件能够及时、安全地送达目的地。F5 BIG-IP 使用全代理架构,也就是说它在客户端和服务器之间扮演一个“中间人”的角色。通过对请求和响应进行深度检查,F5能够为您的应用程序提供负载均衡、安全保护、性能优化等多种功能。全代理架构。

2023-04-28 22:30:27 1217

原创 Metricbeat 零基础教程

Metricbeat 是一个轻量级的开源数据采集器,用于收集来自操作系统和服务的各种性能指标。Metricbeat 是 Elastic Stack(Elasticsearch、Logstash、Kibana、Beats)中的一个关键组件,常与 Elasticsearch 和 Kibana 一起使用,用于实时监控和性能分析。你可以根据需求启用或禁用特定的 Metricset,以便收集所需的性能指标。Metricbeat 是一个基于事件的数据采集器,它使用轻量级的 Go 语言编写,具有高性能和低系统开销的特点。

2023-04-28 22:28:02 393

原创 Logstash 零基础教程

Logstash 是一个开源的数据处理管道工具,能够从各种数据源收集、过滤、转换并输出数据。Logstash 是 Elastic Stack(Elasticsearch、Logstash、Kibana、Beats)中的一个关键组件,常与 Elasticsearch 和 Kibana 一起使用,用于日志收集和分析。Logstash 是一个基于事件的数据处理管道工具。在 Logstash 中,数据以事件的形式从输入插件到过滤器插件再到输出插件进行处理。事件包含了原始数据以及与数据相关的元数据(如时间戳和来源)

2023-04-28 22:26:59 216

原创 Kibana 零基础教程

Kibana 是一个开源的数据可视化和分析平台,与 Elasticsearch 紧密配合,为你提供直观的界面,帮助你理解、探索和分析 Elasticsearch 中存储的数据。Kibana 不仅可以创建各种图表,还可以制作仪表盘、管理索引、设置警报等。Kibana 是一个基于 Web 的应用程序,它与 Elasticsearch 通信来获取和操作数据。Kibana 通过 Elasticsearch 的 REST API 发送请求,然后将响应数据可视化展示在浏览器上。

2023-04-28 22:26:19 604

原创 Elasticsearch 零基础教程

Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它提供了全文搜索、实时分析和强大的查询功能,同时具备高可扩展性和高可用性。Elasticsearch 是 Elastic Stack(Elasticsearch、Logstash、Kibana、Beats)中的核心组件,广泛应用于日志分析、全文搜索、实时监控等领域。Elasticsearch 是基于 Apache Lucene 构建的分布式搜索和分析引擎。

2023-04-28 22:25:45 121

原创 Prometheus 数据是怎么一步一步被收集起来, 然后展示在kibana界面的

让我们通过一个简单的例子来说明 Prometheus 数据是如何被收集起来,并最终展示在 Kibana 界面上的。在这个例子中,我们将监控一个简单的 Web 服务的请求数。假设我们已经完成了 Elastic Stack 和 Prometheus 的安装和配置。

2023-04-28 22:24:48 457

原创 实现一套 Elastic Stack(Elasticsearch、Logstash、Kibana 和 Beats)监控系统

你可以根据自己的需求定制更多的仪表盘和图表,以便更好地监控和分析你的应用。这个配置文件告诉 Logstash 从本地的 Prometheus 实例抓取指标数据,并将数据发送到本地的 Elasticsearch 服务。现在,你已经成功创建了一个展示 Elasticsearch 中日志、APM 数据和 Prometheus 指标的 Kibana 仪表盘。现在,你可以在 Kibana 中查看和分析 Elasticsearch 中的数据。首先,你需要在你的机器上安装 Elastic Stack 的各个组件。

2023-04-28 22:24:42 288

原创 Prometheus 如何结合 Grafana 提供可视化的仪表盘和图表

Prometheus 和 Grafana 结合在一起可以为你的监控数据提供强大的可视化功能。让我们一步一步地了解如何将它们结合在一起。

2023-04-28 22:23:42 550

原创 Prometheus 零基础教程

Prometheus(普罗米修斯),这个名字听起来很高大上,但它其实是一个十分实用的系统。它是一个开源的服务监控系统,可用于收集、存储和查询各种应用指标。与此同时,Prometheus 还提供了强大的数据查询和处理能力。不妨将 Prometheus 比喻成一个贴心的“保姆”,在你不知道系统出了什么问题时,它会默默地告诉你。抓取:Prometheus 从配置的目标地址抓取指标数据。这些数据可以是系统指标、自定义指标等。存储:抓取到的数据被存储在本地的时间序列数据库中。这些数据可以按时间序列和标签进行查询。

2023-04-28 22:22:05 1743

原创 java 类型擦除

class Point{ // 此处可以随便写标识符号,T是type的简称// var的类型由T指定,即:由外部指定public T getVar(){ // 返回值的类型由外部决定return var;public void setVar(T var){ // 设置的类型也由外部决定// 里面的var类型为String类型// 设置字符串// 取得字符串的长度下面的// 里面的var类型为String类型// 设置字符串。

2023-04-27 16:25:12 335

原创 Java语言的鲁棒性

鲁棒性(Robustness)是指软件在面对各种错误、异常和不确定情况时,能够保持稳定并继续运行的能力。Java 作为一种广泛使用的编程语言,具有很好的鲁棒性,这得益于其设计原则和一些内置功能。总之,Java 语言的鲁棒性得益于其设计原则和一系列内置功能,如异常处理、垃圾回收、类型检查、访问控制等。这些特性使得 Java 程序能够更好地应对错误、异常和不确定情况,从而提高了软件的稳定性和可靠性。

2023-04-27 16:24:41 377

原创 构造器中 this() & super()的使用, 多参数的情况下this() & super()又是怎么使用的

this()和super()在 Java 构造器中的作用是调用其他构造器。它们都必须出现在构造器的第一行。this()this()在这个例子中,我们使用this()在一个构造器中调用另一个构造器。默认构造器会调用带有两个参数的构造器,将姓名设置为 “Unknown”,年龄设置为 0。带有一个参数的构造器会调用带有两个参数的构造器,将年龄设置为 0。super()super()在这个例子中,Dog类继承了Animal类。Dog类的构造器中使用super()调用Animal类的构造器,将物种设置为 “Dog”

2023-04-27 16:23:13 263

原创 Java 中的编译期常量是什么? 使用它有什么风险?

总结起来,编译期常量在 Java 中可以提高性能和可读性,但使用它们可能会带来兼容性问题,尤其是在修改常量值后没有重新编译所有依赖类的情况下。因此,在使用编译期常量时,需要确保正确地管理项目的构建和发布过程,以避免兼容性问题。另外,对于复杂的常量,应考虑使用其他表示方法,如静态初始化块或枚举。编译期常量(compile-time constant)指的是在 Java 程序编译时可以确定其值的常量。编译器会将编译期常量的值内联到代码中,因此在运行时,这些值已经被直接替换为实际值,而不是通过引用获取。

2023-04-27 16:22:22 282

原创 Java 中,Comparator 与 Comparable 有什么不同?

通过实现这些接口并重写相关方法,我们可以根据不同的需求对对象进行排序。当只需要对一个类的实例进行单一排序时,可以让这个类实现。当你需要对一个类的实例进行多种排序,或者需要对不属于你的类的实例进行排序时,可以使用。类的实例按照不同的属性进行排序,例如按照标题、作者等。当你需要对一个类的实例进行排序时,可以让这个类实现。当需要对一个类的实例进行多种排序或对不属于你的类的实例进行排序时,可以使用。都是 Java 中用于比较对象的接口,但它们的使用场景和目的有所不同。接口的不同类,我们可以灵活地实现。

2023-04-27 16:21:50 123

原创 String 不可变的好处包括可以缓存 hash 值

在 Java 中,String类是不可变的,这意味着一旦创建了一个字符串对象,它的内容就不能被修改。这个特性带来了很多好处,其中之一就是可以缓存字符串的哈希值。在这个示例中,我们使用一个HashMap来存储每个单词出现的频率。当我们需要查询或插入一个单词时,HashMap会根据该单词的哈希值来确定其在内部存储结构中的位置。由于String是不可变的,所以它的哈希值在创建后就不会改变。这使得String类可以缓存其哈希值。当我们使用String作为HashMap。

2023-04-27 16:21:14 202

原创 java 散列函数中,选择 31 作为乘数,为何?

Override理想的散列函数应当具有均匀性,即不相等的对象应当均匀分布到所有可能的散列值上。这就要求了散列函数要把所有域的值都考虑进来,可以将每个域都当成 R 进制的某一位,然后组成一个 R 进制的整数。R 一般取 31,因为它是一个奇素数,如果是偶数的话,当出现乘法溢出,信息就会丢失,因为与 2 相乘相当于向左移一位。上述的散列函数中, 为什么选择31作为乘数, 又为什么用31就不会丢失信息?nn * 31nn。

2023-04-27 16:19:25 210

原创 为什么覆盖了toString方法之后还要覆盖hashcode方法?

方法来确定对象在哈希表中的位置。如果相等的对象具有不同的哈希码,这可能导致在哈希表中找不到预期的对象,从而导致不正确的行为。方法,但在实践中,当我们自定义对象的比较和表示行为时,通常会同时覆盖这三个方法。方法,以保持它们之间的一致性。方法以改变对象之间的比较行为,那么你通常需要同时覆盖。方法用于计算对象的哈希码,这在使用哈希表(例如。方法来改变对象的文本表示时,不一定需要覆盖。方法),那么它们的哈希码也应该相等。方法用于提供对象的文本表示,而。方法时,我们通常需要同时覆盖。方法时,通常需要同时覆盖。

2023-04-27 16:18:51 122

原创 设计模式中 的 里氏替换原则

这个原则指出,子类应该可以替换其基类,而不会影响程序的正确性。简单来说,如果一个类 S 是另一个类 T 的子类,那么一个 T 类型的对象应该可以被 S 类型的对象替换,而不会改变程序的预期行为。总之,里氏替换原则强调子类应该可以替换其基类,而不会影响程序的正确性。遵循这一原则可以提高代码的可维护性和可扩展性,是面向对象编程和设计模式的一个重要原则。例如,我们可以定义一个计算形状总面积的函数,它接受一个。类,它也是一个矩形,所以我们让它继承自。类型的对象,而不会影响程序的行为。的方法,用于计算形状的面积。

2023-04-27 16:17:53 147

原创 NoClassDefFoundError 原因分析

NoClassDefFoundError 是一个在 Java 应用程序运行期间可能遇到的错误。这个错误表明 Java 虚拟机(JVM)已经试图加载一个类,但找不到该类的定义。让我们一步步分析可能导致 NoClassDefFoundError 的原因。为了避免 NoClassDefFoundError,务必确保正确设置类路径、管理依赖关系、处理静态初始化器异常、正确使用类加载器以及检查运行环境。

2023-04-27 16:17:11 4872

原创 集中管理 JenkinsFile:一步步教程 - Pipeline script from SCM

你是否有过这样的困扰:每个项目都有一个 JenkinsFile 文件,但是这些文件散布在不同的项目仓库中,导致管理和维护成为一件繁琐的事情?在这个步骤中,我们将创建一个 Git 仓库,用于集中存放所有项目的 JenkinsFile 文件。在这个步骤中,我们将在 “jenkinsfile-collection” 项目中创建一个名为 “Jenkinsfile” 的文件,此文件将用于驱动所有其他。在这个步骤中,我们将把各个项目的 JenkinsFile 文件放入集中仓库的对应子目录中。

2023-04-26 17:27:55 1395 1

原创 防止 SQL 注入

防止 SQL 注入是在使用 Spring Boot 开发 Web 应用程序时必须关注的重要安全问题。通过遵循以下四个步骤,我们可以有效地预防 SQL使用参数化查询。使用 JPA 或其他 ORM 框架。验证和过滤用户输入。设置最小权限原则。结合这些方法,我们可以确保我们的应用程序在面对 SQL 注入攻击时能够保持数据安全。

2023-04-26 11:56:21 2245

原创 Mockito 的 MockMvc:零基础教程

MockMvc 是 Spring Test 模块的一部分,它允许我们对 Spring MVC 控制器进行单元测试,而无需启动完整的 Spring 应用上下文。使用MockMvc,我们可以模拟 HTTP 请求和响应,验证控制器是否按预期处理请求。简而言之,MockMvc 就像是一个虚拟的 SpringMVC,能够让我们快速测试控制器,就像在真实环境中一样。MockMvc 基于 Spring Test 模块,通过创建虚拟的 Spring MVC 环境,模拟 HTTP 请求和响应。

2023-04-26 11:54:06 2649

原创 JUnit 5 动态测试:零基础教程

JUnit 5 的动态测试允许我们在运行时生成测试用例。相对于传统的静态测试用例(由注解@Test标注的方法),动态测试用例可以更灵活地适应不同的测试场景。动态测试就像一辆能够自由变换形状的汽车,适应各种道路和环境。JUnit 5 的动态测试功能基于 JUnit Jupiter 测试引擎的扩展模型。注解告诉测试引擎,该方法将生成一组动态测试用例,而不是一个普通的静态测试用例。在运行测试时,测试引擎会调用方法并执行返回的动态测试用例集合。

2023-04-26 11:48:20 284

原创 nginx配置重要配置详解

nginx配置重要配置详解

2023-04-26 10:56:38 7626

原创 F5->nginx->ingress->tomcat 每一层的作用是什么

tomcat这四层转发之后才能到达我们的应用, 我现在只知道ingress是将外部的访问转发到我们容器内部的应用, 我想详细了解一下。在你提到的这种架构中,请求需要经过 F5 -> Nginx -> Ingress -> Tomcat 四层转发。关于架构我有一个问题, 现在我们把应用部署在k8s上, 用户访问我们的应用需要经过 F5->nginx->ingress->F5->nginx->ingress->tomcat 每一层的作用是什么?

2023-04-26 10:52:47 773

原创 nginx.conf 中的常用配置及其应用场景

分别表示 Nginx 的访问日志和错误日志的位置和级别。配置项,我们可以在 Nginx 中实现简单的请求限流。在前后端分离的应用中,我们通常需要配置跨域资源共享(CORS)。在 Nginx 中,我们可以通过。配置项,我们可以将客户端的请求转发给后端服务器。块中配置缓存,Nginx 可以缓存后端服务器的响应。在 Nginx 中,我们可以通过。通过灵活配置和应用这些功能,我们可以充分发挥 Nginx。配置块,我们可以为后端服务器定义一个代理组,然后在。的性能优势,提高网站的运行效率和安全性。

2023-04-26 10:47:09 176

原创 Nginx 配置教程:成为配置大师的秘籍

今天我将带领大家一起探讨 Nginx 配置的奥秘。在这个教程中,我将详细介绍 Nginx配置的各个部分,以及这些部分下的重要配置项。让我们一起变成 Nginx 配置大师吧!

2023-04-25 23:46:47 4181

原创 Nginx 零基础教程

Nginx(发音为 “engine-x”)是一个开源的高性能 HTTP 服务器和反向代理服务器。它由 Igor Sysoev 开发,起初是为了解决 C10K问题,也就是如何在单个服务器上同时处理超过 1 万个并发连接的问题。Nginx 以其高性能、稳定性、丰富的功能集和低资源消耗而闻名,已成为许多知名网站的首选服务器软件。想象一下,Nginx 就像是网络世界的空中交通管制员,专注于为数以千计的网络请求快速、高效地引导到正确的目的地。听起来很酷,对吧?Nginx 的高性能部分归功于其独特的事件驱动架构。

2023-04-25 18:27:42 154

原创 Java 开发中常用十款jar包零基础教程

本文介绍了Java开发中常用的十款jar包,包括Guava、Hibernate、Maven、SLF4J、Jackson、Spring Boot、ApacheCommons、JUnit、Mockito和Log4j2。它们在各自的领域都具有强大的功能和广泛的应用。通过了解这些jar包的介绍、应用场景、快速上手、常用特性、注意事项和原理概述,您可以更好地掌握它们的使用方法,并在实际开发中提高效率和质量。

2023-04-25 18:10:18 2220

原创 MapStruct 之 mapstruct-processor

在使用MapStruct之前,需要定义源对象和目标对象。: 这个部分定义了一些属性,用于在整个pom.xml文件中引用。这些属性包括:: 设置项目源代码的编码为UTF-8。和: 设置Java编译器的源代码和目标代码版本为1.8。和: 定义MapStruct和Lombok库的版本。: 这个部分定义了项目所需的依赖关系。在这个例子中,有以下依赖:MapStruct: 用于简化Java对象之间的映射。

2023-04-25 18:04:04 2370

原创 Spring Boot Web项目打包成 exe文件

为了在Windows上运行这个JAR文件,我们需要创建一个批处理(batch)文件。:为了确保exe文件在其他计算机上正常运行,目标计算机上需要安装正确版本的Java运行时环境(JRE)。首先,确保你的Spring Boot项目已经配置了正确的插件,以便生成一个可执行的JAR文件。这样,你就成功将Spring Boot Web项目打包成一个可以在Windows上运行的exe文件了。有多种方法可以将JAR文件和批处理文件打包成一个exe文件。这个批处理文件会启动Java并运行你的Spring Boot应用。

2023-04-25 17:23:52 1314 1

原创 Spring中@Autowired高级用法教程

在本教程中,我们深入探讨了Spring框架中的@Autowired高级用法,包括注入普通Bean、Map以及其他用法。掌握这些用法,你可以更加灵活地使用依赖注入,让你的代码更加优雅和易于维护。让我们继续在Spring的世界里探险,发掘更多的宝藏吧!希望本教程能帮助你更好地理解和使用@Autowired注解。祝你在编程之旅中不断成长,享受这场奇妙的冒险!

2023-04-25 17:21:32 1502

原创 Java枚举高级用法教程

在本教程中,我们深入探讨了Java枚举的高级用法,包括构造方法、重写方法和其他高级用法。我们通过实例代码展示了如何定义具有构造方法的枚举类,如何在枚举值中重写方法,以及如何利用枚举实现接口、单例模式和映射等功能。通过掌握这些高级用法,你可以充分利用枚举的威力,提高代码的可读性和安全性。希望本教程能帮助你更深入地了解Java枚举,让我们在编程世界中继续共同成长!记住,像枚举一样,成为一个出色的程序员需要不断发现、探索和学习。祝你好运!

2023-04-25 17:14:28 527 1

原创 JUnit 5 参数化测试:零基础教程

在很多情况下,我们需要对同一个测试方法使用不同的输入参数进行多次测试。这时候,我们可以使用 JUnit 5的参数化测试功能。参数化测试允许我们用一组预先定义的参数来自动运行测试方法,就像是把一个个不同口味的薯片放进一个自动贩卖机,然后观察它们的销售情况一样。JUnit 5 提供了多种参数化测试的方式,接下来我们将逐一介绍。@CsvSource和。希望你能够根据自己的需求选择合适的参数化测试方式,并在你的 Java 项目中轻松愉快地实现参数化测试。祝你学习愉快!

2023-04-25 00:05:24 248

prettyzoo 最新客户端

prettyzoo 最新客户端

2023-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除