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

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 类&#xff0c;用有私有成员 File* fp 实现以下功能 File f "文件名" 要求打开该文件 f.write(string str) 要求将str数据写入文件中 string str f.read(int size) 从文件中读取最多size个字节&#xff0c;并将读取到的数据返回 析构函数 …...

Breakout Tool

思科 CML 使用起来还是很麻烦的&#xff0c;很多操作对于习惯了 secure crt 或者 putty 等工具的网络工程师都不友好。 Breakout Tool 提供对远程实验室中虚拟机控制台与图形界面的本地化接入能力&#xff0c;其核心特性如下&#xff1a; Console 访问&#xff1a;基于 Telnet…...

【大模型】DeepSeek:AI浪潮中的破局者

【大模型】DeepSeek&#xff1a;AI浪潮中的破局者 引言&#xff1a;AI 新时代的弄潮儿DeepSeek&#xff1a;横空出世展锋芒&#xff08;一&#xff09;诞生背景与发展历程&#xff08;二&#xff09;全球影响力初显 探秘 DeepSeek 的技术内核&#xff08;一&#xff09;独特的模…...

Kafka 简介

Kafka 简介 Apache Kafka 是一个开源的分布式流处理平台&#xff0c;广泛应用于实时数据流处理、日志管理、消息传递等场景。Kafka 最初由 LinkedIn 开发&#xff0c;并于 2011 年捐献给 Apache 软件基金会。 Kafka 的设计目标是高吞吐量、低延迟和高可用性&#xff0c;它能够…...

什么是掉期(Swap)?——金融衍生品的关键工具(中英双语)

什么是掉期&#xff08;Swap&#xff09;&#xff1f;——金融衍生品的关键工具 引言 掉期&#xff08;Swap&#xff09; 是金融市场中最重要的衍生品之一&#xff0c;它允许两方交换未来的现金流&#xff0c;以优化融资成本、规避利率或汇率风险&#xff0c;甚至进行投机交易…...

深入解析 Vue 项目中的缓存刷新机制:原理与实战

目录 前言1. Demo2. 知识拓展 前言 在 Vue 项目中&#xff0c;缓存通常用于存储用户信息、角色权限、系统设置等&#xff0c;以提高页面加载速度并减少 API 请求 这里使用 web-storage-cache 作为封装的本地存储工具&#xff0c;支持 localStorage 和 sessionStorage 方式存储…...

【C++】 Flow of Control

《C程序设计基础教程》——刘厚泉&#xff0c;李政伟&#xff0c;二零一三年九月版&#xff0c;学习笔记 文章目录 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变量的时候显示不全,中间会以...显示

异常问题&#xff1a; 这个是在新版的pycharm中出现的&#xff0c;出现的问题&#xff0c;点击view后不全部显示&#xff0c;而是以...折叠显示 在setting中这么设置一下就好了&#xff1a; 解决办法&#xff1a; https://youtrack.jetbrains.com/issue/PY-75568/Large-stri…...

2.19c++练习

1.封装一个mystring类 拥有私有成员&#xff1a; char* p int len 需要让以下代码编译通过&#xff0c;并实现对应功能 mystring str "hello" mystring ptr; ptr.copy(str) ptr.append(str) ptr.show() 输出ptr代表的字符串 ptr.compare(str) 比较ptr和…...

【为什么使用`new DOMParser`可以保持SVG命名空间】

为什么使用new DOMParser可以保持SVG命名空间&#xff1a; 一、命名空间基础概念 1. XML命名空间定义 <svg xmlns"http://www.w3.org/2000/svg"><!-- 此元素及其子元素属于SVG命名空间 --><rect x"10" y"20"/> </svg>…...

【DL】浅谈深度学习中的知识蒸馏 | 输出层知识蒸馏

目录 一 核心概念与背景 二 输出层知识蒸馏 1 教师模型训练 2 软标签生成&#xff08;Soft Targets&#xff09; 3 学生模型训练 三 扩展 1 有效性分析 2 关键影响因素 3 变体 一 核心概念与背景 知识蒸馏&#xff08;Knowledge Distillation, KD&#xff09;是一种模…...

应急响应(linux 篇,以centos 7为例)

一、基础命令 1.查看已经登录的用户w 2.查看所有用户最近一次登录&#xff1a;lastlog 3.查看历史上登录的用户还有登录失败的用户 历史上所有登录成功的记录 last /var/log/wtmp 历史上所有登录失败的记录 Lastb /var/log/btmp 4.SSH登录日志 查看所有日志&#xff1a;…...

EasyRTC:智能硬件适配,实现多端音视频互动新突破

一、智能硬件全面支持&#xff0c;轻松跨越平台障碍 EasyRTC 采用前沿的智能硬件适配技术&#xff0c;无缝对接 Windows、macOS、Linux、Android、iOS 等主流操作系统&#xff0c;并全面拥抱 WebRTC 标准。这一特性确保了“一次开发&#xff0c;多端运行”的便捷性&#xff0c…...

堆和栈的区别

堆和栈 不同点&#xff1a; 内存分配方式不同&#xff1a; 栈&#xff1a;栈上的内存是自动分配和释放的&#xff0c;通常用于存储函数调用过程中的局部变量、调用参数和使用的寄存器状态等信息。堆&#xff1a;堆上的内存是动态分配的&#xff0c;程序在运行时可以根据需要分…...

【信息系统项目管理师】专业英语重点词汇大汇总

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 一、信息和信息系统重要词汇汇总1.Computer(计算机)重要词汇2.Information system(信息系统)重要词汇3.Software Engineering(软件工程)重要词汇4.Network(网络)相关重要词汇5.信息安全重要词汇6.Electronic Co…...

CV -- YOLOv8 图像分割(GPU环境)

