Spring 框架数据库操作常见问题深度剖析与解决方案
Spring 框架数据库操作常见问题深度剖析与解决方案
在 Java 开发的广阔天地中,Spring 框架无疑是开发者们的得力助手,尤其在数据库操作方面,它提供了丰富且强大的功能。然而,就像任何技术一样,在实际项目开发过程中,我们难免会遇到各种各样的问题。今天,就让我们一同深入探讨 Spring 框架数据库操作中常见的那些 “绊脚石”,并寻找有效的解决办法。
一、数据库连接失败
在项目启动时,数据库连接失败是一个较为常见的问题。当遇到应用启动失败且无法访问数据库时,查看日志往往能发现一些关键线索。比如,出现java.sql.SQLException: Access denied for user 'root'@'localhost'
,这大概率是用户名或密码配置错误;而com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
则可能意味着网络连接存在问题,或者数据库服务未正常启动,又或者是数据库驱动类未正确加载。
解决这个问题,我们需要从多个方面入手。首先,仔细检查application.properties
文件中的spring.datasource.url
、username
和password
,确保这些配置准确无误。其次,确认所使用的数据库驱动类名是否正确,以 MySQL 为例,其驱动类通常为com.mysql.cj.jdbc.Driver
。此外,利用telnet
命令或者数据库客户端来验证网络的连通性也是必不可少的步骤。
为了在后续开发中更好地保障数据库连接的稳定性,我们可以采取一些预防措施。例如,使用连接池的健康检查功能,像 HikariCP 的connection-test-query
,它能定期检测连接的可用性。同时,将敏感信息统一管理在配置中心,不仅能提高安全性,也方便后续的维护和修改。
二、事务未回滚
在数据库操作中,事务的正确回滚至关重要。有时,我们会遇到抛出异常后,数据库数据却依然被修改的情况,查看日志若出现Transaction silently rolled back because it has been marked as rollback-only
,就说明事务回滚出现了问题。
造成这种情况的原因主要有以下几点:一是未启用事务管理,这时候需要在启动类中添加@EnableTransactionManagement
注解;二是在@Transactional
注解的方法中捕获了异常,但却没有重新抛出,导致事务无法感知到异常并进行回滚;三是默认的回滚策略仅针对RuntimeException
,对于非检查异常,我们需要手动配置rollbackFor
属性。
解决时,除了添加@EnableTransactionManagement
注解外,还可以通过设置rollbackFor = Exception.class
来确保所有异常都能触发事务回滚。例如:
@Transactional(rollbackFor = Exception.class)
public void updateData() throws Exception { // 这里编写具体的业务逻辑代码
}
后续开发中,为了更好地监控事务的边界,我们可以借助 AOP 技术。同时,在单元测试中对事务行为进行严格验证,能够及时发现并解决潜在的事务问题。
三、SQL 语法或参数错误
执行 SQL 语句时,语法错误或参数绑定失败也是经常出现的问题。当看到日志中出现org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [SELECT * FROM user WHERE id=?]
,这显然是 SQL 语法存在问题,可能是表名、列名拼写错误等。而BindingException: Parameter 'name' not found. Available parameters are [0, 1, param1, param2]
则表明参数绑定出现了故障,在 MyBatis/MyBatis-Plus 中,参数占位符不匹配是常见原因之一。
为了解决这个问题,我们可以在数据库客户端预先执行 SQL 语句,这样能快速定位语法错误。对于 MyBatis 映射文件中的参数命名问题,使用@Param
注解明确参数是个不错的办法。例如:
<select id="getUser" resultType="User">SELECT * FROM user WHERE name = #{param1}
</select>
在后续的开发过程中,利用 SQL 格式化工具检查代码中的 SQL 语句,能让我们更直观地发现潜在的语法问题。同时,启用 MyBatis 的 SQL 日志(logging.level.org.mybatis=DEBUG
),可以详细记录 SQL 的执行过程,方便我们排查参数绑定等问题。
四、ORM 映射失败
在使用 ORM 框架进行数据库操作时,查询结果无法映射到实体类是一个让人头疼的问题。当日志中出现org.springframework.jdbc.InvalidResultSetAccessException: Column 'create_time' not found.
,这通常意味着实体类字段名与数据库列名不一致,比如实体类中使用驼峰命名,而数据库中采用下划线命名。另外,在 JPA/Hibernate 中,如果未正确配置@Column(name = "create_time")
,也会导致映射失败。
解决这个问题,首先要仔细检查实体类的注解,如@Column
、@Table
等,确保它们的配置正确。对于 MyBatis 框架,可以启用自动驼峰转换功能,即设置mapUnderscoreToCamelCase=true
。
为了减少手动配置带来的错误,后续我们可以使用数据库逆向工程工具,如 MyBatis Generator,它能根据数据库表结构自动生成对应的实体类,大大提高开发效率和准确性。
五、连接池资源耗尽
在高并发场景下,连接池资源耗尽是一个需要特别关注的问题。当出现请求阻塞或超时,并且日志中显示HikariPool-1 - Connection is not available, request timed out after 30000ms
时,就说明连接池资源已经不足。这可能是因为连接池最大连接数(maxActive
)设置过低,无法满足高并发的请求;也可能是在代码中未正确关闭数据库连接,导致连接资源被占用而无法释放。
解决这个问题,一方面我们可以调整连接池的参数,例如将spring.datasource.hikari.maximum-pool-size
设置为合适的值,如 20。另一方面,使用try-with-resources
语句来确保资源能够被正确释放,这是一种非常有效的方式。示例代码如下:
try (Connection conn = dataSource.getConnection()) {// 在这里进行数据库操作
}
在后续的项目维护中,监控连接池的关键指标,如空闲连接数、等待线程数等,能够帮助我们及时发现连接池的健康状况。同时,定期执行连接泄漏检测,也能有效避免连接资源的浪费。
六、数据库死锁
数据库死锁会导致事务长时间挂起,最终超时,严重影响系统的性能和稳定性。当日志中出现Deadlock found when trying to get lock; try restarting transaction
时,就表明发生了死锁。通常,多个事务以不同顺序竞争锁资源,或者事务隔离级别设置过高(如SERIALIZABLE
)是导致死锁的主要原因。
解决数据库死锁问题,需要从优化事务代码入手,尽量缩短事务的执行时间,减少锁的持有时间。同时,调整事务的隔离级别为READ_COMMITTED
是一个常见的解决办法。例如:
@Transactional(isolation = Isolation.READ_COMMITTED)
为了更好地分析和解决死锁问题,我们可以使用数据库死锁日志分析工具,像 MySQL 的SHOW ENGINE INNODB STATUS
,它能提供详细的死锁信息。另外,在重试策略中处理死锁,如借助 Spring Retry 框架,能够提高系统的容错性。
七、主键冲突
插入数据时,如果出现主键冲突,会导致数据插入失败。当日志中显示Duplicate entry '1001' for key 'PRIMARY'
,就说明存在主键重复的问题。这可能是因为主键生成策略错误,比如手动赋值时未使用自增策略;在分布式环境下,ID 生成冲突也是一个常见原因,若未使用合适的全局唯一 ID 生成算法(如雪花算法),就容易出现这种情况。
解决这个问题,我们需要检查主键生成策略。在 JPA 中,可以使用@GeneratedValue(strategy = GenerationType.IDENTITY)
来确保主键自增。同时,为了在分布式环境下避免 ID 冲突,使用全局唯一 ID 生成器,如 UUID、Snowflake 是非常必要的。
在后续的开发中,在测试环境中覆盖主键冲突场景,能够提前发现和解决潜在的问题。此外,利用数据库的唯一约束作为兜底方案,也能在一定程度上保证数据的唯一性。
八、延迟加载异常(LazyInitializationException)
在使用 Hibernate 等 ORM 框架时,延迟加载异常是一个需要注意的问题。当访问关联对象时,如果抛出org.hibernate.LazyInitializationException: could not initialize proxy - no Session
异常,这是因为在事务外部访问了延迟加载(FetchType.LAZY
)的关联对象。
解决这个问题,我们可以在事务范围内处理关联数据,确保相关资源能够被正确加载。另外,使用@EntityGraph
或 JPQL 的FETCH JOIN
提前加载数据也是一种有效的解决办法。例如:
@Query("SELECT u FROM User u JOIN FETCH u.orders WHERE u.id = :id")
User getUserWithOrders(@Param("id") Long id);
为了更好地处理这类异常,我们可以在全局异常处理器中捕获并记录LazyInitializationException
,以便及时发现和解决问题。同时,避免在 DTO 中直接返回实体类,而是使用 VO/DTO 转换,能够减少因延迟加载导致的异常。
九、批量插入性能低下
批量插入数据时,如果性能低下,会严重影响系统的效率。当出现批量操作耗时过长,并且日志中显示BatchUpdateException: Data truncation: Data too long for column 'name'
时,这可能是因为未启用 JDBC 批处理,或者是采用了单条提交而非批量提交的方式。
解决这个问题,我们可以在 JDBC URL 中添加批处理优化参数,对于 MySQL 来说,rewriteBatchedStatements=true
就是开启批处理的关键参数。同时,使用 JdbcTemplate 的batchUpdate
方法能够实现高效的批量插入。示例代码如下:
jdbcTemplate.batchUpdate("INSERT INTO user (name) VALUES (?)", batchArgs);
在处理大数据量时,分批次处理是一个不错的选择,比如每 1000 条提交一次。此外,监控批量操作的执行时间,能够帮助我们及时发现性能瓶颈并进行优化。
十、数据库方言问题
在跨数据库开发或者使用不同数据库进行测试时,数据库方言问题可能会导致一些意想不到的错误。当出现分页查询或函数在不同数据库表现不一致,并且日志中显示org.hibernate.engine.jdbc.spi.SqlExceptionHelper: Unknown function 'now'
时,这通常是因为未正确配置 Hibernate 方言。
解决这个问题,我们需要配置spring.jpa.properties.hibernate.dialect
。例如,如果使用 MySQL 8,配置如下:
properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect
在跨数据库项目中,为了提高代码的兼容性,我们应尽量避免使用数据库特定的函数。同时,使用 QueryDSL 或 JPA Criteria API 构建跨平台查询,能够有效减少因方言问题导致的错误。
除了上述十个常见问题,文章中还提到了连接泄露、N+1 查询问题、索引失效导致慢查询、分布式事务不一致、主从同步延迟导致脏读等众多问题,每个问题都有其特定的现象、原因分析、解决措施以及后续建议。由于篇幅有限,无法在这里一一详细展开,但大家可以根据文章中的内容进行深入学习和研究。
希望通过对这些常见问题的分析和解决,能帮助大家在使用 Spring 框架进行数据库操作时更加得心应手,提高开发效率,减少因问题导致的开发周期延长。如果大家在实际开发过程中遇到了其他问题,或者对文中的内容有任何疑问,欢迎在评论区留言交流,让我们共同进步。
相关文章:
Spring 框架数据库操作常见问题深度剖析与解决方案
Spring 框架数据库操作常见问题深度剖析与解决方案 在 Java 开发的广阔天地中,Spring 框架无疑是开发者们的得力助手,尤其在数据库操作方面,它提供了丰富且强大的功能。然而,就像任何技术一样,在实际项目开发过程中&a…...
第一天:爬虫介绍
每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中,对于爬虫有兴趣的伙伴可以订阅专栏一起学习,完全免费。 键盘为桨,代码作帆。这趟为期30天左右的Python爬虫特训即将启航,每日解锁新海域:从Requests库的…...
ECP在Successfactors中paylisp越南语乱码问题
导读 pyalisp:ECP中显示工资单有两种方式,一种是PE51,一种是hrform,PE51就是划线的那种, 海外使用的比较多,国内基本没人使用,hrform就是pdf,可以编辑pdf,这个国内相对使用的人 比…...
Express 中间件分类
一、 按功能用途分类 1. 应用级中间件 这类中间件应用于整个 Express 应用程序,会对每个进入应用的请求进行处理。通过 app.use() 方法挂载,可用于执行一些全局性的任务,像日志记录、请求预处理、设置响应头这类操作。 const express req…...
基于Multi-Runtime的云原生多态微服务:解耦基础设施与业务逻辑的革命性实践
引言:当微服务遭遇复杂性爆炸 在分布式系统复杂度指数级增长的今天,一线开发者平均需要处理27种不同的基础设施组件配置。CNCF最新研究报告指出,采用Multi-Runtime架构可减少83%的非功能性代码编写量,同时使分布式原语࿰…...
flutter isolate到底是啥
在 Flutter 中,Isolate 是一种实现多线程编程的机制,下面从概念、工作原理、使用场景、使用示例几个方面详细介绍: 概念 在 Dart 语言(Flutter 开发使用的编程语言)里,每个 Dart 程序至少运行在一个 Isol…...
Http connect timed out
客户向云端服务请求时,连接云端域名显示连接超时,为什么呢,偶尔会有。 java.net.SocketTimeoutException: connect timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketI…...
Flutter 异步编程利器:Future 与 Stream 深度解析
目录 一、Future:处理单次异步操作 1. 概念解读 2. 使用场景 3. 基本用法 3.1 创建 Future 3.2 使用 then 消费 Future 3.3 特性 二、Stream:处理连续异步事件流 1. 概念解读 2. 使用场景 3. 基本用法 3.1 创建 Stream 3.2 监听 Stream 3.…...
langchain实现的内部问答系统及本地化替代方案
主旨:问答系统搭建使用langchain要token,本文目的在于一、解析langchain调用过程,二、不使用langchain规避token,而使用本地化部署的方案方向。主要是本地向量化库的建立。 文章目录 主旨:问答系统搭建使用langchain要…...
“新旗手”三星Galaxy S25系列,再次定义了AI手机的进化方向
一年多前,三星Galaxy S24系列正式发布,作为首款由Galaxy AI赋能的AI手机,带来了即圈即搜、通话实时翻译、AI扩图等“神奇能力”。 彼时AI手机还是一个新物种,没有明确的产品定义,体验上也没有“标准答案”。三星Galax…...
JVM的类加载器
什么是类加载器? 类加载器:JVM只会运行二进制文件,类加载器的作用就是将字节码文件加载到JVM中,从而Java 程序能够启动起来。 类加载器有哪些? 启动类加载器(BootStrap ClassLoader):加载JAVA HOME/jre/lib目录下的库…...
Node.js中的模块化:从原理到实践
目录 一、为什么需要模块化? 二、Node.js模块类型解析 2.1 核心模块 2.2 文件模块 2.3 第三方模块 三、CommonJS规范深度解析 3.1 模块加载原理 3.2 模块缓存机制 3.3 循环依赖处理 四、ES Modules新特性 4.1 基本用法 4.2 与CommonJS的差异比较 五、模…...
LLM论文笔记 6: Training Compute-Optimal Large Language Models
Arxiv日期:2022.3.29机构:Google DeepMind 关键词 scaling lawpower law参数量FLOPStokes 核心结论 1. 当前大多数大语言模型(如 GPT-3 和 Gopher)在计算预算分配上存在问题,模型参数过大而训练数据不足 2. 计算预算…...
数仓:核心概念,数仓系统(ETL,数仓分层,数仓建模),数仓建模方法(星型模型,雪花模型,星座模型)和步骤
数仓建模的核心概念 事实表(Fact Table): 存储业务过程的度量值(如销售额、订单数量等)。 通常包含外键,用于关联维度表。 维度表(Dimension Table): 存储描述性信息&…...
markdown|mermaid|typora绘制流程图的连接线类型怎么修改?
1、使用typora绘制流程图。别人例子里面的连线是圆弧,我的画出来就是带折线的 这是卖家秀: 这是买家秀: 无语了有没有? 犹豫了片刻我决定一探究竟(死磕)。 Typora --> 文件 --> 偏好设置 --》 mar…...
理解WebGPU 中的 GPUDevice :与 GPU 交互的核心接口
在 WebGPU 开发中, GPUDevice 是一个至关重要的对象,它是与 GPU 进行交互的核心接口。通过 GPUDevice ,开发者可以创建和管理 GPU 资源(如缓冲区、纹理、管线等),并提交命令缓冲区以执行渲染和计算任…...
庞氏骗局(Ponzi Scheme):金融投资与公司经营中的隐形陷阱(中英双语)
庞氏骗局:金融投资与公司经营中的隐形陷阱 庞氏骗局(Ponzi Scheme),这个词在金融史上屡见不鲜。从投资骗局到企业经营中的资本运作,庞氏骗局的核心逻辑始终如一:用后来的资金填补前面的缺口,营…...
【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取1k个用户token,使用jmeter压力测试
【黑马点评】 使用RabbitMQ实现消息队列——3.批量获取用户token,使用jmeter压力测试 3.1 需求3.2 实现3.2.1 环境配置3.2.2 修改登录接口UserController和实现类3.2.3 测试类 3.3 使用jmeter进行测试3.4 测试结果3.5 将用户登录逻辑修改回去3.6 批量删除生成的用户…...
前端调用串口通信
项目录结构 node项目 1) 安装serialport npm install serialport 2)编写index.js 1 const SerialPort require(serialport); 2 var senddata [0x02];//串口索要发送的数据源 3 var port new SerialPort(COM3);//连接串口COM3 4 port.on(open, fun…...
微信小程序请求大模型监听数据块onChunkReceived方法把数据解析成json
自己写的真是案例,onChunkReceived监听到的数据块发现监听到的内容不只是一个块,有时候会是多块,所以自己加了一个循环解析的过程,不知道大家监听到的数据情况是否一致。 在网上翻阅大量资料有的说引入js文件,亲测无效…...
SQL Server STUFF 函数的用法及应用场景
在 SQL Server 中,STUFF 函数是一种强大的字符串处理工具,常用于删除指定位置的字符并插入新的字符。通过这个函数,开发者能够灵活地修改字符串,从而在数据处理、字符串拼接和格式化等方面大显身手。本文将深入探讨 STUFF 函数的语…...
Qt使用CipherSqlite插件访问加密的sqllite数据库
1.下载 git clone https://github.com/devbean/QtCipherSqlitePlugin.git 2.编译CipherSqlite插件 使用qt打开QtCipherSqlitePlugin项目,并构建插件 3.将构建的插件复制到安装目录 4.使用DB Browser (SQLCipher)创建数据库并加密 5.qt使用Ciphe…...
美国哈美顿零件号A203560 HAMILTON 10µl 1701 N CTC (22S/3) A200S 203560
零件号a61092-01 hamilton ml600 电源 110-220 vac 61092-01 零件号a81322 hamilton 1001 tll 1ml 注射器带塞子 81322 零件号a61710-01 hamilton ml600 探头支架 管架 61710-01 零件号a61614-01 hamilton ml600 填充管 12 ga 1219mm 4.57ml 61614-01 零件号a61615-01 ham…...
深入理解 Rust 的迭代器:从基础到高级
1. 迭代器的基础概念 1.1 什么是迭代器? 迭代器是一种设计模式,允许我们逐个访问集合中的元素,而无需暴露集合的内部结构。在 Rust 中,迭代器通过实现 Iterator trait 来定义。该 trait 主要包含一个方法: pub trai…...
聊聊 IP 地址和端口号的区别
在计算机网络中,两个基本概念对于理解设备如何通过网络进行通信至关重要。IP 地址和端口号是 TCP/IP 的典型特征,其定义如下:IP 地址是分配给连接到网络的每台机器的唯一地址,用于定位机器并与其通信。相反,端口号用于…...
地图打包注意事项
地图打包 (注意不能大写 后缀也不能) 需要文件 objects_n 文件夹 (内部大量png文件和plist文件).map.png 小地图tiles_n_n.plist 和tiles_n_n.png 文件sceneAtlasSplitConfigs合并.txt 文件放入 objects_n文件夹 内部(.png文件…...
代码随想录算法营Day38 | 62. 不同路径,63. 不同路径 II,343. 整数拆分,96. 不同的二叉搜索树
62. 不同路径 这题的限制是机器人在m x n的网格的左上角,每次只能向下走一格或者向右走一格。问到右下角有多少条不同路径。这个动态规划的初始状态是第一行和第一列的格子的值都是1,因为机器人只能向右走一格或者向下走一格,所以第一行和第…...
科普:数据仓库中的“指标”和“维度”
在数据仓库中,指标和维度是两个核心概念,它们对于数据分析和业务决策至关重要。以下是对这两个概念的分析及举例说明: 一、指标 定义: 指标是用于衡量业务绩效的关键数据点,通常用于监控、分析和优化企业的运营状况。…...
`Pinia` + `Formily` + `useTable` 实现搜索条件缓存方案
Pinia + Formily + useTable 实现搜索条件缓存方案 背景 在当前的应用体验中,每当用户刷新页面或退出系统时,之前的搜索条件就会消失不见。为了进一步提升工作效率并增强用户体验,希望能够实现这样一个功能:即使用户进行了页面刷新或是暂时离开了平台,再次返回时也能自动…...
Trader Joe‘s EDI 需求分析
Trader Joes成立于1967年,总部位于美国加利福尼亚州,是一家独特的零售商,专注于提供高质量且价格合理的食品。公司经营范围涵盖了各类杂货、冷冻食品、健康食品以及独特的本地特色商品。 EDI需求分析 电子数据交换(EDIÿ…...
【BUG】conda虚拟环境下,pip install安装直接到全局python目录中
问题描述 conda虚拟环境下,有的虚拟环境的python不能使用(which python时直接使用全局路径下的python),且pip install也会安装到全局路径中,无法安装到conda虚拟环境中。 解决方案 查看虚拟环境的PIP缓存默认路径&…...
用Shader glsl实现一个简单的PBR光照模型
PBR模型定义了各种光照属性,如基础颜色、金属度、粗糙度等,就像给物体设定各种 “性格特点”。顶点着色器负责把顶点从模型空间转换到裁剪空间,同时计算一些用于光照计算的参数,就像给顶点 “搬家” 并准备好 “行李”。而片段着色…...
Linux系统使用ollama本地安装部署DeepSeekR1 + open-webui
Linux系统使用ollama本地安装部署DeepSeekR1 open-webui 1. 首先,下载安装ollama #下载安装脚本并执行 curl -fsSL https://ollama.com/install.sh | sh #安装完成后查看ollama版本 ollama --version2. 使用ollama下载deepseek #不同的参数规格对硬件有不同的要…...
学习星开源在线考试教育系统
学习星开源考试系统 项目介绍 项目概述: 学习星在线考试系统是一款基于Java和Vue.js构建的前后端分离的在线考试解决方案。它旨在为教育机构、企业和个人提供一个高效、便捷的在线测试平台,支持多种题型,包括但不限于单选题、多选题、判断…...
树莓派通过手机热点,无线连接PC端电脑,进行远程操作
树莓派通过手机热点实现无线连接具有以下几点优势: 1.该方式能够联网,方便在项目开发时下载一些数据包。 2.该方式能够通过手机端查看树莓派IP地址(有些情况树莓派ip地址会发生改变) 借鉴链接如下: 树莓派的使用网线及无线连接方法及手机…...
【工业安全】-CVE-2022-35561- Tenda W6路由器 栈溢出漏洞
文章目录 1.漏洞描述 2.环境搭建 3.漏洞复现 4.漏洞分析 4.1:代码分析 4.2:流量分析 5.poc代码: 1.漏洞描述 漏洞编号:CVE-2022-35561 漏洞名称:Tenda W6 栈溢出漏洞 威胁等级:高危 漏洞详情࿱…...
Windows环境管理多个node版本
前言 在实际工作中,如果我们基于Windows系统开发,同时需要维护老项目,又要开发新项目,且不同项目依赖的node版本又不同时,那么就需要根据项目切换不同的版本。本文使用Node Version Manager(nvm࿰…...
git 沙盒 下(二)
url :Learn Git Branching 高级git 多次Rebase 最开始我先把bugFix分支先rebase到main上,之后再把c7合并到c6 ,之后就差合并为一个分支了,但是无论移动c7还是another分支都无法合并,都会在原地停留 后来根据提示最…...
基于JavaSpringmvc+myabtis+html的鲜花商城系统设计和实现
基于JavaSpringmvcmyabtishtml的鲜花商城系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系…...
vue-plugin-hiprint (vue2
页面效果 <template><div><div class"d-flex flex-column mt5"><div class"d-flex flex-row " style"margin-bottom: 10px;justify-content: center;"><!-- 纸张大小 A3、A4 等 --><div class"paper&quo…...
网站地址栏怎么变成HTTPS开头?
在当今的数字世界中,网络安全已成为不可或缺的一部分。对于网站管理员和所有者来说,确保访问者数据的安全和隐私至关重要。HTTPS是一种加密的通信协议,通过在客户端和服务器之间建立安全连接来保护数据传输。将网站从HTTP升级到HTTPS不仅提升…...
手机用流量怎样设置代理ip?
互联网各领域资料分享专区(不定期更新): Sheet...
Web渗透实战--XSS 常用语句以及绕过思路
Web渗透实战–XSS 常用语句以及绕过思路 0x01:干货 - XSS 测试常用标签语句 0x0101: 标签 <!-- 点击链接触发 - JavaScript 伪协议 --><a hrefjavascript:console.log(1)>XSS1</a> <!-- 字符编码绕过 - JavaScript 伪协议 -->&…...
哈希表-两个数的交集
代码随想录-刷题笔记 349. 两个数组的交集 - 力扣(LeetCode) 内容: 集合的使用 , 重复的数剔除掉,剩下的即为交集,最后加入数组即可。 class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer…...
“数字+实体“双引擎发力树莓集团打造翠屏区首个智慧产业孵化标杆
2025 年 2 月 13 日,宜宾市翠屏区招商引资项目集中签约活动圆满举行。树莓集团产业合作总监童曦鸣代表企业出席并签约,将在翠屏区打造数字经济示范项目。 此次签约,树莓集团将以 “数字 实体” 双引擎发力。在数字产业化方面,凭…...
PostgreSQL 数据库压力测试指南
一、为什么需要压力测试? 数据库需要进行压力测试的原因主要包括以下几个方面: 性能评估:通过压力测试,可以了解数据库在高负载情况下的性能表现,包括响应时间、吞吐量和资源利用率等。这有助于确定系统的性能瓶颈。 …...
npm : 无法加载文件 C:\nvm\v20.11.1\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅
在vscode中运行前端项目时npm run dev 报错:npm : 无法加载文件 C:\nvm\v20.11.1\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1…...
-bash:/usr/bin/rm: Argument list too long 解决办法
问题概述 小文件日志太多导致无法使用rm命令,因为命令行参数列表的长度超过了系统允许的最大值。 需要删除/tmp目录下的所有文件,文件数量比较多。 ls -lt /tmp | wc -l 5682452 解决方法如下: 使用find -exec 遍历,然后执行删…...
【deepseek 部署中的常见问题及解决方案--亲测有效】
deepseek 部署中的常见问题及解决方案 一、环境与安装相关问题二、配置相关问题三、运行与性能问题四、其他常见问题 一、环境与安装相关问题 Python版本不兼容 问题描述:在部署DeepSeek时,系统提示Python版本不兼容。解决方法:DeepSeek推荐…...
【React】react-redux+redux-toolkit实现状态管理
安装 npm install reduxjs/toolkit react-reduxRedux Toolkit 是官方推荐编写Redux的逻辑方式,用于简化书写方式React-redux 用来链接Redux和React组件之间的中间件 使用 定义数据 创建要管理的数据模块 store/module/counter.ts import { createSlice, Payloa…...