国产精品ORM框架-SqlSugar详解 SqlSugar初识 专题一

news2024/9/25 21:25:24
国产精品ORM框架-SqlSugar详解
1、SqlSugar初识
2、开始实操
3、增删改操作
4、进阶功能
5、集成整合
6、脚手架应用

sqlsugar 官网-CSDN博客

国产精品ORM框架-SqlSugar详解 SqlSugar初识 专题二-CSDN博客

1、SqlSugar初识

1.1 基本概念和历史

SqlSugar 是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用
最易上手的ORM框架 。
ORM框架:以面向对象的思想去操作数据库的框架。

1.2 SqlSugar支持功能

支持 .NET 百万级【大数据】写入和更新、分表和几十亿查询和统计等 拥有成熟方案
支持 完整的SAAS一套应用 跨库查询 、租户分库 、租户分表 和 租户数据隔离
支持【低代码】+工作流 (无实体多库兼容CRUD & JSON TO SQL )
语法最爽的ORM、优美的表达式、仓储、UnitOfWork、DbContext、AOP `
支持 DbFirst、CodeFirst和【WebFirst】 3种模式开发
简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天18小时
服务

2、开始实操

2.0 如何学习?

1、执行数据库脚本,初始化数据库
2、使用vs链接数据库中,得到链接字符串
3、配置链接字符串到CustomConnectionConfig配置类中

2.1 环境要求

VS2022开发工具
DOTNET6平台 控制台程序
SQL Server
SqlSugar version:5.1.3.32

2.2、DbFirst快速上手

DbFrist:映射迁移方式,从数据库中把表生成实体对象,数据库先行。先把数据库设计好。直接生成
实体;
Nuget: SqlSugarCore
快速链接数据库操作数据库;
准备数据库--SqlSugarDb
准备数据库链接字符串
Data Source=3     1,14331\\MSSQLSERVER2014;Initial Catalog=ZhaoxiSqlSugarDb;User ID=sa;Password=   ;Encrypt=False
nuget引入程序集SqlSugarCor
配置SqlClient
生成实体
 ConnectionConfig connectionConfig = new ConnectionConfig()
 {
     ConnectionString = "Data Source=PC-202406030027;Initial Catalog=ZhaoxiSqlSugarDb;User ID=sa;Password=sa123",
     IsAutoCloseConnection = true,
     DbType = DbType.SqlServer
 };

 //SqlSugarClient:链接数据库的对象 
 using (SqlSugarClient db = new SqlSugarClient(connectionConfig))
 {
     //参数1:路径  参数2:命名空间
//IsCreateAttribute 代表生成SqlSugar特性
{
    db.DbFirst.IsCreateAttribute().CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models", "Models");
}

//格式化文件名
{
    db.DbFirst.FormatFileName(x => x.ToLower()).CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models");
}
//强制可以空类型string加上?
{
    db.DbFirst.StringNullable().CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models");
}
//生成实体并且带有筛选
{
    db.DbFirst.Where("Student").CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models", "Models");

    db.DbFirst.Where(it => it.ToLower().StartsWith("snow")).CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models", "Models");

    db.DbFirst.Where(it => it.ToLower().StartsWith("view")).CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models", "Models");
}
//生成带有SqlSugar特性的实体
{
    db.DbFirst.IsCreateAttribute().CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models", "Models");
}
//生成实体带有默认值
{
    db.DbFirst.IsCreateDefaultValue().CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models", "Demo.Models");
}

//自定义格式化功能
{
    db.DbFirst     //类 
     .SettingClassTemplate(old => { return old;/*修改old值替换*/ })   //类构造函数
     .SettingConstructorTemplate(old => { return old;/*修改old值替换*/ })
     .SettingNamespaceTemplate(old =>
     {
         return old + "\r\nusing SqlSugar;"; //追加引用SqlSugar
     })
     .SettingPropertyDescriptionTemplate(old => { return old;/*修改old值替换*/})  //属性备注
     .SettingPropertyTemplate((columns, temp, type) =>   //属性:新重载 完全自定义用配置
    {
        var columnattribute = "\r\n           [SugarColumn({0})]";
        List<string> attributes = new List<string>();
        if (columns.IsPrimarykey)
            attributes.Add("IsPrimaryKey=true");
        if (columns.IsIdentity)
            attributes.Add("IsIdentity=true");
        if (attributes.Count == 0)
        {
            columnattribute = "";
        }
        return temp.Replace("{PropertyType}", type)
                    .Replace("{PropertyName}", columns.DbColumnName)
                    .Replace("{SugarColumn}", string.Format(columnattribute, string.Join(",", attributes)));
    })
     .CreateClassFile("E:\\zhaoxi\\gongkaike\\Zhaoxi.DotNet.Demo\\Zhaoxi.SqlSugar.Models");
} 

//格式化文件名
//生成带有SqlSugar特性的实体
自定义格式化功能

2.3、CodeFirst快速上手

代码先行,先有代码,然后有数据库,只关注业务,业务中的对象如果需要就直接创建实体,对应的数
据库表,由代码一次生成;
准备实体对象
准备数据库链接字符串
nuget引入程序集SqlSugarCore
配置SqlClient
生成数据库和表
数据库的结构完全由代码来决定,数据库表--主键、自增,字段类型。。。。。
特性列表 ---用在类的属性---对应的是数据库中的表的某一个字段
名称 描述
IsIdentity 是否创建自增标识
IsPrimaryKey 是否创建主键标识
ColumnName 创建数据库字段的名称(默认取实体类属性名称)
ColumnDataType
创建数据库字段的类型用法1: “varchar(20)” 不需要设置长度用
法2: 不设置该参数 系统会根据C#类型自动生成相应的数据库类型 用
法3: 多库兼容可以用 :看标题9
IsIgnore ORM不处理该列
ColumnDescription 备注 表注释 (新版本支持XML文件)
Length 长度 设成10会生成 xxx类型(10), 没括号的不设置
IsNullable 是否可以为null默为false
DecimalDigits 精度 如 decimal(18,2) length=18,DecimalDigits=2
OracleSequenceName 设置Oracle序列,设置后该列等同于自增列
OldColumnName 修改列名用,这样不会新增或者删除列
IndexGroupNameList 创建索引用
UniqueGroupNameList 创建唯一索引
注意:有2个属性用处不
同DefaultValue
IsOnlyIgnoreInsert
DefaultValue=默认值 用来建表设置字段默认值
IsOnlyIgnoreInsert=true 插入数据时取默认值很多情况需要2个一
起使用如果只建表不插入数据用1个 如果建表并且插入数据用2个

特殊支持

如果大量使用 ColumnDataType="nvarchar(50)" 自定义类型将无法很好的支持多种数据库,比如很
多库不支持nvarchar
当然你也可以使用AOP替换 ColumnDataType 去实现多库,下面介绍自带的方案

        /// <summary>
        /// CodeFirst
        /// </summary>
        public static void CodeFirstShow()
        {
            ConnectionConfig connectionConfig = new ConnectionConfig()
            {
                ConnectionString = "Data Source=PC-202406030027;Initial Catalog=ZhaoxiSqlSugarDb_Info;Integrated Security=True",
                IsAutoCloseConnection = true,
                DbType = DbType.SqlServer
            };
            using (SqlSugarClient db = new SqlSugarClient(connectionConfig))
            {
                //如果不存在创建数据库存在不会重复创建 
                {
                    db.DbMaintenance.CreateDatabase(); // 注意 :Oracle和个别国产库需不支持该方法,需要手动建库  
                }

                //创建表根据实体类CodeFirstTable1     
                {
                    db.CodeFirst.InitTables(typeof(CodeFirstTable1));//这样一个表就能成功创建了
                }

                //创建单个表 
                {
                    db.CodeFirst.SetStringDefaultLength(200).InitTables(typeof(CodeFirstTable1));//这样一个表就能成功创建了
                }
                //手动建多个表 
                {
                    db.CodeFirst
                        .SetStringDefaultLength(200)
                        .InitTables(typeof(CodeFirstTable1), typeof(CodeFirstTable2));
                }

                //批量创建表
                //语法1:
                {
                    Type[] types = Assembly
                       .LoadFrom("Zhaoxi.SqlSugar.Models.dll")//如果 .dll报错,可以换成 xxx.exe 有些生成的是exe 
                       .GetTypes().Where(it => it.FullName.Contains("CodeFirst"))//命名空间过滤,当然你也可以写其他条件过滤
                       .ToArray();//断点调试一下是不是需要的Type,不是需要的在进行过滤 



                    //判断如果数据库存在这个表,就删除表
                    foreach (Type type in types)
                    {
                        if (db.DbMaintenance.IsAnyTable(type.Name, false))
                        {
                            db.DbMaintenance.DropTable(type.Name);
                        }
                    } 

                    //然后创建
                    db.CodeFirst.SetStringDefaultLength(200).InitTables(types);//根据types创建表
                }


                //语法2:                
                {
                    Type[] types = typeof(CodeFirstTable1).Assembly.GetTypes()
                   .Where(it => it.FullName.Contains("CodeFirst"))//命名空间过滤,当然你也可以写其他条件过滤
                   .ToArray();

                    //判断如果数据库存在这个表,就删除表
                    foreach (Type type in types)
                    {
                        if (db.DbMaintenance.IsAnyTable(type.Name, false))
                        {
                            db.DbMaintenance.DropTable(type.Name);
                        }
                    }

                    db.CodeFirst.SetStringDefaultLength(200).InitTables(types);//根据types创建表
                }


                //动态设置表名
                {
                    db.CodeFirst.As<UnituLong>("UnituLong0011").InitTables<UnituLong>();
                }
            }
        }

2.4、索引支持

普通索引
唯一索引 (true表示唯一索引)
复合普通索引
给索引添加占位符 占位符 {table} {db}
  /// <summary>
  /// CodeFirst创建索引
  /// </summary>
  public static void CodeFirstIndexShow()
  {
      ConnectionConfig connectionConfig = new ConnectionConfig()
      {
          ConnectionString = "Data Source=PC-202406030027;Initial Catalog=ZhaoxiSqlSugarDb_NewInfo;Integrated Security=True",
          IsAutoCloseConnection = true,
          DbType = DbType.SqlServer
      };
      using (SqlSugarClient db = new SqlSugarClient(connectionConfig))
      {
          //创建表根据实体类CodeFirstTable3     
          {
              db.CodeFirst.InitTables(typeof(CodeFirstTable3));//这样一个表就能成功创建了
          }
      }
  }

2.5、库表操作

名称 备注 返回
类型
GetDataBaseList 获取所有数据库名称 List
GetViewInfoList 查询所有视图 List
GetTableInfoList 获取所有表,查询所有的表
(GetTableInfoList(是否缓存)) List
GetColumnInfosByTableName 获取列根据表名,获取字段,字段信息
GetColumnInfosByTableName(表名,是否缓存) List
GetIsIdentities 获取自增列 List
GetPrimaries 获取主键 List
IsAnyTable 表是否存在,判断表存不存在 ( IsAny(表名,是否
缓存)) bool
IsAnyColumn 列是否存在 bool
IsPrimaryKey 主键是否存在 bool
IsIdentity 自增是否存在 bool
IsAnyConstraint 约束是否存在 bool
2.4、索引支持
普通索引
唯一索引 (true表示唯一索引)
复合普通索引
给索引添加占位符 占位符 {table} {db}
2.5、库表操作
名称 备注 返回
类型
DropTable 删除表 bool
TruncateTable 清空表 bool
CreateTable
创建表说明:如果有实体类优先用CodeFirst建
表,这个是底层方法用该方法建表,因为数据库不
同,有些属性需要用单纯写个方法去创建,当前表
格这些方法都有现成的
bool
AddColumn 添加列 bool
UpdateColumn 更新列 bool
AddPrimaryKey 添加主键 bool
DropConstraint 删除约束 bool
BackupDataBase 备份库 bool
DropColumn 删除列 bool
RenameColumn 重命名列 bool
AddDefaultValue 添加默认值 bool
AddTableRemark 添加表描述,表注释 bool
AddColumnRemark 添加列描述,表注释 bool
DeleteColumnRemark 删除列描述,表注释 bool
RenameTable 重命名表 bool
CreateIndex 创建索引 bool
IsAnyIndex 索引是否存在 bool

3、增删改操作

3.1、数据插入数据库

插入 单条
批量 插入
雪花ID插入
Guid主键自动赋值 函数
说明
插入返回值:

3.2、数据修改

输出Sql语句
单条更新
按需更新
批量修改
大数据量操作
只更新某列-选择更新
NULL列不更新
更新忽略null字段
无主键/指定列更新
条件更新
重新赋值更新
表达式更新 
插入返回值:
ExecuteCommand
返回受影响行数 , update where 如果没找到那么就会返回
0
ExecuteCommandHasChange
返回bool ,等同于 bool isChange= ExecuteCommand()>0

3.3、数据删除函数

说明
Deleteable方法使用
ExecuteCommand
返回受影响行数 , update where 如果没找到那么就会返回
0
ExecuteCommandHasChange
返回bool ,等同于 bool isChange= ExecuteCommand()>0

3.4、过滤器

通用操作的统一定制;
如果在数据库中表设计支持假删除,通过一个状态来记录当前这条数据是否被删除了;
定义了过滤器之后,定义过滤器就是一个条件,就可以把过滤器设置为全局;任何一个查询操作都会走
这个过滤器;

3.5、添加或者修改

场景:如果当前操作的数据在数据库中不存在就认为是添加操作,如果存在就修改操作;
根据主键ID来,如果ID为零,就新增--数据库中自动生成ID
如果ID不为零,就认为是修改的动作;

3.6、单表基本查询

查询集合
查询总数
按条件查询
多条件查询
动态OR查询
模糊查询
主键查询
查询第一条
查前几条
是否存在记录
In查询/Not In
排序
In的模糊查询
多个字段 条件拼接

3.7、连接查询

左连接查询
右连接查询
内连接查询
全连接查询
并集查询

3.8、复杂查询

分组聚合
Distinct关键字
开窗函数
合并结合
分页查询

Order排序

3.9、导航属性

导航属性是 实体类型 上的可选属性,它允许从 关联 一端 导航到另一端。 与其他 属性 不同,导航属
性并不携带数据。
关系型数据库--保存数据--保存数据之间的关系;
表关系:一对一关系 一个人---对应一个身份证号 一夫一妻
一对多关系 一个老师带多个学生 公司有多个员工
多对多关系 课程和学员,一个学员可以学习多个课程 一个课程可以让多个学员来学
习,
用户角色关系
补充:动态导航,在程序中可以不用配置关联字段,在查询的过程中,把需要关联的字段,手动匹配完
成导航查询;
补充: 多对一关系。

3.10、导航属性性能优化

db.ThenMapper(list, stu =>
{
//如果加Where不能带有stu参数,stu参数写到 SetContext
stu.SchoolA = db.Queryable<SchoolA>().SetContext(scl => scl.SchoolId, () =>
stu.SchoolId, stu).FirstOrDefault();
//可以联查询的
//stu.xxxx=db.Queryable<SchoolA>().LeftJoin<XXX>
().Select(xxxx).SetContext(....).ToList();
});

导航属性,分段查询
如果数据库中数据量偏大,且查询的数据量偏大,可以分段查询,一次查询多少条,继续往后执行查询
多少条;

3.11、查询映射

数据库中返回的数据是一个Model--实体-返回给客户端---User---UserDto---Autommper 对于大部分开发者,如果需要做集合的映射,实体映射,都会想到Automapper。
SqlSugar有一个工具:Mapster
nuget引入Mapster
List<Company> companies= db.Queryable<Company>()
.Includes(it => it.UserList)
.ToList(); //每次查询300条
var dtoList = companies.Adapt<List<CompanyDto>>();

3.12、导航方法

Any
SqlFunc.Exists
List<Company> companyList1 = db.Queryable<Company>()
.Where(it => it.UserList.Any())
.ToList();
List<Company> companyList2 = db.Queryable<Company>()
.Where(it => it.UserList.Any(c => c.UserName.Equals("Richard")))
.ToList();

3.13、ThenMapper方法使用

db.ThenMapper(list, stu =>
{
//如果加Where不能带有stu参数,stu参数写到 SetContext
stu.SchoolA = db.Queryable<SchoolA>().SetContext(scl => scl.SchoolId, () =>
stu.SchoolId, stu).FirstOrDefault();
//可以联查询的
//stu.xxxx=db.Queryable<SchoolA>().LeftJoin<XXX>
().Select(xxxx).SetContext(....).ToList();
});

3.14、ThenMapper查询树

var treeRoot = db.Queryable<Tree>().Where(it => it.Id == 1).ToList();
//第一层
db.ThenMapper(treeRoot, item =>
{
item.Child = db.Queryable<Tree>().SetContext(x => x.ParentId, () =>
item.Id, item).ToList();
});
//第二层

3.15、树操作

无需依赖导航属性
设置关联字段即可

3.16、动态表达式

数据结构,可以又多个表达式组合成一个表达式,也可以把表达式拆解---->组建成sql语句;
动态表达式
拓展用例
Queryable.Or
表达式解析器解析表达式
Where条件解析
select解析
字段名称解析

3.17、跨库查询

在开发中,避免不了会有多个数据库存储数据。
如果在分库后,涉及到业务数据的链接查询,A库,B库; 从业务上让A库和B库链接查询;
使用SqlServer同义词; 3.18、报表查询
在开发中,对于一些报表数据,如果使用Sql语句去查询,很复杂,Sqlsugar轻松支持
统计当前年份数据
统计最近三年的数据
统计最近十年的数据
统计今年一月份数据
统计最近三年一月份数据
统计最近10年一月份数据
sqlsugar 官网-CSDN博客
sqlsugar 官网-CSDN博客
国产精品ORM框架-SqlSugar详解 SqlSugar初识 专题二-CSDN博客
4、进阶功能
5、集成整合
6、脚手架应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

eNsp公司管理的网络NAT策略搭建

实验拓扑图 实验需求&#xff1a; 7&#xff0c;办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8&#xff0c;分公司设备可以通过总公司的移动链路和电信链路访问到Dmz区的http服务器 9&#xff0c;多出口环境基于带…

Start11 V2(Windows 开始菜单美化工具 )值得购买吗?

去年底 Stardock 正式推出了 Start11 V2&#xff0c;与第一代 Start11 相比&#xff0c;新版带来了超过 50 项的新特性&#xff0c;其中包括&#xff1a; 全新的开始菜单样式、应用图标分组 / 换色、固定任意程序 / 文件 / 文件夹到任务栏、配置备份还原…… 开始菜单的新样…

Vue 最新动态!!!

大家好,我是CodeQi! 一位热衷于技术分享的码仔。 当Vue 3.4在六个月前发布时,整个前端开发社区都为之振奋。这次更新不仅带来了许多新特性,还解决了许多开发过程中遇到的痛点。 然而,时间飞逝,随着我在项目中不断应用这些新特性,逐渐积累了很多宝贵的经验和心得。 今…

Python-PLAXIS自动化建模技术与典型岩土工程案例

有限单元法在岩土工程问题中应用非常广泛&#xff0c;很多软件都采用有限单元解法。在使用各大软件进行数值模拟建模的过程中&#xff0c;岩土工程中的各种问题&#xff08;塑性、渗流、固结、动力、稳定安全、热力TM&#xff09;&#xff0c;一步一步地搭建自己的Plaxis模型&a…

《昇思25天学习打卡营第17天 | CycleGAN图像风格迁移互换》

《昇思25天学习打卡营第17天 | CycleGAN图像风格迁移互换》 目录 《昇思25天学习打卡营第17天 | CycleGAN图像风格迁移互换》模型介绍模型简介模型结构 数据集数据集下载数据集加载可视化 构建生成器构建判别器优化器和损失函数前向计算计算梯度和反向传播模型训练模型推理参考…

大模型-基于大模型的数据标注

方法来自于这篇论文&#xff1a; Can Generalist Foundation Models Outcompete Special-Purpose Tuning? Case Study in Medicine。 一.背景 假设&#xff0c;存在一批标注好的数据D_labeled&#xff0c;其包含m个标注样本(x, y)。 目标是&#xff0c;基于D_labeled&#…

Redis集群和高可用

文章目录 一、Redis主从复制redis主从复制架构主从复制实现主从复制故障恢复主从复制优化主从复制过程 主从同步优化配置 二、哨兵模式 (Sentinel)redis集群介绍哨兵 (Sentinel)工作原理实现哨兵主从复制哨兵配置文件 三、Redis cluster架构工作原理Redis cluster架构实现集群 …

电表及销售统计Python应用及win程序

暑假每天都要填表算账很烦躁&#xff0c;就整了个小程序来减轻压力 程序可以做到记录输入的每一条数据&#xff0c;并用新数据减去旧数据算新增的量&#xff0c;同时记录填写时间 Python代码 import json import os # 导入os模块 from datetime import datetime from tkint…

防火墙NAT智能选举综合实验

目录 实验拓扑 实验要求 实验思路 实验配置 需求7 需求8 需求9 需求10 需求11 实验拓扑 实验要求 7.办公区设备可以通过电信链路和移动链路上网(多对多的NAT&#xff0c;并且需要保留一个公网IP不能用来转换) 8.分公司设备可以通过总公司的移动链路和电信链路访问到d…

Python数据分析案例52——基于SSA-LSTM的风速预测(麻雀优化)

案例背景 又要开始更新时间序列水论文的系列的方法了&#xff0c;前面基于各种不同神经网络层&#xff0c;还有注意力机制做了一些缝合模型。 其实论文里面用的多的可能是优化算法和模态分解&#xff0c;这两个我还没出专门的例子&#xff0c;这几天正好出一个优化算法的例子来…

RocketMQ~架构了解

简介 RocketMQ 具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统&#xff0c;由阿里巴巴团队开发&#xff0c;在 2016 年底贡献给 Apache&#xff0c;成为了 Apache 的一个顶级项目。 在阿里内部&#xff0c;RocketMQ 很好地服务了集…

优化Cocos Creator 包体体积

优化Cocos Creator 包体体积 引言一、优化图片文件体积&#xff1a;二、优化声音文件体积&#xff1a;三、优化引擎代码体积&#xff1a;四、 优化字体字库文件大小&#xff1a; 引言 优化Cocos Creator项目的包体体积是一个常见且重要的任务&#xff0c;尤其是在移动设备和网…

【高中数学/幂函数】比较a=2^0.3,b=3^0.2,c=7^0.1的大小

【问题】 比较a2^0.3,b3^0.2,c7^0.1的大小 【解答】 a2^0.32^3/10(2^3)^1/108^1/10 b3^0.23^2/10(3^2)^1/109^1/10 c7^0.17^1/10 由于yx^1/10在x正半轴是增函数&#xff0c;底数大的得数就大。 因为9>8>7,所以b>a>c 【图像】 在图像上绘出曲线yx^1/10&…

红日靶场----(三)1.漏洞利用

上期已经信息收集阶段已经完成&#xff0c;接下来是漏洞利用。 靶场思路 通过信息收集得到两个吧靶场的思路 1、http://192.168.195.33/phpmyadmin/&#xff08;数据库的管理界面&#xff09; root/root 2、http://192.168.195.33/yxcms/index.php?radmin/index/login&am…

杆塔倾斜在线监测装置

概述 我国约960万平方公里已经基本实现电网和基站通讯全覆盖&#xff0c;但我国地貌复杂多样&#xff0c;大部分杆塔需要安装在野外&#xff0c;在安装时并不能保证地基的结实可靠&#xff0c;一不小心就可能导致杆塔的倾斜倒塌。 在通信铁塔倾斜现象发生发展的初期&#xff0…

HarmonyOS(43) @BuilderParam标签使用指南

BuilderParam BuilderParam使用举例定义模板定义具体实现BuilderParam初始化 demo源码参考资料 BuilderParam 该标签有的作用有点类似于设计模式中的模板模式&#xff0c;类似于指定一个UI占位符&#xff0c;具体的实现交给具体的Builder&#xff0c;顾名思义&#xff0c;可以…

面试内容集合

用例设计方法 &#xff08;一&#xff09;等价类划分  常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理…

腾讯云如何设置二级域名?

什么是二级域名&#xff1f; 例如我已申请的域名为&#xff1a; test.com //顶级域名 现在我开发的应用要部署到二级域名&#xff1a; blog.test.com 1、打开腾讯云控制台的我的域名&#xff0c;然后点击解析 2、在我的解析页面点击添加记录&#xff0c;然后需注意红色方框处…

js 请求blob:https:// 图片

方式1 def get_file_content_chrome(driver, uri):result driver.execute_async_script("""var uri arguments[0];var callback arguments[1];var toBase64 function(buffer){for(var r,nnew Uint8Array(buffer),tn.length,anew Uint8Array(4*Math.ceil(t/…

[WUSTCTF2020]funnyre

【【反调试】花指令patch与原理分析】https://www.bilibili.com/video/BV1mK411A75G?vd_source7ad69e0c2be65c96d9584e19b0202113 B站这个视频和这道题的花指令一样的 这个call百分之一万是辣鸡 重编译u他 经典辣鸡花指令 nop掉 下面一共有四处,一样的操作 然后回到main函…