Springboot项目集成Durid数据源和P6Spy以及dbType not support问题
项目开发阶段,mybatis的SQL打印有占位符,调试起来还是有点麻烦,随想整合P6Spy打印可以直接执行的SQL,方便调试,用的Durid连接池。
Springboot项目集成Durid
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.18</version></dependency>
配置文件application.yml
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=trueusername: rootpassword: 123456# 指定数据源为 DruidDataSource,默认值为 HikariDataSourcetype: com.alibaba.druid.pool.DruidDataSourcedruid:initial-size: 5min-idle: 5max-active: 15max-wait: 30000min-evictable-idle-time-millis: 30000time-between-eviction-runs-millis: 30000validation-query: SELECT 1 FROM DUALtest-while-idle: truetest-on-borrow: falsetest-on-return: falsepool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 5filters: stat,walluse-global-data-source-stat: truestat-view-servlet:enabled: trueurl-pattern: /druid/*login-username: adminlogin-password: 111111web-stat-filter:enabled: trueurl-pattern: /*exclusions: /druid/*, *.js, *.jpeg, *.jpg, *.png, *.gif, *.cssfilter:stat:merge-sql: trueslow-sql-millis: 3000log-slow-sql: true
配置P6Spy,有两种方式,一种是添加依赖jar包,一种是用p6spy-spring-boot-starter。
第一种:
添加依赖:可以添加到dev环境,生产环境不建议使用,有性能损耗。
<dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version>
</dependency>
或者只添加到开发环境
<profiles><profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><profiles.active>dev</profiles.active></properties><dependencies><dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version></dependency></dependencies></profile>
</profiles>
修改数据源配置,需要改2个地方,url和driver-class-name
修改前:
修改后:
spring:datasource:url: jdbc:p6spy:mysql://x.x.x.x:3306/my_test?allowPublicKeyRetrieval=true&useSSL=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=falseusername: rootpassword: 123456driver-class-name: com.p6spy.engine.spy.P6SpyDriver
添加spy.properties文件,默认会在项目根目录生成一个spy.log文件,把SQL打印到该文件中。
module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory# 自定义日志打印logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger#日志输出到控制台appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger# 使用日志系统记录 sql#appender=com.p6spy.engine.spy.appender.Slf4JLogger# 设置 p6spy driver 代理deregisterdrivers=true# 取消JDBC URL前缀useprefix=true# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.excludecategories=info,debug,result,batch,resultset# 日期格式dateformat=yyyy-MM-dd HH:mm:ss# 真实JDBC driver , 多个以 逗号 分割 默认为空#driverlist=org.h2.Driverdriverlist=oracle.jdbc.OracleDriver# 是否开启慢SQL记录outagedetection=true# 慢SQL记录标准 2 秒outagedetectioninterval=2
集成完成。
spy.properties参考:
mybatis-plus:
#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2
官网的例子:
################################################################## P6Spy Options File ## See documentation for detailed instructions ## http://p6spy.github.io/p6spy/2.0/configandusage.html #################################################################################################################################### MODULES ## ## Module list adapts the modular functionality of P6Spy. ## Only modules listed are active. ## (default is com.p6spy.engine.logging.P6LogFactory and ## com.p6spy.engine.spy.P6SpyFactory) ## Please note that the core module (P6SpyFactory) can't be ## deactivated. ## Unlike the other properties, activation of the changes on ## this one requires reload. ###################################################################modulelist=com.p6spy.engine.spy.P6SpyFactory,com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory################################################################# CORE (P6SPY) PROPERTIES ################################################################## A comma separated list of JDBC drivers to load and register.# (default is empty)## Note: This is normally only needed when using P6Spy in an# application server environment with a JNDI data source or when# using a JDBC driver that does not implement the JDBC 4.0 API# (specifically automatic registration).#driverlist=# for flushing per statement# (default is false)#autoflush=false# sets the date format using Java's SimpleDateFormat routine.# In case property is not set, milliseconds since 1.1.1970 (unix time) is used (default is empty)#dateformat=# prints a stack trace for every statement logged#stacktrace=false# if stacktrace=true, specifies the stack trace to print#stacktraceclass=# determines if property file should be reloaded# Please note: reload means forgetting all the previously set# settings (even those set during runtime - via JMX)# and starting with the clean table# (default is false)#reloadproperties=false# determines how often should be reloaded in seconds# (default is 60)#reloadpropertiesinterval=60# specifies the appender to use for logging# Please note: reload means forgetting all the previously set# settings (even those set during runtime - via JMX)# and starting with the clean table# (only the properties read from the configuration file)# (default is com.p6spy.engine.spy.appender.FileLogger)#appender=com.p6spy.engine.spy.appender.Slf4JLogger#appender=com.p6spy.engine.spy.appender.StdoutLogger#appender=com.p6spy.engine.spy.appender.FileLogger# name of logfile to use, note Windows users should make sure to use forward slashes in their pathname (e:/test/spy.log)# (used for com.p6spy.engine.spy.appender.FileLogger only)# (default is spy.log)#logfile=spy.log# append to the p6spy log file. if this is set to false the# log file is truncated every time. (file logger only)# (default is true)#append=true# class to use for formatting log messages (default is: com.p6spy.engine.spy.appender.SingleLineFormat)#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat# Custom log message format used ONLY IF logMessageFormat is set to com.p6spy.engine.spy.appender.CustomLineFormat# default is %(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine)# Available placeholders are:# %(connectionId) the id of the connection# %(currentTime) the current time expressing in milliseconds# %(executionTime) the time in milliseconds that the operation took to complete# %(category) the category of the operation# %(effectiveSql) the SQL statement as submitted to the driver# %(effectiveSqlSingleLine) the SQL statement as submitted to the driver, with all new lines removed# %(sql) the SQL statement with all bind variables replaced with actual values# %(sqlSingleLine) the SQL statement with all bind variables replaced with actual values, with all new lines removed#customLogMessageFormat=%(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine)# format that is used for logging of the java.util.Date implementations (has to be compatible with java.text.SimpleDateFormat)# (default is yyyy-MM-dd'T'HH:mm:ss.SSSZ)#databaseDialectDateFormat=yyyy-MM-dd'T'HH:mm:ss.SSSZ# format that is used for logging of the java.sql.Timestamp implementations (has to be compatible with java.text.SimpleDateFormat)# (default is yyyy-MM-dd'T'HH:mm:ss.SSSZ)#databaseDialectTimestampFormat=yyyy-MM-dd'T'HH:mm:ss.SSSZ# format that is used for logging booleans, possible values: boolean, numeric# (default is boolean)#databaseDialectBooleanFormat=boolean# Specifies the format for logging binary data. Not applicable if excludebinary is true.# (default is com.p6spy.engine.logging.format.HexEncodedBinaryFormat)#databaseDialectBinaryFormat=com.p6spy.engine.logging.format.PostgreSQLBinaryFormat#databaseDialectBinaryFormat=com.p6spy.engine.logging.format.MySQLBinaryFormat#databaseDialectBinaryFormat=com.p6spy.engine.logging.format.HexEncodedBinaryFormat# whether to expose options via JMX or not# (default is true)#jmx=true# if exposing options via jmx (see option: jmx), what should be the prefix used?# jmx naming pattern constructed is: com.p6spy(.<jmxPrefix>)?:name=<optionsClassName># please note, if there is already such a name in use it would be unregistered first (the last registered wins)# (default is none)#jmxPrefix=# if set to true, the execution time will be measured in nanoseconds as opposed to milliseconds# (default is false)#useNanoTime=false################################################################## DataSource replacement ## ## Replace the real DataSource class in your application server ## configuration with the name com.p6spy.engine.spy.P6DataSource ## (that provides also connection pooling and xa support). ## then add the JNDI name and class name of the real ## DataSource here ## ## Values set in this item cannot be reloaded using the ## reloadproperties variable. Once it is loaded, it remains ## in memory until the application is restarted. ## ###################################################################realdatasource=/RealMySqlDS#realdatasourceclass=com.mysql.jdbc.jdbc2.optional.MysqlDataSource################################################################## DataSource properties ## ## If you are using the DataSource support to intercept calls ## to a DataSource that requires properties for proper setup, ## define those properties here. Use name value pairs, separate ## the name and value with a semicolon, and separate the ## pairs with commas. ## ## The example shown here is for mysql ## ###################################################################realdatasourceproperties=port;3306,serverName;myhost,databaseName;jbossdb,foo;bar################################################################## JNDI DataSource lookup ## ## If you are using the DataSource support outside of an app ## server, you will probably need to define the JNDI Context ## environment. ## ## If the P6Spy code will be executing inside an app server then ## do not use these properties, and the DataSource lookup will ## use the naming context defined by the app server. ## ## The two standard elements of the naming environment are ## jndicontextfactory and jndicontextproviderurl. If you need ## additional elements, use the jndicontextcustom property. ## You can define multiple properties in jndicontextcustom, ## in name value pairs. Separate the name and value with a ## semicolon, and separate the pairs with commas. ## ## The example shown here is for a standalone program running on ## a machine that is also running JBoss, so the JNDI context ## is configured for JBoss (3.0.4). ## ## (by default all these are empty) ###################################################################jndicontextfactory=org.jnp.interfaces.NamingContextFactory#jndicontextproviderurl=localhost:1099#jndicontextcustom=java.naming.factory.url.pkgs;org.jboss.naming:org.jnp.interfaces#jndicontextfactory=com.ibm.websphere.naming.WsnInitialContextFactory#jndicontextproviderurl=iiop://localhost:900################################################################# P6 LOGGING SPECIFIC PROPERTIES ################################################################## filter what is logged# please note this is a precondition for usage of: include/exclude/sqlexpression# (default is false)#filter=false# comma separated list of strings to include# please note that special characters escaping (used in java) has to be done for the provided regular expression# (default is empty)#include=# comma separated list of strings to exclude# (default is empty)#exclude=# sql expression to evaluate if using regex# please note that special characters escaping (used in java) has to be done for the provided regular expression# (default is empty)#sqlexpression=#list of categories to exclude: error, info, batch, debug, statement,#commit, rollback, result and resultset are valid values# (default is info,debug,result,resultset,batch)#excludecategories=info,debug,result,resultset,batch#whether the binary values (passed to DB or retrieved ones) should be logged with placeholder: [binary] or not.# (default is false)#excludebinary=false# Execution threshold applies to the standard logging of P6Spy.# While the standard logging logs out every statement# regardless of its execution time, this feature puts a time# condition on that logging. Only statements that have taken# longer than the time specified (in milliseconds) will be# logged. This way it is possible to see only statements that# have exceeded some high water mark.# This time is reloadable.## executionThreshold=integer time (milliseconds)# (default is 0)#executionThreshold=################################################################# P6 OUTAGE SPECIFIC PROPERTIES ################################################################## Outage Detection## This feature detects long-running statements that may be indicative of# a database outage problem. If this feature is turned on, it will log any# statement that surpasses the configurable time boundary during its execution.# When this feature is enabled, no other statements are logged except the long# running statements. The interval property is the boundary time set in seconds.# For example, if this is set to 2, then any statement requiring at least 2# seconds will be logged. Note that the same statement will continue to be logged# for as long as it executes. So if the interval is set to 2, and the query takes# 11 seconds, it will be logged 5 times (at the 2, 4, 6, 8, 10 second intervals).## outagedetection=true|false# outagedetectioninterval=integer time (seconds)## (default is false)#outagedetection=false# (default is 60)#outagedetectioninterval=30
第二种:
添加依赖:
<dependency><groupId>com.github.gavlyukovskiy</groupId><artifactId>p6spy-spring-boot-starter</artifactId><version>1.9.0</version>
</dependency>
修改数据源配置:同第一种方式,修改后
添加配置:这里和第一种方式不一样,可以添加个开关 enabled: true
decorator:datasource:p6spy:logging: filelog-file: spy.loglog-format: executionTime:%(executionTime) | sql:%(sqlSingleLine)
集成完成。
spy.log文件,日志格式可以通过配置文件修改,请另行参考网上的资料。
可能遇到的问题:dbType not support : null,这是没有识别出dbType,Durid数据源会存在该问题。
解决方式:修改Durid配置中的filter,在stat和wall指定dbType和enabled
总结: 除了dbType not support这个问题外,我这还遇到了connection error的问题,最后发现其实和P6Spy无关。我这不是纯净的框架,数据源配置都是jar包的方式继承的父项目,改起来很费劲。P6Spy配置其实很简单,Durid连接池用MySQL的时候会有dbType不识别问题,其余的数据源都很好集成,如果遇到其余的稀奇古怪的问题,请先排查框架本身是否正常。
相关文章:

