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

02020401 EF Core基础01-EF Core简介和开发环境搭建、实体类、配置类、继承DbContex的类、Migration包的使用

02020401 EF Core基础01-EF Core简介和开发环境搭建、实体类、配置类、继承DbContex的类、Migration包的使用

1. EF Core简介(视频3-1)

  • 本课程需要你有数据库、SQL等基础知识。

  • 关系数据库:MySql、SQL Server、Oracle等。

    • 表(字段/列),表与表之间通过外键关联。
  • 对象数据库:只关心存什么,不关心怎么存。

    • 如MongoDB
    • 目前还是比较理论化,用的比较少。
    • 之前比较激进的数据库用MongoDB,但是效果不好。
1.1 ORM简介
  • ORM:Object Relational Mapping。让开发者用对象操作的形式操作关系数据库。
    • ORM引擎负责将对象存储到关系型数据库里面。
    • 存的是C#对象,取的也是C#对象,由ORM在C#和关系型数据库之间做双向转换。
// ORM插入伪代码
User user = new User(){Name="admin",Password="123"};
orm.Save(user);
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
// ORM查询伪代码
Book b = orm.Books.Single(b=>b.Id==3||b.Name.Contains(".NET"));
string bookName = b.Name;
string aName = a.Author.Name;
1.2 有哪些ORM
  • EF core、Dapper、SqlSugar、FreeSql等
1.3 EF Core与其他ORM比较
  • 1、Entity Framework Core(EF Core)是微软官方的ORM框架。
    • 优点:功能强大、官方支持、生产效率高、力求屏蔽底层数据库差异;
    • 缺点:复杂、上手门槛高、不熟悉EFCore的话可能会进坑。
  • 2、Dapper。是stackoverflow公司开发的。Dapper可以视为一个轻量级的ORM,或者说是增强版的SQLHelper。
    • 优点:简单,N分钟即可上手,行为可预期性强;
    • 缺点:生产效率低,需要处理底层数据库差异。
  • 3、EF Core是模型驱动(Model-Driven)的开发思想,Dapper是数据库驱动(DataBase-Driven)的开发思想的。没有优劣,只有比较。
  • 4、性能: Dapper等≠性能高;EF Core≠性能差。5、EF Core是官方推荐、推进的框架,尽量屏蔽底层数据库差异,.NET开发者必须熟悉,根据项目情况再决定用哪个。
1.4 ORM框架选择
  • 老师的建议
    • 对于后台系统、信息系统等和数据库相关开发工作量大的系统,且团队比较稳定,用EF Core;
    • 对于互联网系统等数据库相关工作量不大的系统,或者团队不稳定,用Dapper。
  • 在项目中EF Core和Dapper可以混用,只要注意EF Core的缓存、Tracking等问题即可。
1.5 EF Core与EF比较
  • 1、EF有DB First、Model First、Code First。EF Core不支持模型优先,推荐使用代码优先,遗留系统可以使用Scaffold-DbContext来生成代码实现类似DBFirst的效果,但是推荐用Code First 。
  • 2、EF会对实体上的标注做校验,EF Core追求轻量化,不校验。
  • 3、熟悉EF的话,掌握EFCore会很容易,很多用法都移植过来了。EF Core又增加了很多新东西。
  • 4、EF中的一些类的命名空间以及一些方法的名字在EF Core中稍有不同。
  • 5、EF不再做新特性增加。

2. 搭建EF Core开发环境(视频3-2)

2.1 用什么数据库
  • 1、EF Core是对于底层ADO.NET Core的封装,因此ADO.NET Core支持的数据库不一定被EF Core支持。
    • 数据库要支持EF Core。这个数据库只有ADO.NET Core支持是不够的,数据库还要支持EF Core Provider。
  • 2、EF Core支持所有主流的数据库,包括MS SQL Server、Oracle、MySQL、PostgreSQL、SQLite等。可以自己实现Provider支持其他数据库。国产数据库支持问题。
    • Pomelo.EntityFrameworkCore.Mysql,开源的MySQL EF Provider。如果用MySQL,推荐用这个开源的。
  • 3、对于SQLServer支持最完美, MySQL、PostgreSQL也不错(有能解决的小坑)。这三者是.NET圈中用的最多的三个。本课程主要用SQLServer讲,如果用其他数据库只要改一行代码+绕一些小坑即可,大部分代码用法不变。EF Core能尽量屏蔽底层数据库差异。
