自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (10)
  • 收藏
  • 关注

原创 为什么推荐用增强型 for 循环(也称为“for-each”循环)

在Java中,for (int b : arrB) 是一种增强型 for 循环(也称为“for-each”循环)的语法。这种循环提供了更简洁、易读的方式来遍历数组或集合中的元素。的情况下,使用增强型 for 循环是更好的选择。如果确实需要访问索引来执行某些操作,则可以继续使用传统的 for 循环。这种方式需要手动管理索引变量 i 的初始化、条件判断和递增操作。

2024-09-13 16:46:25 146

原创 mysql 之 information_schema

information_schema 是 MySQL 中的一个特殊数据库,它提供了关于 MySQL 服务器中所有数据库、表、列、索引、存储过程、函数、触发器等对象的元数据信息。动态生成:information_schema 中的数据是动态生成的,不是物理存储的数据,而是从 MySQL 服务器内部状态中动态获取的数据视图。ROUTINES:列出数据库中的所有存储过程和函数的信息,包括过程或函数名、参数等。TABLES:列出数据库中的所有表的信息,包括表名、表类型、创建选项等。

2024-09-11 14:18:47 566

原创 SQL索引详解

SQL索引在数据库优化中占有一个非常大的比例,一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭开他的神秘面纱。  1.1什么是索引?  SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间下面举两个简单的例子:图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书

2024-09-06 14:06:23 1575

原创 WebSocket+Spring boot 构建一个完整消息服务

WebSocket+Spring boot 构建一个完整消息服务

2024-09-06 10:51:14 768 2

原创 你还在使用 WebSocket 实现实时消息推送吗?

当然,随着技术的发展,我们也需要关注那些新兴的实时通信技术和工具,但 WebSocket 作为一个成熟、稳定的解决方案,依然值得我们深入学习和使用。简单来说,就是客户端和服务器之间只需要建立一个连接,就可以通过这个连接双向传输数据,而且数据可以随时发送,不需要像 HTTP 那样每次请求都要建立连接,大大提高了通信效率。不过,咱们今天不聊那些新兴的玩意儿,还是回归初心,好好聊聊 WebSocket,毕竟它可是实时通信领域的“老将”了。同时,我们还配置了消息代理,用于将消息从服务器推送到客户端。

2024-09-06 10:27:47 648

原创 正确使用stream api

今天给大家分享一下java里的stream api应该如何正确的使用才能真正让我们的代码变得很优雅,因为java推出stream api以后,很多小伙伴觉得特别帅酷炸裂,然后就会在代码里过渡的滥用stream api,最终反而会导致代码变得越来越丑,越来越不清晰,不好维护。比如,当一个Lambda表达式过于复杂时,可以考虑将其拆分成一个独立的方法,这样既可以保持代码的简洁性,又可以提高代码的可读性。但是,如果链式调用过长,就会导致一行代码变得非常长,甚至超过屏幕的宽度,这显然是不利于阅读的。

2024-08-12 16:37:29 485 1

原创 记录一次服务器被(crontab)木马入侵事件

重启通过用户模式进入,查看进程发现有个定时任务一直在自动创建并执行(进程ID一直在变化,而且占满CPU,杀死之后马上又复活了,重启也一样),怀疑被入侵了。更改reids 默认端口和密码,升级nacos,然后我们的业务不需要用到境外IP,所以干脆就直接禁用境外IP。后面反馈运营商排查入侵原因,可能是通过 redis 默认端口或者nacos 漏洞。背景:发现平时正常登录的服务器突然进不去,也没明细的错误,重启也登录不了!清除木马程序和所有crontab 异常计划后,重置服务器密码,重启服务器。

2024-07-29 10:54:01 377

原创 spring web flux 记录用户日志及异常日志

【代码】spring web flux 记录用户日志及异常日志。

2024-07-09 11:01:41 141

原创 解决JSON 序列化 LocalDateTime 的问题

在处理LocalDateTime类型时,JSON转换可能会出现问题,因为JSON格式本身并不直接支持LocalDateTime。要解决这个问题,你需要使用一个库,如Jackson或Gson,来处理LocalDateTime的序列化和反序列化。@JsonFormat注解告诉Jackson如何格式化LocalDateTime字段,这里使用了"yyyy-MM-dd HH:mm:ss"的日期时间格式。

2024-06-03 17:31:39 546

原创 在flutter initState 方法,触发 setState导致循环执行

如果在initState中直接调用一个方法,而这个方法内部又调用了setState,那么会导致一个无限循环。

2024-05-28 10:14:58 520 1

原创 TextFormField onSave 和onChange