Springboot项目集成Durid数据源和P6Spy以及dbType not support问题
项目开发阶段,mybatis的SQL打印有占位符,调试起来还是有点麻烦,随想整合P6Spy打印可以直接执行的SQL,方便调试,用的Durid连接池。 Springboot项目集成Durid <dependency><groupId>com.alibaba</group…...

安卓如何卸载应用
卸载系统应用 首先需要打开手机的开发者选项,启动usb调试。 第二步需要在电脑上安装adb命令,喜欢的话还可以将它加入系统path。如果不知道怎么安装,可以从这里下载免安装版本。 第三步将手机与电脑用数据线连接,注意是数据线&a…...
【云原生|Kubernetes】14-DaemonSet资源控制器详解
【云原生|Kubernetes】14-DaemonSet资源控制器详解 文章目录 【云原生|Kubernetes】14-DaemonSet资源控制器详解简介典型用法DaemonSet语法规则Pod模板Pod 选择算符在选定的节点上运行 Pod DaemonSet的 Pods 是如何被调度的污点和容忍度DaemonSet更新和回滚DaemonSet更新策略执…...
基于 Guava Retry 在Spring封装一个重试功能
pom依赖 <dependency><groupId>com.github.rholder</groupId><artifactId>guava-retrying</artifactId><version>2.0.0</version> </dependency> <dependency><groupId>org.springframework.boot</groupId>…...

