T-SQL 变量赋值、全局变量、流程控制+T-SQL WHILE循环、表创建与数据修改+T-SQL 视图(View)
核心考点局部变量与全局变量区别、SET与SELECT赋值差异、流程控制IF-ELSE、CASE WHEN、游标循环遍历数据、常用全局变量用法适配表结构Students(StudentId, Name, Age, ClassId)、ScoreList(StudentId, Score, DB)--定义局部变量同时定义两个变量类型为int declare age int,stuId int; --方式1SET赋值单变量赋值常用 set age 10; print age; --输出10 --方式2SELECT赋值可同时为多个变量赋值 select ageAge,stuIdStudentId from Students where StudentId 1001; print age; --输出查询到的学生年龄 print stuId;--输出查询到的学生ID1.2 SET与SELECT赋值差异核心考点--场景1查询结果为多条数据时 --SELECT赋值返回多条结果时取最后一条数据赋值给变量 select stuIdStudentId from Students where ClassId 2; print stuId; --输出ClassId2的最后一个学生ID --SET赋值子查询返回多条结果时直接报错SET不支持多结果赋值 --set stuId (select StudentId from Students where ClassId 3); --执行报错 --print stuId; --场景2查询结果不存在时 set stuId100; --先给变量赋值100 --SET赋值查询无结果变量被赋值为NULL set stuId (select StudentId from Students where ClassId 100); --无匹配数据 print stuId; --输出NULL --SELECT赋值查询无结果变量保留原有值不改变 select stuIdStudentId from Students where ClassId 100; --无匹配数据 print stuId; --输出100保留之前赋值的1001.3 SET与SELECT赋值核心区别必背赋值数量SET 一次只能给一个变量赋值SELECT 可同时给多个变量赋值。多结果处理SET 子查询返回多条结果时报错SELECT 返回多条结果时取最后一条赋值。无结果处理SET 无结果时变量赋值为 NULLSELECT 无结果时变量保留原有值。二、全局变量开头全局变量由SQL Server系统定义以开头用于获取系统状态、操作结果等信息用户只能读取不能修改。--1. ERROR返回上一条语句的错误码0表示无错误非0表示有错误 --delete from Students where StudentId 1000; --假设该ID不存在执行无错误 print error; --输出0无错误 --2. IDENTITY返回上一条插入语句生成的自增标识列值主键自增时常用 insert into Students values(1,29,1,1,1,2020-10-1); print identity; --输出新插入数据的StudentId自增列值 --3. ROWCOUNT返回上一条语句受影响的行数 select * from Students; print rowcount; --输出查询到的学生总条数如10条 --4. MAX_CONNECTIONS返回当前数据库允许的最大连接数 print Max_connections; --输出系统配置的最大连接数如32767 --5. SERVICENAME返回当前SQL Server服务的实例名 print 当前服务器实例 servicename; --输出当前服务器实例名称如MSSQLSERVER --6. FETCH_STATUS游标专用返回游标读取数据的状态0成功-1失败-2行不存在 --后续游标部分详细使用三、流程控制语句流程控制用于控制SQL语句的执行顺序核心包括 IF-ELSE 条件判断、CASE WHEN 条件分支适配不同业务场景的逻辑处理。3.1 IF-ELSE 条件判断用于单条件或多条件分支判断满足条件执行对应语句块支持嵌套适用于简单逻辑判断。--示例查询2班C#平均分根据平均分输出评价 declare c# int; --定义变量存储平均分 --计算2班C#平均分赋值给变量 select c# AVG(Score) from ScoreList inner join Students on ScoreList.StudentIdStudents.StudentId where ClassId 2; select c# as 平均值; --显示平均分 --IF-ELSE条件判断 if c# is Null --判断平均分是否为NULL无成绩 begin print 该班无成绩; --执行语句块1 end else if(c#80) --判断平均分是否大于80 print 该班成绩良好; --执行语句块2 else --其他情况 begin print 该班成绩稍差; --执行语句块3 end3.2 CASE WHEN 条件分支行级判断用于查询语句中对每一行数据进行条件判断返回对应结果适用于批量数据的分支处理区别于IF-ELSE的批处理判断。--示例根据成绩ScoreDB平均分为每个学生评级 select Students.StudentId, --学生ID Name, --学生姓名 --CASE WHEN 条件分支每行数据单独判断 case when(ScoreDB)/290 then A --平均分≥90评级A when(ScoreDB)/2 between 80 and 90 then B --80≤平均分90评级B when(ScoreDB)/2 between 70 and 80 then C --70≤平均分80评级C when(ScoreDB)/2 between 60 and 70 then D --60≤平均分70评级D else 不及格 --其他情况评级不及格相当于default end as 评级 --给分支结果起别名 from ScoreList inner join Students on ScoreList.StudentIdStudents.StudentId;四、游标Cursor循环遍历数据游标用于逐行读取查询结果集适用于需要对每行数据单独处理的场景如逐行打印、逐行判断核心分为6个步骤定义→打开→初始化→循环→关闭→释放。4.1 游标完整示例逐行打印成绩大于50的学生信息--定义变量接收游标读取的数据 declare a int; --成绩 declare b nvarchar(10);--姓名 declare c int; --学号 --1. 定义游标指定游标名称和关联的查询结果集 declare Curesor_my cursor for select Score , Name ,Students.StudentId from Students inner join ScoreList on ScoreList.StudentIdStudents.StudentId; --2. 打开游标启动游标准备读取数据 open Curesor_my; --3. 初始化游标指向结果集第一行将数据赋值给变量 fetch next From Curesor_my into a,b,c; --4. 循环遍历根据FETCH_STATUS判断是否读取成功0成功 while FETCH_STATUS 0 begin --逐行判断成绩大于50打印学生信息 if(a50) print 学号: convert(varchar(10),c) 姓名:b 成绩convert(varchar(10),a); --5. 拉取下一行数据为下一次循环做准备必须写否则死循环 fetch next From Curesor_my into a,b,c; end --6. 关闭游标释放游标占用的资源 close Curesor_my; --7. 释放游标彻底销毁游标释放所有相关资源 deallocate Curesor_my;4.2 游标核心说明必背FETCH_STATUS游标专用全局变量0表示读取成功-1表示读取失败/无更多行-2表示读取的行不存在。循环关键循环体内必须写fetch next否则会出现死循环一直读取第一行数据。适用场景需要逐行处理数据如逐行判断、逐行修改普通批量查询优先使用CASE WHEN或聚合函数。五、核心考点汇总必背变量区分开头为局部变量用户自定义开头为全局变量系统定义仅可读取。赋值差异SET单变量赋值、不支持多结果、无结果赋值NULLSELECT多变量赋值、多结果取最后一条、无结果保留原值。流程控制IF-ELSE用于批处理级条件判断CASE WHEN用于行级条件分支查询中使用。常用全局变量ERROR错误码、IDENTITY自增列值、ROWCOUNT受影响行数、FETCH_STATUS游标状态。游标六步骤定义→打开→初始化→循环含fetch next→关闭→释放避免死循环。六、易错踩坑点使用SET赋值时子查询返回多条结果导致语法报错应改用SELECT赋值。游标循环中忘记写fetch next导致死循环一直重复处理第一行数据。混淆IF-ELSE和CASE WHEN的使用场景在查询语句中用IF-ELSE做行级判断应改用CASE WHEN。局部变量未赋值直接使用导致查询结果异常局部变量默认值为NULL。游标使用后未关闭和释放导致资源占用影响数据库性能。七、语法速记模板--1. 局部变量定义与赋值模板 declare 变量1 类型, 变量2 类型; set 变量1 值; --单变量赋值 select 变量1字段1,变量2字段2 from 表 where 条件; --多变量赋值 --2. IF-ELSE模板 if 条件1 begin 语句块1 end else if 条件2 语句块2 else begin 语句块3 end --3. CASE WHEN模板查询中使用 select 字段1, case when 条件1 then 结果1 when 条件2 then 结果2 else 结果3 end as 别名 from 表; --4. 游标使用模板 declare 变量1 类型, 变量2 类型; declare 游标名称 cursor for select 字段1,字段2 from 表 where 条件; open 游标名称; fetch next from 游标名称 into 变量1,变量2; while FETCH_STATUS0 begin 数据处理逻辑 fetch next from 游标名称 into 变量1,变量2; end close 游标名称; deallocate 游标名称;T-SQL WHILE循环、表创建与数据修改核心考点WHILE循环语法、自增列identity使用、默认值约束、批量插入数据、循环修改数据避免死循环、TOP 1查询用法适配表结构S2(id, name)、ScoreList(StudentId, Score)一、创建表并批量插入数据WHILE循环应用通过WHILE循环批量插入数据结合自增列、默认值约束实现快速生成测试数据适用于批量造数场景。1.1 创建表S2含自增列、非空约束、默认值--创建表S2包含自增主键和默认值约束 create table S2 ( id int not null primary key identity(1,1), --自增主键identity(起始值,步长)此处从1开始每次加1 name nvarchar(10) not null default( ) --非空约束默认值为空格 )关键说明identity(1,1)自增列属性第一个参数是起始值第二个参数是步长插入数据时无需手动赋值系统自动生成唯一值。default( )默认值约束插入数据时若未指定name字段值自动赋值为空格。primary key主键约束保证id字段值唯一且非空。1.2 WHILE循环批量插入数据生成10条测试数据--定义局部变量用于控制循环次数 declare count int set count 0 --初始化变量为0 --WHILE循环条件为count 10循环执行10次 while (count 10) begin set count count 1 --循环体变量自增1避免死循环 --插入数据name字段值为“亚马尔循环次数号” insert into S2(name) values(亚马尔convert(nvarchar(10),count)号) end --查询表中数据验证插入结果 select * from S2关键说明WHILE循环语法while(循环条件) begin 循环体 end循环条件为真时持续执行循环体。循环控制必须在循环体内修改循环变量如count count 1否则会出现死循环。数据拼接亚马尔convert(nvarchar(10),count)号将整数count转为字符串与固定文本拼接。二、WHILE循环批量修改数据将低于70分的成绩改为70通过WHILE循环结合TOP 1查询逐行修改成绩表中低于70分的记录直到所有成绩都不低于70分为止。--定义局部变量接收学生ID和成绩 declare stuid int,score int --WHILE循环条件为11恒成立通过循环体内的break跳出循环 while(11) begin --TOP 1只查询第一条成绩小于70的记录赋值给变量 select top 1 stuid StudentId,score Score from ScoreList where Score 70 --判断是否还有成绩小于70的记录核心控制循环退出 if((select count(*) from ScoreList where Score 70)0) --更新操作将当前查询到的学生成绩改为70 update ScoreList set Score 70 where StudentId stuid else break --无符合条件的记录跳出循环避免死循环 end --查询成绩表验证修改结果 select * from ScoreList关键说明while(11)恒成立条件循环会一直执行必须通过break语句手动跳出否则会出现死循环。TOP 1每次只查询一条符合条件的记录避免一次性修改所有记录实现逐行修改也可直接用UPDATE批量修改此处为循环演示。循环退出条件通过count(*)判断是否还有成绩小于70的记录无则执行break跳出循环。优化建议批量修改可直接使用update ScoreList set Score70 where Score70无需循环效率更高循环仅适用于需要逐行处理的场景。三、核心考点汇总必背自增列identity(起始值,步长)插入数据时无需赋值系统自动生成常用于主键。WHILE循环语法while(条件) begin 循环体 end必须包含循环变量修改或break语句避免死循环。循环退出方式① 修改循环变量让循环条件不成立② 使用break语句强制跳出。TOP 1用法限制查询结果为第一条适用于逐行处理数据的场景。数据拼接不同类型数据拼接时需用convert函数转换类型如整数转字符串。四、易错踩坑点WHILE循环中未修改循环变量如未写count count 1或未写break语句导致死循环。自增列插入数据时手动赋值id字段导致语法报错自增列无需手动赋值。数据拼接时未转换数据类型如整数直接与字符串拼接导致报错。批量修改数据时使用循环逐行修改效率低下优先使用UPDATE批量修改。循环条件判断错误如将0写成0导致循环提前退出或无法退出。五、语法速记模板--1. 自增表创建模板 create table 表名 ( 自增字段 int not null primary key identity(起始值,步长), 其他字段 类型 约束 default(默认值) ) --2. WHILE循环批量插入模板 declare 循环变量 类型 set 循环变量 初始值 while(循环条件) begin set 循环变量 循环变量 步长 insert into 表名(字段) values(值convert(类型, 循环变量)) end --3. WHILE循环批量修改模板逐行修改 declare 变量1 类型,变量2 类型 while(11) begin select top 1 变量1字段1,变量2字段2 from 表名 where 条件 if((select count(*) from 表名 where 条件)0) update 表名 set 字段新值 where 字段1变量1 else break end --4. 批量修改优化模板替代循环效率更高 update 表名 set 字段新值 where 条件T-SQL 视图View核心考点视图的概念与特点、视图的创建与删除、视图的使用场景、视图与普通表的区别、创建视图的语法规范适配表结构Students(StudentId, StudentName, Gender, Birthday)、ScoreList(StudentId, CSharp, SqlserverDB)一、视图的核心概念必背视图是 SQL 中一种重要的数据库对象本质是存储在服务器端的查询语句查询块并非真实存在的物理表而是一张虚拟表其数据和结构都基于对一张或多张物理表的查询结果。1.1 视图的核心特点虚拟性视图本身不存储实际数据数据来源于底层的物理表基表查询视图时系统会执行视图对应的查询语句从基表中获取数据。简化查询将复杂的多表连接、筛选、排序等操作封装到视图中后续使用时只需查询视图无需重复编写复杂 SQL。数据安全可通过视图暴露基表的部分字段和数据隐藏敏感信息如学生的身份证号、联系方式提升数据安全性。使用便捷视图的查询语法与普通物理表完全一致支持筛选、排序、分页等所有普通表的查询操作。1.2 视图的基本使用示例-- 1. 直接查询视图语法与查询普通表完全一致 select * from View_1; -- 2. 对视图进行条件筛选与普通表筛选语法一致 select * from View_1 where Gender男;关键说明使用视图时无需关注其底层的查询逻辑如多表连接只需将其当作普通表操作即可简化了开发和查询流程。二、视图的创建与删除核心语法创建视图前需先判断视图是否存在若存在则删除避免重复创建报错创建视图的核心是定义视图对应的查询语句。2.1 视图创建与删除的完整示例-- 第一步判断视图是否存在存在则删除规范写法避免重复创建报错 -- sysobjects系统表存储数据库中所有对象表、视图、存储过程等的信息 -- name View_2判断是否存在名为View_2的视图 if exists (select * from sysobjects where name View_2) drop view View_2; -- 删除视图 go -- 批处理结束分隔 SQL 语句块避免语法冲突 -- 第二步创建视图 -- 语法create view 视图名 as 对应的查询语句 create view View_2 as -- 视图对应的查询语句多表连接排序限制条数 SELECT top 100 -- 限制视图只显示前100条数据 dbo.Students.StudentName, -- 学生姓名 dbo.Students.Gender, -- 学生性别 dbo.Students.Birthday, -- 学生生日 dbo.ScoreList.CSharp, -- C#成绩 dbo.ScoreList.SqlserverDB -- SQL Server成绩 FROM dbo.ScoreList INNER JOIN dbo.Students ON dbo.ScoreList.StudentId dbo.Students.StudentId -- 多表连接 order by CSharp; -- 按C#成绩排序 go -- 批处理结束 -- 第三步使用视图查询视图数据 select * from View_2;2.2 关键语法说明必背判断视图是否存在if exists (select * from sysobjects where name 视图名)sysobjects 是系统内置表用于查询数据库对象信息。删除视图drop view 视图名删除后视图对应的查询逻辑也会被清除不影响底层基表数据。创建视图语法create view 视图名 as 查询语句查询语句可以是单表查询、多表连接查询、带筛选/排序/聚合的复杂查询。go 关键字用于分隔 SQL 批处理语句确保“删除视图”和“创建视图”作为独立的批处理执行避免语法报错。top 100限制视图返回的记录条数可根据需求调整也可省略返回所有符合条件的数据。三、视图与普通物理表的区别核心考点对比项视图View普通物理表数据存储不存储实际数据数据来源于基表查询时动态获取存储实际数据占用数据库存储空间本质存储的查询语句查询块虚拟表物理存在的数据库对象真实表创建语法create view 视图名 as 查询语句create table 表名 (字段 类型 约束)使用场景简化复杂查询、隐藏敏感数据、统一数据查询口径存储原始数据是所有操作的基础修改影响修改视图定义重写查询语句不影响基表数据修改表结构或数据直接影响所有依赖该表的视图四、核心考点汇总必背视图概念虚拟表存储查询语句数据来源于基表查询语法与普通表一致。创建视图规范先判断是否存在存在则删除再创建创建语句为create view 视图名 as 查询语句。go 关键字作用分隔批处理语句避免“删除创建”视图时出现语法冲突。视图特点不存储数据、简化查询、提升数据安全、基于基表动态生成数据。视图与表的区别核心区别是是否存储实际数据视图是虚拟的表是物理的。五、易错踩坑点创建视图前未判断是否存在导致重复创建报错需先执行drop view。视图对应的查询语句存在语法错误如多表连接条件缺失导致视图创建失败。混淆视图和表的本质试图向视图中插入、修改数据部分视图支持修改但会同步修改基表数据需谨慎。创建视图时查询语句中使用了不支持的语法如变量、临时表导致创建失败视图查询语句需为普通查询语句。删除视图时误删了普通表需区分drop view和drop table。六.语法速记模板-- 1. 视图删除与创建模板规范写法 if exists (select * from sysobjects where name 视图名) drop view 视图名; go create view 视图名 as -- 视图对应的查询语句单表/多表查询、筛选、排序等 select 字段1,字段2 from 表1 inner join 表2 on 表1.关联字段表2.关联字段 where 筛选条件 order by 排序字段; go -- 2. 视图使用模板与普通表一致 select * from 视图名; -- 全量查询 select * from 视图名 where 筛选条件; -- 条件查询 select 字段1,字段2 from 视图名 order by 排序字段; -- 自定义字段排序