2.2 开发环境搭建
  • 经典步骤:建实体类;建配置类;建DbContext;生成数据库;编写调用EF Core的业务代码。
// 新建实体类:Book.cs
using System;namespace EFCoreDemo
{public class Book{public long Id { get; set; } //主键,EFCore会自动将long映射为数据库中的类型public string Title { get; set; }//标题,EFCore会自动将long映射为数据库中的类型public DateTime PubTime { get; set; }//发布日期,EFCore会自动将long映射为数据库中的类型public double Price { get; set; }//单价,EFCore会自动将long映射为数据库中的类型}
}}
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
// 新建实体类:Person.cs
namespace EFCoreDemo
{public class Person{public long Id { get; set; }public long Name { get; set; }public long Age { get; set; }}
}
2.3 安装依赖包
  • 安装包:Install-Package Microsoft.EntityFrameworkCore.SqlServer
    • 这个包依赖于EF Core的包,因此安装这个包的时候会自动安装EF Core包。
    • 注意:Microsoft.EntityFrameworkCore.SqlServer 9.0.9 与 net5.0 (.NETCoreApp,Version=v5.0) 不兼容,这里采用5.0.4版本。
// 程序包管理器控制台:
install-package microsoft.entityframeworkcore.sqlserver -version 5.0.4
2.4 创建配置类
  • 创建实现了IEntityTypeConfiguration接口的实体配置类,配置实体类和数据库表的对应关系。
// 新建与Book类相关的配置类BookEntityConfig
class BookEntityConfig : IEntityTypeConfiguration<Book> // 泛型接口,这个Book表示是与哪个实体类配置。
{public void Configure(EntityTypeBuilder<Book> builder){builder.ToTable("T_Books");}
}
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
// 新建与Person类相关的配置类PersonConfig
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;namespace EFCoreDemo
{class PersonConfig : IEntityTypeConfiguration<Person>{public void Configure(EntityTypeBuilder<Person> builder){builder.ToTable("T_Persons");}}
}说明:如果实体类不加配置类,那么任然会生成表,表名默认为实体类名+s,而不是T_实体类s的形式。
2.5 创建继承自DbContext的类
// 创建继承自DbContext的类
class TestDbContext:DbContext
{public DbSet<Book> Books { get; set; } // @1protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){string connStr = "Server=.;Database=CoreDataDB;Trusted_Connection=True;MultipleActiveResultSets=true";optionsBuilder.UseSqlServer(connStr); // @2}protected override void OnModelCreating(ModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly); // @3}
}说明:
1. 在@1.1处,泛型类型与实体类Book关联,属性用Book类的复数形式。在@1.2处泛型类型与实体类Person关联,属性用Person类的复数形式。
2. 在@2处,指定连接哪个数据库
3. 在@3处,指定配置类在哪,即BookConfig和PersonConfig这两个配置类在哪。
3.1 this表示当前程序集。
3.2 ApplyConfigurationsFromAssembly方法会加载当前程序集所有实现了IEntityTypeConfiguration<Book>接口的实现类。本例有两个,即BookConfig和PersonConfig两个配置类。
2.6 Migration数据库迁移概述
  • 面向对象的ORM开发中,数据库不是程序员手动创建的,而是由Migration工具生成的。
    • 关系数据库只是盛放模型数据的一个媒介而已,理想状态下,程序员不用关心数据库的操作。
    • 根据对象的定义变化,自动更新数据库中的表以及表结构的操作,叫做Migration(迁移)。
    • 迁移可以分为多步(项目进化),也可以回滚。
  • 传统的数据库驱动的开发模式里面,数据表是程序员自己在SSMS里面创建的。
    • 而在ORM框架中,数据库是由工具通过实例类来创建的,不需要程序员干预。
