类的动态演绎:程序运行中的生命绽放
任务1.按照要求设计类(根据输出设计类)
设计类就是根据数据封装的要求,抽象出适合的类。
有如下情况的测试程序和测试程序的输出结果,要求设计类Smile。
(一)第1种情况:
(1)测试程序如下:
int main()
{
cout<<"科艺欢迎你!"<<endl;
return 0;
}
(2)测试程序的输出结果如右图:
(3)此题要求定义两个对象变量
(二)第二种情况:
(1)测试程序如下:
int main()
{
Smile we;
Smile you(we);
you.Display();
you.Set(“Thank you.”);
cout<<you.Get()<<endl;
you.talk();
you.Display();
return 0;
}
(2)测试程序的输出结果如右图:
注:
- 后面5行为倒数第6行输出后接下去的输出内容。
- 倒数第1和2行调用析构函数
- 倒数第3行调用Display函数
(3)设计类Smile 的原则:
1)在头文件Smile.h 中声明类
2)在Smile.cpp中实现类
3)使用内联函数定义Display()函数
4)演示文件名用学号作主名。
任务一
主要思路
一、关于 Hello.h
文件
- 头文件保护机制:
- 使用
#pragma once
和#ifndef HELLO_H
、#define HELLO_H
、#endif // HELLO_H
结构来防止头文件被重复包含。这确保在编译过程中,无论该头文件在多个源文件中被引用多少次,其内容都只会被编译一次,避免了因重复定义等问题导致的编译错误。
- 使用
- 类的声明:
- 声明了一个名为
Hello
的类,将其访问控制修饰符设置为public
、protected
和private
来划分不同成员的访问权限范围。 - 在
public
部分声明了构造函数Hello(string)
,用于初始化类对象时传入特定的字符串参数,还声明了虚析构函数virtual ~Hello()
,虚析构函数的存在使得在通过基类指针释放派生类对象内存时能够正确调用派生类的析构函数,保证资源的正确释放和避免内存泄漏等问题(虽然当前代码中没有体现派生类相关情况,但这种良好的设计习惯便于后续扩展)。 - 在
private
部分定义了一个字符串类型的成员变量name
,用于存储与类相关的特定名称信息,外部不能直接访问该变量,只能通过类提供的公有接口来操作它。
- 声明了一个名为
二、关于 Hello.cpp
文件
- 构造函数的实现:
- 实现了
Hello
类的构造函数Hello::Hello(string x)
,通过成员初始化列表的方式用传入的参数x
初始化了私有成员变量name
,并且在构造函数体中输出了一句问候语"Hi " << name << "!" << endl
,意味着每当创建一个Hello
类的对象时,都会向控制台打印出对应的问候信息,告知使用者对象的创建以及对应的名称。
- 实现了
- 析构函数的实现:
- 实现了
Hello
类的析构函数Hello::~Hello()
,在析构函数体中输出了告别语"GoodBye " << name << "!" << endl
,表明当对象生命周期结束被销毁时,会向控制台打印相应的告别信息,有助于追踪对象的销毁情况以及进行一些资源清理等相关的提示操作(虽然当前简单示例中没有复杂的资源管理,但遵循了合理的编程规范)。
- 实现了
- 全局对象定义:
- 在该文件中定义了两个
Hello
类的全局对象a("Rose")
和b("Jose")
,这意味着在程序启动时,这两个对象就会被创建,进而会自动调用Hello
类的构造函数,向控制台分别输出对应的问候语。在程序结束时,它们的析构函数也会被自动调用,输出相应的告别语,展示了对象从创建到销毁的完整生命周期过程。
- 在该文件中定义了两个
三、关于 main.cpp
文件
- 主函数功能:
- 主函数
main
是整个程序的入口点,在当前代码中,它仅仅向控制台输出了一句"科艺欢迎你!"
的欢迎信息,并没有直接和Hello
类进行交互,其功能相对比较独立简单,只是起到一个简单的程序启动提示作用。
- 主函数
Hello.h
#pragma once
#ifndef HELLO_H
#define HELLO_H
#include <iostream>
#include <string>using namespace std;class Hello
{
public:Hello(string);virtual ~Hello();protected:private:string name;
};#endif // HELLO_H
Hello.cpp
#include "Hello.h"Hello::Hello(string x) :name(x)
{cout << "Hi " << name << "!" << endl;
}Hello::~Hello()
{cout << "GoodBye " << name << "!" << endl;
}Hello a("Rose");
Hello b("Jose");
main.cpp
#include <iostream>
using namespace std;int main()
{cout << "科艺欢迎你!" << endl;return 0;
}
任务二
主要思路
一、关于 Smile.h
文件
- 头文件保护机制与包含必要头文件:
- 使用
#pragma once
和#ifndef SMILE_H
、#define SMILE_H
、#endif //SMILE_H
的组合,防止头文件被重复包含,确保代码在编译时的正确性。同时引入<iostream>
和<string>
头文件,为后续使用输入输出流以及操作字符串类型做准备。
- 使用
- 类的声明与接口定义:
- 声明了一个名为
Smile
的类,其中在public
部分定义了多个公有成员函数,构成了类对外提供的接口。 - 构造函数
Smile(string = "")
采用了默认参数的形式,允许在创建对象时可选择传入一个字符串参数来初始化对象,若不传参则使用默认值。 - 虚析构函数
virtual ~Smile()
的声明,是为了在存在继承关系时能正确地释放派生类对象的资源,确保内存管理的合理性(虽然当前代码中暂未体现继承相关情况,但这是一种良好的编程习惯)。 - 拷贝构造函数
Smile(const Smile&)
的声明,用于通过已有对象来初始化新创建的对象,实现对象间的复制操作。 - 还有
Display()
、Set(string)
、Get()
和talk()
这些成员函数,分别用于展示类的相关信息、设置类内的数据、获取类内的数据以及执行特定的输出操作,这些函数共同定义了类对外的行为和交互方式。 - 在
private
部分定义了一个字符串类型的成员变量a
,用于存储类内部的数据,外部无法直接访问该变量,只能通过类提供的公有接口来间接操作它。
- 声明了一个名为
二、关于 Smile.cpp
文件
- 构造函数的实现逻辑:
- 实现了
Smile
类的构造函数Smile::Smile(string a)
,通过成员初始化列表用传入的参数初始化成员变量a
,不过在函数体中又将a
重新赋值为"Welcome!"
,并输出该字符串,这意味着每次创建Smile
类对象时,都会输出"Welcome!"
作为一种初始的欢迎提示信息。
- 实现了
- 析构函数的实现逻辑:
- 实现的析构函数
Smile::~Smile()
会在对象生命周期结束被销毁时输出"Goobye!"
,起到提示对象被销毁的作用,便于跟踪对象的生命周期以及进行一些资源释放相关的示意(即便当前简单示例中可能没有复杂资源管理情况)。
- 实现的析构函数
- 拷贝构造函数的实现逻辑:
- 在拷贝构造函数
Smile::Smile(const Smile& b)
中,先是将传入对象b
的成员变量a
的值赋给当前正在创建对象的成员变量a
,然后又将a
重新赋值为"Thank you"
,并且输出该字符串,说明在通过拷贝构造函数创建对象时,会进行这样特定的数据赋值与提示输出操作,体现了拷贝构造的具体行为特点。
- 在拷贝构造函数
Display
函数的实现逻辑:Display
函数内部定义了一个静态局部变量x
,每次调用该函数时,会先判断x
的值,如果x
不为0
则输出"OK"
,然后x
的值自增1
。这样的设计使得该函数首次调用和后续调用会有不同的输出表现,可用于在多次调用该函数时进行一些状态的区分或者提示信息的阶段性展示。
Set
函数的实现逻辑:Set
函数通过一个循环不断提示用户输入内容,使用getline(cin, a)
按行读取用户输入的字符串,当输入为"OK"
时才跳出循环,并且在每次读取非"OK"
的输入后会输出刚读取的字符串内容,实现了一种从用户输入获取并处理数据的交互逻辑,用于设置类内部的成员变量a
的值。
a` 的值。
Get
函数的实现逻辑:Get
函数简单地返回固定字符串"All right"
,可看作是对外提供一种获取类内固定格式数据或者状态信息的方式,外部通过调用该函数能得到这个特定的返回值。
talk
函数的实现逻辑:talk
函数只是简单地输出"Goobye!"
,可以理解为执行了类所定义的一种特定的行为或者话语输出,对外展示了类的某一种交互动作。
三、关于 main.cpp
文件
- 主函数中的对象操作与函数调用逻辑:
- 在主函数中,首先创建了两个
Smile
类的对象we
和you
,创建you
对象时使用了拷贝构造函数,以we
为蓝本进行初始化,这个过程会触发相应构造函数和拷贝构造函数的执行,输出对应的提示信息。 - 接着依次调用
you.Display()
、you.Set("Thankyou.")
、cout << you.Get() << endl
、you.talk()
和再次调用you.Display()
,通过这些函数调用,按照Smile
类定义的接口逻辑,实现了展示对象状态、设置对象数据、获取对象信息、执行对象特定行为以及再次展示对象状态等一系列操作,展示了类对象在程序运行过程中的完整交互流程与行为表现。
- 在主函数中,首先创建了两个
Smile.h
#pragma once
#ifndef SMILE_H
#define SMILE_H
#include <iostream>
#include<string>
using namespace std;class Smile
{
public:Smile(string = "");virtual ~Smile();Smile(const Smile&);void Display();void Set(string);string Get();void talk();
protected:private:string a;
};
#endif //SMILE_H
Smile.cpp
#include "Smile.h"
using namespace std;Smile::Smile(string a) :a(a)
{a = "Welcome!";cout << a << endl;
}Smile::~Smile()
{cout << "Goobye!" << endl;
}Smile::Smile(const Smile& b) {a = b.a;// // 将传入对象b的成员变量a的值赋给当前正在创建的对象的成员变量aa = "Thank you";cout << a << endl;
}void Smile::Display(void)
{static int x = 0;if (x != 0) cout << "OK" << endl;x++;//每次调用函数后,x的值自增1,用于下次判断是否输出"OK"return;
}void Smile::Set(string b)
{while (1){cout << "输入:";getline(cin, a);//将以空格分开的字符串依次读入if (a == "OK"){break;}cout << "输出:" << a << endl;}return;
}string Smile::Get(void)
{return "All right";
}void Smile::talk()
{cout << "Goobye!" << endl;return;
}
main.cpp
#include <iostream>
#include "Smile.h"
using namespace std;
int main()
{Smile we;Smile you(we);you.Display();you.Set("Thankyou.");cout << you.Get() << endl;you.talk();you.Display();return 0;
}
相关文章:
类的动态演绎:程序运行中的生命绽放
任务1.按照要求设计类(根据输出设计类) 设计类就是根据数据封装的要求,抽象出适合的类。 有如下情况的测试程序和测试程序的输出结果,要求设计类Smile。 (一)第1种情况: (1)测试程序如下&#x…...
从代币角度介绍solana账户体系
1、solana 的账户概念介绍 Solana的账户体系是其区块链的核心组成部分,它允许数据和价值在链上存储和转移。以下是Solana账户体系的一些关键特点: • 账户模型: • 在Solana上,所有数据都存储在所谓的“账户”中,类似…...
Python pygame 主副屏编程时 在副屏上全屏窗口的方法
Python在windows环境中编程时,用pygame工具包能够很轻易的完成2D游戏的简单设计,非常好用,相关帖子很多。 而当电脑连接了多块显示器时(注意不是windows的多桌面),系统选择扩展这些显示器后,可…...
服务器数据恢复—V7000存储中多块磁盘出现故障导致业务中断的数据恢复案例
服务器存储数据恢复环境: 一台V7000存储上共12块SAS机械硬盘(其中1块是热备盘),组建了2组Mdisk,创建了一个pool。挂载在小型机上作为逻辑盘使用,小型机上安装的AIXSybase。 服务器存储故障: V7…...
Qt开发经验 --- 避坑指南(2)
文章目录 1、 Heob窗口变得非常长,配置名称是一长串乱码2、 Qt安装报错 From 6.5.0, xcb-cursor0 or libxcb-cursor0 is needed to load the Qt xcb platform plugin.3、Cmake编译错误找不到libwinpthread-1.dll4、CMake编译找不到mingw5、linux下qtcreator启动报错…...
2.4 网络概念(分层、TCP)
网络层与传输层概述 网络层: 抽象概念:网络层是基于 IP 的抽象概念,与数据链路层用 MAC 地址标记设备不同。MAC 地址是一种具体化的概念,绑定于所在的物理网络,而 IP 地址可以是固定的,也可以通过路由动态…...
Elasticsearch问题总结
Fielddata access on the_id field is disallowed, you can re-enable it by updating the dynamic cluster setting: indices.id_field_data.enabledElasticsearch默认禁用_id字段进行排序,这是因为_id字段通常不需要进行聚合或排序操作,启用字段数据可…...
C++点云大文件读取
C点云大文件读取 1. 常规读取1.1 逐行读取1.2 逐字节读取 2. 并行读取 (Multithreading)3. 使用缓冲读取 (Buffered I/O)4. 内存映射文件 (Memory Mapping) 在C中读取大文件时,如果需要提高读取速度,可以考虑以下几种方法: 1. 常规读取 常规…...
Hololens 2 Unity VS2019编译报错解决方案
报错问题描述不够详细,但是针对Hololens 2和Unity开发环境中的VS2019编译错误,以下 是一些常见的问题及其解决方案: 1.缺少或错误的Unity版本 确保安装了支持Hololens 2的Unity版本(例如2019.3或更高)。 2.缺少C工作负载 打开Visual Studio Installe…...
【Cadence射频仿真学习笔记】IC设计中电感的分析、建模与绘制(EMX电磁仿真,RFIC-GPT生成无源器件及与cadence的交互)
一、理论讲解 1. 电感设计的两个角度 电感的设计可以从两个角度考虑,一个是外部特性,一个是内部特性。外部特性就是把电感视为一个黑盒子,带有两个端子,如果带有抽头的电感就有三个端子,需要去考虑其电感值、Q值和自…...
记录:virt-manager配置Ubuntu arm虚拟机
virt-manager(Virtual Machine Manager)是一个图形用户界面应用程序,通过libvirt管理虚拟机(即作为libvirt的图形前端) 因为要在Linux arm环境做测试,记录下virt-manager配置arm虚拟机的过程 先在VMWare中…...
Qt Quick:CheckBox 复选框
复选框不止选中和未选中2种状态哦,它还有1种部分选中的状态。这3种状态都是Qt自带的,如果想让复选框有部分选中这个状态,需要将三态属性(tristate)设为true。 未选中的状态值为0,部分选中是1,选…...
腾讯云云开发 Copilot 深度探索与实战分享
个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 目录 一、引言 二、产品介绍 三、产品体验过程 四、整体总结 五、给开发者的复用建议 六、对 AI 辅助开发的前景展望 一、引言 在当今数字化转型加速的时代,…...
Linux应用开发————mysql数据库表
mysql数据库表操作 查看表的结构 mysql> desc / describe 表名; 或者: mysql> show create table 表名; 常见数据库引擎: innodb, myISAM... 删除表 mysql> drop tabl…...
《军工记忆》第二季播出,科技创新铸国之重器
2019年8月1日晚20点,《军工记忆》第二季在央视纪录频道(CCTV-9)播出,第一集《第一颗氢弹》首当其冲,为我们生动描绘了氢弹研制过程的艰难岁月,重现中国军工事业的漫漫长路,科技创新铸国之重器。…...
linux 无网络安装mysql
下载地址 通过网盘分享的文件:mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz 链接: https://pan.baidu.com/s/1qm48pNfGYMqBGfoqT3hxPw?pwd0012 提取码: 0012 安装 解压 tar -zxvf mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz mv /usr/mysql-5.7.33-linux-glibc2.1…...
如何使用Python进行音频片断合成
以下是几种使用 Python 进行音频合成的方法: 使用 synthesizer 库 通过 pip install synthesizer 安装后,利用其提供的合成器类,可自定义振荡器类型,如锯齿波、方波或正弦波,并调制振幅来创造不同音色,还…...
【SH】在Ubuntu Server 24中基于Python Web应用的Flask Web开发(实现POST请求)学习笔记
文章目录 Flask开发环境搭建保持Flask运行Debug调试 路由和视图可变路由 请求和响应获取请求信息Request属性响应状态码常见状态码CookieSession 表单GET请求POST请求 Flask 在用户使用浏览器访问网页的过程中,浏览器首先会发送一个请求到服务器,服务器…...
方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC]
文章目录 方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现方正畅享全媒体采编系统reportCenter.do接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利…...
SpringBoot Redis 消息队列
文章目录 参考消息队列list源码 pub/sub源码 参考 https://www.cnblogs.com/uniqueDong/p/15904837.html https://www.cnblogs.com/wzh2010/p/17205390.html https://blog.csdn.net/qq_16557637/article/details/121015736 https://developer.aliyun.com/article/1095035 http…...
Oracle 中间件 Webcenter Portal服务器环境搭建
环境信息 服务器基本信息 如下表,本次安装总共使用2台服务器,具体信息如下: Webcenter1服务器 归类 SOA服务器 Ip Address 172.xx.xx.xx.xx HostName wcc01.xxxxxx.com Alias wccprd01 Webcenter2服务器 归类 OSB服务器 Ip Addr…...
域名和服务器是什么?域名和服务器是什么关系?
在互联网的生态系统中,域名和服务器是两个至关重要的组成部分。它们共同构成了我们访问网站和使用在线服务的基础。那么域名和服务器是什么?域名和服务器是什么关系? 1、域名的概念 域名是互联网中用于标识特定地址的一种文字形式。它是用户访问网站时输入的易记…...
设计模式-观察者模式
背景 气象站需要将每天测量到的温度、湿度、气压等数据公布出去, 需要设计开放的API,以便第三方获取气象站的数据, 如果数据有更新,能及时地通知第三方 传统思路: 创建WeatherData类,有温度、湿度、气…...
获取显示器(主/副屏)友好名称(FriendlyName)
在开发涉及多显示器的应用程序时,获取显示器的友好名称(Friendly Name)是一个常见需求。本文将深入探讨GetMonitorFriendlyName 方法,了解其实现细节和工作原理。 方法签名 public static string GetMonitorFriendlyName(bool i…...
打造智慧医院挂号枢纽:SSM 与 Vue 融合的系统设计与实施
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
图漾相机-ROS1_SDK_ubuntu版本编译(新版本)
文章目录 官网编译文档链接官网SDK下载链接1、下载 Camport ROS1 SDK1.下载git2、下载链接 2、准备编译工作1、安装 catkin2、配置环境变量3. 将Camport3中的linux库文件拷贝到 user/lib目录下4、修改lunch文件制定相机(可以放在最后可以参考在线文档)**…...
ENSP实验
一.实验拓扑 二.实验需求 1.学校内部的HTTP客户端可以正常通过域名www.baidu.com访问到百度网络中的HTTP服务器 2.学校网络内部网段基于192.168.1.0/24划分,PC1可以正常访问3.3.3.0/24网段,但是PC2不允许 3.学校内部路由使用静态路由,R1和…...
10. 虚拟机VMware Workstation Pro下共享Ubuntu和Win11文件夹
本文记录当前最新版虚拟机VMware Workstation Pro(2024.12)如何在win11下共享文件,以实现Windows与Ubuntu互传文件的目的。 1. 创建共享文件夹 1.1 先关闭虚拟机的客户机,打开虚拟机设置 1.2 在虚拟机设置界面找到“选项”->“…...
Qwen文章阅读笔记
一、引言 大型语言模型(LLMs)的影响: LLMs通过将大量知识压缩进神经网络,使得它们在复杂推理和问题解决任务上展现出了惊人的能力。这些模型能够执行之前被认为只有人类才能完成的任务,尤其是在涉及创造力和专业知识…...
Docker容器命令
docker 命令说明docker pull拉取镜像docker push推送镜像到DockerRegistrydocker images查看本地镜像docker rmi删除本地镜像docker run创建并运行容器(不能重复创建)docker stop停止指定容器docker start启动指定容器docker restart重新启动容器docker…...
算法 计算大的长方形容器中,存放一排小长形容器,计算出小长形容器中最后一个元素的x坐标的位置的实现方法
1、先上个图: 2、说明 1)中间的蓝色长方形是里面的橙色长方形的容器,比如第一个图中width2width3,因为只有一个,第二个图中有二个小的长方形,也就是说width22width3,第三个图中有3个小长方形&a…...
【libuv】Fargo信令1:client发connect消息给到server
tcp 单机测试,进行模拟 (借助copilot实现) 【Fargo】28:字节序列client发connect消息给到serverserver 收到后回复ack给到客户端程序借助copilot实现。项目构建 Console依赖于Halo.dll提供的api,Halo 依赖于 Immanuel, 运行效果 遗留问题 客户端似乎么有逻辑收到ack做处理各…...
MyBatis主键自增回填功能源码分析
文章目录 难点分析KeyGenerator接口概述SelectKeyGenerator分析 解析selectKey标签执行插入后执行获取主键查询 难点分析 【1】 事务的一致性。 在插入数据并获取自增主键时,可能会涉及事务的一致性问题,尤其是在并发插入的情况下。MyBatis需要确保即使…...
Git使用教程-分支使用/合并分支提交
Git使用教程-分支使用 文章目录 Git使用教程-分支使用一、分支(branch)的基本操作:二、查看分支:参考 一、分支(branch)的基本操作: git clone https://.git git status …...
TypeScript概述与安装指南
TypeScript概述与安装指南 HarmonyOS Next主要开发语言是ArkTS,ArkTS又是TS的超集,为了更好的学习HarmonyOS 和 ArkTS,从基础的TS入口介绍TS语法。 第一章:TypeScript概述与安装指南 1.1 什么是TypeScript? TypeSc…...
学技术学英文:代码中的锁:悲观锁和乐观锁
本文导读: 1. 举例说明加锁的场景: 多线程并发情况下有资源竞争的时候,如果不加锁,会出现数据错误,举例说明: 业务需求:账户余额>取款金额,才能取钱。 时间线 两人共有账户 …...
Git配置公钥步骤
GIt公钥的配置去除了git push输入账号密码的过程,简化了push流程。 1.生成SSH公钥和私钥 ssh-keygen -t rsa -b 4096 -C “your_emailexample.com” 遇到的所有选项都按回车按默认处理。获得的公钥私钥路径如下: 公钥路径 : ~/.ssh/id_rsa.pub 私钥路径…...
NSDT 3DConvert:高效实现大模型文件在线预览与转换
NSDT 3DConvert 作为一个 WebGL 展示平台,能够实现多种模型格式免费在线预览,并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互,这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…...
优先队列【东北大学oj数据结构9-3】C++
优先队列 优先级队列是一种数据结构,其中保存了一组数据 S,其中每个元素都有一个键,并执行以下操作: insert(S, k):将元素k插入集合S extractMax(S):从S中取出S中key最大的元素并返回其值 创建一个程序&am…...
全志H618 Android12修改doucmentsui功能菜单项
背景: 由于当前的文件管理器在我们的产品定义当中,某些界面有改动的需求,所以需要在Android12 rom中进行定制以符合当前产品定义。 需求: 在进入File文件管理器后,查看...功能菜单时,有不需要的功能菜单,需要隐藏,如:新建窗口、不显示的文件夹、故代码分析以及客制…...
SAP PP ECN CSAP_MAT_BOM_MAINTAIN
刚开始的时候ECN总是加不上, 参考kimi给出的案例 点击链接查看和 Kimi 智能助手的对话 https://kimi.moonshot.cn/share/cth1ipmqvl7f04qkggdg 效果 加上了 FUNCTION ZPBOM_PLM2SAP. *"------------------------------------------------------------------…...
STM32HAL I2C函数
8.5 使用IIC协议读写EEPROM 硬件方式实现 (HAL库) **HAL_I2C_Mem_Write() :这种方法可以写1个或者多个字节 ** /*** brief 以阻塞模式向指定的内存地址写入数据* param hi2c 指向 I2C_HandleTypeDef 结构体的指针,包含指定 I2C 的配置信息…...
技术转管理需要有哪些思维上的转变?
不少项目管理行业的负责人都是从技术岗产生,那么技术岗做的是代码、调试之类的内容,除了负责范围增加外,还有什么思维方面的转变呢? 1、从个体到团队 个体的技能决定着工作的完成度,而在管理工作岗位上,项…...
数据结构漫游记:初识vector
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的…...
RestTemplate远程调用、服务注册、
一.RestTemplate Spring给我们提供了一个RestTemplate的API,可以方便的实现Http请求的发送。 同步客户端执行HTTP请求,在底层HTTP客户端库(如JDK HttpURLConnection、Apache HttpComponents等)上公开一个简单的模板方法API。RestTemplate通过HTTP方法为常…...
ARP..
ARP 0 前言 真正接触到现网才发现ARP十分重要,无论是排错还是S-MLAG都需要用到ARP这个协议,以前对于ARP的理解比较混乱;所以这次对其中的主要内容做个梳理;一定要学好ARP!!! 1 ARP的概念 Ar…...
电子电器架构 ---整车区域控制器
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...
HBase、Hive、Redis 和 MongoDB的对比
1. 数据库管理 操作HBaseHiveRedisMongoDB创建数据库N/A (HBase 没有数据库概念)CREATE DATABASE db_name;N/A (Redis 没有数据库命名功能)use db_name; (自动创建)查看数据库N/ASHOW DATABASES;INFO 查看全局信息show dbs;删除数据库N/ADROP DATABASE db_name CASCADE;N/Adb.…...
前端在WebSocket中加入Token
在WebSocket通信中加入Token主要是为了实现身份验证和授权,确保只有经过验证的用户可以建立WebSocket连接。由于WebSocket API本身不支持直接在连接时设置HTTP头部,因此需要采用一些变通的方法来传递Token。以下是几种常见的方法: 1、通过UR…...
图解HTTP-HTTP报文
参考资料:图解HTTP HTTP报文 用于HTTP协议交互的信息被称为HTTP报文。请求端的HTTP请求报文,响应端(服务器端)的叫做响应报文。HTTP报文本身是由多行(CR LF作为换行符)数据行构成的文本。 请求报文及响…...