自定义博客皮肤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探险者的博客

不积跬步,无以至千里

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

原创 项目日志是否应该启用文件压缩?

大家好,我是G探险者!在项目中,日志管理是运维和开发人员需要重点关注的环节。随着系统规模的增长,日志文件可能会占据大量存储空间,因此很多项目会考虑使用日志压缩的方式来减少存储成本。然而,日志压缩也会带来一些额外的运维开销,例如日志查看不便、日志采集工具的兼容性问题等。因此,是否应该启用日志压缩需要权衡利弊。

2025-03-30 22:34:58 640

原创 AI时代只会加速拉大人与人之间的差距

AI时代并不会自动拉平人与人之间的差距,反而可能进一步加剧强者与平庸者的分化。AI只是一个工具,它可以放大认知优势,但无法赋予缺乏思考和学习能力的人竞争力。因此,我们需要在AI的辅助下,保持好奇心、提升思维能力,并不断学习,才能真正受益于这个时代的技术变革。

2025-03-09 14:36:33 222

原创 这样使用雪花算法被客户喷了!

我的代码确实借鉴了雪花算法的一些思想,尤其是时间戳和序列号递增的部分,但它并没有实现雪花算法的完整机制(如机器 ID、数据中心 ID、分布式保证等)。因此,它只能算是对雪花算法的一种简单模仿,适用于单机场景下的 ID 生成,但在分布式系统或高并发环境中,存在生成重复 ID 的风险。

2025-02-23 23:44:01 601

原创 聊一聊vue如何实现角色权限的控制的

大家好,我是G探险者。关于角色与权限控制,通常是分为两大类:一种是菜单权限;一种是操作权限。菜单权限是指,每个角色对应着可以看到哪些菜单,至于每个菜单里面的每个按钮,比如增删改查等等这类按钮控制不到这个粒度。简单来说就是控制看到的菜单多少。操作权限是指,每个角色对于所看到的数据具有哪些操作权限,就是增删改查这些具体的操作,简单来说就是读写权限。一套完整的角色访问控制:是应该包含这两种控制的。通常二者也是交叉在一起进行访问控制的。Vue.js 提供了灵活的方式来实现角色权限控制,本文将深入探讨如何通过 Vu

2025-02-16 23:35:06 1356

原创 聊聊长连接和短连接

长连接适用于高并发、频繁交互的场景,如实时聊天应用、WebSocket 通信、消息队列、HTTP/2、保持 HTTP 请求的连接等。它通过减少连接建立和关闭的次数,能够显著提高性能和降低延迟。短连接更适用于低并发的场景,尤其是传统的 HTTP/1.0 请求,每次请求建立和断开连接,虽然能减少服务器端的资源消耗,但在高并发场景下会增加额外的延迟和网络开销。应用举例:长连接:实时聊天、股票行情更新、WebSocket、API 接口(如 RESTful API)、数据库连接池、消息队列等。短连接。

2025-01-01 23:28:20 959

原创 前端框架Vue的路由机制

单页面应用一次性加载:SPA 应用在首次加载时加载整个应用的 HTML、CSS 和 JavaScript 文件。之后的所有页面更新都是通过 JavaScript 动态加载数据并在当前页面中更新视图,而不会重新加载整个页面。页面切换无刷新:用户在浏览不同页面时,SPA 不会向服务器请求新的 HTML 页面,而是通过 JavaScript 动态更新视图,模拟页面跳转的效果。页面切换时,URL 通常也会发生变化,但不会引起浏览器的全页面刷新。客户端渲染。

2024-12-19 23:19:18 1106

原创 如何解决垂直越权与水平越权问题

垂直越权指的是用户通过某些手段访问或操作本不应有权限访问的、更高权限级别的资源或功能。通常,这种情况发生在不同权限层级的用户之间,越权者尝试获取更高权限的资源。普通用户试图访问管理员面板或其他管理功能。普通员工访问财务数据、薪资信息等只能由管理层访问的资源。垂直越权和水平越权是权限管理中常见的安全问题。解决这些问题需要从设计、实现到运维多个层面加强权限控制。通过角色管理、最小权限原则、数据级别权限控制等方法,可以有效防止用户越权访问系统资源。

2024-12-12 22:28:47 2251

原创 当Nginx所在服务器的磁盘空间满了,会有什么影响及如何避免这种问题

最近遇到一个问题是,nginx所在服务器磁盘满了,导致前端页面上的一个文件上传功能不好使了,搞得我排查半天,找不见原因,最后发现是nginx的磁盘满了导致,清理了里磁盘的一些没用的日志之后,再次调用,功能正常使用了。Nginx所在服务器的磁盘空间满了,会导致日志无法写入、缓存失效、反向代理请求异常等问题,严重时可能导致服务不可用。Nginx在处理请求时,特别是反向代理大文件、上传或下载文件时,会在磁盘上创建临时文件。通过合理的监控和维护,可以有效保障Nginx的稳定运行,避免因磁盘空间不足而导致服务故障。

2024-12-10 15:10:56 1340 1

原创 聊一聊常用类System

大家好,我是G探险者!今天来聊一聊java常用类System。事情的起因是项目里面使用了Jasypt 框架对配置项进行加密,主要是密码相关的配置,项目里面的application.yml有关密码的配置项,使用了占位符${PASSWORD}进行了占位,然后在idea里面的设置了JVM的启动参数VM OPTIONS我在jvm的启动参数中,设置了密码这个变量值。在代码里面是也是通过System.getProperty("PASSWORD")这种方式来取值的。这样在我本地是没有问题的,

2024-12-08 23:22:57 624

原创 聊一聊BOM:多模块的依赖版本管理

大家好,我是G探险者!最近项目上在整理各个组件的POM依赖,试图通过一个父级POM来管理整个项目上使用到的各种开源的,和自研的依赖。目的是为了规范使用我们框架的应用,不私自在自身项目里面乱定版本,导致各种版本冲突不兼容的问题。

2024-12-08 13:13:34 1007

原创 聊一聊灰度,蓝绿,和流量染色

特性灰度发布蓝绿发布流量染色目标渐进式发布,逐步增加流量快速切换,零停机时间无影响验证新版本流量控制动态调整流量切换全部流量复制流量到新版本,但不影响用户风险管理风险较低,容易回滚风险较低,快速回滚风险最低,因为不影响用户适用场景新功能、复杂改动小型更新、大版本发布新版本验证、无影响流量测试实现复杂度较高,需要流量监控和逐步调整较低,两个独立环境较高,需要高效的流量复制灰度发布适合在不确定的情况下逐步发布新功能,可以逐渐增加用户使用新版本的比例,减少风险。蓝绿发布。

2024-11-19 21:50:03 593

原创 Nginx 使用入门介绍

Nginx(发音为 "Engine-X")是一款开源的 Web 服务器和反向代理服务器,最初由 Igor Sysoev 于 2004 年开发,旨在解决 C10K 问题(即同时处理 10000 个连接)。Nginx 的设计重点是高并发、高性能和低资源消耗,特别适用于静态内容的分发和反向代理服务。

2024-11-18 23:22:08 1019

原创 解决中文乱码问题:常见原因与解决方案

字符编码是计算机中用于将字符(如字母、数字、符号)转换为机器可读的数字的方式。

2024-11-08 00:13:16 4042

原创 前端与后端通讯的演变:从 AJAX 到现代 HTTP 客户端

用于在后台与服务器交换数据。JavaScript:用于处理响应并更新网页内容。XML或JSON:作为数据交换格式(现代应用中,JSON 更为流行)。从早期的表单提交与页面刷新,到 AJAX、jQuery 的封装,再到现代的fetch和axios,前端与后端的通讯方式经历了巨大的演变。这些技术的不断发展,使得前端开发者能够更高效地与后端服务交互,提升用户体验的同时,也推动了 Web 应用的复杂性和功能性。现代 Web 开发中,axios已经成为最常用的 HTTP 客户端工具,而fetch。

2024-08-11 23:32:20 1327 1

原创 简单聊一聊Vue是如何管理多环境的后端服务的?

是一种自定义的配置文件,通常用于定义不同开发人员或不同环境下的后端服务地址。这种文件并不是 Vue 的官方标准,而是为了满足特定项目需求而创建的。例如,一个典型的},},},在这个配置中,可以通过命令行参数或者环境变量来切换不同的后端服务地址,从而使得项目更具灵活性。Vue 项目中的多环境管理从最初的环境变量支持,到后来复杂项目中引入的等自定义配置文件,反映了项目在规模和复杂性增加时,对灵活性和可维护性的需求。

2024-08-11 22:54:22 499

原创 不同类型的Shell脚本

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

2024-06-21 18:01:58 896

原创 简单聊聊Vue

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

2024-06-11 22:56:18 851 1

原创 单元测试的心法分享

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

2024-06-02 18:58:47 1233

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

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

2024-05-08 22:57:16 1288

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

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

2024-05-08 00:22:39 890

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

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

2024-03-23 00:13:45 556

原创 简单聊聊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 916

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

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

2024-02-20 23:59:43 1195

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

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

2024-02-18 23:27:01 1950

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

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

2024-01-23 00:46:33 1855

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

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

2023-12-26 00:08:52 943

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

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

2023-12-11 00:11:42 1151

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

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

2023-12-10 17:57:41 1042

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

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

2023-11-30 23:41:32 1148

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

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

2023-11-28 00:25:09 1193

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

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

2023-11-23 22:31:49 1702

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

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

2023-11-22 00:07:35 1168

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

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

2023-11-21 16:09:58 485

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

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

2023-11-19 22:56:36 496

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

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

2023-11-19 02:03:12 1031

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

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

2023-11-18 20:29:58 203

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

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

2023-11-16 00:24:35 518

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

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

2023-10-10 00:31:26 492

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

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

2023-08-31 17:21:43 947

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

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

2023-07-26 23:56:54 334

图标信息

图标图标信息

2020-05-22

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

TA关注的人

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