【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列
文章目录
- 一、跨库方式1:跨库导航
- 二、手动跨库查询
- 三、同服务器:自动查询跨库查询
- 3.1 Mysql和SqlServer自动
- 3.2 自动: PgSql跨Scheme查询
- 3.3 其他库同服务器
- 四、跨服务器:自动跨库查询
- 4.1 配置SqlServer dblink
- 4.2 配置 Oracle dblink
- 4.3 配置 PgSql Pwd外部表
- 4.4 其他跨服务器联表
- 五、跨库子查询
- 5.1 用ThenMapper实现
- 5.2 Subqueryable
- 5.3 嵌套查询或者Unionall
- 六、.NET开源 ORM 框架 SqlSugar 系列🪭🪭🪭
一、跨库方式1:跨库导航
最低版本支持:(5.1.3.24)
- ✅优点1:支持跨服务器,支持跨数据库品种, 支持任何类型数据库
- ✅优点2: 超级强大的性能,能达到本库联表性能
- 🚫缺点:
不支持
子表过滤主表 (方案有ToList
后在内存过滤, 如果分页可以查前1000条
主表在内存分页 前端只显示前10页
)
[Tenant("db2")] //实体标为db2
public class OrderItem{[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int ItemId { get; set; }public int OrderId { get; set; }public decimal? Price { get; set; }[SqlSugar.SugarColumn(IsNullable = true)]public DateTime? CreateTime { get; set; }[Navigate(NavigateType.OneToOne,nameof(OrderId))] //设置关系 对应Order表主键public Order Order { get; set; }}
[Tenant("db1")] //实体标为db1
public class Order{[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]public int Id { get; set; }public string Name { get; set; }public decimal Price { get; set; }[SugarColumn(IsNullable = true)]public DateTime CreateTime { get; set; }[SugarColumn(IsNullable = true)]public int CustomId { get; set; }[Navigate(NavigateType.OneToMany, nameof(OrderItem.OrderId))]//public List<OrderItem> Items { get; set; }}//通过ConfigId进行区分是哪个库
var db = new SqlSugarClient(new List<ConnectionConfig>()
{new ConnectionConfig(){ConfigId="db1",DbType=DbType.Sqlite,ConnectionString="DataSource=/Db_OrderDb.sqlite",IsAutoCloseConnection=true},new ConnectionConfig(){ConfigId="db2",DbType=DbType.Sqlite,ConnectionString="DataSource=/Db_OrderItemDb.sqlite",IsAutoCloseConnection=true }
});//注意:如果是接口需要
//db.AsTenant().QueryableWithAttr<OrderItem>()//通过实体类特性Tenant自动映射不同数据库进行查询
var list=db.QueryableWithAttr<OrderItem>()
.Includes(z => z.Order)
.ToList(); //1行代码就搞定了2个库联表查询//不通过特性实现跨库导航
var list =db.GetConnection("db1").Queryable<OrderItem>()//Orderitem是db1.CrossQuery(typeof(Order), "db2")//Order是db2.Includes(z => z.Order).ToList();
如果想详细了解,请移步 详细教程 (5.1.3.25)
二、手动跨库查询
-
✅优点:联表语法100%可以用
-
🚫缺点:只支持个别数据库,并且跨服务器比较麻烦需要配置dblink
大多数的数据库支持下面的写法,我们可以通过 As
指定是哪个库, 查询的时候用别名
🎯注意:不同数据库写法有区别 下面是 SqlServer
例子 : 库名 .dbo.表名
//单表跨库
var list=db.Queryable<Order>().AS("xx.dbo.Order2019").ToList();//SqlServer (跨库用dblink)
var list1 = db.Queryable<Order>() //主表用当前db就行了.LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId,"yy.dbo.OrderItem") .LeftJoin<Custom>((o, i, c) => c.Id == o.CustomId,"zz.dbo.Custom") .Where((o,i,c)=> o.TypeId==1).Select((o,i,c)=>new classA() { oid=o.Id , iname=i.Name }).ToList();//MySql (只能同服务器)
var list1 = db.Queryable<Order>(). //如果跨服务器需要配置dblink,语法上每种数据库有点小差异.LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId,"yy.OrderItem") .LeftJoin<Custom>((o, i, c) => c.Id == o.CustomId,"zz.Custom") .Where((o,i,c)=> o.TypeId==1).Select((o,i,c)=>new classA() { oid=o.Id , iname=i.Name }).ToList(); //Oracle
var list1 = db.Queryable<Order>() .LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId,"\"ORDERITEM\"@dblink_name") .LeftJoin<Custom>((o, i, c) => c.Id == o.CustomId,"\"CUSTEM\"@dblink_name") .Where((o,i,c)=> o.TypeId==1).Select((o,i,c)=>new classA() { oid=o.Id , iname=i.Name }).ToList(); //其他库同理//老版本:多表跨库
var list1 = db.Queryable<Order>().AS("xx.dbo.order") // AS("").LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId).AS<OrderItem>("yy.dbo.OrderItem") //AS<T>.LeftJoin<Custom>((o, i, c) => c.Id == o.CustomId) .AS<Custom>("zz.dbo.Custom")//AS<T>.Select((o,i,c)=>new classA() { oid=o.Id , iname=i.Name }).ToList();//获取表名可以减少字符串操作var tableName=db.EntityMaintenance.GetTableName<T>() //如果有2个AS<T>是相同我们可以这么写.LeftJoin(db.Queryable<T>().AS("xx.dbo.zzzz"),(o,i)=>o.id==i.id)
请升级到5.1.4.86-preview01+
三、同服务器:自动查询跨库查询
3.1 Mysql和SqlServer自动
🎯注意:
- 只支持
MySql
和SqlServer
同服务器并且是同一种类型的库(你有办法支持其他库可以反馈给我) - 查询用的是
QueryableWithAttr
不是Queryable
//声名SqlSugar对象
var db = new SqlSugarClient(new List<ConnectionConfig>()
{new ConnectionConfig(){ConfigId="A",DbType=DbType.SqlServer,ConnectionString=..,IsAutoCloseConnection=true},new ConnectionConfig(){ConfigId="B",DbType=DbType.MySql,ConnectionString=..,IsAutoCloseConnection=true },new ConnectionConfig(){ConfigId="C",DbType=DbType.MySql,ConnectionString=..,IsAutoCloseConnection=true }
});//实体配置是哪个库
[Tenant("A")] //实体标为A表示是A库
public class OrderItem
[Tenant("B")] //实体标为B表示是B库
public class Order//联表查询要5.1.4.66+才支持
var list = db.QueryableWithAttr<Order>() //根根据ConfigId自动实现跨库.LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId) .LeftJoin<Custom>((o, i, c) => c.Id == o.CustomId) .Where((o,i,c)=> o.TypeId==1).Select((o,i,c)=>new classA() { oid=o.Id , iname=i.Name }).ToList();//ISqlSugarClient需要转一下租户接口,才能用租户方法
var list =db.AsTenant().QueryableWithAttr<Order>()....
3.2 自动: PgSql跨Scheme查询
var db = new SqlSugarClient(new List<ConnectionConfig>()
{new ConnectionConfig(){ConfigId="A",DbType=DbType.PostgreSQL,ConnectionString="..",IsAutoCloseConnection=true},new ConnectionConfig(){ConfigId="B",DbType=DbType.PostgreSQL,DbLinkName="public",//重点ConnectionString=".....;searchpath=public"//重点 ,IsAutoCloseConnection=true },
});
var x3 = db.QueryableWithAttr<OptRole>().LeftJoin<Role>((x1, y1) => x1.roleId == y1.id)//Left Join时会加上public..ToList();//ISqlSugarClient需要转一下租户接口,才能用租户方法
var list =db.AsTenant().QueryableWithAttr<Order>()....
3.3 其他库同服务器
🕹️找库规则3种:
- SqlServer:
库名.dbo.表名
- PgSql或者同类库:有配置
DbLinkName
和searchpath : DbLinkName.表名
- 其他库:
库名.表名
用法就上面3种用法,如果发现哪个数据库不支持可以和我反馈。
四、跨服务器:自动跨库查询
除了 sqlite
,其他的应该都支持 dblink
配置,只要能配置 dblink
就能跨库查询,也支持同服务器跨库。
4.1 配置SqlServer dblink
请升级5.1.4.72-preview02+
var db = new SqlSugarClient(new List<ConnectionConfig>()
{new ConnectionConfig(){ConfigId="A",DbType=DbType.SqlServer,ConnectionString=..,IsAutoCloseConnection=true },new ConnectionConfig(){ConfigId="B",DbType=DbType.SqlServer,//有些用户可以用IP跨库//DbLinkName="[192.168.1.110].db240425.dbo."DbLinkName="db1.ecology2013_SHQC2.dbo",//IP不能连在配置DbLinkConnectionString="..",IsAutoCloseConnection=true }
});
//实体配置是哪个库
[Tenant("B")] //实体标为A表示是A库
public class OrderItem//联表查询要5.1.4.66+才支持
var list1 = db.QueryableWithAttr<Order>() //根根据ConfigId自动实现跨库.LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId) .ToList();
//生成Sql
//Left join db1.ecology2013_SHQC2.dbo.OrderItem
下面是 SqlServer
的例子
- ✅ 可以企业管理器里添加
linkserver
实现。 - ✅ 使用
sp_addlinkedserver
创建一个链接的服务器,使其允许对分布式的、针对OLEDB
数据源的异类查询进行访问。 - ✅ 在使用
sp_addlinkedserver
创建链接的服务器之后,此服务器就可以执行分布式查询。
🎢 步骤:
- 创建
linkserver
EXEC sp_addlinkedserver@server='DB1',--被访问的服务器别名@srvproduct='', --sqlserver不需要指定@provider='SQLOLEDB',5@datasrc='192.168.1.102' --要访问的服务器
- 登录链接服务器
EXEC sp_addlinkedsrvlogin 'DB1', --被访问的服务器别名'false', --useselfNULL, --locallogin'sa', --帐号 '123456' --密码
4.2 配置 Oracle dblink
请升级到5.1.4.86-preview02+
var db = new SqlSugarClient(new List<ConnectionConfig>()
{new ConnectionConfig(){ConfigId="A",DbType=DbType.SqlServer,ConnectionString=..,IsAutoCloseConnection=true },new ConnectionConfig(){ConfigId="B",DbType=DbType.SqlServer,DbLinkName="@dblink_name",//配置dblink名字要@开头ConnectionString=..,IsAutoCloseConnection=true }
});
//实体配置是哪个库
[Tenant("B")] //实体标为A表示是A库
public class OrderItem//联表查询要5.1.4.66+才支持
var list1 = db.QueryableWithAttr<Order>() //根根据ConfigId自动实现跨库.LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId) .ToList();
//生成Sql
//Left join OrderItem@dblink_name
下面是 Oracle
的例子
CREATE DATABASE LINK dblink_name
CONNECT TO target_usernameIDENTIFIED BY target_passwordUSING'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=target_host)(PORT=target_port))(CONNECT_DATA=(SERVICE_NAME=target_service_name)))';
4.3 配置 PgSql Pwd外部表
请升级到 5.1.4.86-preview02+
var db = new SqlSugarClient(new List<ConnectionConfig>()
{new ConnectionConfig(){ConfigId="A",DbType=DbType.SqlServer,ConnectionString=..,IsAutoCloseConnection=true },new ConnectionConfig(){ConfigId="B",DbType=DbType.SqlServer,DbLinkName="remote_",//命名要以_结尾ConnectionString=..,IsAutoCloseConnection=true }
});
//实体配置是哪个库
[Tenant("B")] //实体标为A表示是A库
public class OrderItem//联表查询要5.1.4.66+才支持
var list1 = db.QueryableWithAttr<Order>() //根根据ConfigId自动实现跨库.LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId) .ToList();
//生成Sql
//Left join remote_OrderItem
下面是 PgSql
的例子
首先,在源数据库中创建 postgres_fdw
扩展:
CREATE EXTENSION postgres_fdw;
在源数据库中创建外部服务器对象,指定目标数据库的连接信息:
CREATE SERVER target_serverFOREIGN DATA WRAPPER postgres_fdwOPTIONS (dbname 'targetdb', host 'targethost', port 'targetport');
在上面的示例中,target_server
是外部服务器的名称,你需要提供目标数据库的连接信息,如目标数据库的名称、主机和端口。
创建用户映射,将源数据库的用户映射到目标服务器的用户:
CREATE USER MAPPING FOR current_userSERVER target_serverOPTIONS (user 'targetuser', password 'targetpassword');
确保提供正确的目标服务器的用户名和密码。
创建外部表,在源数据库中创建一个外部表,该表将映射到目标数据库中的表:
CREATE FOREIGN TABLE IF NOT EXISTS remote_OrderItem (column1 INT,column2 TEXT,...
) SERVER target_server;
字段结构要一样才能同步
现在,你可以在源数据库中查询外部表,就像查询本地表一样:
SELECT * FROM remote_table;
请升级到5.1.4.86-preview02+
4.4 其他跨服务器联表
只要配置好 dblinkName
找表规则:
-
默认:
dblinkName.[表名]
-
dblinkName
以_
结尾:dblinkName表名
(这个表名是没有转释符号的,像`` 、[]、 “” 我们称为转释符号) -
dblinkName
以@
开头:[表名]@dblinkName
var list1 = db.QueryableWithAttr<Order>() //根根据ConfigId自动实现跨库.LeftJoin<OrderItem>((o,i)=> o.Id == i.OrderId) .ToList();
//生成Sql
//Left join 规则生成的表名
请升级到5.1.4.86-preview02+
五、跨库子查询
5.1 用ThenMapper实现
支持跨库的类型,只能用在 Select
对象填充
//跨库
var mydb=db.GetConnection(1);
mydb.ThenMapper(root,item=>{...});
5.2 Subqueryable
请升级:5.1.4.107-preview11+
db.Queryable<Order>().Select(it => new { x= SqlFunc.Subqueryable<OrderItem>().AsWithAttr().Select(s => s.OrderId)//生成表名规则看:4.4和3.3}).ToList();//也可以用AS("表名")SqlFunc.Subqueryable<Order>().AS("yyy.Order01").InnerJoin<OrderItem>((x,y)=>x.Id==y.OrderId, "yyy.OrderItem01").Select(x=>x.Id)
5.3 嵌套查询或者Unionall
//强制名库+表名一般在嵌套或者unionall不能切换库中用
var q=db.Queryable<Order>().AsWithAttr().Where(it=>it.Id>10);
var q2=db.Queryable<Order>().AsWithAttr().Where(it=>it.Id<2);
db.UnionAll(q,q2).ToList();
//下面用于嵌套查询或者union all
六、.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 框架 SqlSugar 系列
- 【分页查询】.NET开源 ORM 框架 SqlSugar 系列
相关文章:
【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列
文章目录 一、跨库方式1:跨库导航二、手动跨库查询三、同服务器:自动查询跨库查询3.1 Mysql和SqlServer自动3.2 自动: PgSql跨Scheme查询3.3 其他库同服务器 四、跨服务器:自动跨库查询4.1 配置SqlServer dblink4.2 配置 Oracle dblink4.3 配…...
【JAVA】Java项目实战—Java 数据库应用项目:学生信息管理系统
本项目将实现一个简单的学生信息管理系统,功能包括学生信息的录入、查询、修改和删除。通过本项目,读者将深入理解Java与数据库交互的基本原理,掌握JDBC(Java Database Connectivity)技术,以及如何构建一个…...
中电金信携手中远海科,共启贸易金融数智新篇章
在数智化转型成为驱动经济社会高质量发展的新引擎背景下,“数智方案”栏目聚焦金融等国计民生重点行业场景,依托中电金信“源启筑基咨询引领应用重构”的产品及服务体系,输出市场洞察和行业解决方案、应用案例,旨在全面推动行业IT…...
有没有办法让爬虫更加高效,比如多线程处理?
要让Python爬虫更加高效,确实可以采用多线程处理。多线程可以显著提高爬虫的效率,因为它允许程序同时执行多个任务,从而减少等待时间。以下是一些提高爬虫效率的方法,特别是通过多线程技术: 1. 多线程爬虫 多线程爬虫…...
Android历史版本主要更新说明
Android 15 Android 15 继续致力于构建注重隐私和安全保护的平台,助您提高效率,同时还引入了多项新功能,帮您打造精美应用、卓越的媒体和相机体验,并提供直观的用户体验。在平板电脑和可折叠设备上更能凸显出这些优势。 Android…...
测试岗位应该学什么
以下是测试岗位需要学习的一些关键内容: 1. 测试理论和方法 - 了解不同类型的测试,如功能测试、性能测试、压力测试、安全测试、兼容性测试等。 - 掌握测试策略和测试计划的制定。 2. 编程语言 - 至少熟悉一种编程语言,如 Python、Java…...
华为HarmonyOS NEXT 原生应用开发: 数据持久化存储(用户首选项)的使用 token令牌存储鉴权!
Preferences 数据持久化存储 用户首选项(Preferences) 1. 封装 仓库工具类 ● 这里可以选择将 数据字段 key 抽取为一个静态方法,这里选择让用户传参,看起来较容易理解! /*** 首选项 preferences - 实现数据持久化…...
【AIStarter】告别复杂转换 - MinerU整合包实现PDF到Markdown的无缝转变
在数字化时代,信息的传递与共享变得愈发重要。文档格式之间的转换成为了日常工作中不可或缺的一部分。为了满足用户对高效工作流程的需求,新版MinerU整合包应运而生,它不仅简化了从PDF到Markdown的转换过程,还为用户带来了前所未有…...
Jenkins参数化构建详解(This project is parameterized)
本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…...
服务器批量清理redis keys,无法适用客户端必须直连的情况
在 Redis 中,批量清理指定模式的键(例如 memberCardData:*)可以通过多种方法来实现。需要注意的是,Redis 的命令执行是单线程的,因此对大量键进行操作时可能会阻塞服务器。以下是几种常见的方法: shell K…...
单元测试SpringBoot
添加测试专用属性 加载测试专用bean Web环境模拟测试 数据层测试回滚 测试用例数据设定...
牛客网刷题 | BC126 小乐乐查找数字
😁博客主页😁:🚀从0至1-CSDN博客🚀 🤑博客内容🤑:🍭C语言、C、数据结构、嵌入式、Linux🍭 😎本文内容🤣:🍭BC1…...
Node一、fs 模块、path 模块、端口号、 http 模块、
一、Node.js了解 Node.js是一个跨平台JavaScript运行环境,使开发者可以搭建服务器端的JavaScript应用程序。 概念:使用 Node.js 编写后端程序 / 支持前端工程化 ✓ 后端程序:提供接口和数据,网页资源等 ✓ 前端工程化 &#x…...
k8s service 配置AWS nlb load_balancing.cross_zone.enabled
在Kubernetes中配置NLB(Network Load Balancer)的跨区域负载均衡(cross-zone load balancing),需要使用服务注解(service annotations)来实现。根据AWS官方文档,以下是配置NLB跨区域…...
[分布式即时通讯系统] 注册类完善
我们在qss里添加err_tip样式,根据不同的状态做字体显示 #err_tip[statenormal]{color: green; } #err_tip[stateerr]{color: red; } 接下来项目中添加global.h和global.cpp文件,global.h声明repolish函数,global.cpp用来定义这个函数。 .h…...
C#使用HttpWebRequest下载文件
public static bool HttpDownloadFile(string downloadUrl, string localPath, log4net.ILog log) { bool bFlagDownloadFile false; //log.Debug(“HttpDownloadFile–准备以HTTP的方式下载文件,url:[” downloadUrl “]本地文件:【” localPath “…...
CentOS7环境安装php
直接安装 yum -y install php CentOS7默认安装是php5,现在php已有8.3版本 先查看php -v 版本 如果是低版本,可以删除 yum remove php yum remove php-fpm yum remove php-common 一、添加REMI存储库 yum install epel-release yum install -y …...
【Excel学习记录】04-排序和筛选
1.排序 (1)简单排序 不建议选中某列后进行排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→升序/降序 (2)多条件排序 可以选中一个单元格或者整个表格→开始→编辑→排序和筛选→自定义排序→指定关键字、比较内…...
Python轻松获取抖音视频播放量
现在在gpt的加持下写一些简单的代码还是很容易的,效率高,但是要有一点基础,不然有时候发现不了问题,这些都需要经验积累和实战,最好能和工作结合起来,不然很快一段时间就忘的干干净净了,下面就是…...
恢复删除的文件:6个免费Windows电脑数据恢复软件
数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式,如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究,我分析了 25 最佳免费数据…...
Go的Gin比java的Springboot更加的开箱即用?
前言 隔壁组的云计算零零后女同事,后文简称 云女士 ,非说 Go 的 Gin 框架比 Springboot 更加的开箱即用,我心想在 Java 里面 Springboot 已经打遍天下无敌手,这份底蕴岂是 Gin 能比。 但是云女士突出一个执拗,非我要…...
Java 中枚举的 toString 方法及其字段信息展示
在 Java 编程中,枚举(enum)是一种特殊的数据类型,用于定义一组固定的常量。枚举类型不仅限于简单的常量定义,还可以包含字段、方法以及构造函数,从而使其具备更强的表达能力。toString 方法是 Java 中所有对…...
Python数据分析(OpenCV视频处理)
处理视频我们引入的还是numpy 和 OpenCV 的包 引入方式如下: import numpy as np import cv2 我们使用OpenCV来加载本地视频,参数就是你视频的路径就可以 #加载视频 cap cv2.VideoCapture(./1.mp4) 下面我们进行读取视频 #读取视频 flag,frame cap.re…...
DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能
目录 财务应付 金融信贷业务 近期,DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具,支持不同版式单据智能分类扩展,可选功能插件配置流程,满足多样业务场景。 随着全球化与信息化进程,企业的文件…...
python编程Day15-UnitTest框架的介绍
框架 framework为了解决一类事情的功能集合 Unittest 框架 是 Python 自带的单元测试框架 自带的, 可以直接使用, 不需要单外安装 测试人员 用来做自动化测试, 作为自动化测试的执行框架, 即 管理和执行用例的 使用原因 能够组织多个用例去执行提供丰富的断言方法能够生成测试报…...
Linux——进程控制模拟shell
1.进程创建 我们在之前的文章中介绍过进程创建的方法,可以通过系统调用接口fork来创建新的进程。 fork在创建完新的子进程之后,返回值是一个pid,对于父进程返回子进程的pid,对于子进程返回0。fork函数后父子进程共享代码ÿ…...
OpenCV的图像矫正
一、原理 图像矫正的原理是透视变换,下面来介绍一下透视变换的概念。 透视变换(Perspective Transform)基于一个4对点的映射关系(4个源点到4个目标点),通过这些点之间的映射,可以计算一个变换…...
基于php求职招聘系统设计
摘要 随着社会信息化时代的到来,如今人们社会的生活节奏普遍加快,人们对于工作效率的要求也越来越高,企业 举办招聘会耗时耗财,个人参加招聘会漫无目的寻找不到“方向”,网络搜索工作量目的性不强,信息量繁…...
并行口的基本概念
单片机的并行口结构包括多个并行I/O端口,用于与外部设备进行并行数据传输。这些端口能够直接读写外部存储器、显示设备、打印机等外设的数据,是单片机与外界交互的重要通道。在深入探讨之前,我们先简要了解下单片机的基本概念。 单片机&…...
(六)机器学习 - 正态数据分布
正态数据分布,也称为高斯分布(Gaussian distribution),是一种在统计学中非常重要的概率分布。它描述了自然和社会科学中许多现象的分布情况,如人的身高、体重、智商等。正态分布的图形特征是中间高、两边低,…...
电脑系统报错找不到d3dcompiler_47.dll怎么修复?怎么预防“d3dcompiler_47.dll”文件缺失?
“d3dcompiler_47.dll”文件缺失的修复与预防策略 在日常使用电脑软件,尤其是运行大型游戏或图形密集型应用时,我们可能会遇到一些令人困惑的系统报错。其中之一便是“找不到d3dcompiler_47.dll”的错误提示。这个错误不仅影响软件的正常运行࿰…...
Github 2024-12-12 Go开源项目日报Top10
根据Github Trendings的统计,今日(2024-12-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Go Ethereum: 以太坊Go语言官方实现 创建周期:3717 天开发语言:Go协议类型:GNU Lesser General Public License v3.0Star数量:4504…...
RIP协议
介绍 路由信息协议RIP(Routing Information Protocol)是基于距离矢量(Distance-Vector)算法的路由协议,它是一种较为简单的内部网关协议IGP(Interior Gateway Protocol)。它的主要功能是帮助路…...
vue-router查漏补缺
一、动态路由匹配 1.带参数的动态路由匹配 import User from ./User.vue// 这些都会传递给 createRouter const routes [// 动态字段以冒号开始{ path: /users/:efg, component: User }, ]这种方式的路由会匹配到/users/abc或者/users/123,路径参数用冒号:表示,并…...
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作
使用Flink CDC实现 Oracle数据库数据同步的oracle配置操作,包括开启日志归档和用户授权。 flink官方参考资料: https://nightlies.apache.org/flink/flink-cdc-docs-master/zh/docs/connectors/flink-sources/oracle-cdc/ 操作步骤: 1.启用…...
mqtt.js 客户端封装
mqtt.js 客户端封装 没封装前使用 const client mqtt.connect(ws://10.10.20.9:9001) onMounted(() > {const topicList []const channelCount 12for(let i 0; i < channelCount; i) {topicList.push(/test/sendImage${i 1})}client.on(connect, () > {console…...
www.aws.training网站的账户密码如何修改
www.aws.training网站的账户密码如何修改 参加aws考试后, 账号密码如何修改呢? 是不是找了好久都找不到. 右上角, 我的账户, 点击注销. 然后会跳到页面: 点击那个网址链接, 进入新的页面,点安全: 右上角: 更改密码. 按提示来就好....
使用Python实现高性能数据存储
在数据驱动的时代,处理和存储海量数据已成为关键需求。高性能数据存储不仅能够确保数据的快速读写,还能提升系统的整体性能。Python作为一种灵活且功能强大的编程语言,提供了多种高效的数据存储解决方案。本文将详细介绍如何使用Python实现高…...
[已解决]nvm安装node.js 报错 拒绝访问此应用无法在你电脑上运行
报错如下: 出错背景: 心血来潮把node删掉重新安装,想用nvm来进行管理node 出错原因: npm下载失败、下载不完整 不完整的npm展示: 出错根本原因: 可能因为镜像源或者网络波动,导致node下载…...
图文检索(36):Decomposing Semantic Shifts for Composed Image Retrieval
Decomposing Semantic Shifts for Composed Image Retrieval 摘要方法3.1 前期准备3.2 视觉语言表示3.3 降级过程3.4 升级过程3.5 训练和推理 结论 发布时间(2024 AAAI) 标题:分解语义转换以实现组合图像检索 摘要 语义转换网络 (SSN)&…...
批量计算(Batch Processing)
批量计算(Batch Processing)是一种数据处理方式,指的是将大量任务或数据分批次进行处理,而不是实时处理每一个任务。这种处理方式通常在任务之间没有依赖关系时使用,可以大大提高计算效率和资源利用率。批量计算广泛应…...
Linux yum-config-manager命令异常
错误信息 使用 yum-config-manager命令时错误信息如下 sudo yum-config-manager \ > --add-repo \ > https://download.docker.com/linux/centos/docker-ce.repo sudo: yum-config-manager: command not found 解决办法 第一步: sudo yum -y install yum-u…...
【C++】关联存储结构容器-set(集合)详解
目录 一、基本概念 二、内部实现 三、常用操作 3.1 构造函数 3.2 插入操作 3.3 删除操作 3.4 查找操作 3.5 访问元素 3.6 容量操作 3.7 交换操作 四、特性 五、应用场景 结语 一、基本概念 set是C标准模板库(STL)中的一种关联容器…...
如何利用SPSS软件进行多组间显著性检验以abcd显示
1.SPSS软件中进行多组间的显著性检验 要在SPSS软件中进行多组间的显著性检验,并以abcd显示结果,你可以按照以下步骤操作: 数据准备: 确保你的数据已经正确输入SPSS,其中每行代表一个观测值,包含至少两列&a…...
C++ 之计时函数总结
C 之计时函数总结 总结Windows下C开发时的计时实现 1. clock() #include <time.h> //引入头文件void main() {clock_t start, end;start clock();fun(); //需计时的函数end clock(); float t_cfloat(end-start)/CLOCKS_PER_SEC;cout << "func cos…...
仿dota2渲染--shader常见贴图含义(直观展示)
Properties {[Header(Texture)]_MainTex ("RGB:颜色 A:透贴", 2D) "white"{}_NormTex ("RGB:法线贴图", 2D) "bump" {}_MaskTex ("R:高光强度 G:边缘光强度 B:高光染色 A:高光次幂…...
NoSQL大数据存储技术测试(5)MongoDB的原理和使用
单项选择题 第1题 关于 MongoDB 集群部署下面说法不正确的是() 已经不使用主从复制的模式 在实际应用场景中, Mongodb 集群结合复制集和分片机制 MongoDB 支持自动分片, 不支持手动切分 (我的答案) 每…...
视图、转发与重定向、静态资源处理
目录 视图 默认视图 视图机制原理 自定义视图 请求转发与重定向 静态资源处理 视图 每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性 可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高 默认是最低优先级,Integer.MAX_…...
ThinkPHP 5.1 的模板布局功能
ThinkPHP 5.1 的模板布局功能,包括全局配置、模板标签以及动态方法布局三种方式。以下是对这三种方式的要点概括和补充,以便于更好地理解和使用: 方式一:全局配置方式 适用于全站使用相同布局的情况,配置简单且统一。…...
入门网络安全工程师要学习哪些内容【2025年寒假最新学习计划】
🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 大家都知道网络安全行业很火,这个行业因为国家政策趋势正在大力发展,大有可为!但很多人对网络安全工程师还是不了解,不知道网…...