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

用友U9二次开发-问题记录

学习资料:链接: https://pan.baidu.com/s/13JbKSSRkSn2V6-dYX5zKFQ 提取码: p9at 

页面        &__dm=true      客开插件    &Admin=true        开发者使用查看代码

插件

UI插件配置项
1.关闭热插拔
2.在configuration节点下加配置,多个在WebPartExtend节点下可以继续加ExtendedPart

 <WebPartExtend><!--生产订单保存按钮--><ExtendedPart parentPartFullName="UFIDA.U9.MFG.MO.DiscreteMOUIModel.DiscreteMOMainUIFormWebPart"  --对应UI页面通过FormID查询extendedPartFullName="UFIDA.U9.Cust.HR.MES.PlugIn.DiscreteMOMainUIFormWebPart"      --对应文件夹名称    extendedPartAssemblyName="UFIDA.U9.Cust.HR.MES.PlugIn.dll" />                          --对应dll文件</WebPartExtend>

UI插件文件需放在Protal下 BE插件需放在Protal/bin 下 后需批处理才能加载

BE相关-枚举添加

--同步单个枚举declare @FN varchar(550),
@ClsID bigint,
@UID varchar(50)
select @FN='UFIDA.U9.Cust.HuaRui.ReserveBE.ClauseSetTypeEnum' --此处只需填入你要更新的枚举FullName,示例为标准产品的业务员类型枚举
select @ClsID=Local_ID,@UID=ID from UBF_MD_Class where FullName = 'UFIDA.U9.Cust.HuaRui.ReserveBE.ClauseSetTypeEnum' and ClassType=3
select @ClsID,@UID
--先删除已有的数据
delete from UBF_Sys_ExtEnumType_Trl where ID=@ClsID or ID in (select ID from ubf_sys_extenumtype where UID=@UID)
delete from ubf_sys_extenumtype where ID=@ClsID or UID=@UID
delete from UBF_Sys_ExtEnumValue_Trl where ID in (select ID from ubf_sys_extenumvalue where ExtEnumType=@ClsID or ExtEnumTypeUID=@UID)
delete from ubf_sys_extenumvalue where ExtEnumType=@ClsID or ExtEnumTypeUID=@UID
--下面为插入最新数据
insert into ubf_sys_extenumtype select local_id as id,'20101111','YonYou','20101111','YonYou',0,fullname as code,isextend,id as uid,0from ubf_md_class where Local_ID = @ClsIDinsert into ubf_sys_extenumtype_trl select a.local_id as id,'zh-CN',b.[displayname] as [name],b.[Description] from ubf_md_class  a left join ubf_RES_resourcevalue b on cast(a.[iD] as varchar(50)) = cast(b.resourcename as varchar(50)) where Local_ID = @ClsIDinsert into ubf_sys_extenumvalue select a.local_id as id,'20101111','YonYou','20101111','YonYou',0,a.[Local_Class_ID] as ExtEnumType ,a.[name] as code,a.defaultvalue as evalue,issystem,md_class_id as ExtEnumTypeUID from ubf_md_attribute as a inner join ubf_md_class as b on cast(a.md_class_id as varchar(50))=cast(b.id as varchar(50)) where b.Local_ID = @ClsIDinsert into ubf_sys_extenumvalue_trl select a.local_id as id,'zh-CN',c.[displayname] as [name] from ubf_md_attribute as ainner join ubf_md_class as b on cast(a.md_class_id as varchar(50))=cast(b.id  as varchar(50)) left join ubf_RES_resourcevalue c on  cast(a.[ID] as varchar(50)) = cast(c.resourcename as varchar(50)) where b.Local_ID = @ClsID

查询枚举名称:
select dbo.F_GetEnumName('YONYOU.U9.Cust.DaHua.IRDocumentTypeBE.DocStatusEnum',ir.Status,'zh-CN') as RecStatus from Cust_InitialReceipt as ir 

BP相关

DECLARE @Name NVARCHAR(500);
DECLARE @FullName NVARCHAR(500);
SET @Name = N'报关单号定时获取';
SET @FullName = N'UFIDA.U9.Cust.LC.CustomsClearance.CustomsClearanceOper';
IF NOT EXISTS (SELECT * FROM dbo.UBF_JOB_NoParaRunableBPSVList WHERE  FullName = @FullName)
BEGININSERT INTO dbo.UBF_JOB_NoParaRunableBPSVList(ID, FullName, Memo)SELECT  NEWID(), @FullName, @Name;
END;

