自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

G探险者的博客

不积跬步,无以至千里

  • 博客(106)
  • 资源 (1)
  • 问答 (2)
  • 收藏
  • 关注

原创 不同类型的Shell脚本

Shell脚本是一种用于自动化任务的强大工具,广泛应用于系统管理、应用程序自动化、批处理任务等。Shell脚本通过一系列的命令和逻辑控制语句来实现各种功能。在Linux系统中,Shell脚本因其高效、易用和强大的功能而受到广泛欢迎。

2024-06-21 18:01:58 801

原创 简单聊聊Vue

public/:存放不经过 Webpack 处理的静态资源,主要是index.html。src/:主要开发目录,包含应用的源代码和所有 Vue 组件。:存放可复用的小部件或 UI 组件。views/:存放页面级别的 Vue 组件。App.vue:根组件,是整个应用的顶层组件。main.js:应用的入口文件,初始化 Vue 实例。router/:存放路由相关配置。:项目的配置文件,包含依赖、脚本等。配置文件:如.gitignore和,用于项目和工具的配置。修改。

2024-06-11 22:56:18 778

原创 单元测试的心法分享

大家好,我是G探险者!今天我们简单聊聊单元测试的哪些事儿~两天时间我玩明白了单元测试的套路。这里我分享一下思路。在我眼里单元测试室什么?请看这张草图:单元测试主要关注单个代码单元(通常是类或方法)的逻辑正确性,而不是功能测试的全面性。

2024-06-02 18:58:47 1084

原创 Java 中的 HTTP 客户端库OkHttp、Apache HttpClient和HttpUrlConnection

大家好,我是G探险者。项目开发里面经常会有这么一种场景:与服务器进行 HTTP 通信。一般存在于服务间远程调用的场景Java 生态系统提供了多种 HTTP 客户端库,每种都有其自己的特点、优势和适用场景。本文将介绍几种主要的 Java HTTP 客户端库,并探讨它们的特点和用法,帮助你选择最适合你项目需求的工具。

2024-05-08 22:57:16 987

原创 为什么使用httpClient发送x-www-form-urlencoded类型的请求时,必须要使用MultiValueMap来传参

大家好,我是G探险者。今天主要介绍一下MultiValueMap和HashMap的区别。事情起因是这样的,在我们项目code review的时候,客户方提了一个问题,说,你们在用restTemplate进行远程调用的时候,为啥使用MultiValueMap来传递参数,而不用HashMap。这有啥区别么?当时没有给出专业的解答。事后我就好好查询了一番。从以下几个方面来阐述。

2024-05-08 00:22:39 665

原创 简单聊聊如何更优雅地初始化对象:构造函数、Builder模式和静态工厂方法比较

大家好,我是G探险者。在平时的java编程中,你肯定会有过对一些实体对象进行初始化的set操作,有的对象的属性较少可能还好点,当一个对象拥有许多属性时,通常的初始化方式可能显得笨拙而不直观,代码写的很不美观,我是有点难受了。今天我们就来聊聊对象初始化属性的几种方式。你可以使用构造函数、Builder模式或者静态工厂方法来更优雅地初始化对象的属性。

2024-03-23 00:13:45 483

原创 简单聊聊http协议头参数之Content-Type和http状态码 415错误

HTTP协议头中的参数用于指示请求或响应中携带的实体正文(body)的MIME类型(Multipurpose Internet Mail Extensions)。它告诉客户端或服务器如何解释正文的内容。Content-Type参数值的MIME类型通常以type/subtype的形式表示,其中type表示主类型(Top-Level Type),subtype表示子类型(Subtype)。type是广义的数据类型,而subtype则更具体地描述了数据的类型。以下是text/plain。

2024-03-04 22:26:02 714

原创 使用单元测试框架Junit的正确姿势

单元测试是软件开发中的一种测试方法,旨在验证代码中的最小可测试单元(通常是函数、方法或类)是否按照预期进行了设计、实现和行为。在单元测试中,开发者编写测试用例来测试代码的各种情况和边界条件,然后运行这些测试用例以验证代码的正确性。独立性:每个单元测试应该是独立的,不依赖于其他测试用例的执行结果。自动化:单元测试应该可以自动运行,开发者不需要手动进行测试。快速:单元测试应该能够快速执行,以便在开发过程中频繁地运行。精确性:单元测试应该能够准确地验证代码的行为,覆盖各种情况和边界条件。

