【干货集】C# XmlHelper帮助类操作Xml文档的通用方法汇总
前言
该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法(主要包括Xml序列化和反序列化,Xml文件读取,Xml文档节点内容增删改的一些通过方法)。当然可能还有很多方法会漏了,假如各位同学好的方法可以在文末留言,我会统一收集起来。
C#XML基础入门
C# XML基础入门(XML文件内容增删改查清)👉
Xml反序列化为对象
#region Xml反序列化为对象/// <summary>/// Xml反序列化为指定模型对象/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="xmlContent">Xml内容</param>/// <param name="isThrowException">是否抛出异常</param>/// <returns></returns>public static T XmlConvertToModel<T>(string xmlContent, bool isThrowException = false) where T : class{StringReader stringReader = null;try{XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));stringReader = new StringReader(xmlContent);return (T)xmlSerializer.Deserialize(stringReader);}catch (Exception ex){if (isThrowException){throw ex;}return null;}finally{stringReader?.Dispose();}}/// <summary> /// 读取Xml文件内容反序列化为指定的对象 /// </summary> /// <param name="filePath">Xml文件的位置(绝对路径)</param> /// <returns></returns> public static T DeserializeFromXml<T>(string filePath){try{if (!File.Exists(filePath))throw new ArgumentNullException(filePath + " not Exists");using (StreamReader reader = new StreamReader(filePath)){XmlSerializer xs = new XmlSerializer(typeof(T));T ret = (T)xs.Deserialize(reader);return ret;}}catch (Exception ex){return default(T);}}#endregion
对象序列化为Xml
#region 对象序列化为Xml/// <summary>/// 对象序列化为Xml/// </summary>/// <param name="obj">对象</param>/// <param name="isThrowException">是否抛出异常</param>/// <returns></returns>public static string ObjectSerializerXml<T>(T obj, bool isThrowException = false){if (obj == null){return string.Empty;}try{using (StringWriter sw = new StringWriter()){Type t = obj.GetType();//强制指定命名空间,覆盖默认的命名空间 XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();//在Xml序列化时去除默认命名空间xmlns:xsd和xmlns:xsinamespaces.Add(string.Empty, string.Empty);XmlSerializer serializer = new XmlSerializer(obj.GetType());//序列化时增加namespacesserializer.Serialize(sw, obj, namespaces);sw.Close();string replaceStr = sw.ToString().Replace(@"<?xml version=""1.0"" encoding=""utf-16""?>", "");return replaceStr;}}catch (Exception ex){if (isThrowException){throw ex;}return string.Empty;}}#endregion
Xml字符处理
#region Xml字符处理/// <summary>/// 特殊符号转换为转义字符/// </summary>/// <param name="xmlStr"></param>/// <returns></returns>public string XmlSpecialSymbolConvert(string xmlStr){return xmlStr.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\'", "'").Replace("\"", """);}#endregion
创建Xml文档
#region 创建Xml文档/// <summary>/// 创建Xml文档/// </summary>/// <param name="saveFilePath">文件保存位置</param>public void CreateXmlDocument(string saveFilePath){XmlDocument xmlDoc = new XmlDocument();//创建类型声明节点 XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");xmlDoc.AppendChild(node);//创建Xml根节点XmlNode root = xmlDoc.CreateElement("books");xmlDoc.AppendChild(root);XmlNode root1 = xmlDoc.CreateElement("book");root.AppendChild(root1);//创建子节点CreateNode(xmlDoc, root1, "author", "追逐时光者");CreateNode(xmlDoc, root1, "title", "XML学习教程");CreateNode(xmlDoc, root1, "publisher", "时光出版社");//将文件保存到指定位置xmlDoc.Save(saveFilePath/*"D://xmlSampleCreateFile.xml"*/);}/// <summary> /// 创建节点 /// </summary> /// <param name="xmlDoc">xml文档</param> /// <param name="parentNode">Xml父节点</param> /// <param name="name">节点名</param> /// <param name="value">节点值</param> /// public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value){//创建对应Xml节点元素XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);node.InnerText = value;parentNode.AppendChild(node);}#endregion
Xml数据读取
#region Xml数据读取/// <summary>/// 读取Xml指定节点中的数据/// </summary>/// <param name="filePath">Xml文档路径</param>/// <param name="node">节点</param>/// <param name="attribute">读取数据的属性名</param>/// <returns>string</returns>/*************************************************** 使用示列:* XmlHelper.XmlReadNodeAttributeValue(path, "/books/book", "author")************************************************/public static string XmlReadNodeAttributeValue(string filePath, string node, string attribute){string value = "";try{XmlDocument doc = new XmlDocument();doc.Load(filePath);XmlNode xmlNode = doc.SelectSingleNode(node);value = (attribute.Equals("") ? xmlNode.InnerText : xmlNode.Attributes[attribute].Value);}catch { }return value;}/// <summary>/// 获得xml文件中指定节点的节点数据/// </summary>/// <param name="filePath">Xml文档路径</param>/// <param name="nodeName">节点名</param>/// <returns></returns>public static string GetNodeInfoByNodeName(string filePath, string nodeName){string XmlString = string.Empty;XmlDocument xml = new XmlDocument();xml.Load(filePath);XmlElement root = xml.DocumentElement;XmlNode node = root.SelectSingleNode("//" + nodeName);if (node != null){XmlString = node.InnerText;}return XmlString;}/// <summary>/// 获取某一节点的所有孩子节点的值/// </summary>/// <param name="node">要查询的节点</param>/// <param name="filePath">Xml文档路径</param>public string[] ReadAllChildallValue(string node, string filePath){int i = 0;string[] str = { };XmlDocument doc = new XmlDocument();doc.Load(filePath);XmlNode xn = doc.SelectSingleNode(node);XmlNodeList nodelist = xn.ChildNodes; //得到该节点的子节点if (nodelist.Count > 0){str = new string[nodelist.Count];foreach (XmlElement el in nodelist)//读元素值{str[i] = el.Value;i++;}}return str;}/// <summary>/// 获取某一节点的所有孩子节点的值/// </summary>/// <param name="node">要查询的节点</param>/// <param name="filePath">Xml文档路径</param>public XmlNodeList ReadAllChild(string node, string filePath){XmlDocument doc = new XmlDocument();doc.Load(filePath);XmlNode xn = doc.SelectSingleNode(node);XmlNodeList nodelist = xn.ChildNodes; //得到该节点的子节点return nodelist;}#endregion
Xml插入数据
#region Xml插入数据/// <summary>/// Xml指定节点元素属性插入数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="element">元素名</param>/// <param name="attribute">属性名</param>/// <param name="value">属性数据</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.XmlInsertValue(path, "/books", "book", "author", "Value")************************************************/public static void XmlInsertValue(string path, string node, string element, string attribute, string value){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xmlNode = doc.SelectSingleNode(node);if (element.Equals("")){if (!attribute.Equals("")){XmlElement xe = (XmlElement)xmlNode;xe.SetAttribute(attribute, value);}}else{XmlElement xe = doc.CreateElement(element);if (attribute.Equals(""))xe.InnerText = value;elsexe.SetAttribute(attribute, value);//添加新增的节点xmlNode.AppendChild(xe);}//保存Xml文档doc.Save(path);}catch { }}#endregion
Xml修改数据
#region Xml修改数据/// <summary>/// Xml指定节点元素属性修改数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="attribute">属性名</param>/// <param name="value">属性数据</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.XmlUpdateValue(path, "/books", "book","author","Value")************************************************/public static void XmlUpdateValue(string path, string node, string attribute, string value){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xmlNode = doc.SelectSingleNode(node);XmlElement xmlElement = (XmlElement)xmlNode;if (attribute.Equals(""))xmlElement.InnerText = value;elsexmlElement.SetAttribute(attribute, value);//保存Xml文档doc.Save(path);}catch { }}#endregion
Xml删除数据
#region Xml删除数据/// <summary>/// 删除数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="attribute">属性名</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.XmlDelete(path, "/books", "book")************************************************/public static void XmlDelete(string path, string node, string attribute){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xn = doc.SelectSingleNode(node);XmlElement xe = (XmlElement)xn;if (attribute.Equals(""))xn.ParentNode.RemoveChild(xn);elsexe.RemoveAttribute(attribute);doc.Save(path);}catch { }}#endregion
完整的XmlHelper帮助类
注意:有些方法不能保证百分之百没有问题的,假如有问题可以留言给我,我会验证并立即修改。
/// <summary>/// Xml帮助类/// </summary>public class XMLHelper
{#region Xml反序列化为对象/// <summary>/// Xml反序列化为指定模型对象/// </summary>/// <typeparam name="T">对象类型</typeparam>/// <param name="xmlContent">Xml内容</param>/// <param name="isThrowException">是否抛出异常</param>/// <returns></returns>public static T XmlConvertToModel<T>(string xmlContent, bool isThrowException = false) where T : class
{StringReader stringReader = null;try{XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));stringReader = new StringReader(xmlContent);return (T)xmlSerializer.Deserialize(stringReader);}catch (Exception ex){if (isThrowException){throw ex;}return null;}finally{stringReader?.Dispose();}}/// <summary> /// 读取Xml文件内容反序列化为指定的对象 /// </summary> /// <param name="filePath">Xml文件的位置(绝对路径)</param> /// <returns></returns> public static T DeserializeFromXml<T>(string filePath){try{if (!File.Exists(filePath))throw new ArgumentNullException(filePath + " not Exists");using (StreamReader reader = new StreamReader(filePath)){XmlSerializer xs = new XmlSerializer(typeof(T));T ret = (T)xs.Deserialize(reader);return ret;}}catch (Exception ex){return default(T);}}#endregion#region 对象序列化为Xml/// <summary>/// 对象序列化为Xml/// </summary>/// <param name="obj">对象</param>/// <param name="isThrowException">是否抛出异常</param>/// <returns></returns>public static string ObjectSerializerXml<T>(T obj, bool isThrowException = false){if (obj == null){return string.Empty;}try{using (StringWriter sw = new StringWriter()){Type t = obj.GetType();//强制指定命名空间,覆盖默认的命名空间 XmlSerializerNamespaces namespaces = new XmlSerializerNamespaces();//在Xml序列化时去除默认命名空间xmlns:xsd和xmlns:xsinamespaces.Add(string.Empty, string.Empty);XmlSerializer serializer = new XmlSerializer(obj.GetType());//序列化时增加namespacesserializer.Serialize(sw, obj, namespaces);sw.Close();string replaceStr = sw.ToString().Replace(@"<?xml version=""1.0"" encoding=""utf-16""?>", "");return replaceStr;}}catch (Exception ex){if (isThrowException){throw ex;}return string.Empty;}}#endregion#region Xml字符处理/// <summary>/// 特殊符号转换为转义字符/// </summary>/// <param name="xmlStr"></param>/// <returns></returns>public string XmlSpecialSymbolConvert(string xmlStr){return xmlStr.Replace("&", "&").Replace("<", "<").Replace(">", ">").Replace("\'", "'").Replace("\"", """);}#endregion#region 创建Xml文档/// <summary>/// 创建Xml文档/// </summary>/// <param name="saveFilePath">文件保存位置</param>public void CreateXmlDocument(string saveFilePath){XmlDocument xmlDoc = new XmlDocument();//创建类型声明节点 XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");xmlDoc.AppendChild(node);//创建Xml根节点XmlNode root = xmlDoc.CreateElement("books");xmlDoc.AppendChild(root);XmlNode root1 = xmlDoc.CreateElement("book");root.AppendChild(root1);//创建子节点CreateNode(xmlDoc, root1, "author", "追逐时光者");CreateNode(xmlDoc, root1, "title", "XML学习教程");CreateNode(xmlDoc, root1, "publisher", "时光出版社");//将文件保存到指定位置xmlDoc.Save(saveFilePath/*"D://xmlSampleCreateFile.xml"*/);}/// <summary> /// 创建节点 /// </summary> /// <param name="xmlDoc">xml文档</param> /// <param name="parentNode">Xml父节点</param> /// <param name="name">节点名</param> /// <param name="value">节点值</param> /// public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value){//创建对应Xml节点元素XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);node.InnerText = value;parentNode.AppendChild(node);}#endregion#region Xml数据读取/// <summary>/// 读取Xml指定节点中的数据/// </summary>/// <param name="filePath">Xml文档路径</param>/// <param name="node">节点</param>/// <param name="attribute">读取数据的属性名</param>/// <returns>string</returns>/*************************************************** 使用示列:* XmlHelper.XmlReadNodeAttributeValue(path, "/books/book", "author")************************************************/public static string XmlReadNodeAttributeValue(string filePath, string node, string attribute){string value = "";try{XmlDocument doc = new XmlDocument();doc.Load(filePath);XmlNode xmlNode = doc.SelectSingleNode(node);value = (attribute.Equals("") ? xmlNode.InnerText : xmlNode.Attributes[attribute].Value);}catch { }return value;}/// <summary>/// 获得xml文件中指定节点的节点数据/// </summary>/// <param name="filePath">Xml文档路径</param>/// <param name="nodeName">节点名</param>/// <returns></returns>public static string GetNodeInfoByNodeName(string filePath, string nodeName){string XmlString = string.Empty;XmlDocument xml = new XmlDocument();xml.Load(filePath);XmlElement root = xml.DocumentElement;XmlNode node = root.SelectSingleNode("//" + nodeName);if (node != null){XmlString = node.InnerText;}return XmlString;}/// <summary>/// 获取某一节点的所有孩子节点的值/// </summary>/// <param name="node">要查询的节点</param>/// <param name="filePath">Xml文档路径</param>public string[] ReadAllChildallValue(string node, string filePath){int i = 0;string[] str = { };XmlDocument doc = new XmlDocument();doc.Load(filePath);XmlNode xn = doc.SelectSingleNode(node);XmlNodeList nodelist = xn.ChildNodes; //得到该节点的子节点if (nodelist.Count > 0){str = new string[nodelist.Count];foreach (XmlElement el in nodelist)//读元素值{str[i] = el.Value;i++;}}return str;}/// <summary>/// 获取某一节点的所有孩子节点的值/// </summary>/// <param name="node">要查询的节点</param>/// <param name="filePath">Xml文档路径</param>public XmlNodeList ReadAllChild(string node, string filePath){XmlDocument doc = new XmlDocument();doc.Load(filePath);XmlNode xn = doc.SelectSingleNode(node);XmlNodeList nodelist = xn.ChildNodes; //得到该节点的子节点return nodelist;}#endregion#region Xml插入数据/// <summary>/// Xml指定节点元素属性插入数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="element">元素名</param>/// <param name="attribute">属性名</param>/// <param name="value">属性数据</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.XmlInsertValue(path, "/books", "book", "author", "Value")************************************************/public static void XmlInsertValue(string path, string node, string element, string attribute, string value){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xmlNode = doc.SelectSingleNode(node);if (element.Equals("")){if (!attribute.Equals("")){XmlElement xe = (XmlElement)xmlNode;xe.SetAttribute(attribute, value);}}else{XmlElement xe = doc.CreateElement(element);if (attribute.Equals(""))xe.InnerText = value;elsexe.SetAttribute(attribute, value);//添加新增的节点xmlNode.AppendChild(xe);}//保存Xml文档doc.Save(path);}catch { }}#endregion#region Xml修改数据/// <summary>/// Xml指定节点元素属性修改数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="attribute">属性名</param>/// <param name="value">属性数据</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.XmlUpdateValue(path, "/books", "book","author","Value")************************************************/public static void XmlUpdateValue(string path, string node, string attribute, string value){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xmlNode = doc.SelectSingleNode(node);XmlElement xmlElement = (XmlElement)xmlNode;if (attribute.Equals(""))xmlElement.InnerText = value;elsexmlElement.SetAttribute(attribute, value);//保存Xml文档doc.Save(path);}catch { }}#endregion#region Xml删除数据/// <summary>/// 删除数据/// </summary>/// <param name="path">路径</param>/// <param name="node">节点</param>/// <param name="attribute">属性名</param>/// <returns></returns>/*************************************************** 使用示列:* XmlHelper.XmlDelete(path, "/books", "book")************************************************/public static void XmlDelete(string path, string node, string attribute){try{XmlDocument doc = new XmlDocument();doc.Load(path);XmlNode xn = doc.SelectSingleNode(node);XmlElement xe = (XmlElement)xn;if (attribute.Equals(""))xn.ParentNode.RemoveChild(xn);elsexe.RemoveAttribute(attribute);doc.Save(path);}catch { }}#endregion}
相关文章:
【干货集】C# XmlHelper帮助类操作Xml文档的通用方法汇总
前言 该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法(主要包括Xml序列化和反序列化,Xml文件读取,Xml文档节点内容增删改的一些通过方法)。当然可…...

Coursera自然语言处理专项课程04:Natural Language Processing with Attention Models笔记 Week01
Natural Language Processing with Attention Models Course Certificate 本文是学习这门课 Natural Language Processing with Attention Models的学习笔记,如有侵权,请联系删除。 文章目录 Natural Language Processing with Attention ModelsWeek 01…...

mysql MHA高可用
目录 工作原理 Node(节点) Manager(管理器) Node和Manager的协作 故障转移流程 优势 配置和管理 配置主从复制 MHA实现高可用 MySQL Master High Availability(MHA)是一个开源的高可用性解决方案&…...
android 扫描二维码
1.在你的build.gradle文件中添加Mobile Vision库的依赖: dependencies {implementation com.google.android.gms:play-services-vision:20.1.0 } 2.创建一个新的Activity来处理扫描过程。 import android.Manifest; import android.content.pm.PackageManager; i…...

[flink 实时流基础] 输出算子(Sink)
学习笔记 Flink作为数据处理框架,最终还是要把计算处理的结果写入外部存储,为外部应用提供支持。 文章目录 **连接到外部系统****输出到文件**输出到 Kafka输出到 mysql自定义 sink 连接到外部系统 Flink的DataStream API专门提供了向外部写入数据的方…...

case语句
Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 CASE 语句的执行方式与 IF...THEN...ELSIF 语句的执行方式类似,但是它是通过一个表达式的值来决定执行哪个分支 CASE 选择器表达式 WHEN 条件 1 THEN 语句序列 …...

