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

六、初始化与清理(Initialization cleanup)

六、初始化与清理(Initialization & cleanup)

本章内容主要介绍C++中的 构造函数析构函数 的作用与用法,以及默认构造、聚合初始化等相关特性

  • 封装 和 *访问控制 *在提升库使用的便捷性方面迈出了重要的一步。
  • 在安全性方面,C++编译器比C能为我们做更多的事情。
  • 这些安全问题中有两个是 初始化清理

6.1 使用构造函数进行初始化(Initialization with the constructor)

特点(1)

  • 初始化过于重要,不能交由客户程序员处理。构造函数用于初始化对象。
  • 编译器会在创建对象时自动调用构造函数。
  • 构造函数的识别方式是它与类同名
  • 构造函数可以被重载
  • 构造函数没有返回值

有构造函数的简单class例子

class X
{int i;
public:X(){i = 0;}
};

现在,当一个对象被定义时,

void f(){X a;}

将为对象分配存储空间。构造函数会被自动调用,即X:x()

特点(2)

  • 和任何成员函数一样,构造函数的第一个(隐藏的)参数时this 指针——它是正在调用构造函数的对象(内存块)的地址。
  • 构造函数可以有参数。
  • 构造函数参数为你提供了一种方式,以确保对象的所有部分都被初始化为合适的值。

示例

#include <iostream>using namespace std;class Date
{int year,month,day;
public:Date(int y,int m,int d);void print(){cout << year << "." << month << "." << day << endl;}
};Date::Date(int y,int m,int d) //definiton
{year = y;month = m;day = d;
}void main()
{Date date(2005,7,5);date.print();
}

输出

2005,7,5

使用析构函数进行清理(Cleanup with the destructor)

概述

  • 在C++中,清理适合初始化一样重要的。
  • 析构函数(Destructor)可以用于对象销毁的清理操作。
  • 特点
    • 名字为~类名
    • 无参数,不可重载
    • 无返回值
    • 编译器在对象销毁时自动调用

构造函数和析构函数

编号构造函数(Constructor)析构函数(Destrucetor)
1构造函数用于初始化对象并构造指定类型的值。析构函数用于清理并释放资源。
2构造函数通过与类同名来识别。析构函数通过与类同名并带有符号~ 来识别。
3构造函数可以有形式参数,并且可以被重载析构函数没有形式参数不能被重载
4构造函数没有返回值。析构函数没有返回值。
5在对象被创建时会自动调用构造函数。在对象被销毁时会自动调用析构函数。

示例

#include <iostream>using namespace std;class Date
{int year,month,day;
public:Date(int y,int m,int d)//constructor{year = y;month = m;day = d;cout << "Constructor called." << endl;}~Date(){cout << "Destructor called." << endl;}//Destructorvoid Print(){cout << year << "." << month << "." << day << "." << endl;}
};void main()
{Date today(2025,4,23),tomorrow(2025,4,24);cout << "Today is ";today.Print();cout << "Tomorrow is ";tomorrow.Print();
}

输出:

Constructor called.    //Today
Constructor called.    //Tomorrow
Today is 2025.4.23.
Tomorrow is 2025.4.24.
Destructor called.		//Tomorrow
Destructor called.		//Today

析构顺序是 先建后析 ,和栈一样

//C06:Constructor1.cpp
//Constructor & destructor
#include <iostream>
using namespace std;
class Tree
{int height;
public:Tree(int initialHeight);//Constructor~Tree();//Destructorvoid grow(int years);void printsize();
};Tree::Tree(int initialHeight)
{height = initialHeight;
}
Tree::~Tree()
{cout << "inside Tree destructor" << endl;printsize();
}
void Tree::grow(int years)
{height+=years;
}
void Tree::printsize()
{cout << "Tree height is " << height << endl;
}void main()
{cout << "before opening brace" << endl;{Tree t(12);cout << "after Tree creation" << endl;t.printsize();t.grow(4);cout << "before closing brace" << endl;}cout << "after closing brace" << endl;
}

输出:

before opening brace
after Tree creation
Tree height is 12
before clong brace
inside Tree destructor
Tree height is 16
after closing brace