2024-02-20 23:59:43 1128

原创 数据库所在服务器磁盘满了怎么办?

大家好,我是G探险者。给大家拜个晚年哈,节后上班第一天,打开电脑,发现数据库服务器连不上了。幸亏,节后第一天上班的人不太多,领导还没来,我一番鼓捣解决了这个问题。所以做个总结,记录一下。

2024-02-18 23:27:01 1406

原创 springboot项目启动时如何排除一个bean?

大家好,我是G探险者。使用springboot开发项目,我们有时候会排除一些项目里面用不到的bean,不然的话项目启动会报错,这种情况通常是发生在什么场景里呢,以及如何解决呢?今天咱们就聊一聊。springboot默认封装了很多的组件,并且把这些组件都进行了自动化配置封装。也就是说,只要是springboot项目,启动类在@SpringBootApplication注解下,在不需要单独配置bean的情况下,本项目所用到的bean在容器启动的时候都会被自动扫描并注入到IOC容器里。

2024-01-23 00:46:33 1239

原创 闲聊从防火墙,到VPC再到服务鉴权的技术发展过程

从防火墙到虚拟私有云、虚拟私人网络,再到如今的服务鉴权,网络安全技术在不断演进。这一循序渐进的过程旨在适应不断变化的业务环境和安全挑战。服务鉴权的引入使得安全控制更加贴近服务层,为现代复杂的服务架构提供了更为全面和有效的安全保障。技术的发展不仅仅是解决问题的过程,更是适应新需求、应对新挑战的不断创新之旅。

2023-12-26 00:08:52 879

原创 浅谈SPI机制之ServiceLoader的原理

类是 Java Development Kit (JDK) 的一部分,用于加载服务提供者。这个类是 Java 的服务提供者加载机制(SPI,Service Provider Interface)的核心部分,允许服务提供者被动态地加载到应用程序中。这里的 "服务" 是指一个已知接口或者抽象类的实现,而 "服务提供者" 指的是实现这些接口或类的具体实现。

2023-12-11 00:11:42 1019

原创 简单聊聊使用lombok 的争议

大家好,我是G探险者。项目里,因为我使用了Lombok插件,然后代码走查的时候被领导点名了。我心想,这么好用的插件,为啥不推广呢,整天写那些烦人的setter,getter方法就不嫌烦么?领导既然不让用,自然有他的道理。于是我查了一番关于lombok的一些绯闻。就有了这篇文章。首先呢,Lombok 是一个在 Java 项目中广泛使用的库,旨在通过注解自动生成代码,如 getter 和 setter 方法,以减少重复代码并提高开发效率。

2023-12-10 17:57:41 984

原创 分享几个 Git 的使用技巧之 Merge,Rebase 以及 Tag 标签

掌握mergerebase和标签的使用,不仅能帮助你更有效地管理代码,还能增强团队协作和代码质量的维护。记住,选择最适合你的项目和团队工作流的方法,并始终关注代码的健康和团队的协作效率。通过这些技巧的应用,你可以使 Git 成为软件开发过程中的强大助手。

2023-11-30 23:41:32 1035

原创 Spring的三种常见Bean的初始化参数机制,你都用对了吗?

大家好,我是G探险者。spring这本九阳神功秘籍,我们一点一滴去研读。在Spring框架中,Bean的实例化与初始化是一个复杂的过程,一个Bean的实例化过程往往伴随着一些属性的初始化动作,有的是在Bean实例化之后才进行的属性初始化,有的是和Bean实例化同时进行他的属性初始化,spring提供了多种机制来控制和扩展这个过程来满足我们不通的场景需求。接口、接口和接口。看看它们的区别、使用场景以及如何使用。

2023-11-28 00:25:09 952

原创 简单聊聊加密和加签的关系与区别

大家好,我是G探险者。平时我们在项目上一定都听过加密和加签,加密可能都好理解,知道它是保障的数据的机密性,那加签是为了保障啥勒?它和加密有啥区别?带着这个疑问,我们就来聊聊二者的区别。加密(Encryption)和加签名(Signing)这两种技术在确保数据安全和完整性方面发挥着关键作用。虽然这两种技术常被提及,但它们各自的功能和应用却有着明显的差异。