请求管理新增时的提交人就是BP对应创建单据的创建人。

发布BP找不到方法  
需要按照顺序执行,生成代码后,先执行脚本文件在批处理,在发布dll
反编译BP调试加载不了dll问题记录
1、测试环境-补丁问题引起: BP会生成7个文件要全放,BP要先发布-bdxml文件
2、本地环境-U9工具构造BP,解决报错的所有问题,在尝试能否调试
第一次调试程序集报错问题:需要报错的dll文件放到LIBS下面重新调试就行

UI相关:

UI插件使用实体查询需要引用AOP.DLL 添加一下内容

using (BPForEngine bp = new BPForEngine())
{using (ISession session = Session.Open()){}
}

UI界面,加合计,UBF选中DataGrid打开属性页签吧是否累计改成true

UI界面,主FORM 自适应 修改UI后保存构造,sql脚本文件批处理,重启iis 删除菜单:加载bdxml文件,清除菜单信息
UI界面初始化,给控件赋值:  ReplaceRecord record = this.Model.Replace.AddNewUIRecord();
UI界面 清除报错信息 this.Model.Clear();
UI界面 刷新数据 this.Action.NavigateAction.Refresh(null);
//数据收集
_strongPart.OnDataCollect(this);
_strongPart.IsDataBinding = true;
_strongPart.IsConsuming = true;
//清除报错信息 
_strongPart.Model.ClearErrorMessage();
//弹窗跳转
_strongPart.ShowAtlasModalDialog(this.BtnFresh, "a21f9617-1a6d-45aa-b57f-e35acd19e653", "替代", "410", "370", null, nameValue, true, false, true, UFSoft.UBF.UI.IView.PartShowType.NavigateForm, true);
//调用模版提供的默认实现.--默认实现可能会调用相应的Action. 页面跳转-列表
Cust.HT.TransactionPriceList  对应页面设置的URL
this.Action.CommonAction.CurrentPart.NavigatePage("Cust.HT.TransactionPriceList", null);

UI界面底部提示自定义

 this.Action.CurrentPart.ShowWindowStatus(string.Format("推送成功", 1));

UI列表初始化加载默认条件

#region 列表应用开发人员扩展代码段private string CustomFilterOpath_Extend(string filterOpath){if (!string.IsNullOrEmpty(filterOpath)){filterOpath += "and Name Like 'BP%'";}else        {    filterOpath = "Name Like 'BP%'";}return filterOpath;}
#endregion

