- 博客(124)
- 资源 (10)
- 收藏
- 关注
原创 auto_increment 、雪花 id 和 uuid 做 MySQL 主键对比分析
在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。
2024-05-09 10:39:56
899
原创 flutter 命令
flutter 命令是Flutter框架提供的一个命令行工具,用于帮助开发者进行应用的开发、调试和部署。它包含了多个子命令,覆盖了从项目初始化到发布的整个流程。
2024-05-07 10:08:43
891
原创 Spring 之 MatchingStrategy
自Spring Framework 5.3版本起,引入了一个新的更高效的路径匹配策略PathPatternParser,它提供了更灵活和强大的匹配功能,比如精确控制匹配前缀、后缀以及捕获组等。例如,/api/users/**可以匹配到/api/users/123或/api/users/profile等任何以/api/users/开头的路径。4、路径参数增强:除了基本的路径变量匹配外,还支持更复杂的路径参数模式,例如可选参数、重复参数模式等。提供了更精细的控制选项,如忽略大小写匹配、严格模式匹配等。
2024-04-28 15:26:14
2778
原创 工程重命名(递归/模糊或精确替换目录和文件及文件中的名称)
/ 使用正确的 newFilePath 变量。// 递归处理子目录。// 处理未重命名但需要替换内容的文件。if (exists) { // 可以根据需要调整文件类型过滤条件。// 处理文件内容替换。* 支持模糊匹配和精确匹配。
2024-04-26 16:26:18
1047
原创 Flutter 之 Widget
无论是简单的文本、按钮、图标,还是复杂的布局、列表、滑动容器,甚至包括动画效果、手势处理、主题样式等,一切都是以 Widget 的形式来实现和组织的。Widget 类通常包含一系列可设置的属性(通过构造函数参数),用于定制其外观、行为和与其他 Widget 或系统资源的交互。总的来说,Widget 是 Flutter 中用来构建和管理用户界面的核心概念,它封装了界面元素的结构、样式、行为以及响应状态变化的能力,通过组合和配置各种 Widget,开发者可以高效地构建出丰富多样的跨平台应用程序。
2024-04-25 14:04:49
964
2
原创 Java Persistence API (JPA) 之 EntityManager
总结来说,EntityManager 是 JPA 提供的一个强大而灵活的接口,它封装了与数据库交互的所有必要操作,包括实体的生命周期管理、查询执行、事务控制、缓存管理以及并发控制。EntityManager 提供了一系列方法,用于执行与对象-关系映射(ORM)相关的操作,如创建、读取、更新、删除(CRUD)实体对象,以及执行查询等。读取缓存:当通过 find()、getReference() 或查询方法加载实体时,如果一级缓存中已有相同标识符的实体,直接返回缓存中的实体,避免重复从数据库查询。
2024-04-24 11:46:11
3171
1
原创 jpa 和 mybatis 的优缺点
总结来说,JPA 更适合需要高度抽象、数据库无关性、自动化的 CRUD 操作和复杂查询的场景,尤其是大型企业级应用。灵活的 SQL 编写:MyBatis 允许开发者直接编写 SQL(存储在 XML 文件或注解中),可以充分利用数据库特性,编写高度优化的查询。对于复杂查询、批量操作、存储过程调用等场景,MyBatis 提供了更好的控制力。JPA(Java Persistence API)和 MyBatis 是两种广泛使用的 Java 持久化框架,它们各自具有独特的优点和适用场景。
2024-04-23 18:04:35
1090
原创 线程池 ThreadPoolExecutor 参数详解
提到 Java 线程池,就不得不说 ThreadPoolExecutor,它是 Java 并发包 java.util.concurrent 中的一个类,提供一个高效、稳定、灵活的线程池实现,用于实现多线程并发执行任务,提高应用程序的执行效率。当线程池中的线程数量超过 核心线程数 或者 允许核心线程超时 时,线程将使用此超时时间。如果当前池中有多于核心数量的线程,在等待这段时间而没有处理任务之后,多余的线程将会被终止。上述截图代码可以看出: 如果运行的线程数少于核心线程数,则为当前任务启动一个新的核心线程。
2024-04-22 20:30:36
1096
原创 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
758
原创 mysql 删除数据的四种方法
在MySQL数据库中,删除数据是一个常见的操作,它允许从表中移除不再需要的数据。在执行删除操作时,需要谨慎,以免误删重要数据。DELETE语句DROP TABLE语句使用外键约束这些是MySQL中删除数据的主要方法。在执行删除操作时,请确保备份重要数据,以免意外删除。此外,根据您的需求选择适当的删除方法,以确保数据库的完整性和性能。如果不确定如何执行删除操作,建议在测试环境中进行测试,以避免在生产环境中发生意外。
2024-04-18 17:42:53
4314
原创 Spring WebFlux Mono 未按预期执行
当调用 subscribe() 时,不会立即执行 Mono 中的逻辑,而是注册了一个订阅者,实际的处理将在后台线程(如 Reactor 的调度线程)中异步进行。如果代码中仅创建了 Mono 实例而未显式或隐式调用 subscribe() 或其他触发订阅的方法(如 block()、flatMap()、thenReturn() 等),则 Mono 内部的逻辑将不会执行。代码执行顺序: 在某些复杂的异步场景中,可能由于代码逻辑安排不当,导致 subscribe() 调用发生在 Mono 创建或填充之后。
2024-04-17 16:39:51
1402
原创 spring webflux 小结
一个简单的处理请求和响应的抽象,用来适配不同HTTP服务容器的API。关于Spring MVC 和Spring WebFlux 测评很多,本文引用下做简单说明。参考:《基本依赖-- r2dbc 连接池 -->--r2dbc mysql 库-->--自动配置需要引入一个嵌入式数据库类型对象-->-- 反应方程式 web 框架 webflux-->相同数据下效果如下;Spring MVC + JDBC 在低并发下表现最好,但 WebFlux + R2DBC 在高并发下每个处理请求使用的内存最少。
2024-04-16 16:07:11
1538
原创 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
754
原创 @EnableWebMvc 导致自定义序列化器失效
在使用Swagger的时候用 到了@EnableWebMvc,发现之前为了解决Long类型、日期类型等自定义序列化器失效了@Bean.select().build();Swagger3/2+Spring boot 使用小结_spring boot3 + swagger3-CSDN博客我们有时候,可能需要自定义一个序列化器来满足自己的需要,但是如果项目中不正确使用了注解,可能会导致这个自定义的序列化器失效。首先我们应该看下这个注解是拿来干啥的吧。项目中,如果我们希望自定义一些MVC。
2024-03-27 15:15:50
1414
原创 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
1039
原创 通过spring boot/redis/aspect 防止表单重复提交【防抖】
所谓防抖,一是防用户手抖,二是防网络抖动。在Web系统中,表单提交是一个非常常见的功能,如果不加控制,容易因为用户的误操作或网络延迟导致同一请求被发送多次,进而生成重复的数据记录。滚动加载类接口:比如下拉刷新、上拉加载更多等,用户可能在滚动过程中频繁触发接口请求,但是每次触发并不一定需要立即发送请求,可以等待用户停止滚动一段时间后再发送请求。用户输入类接口:比如搜索框输入、表单输入等,用户输入往往会频繁触发接口请求,但是每次触发并不一定需要立即发送请求,可以等待用户完成输入一段时间后再发送请求。
2024-03-15 20:05:40
613
原创 spring.factories 和@ComponentScan的使用小结
是一种基于SPI(Service Provider Interface)的机制,用于自动配置和加载组件。SPI是一种Java扩展机制,允许应用程序在运行时动态加载实现特定接口的组件。在Spring Boot项目中,文件中,可以配置各种自动配置类、扩展点和插件,Spring Boot在启动时会通过这个文件自动加载这些组件,实现自动配置和扩展功能。这种基于SPI的机制可以帮助简化应用程序的配置和扩展,提高开发效率和灵活性。文件通常用于定义各种自动配置类、扩展点和插件,以实现自动配置和加载功能。
2024-02-23 19:42:40
548
原创 Spring Cloud+SkyWalking全链路监控部署及使用分享
Spring Cloud+SkyWalking全链路监控部署及使用分享
2024-01-25 11:06:15
1162
1
原创 MySQL 案例:update set 和 and 的坑
由此可见,MySQL 在语法上,并不认为 and 这个用法是错误的,那么说明 MySQL 用另外的方式“解读”了这个语句。最容易想到的,就是 MySQL 是不是在 set 的时候,把 and 解释成了逻辑运算符,而不是英文意义上的“和”?可以看到这两个语句确实都不会报错,且带 and 的 update 语句匹配到了具体的行(Rows matched: 1),但是没有修改数据(Changed: 0),标准语法下的 update 语句倒是正常修改了数据。,实际构造一个简单的场景,尝试复现一下这个问题。
2023-11-06 10:49:59
2057
原创 spring cloud feign 开启gzip及Illegal character ((CTRL-CHAR, code 31))异常处理
min-response-size:默认2k(2048)按需配置。#mime-types: 按需配置。
2023-07-08 15:00:11
515
原创 记录一次性能调优
现状:交易接口,并发10笔每秒都不能100%超过,存在响应超时或者连接超时,但服务节点看着很正常没有任何错误信息,太夸张了。服务:测试环境/spring cloud/mysql linux 4*16G/nacos/单节点/固定带宽5M。
2023-05-08 16:43:38
88
原创 OAuth2.0 详解
OAuth2.0 的授权简单理解其实就是获取令牌(token)的过程,OAuth 协议定义了四种获得令牌的授权方式(authorization grant ):授权码(authorization-code)、简单式(implicit)、密码式(password)、客户端凭证(client credentials),一般常用的是授权码和密码模式。发布于 2022-05-04 18:16。
2023-01-13 09:24:39
2009
原创 Spring Cloud 集成 Sleuth+Zipkin+Mysql
1 配置 Zipkin-Server 现在的版本(2.23.16)已经可以直接运行官方提供的jar,不需要单独去写这个服务了,下载地址启动命令:STORAGE_TYPE=mysql MYSQL_HOST=127.0.0.1 MYSQL_TCP_PORT=3306 MYSQL_DB=db_zipkin_log MYSQL_USER=root MYSQL_PASS=root nohup java -jar -Xms512m -Xmx1024m zipkin-server-2.23.16-exe.
2022-03-30 15:53:02
1169
原创 Git Flow 的正确使用姿势
Git Flow 的概念在使用Git的过程中如果没有清晰流程和规划,否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。Git版本管理同样需要一个清晰的流程和规范。Vincent Driessen 为了解决这个问题提出了 A Successful Git Branching Model以下是基于Vincent Driessen提出的Git Flow 流程图Git Flow 的常用分支 Production 分支 也就是我们经常使用的Master...
2021-01-20 10:33:20
142
转载 Linux下查看日志用到的常用命令
Linux下查看日志用到的常用命令杀僵尸进程部分程序员,肯定喜欢下面命令: ps -ef | grep java (先查java进程ID) kill -9 PID(生产环境谨慎使用)kill、killall、pkill命令的区别 kill:通过pid来杀死进程 killall (killall [参数] [进程名]):Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程..
2021-01-05 09:51:48
329
原创 Arthas 开源 Java 诊断工具(服务器反编译class)
arthas 使用服务器环境编译类#1、进入arthas目录cd /root/arthas-packaging-3.3.9-bin#2、执行arthas命令java -jar arthas-boot.jar#3、找到自己需要进入的java进程,输入对应前面的序号【比如 1】1#4、查询自己所找的对应的类加载器hash码【后继用于编译】,比如我要找的类为com.tansun.tcp.sys.msg.action.BaseMsgSysAction输入下方命令:sc -d com.
2020-09-27 16:36:33
2300
JSP自定义分页标签 extends TagSupport
2014-02-18
PowerDesigner反向工程将数据库设计导出SQL脚本、HTML或World
2012-05-14
JVM G1 内存回收机制,G1 Old gen 内存持续增高,是否有必要手动GC
2023-06-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