SQL Server查询优化
最常用,最有效的数据库优化方式
查询语句层面
避免全表扫描
- 使用索引:确保查询条件中的字段有索引。例如,查询语句
SELECT * FROM users WHERE age > 20
,若age
字段有索引,数据库会利用索引快速定位符合条件的记录,而不是全表扫描。 - 优化查询条件:避免在
WHERE
子句中使用函数,因为这可能导致索引失效。如SELECT * FROM users WHERE YEAR(created_at) = 2024
,可改写为SELECT * FROM users WHERE created_at BETWEEN '2024-01-01' AND '2024-12-31'
。
优化查询逻辑
- 减少子查询:尽量用连接查询替代子查询。例如,原查询
SELECT * FROM orders WHERE customer_id IN (SELECT id FROM customers WHERE country = 'China')
可改写为SELECT o.* FROM orders o JOIN customers c ON o.customer_id = c.id WHERE c.country = 'China'
。 - 避免
SELECT *
:只选择需要的列,减少数据传输量和数据库处理时间。
事务层面
减少事务持有时间
- 优化事务逻辑:事务中包含的操作应尽量少,避免在事务中进行耗时的操作,如大量的数据计算或文件读写。
合理设置事务隔离级别
- 选择合适级别:根据业务需求选择合适的事务隔离级别,避免使用过高的隔离级别导致并发性能下降。例如,对于一些对数据一致性要求不是特别高的场景,可使用
READ COMMITTED
隔离级别。
设计层面
表结构优化
- 合理选择字段类型
选择与数据匹配的最小数据类型,以节省存储空间并提高查询速度。例如,对于仅存储 0 - 255 范围内整数的字段,使用TINYINT
而不是INT
。对于存储少量字符的字段,使用VARCHAR
而非TEXT
。 - 主键和索引设计
-
- 主键:使用自增整数作为主键,在 MySQL 中,自增主键能让数据在磁盘上顺序存储,提高插入和查询效率。
- 索引:在经常用于查询条件(如
WHERE
子句)、排序(ORDER BY
)和连接(JOIN
)的字段上创建索引。例如,在用户表的username
字段上创建索引,可加快根据用户名查找用户的查询速度。当经常需要多个字段组合查询时,创建复合索引。例如,对于查询SELECT * FROM products WHERE category = 'Electronics' AND price < 1000
,可创建复合索引(category, price)
。如果查询所需的数据都可以从索引中获取,数据库就无需再回表查询数据行,提高查询效率。 - 重建或重新组织索引:随着数据的插入、更新和删除,索引可能会变得碎片化,影响查询性能。定期对索引进行重建或重新组织,可提高索引的效率。
数据库架构优化
- 垂直拆分:将一个包含很多列的大表拆分成多个小表,每个小表包含原表的一部分列。例如,用户表中若包含基本信息(如姓名、性别)和扩展信息(如兴趣爱好、简介),可拆分成两个表,减少每次查询时需要读取的数据量。
- 水平拆分:当单表数据量过大时,将数据按一定规则(如日期、地域等)分散到多个表中。如将订单表按年份拆分为多个表,每年一个表,能提高查询和维护效率。
服务器配置层面
内存配置
- 调整缓存大小:对于关系型数据库如 MySQL,可增大
innodb_buffer_pool_size
参数,让数据库有更多内存用于缓存数据和索引,减少磁盘 I/O。一般可将其设置为服务器物理内存的 70% - 80%。
磁盘 I/O 优化
- 使用 SSD 硬盘:相比传统的机械硬盘,SSD 硬盘具有更快的读写速度,能显著提高数据库的性能。
- 合理规划磁盘布局:将数据文件、日志文件和临时文件分别存放在不同的磁盘分区,避免 I/O 竞争。
疑问解答
为什么尽量用连接查询替代子查询?
在 SQL Server 中,尽量使用连接查询替代子查询主要基于以下几个方面的原因:
性能方面
- 执行计划与优化
-
- 连接查询的执行计划通常更容易被 SQL Server 查询优化器理解和优化。优化器可以更有效地分析连接条件和表之间的关系,从而选择更合适的索引和执行策略。例如,对于两个表的连接查询,优化器可以根据表的大小、索引情况等因素选择嵌套循环连接、哈希连接或合并连接等方式。
- 子查询在某些情况下可能会导致优化器难以生成最优的执行计划。尤其是相关子查询,它会针对外部查询的每一行都执行一次子查询,这可能会导致大量的重复计算,性能较差。例如下面的相关子查询:
SELECT column1, column2
FROM TableA
WHERE column1 > (SELECT AVG(column1) FROM TableB WHERE TableB.key = TableA.key);
这个查询会对 `TableA` 中的每一行都执行一次子查询来计算 `TableB` 中对应行的平均值,效率较低。
资源利用方面
- 内存使用效率
-
- 连接查询在内存使用上更加高效。它可以直接在内存中对多个表的数据进行关联处理,而不需要额外的临时表存储中间结果。
- 子查询可能会占用更多的内存资源。特别是当子查询的结果集较大时,需要在内存中创建临时表来存储这些结果,这会增加内存的压力。
但在某些特定情况下,子查询可能更合适,例如需要获取满足特定条件的单个值或进行复杂的过滤操作时。因此,在实际应用中,需要根据具体的业务需求和数据情况来选择合适的查询方式。
索引碎片化产生的原因
数据频繁插入与删除:当数据库中频繁进行数据的插入和删除操作时,就容易导致索引碎片化。例如,在一个用户信息表中,不断有新用户注册(插入数据)和老用户注销(删除数据),这会使得索引页中的空闲空间变得零散,新的数据可能会被插入到这些分散的空闲空间中,从而造成索引数据的不连续。
数据更新:对索引列的数据进行更新操作也可能引发碎片化。如果更新操作导致索引键值的大小发生变化,就可能需要重新安排该索引项在索引页中的位置,进而破坏了索引的连续性。
SQL Server 中为什么要减少事务持有的时间
在 SQL Server 里,减少事务持有的时间至关重要,主要体现在以下几个方面:
提升并发性能
- 锁的机制:在 SQL Server 中,事务执行期间会根据需要对数据资源加锁,以保证数据的一致性和完整性。锁会阻止其他事务对被锁定资源的访问。如果事务持有锁的时间过长,其他需要访问这些资源的事务就会被阻塞,只能等待锁被释放。
- 示例:假设有一个在线商城系统,一个事务负责处理用户的订单,在事务执行期间对商品库存表加了排他锁。如果这个事务持有锁的时间过长,其他用户的订单处理事务就无法同时修改库存信息,会导致系统响应变慢,降低了系统的并发处理能力。
降低死锁风险
- 死锁的产生:死锁是指两个或多个事务在执行过程中,因争夺锁资源而造成的一种互相等待的现象,导致这些事务都无法继续执行下去。事务持有时间越长,与其他事务发生资源竞争的可能性就越大,死锁发生的概率也就越高。
- 示例:事务 A 持有资源 X 的锁并请求资源 Y 的锁,而事务 B 持有资源 Y 的锁并请求资源 X 的锁,此时就会发生死锁。如果事务持有锁的时间较短,那么在其他事务请求相同资源之前,该事务可能已经完成并释放了锁,从而避免了死锁的发生。
SQL Server 进行多表连接,每两个表连接时的中间数据需要占用新的内存进行存储吗
在 SQL Server 中进行多表连接时,每两个表连接时的中间数据是否需要占用新的内存进行存储,取决于多种因素,下面为你详细分析:
通常情况下会使用内存存储中间结果
在大多数多表连接操作里,SQL Server 为了处理连接逻辑,往往会在内存中生成中间数据。当进行多表连接时,数据库引擎需要把参与连接的表中的行进行匹配操作,这个过程会产生中间结果集。例如,执行 SELECT * FROM TableA JOIN TableB ON TableA.ID = TableB.ID JOIN TableC ON TableB.OtherID = TableC.OtherID;
时,先对 TableA
和 TableB
进行连接操作,此时会在内存里生成一个中间结果集,这个结果集包含了 TableA
和 TableB
连接后的匹配行。接着再用这个中间结果集与 TableC
进行连接。这个中间结果集就需要占用一定的内存空间。
内存使用的优化策略
SQL Server 有一些机制来优化内存使用,避免过度存储中间数据:
- 流式处理:对于某些连接类型和数据分布情况,SQL Server 可能采用流式处理的方式。在流式处理中,数据会逐行进行处理,而不是一次性将所有中间结果存储在内存中。例如,在嵌套循环连接算法中,如果其中一个表的数据量较小,SQL Server 可以将小表加载到内存中,然后逐行扫描大表,将匹配的行直接输出,而不需要存储完整的中间结果。
磁盘临时存储
当内存不足以存储中间数据时,SQL Server 会将部分中间数据存储到磁盘上的临时文件中。这通常发生在处理大规模数据或者复杂连接操作时。磁盘存储会显著降低查询性能,因为磁盘 I/O 操作比内存操作慢得多。
综上所述,每两个表连接时的中间数据通常需要占用一定的内存进行存储,但 SQL Server 会采取多种优化策略来尽量减少内存使用,并且在必要时会将数据存储到磁盘上。
执行计划
执行计划的主要作用
使用执行计划主要是对SQL语句进行问题诊断,从而对其存在的问题进行性能优化。比如,当查询执行缓慢时,执行计划可帮助开发者定位问题,判断是否全表扫描过多、索引未被正确使用,进而排查出语句本身逻辑、索引设置等问题。这样就能找出执行效率低的环节,针对性地调整查询语句、添加或修改索引,提升查询性能。
如何使用执行计划
未完待续。。。想了解如何使用执行计划的评论区扣1,我后续更新一下
相关文章:
SQL Server查询优化
最常用,最有效的数据库优化方式 查询语句层面 避免全表扫描 使用索引:确保查询条件中的字段有索引。例如,查询语句 SELECT * FROM users WHERE age > 20,若 age 字段有索引,数据库会利用索引快速定位符合条件的记…...
iOS底层原理系列04-并发编程
在移动应用开发中,流畅的用户体验至关重要,而并发编程是实现这一目标的关键技术。本文将深入探讨iOS平台上的并发编程和多线程架构,帮助你构建高性能、响应迅速的应用程序。 1. iOS线程调度机制 1.1 线程本质和iOS线程调度机制 线程是操作…...
企业数字化转型数据治理解决方案(119页PPT)(文末有下载方式)
资料解读:企业数字化转型数据治理解决方案 详细资料请看本解读文章的最后内容。 在当今数字化时代,数据已经成为企业最宝贵的资产之一。然而,随着数据量的激增和数据来源的多样化,如何有效管理和利用这些数据成为了企业面临的一…...
git报错:“fatal:refusing to merge unrelated histories“
新建仓库,克隆本地项目到新仓库,首次同步本地已提交的代码到远程时,报错:"fatal:refusing to merge unrelated histories" 。 报错意思是:致命的:拒绝合并无关的历史。 一、问题背景ÿ…...
Jmeter下载及环境配置
Jmeter下载及环境配置 java环境变量配置配置jdk环境变量检查是否配置成功JMeter下载 java环境变量配置 访问地址: https://www.oracle.com/cn/java/technologies/downloads/ 注意:需要自己注册账号 下载完成,解压后的目录为: …...
K8S学习之基础二十四:k8s的持久化存储之pv和pvc
K8S的存储之pv和pvc 在 Kubernetes (k8s) 中,持久化存储是通过 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来实现的。PVC 是用户对存储资源的请求,而 PV 是集群中的实际存储资源。PVC 和 PV 的关系类似于 Pod 和 Node 的关系。 Persisten…...
1.5、Java构造方法重载
构造方法重载的实现 (1)定义多个构造方法 class Person {private String name;private int age;// 无参构造方法public Person() {this.name "Unknown";this.age 0;}// 带一个参数的构造方法public Person(String name) {this.name name;…...
领域驱动设计(DDD)技术分享:从三层架构到DDD的进化之旅
一、开篇话:我们为什么要聊DDD? 如果你像我一样有着Java开发背景,那Spring的三层架构可能是你的老朋友了。Controller-Service-DAO这种模式简直就像我们编程的"家常便饭"。但是,随着业务越来越复杂,你是否也…...
LeetCode - #227 基于 Swift 实现基本计算器
摘要 在这篇文章中,我们将实现一个基于 Swift 语言的基本计算器。该计算器能够解析和计算包含 、-、* 和 / 的数学表达式,并且遵循运算符的优先级规则。整数除法仅保留整数部分,不能使用 eval() 这样的内置解析方法。 描述 给你一个字符串表…...
Elasticsearch Java High Level Client [7.17] 使用
es 的 HighLevelClient存在es源代码的引用,结合springboot使用时,会存在es版本的冲突,这里记录下解决冲突和使用方式(es已经不建议使用这个了)。 注意es服务端的版本需要与client的版本对齐,否则返回数据可…...
[多线程]基于环形队列(RingQueue)的生产者-消费者模型的实现
标题:[多线程]基于环形队列(RingQueue)的生产者-消费者模型 水墨不写bug 一、模型实现 接下来我们要实现一个基于环形队列(RingQueue)的生产者-消费者模型。该模型使用信号量和互斥锁来保证生产者和消费者之间的同步与…...
HAL库STM32常用外设—— CAN通信(一)
文章目录 一、CAN是什么?1.1 CAN应用场景1.2 CAN通信优势 二、CAN基础知识介绍2.1 CAN总线结构2.2 CAN总线特点2.2.1 CAN总线的数据传输特点2.2.2 位时序和波特率 2.3 CAN位时序和波特率2.3 CAN物理层2.3.1 CAN 物理层特性2.3.2 CAN 收发器芯片介绍 2.4 CAN协议层2.…...
分页查询的实现
目录 前言 一.问题描述 二.后端实现步骤 2.1配置PageHelper插件 ①导入依赖 ②在application.yml配置文件中添加相关配置 2.2编写一个入门的程序,体验分页过程 2.3定义一个vo,用来收集分页后的所有信息 2.4修改serviceImpl层的代码 2.5动态设…...
Sourcetree——使用.gitignore忽略文件或者文件夹
一、为何需要文件忽略机制? 1.1 为什么要会略? 对于开发者而言,明智地选择忽略某些文件类型,能带来三大核心优势: 仓库纯净性:避免二进制文件、编译产物等污染代码库 安全防护:防止敏感信息&…...
Thinkphp的belongsToMany(多对多) 和 hasManyThrough(远程一对多)的区别是什么?
虽然 belongsToMany(多对多) 和 hasManyThrough(远程一对多) 都会使用 JOIN 查询,但它们的核心区别在于 关联关系的本质不同,具体如下: 1️⃣ belongsToMany(多对多) &a…...
DataWhale 大语言模型 - 大模型技术基础
本课程围绕中国人民大学高瓴人工智能学院赵鑫教授团队出品的《大语言模型》书籍展开,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的核心技术。并且,课程…...
Docker+Flask 实战:打造高并发微服务架构
DockerFlask 实战:打造高并发微服务架构 今天我们要深入探讨一个非常热门且实用的主题:基于 Docker 部署 Python Flask 应用。Docker 作为当下最流行的容器化技术,已经广泛应用于各种开发和部署场景,尤其是在微服务架构中。而 Fl…...
前端跨域如何调试,以及相关概念梳理【环境变量 本地代理 正向代理 反向代理 OPTIONS请求 CDN 等】
跨域报错 一 前端日常开发时,项目的部署地址和接口请求的地址一般是同源的,不会跨域。 例如项目的测试环境部署在https://my-dev.BeatingWorldLine.com/xxx, 测试环境的访问接口域名也要相同来保证不跨域https://my-dev.BeatingWorldLine.com/api/xxx, …...
【区块链】以太坊
学习视频源链接: https://www.bilibili.com/video/BV1Vt411X7JF/ 本文是根据肖老师的视频进行的笔记记录 bitcoin 1.0 区块链 以太坊 2.0区块链 以太坊 设置了 memory hard mining puzzle ,这造成了asic resistance, 后续 proof of work &a…...
MCU的工作原理:嵌入式系统的控制核心
MCU的工作原理可以概括为以下几个步骤: 1. 初始化 上电后,MCU从Flash存储器中加载程序代码,并初始化外设和寄存器。 2. 任务执行 根据程序逻辑,MCU执行数据处理、外设控制和通信等任务。通过中断系统实时响应外部事件。 3. 低…...
离线服务器ollama新增qwen2:0.5b模型
离线服务器ollama新增qwen2:0.5b模型 Dify集成ollama前面已经介绍过离线服务器CentOS使用的docker安装的ollama,其中在ollama中已经安装了deepseek-r1:1.5b。目前的需求是需要再安装一个qwen2:0.5b的模型,那么如何安装呢? 1.首先在有网的服…...
Ubuntu20.04安装运行DynaSLAM
目录 一、安装Anaconda 二、相关依赖库安装 1、boost安装 2、Eigen 3安装 3、opencv安装 4、Pangolin安装 三、配置Mask_RCNN环境 四、DynaSLAM编译 五、DynaSLAM运行 一、安装Anaconda 打开以下链接: Index of / 下载和自己系统匹配的安装包。这里下…...
Apache Shiro反序列化漏洞深度剖析:从原理到利用
引言 在Web安全的世界里,反序列化漏洞一直是最危险的漏洞类型之一。今天,我们将深入探讨Apache Shiro框架中的两个著名反序列化漏洞.通过通俗易懂的解释和详细的实例,帮助你理解这类漏洞的本质和危害。 Shiro框架与"记住我"功能简…...
Android UI 组件系列(二):Button 进阶用法
引言 在上一篇博客中,我们介绍了 Button 的基本用法和常见属性,掌握了 Button 的基础知识。然而,在实际开发中,Button 远不止于简单的点击功能,它还可以支持不同的变体、丰富的自定义样式,以及更灵活的状态…...
CentOS-7安装Docker(更新时间:2025-03-12)
CentOS-7安装Docker 该文章记录在CentOS 7上安装Docker的过程和步骤,以及在安装过程中遇到的困难和解决方案。 目录 CentOS-7安装Docker一、环境准备二、安装Docker1.验证服务器是否接入互联网2. 检查CentOS内核版本3.使用root权限登录CentOS。确保yum包更新到最新…...
网络空间安全(31)安全巡检
一、定义与目的 定义: 安全巡检是指由专业人员或特定部门负责,对各类设施、设备、环境等进行全面或重点检查,及时发现潜在的安全隐患或问题。 目的: 预防事故发生:通过定期的安全巡检,及时发现并解决潜在的…...
Kubernetes学习笔记-移除Nacos迁移至K8s
项目服务的配置管理和服务注册发现由原先的Nacos全面迁移到Kubernetes上。 一、移除Nacos 移除Nacos组件依赖。 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <…...
Docker 构建 nginx-redis-alpine 项目详解
Docker 构建 nginx-redis-alpine 项目详解 一、课程概述 嘿,朋友们!今天咱们要深入探索一个超级实用的项目 ——nginx-redis-alpine!这个项目可不简单,它包含了好多重要的知识点,像文件目录结构、核心文件的作用及配…...
【教学类-43-26】20240312 数独4宫格的所有可能(图片版 576套样式,空1格-空8格,每套65534张*576小图=3千万张小图)
背景需求: 之前做了三宫格所有可能图片 510小图*12套6120图,所以3分钟就生成了 【教学类-43-25】20240311 数独3宫格的所有可能(图片版 12套样式,空1格-空8格,每套510张,共6120小图)-CSDN博客…...
ChromeOS 134 版本更新
ChromeOS 134 版本更新 一、ChromeOS 134 更新内容 1. ChromeOS 自助终端(Kiosk)模式支持隔离 Web 应用(Isolated Web Apps) 从 ChromeOS 134 开始,自助终端(Kiosk)模式支持 隔离 Web 应用&a…...
Redis面试篇
目录 Redis面试篇 1.什么是Redis?作用是什么? 2.什么是缓存穿透、缓存击穿、缓存雪崩 2.1缓存穿透 2.2缓存击穿 2.3缓存雪崩 3.redis如何持久化 1. RDB(快照存储) 2. AOF(追加日志) 4.Redis 的过…...
C#中通过Response.Headers设置自定义参数
一、基础设置方法 1. 直接添加自定义头 // ASP.NET Core方案 Response.Headers.Append("X-API-Version", "2.3.1"); Response.Headers.Append("Custom-Auth-Token", Guid.NewGuid().ToString());• 底层原理:通过IHeaderDictionary…...
C++标准模板库学习--函数模板返回值参数类型
template<typename T1, typename T2> 2 T1 max (T1 a, T2 b) 3 { 4 return b < a ? a : b; 5 } 6 ... 7 auto m ::max(4, 7.2); // OK, 不过返回类型与第一个参数类型一样 如何解决模板的返回类型 法一,使用decltype进行类型推断,在编译时…...
BUG修复 | 一次钉钉工作台应用远程调试实战(开发者工具)
#1 ℹ️背景故事 最近用户反馈,钉钉工作台的应用无法正常使用,卡在自动登录页面。 天,这是运行10年的老程序😱,我当时真是吓得不轻。这老古董完全不记得怎么改了😂。 #2 🐞开启远程调试 钉钉…...
[目标检测] 训练之前要做什么
背景:训练一个Yolo8模型,在训练之前,数据集的处理是影响效果的关键因素。 Step1 定义规则 什么是人/车,比如人的话可能是站着的人,如果是骑电动车/自行车就不算是人。 Step2 收集数据集 1. 自己标注。如果是自己标…...
一窥DeepSeek开源EPLB项目:揭开技术背后的面纱
摘要 在DeepSeek开源DualPipe项目的同一天,EPLB项目也正式对外公开。EPLB(Enhanced Pipeline Balancing)并非一蹴而就的奇迹,而是经过长时间的研发与优化。该项目旨在通过改进管道平衡机制,提升系统的稳定性和效率。本…...
达梦数据库中插入导出图片的方法与应用
达梦数据库中插入导出图片的方法与应用 在数据库的实际应用场景中,图片存储是一项常见且重要的需求。以电商平台为例,商品展示图片是吸引消费者的关键元素;而在社交软件里,用户头像更是个人形象的直观体现。针对达梦数据库&#…...
问deepseek: OpenFOAM并行分区后,是如何实现ldumatrix矩阵向量乘法计算逻辑的?
在OpenFOAM中,lduMatrix 是用于存储稀疏矩阵的类,支持并行计算。并行分区后,lduMatrix 的矩阵向量乘法通过以下步骤实现: 1. 矩阵分区 分区:将矩阵和向量分配到多个处理器上,每个处理器负责一部分。接口&…...
linux(ubuntu)中Conda、CUDA安装Xinference报错ERROR: Failed to build (llama-cpp-python)
文章目录 一、常规办法二、继续三、继续四、缺少 libgomp库(最终解决)在 Conda 环境中安装 libgomp 如果符合标题情况 执行的: pip install "xinference[all]"大概率是最终解决的情况。 一、常规办法 llama-cpp-python 依赖 CMak…...
蓝耘携手通义万象 2.1 图生视频:开启创意无限的共享新时代
在科技飞速发展的今天,各种新奇的技术不断涌现,改变着我们的生活和工作方式。蓝耘和通义万象 2.1 图生视频就是其中两项非常厉害的技术。蓝耘就像是一个超级大管家,能把各种资源管理得井井有条;而通义万象 2.1 图生视频则像是一个…...
04 1个路由器配置一个子网的dhcp服务
前言 这是最近一个朋友的 ensp 相关的问题, 这里来大致了解一下 ensp, 计算机网络拓扑 相关基础知识 这里一系列文章, 主要是参照了这位博主的 ensp 专栏 这里 我只是做了一个记录, 自己实际操作了一遍, 增强了一些 自己的理解 当然 这里仅仅是一个 简单的示例, 实际场景…...
Android studio运行报错处理
没装HAXM报错: Intel HAXM 7.6.5 下载 下载链接: https://www.filehorse.com/download-intel-haxm/54766/download/#google_vignette 运行时弹窗提示:Device manager The emulator process for AVD Pixel_3a_API_34_extension_level_7_x86_6…...
【CXX】6.7 SharedPtr<T> — std::shared_ptr<T>
std::shared_ptr 的 Rust 绑定称为 SharedPtr。 限制: SharedPtr 不支持 T 为不透明的 Rust 类型。对于在语言边界上传递不透明 Rust 类型的所有权,应改用 Box(C 中的 rust::Box)。 示例 // src/main.rsuse std::ops::Deref; …...
NocoBase 本周更新汇总:双因素身份认证(2FA)
原文链接:https://www.nocobase.com/cn/blog/weekly-updates-202503013 汇总一周产品更新日志,最新发布可以前往我们的博客查看。 本周我们发布了 NocoBase 1.6.0 版本,带来集群模式部署、安全策略优化和迁移管理等多项新特性。 NocoBase …...
【Go学习】04-1-Gin框架-路由请求响应参数
【Go学习】04-1-Gin框架 初识框架go流行的web框架GinirisBeegofiber Gin介绍Gin快速入门 路由RESTful API规范请求方法URI静态url路径参数模糊匹配 处理函数分组路由 请求参数GET请求参数普通参数数组参数map参数 POST请求参数表单参数JSON参数 路径参数文件参数 响应字符串方式…...
DataX的python3使用
datax这东西本身是python2写的,这导致python3,就各种语法报错,问题是,现在的工程都是python3搞的,这就很难受.... 网上找到一篇帖子,可以解决这个问题: 原帖:python3执行datax报错…...
部署项目至服务器:响应时间太长,无法访问此页面?
在我们部署项目到服务器上的时候,一顿操作猛如虎,打开页面..... 这里记录一下这种情况是怎么回事。一般就是服务器上的安全组没有放行端口。 因为我是用宝塔进行项目部署的。所以遇到这种情况,要去操作两边(宝塔and服务器所属平台…...
Map<String,Object>中Fastjson提取entrys对应的值
今天在处理接口数据时,需要解析出对方传入的json数据,并需要取出其中一个字段的值来判断,记录下我的步骤,提供参考: 1.json数据准备 {"hrOrgUnit": "00000000-0000-0000-0000-000000000000CCE7AED4&q…...
【毕业论文格式】word分页符后的标题段前间距消失
文章目录 【问题描述】 分页符之后的段落开头,明明设置了标题有段前段后间距,但是没有显示间距: 【解决办法】 选中标题,选择边框 3. 选择段前间距,1~31磅的一个数 结果...
Android,Java,Kotlin 确保线程顺序执行的多种实现方式
在多线程编程中,有时需要确保一个线程必须等待另一个线程执行完毕后再执行。本文将介绍几种常见的方法来实现这一需求,并提供详细的代码示例。 1. 使用 Thread.join() Thread.join() 是最简单直接的方法,它会让当前线程等待目标线程执行完毕…...