适用HarmonyOS 3.1版本及以上的应用及服务开发工具 DevEco Studio 3.1.1 Release 安装
文章目录 安装步骤1.下载安装包2.安装成功后,初次运行studio2.1 配置node与ohpm的环境2.2安装sdk2.3等待安装结束 3.创建项目3.1 点击Create Project3.2 选择一个空项目3.3 项目配置3.4 Finish、等待依赖下载完毕3.5 项目创建完成 tip 提示4.配置运行环境4.1 真机运…...

[信号与系统系列] 正弦振幅调制之差拍信号
当将具有不同频率的两个正弦曲线相乘时,可以创建一个有趣的音频效果,称为差拍音符。这种现象听起来像颤音,最好通过选择一个频率非常小的信号与和另一个频率大约1KHz的信号,把二者混合从而听到。一些乐器能够自然产生差拍音符。使…...
vb+SQL航空公司管理系统设计与实现
航空公司管理信息系统 一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。 本设计讲述如何建立一个航空公司管理信…...
python爬取网页视频
Python是一种功能强大的编程语言,被广泛应用于网络爬虫、数据分析和人工智能等领域。在网络爬虫中,常常需要从网页中获取视频或者录制网页视频。下面将介绍如何使用Python来录制网页视频。 import time from selenium import webdriver # 创建驱动程序 d…...