2023-11-23 22:31:49 1374

原创 IDEA如何将本地项目推送到GitHub上?

大家好,我是G探险者。IntelliJ IDEA 是一个强大的集成开发环境(IDE),它支持多种编程语言和工具。它也内置了对Git和GitHub的支持,让开发者可以轻松地将本地项目推送到GitHub上。以下是一个操作手册,描述了如何使用IntelliJ IDEA将本地项目推送到GitHub。

2023-11-22 00:07:35 888

原创 Postman的各种参数你都用对了吗?

Postman 支持多种授权方式,例如 Basic Auth、Bearer Token、OAuth 2.0 等。用户可以在此部分输入凭证,例如用户名和密码或访问令牌,以通过 API 的安全验证。

2023-11-21 16:09:58 361

原创 简单聊一聊幂等和防重

一个操作是幂等的,意味着无论这个操作执行多少次,结果都是一样的。换句话说,执行一次和多次对系统的影响是相同的。防重处理是确保不会重复处理相同的数据或请求的方法,用于避免由于重复执行相同操作而产生的数据错误或资源浪费。

2023-11-19 22:56:36 295

原创 Java中如何通过路径表达式找值:XPath和JsonPath以及SpEL详解及对比

XPath和JsonPath都是强大的查询语言,它们使得从复杂的数据结构中提取信息变得更加容易。XPath适用于XML数据,而JsonPath适用于JSON数据。两者各有优势,具体使用哪一个取决于你的数据格式和需求。在Java中,有多个库可以用来执行XPath和JsonPath查询,如和等。在选择使用哪种表达式语言时,通常取决于你的应用场景和所操作的数据类型。如果你在处理XML或JSON数据,XPath和JsonPath是专门为这些格式设计的。

2023-11-19 02:03:12 815

原创 linux环境下启动应用的不同方式对比分析

大家好,我是G探险者。平时我们在Linux环境下启动Java应用程序时。可能会选择在前台或后台运行它们。但是这两者启动命令的各种参数含义是什么意思呢,今天我们就来聊聊,并分析一下他们的特点。

2023-11-18 20:29:58 160

原创 简单聊聊如何更优雅的判断空值:Optional、三元运算符及其他方法

在Java编程中我们经常会遇到判断一个变量或者表达式是否为空,如果为空就选择一个默认值赋给它,如果不为空就以它的实际值为准,这种情况我们都是如何处理呢,可能首先会想到三元运算符,除此之外还有别的方法吗,今天我们就来聊聊,并对它们各自的特点进行对比分析。

2023-11-16 00:24:35 320

原创 闲聊servlet的常见注册方式

大家好,我是G探险者。servlet大家都不陌生,当开发 Web 应用程序时,注册 Servlet 是一个常见的任务,因为 Servlet 是处理 HTTP 请求和生成 HTTP 响应的核心组件之一。在不同的开发环境和框架中,有多种方法可以注册 Servlet。本文将介绍一些常见的 Servlet 注册方法,会依据技术的演变方向来介绍,包括在传统的 Servlet 规范、Spring 框架、Eclipse Jetty、Spring Boot 和其他一些技术中的注册方法。

2023-10-10 00:31:26 420

原创 常见哈希算法及其应用

大家好,我是G探险者!今天简单聊一下哈希算法。哈希算法是用于将任意长度的输入数据转换为固定长度的哈希值。这些哈希值具有唯一性和不可逆性,使得哈希算法在数字签名、密码学、文件完整性验证等方面得到广泛应用。本文将介绍三种常见的哈希算法:SHA-1、SHA-256 和 MD5,并提供使用 Java 编程语言进行哈希计算的示例。

2023-08-31 17:21:43 705

原创 Spel表达式和el表达式的介绍与对比

大家好,我是G探险者。在翻看源码的时候,看到项目里有人实现了缓存功能,这个缓存里面值的存放于获取是通过一个路径表达式来获取的,而这个路径表达式实际是基于对Spel表达式的一些封装。处于对这个表达式的好奇,于是有了如下的,探索。在 Java 开发中,表达式语言(Expression Language)是一种强大的工具,它允许我们在运行时动态地计算和操作对象的属性和方法。

