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

C++学习日记---第19天

笔记复习

1.继承

在C++中,我们通过函数来实现代码的复用,防止重复造轮子,但是使用函数也有一个缺点1,就是当函数被定义完成之后,它的功能也就确定了,无法被修改,这时候我们引入继承。

C++中的继承是面向对象编程(OOP)的一个重要特性,它允许你从一个已有的类(父类或基类)创建一个新的类(子类)。子类可以继承父类的属性和方法,也可以扩展或修改它们。继承帮助我们实现代码复用,简化程序的设计和维护。

继承的访问权限及对应语法

继承有三种访问控制修饰符:

1.public继承:子类可以访问父类的公有成员和保护成员,无法访问父类的私有成员

class son class : public father class { ... };

2.protected继承:父类的公有成员和保护成员在子类中都变成保护成员,私有成员仍不可访问

class son class : protected father class { ... };

3.private继承:父类的公有成员和保护成员在子类中变成私有成员,私有成员无法访问。

class son class : private father class { ... };

上面的继承结果反应了c++继承时只可向下兼容不可向上兼容的特点,即公有成员可以变为保护成员或私有成员, 保护成员可以变为私有成员,但私有成员却不能变为保护成员,公有成员,保护成员也不能变成私有公有成员。

注:1.当父类中有构造函数时,为了确保父类的成员能够正确初始化,子类必须显式调用父类的构造函数

2.protected和private继承都会把父类的成员在子类中变为对应的成员,但public继承不会

继承代码示例如下:

#include<iostream>
using namespace std;class base1 {
public:int a;
protected:int b;
private:int c;
};class son1 :public base1 {
public:void func() {a = 10;//父类中的公共权限成员到子类中依然是公共权限b = 20;//父类中的保护权限成员,到子类中依然是保护权限//c = 10;//父类中的私有权限成员,子类无法访问};
};void test01() {son1 s1;s1.a = 100;s1.b = 100;//protected在类外无法被直接访问
}int main() {test01();return 0;
}

 创建对象时会自动调用构造函数

在我们为一个类创建对象时,会自动调用默认构造函数,构造函数(如果有的话),目的是为了给对象初始化,因此如果构造函数含参,就必须要传参,那么当父类构造函数含参时呢?

#include <iostream>
using namespace std;class Base {
public:Base(int value) {  // 父类构造函数需要一个参数cout << "Base Constructor, Value: " << value << endl;}
};class Derived : public Base {
public:Derived(int value) : Base(value) {  // 显式调用父类构造函数cout << "Derived Constructor" << endl;}
};int main() {Derived derivedObj(10);  // 创建Derived对象时,传递参数return 0;
}

通过这个代码我们可以知道当我们创建子类对象时,是优先调用父类的构造函数。


 

继承的实际应用

下面我们通过一个代码示例来说明继承如何提高代码的复用性:

编辑一个用于编程教学网站的代码:

#include<iostream>
#include <windows.h>
using namespace std;// 普通实现页面// java页面
class java
{
public:void header(){cout << "首页、公开课、登录、注册...(公共头部)" << endl;}void footer(){cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;}void left() {cout << "java、python、c++、...(公共分类列表)" << endl;}void content(){cout << "java学科视频" << endl;}
};//python页面
class python
{
public:void header(){cout << "首页、公开课、登录、注册...(公共头部)" << endl;}void footer(){cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;}void left() {cout << "java、python、c++、...(公共分类列表)" << endl;}void content(){cout << "python学科视频" << endl;}
};//c++页面
class cpp
{
public:void header(){cout << "首页、公开课、登录、注册...(公共头部)" << endl;}void footer(){cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;}void left() {cout << "java、python、c++、...(公共分类列表)" << endl;}void content(){cout << "c++学科视频" << endl;}
};void test01()
{cout << "java下载视频页面如下:" << endl;java ja;ja.header();	ja.footer();ja.left();ja.content();cout << "----------------------------------" << endl;cout << "python下载视频页面如下:" << endl;python py;py.header();py.footer();py.left();py.content();cout << "----------------------------------" << endl;cout << "c++下载视频页面如下:" << endl;cpp c;c.header();c.footer();c.left();c.content();
}int main() {SetConsoleOutputCP(65001);test01();system("pause");return 0;
}

 可以看到这段代码中有很多重复的部分,但如果直接使用函数的话并不方便,因为不同的部分很多,所以我们采用继承

#include<iostream>
#include <windows.h>
using namespace std;class basepage{
public:void header(){cout << "首页、公开课、登录、注册...(公共头部)" << endl;}void footer(){cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;}void left() {cout << "java、python、c++、...(公共分类列表)" << endl;}
};class java :public basepage {
public:void content() {cout << "java学科视频" << endl;}
};
//python页面
class python :public basepage {
public:void content() {cout << "python学科视频" << endl;}
};
//c++页面
class cpp :public basepage {
public:void content() {cout << "c++学科视频" << endl;}
};
void test01()
{cout << "java下载视频页面如下:" << endl;java ja;ja.header();	ja.footer();ja.left();ja.content();cout << "----------------------------------" << endl;cout << "python下载视频页面如下:" << endl;python py;py.header();py.footer();py.left();py.content();cout << "----------------------------------" << endl;cout << "c++下载视频页面如下:" << endl;cpp c;c.header();c.footer();c.left();c.content();
}int main() {SetConsoleOutputCP(65001);test01();system("pause");return 0;
}

从这个代码示例中我们可以看到,父类的函数是可以被子类的对象调用的,并且当父类中有多个构造函数时,我们可以决定调用哪一个构造函数。并且我们还知道一个父类是可以被多个子类调用的


继承时调用构造函数和析构函数的顺序 

前面我们知道,当我们为子类创建对象时,会先调用父类的构造函数,再调用子类的构造函数,那么析构函数呢?

#include<iostream>
#include <windows.h>
using namespace std;class base {
public:base() {cout << "base构造函数" << endl;}~base() {cout << "base析构函数" << endl;}
};class son :public base {
public:son() {cout << "son构造函数" << endl;}~son() {cout << "son析构函数" << endl;}
};
//结果表明,构造顺序为先有父类再有子类,析构顺序为先有子类再有父类
void test01() {//base b;son s;
}int main() {SetConsoleOutputCP(65001);test01();system("pause");return 0;
}

 通过这段代码我们知道,当我们为子类创建对象时,我们会先调用父类的构造函数,再调用子类的构造函数,析构函数的调用顺序则与之相反


继承时是否会全部继承父类的成员? 

前面我们知道,继承的时候子类不能够访问父类的私有成员,只能够访问公共成员和保护成员,那么这两类成员是否会被继承下来呢?下面我们通过一段代码来演示:

#include<iostream>
using namespace std;class base {
public:int a;
protected:int b;
private:int c;
};class son :public base {
public:int d;
};void test01() {cout << "size of son=" << sizeof(son) << endl;//结果为16说明父类中的所有非静态的成员属性都会被子类继承
}int main() {test01();return 0;
}

这段代码的运行结果显示son类的内存为16个字节,那么说明son类中一共有四个变量,也就是说即使是无法访问的私有成员也会被子类继承下来,只是在子类中无法访问这类成员


当父类和子类成员同名时如何处理? 

当子类和父类出现同名成员时,我们应该如何调用我们想要的成员呢?

答:访问子类成员,直接访问即可;访问父类成员,需要加作用域

这个处理方式对于变量,静态成员和函数来说都是适用的

#include<iostream>
using namespace std;class base {
public:base() {a = 100;}void func() {cout << "base作用域下的func调用" << endl;}void func(int a) {cout << "base作用域下的func(int a)调用" << endl;}int a;
};class son :public base {
public:son() {a = 200;}void func() {cout << "子类的func调用" << endl;}int a;
};
//同名成员属性处理
void test01() {son s;cout << "a=" << s.a << endl;cout << "a=" << s.base::a << endl;
}
//同名成员函数处理
//处理方式与同名成员属性相同
void test02() {son s;s.func();s.base::func();s.base::func(10);
}int main() {//test01();test02();return 0;
}

虚继承解决菱形继承问题 

下面我们来讲继承的最后一个模块:菱形继承

在讲解菱形继承之前,我们需要明确两个概念,即虚继承和虚基类

  • 虚继承(virtual inheritance)是用来解决菱形继承中的“重复继承”问题的机制,确保父类的成员在多个子类继承时只会存在一份。
  • 虚基类(virtual base class)是指通过虚继承声明的父类,它的成员被所有继承类共享,而不是被分为多份。

接下来我们讲解菱形继承的概念

       animal
      /      \
  sheep      tuo
    \        /
   sheeptuo
如图所示,这种继承方式就被成为菱形继承或者钻石继承

在菱形继承中,如果两个或多个子类继承自同一个父类,而这些子类又被同一个子类所继承,那么在最后一个子类中就会有父类的多个副本,造成内存浪费。

虚继承通过在继承声明前加上 virtual 关键字来解决这个问题。使用虚继承时,animal 类会被称为虚基类,并且只有一个副本。在 sheeptuo 类中,animal 的数据会被共享,而不是分别继承两份。下面是一个虚继承解决菱形继承问题的代码示例:

#include<iostream>
using namespace std;//动物类
class animal {
public:int age;
};
//利用虚继承可以解决菱形继承的问题
//在继承之前加上关键字virtual变为虚继承,animal类称为虚基类
// 虚继承的原理是继承两个指针,这两个指针指向同一个数据
class sheep :virtual public animal {};class tuo :virtual public animal {};class sheeptuo :public sheep, public tuo {};void test01() {sheeptuo st;st.sheep::age = 18;st.tuo::age = 28;//当菱形继承时,若有两个父类拥有相同的数据,需要加以作用域区分cout << "sheep" << st.sheep::age << endl;cout << "tuo" << st.tuo::age << endl;cout << "st.age" << st.age << endl;
}int main() {test01();return 0;
}

总结:当出现菱形继承问题时,我们可以在继承父类的时候在继承方式前面加上virtual关键字,即虚继承。

好题精选

问题描述

给定长度为66的字符串SS。保证SS的前三个字符是ABC,最后三个字符是数字。

判断SS是否是在本次比赛开始之前在AtCoder上举办并结束的比赛的缩写。

这里,字符串TT是“在本次比赛开始之前在AtCoder上举办并结束的比赛的缩写”,当且仅当它等于以下348348字符串之一:

ABC001ABC002、……、ABC314ABC315ABC317ABC318、……、ABC348ABC349

注意ABC316不包括在内。

约束条件

  • SS是长度为66的字符串,其中前三个字符是ABC,最后三个字符是数字。

输入

输入以以下格式从标准输入中给出:

SS

输出

如果SS是在本次比赛开始之前在AtCoder上举办并结束的比赛的缩写,则输出Yes;否则输出No

样例1

InputcopyOutputcopy
ABC349
Yes

ABC349是在上周在AtCoder上举办并结束的比赛的缩写。

样例2

InputcopyOutputcopy
ABC350
No

ABC350是本次比赛,尚未结束。

样例3

InputcopyOutputcopy
ABC316
No

ABC316不是在AtCoder上举办的比赛。

学习到的点

1.c++中截取字符串片段的方法

字符串.substr(num1,num2)

其中num1表示从哪一个索引开始截取(包括);num2表示截取字符串的长度,不输入num2时默认到结尾

例如:

#include <iostream>
#include <string>
using namespace std;int main() {string str = "Hello, world!";//中间有个空格// 从位置 7 开始截取,长度为 5string subStr1 = str.substr(7, 5);cout << "Sub-string 1: " << subStr1 << endl;  // 输出 "world"// 从位置 0 开始截取,直到字符串末尾string subStr2 = str.substr(0);cout << "Sub-string 2: " << subStr2 << endl;  // 输出 "Hello, world!"// 从位置 7 开始,截取到字符串末尾string subStr3 = str.substr(7);cout << "Sub-string 3: " << subStr3 << endl;  // 输出 "world!"return 0;
}

2.c++中将字符串转化为整型变量的方法

stoi(字符串)

#include <iostream>
#include <string>
using namespace std;int main() {string str = "12345";// 使用 std::stoi 转换字符串为整型int num = stoi(str);cout << "Converted integer: " << num << endl;  // 输出:12345return 0;
}

答案

#include<iostream>
using namespace std;string A;int main() {cin >> A;int num = stoi(A.substr(3));  // 获取后3个数字部分if (num >= 1 && num <= 315) {cout << "Yes";} else if (num >= 317 && num <= 349) {cout << "Yes";} else {cout << "No";}return 0;
}

相关文章:

C++学习日记---第19天

笔记复习 1.继承 在C中&#xff0c;我们通过函数来实现代码的复用&#xff0c;防止重复造轮子&#xff0c;但是使用函数也有一个缺点1&#xff0c;就是当函数被定义完成之后&#xff0c;它的功能也就确定了&#xff0c;无法被修改&#xff0c;这时候我们引入继承。 C中的继承…...

opencv-python的简单练习

题目1.读取一张彩色图像并将其转换为灰度图。 import cv2 # 读取图片文件 img cv2.imread(./1.png)# 将原图灰度化 img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# 输出图片 cv2.imshow(img,img) cv2.imshow(img_g,img_gray) # 进行阻塞 cv2.waitKey(0) 题目2&#xff1a;…...

生活小妙招之UE CaptureRT改

需求&#xff0c;四个不同的相机拍摄结果同屏分屏显示 一般的想法是四个Capture拍四张RT&#xff0c;然后最后在面片/UI上组合。这样的开销是创建4张RT&#xff0c;材质中采样4次RT。 以更省的角度&#xff0c;想要对以上流程做优化&#xff0c;4个相机拍摄是必须的&#xff…...

源码编译jdk11 超详细教程 openjdk11

关于源代码 当前的openJDK的源代码已经被发布到了github上了&#xff0c;所以我们可以直接从github上下载到。 OpenJDK11u源码托管地址&#xff1a;https://github.com/openjdk/jdk11u 带后缀U的地址&#xff0c;或者发行的jdk包&#xff0c;表示当前版本下的持续跟新版。而…...

lightRAG 论文阅读笔记

论文原文 https://arxiv.org/pdf/2410.05779v1 这里我先说一下自己的感受&#xff0c;这篇论文整体看下来&#xff0c;没有太多惊艳的地方。核心就是利用知识图谱&#xff0c;通过模型对文档抽取实体和关系。 然后基于此来构建查询。核心问题还是在解决知识之间的连接问题。 论…...

计算机网络-数据链路层

以太⽹的帧格式 源地址和⽬的地址是指⽹卡的硬件地址(也叫MAC地址), ⻓度是48位,是在⽹卡出⼚时固化的; • IP地址描述的是路途总体的 起点 和 终点; • MAC地址描述的是路途上的每⼀个区间的起点和终点;、 举个例子&#xff1a; 帧协议类型字段有三种值,分别对应IP、ARP、RARP...

ES6 混合 ES5学习记录

基础 数组 let arr [数据1&#xff0c;数据2&#xff0c;...数组n] 使用数组 数组名[索引] 数组长度 arr.length 操作数组 arr.push() 尾部添加一个,返回新长度 arr.unshift() 头部添加一个,返回新长度 arr.pop() 删除最后一个,并返回该元素的值 shift 删除第一个单元…...

Electron electron-builder.yml 配置 (自定义包名,用户自定义安装目录...)

electron-builder.yml 配置 # 唯一的应用程序标识符&#xff0c;用于操作系统级别的识别 appId: com.electron.app# 应用程序的名称&#xff0c;显示在用户界面上 productName: 我的应用# 定义构建资源目录&#xff0c;放置图标、证书等资源文件 directories:buildResources: …...

Python运维自动化之字典Dict

字典Dict(哈希表) Dict即Dictionary&#xff0c;也称为mapping。 Python中&#xff0c;字典由任意个元素构成的集合&#xff0c;每一个元素称为Item&#xff0c;也称为Entry。这个Item是由(key, value)组成的二元组。 字典是可变的、无序的、key不重复的key-value键值对集合。…...

开展新闻营销分为策划期、实施期、优化期三个重要阶段

也许有人会问&#xff1a;什么是新闻营销呢&#xff1f;这是一个在当今商业营销领域备受关注的概念。在信息爆炸的时代&#xff0c;企业都在绞尽脑汁寻找各种有效的营销方式来提升自己的品牌知名度、产品销量等&#xff0c;新闻营销便是其中一种重要的手段。 我们可以将“新闻营…...

解决 Git 默认不区分文件名大小写的问题

不得不说 Git 默认不区分文件名大小写真是一个大坑&#xff0c;由于之前的项目目录比较乱&#xff0c;项目下的文件夹命名都不规范&#xff0c;这两天一直在整理&#xff0c;然后今天从服务器将项目重新 clone 下来后发现&#xff0c;之前将所有文件名首字母改成大写的改动全部…...

Qt网络通信、线程之间通信详解

一、 网络通信协议主要包括TCP和UDP&#xff0c;但更常用和可靠的是TCP协议。TCP是一种面向连接的、可靠的、面向流的传输协议&#xff0c;特别适合用于连续数据传输。在Qt中&#xff0c;网络通信主要通过QTcpSocket类和QTcpServer类来实现。 QTcpSocket类用于建立TCP客户端和…...

java泛型

定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09; 称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型。 作用&#xff1a;泛型提供了在编译阶段约束所能操作的数据类型&#xff0c;并自动进行检…...

C++入门(1)

一、第一个C程序 #include <iostream> using namespace std; int main() {cout << "hello world" << endl; return 0; } 1. main函数 main 函数是程序的入口&#xff0c;C 的程序不管有多少行代码&#xff0c;都是从 main 函数开始执行的&am…...

在Linux的嵌入式开发中,如何确定要操作的帧缓冲设备是第几个实例?即是fb0还是fb1还是fb2...

方法汇总 在实际编写程序时&#xff0c;要确定操作的帧缓冲设备&#xff08;如 /dev/fb0、/dev/fb1 等&#xff09;&#xff0c;通常需要结合系统环境和硬件配置。以下是一些常见的方法&#xff0c;帮助你确定需要打开的帧缓冲设备实例&#xff1a; 1. 检查系统设备文件 查看…...

JS 中请求队列与锁的巧妙结合

一、引言 在 JavaScript 开发中&#xff0c;尤其是在涉及到异步操作和对共享资源的并发访问时&#xff0c;有效地控制请求顺序和资源访问权限至关重要。例如&#xff0c;在多个网络请求同时针对一个有限制访问频率的 API 或者多个异步任务竞争同一个文件写入权限的场景下&#…...

注意力机制+时空特征融合!组合模型集成学习预测!LSTM-Attention-Adaboost多变量时序预测

注意力机制时空特征融合&#xff01;组合模型集成学习预测&#xff01;LSTM-Attention-Adaboost多变量时序预测 目录 注意力机制时空特征融合&#xff01;组合模型集成学习预测&#xff01;LSTM-Attention-Adaboost多变量时序预测效果一览基本介绍程序设计参考资料 效果一览 基…...

Prefix Decoder /Causal Decoder/Encoder-Decoder的区别

Prefix Decoder 定义&#xff1a;Prefix Decoder&#xff0c;也称为非因果解码器&#xff0c;属于Decoder only结构。输入部分使用双向注意力&#xff0c;输出部分使用单向注意力。在生成新的输出时&#xff0c;会考虑到所有之前生成的输出。 特点&#xff1a;Prefix Decoder在…...

《智能体开发实战(高阶)》四、系统化的日志周报智能体开发计划

智能体扩展与完善规划 为了将前几个章节的智能体逐步扩展为支持整个公司团队使用的高效工具,以下是分阶段的完善与扩写规划。每个阶段旨在提升功能覆盖范围、处理能力和用户体验,并为企业提供实际价值。 阶段一:基础功能完善 目标:巩固现有功能,提升健壮性和适用性。 支…...

多线程编程杂谈(上)

问题 线程执行的过程中可以强制退出吗&#xff1f; 主动退出&#xff1f;被动退出&#xff1f; 问题抽象示例 需要解决的问题 g_run 全局变量需要保护吗&#xff1f; 如何编码使得线程中每行代码的执行可被 g_run 控制&#xff1f; 线程代码在被 g_run 控制并 "强制退…...

二五(Vue2-01)、创建实例、插值表达式、响应式、Vue指令、

1. Vue 概念及创建实例 <body><!-- 创建Vue实例&#xff0c;初始化渲染1. 准备容器 (Vue所管理的范围)2. 引包 (开发版本包 / 生产版本包) 官网3. 创建实例4. 添加配置项 > 完成渲染 --><div id"app"><h1>{{msg}}</h1><a href&…...

P8772 求和 P8716 回文日期

文章目录 [蓝桥杯 2022 省 A] 求和[蓝桥杯 2020 省 AB2] 回文日期 [蓝桥杯 2022 省 A] 求和 题目描述 给定 n n n 个整数 a 1 , a 2 , ⋯ , a n a_{1}, a_{2}, \cdots, a_{n} a1​,a2​,⋯,an​, 求它们两两相乘再相加的和&#xff0c;即 S a 1 ⋅ a 2 a 1 ⋅ a 3 ⋯ a…...

Burp Suite(2)2024.1.1Burp Suite专业版激活(保姆级教程)

声明&#xff1a; 本文所使用的专业版BP在我的博客资源里面&#xff0c;需要的师傅可以自行下载。 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内…...

基于注意力的几何感知的深度学习对接模型 GAABind - 评测

GAABind 作者是苏州大学的生物基础与医学院, 期刊是 Briefings in Bioinformatics, 2024, 25(1), 1–14。GAABind 是一个基于注意力的几何感知蛋白-小分子结合模式与亲和力预测模型,可以捕捉小分子和蛋白的几何、拓扑结构特征以及相互作用。使用 PDBBind2020 和 CASF2016 作…...

Python中的优化函数2:cvxpy包

文章目录 介绍使用步骤示例1示例2官方文档 介绍 它是一个基于 Python 的凸优化建模工具&#xff0c;专门用于定义和求解 凸优化问题&#xff08;Convex Optimization Problems&#xff09;。CVXPY 提供了一种直观的方式来表达优化问题&#xff0c;并通过高效的求解器来解决这些…...

【Linux】结构化命令

结构化命令structured command&#xff1a;允许脚本根据条件跳过部分命令&#xff0c;改变执行流程。 1、if-then语句 格式1&#xff1a; if command then commands fi 格式2&#xff1a; if command; then commands fi 运行if之后的command命令&#xff0c;如果它的退出状态码…...

3-机器人视觉-机器人抓取与操作

文章目录 3机器人视觉目录 1. 传感器和标定摄像头模型Intrinsic MatrixExtrinsic Matrix 标定内参标定手眼标定和外参标定 力传感器&其它传感器其它传感器 2. 神经网络和图像处理2D特征处理常见架构 训练流程推理流程部署流程2D 图像任务3D Point Cloud FeaturePointNet Ap…...

LINUX——shell编程

Shell 简介 Shell 是一个 C 语言编写的脚本语言&#xff0c;它是用户与 Linux 的桥梁&#xff0c;用户输入命令交给 Shell 处理&#xff0c; Shell 将相应的操作传递给内核&#xff08;Kernel&#xff09;&#xff0c;内核把处理的结果输出给用户。 下面是流程示意图&#xff…...

12.11函数 结构体 多文件编译

1.脑图 定义一个数组&#xff0c;用来存放从终端输入的5个学生的信息【学生的信息包含学生的姓名、年纪、性别、成绩】 1>封装函数 录入5个学生信息 2>封装函数 显示学生信息 3>封装函数 删除第几个学生信息&#xff0c;删除后调用显示学生信息函数 显示 4> 封…...

【go语言】reflect包与类型推断

reflect 包的核心概念 Go 中的反射涉及两个核心概念&#xff1a; Type&#xff1a;表示一个类型的结构体&#xff0c;reflect.Type 是类型的描述。Value&#xff1a;表示一个值的结构体&#xff0c;reflect.Value 是一个具体值的包装。 反射让我们能够动态地访问对象的类型和…...

docker启动一个helloworld(公司内网服务器)

这里写目录标题 容易遇到的问题&#xff1a;1、docker连接问题 我来介绍几种启动 Docker Hello World 的方法&#xff1a; 最简单的方式&#xff1a; docker run hello-world这会自动下载并运行官方的 hello-world 镜像。 使用 Nginx 作为 Hello World&#xff1a; docker…...

【瑞萨RA0E1开发板评测报告】IIC OLED 测试

【瑞萨RA0E1开发板评测报告】IIC OLED 测试 基于前面关于瑞萨 e studio 开发软件的使用&#xff0c;以及工程测试基础&#xff0c;本文进一步探索实现硬件 IIC OLED 的文字和图片显示。 1 背景 简单介绍 IIC 通信协议、OLED 显示原理、SS1306 驱动 IC 等。 IIC 通信协议 I…...

全球叉车市场 2023 - 2032 年发展趋势:自动化、电商与电动叉车的崛起

全球叉车市场到2032年将达到955.1亿美元&#xff0c;年复合增长率为7.49% | Astute Analytica 全球叉车市场正迎来显著增长&#xff0c;市场估值预计将从2023年的498.6亿美元增长至2032年的955.1亿美元&#xff0c;预测期内年复合增长率&#xff08;CAGR&#xff09;为7.49%。这…...

Kafka系列教程 - Kafka 生产者 -2

1. 生产者简介 不管是把 Kafka 作为消息队列系统、还是数据存储平台&#xff0c;总是需要一个可以向 Kafka 写入数据的生产者和一个可以从 Kafka 读取数据的消费者&#xff0c;或者是一个兼具两种角色的应用程序。 使用 Kafka 的场景很多&#xff0c;诉求也各有不同&#xff…...

【专题】2024年中国新能源汽车用车研究报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p38564 本年度&#xff0c;国家及地方政府持续发力&#xff0c;推出诸多政策组合拳&#xff0c;全力推动汽车产业向更高质量转型升级&#xff0c;积极鼓励消费升级&#xff0c;并大力推行以旧换新等惠民生、促发展举措。尤为引人注目…...

将带注释的Word文档改造成点击注释引用即可弹窗显示注释的HTML文档

阅读中国古籍电子书的时候&#xff0c;往往有很多注释。在正文和注释之间来回滚动页面是一件挺麻烦的事&#xff0c;比较方便的做法是将它编辑成通过点击注释引用即将注释弹出显示在引用所在位置的HTML文档&#xff0c;然后利用HTML文档制作成PDF或者epub文件&#xff0c;就比较…...

【Android开发】安装Android Studio(2023.1.1)

下载安装包 Android Studio2023.1.1百度云盘下载&#xff0c;提取码&#xff1a;6666https://pan.baidu.com/s/1vNJezi7aDOP0poPADcBZZg?pwd6666 安装Android Studio 2023.1.1 双击下载好的安装包 弹出界面点击下一步 继续点击【Next】 更改安装路径后继续点击【Next】 点…...

SQLite Truncate Table

SQLite Truncate Table SQLite 是一种轻量级的数据库管理系统&#xff0c;广泛用于各种应用程序中。在数据库管理中&#xff0c;有时候需要快速删除表中的所有数据&#xff0c;这时就可以使用 TRUNCATE TABLE 命令。然而&#xff0c;SQLite 与其他数据库管理系统&#xff08;如…...

港科夜闻 | 香港科大与荷兰代尔夫特理工大学(TU Delft)建立合作伙伴关系,推动艺术科技教育与研究...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与荷兰代尔夫特理工大学(TU Delft)建立合作伙伴关系&#xff0c;推动艺术科技教育与研究。2024年12月6日&#xff0c;合作伙伴计划正式启动&#xff0c;双方期望透过合作加强艺术科技知识交流&#xff0c;借此推…...

谈一谈大数据流式处理,以Spark Streaming为例详细论述

Spark Streaming是构建在Spark上的实时流计算框架&#xff0c;可以进行实时流数据处理。Spark是一个类似于MapReduce的分布式计算框架&#xff0c;其核心是弹性分布式数据集&#xff0c;可以在快速在内存中对数据集进行多次迭代&#xff0c;以支持复杂的数据挖掘算法和图形计算…...

RabbitMQ实现消息发送接收——实战篇(路由模式)

本篇博文将带领大家一起学习rabbitMQ如何进行消息发送接收&#xff0c;我也是在写项目的时候边学边写&#xff0c;有不足的地方希望在评论区留下你的建议&#xff0c;我们一起讨论学习呀~ 需求背景 先说一下我的项目需求背景&#xff0c;社区之间可以进行物资借用&#xff0c…...

Docker Desktop占用空间问题解决

Windows安装Docker Desktop&#xff0c;没过多久就会发现C盘空间满了&#xff0c;很大可能是Docker Desktop的文件占用了空间&#xff0c;可以通过以下步骤解决&#xff1a; 步骤一&#xff1a;执行清理命令 docker system prune清理磁盘&#xff0c;删除关闭的容器、无用的数…...

系统性能优化

一、概述 性能优化的目标&#xff1a;是提高系统或应用程序的响应时间、吞吐量、cpu、内存、磁盘IO、网络、流量、JVM、Tomcat、DB等方面的性能指标。 性能优化需要有一些技巧&#xff1a;对于整个产品或项目而言&#xff0c;比如可以从前端优化、后端优化、架构优化、高并发…...

golang操作sqlite3加速本地结构化数据查询

目录 摘要Sqlite3SQLite 命令SQLite 语法SQLite 数据类型列亲和类型——优先选择机制 SQLite 创建数据库SQLite 附加数据库SQLite 分离数据库 SQLite 创建表SQLite 删除表 SQLite Insert 语句SQLite Select 语句SQLite 运算符SQLite 算术运算符SQLite 比较运算符SQLite 逻辑运算…...

【NebulaGraph】mac通过Docker安装以及官方查询示例、以及索引详解还有数据构建案例(五)

【NebulaGraph】mac通过Docker安装以及官方查询示例 1. Docker安装NebulaGraph2. 官方查询示例3. Nebula Graph 的 Java 数据解析实践与指导4. 从零到一&#xff1a;如何构建一个企业股权图谱系统&#xff1f;5. Nebula Graph 索引详解6. nGQL 执行计划详解与调优7. 图数据库的…...

【一本通】家庭作业(贪心算法)

【一本通】家庭作业 C语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 老师在开学第一天就把所有作业都布置了&#xff0c;每个作业如果在规定的时间内交上来的话才有学分。每个作业的截止日期和学分可能是不同的。例如如果一个作业…...

Kylin麒麟操作系统 | 网络链路聚合配置(team和bond)

目录 一、理论储备1. 链路聚合 二、任务实施1. team模式2. bond模式 一、理论储备 1. 链路聚合 链路聚合是指将多个物理端口捆绑在一起&#xff0c;形成一个逻辑端口&#xff0c;以实现出/入流量在各成员端口中的负载分担。链路聚合在增加链路带宽、实现链路传输弹性和冗余等…...

2024年软件测试面试题大全【含答案】

一、面试基础题 简述测试流程: 1、阅读相关技术文档&#xff08;如产品PRD、UI设计、产品流程图等&#xff09;。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例&#xff08;等价类划分法、边界值分析法等&#xff09;。 5、用例评审(…...

Stable Diffusion 提示词语法

1.提示词基础 1.提示词之间用英文逗号,分隔 2.提示词之间是可以换行的 3.权重默认为1,越靠前权重越高 4.数量控制在75个单位以内 2.提示词各种符号的意义 2.1 ()、[]、{}符号 权重值()小括号[]中括号{}大括号默认1111层()1.1[]0.9{}1.052层(()) 1.121.21[[]]0.920.81{{}}1.…...

Y20030004基于asp.net+Sql的环保网站的设计与实现(附源码 调试 文档)

环保网站的设计与实现 1.摘要要2. 系统功能3.功能结构图4.界面展示5.源码获取 1.摘要要 近几年国家对于环境管理是高度重视&#xff0c;尤其是对于环境生态的破坏与环境污染&#xff0c;已经严重影响到人类的生存和发展。为了使生态环境能够得到保护和改善&#xff0c;持续发展…...