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

【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列

系列文章目录

🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀


文章目录

  • 系列文章目录
  • 前言
  • 一、Select 执行位置
  • 二、返回一个字段和多个字段
  • 三、单表返回DTO
  • 四、多表返回DTO
    • 4.1 手动DTO
    • 4.2 实体自动映射1
    • 4.3 实体自动映射2
    • 4.4 实体自动映射3
    • 4.5 匿名对象自动映射
  • 五、创建DTO类
  • 六、多表查一表
  • 七、多表返回2表
  • 八、双查询结果用法
  • 九、Select之后对字段进行C#处理
    • 9.1 方式1 (5.1.4.113-preview+)
    • 9.2 方式2
  • 十、动态Select
  • 十一、别名AS用法
  • 十二、返回元组
  • 十三、过滤某一个字段
  • 总结
  • 系列文章目录


前言

说到 SQL 语句,最常见的也是最重要的两个关键词 莫过于 WhereSelect 两兄弟了。Where关键词主要用作条件筛选,使用频率那是大的不得了,那我们今天给它开个专场,看看ORM 框架里 Select 都有哪些语法。


一、Select 执行位置

正常情况:应该在最后面, 一般是 .Where(..).OrderBy(..).Select(..).ToList()

特殊情况:如果 Select 不是最后一个位置,则 Select 要加 MergeTable() 合并成一个表,

Select(...).MergeTable().Where

🍬语法糖

Select(...).MergeTable() 在新版本中可以用:

SelectMergeTable(it=>new xxx(){xx}).Where

二、返回一个字段和多个字段

List<int> listInt=db.Queryable<Student>().Select(it=> it.Id).ToList();//返回一个字段
DataTable list=db.Queryable<Student>().Select(it=>new { id=it.Id,name=it.Name}).ToDataTable();//2个字段 
List<Class1>list=db.Queryable<Student>().Select(it=>new Class1{id=it.Id,name=it.Name}).ToList();//2个字段 
List<dynamic>list=db.Queryable<Student>().Select(it=>(dynamic)new{id=it.Id,name=it.Name}).ToList(); //动态 
List<int> listInt=db.Queryable<Student>().Select<int>("id").ToList();
List<Order> listInt=db.Queryable<Student>().Select<ViewModel>("id as id, name as name").ToList();

三、单表返回DTO

