EX_25/2/19
1.
封装一个 File 类,用有私有成员
File* fp
实现以下功能
File f = "文件名" 要求打开该文件
f.write(string str) 要求将str数据写入文件中
string str = f.read(int size) 从文件中读取最多size个字节,并将读取到的数据返回
析构函数
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std; class File
{
private:FILE* fp;
public:File();File(const string& str);~File();void write(const string&str);string read(const int& size);
};File::File()
{fp=NULL;
}File::File(const string& str)
{const char* buf=str.data();fp=fopen(buf,"a+");
}File::~File()
{if(fp!=NULL){fclose(fp);}
}void File::write(const string& str)
{const char* buf=str.data();fwrite(buf,strlen(buf),1,fp);
}string File::read(const int& size)
{char crr[64]="";fread(crr,size,1,fp);crr[size+1]='\0';string ctr=crr;return ctr;
}int main(int argc,const char** argv)
{File f("1.text");f.write("abc");string ret=f.read(3);cout<<ret<<endl;return 0;
}
2.封装一个 Mutex 互斥锁类
要求:
构造函数:初始化互斥锁,并选择互斥锁的种类
lock 上锁互斥锁
unlock 解锁互斥锁
析构函数,销毁互斥锁
并且开启一个线程测试该互斥锁
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <unistd.h>
#include <sstream>
#include <vector>
#include <memory>using namespace std; class Mutex
{
private:pthread_mutex_t m;
public:Mutex();Mutex(char* kind);~Mutex();void lock();void unlock();
};
Mutex::Mutex()
{pthread_mutex_init(&m,NULL);
}
Mutex::Mutex(char* kind)
{string st=kind;pthread_mutexattr_t attr;pthread_mutexattr_init(&attr);pthread_mutexattr_settype(&attr,st);
}
void Mutex::lock()
{pthread_mutex_lock(&m);
}
void Mutex::unlock()
{pthread_mutex_unlock(&m);
}
Mutex::~Mutex()
{pthread_mutex_destroy(&m);
}
int a=0;
Mutex mut("PTHREAD_MUTEX_FAST_NP");
void *thread_main(void* arg)
{while(1){mut.lock();a=100;mut.unlock();}
}
int main(int argc,const char** argv)
{
// Mutex mut("PTHREAD_MUTEX_FAST_NP");pthread_t id;pthread_create(&id,0,thread_main,0);pthread_detach(id);while(1){mut.lock();a=999;mut.unlock();}return 0;
}
相关文章:
EX_25/2/19
1. 封装一个 File 类,用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节,并将读取到的数据返回 析构函数 …...
Breakout Tool
思科 CML 使用起来还是很麻烦的,很多操作对于习惯了 secure crt 或者 putty 等工具的网络工程师都不友好。 Breakout Tool 提供对远程实验室中虚拟机控制台与图形界面的本地化接入能力,其核心特性如下: Console 访问:基于 Telnet…...
【大模型】DeepSeek:AI浪潮中的破局者
【大模型】DeepSeek:AI浪潮中的破局者 引言:AI 新时代的弄潮儿DeepSeek:横空出世展锋芒(一)诞生背景与发展历程(二)全球影响力初显 探秘 DeepSeek 的技术内核(一)独特的模…...
Kafka 简介
Kafka 简介 Apache Kafka 是一个开源的分布式流处理平台,广泛应用于实时数据流处理、日志管理、消息传递等场景。Kafka 最初由 LinkedIn 开发,并于 2011 年捐献给 Apache 软件基金会。 Kafka 的设计目标是高吞吐量、低延迟和高可用性,它能够…...
什么是掉期(Swap)?——金融衍生品的关键工具(中英双语)
什么是掉期(Swap)?——金融衍生品的关键工具 引言 掉期(Swap) 是金融市场中最重要的衍生品之一,它允许两方交换未来的现金流,以优化融资成本、规避利率或汇率风险,甚至进行投机交易…...
深入解析 Vue 项目中的缓存刷新机制:原理与实战
目录 前言1. Demo2. 知识拓展 前言 在 Vue 项目中,缓存通常用于存储用户信息、角色权限、系统设置等,以提高页面加载速度并减少 API 请求 这里使用 web-storage-cache 作为封装的本地存储工具,支持 localStorage 和 sessionStorage 方式存储…...
【C++】 Flow of Control
《C程序设计基础教程》——刘厚泉,李政伟,二零一三年九月版,学习笔记 文章目录 1、选择结构1.1、if 语句1.2、嵌套的 if 语句1.3、条件运算符 ?:1.4、switch 语句 2、循环结构2.1、while 语句2.2、do-while 语句2.3、 for 循环2.4、循环嵌套…...
【异常错误】pycharm debug view变量的时候显示不全,中间会以...显示
异常问题: 这个是在新版的pycharm中出现的,出现的问题,点击view后不全部显示,而是以...折叠显示 在setting中这么设置一下就好了: 解决办法: https://youtrack.jetbrains.com/issue/PY-75568/Large-stri…...
2.19c++练习
1.封装一个mystring类 拥有私有成员: char* p int len 需要让以下代码编译通过,并实现对应功能 mystring str "hello" mystring ptr; ptr.copy(str) ptr.append(str) ptr.show() 输出ptr代表的字符串 ptr.compare(str) 比较ptr和…...
【为什么使用`new DOMParser`可以保持SVG命名空间】
为什么使用new DOMParser可以保持SVG命名空间: 一、命名空间基础概念 1. XML命名空间定义 <svg xmlns"http://www.w3.org/2000/svg"><!-- 此元素及其子元素属于SVG命名空间 --><rect x"10" y"20"/> </svg>…...
【DL】浅谈深度学习中的知识蒸馏 | 输出层知识蒸馏
目录 一 核心概念与背景 二 输出层知识蒸馏 1 教师模型训练 2 软标签生成(Soft Targets) 3 学生模型训练 三 扩展 1 有效性分析 2 关键影响因素 3 变体 一 核心概念与背景 知识蒸馏(Knowledge Distillation, KD)是一种模…...
应急响应(linux 篇,以centos 7为例)
一、基础命令 1.查看已经登录的用户w 2.查看所有用户最近一次登录:lastlog 3.查看历史上登录的用户还有登录失败的用户 历史上所有登录成功的记录 last /var/log/wtmp 历史上所有登录失败的记录 Lastb /var/log/btmp 4.SSH登录日志 查看所有日志:…...
EasyRTC:智能硬件适配,实现多端音视频互动新突破
一、智能硬件全面支持,轻松跨越平台障碍 EasyRTC 采用前沿的智能硬件适配技术,无缝对接 Windows、macOS、Linux、Android、iOS 等主流操作系统,并全面拥抱 WebRTC 标准。这一特性确保了“一次开发,多端运行”的便捷性,…...
堆和栈的区别
堆和栈 不同点: 内存分配方式不同: 栈:栈上的内存是自动分配和释放的,通常用于存储函数调用过程中的局部变量、调用参数和使用的寄存器状态等信息。堆:堆上的内存是动态分配的,程序在运行时可以根据需要分…...
【信息系统项目管理师】专业英语重点词汇大汇总
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 一、信息和信息系统重要词汇汇总1.Computer(计算机)重要词汇2.Information system(信息系统)重要词汇3.Software Engineering(软件工程)重要词汇4.Network(网络)相关重要词汇5.信息安全重要词汇6.Electronic Co…...
CV -- YOLOv8 图像分割(GPU环境)
目录 参考视频: 标注 JSON转为TXT 训练 验证 参考视频: 使用 Yolov8 自定义数据集进行图像分割_哔哩哔哩_bilibili 标注 数据集: 我使用的是一些苹果数据集,可以在我的csdn资源中下载: https://download.csdn.net/do…...
Cherry-Studio下载安装教程,AI面向开发者的工具或平台(付安装包)
文章目录 一、Cherry Studio是什么?二、功能特点 一、Cherry Studio是什么? Cherry Studio 是一款开源跨平台的多模型服务桌面客户端,集成超 300 个大语言模型,内置 300 多个预配置 AI 助手,支持多格式文件处理、全局…...
【Javascript Day19】BOM
目录 BOM对象的方法 定时器方法 短信验证码案例 计时器元素动画 同步代码和异步代码 location对象 跳转查询页面参数 跳转多查询参数 BOM对象的方法 // window.alert("提示");// window 中提供的方法和属性,可以在省略window对象的情况下直接调用…...
git 操作 已经 commit 但是没有 push 怎么办
前言: 在操作commit后发现提交错了分支,直接切换分支是不行的,只能先取消commit的代码才能切换分支,因此记录一下git的操作 如果你已经执行了 git commit 但还没有进行 git push,可以通过以下几种方式撤回或修改提交…...
在 macOS 的 ARM 架构上按住 Command (⌘) + Shift + .(点)。这将暂时显示隐藏文件和文件夹。
在 macOS 的 ARM 架构(如 M1/M2 系列的 Mac)上,设置 Finder(访达)来显示隐藏文件夹的步骤如下: 使用快捷键临时显示隐藏文件: 在Finder中按住 Command (⌘) Shift .(点ÿ…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