数据挖掘具体步骤
数据挖掘具体步骤 1、理解业务与数据 2、准备数据 数据清洗: 缺失值处理: 异常值: 数据标准化: 特征选择: 数据采样处理: 3、数据建模 分类问题: 聚类问题: 回归问题 关联分析 集成学习 image B…...
react class与hooks区别
在React中,有两种主要的方式来管理组件的状态和生命周期:Class 组件和 Hooks。 Class 组件: Class 组件是 React 最早引入的方式,它是基于 ES6 class 的语法来创建的。Class 组件包含了生命周期方法,可以用来处理组件…...
Python爬虫思维:异常处理与日志记录
作为一名专业的爬虫代理供应商,我们经常会看见各种各样的爬虫异常情况。网络请求超时、页面结构变化、反爬虫机制拦截等问题时常出现在客户的工作中。 在这篇文章中,我将和大家分享一些关于异常处理与日志记录的思维方法。通过合理的异常处理和有效的日志…...

(十六)大数据实战——安装使用mysql版的hive服务
前言 hive默认使用的是内嵌据库derby,Derby 是一个嵌入式数据库,可以轻松地以库的形式集成到应用程序中。它不需要独立的服务器进程,所有的数据存储在应用程序所在的文件系统中。为了支持hive服务更方便的使用,我们使用mysql数据…...