目录 参考视频&#xff1a; 标注 JSON转为TXT 训练 验证 参考视频&#xff1a; 使用 Yolov8 自定义数据集进行图像分割_哔哩哔哩_bilibili 标注 数据集&#xff1a; 我使用的是一些苹果数据集&#xff0c;可以在我的csdn资源中下载&#xff1a; https://download.csdn.net/do…...

Cherry-Studio下载安装教程,AI面向开发者的工具或平台(付安装包)

文章目录 一、Cherry Studio是什么&#xff1f;二、功能特点 一、Cherry Studio是什么&#xff1f; Cherry Studio 是一款开源跨平台的多模型服务桌面客户端&#xff0c;集成超 300 个大语言模型&#xff0c;内置 300 多个预配置 AI 助手&#xff0c;支持多格式文件处理、全局…...

【Javascript Day19】BOM

目录 BOM对象的方法 定时器方法 短信验证码案例 计时器元素动画 同步代码和异步代码 location对象 跳转查询页面参数 跳转多查询参数 BOM对象的方法 // window.alert("提示");// window 中提供的方法和属性&#xff0c;可以在省略window对象的情况下直接调用…...

git 操作 已经 commit 但是没有 push 怎么办

前言&#xff1a; 在操作commit后发现提交错了分支&#xff0c;直接切换分支是不行的&#xff0c;只能先取消commit的代码才能切换分支&#xff0c;因此记录一下git的操作 如果你已经执行了 git commit 但还没有进行 git push&#xff0c;可以通过以下几种方式撤回或修改提交…...

在 macOS 的 ARM 架构上按住 Command (⌘) + Shift + .(点)。这将暂时显示隐藏文件和文件夹。

在 macOS 的 ARM 架构&#xff08;如 M1/M2 系列的 Mac&#xff09;上&#xff0c;设置 Finder&#xff08;访达&#xff09;来显示隐藏文件夹的步骤如下&#xff1a; 使用快捷键临时显示隐藏文件&#xff1a; 在Finder中按住 Command (⌘) Shift .&#xff08;点&#xff…...

别再手动改尺寸了!用NX二次开发批量处理表达式(Expression)的实战技巧

别再手动改尺寸了&#xff01;用NX二次开发批量处理表达式&#xff08;Expression&#xff09;的实战技巧 如果你是一名NX设计师或工程师&#xff0c;每天面对几十甚至上百个需要手动调整的表达式&#xff08;Expression&#xff09;&#xff0c;修改尺寸参数、重命名变量、更新…...

实时视频翻译系统架构优化与工程实践

1. 实时视频翻译系统的技术挑战与架构演进在全球化协作日益频繁的今天&#xff0c;视频会议已成为跨国商务、学术交流和远程办公的核心工具。然而语言障碍始终是阻碍沟通效率的关键瓶颈。传统字幕翻译方案存在明显缺陷&#xff1a;文字信息无法传递说话者的语气情感&#xff0c…...

避坑指南:DESeq2分析中你最容易忽略的5个细节(从样本信息表设计到结果解读)

避坑指南&#xff1a;DESeq2分析中你最容易忽略的5个细节&#xff08;从样本信息表设计到结果解读&#xff09; 当你第一次看到DESeq2输出的差异基因列表时&#xff0c;是否曾对某些结果产生过怀疑&#xff1f;或许你按照教程一步步操作&#xff0c;却发现结果与预期不符。这不…...

3个维度重构你的Windows体验:Win11Debloat系统深度优化解码

3个维度重构你的Windows体验&#xff1a;Win11Debloat系统深度优化解码 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…...

别再只看总分了!手把手教你读懂C-Eval、SuperCLUE等大模型评测榜单(附实战选型建议)

大模型评测榜单深度解读&#xff1a;如何根据业务需求选择最适合的中文模型 当你在搜索引擎输入"C-Eval榜单"时&#xff0c;弹出的前三条结果可能都在讨论哪个模型总分最高——但作为技术决策者&#xff0c;真正需要关注的是榜单背后那些被折叠的细节。去年某电商平台…...

3个高效技巧,让英雄联盟回放分析更专业

3个高效技巧&#xff0c;让英雄联盟回放分析更专业 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player ROFL-Player是一款专为英雄联盟玩家设…...

LinkSwift网盘直链下载神器:告别限速困扰的终极解决方案

LinkSwift网盘直链下载神器&#xff1a;告别限速困扰的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

别再只会用sub了!R语言里gsub的‘全局替换’技巧,帮你一键清理脏数据

R语言数据清洗实战&#xff1a;gsub的全局替换艺术与正则表达式进阶技巧 在数据分析的日常工作中&#xff0c;我们常常会遇到各种"脏数据"——格式混乱的日期、前后不一致的产品名称、夹杂着特殊字符的文本字段。这些看似小问题却可能让后续分析功亏一篑。很多R用户虽…...

AI搜索引擎Morphic:基于生成式UI与双模式搜索的智能问答系统

1. 项目概述&#xff1a;一个能“思考”的搜索引擎如果你厌倦了在传统搜索引擎里翻好几页才能找到答案&#xff0c;或者觉得现在的AI聊天机器人虽然能说会道&#xff0c;但回答总像是从一堆文档里东拼西凑出来的&#xff0c;那这个项目可能就是你一直在找的东西。Morphic&#…...

五一给爸妈换手机?这部畅享90Plus,比咱想得还周到

爸妈那辈人逐渐上了年纪&#xff0c;好多长辈用手机都犯愁——不是功能不够&#xff0c;是没真正懂他们的需求。给爸妈换台华为畅享90 Plus试试&#xff0c;千元价位&#xff0c;却把长辈最需要的“省心、放心、贴心”&#xff0c;全装进去了。大电池&#xff0c;爸妈再也不用天…...