//返回匿名对象
var dynamic = db.Queryable<Student>().Select<dynamic>().ToList();
//Select * from Student//手动:返回匿名集合 支持跨程序集
List<dynamic> dynamicList = db.Queryable<Student>().Select(it=>(dynamic)new { id=it.id}).ToList();
//Select id as id from Student Select只有一列所以只查一列//手动:返回匿名集合  不能跨程序集用
var dynamic = db.Queryable<Student>().Select(it=> new { id=it.id}).ToList(); //手动:返回类集合-手动
List<Student> list= db.Queryable<Student>().Select(it=>new  Student{ id=it.id}).ToList();
//Select id as id from Student Select只有一列所以只查一列//自动返回DTO集合: 请升级 5.1.3.2 
var listDto= db.Queryable<Student>().Select<StudentDto>().ToList();//返回List//自动返回DTO : 请升级 5.1.3.35  
var listDto= db.Queryable<Student>().Select(it=>new StudentDto(){Count=100 //手动指定一列在自动映射},true)//true表式开启自动映射.ToList();//返回List

四、多表返回DTO

4.1 手动DTO

var newClass= db.Queryable<Student, School, DataTestInfo>((st, sc, di) => new JoinQueryInfos(JoinType.Left, st.SchoolId == sc.Id,JoinType.Left, st.Name == di.String
)) 
.Select((st,sc,di)=>new ClassName{ name=st.Name,scid=sc.Id })//看这一行就行了
.ToList();//实体转换//指定了2列只查2列
//select  st.name as name  , sc.id as scid

4.2 实体自动映射1

语法最美,新功能(5.1.3.35)

 var list4=db.Queryable<SchoolA>().LeftJoin<StudentA>((x, y) => (x.SchoolId == y.SchoolId)).Select((x,y) => new UnitView01(){Name=x.SchoolName,Count=100},true)//true表示 其余字段自动映射,根据字段名字.ToList();

生成的 Sql 如下:


SELECT  [x].[ID] AS [id] , --自动[x].[Time] AS [Time] , --自动 [x].[SchoolName] AS [Name] --手动 100 as [Count]  --手动FROM [SchoolA] xLeft JOIN StudentA  y  ON ( [x].[SchoolId] =[y].[SchoolId])

4.3 实体自动映射2

🎯说明:通过 x.* 方式实现多表查询
🚨注意Oracle 如果用到 Take 或者 分页 需要改用 ToffsetPage() 替换


//生成的SQL为 Select o.*, [c].[Name] AS [CustomName]
var oneClass = db.Queryable<Order>().LeftJoin<OrderItem>((o,i)=>o.Id == i.OrderId).LeftJoin<Custom>((o,i,c)=>o.CustomId == c.Id).Where(o=>o.Id>1)
.Select((o,i,c)=> new ViewOrder// 是一个新类
{      //Id是o任意一个属性Id=o.Id.SelectAll(),   //  等于 o.*   (SelectAll建议用一张表,多表会容易重名)CustomName=c.Name   // 等于 [c].[Name] AS [CustomName]
}).ToList()

生成Sql如下


SELECT o.*, [c].[Name] AS [CustomName] FROM  [Order] o Left JOIN [OrderItem] i ON ( [o].[Id] = [i].[OrderId] )  Left JOIN [Custom] c ON ( [o].[CustomId] = [c].[Id] ) WHERE [o].[Id]>1

4.4 实体自动映射3

🎯说明:通过约束实现自动映射
比如一个3表查询 Order 、 OrderItem、Custom

🚨需要注意的是 Select 用的是自动填充这样使用方便,高并发的地方还是写成上面那种方式(5.0.5.2性能优化提升)

public class ViewOrder
{public string Name { get; set; } // ORDER表中的name 主表规则【字段名】public string CustomName { get; set; }//查询的是Custom中的的name 从表规则【class+字段名】public string OrderItemPrice { get; set; }//查询的是OrderItem中的name 从表规则【 class+字段名】
}
var viewModel= db.Queryable<Order>().LeftJoin<OrderItem>((o,i)=>o.Id == i.OrderId).LeftJoin<Custom>((o,i,c)=>o.CustomId == c.Id).Select<ViewOrder>().ToList();

生成Sql如下


SELECT o.[Name] AS [Name],c.[Name] AS [CustomName],i.[Price] AS [OrderItemPrice] FROM [Order] o Left JOIN [OrderItem] i ON ( [o].[Id] = [i].[OrderId] )  Left JOIN [Custom] c ON ( [o].[CustomId] = [c].[Id] )

🎯注意:

  1. ViewOrder 必须每个列都能匹配到字段,否则就无法按规则匹配,保证每个列都正确。
  2. 高并发功能不建议使用,手写的性能肯定高于自动映射。

4.5 匿名对象自动映射

🎯说明:自动主表赋值 表.*
🚨注意Oracle 如果用到 Take 或者 分页 需要改用 ToffsetPage() 替换。


.Select<dynamic>((st,sc)=> new  
{ //id是st任意一个属性id=st.Id.SelectAll(), //  st.*  (SelectAll建议只用一张表,不然查询列会有重名)SchoolName=sc.Name // Name as  SchoolName
}).ToList()
//Select st.*,[sc].[Name] AS [schoolName]//.SelectAll等同于SqlFunc.GetSelfAndAutoFill是个语法糖

五、创建DTO类

这样就能快速拿到 DTO 类的实体字符串比手写要快的多。

string classtring=db.Qureyable<Order>().Select(....).ToClassString("命名空间");

六、多表查一表

var oneClass = db.Queryable<Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(JoinType.Left, o.Id == i.OrderId,JoinType.Left, o.CustomId == c.Id
))
.Select((o, i, c) => c).ToList();

七、多表返回2表

var twoClass = db.Queryable<Order, OrderItem, Custom>((o, i, c) => new JoinQueryInfos(
JoinType.Left, o.Id == i.OrderId,
JoinType.Left, o.CustomId == c.Id
))
.Select((o, i, c) => new { o,i}).ToList()

八、双查询结果用法

当我们需要在 select 后在外面在包一层 select ,代码如下。

      var getAll = db.Queryable<Order>().Select(it => new Order{Id = it.Id * 2,Name = it.Name}).MergeTable()//将上面的操作变成一个表 mergetable.GroupBy(it => it.Id)//对表mergetable进行分组.Select(it =>new{ id=it.Id }).ToList();//查询mergetable表里面的字段//SELECT `Id` FROM  
//           (  SELECT  
//                    ( `Id` * @Id0 ) AS `Id` , 
//                    `Name` AS `Name` 
//                                    
//                FROM `Order ) MergeTable 
// GROUP BY `Id`
// 参数 @Id0:2

九、Select之后对字段进行C#处理

9.1 方式1 (5.1.4.113-preview+)

只能返回 string 只能是个单参数

public class UnitTool{public static string GetName(string name) //定义一个string{return "name" + 111;}}//获取methodInfo    var methodInfo = typeof(UnitTool).GetMethod("GetName");var list8 = db.Queryable<Order>().Select(it => new{n = it.Name,name = SqlFunc.OnlyInSelectConvertToString(it.Name, methodInfo)//只能是select中用}).ToList();

9.2 方式2

相对方式1用法麻烦 支持的功能全些。

实体类 :

var list= db.Queryable<Order>().Select(it=>new Order{ Id=it.Id,Name=it.Name}).Mapper(it => { //只能写在Select后面it.Name = it.Id + it.Name;//相当于ToList循环赋值}).ToList();

匿名对象 :

var list = db.Queryable<Order>().Select(it=>(dynamic)new  //转成 dynamic{ Id=it.Id,Name=it.Name}).Mapper(it => { //只能写在Select后面it.Name = it.Id + it.Name;//相当于ToList循环赋值}).ToList();

🚨注意:( dynamic )不要漏了。

十、动态Select

//方式1:多库兼容
var selector= new List<SelectModel>() { new SelectModel(){  FiledName = "id",AsName = "id2",},new SelectModel(){ FiledName = "id"} //常量用法new SelectModel(){FieldName= "{string}:a",AsName="Name"}};var list=db.Queryable<Order>().Select(selector).ToList();
//SELECT `id` AS `id2` , `id` AS `id` ,@Name as Name FROM `Order`
//更多复杂用法: https://www.donet5.com/Home/Doc?typeId=2421//方式2:直接写SQL
var list=db.Queryable<Order>().Select("ID AS id1,id as id").ToList();//方式3: 动态表达式 
StaticConfig.DynamicExpressionParserType = typeof(DynamicExpressionParser); //启动时配置var list= db.Queryable<Order>().Select("it", $"it=>new(it.Id as Id, it.Name)", typeof(Order)).ToList();//需要SqlFunc:https://www.donet5.com/Home/Doc?typeId=2569

十一、别名AS用法

Select(it=>new { id1=it.id ,name2 =it.name })
//select id as id1,name as name2

如果是动态看 上面一个标题

十二、返回元组

List<(int Id, string Name)> list= db.Queryable<Order>().Select<(int Id, string Name)>("id,name").ToList();

十三、过滤某一个字段

/***单表***/
db.Queryable<Order>().IgnoreColumns(it=>it.Files).ToList();//只支持单表查询/***联查***/
//是主表
var leftQuery=db.Queryable<Order>().IgnoreColumns(it=>it.Files);
var list=db.Queryable(leftQuery).LeftJoin<OrderDetails>((o,d)=>o.id==d.orderid).Select(o=>o).ToList();    //是Join的表
var rightQuery= db.Queryable<OrderItem>().IgnoreColumns(it=>it.Files);
var list=db.Queryable<Order>().LeftJoin(rightQuery,(o,d)=>o.Id == d.OrderId).Select(o=>o).ToList();

总结

感觉东西太多了,脑子记不住啊。大家都是一样,只要大概记住有这么个概念就行,等需要的时候再来翻翻笔记。


系列文章目录

🎀💎🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀💎🎀

【开篇】.NET开源 ORM 框架 SqlSugar 系列
【入门必看】.NET开源 ORM 框架 SqlSugar 系列
【实体配置】.NET开源 ORM 框架 SqlSugar 系列
【Db First】.NET开源 ORM 框架 SqlSugar 系列
【Code First】.NET开源 ORM 框架 SqlSugar 系列
【数据事务】.NET开源 ORM 框架 SqlSugar 系列
【连接池】.NET开源 ORM 框架 SqlSugar 系列
【查询目录】.NET开源 ORM 框架 SqlSugar 系列
【查询基础】.NET开源 ORM 框架 SqlSugar 系列
【排序用法】.NET开源 ORM 框架 SqlSugar 系列
【分组去重】.NET开源 ORM 框架 SqlSugar 系列
【联表查询】.NET开源 ORM 框架 SqlSugar 系列
【导航查询】.NET开源 ORM 框架 SqlSugar 系列
【子查询】.NET开源 ORM 框架 SqlSugar 系列
【嵌套查询】.NET开源 ORM 框架 SqlSugar 系列
【配置查询】.NET开源 ORM 框架 SqlSugar 系列
【并集查询】.NET开源 ORM 框架 SqlSugar 系列
【树型查询】.NET开源 ORM 框架 SqlSugar 系列
【表格查询】.NET开源 ORM 框架 SqlSugar 系列
【动态表达式】.NET开源 ORM 框架 SqlSugar 系列
【查询函数】.NET开源ORM框架 SqlSugar 系列
【过滤器】.NET开源 ORM 框架 SqlSugar 系列
【跨库查询、多库查询】.NET开源 ORM 框架
​【报表查询】.NET开源ORM框架 SqlSugar 系列
【Where语法全解密】.NET开源ORM框架 SqlSugar 系列

在这里插入图片描述

相关文章:

【Select 语法全解密】.NET开源ORM框架 SqlSugar 系列

系列文章目录 &#x1f380;&#x1f380;&#x1f380; .NET开源 ORM 框架 SqlSugar 系列 &#x1f380;&#x1f380;&#x1f380; 文章目录 系列文章目录前言一、Select 执行位置二、返回一个字段和多个字段三、单表返回DTO四、多表返回DTO4.1 手动DTO4.2 实体自动映射14.…...

STM32之GPIO输出与输出

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 文章目录 一.GPIO输入1.1GPIP简介1.2GPIO基本结构1.3GPIO位结构1.4GPIO的八种模式1.4.1浮空/上拉/下拉输入1.4.2 模拟输入1.4.3 推挽输出\开漏输出 二.GPIO输入2.1.按键介绍2.2传感器模块介绍2.3按键电路 一.G…...

【数据库】Redis—Java 客户端

一、常见的几种 Java 客户端 Jedis&#xff1a;以 Redis 命令作为方法的名称&#xff0c;便于学习&#xff0c;简单实用&#xff0c;但其实例是线程不安全的&#xff0c;多线程下需要基于连接池来使用。lettce&#xff1a;基于 Netty 实现&#xff0c;支持同步、异步和响应式编…...

《图解机器学习》(杉山将著)第一部分绪论学习笔记

《图解机器学习》&#xff08;杉山将著&#xff09;第一部分绪论学习笔记 《图解机器学习》&#xff08;杉山将著&#xff09;第一部分绪论学习笔记一、什么是机器学习1.1 学习的种类1.2 机器学习任务的例子1.3 机器学习的方法 二、学习模型2.1 线性模型2.2 核模型2.3 层级模型…...

Deepin和Windows传文件(Xftp,WinSCP)

在Linux系统和Windows系统传输文件&#xff0c;通常通过Windows系统中安装的Xftp和WinSCP访问Linux系统&#xff0c;在访问前需要安装配置SSH-Server 安装SSH-Server 安装SSH-Server sudo apt-get install openssh-server ssh -v 启动SSH服务 sudo systemctl start ssh //也…...

C语言习题2.0

C语言习题1.0 C语言习题-CSDN博客 目录 C语言习题1.0 C语言习题-CSDN博客 找一个数字的连续因子 求N个分数的和 正整数AB 函数 预处理 文件处理 操作符 找一个数字的连续因子 //找连续因子,及其个数 int main() {int a;scanf("%d", &a);int num 0; …...

达梦 本地编码:PG_GBK, 导入文件编码:PG_UTF8错误

问题 达梦 本地编码&#xff1a;PG_GBK, 导入文件编码&#xff1a;PG_UTF8错误 解决 右键管理服务器 查看配置 新建一个数据库实例&#xff0c;配置跟之前的保持一致 新建一个用户&#xff0c;跟以前的用户名一样 在用户上&#xff0c;右键导入&#xff0c;选择dmp的位置 导…...

【Apache Paimon】-- 11 -- Flink 消费 kakfa 写 S3 File

目录 1、项目构建 2、项目新增和修改 2.1 pom.xml 新增依赖 2.2 本地测试或者 flink on k8s 时,新增 S3FileSystemFactory.java 第一步:创建包=org.apache.flink.fs.s3hadoop 第二步:新增 java 类 S3FileSystemFactory 特别注意 (1)本地测试时需要新增以下内容 (…...

使用C语言编写UDP循环接收并打印消息的程序

使用C语言编写UDP循环接收并打印消息的程序 前提条件程序概述伪代码C语言实现编译和运行C改进之自由设定端口注意事项在本文中,我们将展示如何使用C语言编写一个简单的UDP服务器程序,该程序将循环接收来自指定端口的UDP消息,并将接收到的消息打印到控制台。我们将使用POSIX套…...

QT6静态编译并配置及错误解决

使用Github workflow进行编译&#xff0c;无需本地编译。 断断续续半年间&#xff0c;试了很多次静态编译&#xff0c;也尝试过别人编译的静态包&#xff0c;但一直失败。不是无法成功编译&#xff0c;就是编译后无法正常使用&#xff0c;经常报错链接失败。 参考的教程&#…...

Docker部署GitLab服务器

一、GitLab介绍 1.1 GitLab简介 GitLab 是一款基于 Git 的开源代码托管平台&#xff0c;集成了版本控制、代码审查、问题跟踪、持续集成与持续交付&#xff08;CI/CD&#xff09;等多种功能&#xff0c;旨在为团队提供一站式的项目管理解决方案。借助 GitLab&#xff0c;开发…...

flink实现复杂kafka数据读取

接上文&#xff1a;一文说清flink从编码到部署上线 环境说明&#xff1a;MySQL&#xff1a;5.7&#xff1b;flink&#xff1a;1.14.0&#xff1b;hadoop&#xff1a;3.0.0&#xff1b;操作系统&#xff1a;CentOS 7.6&#xff1b;JDK&#xff1a;1.8.0_401。 常见的文章中&…...

小雅Alist缓存太多怎么清理?教程来了

声明&#xff1a;不喜欢小白在开头唠嗑的小伙伴可以直接滑动到【 正文开始】处阅读。 前言 前段时间讲到在飞牛OS上部署小雅超集AList&#xff0c;后台看到很多小伙伴都部署了。 飞牛NAS上的小雅根本没有资源&#xff1f;只剩下打赏码&#xff1f;那得按照这个重新配置了&…...

Python字符串及正则表达式(十一):正则表达式、使用re模块实现正则表达式操作

前言&#xff1a;在 Python 编程的广阔天地中&#xff0c;字符串处理无疑是一项基础而关键的技能。正则表达式&#xff0c;作为处理字符串的强大工具&#xff0c;以其灵活的模式匹配能力&#xff0c;在文本搜索、数据清洗、格式验证等领域发挥着不可替代的作用。本系列博客已经…...

前端:金额高精度处理

Decimal 是什么 想必大家在用js 处理 数字的 加减乘除的时候&#xff0c;或许都有遇到过 精度不够 的问题&#xff0c;还有那些经典的面试题 0.20.1 ! 0.3&#xff0c; 至于原因&#xff0c;那就是 js 计算底层用的是 IEEE 754 &#xff0c;精度上有限制&#xff0c; 那么Deci…...

WPF 依赖属性和附加属性

除了普通的 CLR 属性&#xff0c; WPF 还有一套自己的属性系统。这个系统中的属性称为依赖属性。 1. 依赖属性 为啥叫依赖属性&#xff1f;不叫阿猫阿狗属性&#xff1f; 通常我们定义一个普通 CLR 属性&#xff0c;其实就是获取和设置一个私有字段的值。假设声明了 100 个 …...

git merge 冲突 解决 show case

废话不多说&#xff0c;上 case&#xff01;&#xff01;&#xff01; 1. 更新master分支 package org.example;public class Main {public static void main(String[] args) {System.out.println("--------Git冲突测试代码开始---------");System.out.println(&qu…...

小鹏“飞行汽车”上海首飞,如何保障智能出行的安全性?

近日&#xff0c;小鹏汇天的“陆地航母”飞行汽车在上海陆家嘴成功完成首飞&#xff0c;标志着飞行汽车时代在中国正式拉开序幕。作为一项突破性的科技创新&#xff0c;飞行汽车不仅将重塑我们的出行方式&#xff0c;还将深刻改变城市的交通格局。此次飞行不仅证明了飞行汽车的…...

分析excel硕士序列数据提示词——包含对特征的筛选,非0值的过滤

文章目录 1 分析出发点2 围绕出发点的文件分析3 功能模块计算重心相关性计算教学倾向百分比多列相关性计算结果封装证伪——过滤0后的交叉相关系数封装和总控——批量处理特征筛选——筛选提问倾向最大和最小的前五代码总的清洗1 分析出发点 写一个python代码,遍历"D:\Ba…...

sed | 一些关于 sed 的笔记

sed 总结 sed 语法sed [-hnV] [-e<script>] [-f<script文件>] [文本文件]--- 参数&#xff1a;-e<script> 以选项中指定的script 来处理输入的文本文件-f<script文件> 以选项中指定的script 文件来处理输入的文本文件动作说明:a 新增s 取代d 删除i 插入…...

如何重新设置VSCode的密钥环密码?

故障现象&#xff1a; 忘记了Vscode的这个密码&#xff1a; Enter password to unlock An application wants access to the keyring “Default ke... Password: The unlock password was incorrect Cancel Unlock 解决办法&#xff1a; 1.任意terminal下&#xff0c;输入如下…...

数据结构 (字符串:KMP)

KMP算法&#xff1a; 构造ne数组 和 匹配过程 vector<int> build_next(string s) { vector<int> ne(s.size()); ne[0] -1; for (int i 1, j -1; i < s.size(); i) { while (j ! -1 && s[i] ! s[j 1])j ne[j]; if (s[i…...

剑指offer搜索二维矩阵

题目连接 https://leetcode.cn/problems/search-a-2d-matrix-ii/’ 代码 自己想出来的 解法一 初始化两个指针&#xff0c;i0,j列数-1 若此时matrix[i][j]target 则返回true 若此时matrix[i][j]>target,表明在第j列中不可能存在target&#xff0c;因为列是升序的 若此时ma…...

【LIBS】开源库编译之OSQP

目录 编译环境源码下载本地编译交叉编译 编译环境 【LIBS】开源库编译之编译环境 源码下载 git clone --recursive --branch v0.6.3 https://github.com/osqp/osqp.git libosqp-0.6.3本地编译 cd libosqp-0.6.3cmake -B build_amd64 \-D CMAKE_BUILD_TYPERelease \-D CMAKE…...

【系统移植】制作SD卡启动——将uboot烧写到SD卡

在开发板上启动Linux内核&#xff0c;一般有两种方法&#xff0c;一种是从EMMC启动&#xff0c;还有一种就是从SD卡启动&#xff0c;不断哪种启动方法&#xff0c;当开发板上电之后&#xff0c;首先运行的是uboot。 制作SD卡启动&#xff0c;首先要将uboot烧写到SD卡&#xff…...

.NET重点

B/S C/S什么语言 B/S&#xff1a; 浏览器端&#xff1a;JavaScript&#xff0c;HTML&#xff0c;CSS 服务器端&#xff1a;ASP&#xff08;.NET&#xff09;PHP/JSP 优势&#xff1a;维护方便&#xff0c;易于升级和扩展 劣势&#xff1a;服务器负担沉重 C/S java/.NET/…...

米思奇图形化编程之ESP32控制LED灯闪烁方案实现

目录 一、项目概述 二、硬件准备 三、硬件连接 四、软件编程 五、验证效果 六、总结 一、项目概述 本项目使用米思奇图形化编程环境&#xff0c;编写micropython软件代码&#xff0c;实现了控制ESP32开发板上LED灯闪烁效果。该项目可为后续更复杂的物联网项目打下基础。…...

SMMU软件指南SMMU编程之全局错误和最小配置

安全之安全(security)博客目录导读 目录 一、全局错误 二、最小配置 一、全局错误 与编程接口相关的全局错误会报告到适当的 SMMU_(*_)GERROR 寄存器&#xff0c;而不是通过基于内存的事件队列。这些错误通常是严重的&#xff0c;例如导致 SMMU 停止向前推进。例如&#xf…...

JavaEE 导读与环境配置

JavaEE 介绍 Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习JavaEE主要是学习Java在企业中如何应⽤ 框架学习 Java EE 课程共涉及4个框架的学习: Spr…...

Cesium 实例化潜入潜出

Cesium 实例化潜入潜出 1、WebGL Instance 的原理 狭义的的WebGL 中说使用 Instance, 一般指使用 glDrawArraysInstanced 用于实例化渲染的函数。它允许在一次绘制调用中渲染多个相同的几何体实例&#xff0c;而无需为每个实例发起单独的绘制调用。 Three.js 就是使用这种方…...

设计模式——适配器模式

1. 定义 适配器模式&#xff08;Adapter Pattern&#xff09;属于结构型设计模式&#xff0c;它的主要作用是将一个类的接口转换成客户期望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的类可以协同工作。简单来说&#xff0c;就是充当了不同接口之间的 “转…...

Linux安装Docker

如何在虚拟机中安装linux操作系统&#xff0c;参考文章&#xff1a; VMware下Centos7安装步骤-CSDN博客 使用Xshell链接到linux操作系统 执行命令&#xff0c;安装docker的底层工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 增加阿里云docker下载仓…...

CH430N 插上电脑无反应

电路图&#xff0c;此处我用的是3.3V供电&#xff0c;现象就是插上USB,电脑没有反应。搜索也搜索不到 抄板请看自己是多少V供电 后来看到也有类似的 换了芯片后就好了。md新板子第一个芯片就是坏的&#xff0c;服了。...

Java实现贪吃蛇游戏

目录 一、项目结构 二、实现步骤 1. 创建 Snake 类 2. 创建 Food 类 3. 创建 GameBoard 类 4. 创建 SnakeGame 类 三、总结 贪吃蛇是一个经典的电子游戏&#xff0c;它的玩法非常简单&#xff0c;但又充满了挑战。玩家通过控制蛇的移动&#xff0c;吃到食物并不断成长&a…...

为SSH2协议服务器的用户设置密钥

目录 私钥的创建1. 在服务器上直接生成2. 如果需要配置免密登录3. 查看生成的密钥 导出私钥至SSH用户获取sudo权限 新的一台服务器类型是SSH2&#xff1a;这表示服务器支持SSH&#xff08;Secure Shell&#xff09;协议的第二个版本。SSH是一个网络协议&#xff0c;用于加密方式…...

最新版Chrome浏览器加ActiveX控件之多个VLC控件同时加载

背景 VLC Media Player 是一款可播放大多数格式&#xff0c;而无需安装编解码器包的媒体播放器。可以播放 MPEG-1、MPEG-2、MPEG-4、DivX、DVD/VCD、卫星数字电视频道、地面数字电视频道(digital terrestrial television channels)、在许多作业平台底下透过宽带 IPv4、IPv6 网络…...

sql server 查询对象的修改时间

sql server 不能查询索引的最后修改时间&#xff0c;可以查询表&#xff0c;存储过程&#xff0c;函数&#xff0c;pk 的最后修改时间使用以下语句 select * from sys.all_objects ob order by ob.modify_date desc 但可以参考一下统计信息的最后修改时间&#xff0c;因为索…...

均值聚类算法

K-均值聚类算法是一种常用的无监督学习算法&#xff0c;用于将数据集划分成K个不同的簇。该算法的步骤如下&#xff1a; 1. 选择聚类的个数K。 2. 随机初始化K个聚类中心。 3. 对每个数据点计算其与聚类中心的距离&#xff0c;并将其划分到最近的聚类中心所代表的簇。 4. 对每…...

django中cookie与session的使用

一、cookie cookie由服务器生成 &#xff0c;存储在浏览器中的键值对数据,具有不安全性&#xff0c;对应敏感数据应该加密储存在服务端每个域名的cookie相互独立浏览器访问域名为A的url地址&#xff0c;会把A域名下的cookie一起传递到服务器cookie可以设置过期时间 django中设…...

Python 协程:并发编程的轻量级利器

一、协程是什么&#xff1f; 协程是一种比线程更加轻量级的存在。它可以在特定的点暂停执行&#xff0c;然后在后续某个时刻恢复执行&#xff0c;并且能够在暂停期间保存其执行状态。与传统的多线程模型不同&#xff0c;协程不需要操作系统进行线程上下文切换的开销&#xff0c…...

理解JVM

JVM简介 JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java 虚拟机 虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统 常见的虚拟机&#xff1a; JVM 、 VMwave 、 Virtual Box JVM 和其他两个虚拟机的区别&#xff1a; 1…...

GhostRace: Exploiting and Mitigating Speculative Race Conditions-记录

文章目录 论文背景Spectre-PHT&#xff08;Transient Execution &#xff09;Concurrency BugsSRC/SCUAF和实验条件 流程Creating an Unbounded UAF WindowCrafting Speculative Race ConditionsExploiting Speculative Race Conditions poc修复flush and reload 论文 https:/…...

【环境搭建】使用IDEA远程调试Dolphinscheduler

以Dolphinscheduler-3.1.8为例&#xff0c;先把容器起了&#xff1a; $ docker pull apache/dolphinscheduler-standalone-server:3.1.8 $ docker run -d -p 12345:12345 -p 25333:25333 -p 5005:5005 -d apache/dolphinscheduler-standalone-server:3.1.8下载Dolphinschedule…...

强基计划之编程:开启科研精英培养新路径

强基计划之编程&#xff1a;开启科研精英培养新路径 一、强基计划概述 1. 出台背景 在 2003 年&#xff0c;教育部开启高校自主招生改革&#xff0c;于探索综合评价学生、破除招生“唯分数论”等方面收获一定成效。相关调查研究显示&#xff0c;自主招生所录取的学生在入校后…...

奇怪问题| Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试

Chrome 访问csdn 创作中心的时候报错&#xff1a; 服务超时,请稍后重试用无痕浏览器可以正常访问 关闭代理无效清缓存和Cookies无效。考虑无痕浏览器模式下插件不生效&#xff0c;尝试把chrome 插件也禁用&#xff0c;发现有效&#xff0c;是该扩展程序的缘故...

Spring Boot 教程之三十六:实现身份验证

如何在 Spring Boot 中实现简单的身份验证&#xff1f; 在本文中&#xff0c;我们将学习如何使用 Spring设置和配置基本身份验证。身份验证是任何类型的安全性中的主要步骤之一。Spring 提供依赖项&#xff0c;即Spring Security&#xff0c;可帮助在 API 上建立身份验证。有很…...

设计模式中单例模式中懒汉模式的问题

设计模式中单例模式中懒汉模式的问题 今天在项目中遇到了要使用懒汉模式的问题。百度之后&#xff0c;发现还有很多细节是自己之前没有见过的。于是记录一下。下面是在AI助手中的说明。 单例模式的懒汉模式&#xff08;Lazy Singleton&#xff09;是在需要时才创建实例&#…...

【唐叔学算法】第18天:解密选择排序的双重魅力-直接选择排序与堆排序的Java实现及性能剖析

引言 在数据排序的世界里&#xff0c;选择排序是一类简单而直观的算法&#xff0c;它通过不断选取未排序部分中的最小&#xff08;或最大&#xff09;元素来逐步构建有序序列。今天&#xff0c;我们将深入探讨两种基于选择思想的排序方法——直接选择排序和堆排序&#xff0c;…...

力扣48.旋转图像

文章目录 一、前言二、原地旋转 一、前言 力扣48.旋转图像 这道题要求把给定矩阵旋转90度&#xff0c;并且不允许使用额外矩阵来完成旋转图像。 于是这道题只能使用原地旋转的方法来解决 二、原地旋转 对于一个N3的矩阵来说&#xff0c;只需要两次循环就可以完成了 将A1放到…...

jdk1.8新特性、jvm内存结构、垃圾回收

一、JDK 1.8 也被称为 Java 8&#xff0c;有许多重要的新特性&#xff1a; 1、Lambda 表达式: 它允许把函数作为一个方法的参数&#xff08;函数作为值传递&#xff09;&#xff0c;可以用更紧凑的方式来表示匿名内部类了例如&#xff1a; new Thread(new Runnable() {Overr…...