在Flutter的TextFormField中,onSaved和onChange是两个重要的回调函数,它们分别用于处理表单字段的保存逻辑和实时输入变化。

2024-05-25 14:53:22 384

原创 如何定义一个规范的Controller层代码

很多人都觉得技术也很简单,没有什么特别的地方,但是,实现这个代码框架之前,就是要你的接口的统一的格式ResultBean,aop才好做。有些人误解了,上周末那篇文章说的都不是技术,重点说的是编码习惯工作方式,如果你重点还是放在什么技术上,那我也帮不了你了。这个对应代码上,返回的类型是map,json,object,都是不应该的。最后说一句,先有统一的接口定义规范,然后有AOP实现。上面2段代码,第一个是原生态的,第2段是我指定了接口定义规范,使用AOP技术之后最终交付的代码,从15行到1行,自己感受一下。

2024-05-14 16:49:18 1061

原创 Prometheus + Grafana 实现可视化系统监控

Prometheus + Grafana 实现可视化系统监控

2024-05-13 11:57:44 887

原创 Redis实现延迟队列(为订单超时关闭提供更多的解决方案)

Redis的SortedSet数据结构天然适合实现延迟队列。可以将任务ID作为成员(member),任务的执行时间戳作为分数(score)。这样,通过ZADD命令可以轻松地按照执行时间将任务插入到集合中。而ZRangeByScore或ZRemRangeByScore命令则可以在合适的时机取出或删除已到期的任务。

2024-05-10 14:24:22 1346

原创 auto_increment 、雪花 id 和 uuid 做 MySQL 主键对比分析

在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。

2024-05-09 10:39:56 839

原创 flutter 命令

flutter 命令是Flutter框架提供的一个命令行工具,用于帮助开发者进行应用的开发、调试和部署。它包含了多个子命令,覆盖了从项目初始化到发布的整个流程。

2024-05-07 10:08:43 584

原创 借助三方工具ffmpeg.exe实现音频文件和背景音乐合成

借助三方工具ffmpeg.exe实现音频文件和背景音乐合成

2024-04-29 14:23:48 115

原创 Spring 之 MatchingStrategy

