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

Qt使用单例模式读取xml文件

Qt使用单例模式读取xml文件

  • 一、单例模式介绍
    • 1、什么是单例模式
    • 2、为什么使用单例模式
    • 3、什么情况下使用单例模式
    • 4、使用单例模式需要注意哪些问题
        • 线程安全
    • 5、单例模式的类型
    • 6、单例类的特点
  • 2、单例模式的实现
    • 2.1懒汉式
    • 2.2饿汉式

一、单例模式介绍

1、什么是单例模式

单例模式是指在整个系统生命周期内,保证一个类只能产生一个实例,确保该类的唯一性。

2、为什么使用单例模式

1、节省资源。一个类只有一个实例,不存在多份实例,节省资源。
2、方便控制。在一些操作公共资源的场景时,避免了多个对象引起的复杂操作。

3、什么情况下使用单例模式

在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

4、使用单例模式需要注意哪些问题

线程安全
  • 什么是线程安全

在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。

  • 如何保证线程安全

1、给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用。
2、让线程也拥有资源,不用去共享进程中的资源。如:使用threadlocal可以为每个线程维护一个私有的本地变量。

5、单例模式的类型

  • 懒汉式

系统运行中,实例并不存在,只有当需要使用该实例时,才会去创建并使用实例。这种方式要考虑线程安全。

  • 饿汉式

系统一运行,就初始化创建实例,当需要时,直接调用即可。这种方式本身就线程安全,没有多线程的线程安全问题。

6、单例类的特点

  • 构造函数和析构函数为私有类型,目的是禁止外部构造和析构。
  • 拷贝构造函数和赋值构造函数是私有类型,目的是禁止外部拷贝和赋值,确保实例的唯一性。
  • 类中有一个获取实例的静态方法,可以全局访问。

2、单例模式的实现

2.1懒汉式

Created with Raphaël 2.3.0 开始 使用单例对象 单例对象是否实例化? 返回单例对象 实例化单例对象 yes no

加锁的懒汉式单例(线程安全)
头文件:

///  加锁的懒汉式实现  //class SingleInstance
{public:// 获取单实例对象static SingleInstance *GetInstance();//释放单实例,进程退出时调用static void deleteInstance();//返回所有的IPQVariantList getIP(){return m_ips;}//获取XML文件bool initalize();// 打印实例地址void Print();private:// 将其构造和析构成为私有的, 禁止外部构造和析构SingleInstance();~SingleInstance();// 将其拷贝构造和赋值构造成为私有函数, 禁止外部拷贝和赋值SingleInstance(const SingleInstance &signal);const SingleInstance &operator=(const SingleInstance &signal);//解析xml中的内容void parseIP(const QDomNode &root);private:// 唯一单实例对象指针static SingleInstance *m_SingleInstance;static std::mutex m_Mutex;//存储IPQVariantList m_ips;
};

源文件:

//初始化静态成员变量
SingleInstance *SingleInstance::m_SingleInstance = nullptr;
std::mutex SingleInstance::m_Mutex;// 注意:不能返回指针的引用,否则存在外部被修改的风险!
SingleInstance * SingleInstance::GetInstance()
{//  这里使用了两个 if 判断语句的技术称为双检锁;好处是,只有判断指针为空的时候才加锁,//  避免每次调用 GetInstance的方法都加锁,锁的开销毕竟还是有点大的。if (m_SingleInstance == nullptr) {std::unique_lock<std::mutex> lock(m_Mutex); // 加锁if (m_SingleInstance == nullptr){volatile auto temp = new (std::nothrow) SingleInstance();m_SingleInstance = temp;}}return m_SingleInstance;
}void SingleInstance::deleteInstance()
{std::unique_lock<std::mutex> lock(m_Mutex); // 加锁if (m_SingleInstance){delete m_SingleInstance;m_SingleInstance = nullptr;}
}bool SingleInstance::initalize()
{QString path("目录");QFile file(path);if(file.exists()){if(file.open(QIODevice::ReadOnly | QIODevice::Truncate)){QString error;QDomDocument document;document.setContent(&file, &error);file.close();if(document.isNull()){qDebug() << QString("文件格式异常:1%").arg(error);return false;}QDomNode root = document.firstChild();parseIP(root);}else{qDebug() << QString("%1:文件不存在,:2%").arg(path).arg(file.errorString());}}else{qDebug() QString("%1:文件不存在!").arg(path);return false;}return !m_ips.isEmpty();
}void SingleInstance::Print()
{std::cout << "我的实例内存地址是:" << this << std::endl;
}SingleInstance::SingleInstance()
{std::cout << "构造函数" << std::endl;
}SingleInstance::~SingleInstance()
{std::cout << "析构函数" << std::endl;deleteInstance();
}void SingleInstance::parseIP(const QDomNode &root)
{QDomNode startnode = root.nextSibling();QDomNode node = startnode.firstChild();while(!node.isNull()){QVariantMap ips;ips.clear();QDomElement element = node.toElement();ips.insert("ip", element.attribute("ip"));ips.insert("port", element.attribute("port"));ips.insert("multiip", element.attribute("multiip"));}}

main.cpp

if(Singleton::GetInstance()->initalize())
{
...
}

2.2饿汉式

头文件

// 饿汉实现 /class Singleton
{
public:// 获取单实例static Singleton* GetInstance();// 释放单实例,进程退出时调用static void deleteInstance();//返回所有的IPQVariantList getIP(){return m_ips;}//获取XML文件bool initalize();// 打印实例地址void Print();private:// 将其构造和析构成为私有的, 禁止外部构造和析构Singleton();~Singleton();// 将其拷贝构造和赋值构造成为私有函数, 禁止外部拷贝和赋值Singleton(const Singleton &signal);const Singleton &operator=(const Singleton &signal);//解析xml中的内容void parseIP(const QDomNode &root);private:// 唯一单实例对象指针static Singleton *g_pSingleton;//存储IPQVariantList m_ips;
};

源文件:

// 代码一运行就初始化创建实例 ,本身就线程安全
Singleton* Singleton::g_pSingleton = new (std::nothrow) Singleton();Singleton* Singleton::GetInstance()
{return g_pSingleton;
}void Singleton::deleteInstance()
{if (g_pSingleton){delete g_pSingleton;g_pSingleton = nullptr;}
}bool SingleInstance::initalize()
{QString path("目录");QFile file(path);if(file.exists()){if(file.open(QIODevice::ReadOnly | QIODevice::Truncate)){QString error;QDomDocument document;document.setContent(&file, &error);file.close();if(document.isNull()){qDebug() << QString("文件格式异常:1%").arg(error);return false;}QDomNode root = document.firstChild();parseIP(root);}else{qDebug() << QString("%1:文件不存在,:2%").arg(path).arg(file.errorString());}}else{qDebug() QString("%1:文件不存在!").arg(path);return false;}return !m_ips.isEmpty();
}void Singleton::Print()
{std::cout << "我的实例内存地址是:" << this << std::endl;
}Singleton::Singleton()
{std::cout << "构造函数" << std::endl;
}Singleton::~Singleton()
{std::cout << "析构函数" << std::endl;deleteInstance();
}void SingleInstance::parseIP(const QDomNode &root)
{QDomNode startnode = root.nextSibling();QDomNode node = startnode.firstChild();while(!node.isNull()){QVariantMap ips;ips.clear();QDomElement element = node.toElement();ips.insert("ip", element.attribute("ip"));ips.insert("port", element.attribute("port"));ips.insert("multiip", element.attribute("multiip"));}}

main.cpp

if(Singleton::GetInstance()->initalize())
{
...
}

xml说明

<?xml version="1.0" encoding="utf-8"?>XML声明是XML文档的第一句
<ips>
<ip ip="xxx" port="xxx" multiip="xxx"/>
</ips>

相关文章:

Qt使用单例模式读取xml文件

Qt使用单例模式读取xml文件 一、单例模式介绍1、什么是单例模式2、为什么使用单例模式3、什么情况下使用单例模式4、使用单例模式需要注意哪些问题线程安全 5、单例模式的类型6、单例类的特点 2、单例模式的实现2.1懒汉式2.2饿汉式 一、单例模式介绍 1、什么是单例模式 单例模…...

备战蓝桥杯 Day6(学习动态规划)

引入 支付问题 假设有无限多的硬币&#xff0c;硬币面值为1,5,11。现在需要支付15元&#xff0c;问最少使用的硬币数&#xff1f; 贪心策略&#xff1a;1511*11*4&#xff0c;145 真正的答案153*5 3 dp的两个性质 最优子结构无后效性 dp的两大要素 1.状态2.状态转移方程 思路…...

【uniapp】自定义步骤条样式

代码实现 <view class"steps-wrap"><view class"flex-box"><view class"number active-number">1</view><view class"desc active-desc">步骤1</view><view :class"[line, activeStep …...

UE5 C++ UObject实例化

一.创建UObject C类 在MyObject中声明结构体FMyDataTableStruct 在MyPawn里面&#xff0c;先将头文件里包含 MyObject.h 在MyPawn中声明一个UMyObject类型的指针 TSubclassOf 是提供 UClass 类型安全性的模板类。例如您在创建一个投射物类&#xff0c;允许设计者指定伤害类型…...

Appium环境安装与架构介绍

Appium架构 Appium 设计哲学 不需要为了自动化而重新编译或修改被测应用不应该让移动端自动化测试限定在某种语言或者某个具体的框架不要为了移动端的自动化测试而重新造轮子移动端自动化测试应该是开源的 Appium 架构 Appium 架构图如下&#xff1a; Appium 的核心是一个 …...

Vue+Vite项目初建(axios+Unocss+iconify)

一. 创建项目 npx --package vue/cli vue 项目成功启动后&#xff0c;进入http://localhost:3200&#xff0c;即可进入创建好的页面(假设启动端口为3200) 二. 测试网络通讯模块 假设有本地服务器地址localhost:8000提供接口服务&#xff0c;接口为localhost:8000/token&#…...

ASUS华硕枪神8笔记本电脑G614JIR,G814JVR,G634JYR,G834JZR工厂模式出厂Windows11系统 带重置还原功能

适用ROG枪神8系列笔记本型号&#xff1a; G614JIR、G614JVR、G634JYR、G634JZR G814JIR、G814JVR、G834JYR、G834JZR 链接&#xff1a;https://pan.baidu.com/s/1tYZt6XFNC2d6YmwTbtFN7A?pwd3kp8 提取码&#xff1a;3kp8 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主…...

Python入门:常用模块—xml模块

xml是实现不同语言或程序之间进行数据交换的协议&#xff0c;跟json差不多&#xff0c;但json使用起来更简单 xml的格式如下&#xff0c;就是通过<>节点来区别数据结构的: <data> <country name"Liechtenstein"> <rank updated"yes"…...

蓝队应急响应工具箱v2024.1​

1 蓝队工具箱 v2024.1 2 简介 蓝队工具箱是为打造一款专业级应急响应的集成多种工具的工具集&#xff0c;由真实应急响应环境所用到的工具进行总结打包而来&#xff0c;由 ChinaRan404,W 啥都学,清辉等开发者编写.把项目现场中所用到的工具连同环境一同打包&#xff0c;并实…...

Linux中获取字符串长度与获取子字符串

一、 获取字符串长度 #!/bin/bash string"jobs" echo ${string} # 输出结果: jobs echo ${#string} # 输出结果: 4 二、提取子字符串 以下实例从字符串第 2 个字符开始截取 4 个字符&#xff1a; #!/bin/bash str"敢于亮剑决不后退" echo ${str:2:…...

Rust语言之sha-256爆破

文章目录 一、实现Sha-256加密1.创建项目2.编写Cargo.toml文件3.编写程序代码 二、sha256爆破1.获取命令行参数2.读取文件3.校验输入参数4.暴力破解 一、实现Sha-256加密 SHA-256是一种安全哈希算法&#xff0c;主要特点是将输入的数据&#xff08;无论长度&#xff09;通过特定…...

Rust中的字符串处理及相关方法详解

在Rust中&#xff0c;字符串是一种非常重要的数据类型&#xff0c;而String类型则提供了对动态可变字符串的支持。本文将介绍一些常见的字符串处理方法以及相关示例代码。 创建字符串 在Rust中&#xff0c;有多种方式创建字符串&#xff0c;以下是一些常见的例子&#xff1a;…...

NS安装-CentOS服务器安装Nightscout CGM

NS CGM 安装必要条件 有自己的云服务器好像没有2&#xff0c;有云服务器就行了 安装顺序 先安装数据库&#xff0c;目前支持的是 MongoDB &#xff0c;官方推荐4&#xff0c;其实目前最新版本就行。可以用宝塔安装&#xff0c;比较简单克隆代码&#xff0c;我是放到 /opt/ns…...

利用ChatGPT提升工作效率

随着科技的飞速发展&#xff0c;人工智能逐渐成为我们生活的一部分。ChatGPT作为一种先进的自然语言处理技术&#xff0c;已经在各个领域取得了显著的成果。本文将探讨如何利用ChatGPT提升工作效率&#xff0c;让我们的生活变得更加便捷。 一、什么是ChatGPT&#xff1f; ChatG…...

django admin页面美化

美化 Django Admin 页面可以通过多种方式实现&#xff0c;从简单的 CSS 样式调整到完全自定义模板。以下是一些建议和步骤来美化 Django Admin 页面&#xff1a; 1. 使用 CSS 覆盖默认样式 这是最简单的方法&#xff0c;你可以通过添加自定义 CSS 文件来覆盖 Django Admin 的…...

Git 操作以及Git 常见问题

Git 操作 git 教程&#xff1a;https://www.runoob.com/git/git-tutorial.html 基本概念 工作区&#xff1a;克隆项目到本地后&#xff0c;项目所在的文件夹&#xff1b; 暂存区&#xff1a;从工作区添加上来的变更&#xff08;新增&#xff0c;修改&#xff0c;删除&#xff…...

如何学习和规划类似ChatGPT这种人工智能(AI)相关技术

学习和规划类似ChatGPT这种人工智能&#xff08;AI&#xff09;相关技术的路径通常包括以下步骤&#xff1a; 学习基础知识&#xff1a; 学习编程&#xff1a;首先&#xff0c;你需要学习一种编程语言&#xff0c;例如Python&#xff0c;这是大多数人工智能项目的首选语言。数学…...

4 月 9 日至 4 月 10 日,Hack.Summit() 2024 首聚香江

Hack.Summit() 是一系列 Web3 开发者大会。2024 年的活动将于 2024 年 4 月 9 日至 4 月 10 日在香港数码港举行。自十年前首次举办以来&#xff0c;此次会议标志着 Hack.Summit() 首次在亚洲举办&#xff0c;香港被选为首次亚洲主办城市&#xff0c;这对 Hack VC 和该地区都具…...

[力扣 Hot100]Day29 删除链表的倒数第 N 个结点

题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 出处 思路 两个指针间隔n&#xff0c;一趟遍历解决。 代码 class Solution { public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* phead;ListNode* …...

探索设计模式的魅力:掌握命令模式-解锁软件设计的‘遥控器’

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;并且坚持默默的做事。 引言&#xff1a;探索命令模式的奥秘 软件设计领域充满挑战与机遇&#xff0c;命令模式…...

LNMP搭建discuz论坛

discuz论坛是一种网络论坛软件&#xff0c;也称bbs&#xff0c;它是一种用于在互联网上建立论坛社区的程序系统。只哟中功能强大的论坛软件&#xff0c;可以帮助用户建立一个专业、完善的论坛社区&#xff0c;并且可以实现多种功能&#xff0c;如搭建用户注册、登录、查看主题、…...