【信号生成器】从 Excel 数据文件创建 Simulink 信号生成器块研究(Simulink)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【UE4 RTS】01-Camera SetUp
UE版本:4.24.3 前言 本篇主要完成游戏模式、玩家控制器和玩家控制的Pawn的设置,下一篇介绍如何实现Pawn的移动 步骤 1. 首先创建一个俯视角游戏模板 2. 首先删除“TopDownCharacter”, 3. 新建一个文件夹命名为“RTS_Toturial” 在文件夹…...

Mirror网络库 | 说明
此篇为上文,下篇:Mirror网络库 | 实战 一、介绍 基于UNET,从2014年经过9年实战测试;服务器和客户端是一个项目;使用NetworkBehaviour而不是MonoBehaviour,还有NetworkServer和NetworkClient;Mi…...
分布式异步任务处理组件(九)
最近完成了网络通信模块的一些基本代码实现,这里记录一些关于类和接口设计的问题和思考;另外进度可能会受阻,之前不知道猴年马月投的简历现在开始邀约面试了,包括今天在内的三天都有一场面试--主要是今天中午的面试过后两分钟HR就…...

[excel]vlookup函数对相同的ip进行关联
一、需求(由于ip不可泄漏所以简化如下) 有两个sheet: 找到sheet1在sheet2中存在的ip,也就是找到有漏洞的ip 二、实现 vlookup函数有4个参数 第一个:当前表要匹配的列,选择第一个sheet当前行需要处理的ip即可 第二个:第二个shee…...

两个状态的马尔可夫链
手动推导如下公式。 证明: 首先将如下矩阵对角化: { 1 − a a b 1 − b } \begin {Bmatrix} 1-a & a \\ b & 1-b \end {Bmatrix} {1−aba1−b} (1)求如下矩阵的特征值: { 1 − a a b 1 − b } { x 1 x 2 } λ { x 1 x 2 }…...

SpringBoot 依赖管理
Spring Boot 依赖管理 1. 父项目做依赖管理 无需关注版本号,自动版本仲裁机制 <!-- 依赖管理 --> <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version&g…...

重试框架入门:Spring-RetryGuava-Retry
前言 在日常工作中,随着业务日渐庞大,不可避免的涉及到调用远程服务,但是远程服务的健壮性和网络稳定性都是不可控因素,因此,我们需要考虑合适的重试机制去处理这些问题,最基础的方式就是手动重试…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...