2023-07-26 23:56:54 235

原创 聊一聊什么是JNDI数据源

JNDI(Java Naming and Directory Interface,Java命名和目录接口)是Java平台上的一种标准服务,它允许Java应用程序通过名称查找资源。这块是不是有点耳熟?我们的微服务里面的注册中心,调用方通过服务名从注册中心寻址服务方的地址)。它基本上是一个获取对象实例的接口,如数据源(如javax.sql.DataSource)、JMS资源(如javax.jms.ConnectionFactory)或任何类型的Java对象。

2023-07-25 17:22:59 371 1

原创 编程中那些防转义和转义的技巧汇总

大家好,我是G探险者。今天我们聊一聊转义和防转义的那些事儿。在编程过程中,我们常常需要处理特殊字符和特定上下文,以确保生成的内容在正确的环境中能够被解析和显示。有时我们需要防止转义,保留特殊字符的原始含义;而在其他情况下,我们需要进行转义,将特殊字符转换为适当的格式。本文将介绍一些常见的防转义或者转义处理的编程技巧,并提供相应的示例代码。

2023-07-17 00:03:18 219

原创 聊一聊springboot项目配置参数的三个来源

它们各自具有不同的优点和适用场景,可以根据具体需求选择最合适的配置方式。

2023-06-16 18:56:36 818

原创 Docker和Kubernetes部署Spring Boot项目:如何灵活修改配置文件?

在Docker和Kubernetes中,我们都有多种方式来修改Spring Boot项目的配置。我们可以直接进入Docker容器内部进行修改,也可以使用Docker数据卷或Kubernetes的ConfigMap和Secret。直接进入容器修改配置虽然操作简单,但不适合在多个环境中使用,也无法实现配置的持久化。使用Docker数据卷、ConfigMap或Secret,我们可以实现配置的持久化,同时在多个环境中灵活地修改配置。在实际工作中,我们应根据具体情况选择最适合的方式。

2023-06-09 23:49:06 1904 1

原创 简单聊一聊数据库驱动

数据库驱动通常是数据库厂家提供的,他们按照jdbc协议对自家数据库封装了一套可对外调用的API。在应用程序和数据库之间起到了桥接的作用。它是一个软件组件,提供了与特定数据库系统进行通信的接口和功能。

2023-06-05 18:45:20 878

原创 聊一聊数据库事务的那些事(隔离级别,传播行为)

我们平时使用事务的时候,可能脑子里面想到和事务有关的知识点无非就是,ACID,事务隔离级别那一套,使用的事务也就是是通过注解的形式,或者手动开启事务。更细致一点的问题或许没有深究下去,比如事务的传播行为,注解形式和手动事务的区别等,今天我们就这几个方面进行介绍。

2023-06-04 15:23:30 2664

翻译 AI的未来治理与风险管理

根据我们目前所见的情况,可以想象在未来十年内,人工智能系统将超过大多数领域的专家水平,并进行与今天最大的公司一样多的生产活动。无论是潜在的优势还是劣势,超级智能将比人类过去所面对的其他技术更加强大。我们可以拥有一个更加繁荣的未来,但我们必须管理风险才能实现这一目标。考虑到潜在的存在风险,我们不能只是被动应对。核能是一个常用的历史例子,具有这种特性的技术;合成生物学是另一个例子。我们必须缓解当今人工智能技术的风险,但超级智能将需要特殊的处理和协调。

2023-05-23 15:00:21 122

原创 Linux 服务器磁盘空间因大量日志文件导致满了,怎么办?

在服务器运维过程中,日志文件的管理是一项至关重要的任务。如果你的服务器产生的日志数量非常大,你可能需要考虑使用外部的日志管理服务,如 Loggly、Papertrail 或 AWS CloudWatch Logs。例如,如果你的应用程序或服务生成了大量的调试(debug)级别的日志,你可能可以将日志级别提高到信息(info)或警告(warning)级别,这样只有更重要的消息才会被记录。总的来说,通过采取适当的策略和工具,你可以有效地管理服务器的日志文件,从而避免磁盘空间不足的问题。你可以将这个脚本保存为。

2023-05-15 17:37:17 1596

原创 序列号及序列号生成器(号段模式,数据库模式)详细介绍(建议收藏)