6.3 消除定义块(Elimination of the definition block)

  • C++支持在作用域的任意位置定义变量。
  • 最佳实践
    • 尽可能靠近使用初定义变量
    • 定义时初始化
  • 这样做有助于提升安全性与代码可读性

6.4 Stash类(含构造函数和析构函数)

Stash2.h

//C06:Stash2.h
#ifndef STASH2_H
#define STASH2_H
class Stash
(int size; // Size of each spaceint quantity; //Number of storage spacesint next;// Next empty spaceunsigned char* storage;void inflate(int increase);
public:Stash(int size);~Stash();int add(void* element);void* fetch(int index);int count();
);
//endif

Stash2.cpp

//C06:Stash2.cpp
#include "Stash2.h"
#include <iostream>
#include <assert>
using namespace std;
const int increment = 100;
Stash::Stash(int sz){size = sz;quantity = 0;storage = 0;next = 0;}
int Stash::add(void* element){…………}
void* Stash::fetch(int index){…………}
int Stash::count(){…………}
void Stash::inflate(int increment){…………}
Stash::~Stash(){if (storage != 0){cout << "freeing storage" << endl;delete []storage;}
}

6.5 Stack类(含构造函数和析构函数)

Stack3.h

//C06:Stack3.h
#ifndef STACK3_H
#define STACK3_H
class Stack{struct Link{void* data;Link* data;Link* next;Link(void* dat,Link* nxt);~Link();}* head;
public:Stack();~Stack();void push(void* dat);void* peek();void* pop();
};
#endif

Stack3.cpp

//C06:Stack3.cpp
#include "Stack3.h"
#include <cassert>
using namespace std;Stack::Link::Link(void* dat,Link* nxt){data = dat;next = nxt;
}
Stack::Link::~Link(){}
Stack::Stack(){head = 0;}
void Stack::push(void* dat){head = new Link(dat,head);
}
void* Stack::peep(){assert(head!=0 && "Stack empty");return head->data;
}
void* Stack::pop(){if (head == 0) return 0;void* result = head->data;Link* oldHead = head;head = head->next;delete oldHead;return result;
}Stack::~Stack(){assert(head==0 && "Stack not empty");}

6.6 聚合初始化(Aggregate Initialization)

概述

聚合初始化 是C++中一种通过大括号 {} 一次性为所有成员赋值 的方式 。它专门用于“简单的结构体或类”,也就是所谓的“聚合类型”,但也不限于聚合类型。

聚合类型的特点

  • 没有用户自定义的构造函数
  • 所有成员都是public
  • 没有基类
  • 没有虚函数

数组初始化

int a[5] = {1,2,3,4,5};
int b[6] = {2};
int c[] = {1,2,3,4};
  • 一个数组的size = sizeof(c)/sizeof(c[0])

对象数组初始化

Date y[2] = {Date(2001,2,3),Date(2003,4,5)};Date y[3];
y[0] = Date(2001,2,3);
y[1] = Date(2003,4,5);
y[2] = Date(2003,4,5);

示例

#include <iostream>
using namespace std;class Date
{int year,month,day;
public:Date(){year = month = day = 0;cout << "Default constructor called." << endl;}Date(int y,int m,int d){year = y;month = m;day = d;cout << "Constructor called." << day << endl;}~Date(){cout << "Destructor called." << day << endl;}void Print(){cout << year << "." << month << "." << day << endl;}
};void main()
{Date date[3] = {Date(2003,9,20),Date(2003,9,21)};for (int i = 0;i < 3 ;i++){date[i].Print();}
}

输出:

Construcor called.20
Construcor called.21
Default constructor called.
2003.9.20
2003.9.21
0.0.0
Destructor called.0
Destructor called.21
Destructor called.20

6.7 默认构造函数

特点

  • 可以被无参调用。
  • 若用户未定义构造函数,编译器会默认生成一个。
  • 建议 显示定义构造函数,以增强控制力。

6.8 总结

  • 构造函数(初始化对象)
  • 析构函数(销毁时清理资源)
  • 默认构造函数
  • 聚合初始化
  • 构造与赋值的区别