UIList点击行跳转详情页

	private void OnGridRowDbClick_Extend(object sender, UIActionEventArgs e){string DataID = this.CurrentModel.InspectionReminder.FocusedRecord["ID"].ToString();OnNavigatCard("Browse", DataID, "Cust.HR.InspectionReminder");/Cust.HR.InspectionReminder 是发布时创建页面的URL//List Grid RowDbClic Code Demo...//string DataID = this.CurrentModel.PositionType.FocusedRecord.ID.ToString();//string CardPageID="Test";//在这里CardPageID表示卡片的URI//OnNavigatCard("Browse", DataID, CardPageID);//调用模版定义的默认实现方法.如需扩展,请直接在此编程.			this.OnGridRowDbClick_DefaultImpl(sender,e);								}private void OnNavigatCard(string type, string dataID, string formID){string FormID = formID;string DataID = dataID;if (DataID == string.Empty && type == "Browse"){return;}else{System.Collections.Specialized.NameValueCollection nameValCol = new System.Collections.Specialized.NameValueCollection();nameValCol.Add("PDPageStatus", type);nameValCol.Add("ID", DataID);this.CommonAction.CurrentPart.NavigatePage(FormID, nameValCol);}//throw new NotImplementedException();}

UI发布

设置参照:后缀 - Ref
新建后再 发布对象浏览器里找到实体-拖表后-拖字段
在VS里的UI扩展类里的-AfterCreateChildControls方法中加入下面这段话
//查询按钮设置
PDFormMessage.ShowConfirmDialog(this.Page, "a4ce0ce1-7fa9-4522-a2a9-dc9dbc4a1505", "580", "408",
Title, wpFindID.ClientID, this.BtnFind, null);
其中 a4ce0ce1-7fa9-4522-a2a9-dc9dbc4a1505 这个是参照生成的.cs文件的 Form ID,替换后编译批处理就可以了。

参照多选设置

 代码:使用session记录选择内容在字段内容变更时触发赋值使用

调用:
private void ConfirmButton_Click_Extend(object sender, EventArgs  e){//调用模版提供的默认实现.--默认实现可能会调用相应的Action.ReturnSelectedValue();ConfirmButton_Click_DefaultImpl(sender,e);}	private void DataGrid_GridRowDbClicked_Extend(object sender, GridDBClickEventArgs  e){//调用模版提供的默认实现.--默认实现可能会调用相应的Action.ReturnSelectedValue();DataGrid_GridRowDbClicked_DefaultImpl(sender,e);}记录选择 session赋值
private void ReturnSelectedValue(){this.CurrentSessionState["ResultSoDoctype"] = null;DataTable dt = new DataTable();dt.Columns.Add("ID", typeof(long));dt.Columns.Add("Code", typeof(string));dt.Columns.Add("Name", typeof(string));foreach (IUIRecord _frd in this.Model.cRef.SelectRecords){DataRow dr = dt.NewRow();dr["ID"] = _frd["ID"];dr["Code"] = _frd["Code"];dr["Name"] = _frd["Name"];dt.Rows.Add(dr);}this.CurrentSessionState["ResultSoDoctype"] = dt;}UI界面使用
private void DocumentType95_TextChanged_Extend(object sender, EventArgs e){//调用模版提供的默认实现.--默认实现可能会调用相应的Action.if (DocumentType95.Value != null){ShipWorkBenchHeadRecord record = this.Model.ShipWorkBenchHead.FocusedRecord;record.DocumentType_Code = DocumentType95.Value.ToString();record.CustomerPO = "test";string Name = string.Empty;this.CurrentSessionState["ischange2"] = null;if (this.CurrentSessionState["ResultSoDoctype"] != null)//多选缓存{DataTable ds = new DataTable();ds = this.CurrentSessionState["ResultSoDoctype"] as DataTable;bool first = true;for (int i = 0; i < ds.Rows.Count; i++){DataRow dr = ds.Rows[i];if (first){Name = dr["Name"].ToString();first = false;}else Name = Name + "," + dr["Name"].ToString();}this.CurrentSessionState["ResultSoDoctype"] = null;this.CurrentSessionState["ischange2"] = Name;}else this.CurrentSessionState["ischange2"] = DocumentType95.Text;}this.DataBind();this.DataCollect();DocumentType95_TextChanged_DefaultImpl(sender, e);}

报表相关

单元格合并:选中拖拽右键
合计:拖拽字段到对应字段下面
正式环境的U9集团开发报表,需要勾选运行时使用此链接

报表加载不出来原因:要默认勾选一个字段才会加载事件。

报表参数:有条件限制时,要把值填到下面行上并勾选常量 --值集

报表的主子表跳转:

1、首先主报表需要发布且需要有一个参数(没有的话跳转按钮显示不出来),子报表不需要

2、需要 在主报表字段上设置动作-跳转另外一个报表并设置参数

报表策略 :目的-设置报表参数的默认值

  • UFIDA.U9.Cust.LC.RptProcessStrategy.OrderCloseRateStrategy
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using UFIDA.U9.SCM.Pub.ReportStrategy;
    using UFIDA.U9.UI.PDHelper;
    using UFIDA.UBF.Query.CaseModel;
    using UFIDA.UBF.Report.App.UI.ProcessStrategy;
    using UFSoft.UBF.Report.Filter;
    using UFSoft.UBF.Report.Filter.FilterModel;
    using UFSoft.UBF.Report.UI.ReportView;namespace UFIDA.U9.Cust.LC.RptProcessStrategy
    {public class OrderCloseRateStrategy : ReportProcessStrategy{public List<string> CellGroupNameList;public OrderCloseRateStrategy() : base() { }public OrderCloseRateStrategy(LoadReportTemplateArgs args, Case useCase) : base(args, useCase) { }protected override void ProcessFormat(bool layoutUngroup){base.ProcessFormat(layoutUngroup);}/// <summary>/// 默认值/// </summary>/// <param name="usercase"></param>/// <param name="caseDefine"></param>/// <returns></returns>public override CaseDefine ProcessCaseDefine(Case usercase, CaseDefine caseDefine){caseDefine = base.ProcessCaseDefine(usercase, caseDefine);//组织赋默认值//组织默认值ReportStrategyHelper.SetDefaultValue(caseDefine.FilterDefines.GetObjectByName("OrgCode"),PDContext.Current.OrgRef.NameColumn,PDContext.Current.OrgID,//PDContext.Current.OrgRef.CodeColumn,enuOperatorListType.Equal);return caseDefine;}/// <summary>/// 数据校验/// </summary>/// <param name="usercase"></param>/// <param name="caseDefine"></param>/// <returns></returns>public override string VerifyParameters(Case usercase, CaseDefine caseDefine){string note = base.VerifyParameters(usercase, caseDefine);if (note != null)return note;return null;}}
    }

数据库访问参数化:
//初始化参数化对象实例
DataParamList listpara = new DataParamList();
//添加参数值,参数名称一般以@符号开头,注意数据类型要设置正确,否则可能会出现类型不正确的报错
listpara.Add(DataParamFactory.CreateInput("@param", input.ID, System.Data.DbType.Int64));
//参数与对象中的名称一致
string commandText = "SELECT DescFlexField_PrivateDescSeg4,Status,DescFlexField_PrivateDescSeg2,NoteEndDate FROM dbo.NM_RecNoteMain WHERE ID=@param";
//执行语句
DataAccessor.RunSQL(DataAccessor.GetConn(), commandText, listpara, out DataSet dataSet);

参数化存储过程调用案例
string procRec = "HR_ShipQry";
DataParamList listpara = new DataParamList();
listpara.Add(DataParamFactory.CreateInput("BeginDate", businessDTOData.BeginDate, System.Data.DbType.String));
listpara.Add(DataParamFactory.CreateInput("EndDate", businessDTOData.EndDate, System.Data.DbType.String));
listpara.Add(DataParamFactory.CreateInput("OrgID", Base.Context.LoginOrg.ID, System.Data.DbType.Int64));
var count = DataAccessor.RunSP(procRec, listpara, out ds);

报表的参数替换

@CustomersName=replace(@CustomersName,'CustomersName','Customertrl.Name')

相关文章:

用友U9二次开发-问题记录

学习资料&#xff1a;链接: https://pan.baidu.com/s/13JbKSSRkSn2V6-dYX5zKFQ 提取码: p9at 页面 &__dmtrue 客开插件 &Admintrue 开发者使用查看代码 插件 UI插件配置项 1.关闭热插拔 2.在configuration节点下加配置&#xff0c;多个在Web…...

python---pickle库

pickle库 pickle 是 Python 标准库中的一个模块&#xff0c;它可以将 Python 对象&#xff08;如列表、字典、类实例等&#xff09;转换为字节流&#xff0c;这个过程称为“序列化”&#xff1b;反之&#xff0c;也可以将字节流转换回 Python 对象&#xff0c;这个过程称为“反…...

如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统

我在业余时间开发了一款自己的独立产品&#xff1a;升讯威在线客服与营销系统。陆陆续续开发了几年&#xff0c;从一开始的偶有用户尝试&#xff0c;到如今线上环境和私有化部署均有了越来越多的稳定用户。 随时近来 AI 大模型的火热&#xff0c;越来越多的客户&#xff0c;问…...

论文阅读 GMM-JCSFE Model(EEG Microstate)

Motor Imagery Recognition Based on GMM-JCSFE Model 1.问题与困境 1.1 微状态 将连续的EEG信号分解为一系列短暂的、稳定的“微状态”&#xff0c;每个微状态代表了大脑在特定时间窗口内的特定功能。微状态模型的核心思想是&#xff0c;大脑的活动可以看作是由一系列离散的…...

[杂学笔记] TCP和UDP的区别,对http接口解释 , Cookie和Session的区别 ,http和https的区别 , 智能指针 ,断点续传

文章目录 1. TCP和UDP的区别2. 对http接口解释3. Cookie和Session的区别4. http和https的区别5. 智能指针6.断点续传 1. TCP和UDP的区别 tcp的特点&#xff1a; 面向连接&#xff0c;可靠性高&#xff0c;全双工&#xff0c;面向字节流udp特点&#xff1a;无连接&#xff0c;不…...

Etcd的安装与使用

1.Etcd介绍 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统&#xff0c;用于配置共享和服 务发现等。它使用 Raft 一致性算法来保持集群数据的一致性&#xff0c;且客户端通过长连接 watch 功能&#xff0c;能够及时收到数据变化通知。 以下 是关于 …...

ROS实践(四)机器人建图及导航

一、概念 机器人导航是指机器人在环境中自主地从一个地点移动到另一个地点的过程。这个过程涉及到多个关键技术&#xff0c;包括定位、路径规划、避障等。机器人导航通常包括以下几个重要部分。 1. 定位 定位是机器人确定自己在环境中的位置的过程。常用的定位方法包括&#xf…...

Excel 中如何实现数据透视表?

Excel 中如何实现数据透视表&#xff1f; 数据透视表&#xff08;PivotTable&#xff09;是 Excel 中强大的数据分析工具&#xff0c;能够快速汇总、分析和展示大量数据。本文将详细介绍如何在 Excel 中创建和使用数据透视表。 1. 数据透视表的基本概念 数据透视表是一种交互…...

SQLiteStudio:一款免费开源跨平台的SQLite管理工具

目录 1.简介 2.下载与安装 3.实现分析 4.总结 1.简介 SQLiteStudio 是一款专门用于管理 SQLite 数据库的图形化工具&#xff0c;由波兰开发者开发并维护。由于 SQLite 以其轻量级、零配置、嵌入式等特性被广泛应用于各种小型项目、移动应用和桌面应用中&#xff0c;而 SQLi…...

实现Django和Transformers 构建智能客服大模型(模拟订单系统)

一、环境安装准备 #git拉取 bert-base-chinese 文件#创建 虚拟运行环境python -m venv myicrplatenv#刷新source myicrplatenv/bin/activate#python Django 集成nacospip install nacos-sdk-python#安装 Djangopip3 install Django5.1#安装 pymysql settings.py 里面需要 # 强制…...

【沐渥科技】氮气柜日常如何维护?

氮气柜的维护是确保其长期稳定运行、延长使用寿命和保持环境控制精度的关键。以下是沐渥氮气柜的日常维护和定期保养指南&#xff1a; 一、日常维护 柜体清洁 定期用软布擦拭柜体表面和内部&#xff0c;避免灰尘堆积。避免使用腐蚀性清洁剂&#xff0c;防止损伤密封条或传感器。…...

数据安全之策:备份文件的重要性与自动化实践

在信息化高速发展的今天&#xff0c;数据已成为企业运营和个人生活中不可或缺的重要资源。无论是企业的财务报表、客户资料&#xff0c;还是个人的家庭照片、学习笔记&#xff0c;数据的丢失或损坏都可能带来无法挽回的损失。因此&#xff0c;备份文件的重要性日益凸显&#xf…...

windows下玩转vllm:vllm简介;Windows下不能直接装vllm;会报错ModuleNotFoundError: No module named ‘vllm._C‘

文章目录 -1. Windows下不能直接装vllm前言ollama vs vllmOllamavLLMvllm简介核心特点PagedAttention内存优化高效推理应用场景安装与使用-1. Windows下不能直接装vllm 我其实很久之前就意识到这个事儿,后来太久没搞就又忘了。 昨天忙活了半宿,得来的确实一个无法解决的报错…...

目录《Vue 3 + TypeScript + DeepSeek 全栈开发实战》

在快速迭代的软件开发世界里&#xff0c;技术的融合与创新始终是推动行业前行的不竭动力。今天&#xff0c;我们站在了前端技术与大数据搜索技术交汇的十字路口&#xff0c;手中的工具不再仅仅是编码的利器&#xff0c;更是解锁未来应用无限可能的钥匙。正是基于这样的时代背景…...

for...of的用法与介绍

一、定义 for...of 是 ES6&#xff08;ECMAScript 2015&#xff09;引入的一种用于 遍历可迭代对象&#xff08;Iterable&#xff09;的循环语句 二、语法 for (const item of iterable) {// 代码块 }参数&#xff1a; iterable&#xff1a;一个可迭代对象&#xff08;如数组…...

快速使用PPASR V3版不能语音识别框架

前言 本文章主要介绍如何快速使用PPASR语音识别框架训练和推理&#xff0c;本文将致力于最简单的方式去介绍使用&#xff0c;如果使用更进阶功能&#xff0c;还需要从源码去看文档。仅需三行代码即可实现训练和推理。 源码地址&#xff1a;https://github.com/yeyupiaoling/P…...

Aliyun CTF 2025 web ezoj

文章目录 ezoj ezoj 进来一看是算法题&#xff0c;先做了试试看,gpt写了一个高效代码通过了 通过后没看见啥&#xff0c;根据页面底部提示去/source看到源代码&#xff0c;没啥思路&#xff0c;直接看wp吧&#xff0c;跟算法题没啥关系,关键是去看源码 def audit_checker(even…...

推理模型对SQL理解能力的评测:DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet

引言 随着大型语言模型&#xff08;LLMs&#xff09;在技术领域的应用日益广泛&#xff0c;评估这些模型在特定技术任务上的能力变得越来越重要。本研究聚焦于四款领先的推理模型——DeepSeek r1、GPT-4o、Kimi k1.5和Claude 3.7 Sonnet在SQL理解与分析方面的能力&#xff0c;…...

【H2O2 | 软件开发】事件循环机制

目录 前言 开篇语 准备工作 正文 概念 流程 事件队列类型 示例 结束语 前言 开篇语 本系列为短篇&#xff0c;每次讲述少量知识点&#xff0c;无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的&#xff0c;希望对诸位有所帮…...

LVTTL(Low Voltage Transistor-Transistor Logic)电平详解

一、LVTTL电平的定义与核心特性 LVTTL&#xff08;低压晶体管-晶体管逻辑&#xff09;是传统TTL&#xff08;5V&#xff09;的低电压版本&#xff0c;工作电压通常为3.3V&#xff0c;旨在降低功耗并适配现代低电压集成电路&#xff0c;同时保持与TTL的逻辑兼容性。其核心特点如…...

Manus:成为AI Agent领域的标杆

一、引言 官网&#xff1a;Manus 随着人工智能技术的飞速发展&#xff0c;AI Agent&#xff08;智能体&#xff09;作为人工智能领域的重要分支&#xff0c;正逐渐从概念走向现实&#xff0c;并在各行各业展现出巨大的应用潜力。在众多AI Agent产品中&#xff0c;Manus以其独…...

批量测试IP和域名联通性

最近需要测试IP和域名的联通性&#xff0c;因数量很多&#xff0c;单个ping占用时间较长。考虑使用Python和Bat解决。考虑到依托的环境&#xff0c;Bat可以在Windows直接运行。所以直接Bat处理。 方法1 echo off for /f %%i in (E:\封禁IP\ipall.txt) do (ping %%i -n 1 &…...

网络安全之tcpdump工具

引言 wireshark是一款非常不错的抓包软件&#xff0c;在图形化界面占绝对统治地位&#xff1b;尽管其在字符界面下有些许选项可供使用&#xff0c;但终究不太方便&#xff0c;下面我再介绍一款NB的终端抓包工具 tcpdump 1、混杂模式 linux的网卡有混杂模式一说&#xff0c;当开…...

TMS320F28P550SJ9学习笔记8:I2C通信的结构体寄存器配置的了解

继续学习IIC通信的寄存器配置方式&#xff1a;尝试使用寄存器方式配置了解I2C a 没条件完整测试IIC功能&#xff0c;具体的修改与测试留在下文&#xff0c;这里只贴出全部代码&#xff0c;就不提供工程了 文章提供测试代码讲解、完整工程下载、测试效果图 目录 IIC通信引脚&a…...

TypeScript类:面向对象编程的基石

一、从现实世界到代码世界 想象你要建造一栋房子&#xff0c;首先需要一张设计蓝图——它定义了房屋的结构&#xff08;几个房间&#xff09;、功能&#xff08;卧室/厨房&#xff09;和特性&#xff08;材料/颜色&#xff09;。在TypeScript中&#xff0c;class就是这个设计蓝…...

C语言学习笔记-进阶(10)自定义类型:结构体

1. 结构体类型的声明 前面我们在学习操作符的时候&#xff0c;已经学习了结构体的知识&#xff0c;这里稍微复习一下。 1.1 结构体回顾 结构是⼀些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.1.1 结构体的声明 struct tag {member-…...

Java 大视界 -- Java 大数据在智能家居能源管理与节能优化中的应用(120)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

upload-labs-master通关攻略(9~12)

Pass-9 建立1.php <?php phpinfo();?> 上传时抓包 修改代码 在1.php后面加点号空格点号 放行后得到 Pass-10 将1.php放入 上传时抓包 修改代码 将1.php改为1.pphphp 上传后得到 Pass-11 将1.php改为1.png 上传时抓包 修改代码 ../upload/2.php%00 放行后得到 Pass…...

python语言总结(持续更新)

本文主要是总结各函数&#xff0c;简单的函数不会给予示例&#xff0c;如果在平日遇到一些新类型将会添加 基础知识 输入与输出 print([要输出的内容])输出函数 input([提示内容]如果输入提示内容会在交互界面显示&#xff0c;用以提示用户)输入函数 注释 # 单行注释符&…...

UI自动化测试 —— web端元素获取元素等待实践!

前言 Web UI自动化测试是一种软件测试方法&#xff0c;通过模拟用户行为&#xff0c;自动执行Web界面的各种操作&#xff0c;并验证操作结果是否符合预期&#xff0c;从而提高测试效率和准确性。 目的&#xff1a; 确保Web应用程序的界面在不同环境(如不同浏览器、操作系统)下…...

【CXX】6.6 UniquePtr<T> — std::unique_ptr<T>

std::unique_ptr 的 Rust 绑定称为 UniquePtr。有关 Rust API 的文档&#xff0c;请参见链接。 限制&#xff1a; 目前仅支持 std::unique_ptr<T, std::default_delete>。未来可能会支持自定义删除器。 UniquePtr 不支持 T 为不透明的 Rust 类型。对于在语言边界传递不…...

【网络协议安全】任务10:三层交换机配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog三层交换机是指在OSI&#xff08;开放系统互连&#xff09;模型中的第三层网络层提供路由功能的交换机。它不仅具备二层交换机的交换功能&#xff0c;还能实现路由功能&#xff0c;提供更为灵活的网…...

C语言每日一练——day_4

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第四天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中用…...

文件系统调用(上) ─── linux第17课

目录 linux 中man 2和man 3的区别 文件内容介绍 C语言文件接口 示例: 输出信息到显示器&#xff0c;你有哪些方法 总结: 系统文件I/O 文件类的系统调用接口介绍 示例 open 函数具体使用哪个,和具体应用场景相关&#xff0c; write read close lseek ,类比C文件相关接…...

在 Spring Boot 中实现基于 TraceId 的日志链路追踪

1 前言 1.1 什么是 TraceId? TraceId 是一个唯一的标识符,用于跟踪分布式系统中的请求。每个请求从客户端发起到服务端处理,再到可能的多个微服务调用,都会携带这个 TraceId,以便在整个请求链路中进行追踪和调试。 1.2 日志链路追踪的意义 日志链路追踪可以帮助开发者…...

STM32 HAL库 CAN过滤器配置

之前在STM32 f407 CAN收发 基于HAL库和Cubemx配置_stm32f407can收发程序-CSDN博客这篇博文里写了一下配置CAN收发的方法&#xff0c;当时由于并没有使用过滤器的现实需求&#xff0c;所以就也没仔细研究。现在工作中确实需要用到过滤器了&#xff0c;有些项目中控制器和发动机E…...

C++ 控制结构与函数全面解析

引言 在 C 编程中&#xff0c;控制结构和函数是构建程序逻辑的关键要素。控制结构能够决定程序的执行流程&#xff0c;而函数则可以将代码模块化&#xff0c;提高代码的复用性和可维护性。本文将深入介绍 C 中的控制结构和函数的相关知识。 一、控制结构 1. if - else 语句 …...

基于django+pytorch(Faster R-CNN)的钢材缺陷识别系统

一、训练数据来源以及数据标注 数据来源于阿里云天池实验室公开数据集中的铝型材缺陷检测数据集APDDD 数据标注通过labelme进行标注&#xff0c;图片所有标注以转化为矩形标注&#xff0c;存放成json格式。 二、模型训练方式及结果 缺陷识别模型基于Faster R-CNN ResNet5…...

C++多态

多态 多态分为:静态多态(函数重载,运算符重载)和动态多态(派生类、虚函数) 二者区别:静态多态是在地址编译时绑定,而动态多态是在地址运行时绑定 动态多态的特点: 1.有继承关系 2.子类重写父类虚函数(就是跟父类行为函数名称一样&#xff0c;但是是作为子类的行为) 动态多态的…...

【一句话经验】ubuntu vi/vim 模式自动设置为paste

从centos过来&#xff0c;发现ubutun有些地方不习惯&#xff0c;尤其是vi的粘贴&#xff0c;默认自动进去了代码模式&#xff0c;导致每次粘贴必须得set paste&#xff0c;否则会出现问题。 解决办法非常简单&#xff0c;按照下面命令执行即可&#xff1a; cd ~ echo "…...

MongoDB 触发器实现教程

在传统的关系型数据库&#xff08;如 MySQL&#xff09;中&#xff0c;触发器是一种强大的工具&#xff0c;它可以在特定的数据库操作&#xff08;如插入、更新或删除&#xff09;发生时自动执行一段代码。然而&#xff0c;MongoDB 并没有原生内置的触发器概念。不过&#xff0…...

ESP8266 NodeMCU 与 Atmega16 微控制器连接以发送电子邮件

NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信协议,如 UART、USART、SPI 和 I2C。由于其广泛的社区支持和简单性,它在机器人、汽车和自动化行业有广泛的应用。 Atmega1…...

《算法笔记》8.1小节——搜索专题->深度优先搜索(DFS)问题 C: 【递归入门】组合+判断素数

题目描述 已知 n 个整数b1,b2,…,bn 以及一个整数 k&#xff08;k&#xff1c;n&#xff09;。 从 n 个整数中任选 k 个整数相加&#xff0c;可分别得到一系列的和。 例如当 n4&#xff0c;k&#xff1d;3&#xff0c;4 个整数分别为 3&#xff0c;7&#xff0c;12&#xf…...

重生之我在学Vue--第8天 Vue 3 UI 框架(Element Plus)

重生之我在学Vue–第8天 Vue 3 UI 框架&#xff08;Element Plus&#xff09; 文章目录 重生之我在学Vue--第8天 Vue 3 UI 框架&#xff08;Element Plus&#xff09;前言一、Element Plus 基础&#xff1a;从安装到组件革命1.1 安装与两种引入模式全量引入&#xff08;适合快速…...

从前端视角理解消息队列:核心问题与实战指南

消息队列&#xff08;Message Queue&#xff09;是现代分布式系统的核心组件之一&#xff0c;它在前后端协作、系统解耦、流量削峰等场景中发挥着重要作用。本文从前端开发者视角出发&#xff0c;解析消息队列的关键问题&#xff0c;并结合实际场景给出解决方案。 一、为什么要…...

Mysql配置文件My.cnf(my.ini)配置参数说明

一、my.cnf 配置文件路径&#xff1a;/etc/my.cnf&#xff0c;在调整了该文件内容后&#xff0c;需要重启mysql才可生效。 1、主要参数 basedir path # 使用给定目录作为根目录(安装目录)。 datadir path # 从给定目录读取数据库文件。 pid-file filename # 为mysq…...

Docker 安装成功后,安装 Dify 中文版本的步骤

Docker 安装成功后&#xff0c;安装 Dify 中文版本的步骤如下1&#xff1a; 克隆 Dify 代码仓库&#xff1a;在终端中执行以下命令&#xff0c;将 Dify 源代码克隆至本地环境。 bash git clone https://github.com/langgenius/dify.git进入 Dify 的 docker 目录&#xff1a; b…...

Spring(4)——响应相关

一、返回静态页面 1.1**RestController和Controller** 想返回如下页面&#xff1a; 如果我们依旧使用原来的**RestController** 可以看到的是仅仅返回了字符串。 此时将**RestController改为Controller** 可以看到这次返回的是html页面。 那么**RestController和Controller…...

LPDDR5x电源使用Si电容对PI和PSIJ影响分析

SoC可能包含许多高速接口&#xff0c;其中LPDDR5X目前因为高带宽、低功耗、大容量等性能优势开始逐渐在AI计算、5G通信、视频处理等领域开始使用。LPDDR5X目前的速率高达8.533 GT/s&#xff0c;以及多个为这些接口供电的IO电压轨&#xff0c;而这些IO轨的PDN需要提供低阻抗&…...

[网络爬虫] 动态网页抓取 — Selenium 介绍 环境配置

&#x1f31f;想系统化学习爬虫技术&#xff1f;看看这个&#xff1a;[数据抓取] Python 网络爬虫 - 学习手册-CSDN博客 0x01&#xff1a;Selenium 工具介绍 Selenium 是一个开源的便携式自动化测试工具。它最初是为网站自动化测试而开发的&#xff0c;类似于我们玩游戏用的按…...