现如今,数据的唯一性和可追溯性变得越来越重要。从简单的数据库主键到复杂的分布式系统,唯一标识符在各种场景中都发挥着关键作用。序列号,作为一种广泛应用的唯一标识符,为我们提供了确保数据完整性和一致性的基础。在这个背景下,高效、可靠的序列号生成器对于各种应用系统的顺利运行至关重要。本文将深入探讨序列号的概念、应用场景以及序列号生成器的设计和实现。我们将讨论在不同场景下如何选择合适的序列号生成策略,以满足性能、可扩展性和安全性等方面的需求。

2023-05-06 00:22:04 2245

原创 Jackson 注解汇总:轻松处理 JSON 序列化与反序列化

Jackson 提供了丰富的注解来处理各种 JSON 序列化和反序列化需求。通过了解这些注解及其用途,您将能够更高效地处理 JSON 数据。请记住,根据您的需求和具体场景选择合适的注解非常重要。希望本文能帮助您更好地理解和使用 Jackson 注解。

2023-05-05 16:36:53 1450

原创 闲聊Java中$符的各种使用场景

在Java编程中,我们会经常看到$符的身影,比如经常在配置文件中看到$符号作为变量占位符,用于在运行时动态地获取变量值。这种做法有助于提高代码的灵活性和可维护性。除了在配置文件中使用$符号外,我们还会在其他场景中遇到这个符号,例如内部类、Lambda表达式、自动生成的代码等。接下来,我将详细介绍$符号在Java编程中的各种应用场景,以帮助您更好地理解和运用这个符号。虽然在Java编程中,通常不建议使用$符号作为类名或变量名的一部分,但这是允许的。

2023-04-24 11:11:41 2483

原创 简单聊聊k8s,和docker之间的关系

随着云原生和微服务架构的快速发展,Kubernetes和Docker已经成为了两个重要的技术。但是有小伙伴通常对这两个技术的关系产生疑惑:既然有了docker,为什么又出来一个k8s?它俩之间是竞品的关系吗?傻傻分不清。学习一门技术我们要学会类比,这里我给你们打个比方:将Kubernetes与Docker的关系类比为Spring MVC与Servlet或MyBatis与JDBC的关系。Docker像是Servlet或JDBC,提供了基础的容器化技术。

2023-04-21 01:08:46 1684

原创 应用程序性能监控系统(APM) :SkyWalking 简介

随着软件系统变得越来越复杂,了解应用程序性能的重要性也日益凸显。这也是SkyWalking应用程序性能监控系统诞生的背景。Apache SkyWalking(简称SkyWalking)是一个开源的、可观察性平台,通过提供应用性能监控(APM)、分布式追踪、度量聚合等功能,帮助开发者和运维人员全面了解应用程序的运行状况。SkyWalking原理的简要介绍:数据收集SkyWalking通过探针(Agent)来收集应用程序运行时的数据。

2023-04-20 10:50:52 1456

原创 数据库方言:了解不同数据库系统的特性和差异

数据库方言是指不同数据库系统在 SQL 语法、数据类型、函数和存储过程等方面存在的差异。这些差异导致了相同的 SQL 语句在不同的数据库系统中可能需要进行修改才能正确执行。常见的数据库系统包括 MySQL、Oracle、SQL Server、PostgreSQL 等,它们之间的差异构成了各自的数据库方言。

2023-04-19 23:57:18 744

原创 池技术:连接池,线程池,内存池,进程池等汇总分析

这样,池技术通过缓存和重用资源,减少了资源创建和销毁的时间。网站性能优化:在构建高性能网站时,可以使用 HTTP 连接池、数据库连接池、线程池等池技术,同时结合缓存(如 Redis 缓存、CDN 缓存)、异步编程(如 AJAX、异步 I/O)以及负载均衡(如反向代理、DNS 负载均衡)等技术,共同提高网站性能。大数据处理:在大数据处理场景中,可以使用线程池、进程池等并行计算技术,同时结合资源预留、负载均衡(如 Hadoop 分布式文件系统、Spark 调度器)等技术,以提高数据处理性能和资源利用率。

2023-04-18 00:27:56 291

图标信息

图标图标信息

2020-05-22

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

TA关注的人

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