相关新闻

Unity转UE5实战指南:从思维转换到核心功能迁移

Unity转UE5实战指南:从思维转换到核心功能迁移

1. 项目概述:从Unity到UE5的抉择与阵痛 最近在独立开发者圈子里,一个话题的热度居高不下:Unity引擎的收费政策调整,让不少中小团队和个人开发者感到“背刺”,进而开始严肃考虑转向虚幻引擎5(UE5&#xff09…

2026/7/26 8:49:02阅读更多 →
ChArUco标定板

ChArUco标定板

🔧 ChArUco标定板一、核心参数规格参数项定制内容说明标定板总尺寸113mm 115mm(可自定义,与棋盘匹配)成品外框尺寸,尺寸按需定义棋盘格数量132列 140 行(可自定义)对应你提供的图案规格,行列数…

2026/7/26 8:49:02阅读更多 →
C++学生管理系统实战:面向对象设计、文件存储与工程化实现

C++学生管理系统实战:面向对象设计、文件存储与工程化实现

1. 项目概述与核心价值最近在整理一些给新人练手的C项目,发现“学生管理系统”这个题目虽然经典,但很多朋友做出来的东西要么功能残缺,要么代码结构混乱,完全体现不出C面向对象的优势。今天,我就以一个从业十多年的老码…

2026/7/26 8:49:02阅读更多 →
寒潮来袭!门窗de老毛病又犯了……

寒潮来袭!门窗de老毛病又犯了……

寒潮来袭!门窗de老毛病又犯了……全国性的降温来袭,北方开启暴雪的极端天气,湿寒气候导致疫情继续持续,强降雪使降雪厚度达10cm以上,大家在室内的时间会更多些,这时也是考验室内舒适度和外窗结构保温的最佳…

2026/7/26 9:53:11阅读更多 →
余弦相似度计算文本相似度的原理是什么?它对向量长度敏感吗?

余弦相似度计算文本相似度的原理是什么?它对向量长度敏感吗?

余弦相似度计算文本相似度 一、原理 余弦相似度通过衡量两个向量在多维空间中的夹角余弦值来判断相似度,核心思想是"方向一致即相似",忽略向量长度。 公式 cos(A, B) (A B) / (||A|| ||B||) Σ(a_i b_i) / ( √Σa_i √Σb_i )A B&#…

2026/7/26 9:53:11阅读更多 →
二维码技术深度解析:从原理到Python/Java实战应用

二维码技术深度解析:从原理到Python/Java实战应用

防你不知道他脑后的二维码是可以扫的:二维码技术深度解析与实战应用 在日常开发中,二维码已经成为连接线上线下、实现快速信息传递的重要工具。但你是否遇到过扫描某些二维码时无法识别的情况?或者想要在自己的项目中集成二维码生成与识别功能…

2026/7/26 9:53:11阅读更多 →
AI工作流引擎:自然语言驱动的自动化实践

AI工作流引擎:自然语言驱动的自动化实践

1. 项目背景与核心价值最近两年AI领域最显著的变化,就是自然语言交互正在从"炫技功能"变成真正的生产力工具。作为长期关注效率工具的技术从业者,我观察到DeepSeek这类AI平台正在经历从"问答机器人"到"工作流引擎"的质变。…

2026/7/26 9:53:11阅读更多 →
Docker监控实战:夜莺监控与Categraf配置指南

Docker监控实战:夜莺监控与Categraf配置指南

1. 项目概述 最近在帮客户部署一套基于Docker容器的监控系统,选择了夜莺监控(Nightingale,简称n9e)作为监控平台,搭配Categraf作为数据采集器。这套组合在实际生产环境中表现相当稳定,今天就把完整的配置过…

2026/7/26 9:53:11阅读更多 →
AI Agent 面试题 589:如何设计RAG系统的查询理解和改写模块?

AI Agent 面试题 589:如何设计RAG系统的查询理解和改写模块?

🔥 AI Agent 面试题 589:如何设计RAG系统的查询理解和改写模块?摘要:本文深入解析了「如何设计RAG系统的查询理解和改写模块?」这一 AI Agent 领域的核心面试题。文章从 检索增强生成原理 的基本概念出发,系…

2026/7/26 9:51:11阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →