当前位置: 首页 > news >正文

C# --- LINQ

C# --- LINQ

  • 什么是LINQ
  • Fluent Syntax 和 SQL-Like Query
  • LINQ Operations

什么是LINQ

  • LINQ的全称为Language Integrated Query, 为各种查询(包括对象查询,数据库查询,XML查询) 提供了统一模型.
  • LINQ源于SQL,但比SQL更加强大,更加灵活.
  • LINQ可以用类似于SQL的形式对C# Collection中的对象进行查询
  • LINQ可以在代码中对数据库进行查询,编程语言和数据库之间配合上的鸿沟,也就是不用再手动拼接SQL字符串去查询数据库.
  • 可读性强:LINQ增加了代码的可读性,因此其他开发人员可以很轻松地理解和维护

Fluent Syntax 和 SQL-Like Query

  • LINQ 在C#中分为两种主要语法形式

方法语法(Method Syntax / Fluent Syntax)

  • 使用 扩展方法(如 Where(), Select())链式调用,直接操作集合或数据源。
  • 特点:
    基于 Lambda 表达式,灵活且功能全面。
    支持所有 LINQ 操作(某些操作仅能通过方法语法实现,如 Distinct())。
    可读性取决于链式调用的复杂度。
var results = students.Where(s => s.Age > 18).OrderBy(s => s.Name).Select(s => new { s.Name, s.Score });

2. 查询表达式语法(Query Syntax / SQL-like Syntax)

  • 使用类似 SQL 的声明式语法,以 from、where、select 等关键字编写。
  • 特点:
    语法更接近自然语言,适合复杂查询(如多表连接、分组)。
    编译时会转换为方法语法(本质是语法糖)。
    部分操作无法直接表达(需结合方法语法,如 Distinct())。
var results = from s in studentswhere s.Age > 18orderby s.Nameselect new { s.Name, s.Score };

混合使用示例

// 结合查询表达式和方法语法
var query = (from s in studentswhere s.Age > 18select s).Distinct().ToList();

总结

  • 方法语法:灵活、全面,适合大多数场景。
  • 查询表达式:提升复杂查询的可读性,尤其适合多表操作。
  • 本质一致:两种语法最终殊途同归,按需选择即可!

LINQ Operations

Where(过滤)

var students = new List<Student> { /* 学生对象列表 */ };
// 找到年龄大于 20 的学生
var result = students.Where(s => s.Age > 20);

Select(投影)

// 提取所有学生的姓名
var names = students.Select(s => s.Name);

OrderBy / OrderByDescending(排序)

// 按年龄升序排序
var ordered = students.OrderBy(s => s.Age);
// 按成绩降序排序
var orderedByScore = students.OrderByDescending(s => s.Score);

GroupBy(分组)

// 按班级分组
var groups = students.GroupBy(s => s.Class);// 遍历分组
foreach (var group in groups) {Console.WriteLine($"Class {group.Key}:");foreach (var student in group) {Console.WriteLine(student.Name);}
}

First / FirstOrDefault(获取首个元素)

// 获取第一个年龄大于 20 的学生(可能抛异常)
var first = students.First(s => s.Age > 20);
// 安全获取(无匹配返回 null)
var firstOrDefault = students.FirstOrDefault(s => s.Age > 100);

Single / SingleOrDefault(唯一元素)

// 确保唯一匹配(否则抛异常)
var single = students.Single(s => s.Id == 123);
// 安全获取唯一元素
var singleOrDefault = students.SingleOrDefault(s => s.Id == 456);

Any / All(存在性检查)

// 是否有学生年龄 > 20
bool hasAdult = students.Any(s => s.Age > 20);
// 是否所有学生成绩 >= 60
bool allPassed = students.All(s => s.Score >= 60);

Count / Sum / Average(聚合)

// 统计年龄 > 20 的学生数量
int count = students.Count(s => s.Age > 20);
// 计算所有学生的平均分
double avgScore = students.Average(s => s.Score);
// 总成绩
double totalScore = students.Sum(s => s.Score);

Take / Skip(分页)

// 取前 5 条数据
var page1 = students.Take(5);
// 跳过前 5 条,取接下来的 5 条(分页)
var page2 = students.Skip(5).Take(5);

Join(连接)

var courses = new List<Course> { /* 课程列表 */ };
// 学生与课程通过 CourseId 连接
var joined = students.Join(courses,s => s.CourseId,c => c.Id,(s, c) => new { s.Name, CourseName = c.Name }
);

Distinct(去重)

// 去重后的所有班级名称
var distinctClasses = students.Select(s => s.Class).Distinct();

SelectMany(扁平化嵌套集合)

var classes = new List<Class> { /* 班级列表(含学生集合) */ };
// 所有班级的所有学生
var allStudents = classes.SelectMany(c => c.Students);

Union / Intersect / Except(集合操作)

var list1 = new List<int> { 1, 2, 3 };
var list2 = new List<int> { 3, 4, 5 };var union = list1.Union(list2);          // {1,2,3,4,5}
var intersect = list1.Intersect(list2);  // {3}
var except = list1.Except(list2);        // {1,2}

OfType / Cast(类型筛选)

var mixedList = new ArrayList { 1, "apple", 2, "banana" };
// 提取所有字符串
var strings = mixedList.OfType<string>();

Aggregate(自定义聚合)

//对集合元素执行累积操作
int[] numbers = { 1, 2, 3, 4 };
// 计算乘积:1*2*3*4
int product = numbers.Aggregate((acc, num) => acc * num);
// 指定初始值(例如累加字符串)
string concatenated = numbers.Aggregate("", (acc, num) => acc + num.ToString());

Max / Min(极值)

var maxAge = students.Max(s => s.Age);
var minScore = students.Min(s => s.Score);

Last / LastOrDefault(获取最后一个元素)

// 最后一个年龄大于 20 的学生
var last = students.Last(s => s.Age > 20);
var lastOrDefault = students.LastOrDefault(s => s.Age > 100);

Reverse(反转顺序)

var reversed = numbers.Reverse(); // {4,3,2,1}

Concat(连接两个集合)

var list1 = new List<int> { 1, 2 };
var list2 = new List<int> { 3, 4 };
var combined = list1.Concat(list2); // {1,2,3,4}

SequenceEqual(判断集合相等性)

var listA = new List<int> { 1, 2 };
var listB = new List<int> { 1, 2 };
bool isEqual = listA.SequenceEqual(listB); // true

DefaultIfEmpty(空集合默认值)

var emptyList = new List<int>();
// 若集合为空,返回包含默认值的单元素集合
var result = emptyList.DefaultIfEmpty(0); // {0}

Zip(合并两个集合)

var names = new[] { "Alice", "Bob" };
var ages = new[] { 25, 30 };
// 合并为元组:("Alice",25), ("Bob",30)
var zipped = names.Zip(ages, (name, age) => (name, age));

ToDictionary / ToLookup(转换为字典或分组字典)

// 将学生列表转为以Id为键的字典
var dict = students.ToDictionary(s => s.Id);
// 创建分组查找结构(类似 GroupBy,但立即执行)
var lookup = students.ToLookup(s => s.Class);

TakeWhile / SkipWhile(条件分页)

int[] nums = { 1, 2, 3, 4, 5, 1 };
// 取元素直到遇到 >=3 的值
var takeWhile = nums.TakeWhile(n => n < 3); // {1,2}
// 跳过元素直到遇到 >=3 的值
var skipWhile = nums.SkipWhile(n => n < 3); // {3,4,5,1}

ElementAt / ElementAtOrDefault(按索引访问)

var thirdStudent = students.ElementAt(2); // 索引从0开始
var safeElement = students.ElementAtOrDefault(100); // 越界返回 null

Range / Repeat(生成序列)

// 生成数字序列 10-14
var range = Enumerable.Range(10, 5); // {10,11,12,13,14}
// 生成重复值
var repeats = Enumerable.Repeat("Hello", 3); // {"Hello","Hello","Hello"}

Cast(强制类型转换)

var mixedList = new ArrayList { 1, 2, 3 };
// 转换为 IEnumerable<int>
var numbers = mixedList.Cast<int>();

DistinctBy / UnionBy(基于属性的去重/合并)

(需 .NET 6+ 或引入 System.Linq 的扩展包)
// 根据班级去重
var distinctByClass = students.DistinctBy(s => s.Class);
// 合并并去重(根据ID)
var unionBy = list1.UnionBy(list2, x => x.Id);

Chunk(分块)

//(需 .NET 6+)
int[] numbers = { 1, 2, 3, 4, 5 };
// 每块大小为2
var chunks = numbers.Chunk(2); // { {1,2}, {3,4}, {5} }

AsParallel(并行查询)

var bigData = Enumerable.Range(1, 1000000);
// 并行处理
var parallelResult = bigData.AsParallel().Where(n => n % 2 == 0).ToList();

OfType(过滤类型)

object[] objs = { 1, "apple", 2, "banana" };
// 提取所有整数
var ints = objs.OfType<int>(); // {1,2}

Prepend / Append(添加元素)

var nums = new[] { 2, 3 };
var newNums = nums.Prepend(1).Append(4); // {1,2,3,4}

LongCount(大集合计数)

// 返回 long 类型的计数(适用于超大集合)
long count = bigData.LongCount();

TakeLast / SkipLast(获取或跳过末尾元素)

int[] numbers = { 1, 2, 3, 4, 5 };
var lastTwo = numbers.TakeLast(2);       // {4,5}
var skipLastThree = numbers.SkipLast(3); // {1,2}

MaxBy / MinBy(按属性取极值对象)

//(需 .NET 6+)
// 取分数最高的学生
var topStudent = students.MaxBy(s => s.Score);
// 取年龄最小的学生
var youngest = students.MinBy(s => s.Age);

ToHashSet(快速去重集合)

//(需 .NET Framework 4.7.2+ 或 .NET Core 2.0+)
var uniqueNumbers = new[] { 1, 2, 2, 3 }.ToHashSet(); // {1,2,3}

ExceptBy / IntersectBy(基于键的集合操作)

var listA = new[] { new { Id = 1 }, new { Id = 2 } };
var listB = new[] { new { Id = 2 }, new { Id = 3 } };
// 按 Id 排除交集
var except = listA.ExceptBy(listB.Select(x => x.Id), x => x.Id); // {Id=1}

AsEnumerable / AsQueryable(切换执行上下文)

// 将 IQueryable 转为 IEnumerable(后续操作在内存执行)
var inMemoryQuery = dbContext.Students.AsEnumerable().Where(s => s.Age > 20);
// 将 IEnumerable 转为 IQueryable(用于动态构建数据库查询)
var queryable = students.AsQueryable().Where(s => s.Age > 20);

相关文章:

C# --- LINQ

C# --- LINQ 什么是LINQFluent Syntax 和 SQL-Like QueryLINQ Operations 什么是LINQ LINQ的全称为Language Integrated Query, 为各种查询(包括对象查询&#xff0c;数据库查询&#xff0c;XML查询) 提供了统一模型.LINQ源于SQL&#xff0c;但比SQL更加强大&#xff0c;更加灵…...

C语言之 条件编译和预处理指令

条件编译 在编译⼀个程序的时候我们如果要将⼀条语句&#xff08;⼀组语句&#xff09;编译或者放弃是很⽅便的。因为我们有条件编译指令。 ⽐如说&#xff1a; 调试性的代码删除可惜&#xff0c;保留⼜碍事&#xff0c;所以我们可以选择性的编译。 #define M 1 int main() …...

JVM常用概念之锁省略

问题 synchronized(同步-重量级锁)会解除所有编译器优化吗? 基础知识 使用当前的 Java 内存模型&#xff0c;未观察到的锁不一定会产生任何内存效应。除其他情况外&#xff0c;这意味着对非共享对象进行同步是徒劳的&#xff0c;因此运行时不必在那里做任何事情。这给编译优…...

[网络][tcp协议]:tcp报头

tcp(传输控制协议)是一种面向字节流的传输层协议,相较于udp协议,tcp能保证传输数据的可靠性与准确性,tcp也是目前最常见的传输层协议 本文主要介绍tcp报头各个字段的含义与用途 注:保留6位和6位标记位是目前最普遍的写法,在我查资料时,发现有一些拓展情况,会在后文细说 最简单的…...

传输层自学