自Spring Framework 5.3版本起,引入了一个新的更高效的路径匹配策略PathPatternParser,它提供了更灵活和强大的匹配功能,比如精确控制匹配前缀、后缀以及捕获组等。例如,/api/users/**可以匹配到/api/users/123或/api/users/profile等任何以/api/users/开头的路径。4、路径参数增强:除了基本的路径变量匹配外,还支持更复杂的路径参数模式,例如可选参数、重复参数模式等。提供了更精细的控制选项,如忽略大小写匹配、严格模式匹配等。

2024-04-28 15:26:14 1591

原创 视频截屏(视频转图片)

视频文件截屏、截取指定时间的播放画面

2024-04-26 20:41:09 974

原创 工程重命名(递归/模糊或精确替换目录和文件及文件中的名称)

/ 使用正确的 newFilePath 变量。// 递归处理子目录。// 处理未重命名但需要替换内容的文件。if (exists) { // 可以根据需要调整文件类型过滤条件。// 处理文件内容替换。* 支持模糊匹配和精确匹配。

2024-04-26 16:26:18 1025

原创 如何快速Copy/抓取一个完整的官网

【代码】如何完整的抓取一个官网/快速Copy一个官网。

2024-04-26 16:18:50 445

原创 Flutter 之 Widget

无论是简单的文本、按钮、图标,还是复杂的布局、列表、滑动容器,甚至包括动画效果、手势处理、主题样式等,一切都是以 Widget 的形式来实现和组织的。Widget 类通常包含一系列可设置的属性(通过构造函数参数),用于定制其外观、行为和与其他 Widget 或系统资源的交互。总的来说,Widget 是 Flutter 中用来构建和管理用户界面的核心概念,它封装了界面元素的结构、样式、行为以及响应状态变化的能力,通过组合和配置各种 Widget,开发者可以高效地构建出丰富多样的跨平台应用程序。

2024-04-25 14:04:49 810 2

原创 详解Linux中nginx如何重启、启动与停止

这篇文章主要给大家详细介绍了Linux中nginx如何重启、启动与停止/设置开机自启动。

2024-04-24 14:27:00 7093

原创 Java Persistence API (JPA) 之 EntityManager

总结来说,EntityManager 是 JPA 提供的一个强大而灵活的接口,它封装了与数据库交互的所有必要操作,包括实体的生命周期管理、查询执行、事务控制、缓存管理以及并发控制。EntityManager 提供了一系列方法,用于执行与对象-关系映射(ORM)相关的操作,如创建、读取、更新、删除(CRUD)实体对象,以及执行查询等。读取缓存:当通过 find()、getReference() 或查询方法加载实体时,如果一级缓存中已有相同标识符的实体,直接返回缓存中的实体,避免重复从数据库查询。

2024-04-24 11:46:11 2396 1

原创 jpa 和 mybatis 的优缺点

总结来说,JPA 更适合需要高度抽象、数据库无关性、自动化的 CRUD 操作和复杂查询的场景,尤其是大型企业级应用。灵活的 SQL 编写:MyBatis 允许开发者直接编写 SQL(存储在 XML 文件或注解中),可以充分利用数据库特性,编写高度优化的查询。对于复杂查询、批量操作、存储过程调用等场景,MyBatis 提供了更好的控制力。JPA(Java Persistence API)和 MyBatis 是两种广泛使用的 Java 持久化框架,它们各自具有独特的优点和适用场景。

2024-04-23 18:04:35 933

原创 线程池 ThreadPoolExecutor 参数详解

提到 Java 线程池,就不得不说 ThreadPoolExecutor,它是 Java 并发包 java.util.concurrent 中的一个类,提供一个高效、稳定、灵活的线程池实现,用于实现多线程并发执行任务,提高应用程序的执行效率。当线程池中的线程数量超过 核心线程数 或者 允许核心线程超时 时,线程将使用此超时时间。如果当前池中有多于核心数量的线程,在等待这段时间而没有处理任务之后,多余的线程将会被终止。上述截图代码可以看出: 如果运行的线程数少于核心线程数,则为当前任务启动一个新的核心线程。

2024-04-22 20:30:36 854

原创 mysql 5.7分组报错问题 Expression #1 of ORDER BY clause is not in GROUP BY clause

建议遵循 ONLY_FULL_GROUP_BY 规则,以确保查询的准确性和可维护性

2024-04-19 17:23:17 589

原创 解决navicat远程连接mysql 很慢(首次)

skip-name-resolve 解决navicat远程连接mysql 很慢(首次)

2024-04-19 14:43:58 879

原创 mysql 删除数据的四种方法

在MySQL数据库中,删除数据是一个常见的操作,它允许从表中移除不再需要的数据。在执行删除操作时,需要谨慎,以免误删重要数据。DELETE语句DROP TABLE语句使用外键约束这些是MySQL中删除数据的主要方法。在执行删除操作时,请确保备份重要数据,以免意外删除。此外,根据您的需求选择适当的删除方法,以确保数据库的完整性和性能。如果不确定如何执行删除操作,建议在测试环境中进行测试,以避免在生产环境中发生意外。

2024-04-18 17:42:53 1412

原创 Spring WebFlux Mono 未按预期执行

当调用 subscribe() 时,不会立即执行 Mono 中的逻辑,而是注册了一个订阅者,实际的处理将在后台线程(如 Reactor 的调度线程)中异步进行。如果代码中仅创建了 Mono 实例而未显式或隐式调用 subscribe() 或其他触发订阅的方法(如 block()、flatMap()、thenReturn() 等),则 Mono 内部的逻辑将不会执行。代码执行顺序: 在某些复杂的异步场景中,可能由于代码逻辑安排不当,导致 subscribe() 调用发生在 Mono 创建或填充之后。

2024-04-17 16:39:51 943

原创 spring webflux 小结

一个简单的处理请求和响应的抽象,用来适配不同HTTP服务容器的API。关于Spring MVC 和Spring WebFlux 测评很多,本文引用下做简单说明。参考:《基本依赖-- r2dbc 连接池 -->--r2dbc mysql 库-->--自动配置需要引入一个嵌入式数据库类型对象-->-- 反应方程式 web 框架 webflux-->相同数据下效果如下;Spring MVC + JDBC 在低并发下表现最好,但 WebFlux + R2DBC 在高并发下每个处理请求使用的内存最少。

2024-04-16 16:07:11 1380

原创 Mysql5.7 yum 简单/快速安装

mysql yum 快速简单安装

2024-04-01 19:48:09 1597

原创 linux yum install jdk如何查找安装目录并配置环境变量

所以openJDK11的安装路径是:/usr/lib/jvm/java-11-openjdk-11.0.15.0.9-2.el7_9.x86_64/,下面可以编辑profile文件配置环境变量了。Linux服务已安装jdk1.8,此时需要在该服务器部署的应用要求依赖openJDK11,可按照以下命令进行安装openJDK11。,输出的是openjdk11,说明默认运行的是openjdk11,如果应用环境需要依赖jdk1.8需要指定jdk1.8路径。如果能查找到安装包,执行以下安装命令进行安装。

2024-03-31 09:50:15 644

原创 linux redis 快速安装

/保护模式下,仅本机可以访问。//设置所有ip可以访问。

2024-03-31 09:29:18 297

原创 @EnableWebMvc 导致自定义序列化器失效

在使用Swagger的时候用 到了@EnableWebMvc,发现之前为了解决Long类型、日期类型等自定义序列化器失效了@Bean.select().build();Swagger3/2+Spring boot 使用小结_spring boot3 + swagger3-CSDN博客我们有时候,可能需要自定义一个序列化器来满足自己的需要,但是如果项目中不正确使用了注解,可能会导致这个自定义的序列化器失效。首先我们应该看下这个注解是拿来干啥的吧。项目中,如果我们希望自定义一些MVC。

2024-03-27 15:15:50 1357

原创 Swagger3/2+Spring boot 使用小结

Swagger 是一个 RESTful API 的开源框架,它的主要目的是帮助开发者设计、构建、文档化和测试 Web API。Swagger 的核心思想是通过定义和描述 API 的规范、结构和交互方式,以提高 API 的可读性、可靠性和易用性,同时降低 API 开发的难度和开发者之间的沟通成本。其实OpenAPI规范(也称为 Swagger 3.x 规范)是一种用于描述RESTful API的标准化格式,它定义了如何描述API的基本信息、结构、参数、响应等方面的规范。

2024-03-20 11:11:35 938

原创 通过spring boot/redis/aspect 防止表单重复提交【防抖】

所谓防抖,一是防用户手抖,二是防网络抖动。在Web系统中,表单提交是一个非常常见的功能,如果不加控制,容易因为用户的误操作或网络延迟导致同一请求被发送多次,进而生成重复的数据记录。滚动加载类接口:比如下拉刷新、上拉加载更多等,用户可能在滚动过程中频繁触发接口请求,但是每次触发并不一定需要立即发送请求,可以等待用户停止滚动一段时间后再发送请求。用户输入类接口:比如搜索框输入、表单输入等,用户输入往往会频繁触发接口请求,但是每次触发并不一定需要立即发送请求,可以等待用户完成输入一段时间后再发送请求。

2024-03-15 20:05:40 540

原创 微服务超大Excel文件导出方案优化

微服务超大Excel文件导出方案优化(异步/拆分/压缩)

2024-03-08 17:26:11 595

原创 spring.factories 和@ComponentScan的使用小结

是一种基于SPI(Service Provider Interface)的机制,用于自动配置和加载组件。SPI是一种Java扩展机制,允许应用程序在运行时动态加载实现特定接口的组件。在Spring Boot项目中,文件中,可以配置各种自动配置类、扩展点和插件,Spring Boot在启动时会通过这个文件自动加载这些组件,实现自动配置和扩展功能。这种基于SPI的机制可以帮助简化应用程序的配置和扩展,提高开发效率和灵活性。文件通常用于定义各种自动配置类、扩展点和插件,以实现自动配置和加载功能。

2024-02-23 19:42:40 465

原创 通过闭包表解决无限极代理分销

无限极分销,关系表

2024-02-20 14:34:16 429

SVN版本控制方案

规范如何使用SVN trunk branch tag

2016-01-15

Java多张小图合成一张大图

java 程序将多张小图合成一张大图 适合css样式将多个小图合成大图

2014-02-24

Java关于时间调度的几种实现方(Timer Quartz Spring)

Java关于时间调度的几种实现方(Timer TimerTask Quartz Spring)

2014-02-18

JSP自定义分页标签 extends TagSupport

JSP自定义分页标签 extends TagSupport 多种分页风格无需额外资源,使用简单易懂:WebRoot/WEB-INF/tms-tags.tld 文件路径

2014-02-18

PowerDesigner反向工程将数据库设计导出SQL脚本、HTML或World

PowerDesigner反向工程将数据库设计导出: 1 导出SQL脚本 2 导出HTML用以展示模型效果 3 RTF(WORD)或者其他

2012-05-14

局域网聊天和文件传输[Java源码]

局域网 聊天和文件传输[Java源码]: JavaSE技术: Swing编程 Socket通讯 多线程 IO流 等等!

2012-05-14

javascript日期、时间大小的比较

javaScript中实现时间、日期大小的比较 主要是用于在使用日期控件时比较您选择的时间是否大于系统当前时间.....

2010-05-08

struts2文件上传、下载

实现struts2中文件上传于下载及所要主意的地方.... 如:文件类型文件大小的控制等....

2010-05-08

从n个整数中查找出现频率最高的所有整数(用java实现)

从n个整数中查找出现频率最高的所有整数(用java实现)

2009-03-25

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

TA关注的人

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