相关文章:

六、初始化与清理(Initialization cleanup)

六、初始化与清理&#xff08;Initialization & cleanup&#xff09; 本章内容主要介绍C中的 构造函数 和 析构函数 的作用与用法&#xff0c;以及默认构造、聚合初始化等相关特性 封装 和 *访问控制 *在提升库使用的便捷性方面迈出了重要的一步。在安全性方面&#xff0…...

Python - 爬虫-网页解析数据-库lxml(支持XPath)

lxml是 Python 的第三方解析库&#xff0c;完全使用 Python 语言编写&#xff0c;它对 Xpath 表达式提供了良好的支持&#xff0c;支持HTML和XML的解析&#xff0c;支持XPath解析方式&#xff0c;而且解析效率非常高 XPath&#xff0c;全称XML Path Language&#xff0c;即XML…...

单片机 + 图像处理芯片 + TFT彩屏 触摸滑动条控件

触摸滑动条控件使用说明 一、项目概述 本项目基于单片机和RA8889/RA6809图形处理芯片的TFT触摸屏滑动条控件。该控件支持水平和垂直滑动条&#xff0c;可自定义外观和行为&#xff0c;并支持回调函数进行值变化通知。 硬件平台&#xff1a;51/ARM均可(测试时使用STC8H8K64U单…...

LeetCode每日一题4.24

2799. 统计完全子数组的数目 题目 问题分析 完全子数组 的定义&#xff1a;子数组中不同元素的数目等于整个数组不同元素的数目。 子数组 是数组中的一个连续非空序列。 思路 统计整个数组的不同元素数目&#xff1a; 使用 set 来获取整个数组的不同元素数目。 遍历所有子数…...

LeetCode238_除自身以外数组的乘积

LeetCode238_除自身以外数组的乘积 标签&#xff1a;#数组 #前缀和Ⅰ. 题目Ⅱ. 示例0. 个人方法一&#xff1a;暴力循环嵌套0. 个人方法二&#xff1a;前缀和后缀分别求积 标签&#xff1a;#数组 #前缀和 Ⅰ. 题目 给你一个整数数组 nums&#xff0c;返回 数组 answer &#…...

基于 Spring Boot 的银行柜台管理系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

LeetCode 2799.统计完全子数组的数目:滑动窗口(哈希表)

【LetMeFly】2799.统计完全子数组的数目&#xff1a;滑动窗口&#xff08;哈希表&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-complete-subarrays-in-an-array/ 给你一个由 正 整数组成的数组 nums 。 如果数组中的某个子数组满足下述条件&am…...

卡尔曼滤波解释及示例

卡尔曼滤波的本质是用数学方法平衡预测与观测的可信度 &#xff0c;通过不断迭代逼近真实状态。其高效性和鲁棒性&#xff0c;通常在导航定位中&#xff0c;需要融合GPS、加速度计、陀螺仪、激光雷达或摄像头数据&#xff0c;来提高位置精度。简单讲&#xff0c;卡尔曼滤波就是…...

在vue项目中实现svn日志打印

在vue项目中实现svn日志打印 实现svnlog创建svn-log脚本 convert-svn-log.js配置命令 package 实现svnlog 项目工程 类似于git的conventional-changelog 创建svn-log脚本 convert-svn-log.js 在项目根目录创建convert-svn-log.js const fs require(fs-extra); const xml2j…...

使用vue2开发一个医疗预约挂号平台-前端静态网站项目练习

对于后端开发的我&#xff0c;最近一直在学习前端开发&#xff0c;除了要学习一些前端的基础知识外&#xff0c;肯定少不了一些前端项目练习&#xff0c;就通过前端的编程知识 就简单做一个医疗预约挂号前端静态页面。这个网站主要是使用了vue2 的相关技术实现的。 主要实现了这…...

Redis的过期删除策略和内存淘汰策略

&#x1f914; 过期删除和内存淘汰乍一看很像&#xff0c;都是做删除操作的&#xff0c;这么分有什么意思&#xff1f; 首先&#xff0c;设置过期时间我们很熟悉&#xff0c;过期时间到了&#xff0c;我么的键就会被删除掉&#xff0c;这就是我们常认识的过期删除&#xff0c;…...