传输实体&#xff1a;完成传输层任务的硬件或软件 可能位于&#xff1a; 操作系统内核独立的用户进程绑定在网络应用中的链接库网络接口卡 1.功能&#xff1a; 网络层与传输层作用范围比较&#xff1f; 网络层负责把数据从源机送达到目的机 传输层负责把数据送达到具体的应…...

FFmpeg —— 各系统下ffmpeg硬件加速和API支持情况(文内表格形式详细阐述)

介绍 FFmpeg 作为一款功能强大的多媒体处理工具,支持多种硬件加速技术,能够显著提升视频编解码的效率,尤其是在处理高分辨率、高码率视频时表现尤为突出。不同操作系统下,FFmpeg 的硬件加速实现方式和支持的 API 各有特点。 在 Windows 系统上,FFmpeg 主要依赖 DirectX Vi…...

RUOYI框架在实际项目中的应用二:Ruoyi前后端分离版本

如需观看Ruoyi框架的整体介绍&#xff0c;请移步&#xff1a;RUOYI框架在实际项目中的应用一&#xff1a;ruoyi简介 一、Ruoyi前后端分离版本-RuoYi-Vue 1、官方资料 1&#xff1a;代码地址&#xff1a;https://gitee.com/y_project/RuoYi-Vue.git 2&#xff1a;文档介绍地址…...

2.12[A]distribute sys

在分布式训练中&#xff0c;特别是使用3D并行&#xff08;数据并行、流水线并行和模型并行&#xff09;时&#xff0c;不同阶段的GPU可能因为通信或数据依赖而出现空闲时间&#xff0c;这些空闲时间就是所谓的“气泡”。这些气泡会降低整体的训练效率&#xff0c;导致GPU资源的…...

R语言的移动应用开发

R语言的移动应用开发 在数据科学和统计分析的大潮中&#xff0c;R语言因其强大的数据处理和可视化能力而备受青睐。然而&#xff0c;R语言对移动应用开发的适用性并未得到广泛关注。本文将探讨R语言在移动应用开发中的潜力及其工具&#xff0c;并提供一些实践示例&#xff0c;…...

解决 Redis 后台持久化失败的问题:内存不足导致 fork 失败

文章目录 解决 Redis 后台持久化失败的问题&#xff1a;内存不足导致 fork 失败问题背景与成因解决方案修改内核参数 vm.overcommit_memory增加系统内存或 Swap 空间调整 Redis 配置 stop-writes-on-bgsave-error 在 Docker 环境中的注意事项总结 解决 Redis 后台持久化失败的问…...

交换机控制软件的实现步骤猜测

一、主要目的 提出对交换机软件控制逻辑的猜测。 二、交换机控制软件的组成 (一)背景 1、交换机有很多的RJ45水晶头端口。 2、每个端口支持同时发送和接收字节数据。 3、每个端口接收的数据需要查表后才能转发给目标端口。 (二)端口状态扫描线程 负责扫描每个端口的状态&#x…...

100.HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT跑马灯组件教程&#xff1a;实际应用与场景示例 文章目录 HarmonyOS NEXT跑马灯组件教程&#xff1a;实际应用与场景示例1. 跑马灯组…...

【计算机网络】2物理层

物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…...

2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)

1. ​题目链接 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/max-consecutive-ones-iii/ 2. ​题目描述 给定一个二进制数组 nums 和一个整数 k&#xff0c;允许将最多 k 个 0 翻转为 1&#xff0c;求翻转后最长的连续 1 …...

怎么解决在Mac上每次打开文件夹都会弹出一个新窗口的问题

在Mac上每次打开文件夹都会弹出一个新窗口的问题&#xff0c;可以通过以下方法解决‌ ‌调整Finder设置‌&#xff1a; 打开Finder&#xff0c;点击“Finder”菜单&#xff0c;选择“偏好设置”。在偏好设置中&#xff0c;选择“通用”标签。取消勾选“在标签页中打开文件夹”或…...

Python异常处理

异常处理 概述 在Python中&#xff0c;在处理可能会引发异常的代码块时&#xff0c;使用try和except语句。可以帮助我们捕获并处理异常&#xff0c; 而不是让程序因为一个未处理的异常而完全崩溃。 try-except try-except-finally try-finally try-except-else try-except-…...