2.7 开发环境安装Migration包
  • 为了使用生成数据库的工具,Nuget安装Microsoft.EntityFrameworkCore.Tools,否则执行Add-Migration等命令会如下报错
  • 安装包:install-package microsoft.entityframeworkcore.tools -version 5.0.4
图片链接丢失
2.8 开发环境使用Migration步骤
  • 在“程序包管理器控制台”中执行如下命令Add-Migration InitialCreate会自动在项目的Migrations文件夹中中生成操作数据库的C#代码。

    • 新增一个表,在表里增加或者删除一个列。这里面每一次操作都是一次Migration。
    • 为了区分不同的Migration,我们需要给它取不同的名字。需要再Add-Migration后添加合法的变量名称。
  • step1 查看当前项目资源管理器目录

图片链接丢失
  • step2 在程序包管理器控制台执行:Add-Migration Init
图片链接丢失
// 在程序包管理器中执行与结果反馈
PM> Add-Migration Init
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
PM> 
  • step3 当前项目资源管理器目录会自动增加一个文件夹
    • 注意此时通过SSMS查看数据表是没有的。
图片链接丢失
  • step4 在程序包管理器控制台执行:update-database
PM> update-database
Build started...
Build succeeded.
Applying migration '20250918125952_Init'.
Done.
PM> 说明:执行update-database会编译项目,如果项目其它与数据库不相关的代码有错误,编译不通过的话,那么创建数据表也会失败。
  • step5 查看SSMS中数据表
图片链接丢失
  • T_Books和T_Persons表已经建好了。注意T_Configs是之前项目的表,并非此次创建的。
2.9 修改T_Persons表
  • step1 修改Person类,增加或添加属性。
// 修改Person.cs类
namespace EFCoreDemo
{public class Person{public long Id { get; set; }public long Name { get; set; }public long Age { get; set; }public string BirthPlace { get; set; } // 新增属性}
}
  • step2 执行Add-Migration,并带一个新名字
PM> add-migration addbirth
Build started...
Build succeeded.
To undo this action, use Remove-Migration.
PM> 说明:addbirth为取的新名字。
  • step3 在解决方案资源管理器会增加xxx.addbirth.cs项
图片链接丢失
  • 关注数字的编号,有当前日期20250918和125952组成一个。由20250918134209组成另一个。