257.【华为OD机试真题】幼儿园篮球游戏(贪心算法-JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目二.解题思路三.题解代码Python题解代码JAVA题解…...

[计算机网络]深度学习传输层TCP协议

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录专栏&#xff1a;深度学习传输层TCP协议 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 [计算机网络]深度学习传输层TCP协议 前提概括一: TCP协议段格式二:确认应答三:超时重传四:…...

动态头部:统一目标检测头部与注意力

摘要 在目标检测中&#xff0c;定位与分类相结合的复杂性导致了各种方法的蓬勃发展。以前的工作试图提高在不同的目标检测头的性能&#xff0c;但未能呈现一个统一的视图。在本文中&#xff0c;我们提出了一种新的动态头部框架来统一目标检测头部和注意力。通过在尺度感知的特…...

【状态估计】深度传感器与深度估计算法(1/3)

深度传感器与深度估计算法 深度传感器概念 获得空间中目标位置或距离的传感器&#xff0c;按接收的媒介波来源可分为主动式和被动式两大范畴&#xff0c;主动式包括激光雷达、雷达、超声波传感器等&#xff0c;被动式主要为单目、多目相机等&#xff0c;同时两大类可组合为混…...

ClickHouse从入门到精通(高级)

第1章 Explain查看执行计划 第2章 建表优化 第3章 ClickHouse语法优化规则 第4章 查询优化 第5章 数据一致性(重点) 第6章 物化视图 第7章 MaterializeMySQL引擎 第8章 常见问题排查...

什么是Docker的容器编排工具,它们之间有何不同?

随着Docker容器技术的广泛应用&#xff0c;容器编排工具成为了自动化部署、扩展和管理容器化应用程序的关键组件。这些工具提供了一种抽象层&#xff0c;帮助开发者和管理员更高效地管理大量的Docker容器&#xff0c;确保它们在不同的主机和环境中能够可靠地运行。目前&#xf…...

qml之Control类型布局讲解,padding属性和Inset属性细讲

1、Control布局图 2、如何理解&#xff1f; *padding和*Inset参数如何理解呢&#xff1f; //main.qml import QtQuick 2.0 import QtQuick.Controls 2.12 import QtQuick.Layouts 1.12 import QtQuick.Controls 1.4 import QtQml 2.12ApplicationWindow {id: windowvisible: …...

【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题

文章目录 Jprofiler简介1.安装及IDEA集成Jprofiler2.如何监控并解决死锁3.如何监控及解决内存泄露(重点)4.总结5.后话 Jprofiler简介 Jprofilers是针对Java开发的性能分析工具(免费试用10天), 可以对Java程序的内存,CPU,线程,GC,锁等进行监控和分析, 1.安装及IDEA集成Jprofil…...

运行错误(竞赛遇到的问题)

在代码提交时会遇见这样的错误&#xff1a; 此处运行错误不同于编译错误和答案错误&#xff0c;运行错误是指是由于在代码运行时发生错误&#xff0c;运行错误可能是由于逻辑错误、数据问题、资源问题等原因引起的。这些错误可能导致程序在运行时出现异常、崩溃。 导致不会显示…...

nodename nor servname provided, or not known

异常信息 在 Maven 打包过程中出现的 nodename nor servname provided, or not known 异常通常是由于 Maven 无法解析某个域名&#xff0c;这可能是因为网络问题、DNS 解析失败或者 Maven 配置中指定的仓库地址错误导致的。这个问题通常出现在 Maven 试图从远程仓库下载依赖时 …...

前端vue金额用逗号分隔

实现效果 代码 template部分 <el-input v-model"state.val"></el-input><div>{{ priceFor(state.val) }}</div> js部分 const state reactive({ val: });const priceFor (val)> {if(!val){return }else if(val.length<4){return…...

vulvhub-----Hacker-KID靶机

打靶详细教程 1.网段探测2.端口服务扫描3.目录扫描4.收集信息burp suite抓包 5.dig命令6.XXE漏洞读取.bashrc文件 7.SSTI漏洞8.提权1.查看python是否具备这个能力2.使用python执行exp.py脚本&#xff0c;如果提权成功&#xff0c;靶机则会开放5600端口 1.网段探测 ┌──(root…...

遨博I20协作臂关节逆解组Matlab可视化

AUBO I20协作臂关节逆解组Matlab可视化 前言1、RTB使用注意点2、代码与效果2.1、完整代码2.2、运行效果 总结 前言 注意&#xff1a;请预先配置好Matlab和RTB机器人工具箱环境&#xff0c;本文使用matlab2022b和RTB10.04版本 工作需要&#xff0c;使用matlab实现对六轴机械臂…...

力扣题目训练(15)

2024年2月8日力扣题目训练 2024年2月8日力扣题目训练507. 完美数520. 检测大写字母521. 最长特殊序列 Ⅰ221. 最大正方形237. 删除链表中的节点115. 不同的子序列 2024年2月8日力扣题目训练 2024年2月8日第十五天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括…...

PCB差模辐射是如何产生的

在电路应用中,高频时钟信号往往会采用差分线传输模式,其优点是在提高速率的同时减小功耗和提高抗扰度,因此,差模辐射就成为电路正常工作的结果,是电流流过导体形成的环路所产生,差模辐射模型可以被模拟为一个小环形天线,对于一个面积为A的小环路,载有电流Idm,在远场中…...

车载诊断协议DoIP系列 —— 协议中术语解释和定义

车载诊断协议DoIP系列 —— 协议中术语解释和定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,…...

【退役之重学前端】关于在控制台得到undefined的事

在浏览器控制台中&#xff0c;undefined 会时不时地&#xff0c;在我不想看到的地方出现。如果你遇到相同的问题&#xff0c;在这篇博客中你会得到答案。 先来看代码块 function test(){} test()//undefined再看下一个代码块 function test(){return 1; } test()//1再来看一个…...

指数和估计六大问题

1955年英国著名数学家R.A.Rankin在牛津大学出版的数学刊物Quart.J.Math.发表了论文&#xff08;现 FRS D.R.Heath-Brown为主编&#xff09;&#xff0c;专门讲van der Corput方法产生的指数对理论&#xff08;1933年E.Phillips提出的精彩理论&#xff0c;好友曲阜师范大学毕业中…...

【软件相关】基于Alist挂载云盘到本地文件资源管理器

文章目录 0 前言1 Alist挂载云盘2 RaiDrive配置3 rclone配置 0 前言 因为最近在研究各种云盘存储影视资源的方法&#xff0c;无意间看到一个教程是利用软件将云盘挂载到本地的资源管理器&#xff0c;这样就能实现类似本地文件操作的方式来操作云盘文件&#xff0c;还是有点意思…...

Java多线程系列——锁

0.引言 在并发编程中&#xff0c;锁是一种重要的同步机制&#xff0c;用于控制对共享资源的访问。Java 提供了多种锁的实现&#xff0c;每种锁都有不同的特性和适用场景。本文将深入介绍 Java 中常见的锁类型&#xff0c;包括内置锁、显式锁、读写锁等&#xff0c;并讨论它们的…...

蓝牙BLE学习-GAP

1.概述 GAP层&#xff08;Generic access profile-通用访问配置文件&#xff09;。GAP是对LL层payload&#xff08;有效数据包&#xff09;如何进行解析的两种方式的一种&#xff0c;而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义&#xff0c;因此GAP能实现的…...

算法训练营day28(补), 贪心算法2

//122. 买卖股票的最佳时机 II func maxProfit(prices []int) int { result : 0 //利润总和 for i : 1; i < len(prices); i { if prices[i]-prices[i-1] > 0 { result result (prices[i] - prices[i-1]) } } return result } //55. 跳跃游戏 func canJump(nums []…...

Vue核心基础4:绑定样式、条件渲染、列表渲染

1 绑定样式 【代码】 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>绑定样式</title><s…...

go-zero读取mysql部分字段

读取部分字段&#xff0c;使用函数 QueryRowPartialCtx 。 假设有如下一张表&#xff1a; CREATE TABLE test (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, ctime DATETIME);要读取字段 ctime 值。 定义一结构体&#xff1a; type X struct {state int db:"…...

反转一个单链表

反转一个单链表 题意&#xff1a;反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路 需要虚拟节点么&#xff1f; 答&#xff1a;不需要&#xff0c;因为没有删除节点&#xff0c;只是改变了节点的指向。 遍…...

拿捏c语言指针(中)

前言 书接上回 拿捏c语言指针&#xff08;上&#xff09; 此篇主要讲解的是指针与数组之间的爱恨情仇&#xff0c;跟着我的脚步一起来看看吧~ 创造不易&#xff0c;可以帮忙点点赞吗 如有差错&#xff0c;欢迎指出 理解数组名 数组名是首元素地址 例外 1.sizeof&#xff0…...

鸿蒙语言ArkTS(更好的生产力与性能)

ArkTS是鸿蒙生态的应用开发语言 ArkTS提供了声明式UI范式、状态管理支持等相应的能力&#xff0c;让开发者可以以更简洁、更自然的方式开发应用。 同时&#xff0c;它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;进一步通过规范强化静态检…...

VBA技术资料MF120:打印固定标题行列

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…...

MongoDB聚合运算符:$add

$add运算符将将数字相加或将数字和日期相加。如果参数之一是日期&#xff0c;则 $add会将其他参数视为毫秒&#xff0c;并添加到日期中。 语法 { $add: [ <expression1>, <expression2>, ... ] }参数可以是任何有效的表达式&#xff0c;只要能否解析为数值或日期…...