首页 > 其他分享 >代理模式(Proxy)

代理模式(Proxy)

时间:2023-06-16 09:48:51浏览次数:32  
标签:cout void Cache 代理 模式 故障 Proxy getBugs include

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <map>
#include <vector>
using namespace std;

//切分成log:
///        故障名,故障时间,故障描述
///map<int,vector<string>>:int 故障的序号,然后我们将这些( 故障名|故障时间|故障描述)
map<int, vector<string>> Cache;

//class BugManager {
//public:
//    virtual void getBug() = 0;
//};

class RealBugModel {
public:
    void getBugs() {
        //从文件读取,并且将故障信息封装进入Cache中
        ifstream in("e:\\tmp\\故障列表.txt");
        if (!in) {
            cerr << "文件打开错误" << endl;
            system("pause");
            
        }
        string line;
        int i = 0;
        while (getline(in, line)) {
            Cache[i] = getCache(line);
            i++;
        }
        in.close();
    }
private:
    vector<string> getCache(string words) {
        vector<string> results;
        istringstream ss(words);
        while (!ss.eof())
        {
            string word;
            getline(ss, word, '|');
            results.push_back(word);
        }
        return results;
    }
};

class ProxyBugModel {
public:
    ProxyBugModel() :m_reload(false) {

    }
    void getBugs() {
        if (m_reload) {
            cout << "这是从缓存里面获取的" << endl;
            showBugs();
        }
        else {
            cout << "这是真实的数据" << endl;
            (new RealBugModel())->getBugs();
            m_reload = true;
            showBugs();
        }
    }
private:
    void showBugs() {
        for (int i = 0;i < Cache.size();i++) {
            cout << "第" << i << "行是";
            for (vector<string>::iterator iter = Cache[i].begin();iter != Cache[i].end();iter++) {
                cout << (*iter) << " ";
            }
            cout << endl;
        }
    }
private:
    bool m_reload;//如果reload为真,表示,这个是从缓存里面拿的,否则,我们请求真正的realbug对象
};



int main(void) {
    ProxyBugModel* p = new ProxyBugModel();
    for (int i = 0;i < 5;i++) {
        cout << "第" << i << "次请求" << endl;
        p->getBugs();
    }
    
    system("pause");
    return 0;
}
CacheBugs.cpp

 远程代理.cpp

 

标签:cout,void,Cache,代理,模式,故障,Proxy,getBugs,include
From: https://www.cnblogs.com/zeliangzhang/p/17484768.html

相关文章

  • BT139-600E-ASEMI代理恩智浦原装可控硅BT139-600E
    编辑:llBT139-600E-ASEMI代理恩智浦原装可控硅BT139-600E型号:BT139-600E品牌:NXP/恩智浦封装:TO-220正向电流:16A反向电压:600V引脚数量:3类型:双向可控硅特性:双向可控硅、恩智浦原装可控硅工作温度:-40°C~150°C封装尺寸:如图BT139-600E产品描述:BT139-600E系列双向可控硅采......
  • Vue项目打包部署上线时devServer.proxy代理失效如何解决?使用nginx的proxy_pass 代理跨
    Vue项目打包部署上线时devServer.proxy代理失效如何解决?使用proxy_pass代理跨域转发前言本篇文章用于记录项目前端部署上线遇到的问题,包含对问题的思考、解决思路,以及从中获得的收获。正确的部署流程我也写了一篇文章,供大家参考使用宝塔将Vue2+Nodejs全栈项目打包部署到腾讯云服......
  • 【网络知识】FTP主被动模式介绍及抓包分析
    一.FTP是什么FTP,即文件传输协议(FileTransferProtocol,FTP),基于该协议客户端与服务端可以实现共享文件、上传文件、下载文件。FTP基于TCP协议生成两个连接,一个用来控制连接,传输FTP命令,标准端口为21;另一个用于上传、下载数据,标准端口为20。FTP有两种工作模式,分别是主动模式和被动......
  • 深入理解ASEMI代理光宝LTV-152光耦的特性与应用
    编辑-Z光耦LTV-152是一种广泛应用于电子设备中的光电器件,它的主要功能是实现电路之间的隔离和信号传输。本文将深入探讨光耦LTV-152的特性和应用,帮助读者更好地理解和使用这种重要的电子元件。 一、光耦LTV-152的特性 1.高隔离电压:光耦LTV-152具有高达5000Vrms的隔离电压,......
  • ASEMI代理光宝光耦LTV-0314的应用与优势
    编辑-Z在电子设备的设计和制造过程中,光耦合器是一种至关重要的组件。它们在电路中起到隔离作用,保护电子设备免受电压冲击和电流过载的影响。今天,我们将深入探讨一种特殊的光耦合器——LTV-0314,它的特性、应用以及优势。 一、LTV-0314的特性 LTV-0314是一种高性能的光耦合器......
  • 观察者模式:发送状态变化通知
    观察者模式是一种行为设计模式,它允许对象在发生特定事件时通知其他对象。这些被通知的对象被称为观察者,而通知它们的对象称为主题或可观察对象。该模式使用了松散耦合的原则,因此主题和观察者之间没有太多的依赖关系。示例代码:importjava.util.ArrayList;importjava.util.Li......
  • 代理IP与Socks5代理技术的应用与优势
    代理IP的概念和应用:代理IP是一种允许用户隐藏真实IP地址并通过代理服务器转发请求的技术。它的应用范围广泛,包括但不限于以下方面:提高匿名性:通过代理IP,用户可以隐藏自己的真实IP地址,从而保护个人隐私和身份安全。突破地理限制:使用代理IP可以绕过地理限制,访问被封锁或地区限制的网......
  • python使用aiohttp通过设置代理爬取基金数据
    说到python爬虫,我们就会想到它那强大的库,很多新手小白在选择框架的时候都会想到使用Scrapy,但是仅仅停留在会使用的阶段。在实际爬虫过程中遇到反爬机制是再常见不过的,今天为了增加对爬虫机制的理解,我们就通过手动实现多线程的爬虫过程,同时引入IP代理池进行基本的反爬操作。这里我们......
  • kafka消费模式
    消费者消费方式:订阅与分配1、KafkaConsumer.subscribe():为consumer自动分配partition,有内部算法保证topic-partition以最优的方式均匀分配给相同group下的不同consumer。2、KafkaConsumer.assign():为consumer手动、显示的指定需要消费的topic-partitions,不受group.id限制,相当与......
  • 为什么爬虫要使用住宅代理呢?
    爬虫使用住宅代理的主要原因是为了隐藏自己的真实IP地址,以避免被目标网站封禁或限制访问。住宅代理通常使用真实的住宅网络IP地址,与数据中心代理不同,更难被目标网站识别出来。此外,住宅代理还可以模拟真实用户的访问行为,提高爬虫的稳定性和可靠性。但需要注意的是,使用住宅代理也需......