常用模板,常用面试题

字符串分离splitstring

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    
    return 0;
}

vector<string>SplitString(string s,string c)
{
    s=s.substr(1,s.size()-2);//根据具体情况分割
    vector<string>res;
    string::size_type p1=0;
    string::size_type p2=s.find(c,p1);
    while(p2!=string::npos)
    {
        res.push_back(s.substr(p1,p2-p1));
        p1=p2+c.size();
        p2=s.find(c,p1);
    }
    if(p1!=string::npos)
    {
        res.push_back(s.substr(p1));
    }
    return res;
}
#include "./stdc++.hpp"
using namespace std;

// Definition for singly-linked list.
struct ListNode {
    int val;
    ListNode *next;
    ListNode(int x) : val(x), next(NULL) {}
};

class Solution {
 public:
};

int main() {
    string line;
    while (getline(cin, line)) {
    }
    return 0;
}

饿汉模式

//饿汉
class CSingleton
{
public:
    //3 公有的静态方法访问实例
    static CSingleton* get()
    {
        return mysingleton;
    }
    //4 内嵌类析构
    class CDestory
    {
    public:
        ~CDestory()
        {
            if(CSingleton::mysingleton!=nullptr)
            {
                delete CSingleton::mysingleton;
                mysingleton =nullptr;
                cout<<"内嵌类析构函数"<<endl;
            }
        }
    }
    static CDestory myDel;//静态对象
    
private:
    static CSingleton* mysingleton;//2 静态成员变量,类内声明,类外初始化
    CSingleton()//1 私有化构造函数
    {
        cout<<"私有化构造函数"<<endl;
    }
}
CSingleton* CSingleton::mysingleton=new CSingleton();//静态成员变量,类内声明,类外初始化
CSingleton::CDestory myDel;

懒汉

//懒汉,线程不安全
class CSingleton
{
public:
    //3 公有的静态方法访问实例
    static CSingleton* get()
    {
        if(mysingleton==nullptr)
        {
            mysingleton=new CSingleton()
        }
        return mysingleton;
    }
    //4 内嵌类析构
    class CDestory
    {
    public:
        ~CDestory()
        {
            if(CSingleton::mysingleton!=nullptr)
            {
                delete CSingleton::mysingleton;
                mysingleton =nullptr;
                cout<<"内嵌类析构函数"<<endl;
            }
        }
    }
    static CDestory myDel;//静态对象
    
private:
    static CSingleton* mysingleton;//2 静态成员变量,类内声明,类外初始化
    CSingleton()//1 私有化构造函数
    {
        cout<<"私有化构造函数"<<endl;
    }
}
CSingleton* CSingleton::mysingleton=nullptr;//静态成员变量,类内声明,类外初始化,但是懒汉先不创建
CSingleton::CDestory myDel;

shared_ptr

#include<iostream>
#include <mutex>
#include <thread>
template<class T>
class shared_ptr
{
public:
    shared_ptr(T* ptr):_pPtr(ptr),_pRefcount(new int(1)),_pMutex(new mutex){}
    ~shared_ptr(){
        Release();
    }
    shared_ptr(const shared_ptr<T>& sp):_pPtr(sp._pPtr),_pRefcount(sp._pRefcount),_pMutex(sp._pMutex){
        Addcount();
    }
    shared_ptr<T>& operator=(const shared_ptr<T>& sp)
    {
        if(_pPtr!=sp._pPtr)
        {
            Release();
            _pPtr=sp._pPtr;
            _pRefcount=sp._pRefcount;
            _pMutex=sp._pMutex;
            Addcount();
        }
        return *this;
    }
    T& operator*()
    {
        return *_pPtr;
    }
    T* operator->()
    {
        return _pPtr;
    }
    int usecount const()
    {
        return _pRefcount;
    }
    T* get()
    {
        return _pPtr;
    }
    void Addcount()
    {
        _pMutex->lock();
        ++(*_pRefcount);
        _pMutex->unlock();
    }
private:
    void Release()
    {
        bool deleteflag = false;
        _pMutex->lock();
        if(--(*_pRefcount)==0)
        {
            delete _pPtr;
            delete _pRefcount;
            deleteflag = true;
        }
        _pMutex->unlock();
        if(deleteflag==true)
        {
            delete _pMutex;
        }
    }
private:
    T* _pPtr;
    int* _pRefcount;
    mutex* _pMutex;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一些 Docker 常用面试题以及参考答案,希望能对您有所帮助: 1. 简述 Docker 的作用和优势。 Docker 是一款开源的容器化平台,可以将应用程序和其依赖项打包到容器中,实现应用程序的快速部署、可移植性和可伸缩性。Docker 的优势包括: - 简化开发流程:Docker 可以将应用程序和其依赖项打包到容器中,实现一次打包,多次部署; - 提高部署效率:Docker 可以快速部署应用程序,减少部署时间和成本; - 提高可移植性:Docker 容器可以在任何平台和环境中运行,保证应用程序的可移植性; - 提高可伸缩性:Docker 可以通过容器的复制和负载均衡实现应用程序的水平扩展。 2. 简述 Docker 镜像和容器的区别。 Docker 镜像是一个只读的模板,包含了应用程序和其依赖项的所有信息,可以用于创建 Docker 容器。Docker 容器是由 Docker 镜像创建的一个运行环境,包含了应用程序和其依赖项的所有运行时信息。 简单来说,Docker 镜像是一个静态的模板,用于创建 Docker 容器;Docker 容器是一个动态的实例,可以运行应用程序和其依赖项。 3. 简述 Dockerfile 文件的作用和使用方法。 Dockerfile 文件是一种文本文件,用于定义 Docker 镜像的构建方式和内容。Dockerfile 文件中包含了一系列指令,可以用于定义 Docker 镜像的基础镜像、安装软件包、配置环境变量等。 使用 Dockerfile 文件创建 Docker 镜像的步骤如下: - 编写 Dockerfile 文件; - 使用 `docker build` 命令构建 Docker 镜像; - 使用 `docker run` 命令创建并启动 Docker 容器。 4. 简述 Docker Compose 的作用和使用方法。 Docker Compose 是一个开源工具,用于定义和运行多个 Docker 容器的应用程序。Docker Compose 可以通过 YAML 文件定义多个容器的配置和依赖关系,实现一键启动和管理多个容器。 使用 Docker Compose 的步骤如下: - 编写 Docker Compose YAML 文件; - 使用 `docker-compose up` 命令启动 Docker 容器; - 使用 `docker-compose down` 命令停止 Docker 容器。 5. 简述 Docker Swarm 的作用和使用方法。 Docker Swarm 是 Docker 官方提供的容器编排工具,用于管理和调度多个 Docker 容器。Docker Swarm 可以将多个 Docker 主机组成一个集群,实现容器的高可用和负载均衡。 使用 Docker Swarm 的步骤如下: - 配置 Docker Swarm 集群; - 使用 `docker stack deploy` 命令部署应用程序; - 使用 `docker service` 命令管理和监控应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值