- 博客(77)
- 资源 (10)
- 收藏
- 关注
原创 Flutter 之 Widget
无论是简单的文本、按钮、图标,还是复杂的布局、列表、滑动容器,甚至包括动画效果、手势处理、主题样式等,一切都是以 Widget 的形式来实现和组织的。Widget 类通常包含一系列可设置的属性(通过构造函数参数),用于定制其外观、行为和与其他 Widget 或系统资源的交互。总的来说,Widget 是 Flutter 中用来构建和管理用户界面的核心概念,它封装了界面元素的结构、样式、行为以及响应状态变化的能力,通过组合和配置各种 Widget,开发者可以高效地构建出丰富多样的跨平台应用程序。
2024-04-25 14:04:49 103
原创 Java Persistence API (JPA) 之 EntityManager
总结来说,EntityManager 是 JPA 提供的一个强大而灵活的接口,它封装了与数据库交互的所有必要操作,包括实体的生命周期管理、查询执行、事务控制、缓存管理以及并发控制。EntityManager 提供了一系列方法,用于执行与对象-关系映射(ORM)相关的操作,如创建、读取、更新、删除(CRUD)实体对象,以及执行查询等。读取缓存:当通过 find()、getReference() 或查询方法加载实体时,如果一级缓存中已有相同标识符的实体,直接返回缓存中的实体,避免重复从数据库查询。
2024-04-24 11:46:11 450
原创 jpa 和 mybatis 的优缺点
总结来说,JPA 更适合需要高度抽象、数据库无关性、自动化的 CRUD 操作和复杂查询的场景,尤其是大型企业级应用。灵活的 SQL 编写:MyBatis 允许开发者直接编写 SQL(存储在 XML 文件或注解中),可以充分利用数据库特性,编写高度优化的查询。对于复杂查询、批量操作、存储过程调用等场景,MyBatis 提供了更好的控制力。JPA(Java Persistence API)和 MyBatis 是两种广泛使用的 Java 持久化框架,它们各自具有独特的优点和适用场景。
2024-04-23 18:04:35 579
原创 线程池 ThreadPoolExecutor 参数详解
提到 Java 线程池,就不得不说 ThreadPoolExecutor,它是 Java 并发包 java.util.concurrent 中的一个类,提供一个高效、稳定、灵活的线程池实现,用于实现多线程并发执行任务,提高应用程序的执行效率。当线程池中的线程数量超过 核心线程数 或者 允许核心线程超时 时,线程将使用此超时时间。如果当前池中有多于核心数量的线程,在等待这段时间而没有处理任务之后,多余的线程将会被终止。上述截图代码可以看出: 如果运行的线程数少于核心线程数,则为当前任务启动一个新的核心线程。
2024-04-22 20:30:36 703
原创 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 510
原创 mysql 删除数据的四种方法
在MySQL数据库中,删除数据是一个常见的操作,它允许从表中移除不再需要的数据。在执行删除操作时,需要谨慎,以免误删重要数据。DELETE语句DROP TABLE语句使用外键约束这些是MySQL中删除数据的主要方法。在执行删除操作时,请确保备份重要数据,以免意外删除。此外,根据您的需求选择适当的删除方法,以确保数据库的完整性和性能。如果不确定如何执行删除操作,建议在测试环境中进行测试,以避免在生产环境中发生意外。
2024-04-18 17:42:53 750
原创 Spring WebFlux Mono 未按预期执行
当调用 subscribe() 时,不会立即执行 Mono 中的逻辑,而是注册了一个订阅者,实际的处理将在后台线程(如 Reactor 的调度线程)中异步进行。如果代码中仅创建了 Mono 实例而未显式或隐式调用 subscribe() 或其他触发订阅的方法(如 block()、flatMap()、thenReturn() 等),则 Mono 内部的逻辑将不会执行。代码执行顺序: 在某些复杂的异步场景中,可能由于代码逻辑安排不当,导致 subscribe() 调用发生在 Mono 创建或填充之后。
2024-04-17 16:39:51 671
原创 spring webflux 小结
一个简单的处理请求和响应的抽象,用来适配不同HTTP服务容器的API。关于Spring MVC 和Spring WebFlux 测评很多,本文引用下做简单说明。参考:《基本依赖-- r2dbc 连接池 -->--r2dbc mysql 库-->--自动配置需要引入一个嵌入式数据库类型对象-->-- 反应方程式 web 框架 webflux-->相同数据下效果如下;Spring MVC + JDBC 在低并发下表现最好,但 WebFlux + R2DBC 在高并发下每个处理请求使用的内存最少。
2024-04-16 16:07:11 1107
原创 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 491
原创 @EnableWebMvc 导致自定义序列化器失效
在使用Swagger的时候用 到了@EnableWebMvc,发现之前为了解决Long类型、日期类型等自定义序列化器失效了@Bean.select().build();Swagger3/2+Spring boot 使用小结_spring boot3 + swagger3-CSDN博客我们有时候,可能需要自定义一个序列化器来满足自己的需要,但是如果项目中不正确使用了注解,可能会导致这个自定义的序列化器失效。首先我们应该看下这个注解是拿来干啥的吧。项目中,如果我们希望自定义一些MVC。
2024-03-27 15:15:50 1272
原创 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 775
原创 通过spring boot/redis/aspect 防止表单重复提交【防抖】
所谓防抖,一是防用户手抖,二是防网络抖动。在Web系统中,表单提交是一个非常常见的功能,如果不加控制,容易因为用户的误操作或网络延迟导致同一请求被发送多次,进而生成重复的数据记录。滚动加载类接口:比如下拉刷新、上拉加载更多等,用户可能在滚动过程中频繁触发接口请求,但是每次触发并不一定需要立即发送请求,可以等待用户停止滚动一段时间后再发送请求。用户输入类接口:比如搜索框输入、表单输入等,用户输入往往会频繁触发接口请求,但是每次触发并不一定需要立即发送请求,可以等待用户完成输入一段时间后再发送请求。
2024-03-15 20:05:40 453
原创 spring.factories 和@ComponentScan的使用小结
是一种基于SPI(Service Provider Interface)的机制,用于自动配置和加载组件。SPI是一种Java扩展机制,允许应用程序在运行时动态加载实现特定接口的组件。在Spring Boot项目中,文件中,可以配置各种自动配置类、扩展点和插件,Spring Boot在启动时会通过这个文件自动加载这些组件,实现自动配置和扩展功能。这种基于SPI的机制可以帮助简化应用程序的配置和扩展,提高开发效率和灵活性。文件通常用于定义各种自动配置类、扩展点和插件,以实现自动配置和加载功能。
2024-02-23 19:42:40 369
原创 Spring Cloud+SkyWalking全链路监控部署及使用分享
Spring Cloud+SkyWalking全链路监控部署及使用分享
2024-01-25 11:06:15 887 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 559
原创 spring cloud feign 开启gzip及Illegal character ((CTRL-CHAR, code 31))异常处理
min-response-size:默认2k(2048)按需配置。#mime-types: 按需配置。
2023-07-08 15:00:11 413
原创 记录一次性能调优
现状:交易接口,并发10笔每秒都不能100%超过,存在响应超时或者连接超时,但服务节点看着很正常没有任何错误信息,太夸张了。服务:测试环境/spring cloud/mysql linux 4*16G/nacos/单节点/固定带宽5M。
2023-05-08 16:43:38 65
原创 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 1571
原创 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 1093
转载 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 108
转载 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 295
原创 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 2138
原创 解决spring mvc 扫描包的问题
问题现状:系统相关的roleApi/menuApi/permApi 注入到目的地失败,这些包都在com.xxx下面1 applicationContext-xxx.xml 配置<context:component-scan base-package="com.xxx"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
2020-09-10 11:09:25 509
原创 javafx webview 解决cookie 丢失、https图片不显示、设置代理
private static void loadWebView() { Platform.runLater(() -> { TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() { @Override public X509Certificate[] getAcceptedIssuers() { retur.
2020-06-22 15:46:56 1363
原创 Spring Boot 配置文件bootstrap和application的加载顺序
1. 相同目录优先级bootstrap.properties/yml >>bootstrap-{profile}.properties/yml>>application.properties/yml>>application-{profile}.properties/yml2.不同目录优先级在不指定要被加载文件时,默认的加载顺序:由里向外加载,所以最...
2019-12-27 17:24:51 2604
原创 同一个SQL语句,为啥性能差异咋就这么大呢?(1分钟系列)
《数据库允许空值,往往是悲剧的开始》一文通过explain来分析SQL的执行计划,来分析null对索引命中情况的影响,有不少朋友留言,问explain结果中的type字段,ref,ALL等不一样的值究竟是什么含义。今天花1分钟简单说下,常见的type结果及代表的含义,并且通过同一个SQL语句的性能差异,说明建对索引多么重要。explain结果中的type字段代表什么意思?...
2019-09-03 11:29:28 262
原创 linux上安装mysql5.7
1、下载tar包,这里使用wget从官网下载wgethttps://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz2、将mysql安装到/usr/local/mysql下# 解压tar -xvfmysql-5.7.22-linux-glibc2.12-x86_64....
2019-07-29 11:24:05 110
原创 Spring Boot 全局异常处理(400/404/500),顺便解决过滤器中异常未捕获到的问题,让RestApi 任何时候都能获取统一的格式代码
出发点是为了在系统抛出异常的时候,前端仍然可以获取到统一的报文格式,所以后端所有的异常都得捕获,并处理Spring boot 在处理异常的时候,500/404默认都会转发到/error,而这个异常的处理类是ErrorController,所以我们重写一个ErrorController的子类即可:@RestControllerpublic class GlobalExcept...
2019-05-31 14:17:50 7199
转载 JVM调优总结
目录数据类型堆与栈Java对象的大小引用类型按照基本回收策略分按分区对待的方式分按系统线程分如何区分垃圾如何处理碎片如何解决同时存在的对象创建和对象回收问题为什么要分代如何分代什么情况下触发垃圾回收分代垃圾回收流程示意选择合适的垃圾收集算法小结回收器选择辅助信息常见配置汇总调优总结垃圾回收的瓶颈增量收集的演进Garbage Firest(G1)展望JVM调优工具如何调优线程监控内存泄漏检查垃圾...
2019-03-29 11:51:18 118
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关注的人