Langchain检索YouTube字幕

创建一个简单搜索引擎&#xff0c;将用户原始问题传递该搜索系统 本文重点&#xff1a;获取保存文档——保存向量数据库——加载向量数据库 专注于youtube的字幕&#xff0c;利用youtube的公开接口&#xff0c;获取元数据 pip install youtube-transscript-api pytube 初始化 …...

服务器上安装node

1.安装 下载安装包 https://nodejs.org/en/download 解压安装包 将安装包上传到/opt/software目录下 cd /opt/software tar -xzvf node-v16.14.2-linux-x64.tar.gz 将解压的文件夹移动到安装目录(/opt/nodejs)下 mv /opt/software/node-v16.14.2-linux-x64 /opt/nodejs …...

React:什么是Hook?通俗易懂的讲讲

什么是Hook 1.Hook 是什么&#xff1f;2.React 内置的 Hook3. 自定义 Hook4. 总结 1.Hook 是什么&#xff1f; 可以理解为&#xff1a;函数组件的工具/功能插件 Hook是 React 16.8 以后提供的一种新特性&#xff0c; 让你在函数组件里“钩入”React 的功能&#xff08;比如状态…...

树莓派安装GStreamer ,opencv支持, 并在虚拟环境中使用的安装方法

首先是我在树莓派中 使用OpenCV 读取网络视频流, 如海康威视 通过rtsp协议地址读取 会发生延迟和丢包的情况 后来使用ffmpeg和OpenCV 读取视频流 丢报的问题减少了 但是长时间运行 还是会造成延迟和卡顿 最后直接卡死画面 后来试了一下GStreamer 管道流 是树莓派支持的 但是原生…...

从节点重排看React 与 Vue3 的 Diff 算法

一个有趣的问题 之前我写了一篇狗教我 React——原理篇之 Diff 算法 - 掘金 (juejin.cn)简单介绍了 diff 算法,收到了一个有意思的疑问: 大佬讲得非常易懂,我有个疑惑就是都说 diff 处理节点前移比较差,比如 a→b→c→d 更新为 d→a→b→c,如果第一遍循环到第一个就截止了…...

【FAQ】PCoIP 会话后物理工作站本地显示器黑屏

# 问题 工作人员从家里建立了到办公室工作站的 PCoIP 连接&#xff0c;该工作站安装了 HP Anyware Graphics Agent&#xff0c;并且还连接了本地显示器。然后&#xff0c;远程用户决定去办公室进行本地工作&#xff0c;工作站显示器显示黑屏&#xff08;有时没有信号&#xff…...

springboot基于hadoop的酷狗音乐爬虫大数据分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 本酷狗音乐爬虫大数据分析可视化系统采用B/S架构&#xff0c;数据库是MySQL&#xff0c;网站的搭建与开发采用了先进的Java语言、Hadoop、爬虫技术进行编写&#xff0c;使用了Spring Boot框架。该系统从两个对象&#xff1a;由管理员和用户来对系统进行设计构建。前台主要…...

基于大模型的食管平滑肌瘤全周期预测与诊疗方案研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 国内外研究现状 二、大模型技术原理与应用概述 2.1 大模型介绍 2.2 在医疗领域的应用现状 2.3 用于食管平滑肌瘤预测的可行性分析 三、食管平滑肌瘤术前预测 3.1 预测指标选取 3.2 数据收集与预处理 3.2.1 数据…...

26考研 | 王道 | 数据结构 | 第七章 查找

第七章 查找 文章目录 第七章 查找7.1 查找概念7.2 顺序查找7.3 折半查找7.4 分块查找7.5 二叉排序树7.6 平衡二叉树平衡二叉树的插入平衡二叉树的删除 7.7 红黑树7.7.1 为什么要发明红黑树&#xff1f;7.7.2 红黑树的定义和性质7.7.3 红黑树的插入和删除插入删除 7.8 B树和B树…...

Docker 部署 Redis:快速搭建高效缓存服务

Docker 部署 Redis&#xff1a;快速搭建高效缓存服务 引言 Redis 是一个高性能的键值数据库&#xff0c;广泛应用于缓存、消息队列、实时分析等领域。而 Docker 作为容器化技术的代表&#xff0c;能够帮助我们快速部署和管理应用程序。结合两者&#xff0c;我们可以轻松实现 …...

【缓存与数据库结合最终方案】伪从技术

实现伪从技术&#xff1a;基于Binlog的Following表变更监听与缓存更新 技术方案概述 要实现一个专门消费者服务作为Following表的伪从&#xff0c;订阅binlog并在数据变更时更新缓存&#xff0c;可以采用以下技术方案&#xff1a; 主要组件 MySQL Binlog监听&#xff1a;使…...

如何规避矩阵运营中的限流风险及解决方案

在自媒体矩阵化运营中&#xff0c;系统性规避平台限流机制需建立在精准理解算法逻辑的基础上。根据行业实践数据统计&#xff0c;当前矩阵账号触发限流的核心诱因主要集中在两大维度&#xff1a; 首先需要明确的是设备与网络层面的合规性配置。当单台移动设备频繁切换多账号登…...

TensorFlow Keras“安全模式”真的安全吗?绕过 safe_mode 缓解措施,实现任意代码执行

机器学习框架通常依赖序列化和反序列化机制来存储和加载模型,然而模型中不恰当的代码隔离和可执行组件可能会导致严重的安全风险。 TensorFlow 中的 Keras v3 ML 模型结构 对于基于 TensorFlow 的 Keras 模型,存在一个严重的反序列化漏洞,编号为CVE-2024-3660。攻击者可利…...

PostgreSQL-日志管理介绍

概述 1、日志管理器&#xff1a; 日志模块包括事务提交日志CLOG和数据日志XLOG。其中CLOG是系统为整个事务管理流程所建立的日志&#xff0c;主要用于记录事务的状态&#xff0c;同时通过SUBTRANS日志记录事务的嵌套关系。XLOG日志是数据库日志的主体&#xff0c;记录数据库中…...

【Java 数据结构】泛型

目录 一. 什么是泛型 二. 引出泛型 三. 泛型语法 四. 泛型的使用 五. 泛型是如何编译的 5.1 擦除机制 六. 泛型的继承 6.1 泛型类继承非泛型类 6.2 泛型类继承泛型类 6.2.1 父类的同名传递 6.2 2 父类的异名传递 6.2.3 父类固定类型传递 6.2.4 子类添加参数 七. 泛…...

鲲鹏麒麟搭建Docker仓库

Docker Registry简介 Docker Registry是一个开源的镜像仓库工具&#xff0c;用于存储和分发Docker镜像。它是Docker生态系统中的核心组件之一&#xff0c;提供了镜像的推送(push)、拉取(pull)和管理功能。 主要特性&#xff1a; 1、开源免费&#xff1a;Apache 2.0许可证 2、轻…...

Java快速上手之实验4(接口回调)

1&#xff0e;编写接口程序RunTest.java&#xff0c;通过接口回调实现多态性。解释【代码4】和【代码6】的执行结果为何不同&#xff1f; interface Runable{ void run(); } class Cat implements Runable{ public void run(){ System.out.println("猫急上树.."…...

【前端】【业务场景】【面试】在前端开发中,如何实现实时数据更新,比如实时显示服务器推送的消息,并且保证在不同网络环境下的稳定性和性能?

问题&#xff1a;在前端开发中&#xff0c;如何实现实时数据更新&#xff0c;比如实时显示服务器推送的消息&#xff0c;并且保证在不同网络环境下的稳定性和性能&#xff1f; 一、实现实时数据更新的方法 WebSocket&#xff1a; 原理&#xff1a;WebSocket 是一种在单个 TCP …...

redis相关问题整理

Redis 支持多种数据类型&#xff1a; 字符串 示例&#xff1a;存储用户信息 // 假设我们使用 redis-plus-plus 客户端库 auto redis Redis("tcp://127.0.0.1:6379"); redis.set("user:1000", "{name: John Doe, email: john.doeexample.com}"…...

某城乡老旧房屋试点自动化监测服务项目

1. 项目简介 我国是房屋建设增长量最高的国家或地区&#xff0c;但上个世纪末建造的房屋多为砖混结构&#xff0c;使用寿命短且缺乏维护。这些房屋在使用过程中受到地质活动、自然环境和人为改造的影响&#xff0c;其结构强度逐年下降&#xff0c;部分房屋甚至出现墙体裂缝、倾…...

企业为何要求禁用缺省口令?安全风险及应对措施分析

在当今数字化时代&#xff0c;企业网络安全面临着前所未有的挑战。缺省口令的使用是网络安全中的一个重要隐患&#xff0c;许多企业在制定网络安全红线时&#xff0c;明确要求禁用缺省口令。本文将探讨这一要求的原因及其对企业安全的重要性。 引言&#xff1a;一个真实的入侵场…...

在 MySQL 中,索引前缀长度为什么选择为 191

在 MySQL 中&#xff0c;索引前缀长度选择为 191 的常见原因主要与 字符集编码 和 索引长度限制 相关&#xff0c;具体解释如下&#xff1a; 1. 字符集编码的影响 utf8mb4 字符集&#xff1a; MySQL 的 utf8mb4 字符集每个字符最多占用 4 个字节&#xff08;相比 utf8 的 3 字…...

【Python语言基础】24、并发编程

文章目录 1. 多线程&#xff08;threading模块&#xff09;1.1 多线程的实现(threading 模块)1.2 多线程的优缺点1.3 线程同步与锁 2. 多进程&#xff08;multiprocessing模块&#xff09;2.1 多进程实现&#xff08;multiprocessing模块&#xff09;2.2 多进程的优缺点2.3 进程…...

MySQL-自定义函数

自定义函数 函数的作用 mysql数据库中已经提供了内置的函数&#xff0c;比如&#xff1a;sum&#xff0c;avg&#xff0c;concat等等&#xff0c;方便我们日常的使用&#xff0c;当需要时mysql支持定义自定义的函数&#xff0c;方便与我们对于需用复用的功能进行封装。 基本…...

实时操作系统在服务型机器人中的关键作用

一、服务型机器人的发展现状与需求 近年来&#xff0c;服务型机器人市场呈现出蓬勃发展的态势。据国际机器人联合会&#xff08;IFR&#xff09;2024 年度报告显示&#xff0c;全球人形机器人市场规模预计在 2025 年达到 38.7 亿美元&#xff0c;年复合增长率达 19.2%。服务型机…...

智能电网第5期 | 老旧电力设备智能化改造:协议转换与边缘计算

随着电力行业数字化转型加速&#xff0c;大量在役老旧设备面临智能化升级需求。在配电自动化改造过程中&#xff0c;企业面临三大核心挑战&#xff1a; 协议兼容难题&#xff1a;传统设备采用Modbus等老旧协议&#xff0c;无法接入智能电网系统 数据处理瓶颈&#xff1a;设备本…...

【UML建模】starUML工具

一.概述 StarUML是一款UML工具&#xff0c;允许用户创建和管理UML&#xff08;统一建模语言&#xff09;模型&#xff0c;广泛应用于软件工程领域。它的主要功能包括创建各种UML图&#xff1a;如用例图、类图、序列图等&#xff0c;支持代码生成与反向工程&#xff0c;以及提供…...

【技术笔记】Cadence实现Orcad与Allegro软件交互式布局设置

【技术笔记】Cadence实现Orcad与Allegro软件交互式布局设置 更多内容见专栏&#xff1a;【硬件设计遇到了不少问题】、【Cadence从原理图到PCB设计】 在做硬件pcb设计的时候&#xff0c;原理图选中一个元器件&#xff0c;希望可以再PCB中可以直接选中。 为了达到原理图和PCB两两…...

第十七届山东省职业院校技能大赛 中职组网络建设与运维赛项

第十七届山东省职业院校技能大赛 中职组网络建设与运维赛项 赛题 B 卷 第十七届山东省职业院校技能大赛中职组网络建设与运维赛项 1 赛题说明 一、竞赛项目简介 “网络建设与运维”竞赛共分为以下三个模块&#xff1a;  网络理论测试&#xff1b;  网络建设与调试&#xf…...

深入详解人工智能数学基础——概率论中的KL散度在变分自编码器中的应用

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

Docker配置DNS方法详解及快速下载image方法

根据错误信息,Docker 在拉取镜像时遇到网络连接超时(Client.Timeout exceeded),通常与 代理配置错误、DNS 解析失败、镜像源访问受限 或 网络防火墙限制 有关。以下是详细解决方案: 1. 检查并修复代理配置 如果你使用了 HTTP 代理: 确认代理地址是否有效(替换 speed.ip…...

Rundeck 介绍及安装:自动化调度与执行工具

Rundeck介绍 概述&#xff1a;Rundeck 是什么&#xff1f; Rundeck 是一款开源的自动化调度和任务执行工具&#xff0c;专为运维场景设计&#xff0c;帮助工程师通过统一的平台管理和执行跨系统、跨节点的任务。它由 PagerDuty 维护&#xff08;2016 年收购&#xff09;&#…...

济南国网数字化培训班学习笔记-第二组-6-输电线路现场教学

输电线路现场教学 杆塔组装 角钢塔 角钢-连扳-螺栓 螺栓&#xff08;M&#xff09;&#xff1a; 脚钉-螺栓&#xff08;螺栓头-无扣长-螺纹-螺帽&#xff09;-垫片-螺帽/防盗帽/防松帽M20*45 表示直径20mm&#xff0c;长度45mm螺栓级别由一个类似浮点数表示&#xff0c;如…...

数据结构——二叉树,堆

目录 1.树 1.1树的概念 1.2树的结构 2.二叉树 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的性质 2.4二叉树的存储结构 2.4.1顺序结构 2.4.2链式结构 3.堆 3.1堆的概念 3.2堆的分类 3.3堆的实现 3.3.1初始化 3.3.2堆的构建 3.3.3堆的销毁 3.3.4堆的插入 3.3.5…...

PostgreSQL 分区表——范围分区SQL实践

PostgreSQL 分区表——范围分区SQL实践 1、环境准备1-1、新增原始表1-2、执行脚本新增2400w行1-3、创建pg分区表-分区键为创建时间1-4、创建24年所有分区1-5、设置默认分区&#xff08;兜底用&#xff09;1-6、迁移数据1-7、创建分区表索引 2、SQL增删改查测试2-1、查询速度对比…...

第八节:进阶特性高频题-Pinia与Vuex对比

优势&#xff1a;无嵌套模块、Composition API友好、TypeScript原生支持 核心概念&#xff1a;state、getters、actions&#xff08;移除mutation&#xff09; 深度对比 Pinia 与 Vuex&#xff1a;新一代状态管理方案的核心差异 一、核心架构设计对比 维度VuexPinia设计目标集…...

路由交换网络专题 | 第七章 | BGP练习 | 次优路径 | Route-Policy | BGP认证

基本部分配置讲解&#xff1a; 配置BGP相关部分&#xff1a; // BGP区域配置: 用作环回口创建BGP对等体// “ipv4-family unicast”是指进入BGP的IPv4单播地址族视图。 // 配置完后仅仅只在IPV4地址簇下建立对等体。* [AR3]bgp 100 [AR3-bgp]peer 1.1.1.1 as-number 100 [AR…...

序论文42 | patch+MLP用于长序列预测

论文标题&#xff1a;Unlocking the Power of Patch: Patch-Based MLP for Long-Term Time Series Forecasting 论文链接&#xff1a;https://arxiv.org/abs/2405.13575v3 代码链接&#xff1a;https://github.com/TangPeiwang/PatchMLP &#xff08;后台回复“交流”加入讨…...

【mongodb】系统保留的数据库名

目录 1. admin2. config3. local4. test&#xff08;非严格保留&#xff0c;但常作为默认测试数据库&#xff09;5. 注意事项6. 其他相关说明 1. admin 1.用途&#xff1a;用于存储数据库的权限和用户管理相关数据。2.特点&#xff1a;该数据库是 MongoDB 的超级用户数据库&am…...