VSTO(C#)Excel开发8:打包发布安装卸载

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

ImportError: cannot import name ‘genai‘ from ‘google‘ (unknown location) 问题如何处理

这个错误通常发生在没有正确安装Google的生成式AI库。需要安装官方的google-generativeai库&#xff1a; pip install google-generativeai如果代码中使用的导入方式与新版SDK不兼容&#xff0c;可能需要调整导入语句。根据当前代码上下文&#xff0c;正确的导入方式应该是&am…...

Advanced Intelligent Systems 软体机器手助力截肢者玩转鼠标

随着科技的不断进步&#xff0c;假肢技术在改善截肢者生活质量方面取得了显著成就。然而&#xff0c;截肢群体在就业方面仍面临巨大困难&#xff0c;适龄截肢群体的就业率仅为健全群体的一半。现有的肌电控制假肢手在与计算机交互时存在诸多挑战&#xff0c;特别是截肢者在使用…...

kubernetes对于一个nginx服务的增删改查

1、创建 Nginx 服务 1.1、创建 Deployment Deployment 用于管理 Pod 副本和更新策略。 方式一&#xff1a;命令式创建 kubectl create deployment nginx-deployment --imagenginx:latest --replicas3 --port80--replicas3&#xff1a;指定副本数为 3 --port80&#xff1a;容…...

我的世界1.20.1forge模组进阶开发教程生物篇(1)——生成

生物生成 生物生成Alexmob介绍:**1. 核心功能与技术实现****2. 项目结构与代码质量****3. 社区协作与维护****4. 扩展性与开发挑战****5. 开发者学习价值**食蚁兽一、实体属性与行为控制(`EntityAnteater`类)二、实体注册与生成规则(`AMEntityRegistry`类)三、全局生成逻辑…...

1.5 Spring Boot项目打包和运行

本文介绍了如何使用Spring Boot进行项目打包和运行。首先&#xff0c;讲解了如何将Spring Boot项目打包为可执行的JAR包&#xff0c;并直接运行&#xff0c;无需部署到外部Web服务器。接着&#xff0c;介绍了如何将项目打包为WAR包&#xff0c;以便部署到Web容器中&#xff0c;…...

287. 寻找重复数

由于题目规定数组中的数的范围是1-n&#xff0c;因此可以构造出下标n和值nums[n]的映射f(n)&#xff0c;然后构成一个链表&#xff0c;当有重复数字时&#xff0c;链表存在环&#xff0c;找到重复数字即找到链表环的入口&#xff0c;参考142. 环形链表II。 class Solution {pu…...

如何高效解决 Java 内存泄漏问题方法论

目录 一、系统化的诊断与优化方法论 二、获取内存快照&#xff1a;内存泄漏的第一步 &#xff08;一&#xff09;自动生成 Heap Dump &#xff08;二&#xff09;手动生成 Heap Dump 三、导入分析工具&#xff1a;MAT 和 JProfiler &#xff08;一&#xff09;MAT (Memor…...

【Agent】OpenManus 项目架构分析

这是我录制的一个视频&#xff0c;主要是描述我理解的 OpenManus 的思维逻辑&#xff0c;通过这个小的思维逻辑的复现&#xff0c;为后面要再分析其他 Agent 的实现做一个准备。 1. 项目概述 OpenManus 是一个基于大语言模型的智能体框架&#xff0c;旨在提供一个无需邀请码的…...

hive-进阶版-1

第6章 hive内部表与外部表的区别 Hive 是一个基于 Hadoop 的数据仓库工具&#xff0c;用于对大规模数据集进行数据存储、查询和分析。Hive 支持内部表&#xff08;Managed Table&#xff09;和外部表&#xff08;External Table&#xff09;两种表类型&#xff0c;它们在数据…...

规模效应的三重边界:大白话解读-deepseek为例

前言&#xff1a;当Scaling Laws遇见边际递减效应 在人工智能的狂飙突进中&#xff0c;大语言模型如同不断膨胀的星体&#xff0c;吞噬着海量算力与数据。OpenAI于2020年揭开的Scaling Laws&#xff0c;曾为这场盛宴指明方向&#xff1a;模型性能随参数规模&#xff08;N&…...

考研系列-408真题计算机网络篇(18-23)

写在前面 此文章是本人在备考过程中408真题计算机网络部分&#xff08;2018年-2023年&#xff09;的易错题及相应的知识点整理&#xff0c;后期复习也常常用到&#xff0c;对于知识提炼归纳理解起到了很大的作用&#xff0c;分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…...

windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC

大家好&#xff0c;我是国货系创始人张云泽&#xff0c;最近不少小伙伴在后台问&#xff1a;“听说Windows协议要到期了&#xff1f;我的电脑会不会变砖&#xff1f;”还有人说&#xff1a;“华为笔记本以后用不了Windows了&#xff1f;鸿蒙系统能用吗&#xff1f;”今天咱们就…...

【二分算法】-- 点名

文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 2. 题目解析 前四种解决方法&#xff1a; 哈希表直接遍历找结果位运算数学&#xff08;高斯求和公式&#xff09; 这四种方法的时间复杂度都是0&#xff08;N&#xff09; 第五种解决方法&#xff1a; 【二段性】&…...

强化学习 - PPO控制无人机

PPO&#xff08;Proximal Policy Optimization&#xff0c;近端策略优化&#xff09;是一种强化学习算法&#xff0c;用于训练智能体&#xff08;无人机&#xff09;如何在环境中做出决策。它本质上是 策略梯度&#xff08;Policy Gradient&#xff09;方法 的一种改进&#xf…...

【AHE数据集】 NCAR Anthropogenic Heat Flux (AHF) 数据集

数据概述 数据集由 美国国家大气研究中心(NCAR, National Center for Atmospheric Research) 的 气候与全球动力学实验室(CGD, Climate & Global Dynamics Laboratory) 提供。NCAR 由 美国国家科学基金会(NSF, National Science Foundation) 资助,并由 大学大气研究…...

Part1:基于国内源完成Kubernetes集群部署

集群规划 操作系统&#xff1a;CentOS7 内核版本&#xff1a;5.4&#xff08;需升级&#xff09; 组件版本说明操作系统内核5.4RPM方式升级docker26.1.4yum安装cri-docker0.3.16二进制安装kubeadm1.30.11yum安装kubealet1.30.11yum安装kubectl1.30.11yum安装kubectl1.30.11yu…...

强化学习的一些概念

目录 强化学习 打个比方 核心要素 State Action Reward 几个代码demo 学习目标 强化学习 强化学习&#xff08;Reinforcement Learning, RL&#xff09;是机器学习的一个分支&#xff0c;旨在让智能体&#xff08;Agent&#xff09;通过与环境的交互学习最优策略&#xff0c;以…...

花生好车:重构汽车新零售生态的破局者

在传统汽车零售行业面临消费升级与渠道变革的双重压力下&#xff0c;花生好车以颠覆性的商业模式在短短九年内崛起为行业独角兽。这家成立于2015年的汽车新零售平台&#xff0c;通过重构供应链体系、创新融资租赁模式、深耕下沉市场三大战略维度&#xff0c;正在重塑中国汽车消…...

K8S下nodelocaldns crash问题导致域名请求响应缓慢

前言 最近做项目&#xff0c;有业务出现偶发的部署导致响应很慢的情况&#xff0c;据了解&#xff0c;业务使用域名访问&#xff0c;相同的nginx代理&#xff0c;唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台&#xff0c;毕竟业务是重启几次正常&#xff0c;偶…...

实现悬浮按钮拖动,兼容h5和微信小程序

h5用js写&#xff0c;微信小程序用 代码里面没有完全实现吸附边缘的功能&#xff0c;需要吸附边缘的话还得自己再完善下&#xff08;h5的吸附边缘是可以的&#xff0c;小程序的还有点问题&#xff09; 主要功能是&#xff1a;图片上写文字的悬浮按钮&#xff0c;文字使用的是…...

SLC跨头协作机制

SLC跨头协作机制 SLC(Self-attention with Local Communication,或类似跨头协作机制)在Transformer架构中通过以下逻辑帮助注意力头优化分布: 1. 多头注意力的「独立-协作」平衡 传统多头注意力中,每个头独立计算注意力(如Query/Key/Value的线性变换),捕捉不同语义模…...

全国医院数据可视化分析系统

【大数据】全国医院数据可视化分析系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 &#x1f3e5; 项目名&#xff1a;医疗导航神器&#xff01;——《基于大数据的微医挂号网医院数据可视…...

Flash Attention原理讲解

目录 前言0. 简述1. self-attention2. roofline model3. 矩阵分块4. softmax分块5. FlashAttention结语参考 前言 看了几个视频和几篇文章学习了下 Flash Attention&#xff0c;记录下个人学习笔记&#xff0c;仅供自己参考&#x1f604; refer1&#xff1a;Flash Attention 为…...

python二级复习(1)

临近计算机二级考试了,开始python的复习 python语言基础: 1.用缩进表示代码块:一般用四个空格或者一个tab 2.代码的注释方法: 单行注释用“#”表示注释开始&#xff1b;多行注释是用三个英文的单引号“‘’”或双引号““”"”作为注释的开始和结束符号。 03. 标识符命…...

基于cat1的贵重物品的状态和位置小型监控系统特色解析

一 项目需求 团队研发出来一款搭载多传感器的无线cat1定位和状态监控的设备。该设备主要面对的贵重物品运输过程中的状态监控&#xff0c;比如&#xff0c;是否被打开过&#xff0c;有没有激烈碰撞&#xff0c;位置信息等。主要应用场景是医疗&#xff0c;安防等贵重物品的状态…...

Python 魔法方法介绍

在 Python 中,魔法方法(Magic Methods)是一类特殊的内置方法,它们通常以双下划线开头和结尾(例如 __init__、__str__、__add__ 等)。这些方法通常用于实现特定的语法或操作符行为,或者用于定义对象的行为。它们是 Python 面向对象编程中的一个重要特性,可以让类的行为更…...

golang time包和日期函数

1.简介 在程序中日期和时间是我们经常会用到的&#xff0c;在go中time包提供了时间的显示和测量函数。 2.获取当前时间 通过time.Now()函数获取当前时间对象&#xff0c;然后获取时间对象的年月日时分秒等值。 now : time.Now()fmt.Printf("now%v type%T\n", now…...

第7章 站在对象模型的尖端2: 异常处理

1.异常处理(Exception Handling) C的异常处理由三个主要组成部分构成&#xff1a;throw表达式、catch子句和try块。当异常被抛出时&#xff0c;程序控制权会转移&#xff0c;并且会沿着调用堆栈回溯&#xff0c;直到找到匹配的catch子句。在此过程中&#xff0c;局部对象的析构…...

不同路径——2

给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。 网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的…...

电子招采软件系统,如何实现10年可追溯审计

一、在当前经济环境下&#xff0c;中小企业面临着巨大的生存压力&#xff0c;传统产业的数字化转型迫在眉睫。AI技术为企业的低成本高效发展提供了新机会&#xff0c;混合办公成为新常态&#xff0c;数据安全法的深入落实则进一步推动企业重视数据安全。区块链存证技术凭借独特…...

TS常见内置映射类型的实现及应用场景

以下是 TypeScript 在前端项目中 常用的映射类型&#xff08;Mapped Types&#xff09;&#xff0c;结合具体场景和代码示例&#xff0c;帮助开发者高效处理复杂类型&#xff1a; 一、基础映射类型 1. Partial<T> 作用&#xff1a;将对象类型 T 的所有属性变为可选。 实…...

本地部署Deep Seek-R1,搭建个人知识库——笔记

目录 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 2&#xff1a;部署DeepSeek - R1模型 3&#xff1a;安装Cherry Studio 二、构建私有知识库 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 1.打开Ollama下载安装 未科学上网&#xff0c;I 先打开迅雷再下…...

东芝2323AMW复印机安装纸盒单元后如何添加配件选项

如何添加请看下面图示&#xff1a; 找到设备和打印机里找到打印机图标&#xff0c;右键打印机属性&#xff0c;找到配置&#xff0c;添加相应配置功能&#xff1b;打印机属性&#xff0c;加上双面或者2纸盒配件选项&#xff1b; Word打印时&#xff0c;打印机名称&#xff0c;后…...