    • 134209大于125952,因此134209表示最新。
  • step4 在程序包管理器控制台执行:update-database

PM> update-database
Build started...
Build succeeded.
Applying migration '20250918132409_addbirth'.
Done.
PM> 
  • step5 查看SSMS,T_Persons表新增了一行。
图片链接丢失
2.10 修改表结构
1、项目开发中,根据需要,可能会在已有实体中修改、新增、删除表、列等。
2、想要限制Title的最大长度为50,Title字段设置为“不可为空”,并且想增加一个不可为空且最大长度为20的AuthorName(作者名字)属性。
首先在Book实体类中增加一个AuthorName属性
3、修改BookEntityConfig 
builder.ToTable("T_Books");
builder.Property(e => e.Title).HasMaxLength(50).IsRequired();
builder.Property(e => e.AuthorName).HasMaxLength(20).IsRequired();
4、执行Add-Migration AddAuthorName_ModifyTitle。取名字有意义
5、Update-Database
  • step1 → 修改项目中相关代码
// 1. 修改Book.cs中的实体类,增加AuthorNmae属性
using System;namespace EFCoreDemo
{public class Book{public long Id { get; set; } //主键public string Title { get; set; }//标题public DateTime PubTime { get; set; }//发布日期public double Price { get; set; }// 价格public string AuthorName { get; set; } // 新建属性(对应数据表中的行)}
}
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
// 2. 修改BooConfig.cs中的实体类
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace EFCoreDemo
{class BookEntityConfig : IEntityTypeConfiguration<Book> // 泛型接口,这个Book表示是与哪个实体类配置。{public void Configure(EntityTypeBuilder<Book> builder){builder.ToTable("T_Books"); // T_Books表与Book实体类相对应builder.Property(e => e.Title).HasMaxLength(50).IsRequired(); // @1builder.Property(e => e.AuthorName).HasMaxLength(20).IsRequired(); // @2}}
}说明:
1. 在@1处,HashMaxLength(50)表示最大长度为50。IsRequired()表示不可为空。
2. 在@2处,也表示最大长度为50,不可为空。
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
namespace EFCoreDemo
{public class Person{public long Id { get; set; }public long Name { get; set; }public int Age { get; set; } // 修改Age为int类型public string BirthPlace { get; set; } // 新增属性public double? Salary { get; set; } // 可为空的double类型}
}
  • step2 → 执行add-migration和update-database
PM> add-migration v1
Build started...
Build succeeded.
An operation was scaffolded that may result in the loss of data. Please review the migration for accuracy. // @3
To undo this action, use Remove-Migration.
PM> update-database
Build started...
Build succeeded.
Applying migration '20250918134652_v1'.
Done.
PM> 说明:因为在@1处修改了Title的长度,那么可能存在数据丢失或者被截断。因此在@3处提示了警告。
  • step3 → 查看SSMS
图片链接丢失

3. 总结

图片链接丢失

结尾

书籍:ASP.NET Core技术内幕与项目实战

视频:https://www.bilibili.com/video/BV1pK41137He

著:杨中科

ISBN:978-7-115-58657-5

版次:第1版

发行:人民邮电出版社

※敬请购买正版书籍,侵删请联系85863947@qq.com※

※本文章为看书或查阅资料而总结的笔记,仅供参考,如有错误请留言指正,谢谢!※

相关文章:

02020401 EF Core基础01-EF Core简介和开发环境搭建、实体类、配置类、继承DbContex的类、Migration包的使用

02020401 EF Core基础01-EF Core简介和开发环境搭建、实体类、配置类、继承DbContex的类、Migration包的使用 1. EF Core简介(视频3-1)本课程需要你有数据库、SQL等基础知识。关系数据库:MySql、SQL Server、Oracle等。表(字段/列),表与表之间通过外键关联。对象数据库:…...

专用通路方式

-取址周期 1.从pc取址到mar (pc)->mar 此时c0有效 2.把刚才的值交给内存 (mar)->内存 c1 3.让内存读取mar中保存的值 1->r 4.让mdr获取内存刚刚读取的mar中保存的代码值 MEM(MAR)->MDR C2 5.再让IR(指令寄存器)获取MDR中的值 (MDR)->IR C3 6.(PC)+1=PC 7.最…...

typeof()

C# 中的 typeof() 是啥?一句话讲清楚:typeof() 就是“问编译器:这个类型长啥样?”它不是运行时去查对象,而是编译时就确定你写的那个“类名、接口名、结构名”到底是谁,然后返回一个叫 Type 的对象,这个对象里装满了这个类型的“身份证信息”。举个接地气的例子: 你写:…...

【未完成】2025.9 做题记录

CF1310C CF616F CF1065G CF1536F. Omkar and Akmar *2600 题意 Alice 和 Bob 在一个 \(n\) 个格子的环上玩游戏,环上的格子编号为 \(1\sim n\)。 每一轮中,玩家可选择一个空格子填入字母 A 或 B,同时要求不能存在两个相邻的格子内的字母相同。若没有合法操作,则游戏结束,当…...

2025.8 做题记录

P4064 [JXOI2017] 加法 蓝 题意 可怜有一个长度为 \(n\) 的正整数序列 \(A\),但是她觉得 \(A\) 中的数字太小了,这让她很不开心。 于是她选择了 \(m\) 个区间 \([l_i,r_i]\) 和两个正整数 \(a,k\)。她打算从这 \(m\) 个区间里选出恰好 \(k\) 个区间,并对每个区间执行一次区间…...

关于 “Thinking Machines Lab首次发长文” 的一些知识的学习和补充

1. 前言砚上三五笔,落墨鹧鸪啼原文链接: https://thinkingmachines.ai/ 相关分析链接:https://www.gongjiyun.com/blog/2025/9/fu1xw1spci9vnokjipecs9y9nzn/最近看到一篇名为《击败 LLM 推理中的非确定性:从“玄学”到可控》的文章,这里将一些知识盲区简单记录下。 如有不…...

CF1630F 题解 | 网络流

传送门 题意 给你一个长度为 \(n\) 的序列 \(a\),构建一个无向图:若 \(a_i | a_j\),则在 \(i\) 和 \(j\) 中连边。 求最少删除多少个点,才能使得剩下的图是二分图。 思路 首先,我们知道倍数关系是一个偏序关系,即 \(a_i | a_j, a_j | a_k \rightarrow a_i | a_k\)。 所以…...

攻防世界-secret-galaxy-300 - xxx

先查壳,无壳,32位程序先运行一下这个exe程序,发现闪一下就消失了,也没有什么提示字符串可查看。打算先去od里面运行看看 打开后没看到什么,查看字符串一时间也没看出什么,不过这个task函数倒是让控制台输出一堆奇怪的东西说实话看了之后有点懵,不过没关系,既然OD没什么…...

实用指南:LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)

实用指南:LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier …...

数据库

数据库操作DDL 创建 create database 数据库名查询 show databases ; show database like 数据库名;修改 alter database 数据库名 set 字段名 类型 约束;删除 drop database 数据库名;使用 use 数据库名;数据库表操作DDL 创建 create table 表名(字段 类型 索引);查看表…...

代码随想录算法训练营第二天 | leetcode 209

长度最小的子数组(没做出来) 题目要求:寻找一个数组中满足大于等于目标要求的最小子数组 解题思路:返回结果可能是不存在,所以需要定义一个合适的初始值,可以使用java的最大数Integer.MAX_VALUE,然后使用滑动窗口寻找满足条件的子数组,这时还需要对之前的数进行减去,避…...

mpv硬件解码

mpv --hwdec=yes --vo=vappi 3e559881c836c30321894b20ae102c4e.mp4...

2025.9.78——卷6-8选择

卷6选择 大O表示法 大O表示法由​​德国数学家保罗巴赫曼(Paul Bachman)提出,用于表示算法的最坏情况下时间复杂度 Θ表示法 Θ表示法通常归功于​​计算机科学家Donald Knuth​​等人,用于描述算法的平均时间复杂度 ST表 预处理时间复杂度O(NlogN),查询O(logN) AVL树 一种…...

关于pytorch的读书报告

PyTorch 读书报告 一、引言 PyTorch 是由 Facebook(现 Meta)人工智能研究实验室开发的一款开源机器学习框架,自 2016 年推出以来,凭借其动态计算图特性、简洁直观的 API 设计以及强大的生态系统,迅速成为学术界和工业界深度学习研究与应用的主流工具之一。本报告将围绕 Py…...

Emacs 折腾日记(三十)——打造C++ IDE 续

上一篇博客中,我完成了C++ IDE初步工作,包括代码的高亮、折叠、跳转以及补全等工作。但是作为IDE来说功能还有点不够,就我个人而言作为IDE来说它还需要具备一键编译运行和调试功能。这篇文章就来记录我是如何实现上述功能的 编译运行 我使用的演示项目比较简单,它的文件结构…...

数据结构 项目一

一:数据结构的基本概念 数据结构----研究数据的特性及数据之间存在的关系 算法+数据结构=程序。其中数据结构是指数据逻辑结构和物理结构,算法是对数据运算的描述。 用计算机解决一个具体问题时,首先从具体问题中抽象出一个适当的数学模型,然后设计一个能解此数学模型的算法…...

好烦

我不行了,一做初赛题就有一种莫名其妙的烦躁,根本就写不进去,一点都冷静不下来...

【STL库】哈希封装 unordered_map/unordered_set - 教程

【STL库】哈希封装 unordered_map/unordered_set - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…...

用 Go 语言与 Tesseract OCR 识别英文数字验证码

一、安装与配置 安装 Tesseract OCR 你需要先安装 Tesseract OCR 引擎。具体步骤如下: Ubuntu: 更多内容访问ttocr.com或联系1436423940 sudo apt-get update sudo apt-get install tesseract-ocr macOS: brew install tesseract Windows: 可以从 Tesseract GitHub 下载并安装…...

FreeRTOS和LVGL组合使用教程

前言 关于这两者组合使用的教程,网上可以说是各种方法都有,移植的时候我也有遇到各种问题,在此处记录一下解决过程 问题 栈空间的分配问题 FreeRTOS和LVGL的栈分配都尽量多一点,不然后面的任务可能创建失败 lvgl心跳的问题 网上也有很多方法FreeRTOS钩子函数 单开一个定时器…...

Pip换源

清华大学源 比较全,但是没有torch pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple南京大学源 有torch但是很多包没有,建议用来安装torch pip3 install torch torchvision torchaudio --index-url https://mirrors.nju.edu.cn/pytorch…...

7zip压缩解压缩-测试CPU性能

前言全局说明在B站刷大佬视频的时候,看到UP在Debign linux 上用7z测试CPU性能,惊讶,7z还有这功能。 赶快打开手边的电脑,看看 Windows 上的 7z 有没有这功能,一用,果然有这个功能。 以前想知道CPU性能就只能装些 XX大师,现在有了这个小巧的工具,知道参考数值就很方便了…...

高数

1 求 \(\lim_{n\to\infty}\left(1-\frac 1n\right)^{n^2}\) 解: 首先证明 \(\lim_{n\to\infty}\left(1-\frac 1n\right)^{n}=e^{-1}\)。 \[\begin{align*} \lim_{n\to\infty}\left(1-\frac 1n\right)^{n} &=\lim_{n\to\infty}\left[\left(1-\frac 1n\right)^{(n-1)}\right…...

P5666 [CSP-S2019] 树的重心

分为 \(x \ne rt\) 和 \(x = rt\) 两种情况计算. 对于第一种情况,不难发现我们合法的裁减下来的连通块大小是在一个区间范围之内的,于是 DFS 时用一棵树状数组修改即可(因为这个大小可能是子树大小可能是子树外大小,这取决于你一条祖先链有哪些点),但子树内的 siz 可能会被记入…...

Java运行机制

Java 程序运行机制 编译型(compile) 解释型 程序运行机制 ![机制图](C:\Users\asus\Desktop\图集\屏幕截图 2025-09-18 204707.png)...

除自身以外数组的乘积-leetcode

题目描述 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度内完成此题。 示例 1: …...

【2022】SDRZ夏令营游记

为什么2022的游记会在2025年发? 因为感觉洛谷博客快扛不住了,决定开始搬运。今天是夏令营最后一天了,在机房里坐不住了,写篇游记来纪念一下。 day0: 这天是gryz65级三个校区的信竞同学第一次大会师。我成功与一区同学面基,线下见面和在网络上的印象完全不一样(《关于why…...

[论文笔记/评估方法] RELIABLE AND DIVERSE EVALUATION OF LLM MEDICAL KNOWLEDGE MASTERY

RELIABLE AND DIVERSE EVALUATION OF LLM MEDICAL KNOWLEDGE MASTERY该文章于2025年发表在ICLR(CCF A),早在2024年9月发布在arxiv。 文章地址:Reliable and Diverse Evaluation of LLM Medical Knowledge Mastery arXiv:[2409.14302] Reliable and diverse evaluation of …...

本地VMware Workstation Pro的rhel-server-7.9-x86_64服务器配置本地源

1. 安装好VMware Workstation Pro以及rhel-server-7.9-x86_64-dvd.iso后 2. 先对VMware Workstation 进行虚拟机关机 3. 对虚拟机的CD/DVD(SATA) 勾选设备状态为启动时连接,以及连接中勾选使用ISO镜像文件,为本地的rhel-server-7.9-x86_64-dvd.iso路径 4. 接下来就按如下操作…...

2025年十大AI网站构建工具:专家评测与推荐!

2025年,软件开发领域迎来一个关键转折点。随着 AI 技术的飞速发展,传统的网站或应用构建障碍正逐渐消失。市场上涌现出大量功能强大的工具,每一个都号称是您所需要的最佳 AI网站构建器 或 网站生成器。 然而,对于开发者、创业者乃至普通初学者而言,面对如此多的选择可能会…...

扫描线乱谈

扫描线乱谈前置知识 离散化,线段树 扫描线 首先假设你有n个矩形。如果直接暴力求解这些矩形的覆盖面积肯定不行,这时就要用扫描线算法。 假设有一根线,从下往上扫描:把每个小矩形分成很多不同的块,高是扫过的距离,那个位置没有被覆盖高就是0。显然答案就是高宽的和。 每次…...

详细介绍:量子计算学习(第十四周周报)

详细介绍:量子计算学习(第十四周周报)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !import…...

视频播放时切出页面视频暂停(亲测可用)

视频播放时切出页面视频暂停(亲测可用)谷歌浏览器方法:视频播放网页,右键—检查—Elements—Event Listeners—找到blur,点开小三角,remove掉所有子元素...

VulkanAPI细节梳理1

1. PSOPipeline State Object,管线状态对象)? PSO 是 Vulkan 的核心概念之一,它是一个包含了渲染所需几乎所有状态的、不可变的对象。你可以把它想象成一台高度可配置的工业机器(GPU)的完整配置方案。在传统 API(如 OpenGL)中,你可以在运行时动态地、单独地修改各种状…...

cf773

D. Perishable Roads 题意: 有一个 \(n\) 个点的图,对于每两个点 \((i,j)\) 之间都有一条长度为 \(w_{i,j}\) 的无向边。 给你一个点 \(t\),你需要构造一棵以 \(t\) 为根的生成树,使得 \(\sum_{i=1}^n s(i,t)\) 尽量小。\(s(i,t)\) 为 \(i\sim t\) 的树上路径上的最小权值。…...

(简记)一类区间覆盖问题 珂朵莉树 ODT

简介与实现方法 该结构是通过 STL set 来维护存储相同颜色(相同值)连续段的暴力数据结构,需要在 set 中存储若干个三元组 \((l,r,k)\) 表示 \([l,r]\) 的所有颜色(值)都是 \(k\)。 它的使用条件是数据随机。我们把区间覆盖或群体赋值称为区间推平操作,如果该操作较多单一…...

5 事务隔离级别与锁机制

事务是由一组SQL语句组成的逻辑处理单元, 事务具有ACID 属性。原子性(Atomicity) :事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent) :在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规 则都必须应用于事务的修…...

我向编程世界宣布的第一声

Hello World随便新建一个文件夹,,存放代码 新建一个java文件文件后缀名为.java Hello.java 【注意点】系统可能没有显示文件后缀名,我们需要手动打开3.编写代码 public class Hello{public static void main(String[] args){System.out.print("Hello,World!");} }…...

意大利 公证 海牙认证速度 单号 双号

支付宝小程序 领事服务中心 那里(对应北京的领事) 比较慢,审核要一周,邮寄过去再寄回来又要一周。总共两周。可以接受单号 微信 山东外事 小程序 (对应济南的领事,只接受山东内的公证)审核很快,一天就审核通过,然后,邮寄过去再寄回来要一周。总共一周就行。必须要双号…...

Linux命令学习笔记

cd命令 1.切换上级目录 cd ..2.切换到当前用户主目录 cd ~ 3.切换上两级目录 cd ../..4.进入当前目录 cd . cat命令 1.查看文件 cat test.txt 2.查看文件并展示行号空行展示 cat -n test.txt 3.查看文件并展示行号,空行不转式 cat -b test.txt 4.查看多个文件 cat test.txt…...

网络安全需要真正的承诺而非表面功夫

本文探讨企业网络安全的核心问题——真正的组织承诺。作者指出许多企业仅采取半吊子安全措施,强调网络安全需要从企业文化到软件开发方式的全面变革,而非依赖外部工具或培训。文章分析了安全厂商解决方案的局限性,并提出改变游戏规则的思考方向。在我上一篇文章中,我谈到我…...

想成为AI绘画高手?打造独一无二的视觉IP!Seedream 4.0 使用指南详解,创意无界,效率翻倍!

想成为AI绘画高手?打造独一无二的视觉IP!Seedream 4.0 使用指南详解,创意无界,效率翻倍!想成为AI绘画高手?打造独一无二的视觉IP!Seedream 4.0 使用指南详解,创意无界,效率翻倍! AI-Compass 致力于构建最全面、最实用、最前沿的AI技术学习和实践生态,通过六大核心模…...

完整教程:液氮低温恒温器的应用领域

完整教程:液氮低温恒温器的应用领域pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", monospace !important;…...

轮转数组-leetcode

题目描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4]示例 2: 输…...

CF1864G Magic Square

题面:(粘自洛谷) CF1864G Magic Square 题目描述 Aquamoon 有一个魔方,可以看作一个 \(n \times n\) 矩阵,矩阵的元素构成数字的排列 $1, \ldots, n^2 $ 。 Aquamoon 可以对矩阵执行两种操作:行移位,即将矩阵的整行向右移动几个位置(至少 $ 1 $ 且最多 $ n-1 $ )。 超出…...

OI TRICKS

位运算 每一位是独立的,可以拆开处理 \(a, b \in \{0, 1\}\),则xor and or\(a \oplus 1 = 1- a\) \(a \ \text{and} \ 0 = 0\) \(a \ \text{or} \ 1 = 1\)\(a \oplus 0 = a\) \(a \ \text{and} \ 1 = a\) \(a \ \text{or} \ 0 = a\)$a \oplus b = a + b - 2ab $ \(a \ \t…...

day37大模型程序开发-GraphRAG理论

RAG基本回顾实现流程准备原始的知识库(一个一个的文件组成) 将知识库文件内容进行读取(完整的字符串) 分块处理(新知识库:一段一段的文本字符串组成) 向量转换:将每一段文本chunk转换成向量(向量模型) 将向量数据存储到向量数据库 接受用户的提问,将用户提问转换成向…...

G

int a[1000001]; int top=-1;//栈为空 void push(int num) { a[++top]=num; } void pop() { printf("%d ", a[top--]); }//减1出栈 int main() { int n, i; int b[1000001]={0}; int c[1000001]={0}; scanf("%d", &n); for(i=0;i<n;i++)scanf("…...

AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLAM1具身机器人

AI Compass前沿速览:Nano Bananary、MCP Registry、通义DeepResearch 、VoxCPM、InternVLAM1具身机器人AI Compass前沿速览: AI-Compass 致力于构建最全面、最实用、最前沿的AI技术学习和实践生态,通过六大核心模块的系统化组织,为不同层次的学习者和开发者提供从完整学习路…...

day3536大模型应用开发-模型微调框架

为什么需要微调? 在开始学习微调之前,大家首先还是要搞清楚为什么要微调?在什么情况下需要微调?让模型更懂“专业话”:通用模型就像一个“万事通”,它学过很多东西,但对一些特别专业的领域(比如医学、法律、金融)可能不会特别精通。通过微调,我们可以给模型“补课”,…...