全国加油站分布数据/停车场分布/公园分布/景区分布/保护区分布/poi感兴趣点
加油站是指为汽车和其它机动车辆服务的、零售汽油和机油的补充站,一般为添加燃料油、润滑油等。由于加油站所销售的石油商品具有易燃爆、易挥发、易渗漏、易集聚静电荷的特性,故加油站以“安全”为第一准则。在加油站内严禁烟火,严禁从事可能…...

单片机简介(一)
51单片机 一台能够运行的计算机需要CPU做运算和控制,RAM做数据存储,ROM做程序存储,还有输入/输出设备(串行口、并行输出口等),这些被分为若干块芯片,安装在主板(印刷线路板…...
Naiveui将message挂载到axios拦截器
最近在做项目,需要将后端的请求结果打印出来 但是想着,要是这样一个一个手动引入naiveui的msg,那不得累死 于是灵机一动,想着既然所有接口要通过拦截器,为什么不将msg写在拦截器呢 一、定义一个消息挂载文件 // The…...

MySQL、Oracle查看字节和字符长度个数的函数
目录 0. 总结1. MySQL1.1. 造数据1.2. 查看字符/字节个数 2. Oracle2.1. 造数据2.2. 查看字符/字节个数 0. 总结 databasecharbyteMySQLchar_length()length()Oraclelength()lengthB() 1. MySQL 1.1. 造数据 sql drop table if exists demo; create table demo (id …...

第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》
翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇广…...

ES6: class类
类 class 面相对象class关键字创建类关于类的继承 面相对象 一切皆对象。 举例: 操作浏览器要使用window对象;操作网页要使用document对象;操作控制台要使用console对象; ES6中增加了类的概念,其实ES5中已经可以实现类…...

[中级]软考_软件设计_计算机组成与体系结构_08_输入输出技术
输入输出技术 前言控制方式考点往年真题 前言 输入输出技术就是IO技术 控制方式 程序控制(查询)方式:分为无条件传送和程序查询方式两种。 方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。 程序中断方式࿱…...
2024-04-04 问AI: 在深度学习中,微调是什么?
文心一言 在深度学习中,微调(Fine-tuning)是一种训练策略,特别针对预训练模型进行。预训练模型通常是在大规模无标注数据上通过自监督学习得到的,它们已经具备了对一般自然语言结构或视觉特征的良好理解能力。微调则是…...
db2数据仓库集群的搭建
db2数据仓库集群的搭建 DB2 集群的搭建通常涉及到多个环节,包括网络配置、DB2 软件安装、集群配置和数据库创建等。以下是搭建DB2集群的基本步骤,并不是实际的命令和配置,因为每个环境的具体配置可能会有所不同。 1、网络配置:确…...
Linux ARM平台开发系列讲解(u-boot篇) 5.1 u-boot的启动流程分析(ARMv8-a)
1. 概述 对于嵌入式来说,bootload对于开发人员来说并不陌生,但是在不同芯片架构中,bootload程序所做的一些操作是有所不同的,比如常见的STM32 Cotex-M和RK3568 之间的启动流程所做的操作是有所不同的。本小节就来概述一下U-boot的启动流程: 注意:本章节中的源码我大多数…...
ST表(数据结构中的问题)
RMQ问题 RMQ问题指对于数值,每次给一个区间[l,r],要求返回区间区间的最大值或最小值 也就是说,RMQ就是求区间最值的问题 对于RMQ问题,容易想到一种O(n)的方法,就是用i直接遍历[l,r]区间&…...

一、OpenCV(C#版本)环境搭建
一、Visual Studio 创建新项目 二、选择Windows窗体应用(.NET Framework) 直接搜索模板:Windows窗体应用(.NET Framework) 记得是C#哈,别整成VB(Visual Basic)了 PS:若搜索搜不到,直接点击安装多个工具和…...
ubuntu远程服务部署,Docker,蓝牙无线局域网,SSH,VNC,xfce4,NextTerminal,宝塔,NPS/NPC,gost,openwrt
SSH服务 apt update apt upgrade -y apt install -y openssh-server/etc/ssh/sshd_config PermitRootLogin yesDocker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun apt install -y docker-compose宝塔 wget -O install.sh https://download.bt.cn…...

kettle安装与部署使用教程
kettle 官网下载与部署使用 文章目录 kettle 官网下载与部署使用1. 前言:2. 访问官方网站:3. Download Pentaho3.1 官网首页**滑动到最底**,寻找下载链接:3.2 跳转到下载界面后,选择 Pentaho Community Edition (CE)3.…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...