cpp:State Pattern

2023-11-07

/*****************************************************************//**
 * \file   Gold.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLD_H
#define GOLD_H
 
 
 
 
#include <iostream>
 
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
    class GoldStatus;
    /// <summary>
    /// 液态 固态 气态  无态   solid, liquid and gas  stateless
    /// </summary>
    class Gold
    {
 
    public:
        Gold(int life);
        ~Gold();
 
    public:
        /// <summary>
        ///
        /// </summary>
        /// <param name="power"></param>
        void Liked(int power); 
 
    public:
        /// <summary>
        /// 获取生命值
        /// </summary>
        /// <returns></returns>
        int GetBoilingPoint() //
        {
            return mBoilingPoint;
        }
        /// <summary>
        /// 设置生命值
        /// </summary>
        /// <param name="life"></param>
        void SetBoilingPoint(int life)
        {
            mBoilingPoint = life;
        }
 
        /// <summary>
        /// 获取当前状态
        /// </summary>
        /// <returns></returns>
        GoldStatus* getCurrentState()
        {
            return mState;
        }
 
        /// <summary>
        /// 设置当前状态
        /// </summary>
        /// <param name="pstate"></param>
        void setCurrentState(GoldStatus* pstate)
        {
            mState = pstate;
        }
 
    private:
        /// <summary>
        /// 沸點
        /// </summary>
        int  mBoilingPoint;
        /// <summary>
        /// 持有状态对象
        /// </summary>
        GoldStatus* mState; 
 
 
 
    };
 
}
 
 
#endif
 
/*****************************************************************//**
 * \file   Gold.cpp
 * \brief    State Pattern 状态模式  C++ 14
 *  2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
 
#include "Gold.h"
#include "GoldStatusLiquid.h"
 
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
    /// <summary>
    /// 构造函数,怪物的初始状态
    /// </summary>
    /// <param name="life"></param>
    Gold::Gold(int life) :mBoilingPoint(life), mState(nullptr)
    {
        //mState = new GoldStatusLiquid();
        mState = GoldStatusLiquid::getInstance();
    }
 
    /// <summary>
    /// 析构函数
    /// </summary>
    Gold::~Gold()
    {
        //delete m_pState;
    }
 
    //怪物被攻击
 
    void Gold::Liked(int power)
    {
        /*
        int orglife = mBoilingPoint; //暂存原来的怪物血量值用于后续比较
        mBoilingPoint -= power;      //怪物剩余的血量
        if (orglife > 400)    //怪物原来处于凶悍状态
        {
            if (mBoilingPoint > 400) //状态未变
            {
                //cout << "怪物受到" << power << "点伤害并对主角进行疯狂的反击!" << endl;
                mState->Liked(power, this); //其他的逻辑代码被本Monster类委托给了具体状态类来处理
            }
            else if (mBoilingPoint > 100) //状态从凶悍改变到不安
            {
                //cout << "怪物受到" << power << "点伤害并对主角进行反击,怪物变得焦躁不安并开始呼唤支援!" << endl;
                delete mState; //释放原有的状态对象
                mState = new GoldStatusGas(); //怪物转到不安状态
                mState->Liked(power, this);
            }
            else if (mBoilingPoint > 0)//状态从凶悍状态改变到恐惧状态,主角的攻击太恐怖了
            {
                //cout << "怪物受到" << power << "点伤害,怪物变得恐惧并开始逃跑!" << endl;
                delete mState; //释放原有的状态对象
                mState = new GoldStatusSolid(); //怪物转到恐惧状态
                mState->Liked(power, this);
            }
            else//状态从凶悍改变到死亡
            {
                //cout << "怪物受到" << power << "点伤害,已经死亡!" << endl;
                delete mState; //释放原有的状态对象
                mState = new GoldStatusStateless(); //怪物转到死亡状态
                mState->Liked(power, this);
            }
        }
        else if (orglife > 100) //怪物原来处于不安状态
        {
            if (mBoilingPoint > 100) //状态未变
            {
                //cout << "怪物受到" << power << "点伤害并对主角进行反击,并继续急促的呼唤支援!" << endl;
                mState->Liked(power, this);
            }
            else if (mBoilingPoint > 0)//状态从不安改变到恐惧
            {
                //cout << "怪物受到" << power << "点伤害,怪物变得恐惧并开始逃跑!" << endl;
                delete mState; //释放原有的状态对象
                mState = new GoldStatusSolid(); //怪物转到恐惧状态
                mState->Liked(power, this);
            }
            else//状态从不安改变到死亡
            {
                //cout << "怪物受到" << power << "点伤害,已经死亡!" << endl;
                delete mState; //释放原有的状态对象
                mState = new GoldStatusStateless(); //怪物转到死亡状态
                mState->Liked(power, this);
            }
        }
        else if (orglife > 0) //怪物原来处于恐惧状态
        {
            if (mBoilingPoint > 0)//状态未变
            {
                //cout << "怪物受到" << power << "点伤害,怪物继续逃跑!" << endl;
                mState->Liked(power, this);
            }
            else//状态从恐惧改变到死亡
            {
                //cout << "怪物受到" << power << "点伤害,已经死亡!" << endl;
                delete mState; //释放原有的状态对象
                mState = new GoldStatusStateless(); //怪物转到死亡状态
                mState->Liked(power, this);
            }
        }
        else //怪物已经死亡
        {
            //已经死亡的怪物,状态不会继续发生改变
            //cout << "怪物已死亡,不能再被攻击!" << endl;
            mState->Liked(power, this);
        }
        */
        mState->Liked(power, this);
 
    }
 
}
 
#pragma once
#ifndef GOLDSTATUS_H
#define GOLDSTATUS_H
 
 
 
 
#include <iostream>
 
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
    /// <summary>
    ///
    /// </summary>
    class Gold;
    /// <summary>
    ///
    /// </summary>
    class GoldStatus
    {
    public:
        /// <summary>
        ///
        /// </summary>
        /// <param name="power"></param>
        /// <param name="mainobj"></param>
        virtual void Liked(int power, Gold* mainobj) = 0;
        /// <summary>
        ///
        /// </summary>
        virtual ~GoldStatus() {}
    };
     
 
}
 
#endif
 
/*****************************************************************//**
 * \file   GoldStatusStateless.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSSTATELESS_H
#define GOLDSTATUSSTATELESS_H
 
 
 
 
#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
    /// <summary>
    ///
    /// </summary>
    class GoldStatusStateless:public GoldStatus
    {
    public:
        virtual void Liked(int power, Gold* mainobj);
 
    public:
        static GoldStatusStateless* getInstance()
        {
            static GoldStatusStateless instance;
            return &instance;
        }
 
 
    };
 
}
 
#endif
 
/*****************************************************************//**
 * \file   GoldStatusStateless.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#include "GoldStatusStateless.h"
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
 
    /// <summary>
    ///
    /// </summary>
    /// <param name="power"></param>
    /// <param name="mainobj"></param>
    void GoldStatusStateless::Liked(int power, Gold* mainobj)
    {
        int orglife = mainobj->GetBoilingPoint();
        if (orglife > 0)
        {
            //
            mainobj->SetBoilingPoint(orglife - power); //无态
            //处理等
        }
        cout << "无形之中!" << std::endl;
    }
 
}
 
/*****************************************************************//**
 * \file   GoldStatusSolid.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSSOLID_H
#define GOLDSTATUSSOLID_H
 
 
 
 
#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusGas.h"
#include "GoldStatusStateless.h"
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
    /// <summary>
    ///
    /// </summary>
    class GoldStatusSolid :public GoldStatus
    {
    public:
        virtual void Liked(int power, Gold* mainobj);
 
    public:
        static GoldStatusSolid* getInstance()
        {
            static GoldStatusSolid instance;
            return &instance;
        }
 
    };
}
 
#endif
 
 
/*****************************************************************//**
 * \file   GoldStatusSolid.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
 
#include "GoldStatusSolid.h"
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="power"></param>
    /// <param name="mainobj"></param>
    void GoldStatusSolid::Liked(int power, Gold* mainobj)
    {
        int orglife = mainobj->GetBoilingPoint();
        if ((orglife - power) > 0)       //
        {
            //状态未变
            mainobj->SetBoilingPoint(orglife - power); //液态
            cout << "处于液态状态中,随处都有其容入之处!" << std::endl;
            //处理其他动作逻辑比如逃跑
        }
        else
        {
            //不管下个状态是啥,总之不会是凶悍、不安和恐惧状态,只可能是死亡状态
            //delete mainobj->getCurrentState();
            //mainobj->setCurrentState(new GoldStatusDead);
            mainobj->setCurrentState(GoldStatusStateless::getInstance());
            mainobj->getCurrentState()->Liked(power, mainobj);
        }
    }
 
}
 
/*****************************************************************//**
 * \file   GoldStatusLiquid.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSFEROC_H
#define GOLDSTATUSFEROC_H
 
 
 
 
#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
 
#include "GoldStatusGas.h"
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
    /// <summary>
    ///
    /// </summary>
    class GoldStatusLiquid:public GoldStatus
    {
 
    public:
        virtual void Liked(int power, Gold* mainobj);
 
 
    public:
        static GoldStatusLiquid* getInstance()
        {
            static GoldStatusLiquid instance;
            return &instance;
        }
 
    };
 
}
#endif
 
/*****************************************************************//**
 * \file   GoldStatusSolid.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
 
#include "GoldStatusSolid.h"
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
    /// <summary>
    ///
    /// </summary>
    /// <param name="power"></param>
    /// <param name="mainobj"></param>
    void GoldStatusSolid::Liked(int power, Gold* mainobj)
    {
        int orglife = mainobj->GetBoilingPoint();
        if ((orglife - power) > 0)       //
        {
            //状态未变
            mainobj->SetBoilingPoint(orglife - power); //液态
            cout << "处于液态状态中,随处都有其容入之处!" << std::endl;
            //处理其他动作逻辑比如逃跑
        }
        else
        {
            //不管下个状态是啥,总之不会是凶悍、不安和恐惧状态,只可能是死亡状态
            //delete mainobj->getCurrentState();
            //mainobj->setCurrentState(new GoldStatusDead);
            mainobj->setCurrentState(GoldStatusStateless::getInstance());
            mainobj->getCurrentState()->Liked(power, mainobj);
        }
    }
 
}
 
/*****************************************************************//**
 * \file   GoldStatusGas.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GOLDSTATUSGAS_H
#define GOLDSTATUSGAS_H
 
 
 
 
#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusSolid.h"
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
    /// <summary>
    ///
    /// </summary>
    class GoldStatusGas:public GoldStatus
    {
    public:
        virtual void Liked(int power, Gold* mainobj);
 
    public:
        static GoldStatusGas* getInstance()
        {
            static GoldStatusGas instance;
            return &instance;
        }
 
 
    };
}
#endif
 
/*****************************************************************//**
 * \file   GoldStatusGas.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#include "GoldStatusGas.h"
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
 
    /// <summary>
    ///
    /// </summary>
    /// <param name="power"></param>
    /// <param name="mainobj"></param>
    void GoldStatusGas::Liked(int power, Gold* mainobj)
    {
        int orglife = mainobj->GetBoilingPoint();
        if ((orglife - power) > 100)       //怪物原来处于不安状态,现在依旧处于不安状态
        {
            //状态未变
            mainobj->SetBoilingPoint(orglife - power); //气态
            cout << "处于气态状态中,可以四处飘溢!" << std::endl;
            //处理其他动作逻辑比如反击和不停的呼唤支援
        }
        else
        {
            //不管下个状态是啥,总之不会是凶悍和不安状态,只可能是恐惧、死亡状态之一,先无条件转到恐惧状态去
            //delete mainobj->getCurrentState();
            //mainobj->setCurrentState(new GoldStatusFear);
            mainobj->setCurrentState(GoldStatusSolid::getInstance());
            mainobj->getCurrentState()->Liked(power, mainobj);
        }
    }
 
}
 
/*****************************************************************//**
 * \file   Pear.h
 * \brief   State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
 
#pragma once
 
#ifndef PEAR_H
#define PEAR_H
 
 
 
 
#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusGas.h"
#include "GoldStatusStateless.h"
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
    //怪物状态枚举值
    enum PearState
    {
        /// <summary>
        /// 液态
        /// </summary>
        Solid,
        /// <summary>
        /// 固态
        /// </summary>
        Liquid,
        /// <summary>
        /// 气态
        /// </summary>
        Gas,
        /// <summary>
        /// 无态
        /// </summary>
        Stateless
    };
 
    /// <summary>
    ///
    /// </summary>
    class Pear
    {
 
    public:
        //构造函数,怪物的初始状态从“凶悍”开始
        Pear(int life) :mBoilingPoint(life), mStatus(Solid) {}
 
    public:
        /// <summary>
        ///
        /// </summary>
        /// <param name="power"></param>
        void Liked(int power)
        {
            mBoilingPoint -= power;
            if (mStatus == Solid)
            {
                if (mBoilingPoint > 400)
                {
                    cout << "液态" << power << " 可以熔炼制工!" << endl;
                    //处理其他动作逻辑
                }
                else if (mBoilingPoint > 100)
                {
                    cout << "固态" << power << "可以制作精美饰物!" << endl;
                    mStatus = Liquid;
                    //处理其他动作逻辑
                }
                else if (mBoilingPoint > 0)
                {
                    cout << "气态" << power << "可以无处不飘溢!" << endl;
                    mStatus = Gas;
                    //处理其他动作逻辑
                }
                else
                {
                    cout << "无态" << power << "无所不在!" << endl;
                    mStatus = Stateless;
                    //处理等
                }
            }
            else if (mStatus == Liquid)
            {
                if (mBoilingPoint > 100)
                {
                    cout << "固态" << power << "可以制作精美饰物!" << endl;
                    //处理其他动作逻辑
                }
                else if (mBoilingPoint > 0)
                {
                    cout << "气态" << power << "可以无处不飘溢!" << endl;
                    mStatus = Gas;
                    //处理其他动作逻辑
                }
                else
                {
                    cout << "无态" << power << "无所不在!" << endl;
                    mStatus = Stateless;
                    //处理等
                }
            }
            else if (mStatus == Solid)
            {
                if (mBoilingPoint > 0)
                {
                    cout << "固态" << power << "可以制作精美饰物!" << endl;
                    //处理其他动作逻辑比如
                }
                else
                {
                    cout << "无态" << power << "无所不在!" << endl;
                    mStatus = Stateless;
                    //处理等
                }
            }
            else
            {
                cout << "无态,无所不在!" << endl;
            }
        }
    private:
 
        /// <summary>
        /// 沸点
        /// </summary>
        int  mBoilingPoint;  
        /// <summary>
        /// 初始状态
        /// </summary>
        PearState   mStatus;
 
 
 
    };
 
}
 
#endif
 
/*****************************************************************//**
 * \file   GeovinDu.h
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#pragma once
#ifndef GEOVINDU_H
#define GEOVINDU_H
 
 
 
 
#include <iostream>
#include "Gold.h"
#include "GoldStatus.h"
#include "GoldStatusGas.h"
#include "GoldStatusStateless.h"
#include "Pear.h"
 
 
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
    /// <summary>
    ///
    /// </summary>
    class GeovinDu
    {
 
    private:
 
    public:
 
        /// <summary>
        ///
        /// </summary>
        void displaySimple();
        /// <summary>
        ///
        /// </summary>
        void displayPearSimple();
 
 
    };
 
}
 
#endif
 
/*****************************************************************//**
 * \file   GeovinDu.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
#include "GeovinDu.h"
using namespace std;
 
 
 
 
namespace DuJewelryStatePattern
{
 
 
    /// <summary>
    ///
    /// </summary>
    void GeovinDu::displaySimple()
    {
 
        Gold gold(500);
        cout << "黃金礦挖取,当前处于升華状态,500点!" << endl;
        gold.Liked(20);
        gold.Liked(100);
        gold.Liked(200);
        gold.Liked(170);
        gold.Liked(100);
        gold.Liked(100);
 
    }
    /// <summary>
    ///
    /// </summary>
    void GeovinDu::displayPearSimple()
    {
        DuJewelryStatePattern::Pear pear(500);
        cout << "美好状态,500点!" << endl;
        pear.Liked(20);
        pear.Liked(100);
        pear.Liked(200);
        pear.Liked(170);
        pear.Liked(100);
        pear.Liked(100);
 
    }
 
 
}

调用:

/*****************************************************************//**
 * \file   ConsoleDuStatePattern.cpp
 * \brief  State Pattern 状态模式  C++ 14
 * 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit.
 * \author geovindu
 * \date   May 2023
 *********************************************************************/
// ConsoleDuStatePattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _UNICODE

#include <iostream>
#include "GeovinDu.h"

#ifdef _DEBUG   //只在Debug(调试)模式下
#ifndef DEBUG_NEW
#define DEBUG_NEW new(_NORMAL_BLOCK,__FILE__,__LINE__) //重新定义new运算符
#define new DEBUG_NEW
#endif
#endif

using namespace std;
using namespace DuJewelryStatePattern;


int main()
{
    std::cout << "Hello World!涂聚文 Geovin Du\n";
    GeovinDu geovin;
    geovin.displaySimple();
    cout << "***********" << endl;
    geovin.displayPearSimple();
    system("pause");

    return 0;

}

// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单

// 入门使用技巧: 
//   1. 使用解决方案资源管理器窗口添加/管理文件
//   2. 使用团队资源管理器窗口连接到源代码管理
//   3. 使用输出窗口查看生成输出和其他消息
//   4. 使用错误列表窗口查看错误
//   5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
//   6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
#define UNICODE

输出:

Hello World!涂聚文 Geovin Du
黃金礦挖取,当前处于升華状态,500点!
处于固状态中,可以制作精美器物!
处于气态状态中,可以四处飘溢!
处于气态状态中,可以四处飘溢!
处于液态状态中,随处都有其容入之处!
无形之中!
无形之中!
***********
美好状态,500点!
液态20 可以熔炼制工!
固态100可以制作精美饰物!
固态200可以制作精美饰物!
气态170可以无处不飘溢!
无态,无所不在!
无态,无所不在!
请按任意键继续. . .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cpp:State Pattern 的相关文章

随机推荐

  • 论文笔记:Constructing spatiotemporal speed contour diagrams: usingrectangular or non-rectangular paralle

    Constructing spatiotemporal speed contour diagrams using rectangular or non rectangular parallelogram cells 2019 Transpo
  • c++求模运算的应用

    在 C C 中 符号为求模运算符 即 a b 表示 a 除以 b 的余数 周期问题 我们在奥数中经常遇到这样的问题 给你一串数字 4 5 6 4 5 6 4 5 6 求这里的第 1000 个数字是几 我们发现这是一个周期数列 周期为 3 a
  • 华为OD机试真题 Java 实现【获取字符串中连续出现次数第k多的字母的次数】【2023Q1 100分】,附详细解题思路

    一 题目描述 给定一个字符串 只包含大写字母 求在包含同一字母的子串中 长度第 k 长的子串的长度 相同字母只取最长的那个子串 二 输入描述 第一行有一个子串 1 lt 长度 lt 100 只包含大写字母 第二行为 k的值 三 输出描述 输
  • 六款常用的linux C/C++ IDE

    摘要 一 AnjutaAnjuta是一个多语言的IDE 它最大的特色是灵活 同时打开多个文件 内嵌代码级的调试器 调用gdb 应用程序向导 Application wizards 可以方便的帮助你创建GNOME程序而不需要你自己写一些与你兴
  • 迁移MongoDB数据库及数据(MongoDB数据库的备份与恢复)

    备份 在有数据的地方使用mongodump h connection d 数据库名 o 保存的文件夹 比如 mongodump h 127 0 0 1 27017 d my db o my back dir 恢复 在想要覆盖的地方使用mon
  • windows环境中使用goland构建linux二进制文件并运行

    大家都知道 go语言可打包成目标平台二进制文件是它的一大优势 如此一来 go项目在服务器不需要配置go环境和依赖就可以运行 操作方式 需求 在windows环境中打包部署golang项目到Centos 7 运行 打包环境 windows 1
  • makefile常用编译选项

    我们习惯创建一个环境变量文件Inc mk来定义常用的变量 CC gcc CXX g std c 11 AR ar ARFLAGS scurv RANLIB ranlib CFLAGS CXXFLAGS INCLUDE LDFLAGS CFL
  • Datagrip如何访问集成Kerberos协议的Hive数据库

    Datagrip如何访问集成Kerberos协议的Hive数据库 简介 环境说明 kerberos秘钥 Datagrip配置 环境变量 安全服务文件 参考连接 简介 背景说明 hive数据库默认不需要配置用户名密码 基于 Datagrip
  • Paper writting accumulation

    Abstract last Our extensive experiments on multiple benchmark datasets demonstrate the superiority of compared to a numb
  • DVWA - XSS DOM (low)

    low级别 XSS 全称Cross Site Scripting 即跨站脚本攻击 某种意义上也是一种注入攻击 是指攻击者在页面中注入恶意的脚本代码 当受害者访问该页面时 恶意代码会在其浏览器上执行 需要强调的是 XSS不仅仅限于JavaSc
  • 抖音 x-gorgon 03 免费生成接口 抖音6.3.0版本

    接口已经更新 请参考文章 https blog csdn net wql2014302721 article details 113737772 相关文章 抖音爬虫从0到1 第一弹 环境配置 抖音 x gorgon 03 免费生成接口 抖音
  • Markdown文档小技巧

    MarkDown文档现在可以说普及率原来越高 相对于其他的编辑 记得重点是如何输出内容 提供给你对应的 神秘代码 来完成一些如生成目录 数字符号 链接啊这些东西 更加关心文档的内容 0 推荐的的markdown文档编辑工具 我这里推荐Typ
  • android 关于mk如何引用其它so库

    通常 开发android的软件 常常需要编译so库 然编译的这个so库 需要调用多个其它的so库 这里主要记录一下 编译so库时 调用其它so库的mk 是怎么写的 这里讲的示例 需要编译出libtest3 so 它需要调用libtest1
  • Qt:QML:程序最大化最小化全屏之间的切换

    啥也不说了 直接上代码 import QtQuick 2 5 import QtQuick Controls 1 4 import QtQuick Window 2 0 ApplicationWindow id idMainWindow v
  • 美的年营收3412亿:净利286亿 何享健控制31.5%股权

    雷递网 雷建平 5月4日报道 美的日前公布年报 年报显示 美的2021年营收为3412亿元 较上年同期的2842亿元增长20 06 美的2021年净利为285 74亿元 较上年同期的272 23亿元增长4 96 扣非后净利为259 29亿元
  • oracle数据库中varchar类型字段中存放的有数字和汉字情况,比较大小问题解决

    如果你也正在为这种问题头疼 当你看到我这篇博客时 恭喜你 问题的解决方案来了 你头疼的问题可以解决了 这个问题是我在最近的项目中遇到的难题 上网查阅了很多资料 用什么平常使用的 lt lt gt gt 都没能解决问题 最后还是问了大牛 才解
  • SpringCloudGateway集成SpringDoc CORS问题

    SpringCloudGateway集成SpringDoc CORS问题 集成SpringDoc后 在gateway在线文档界面 请求具体的服务接口 报CORS问题 Failed to fetch Possible Reasons CORS
  • 2.5 使用SolidWorks转换STL格式为OBJ文件格式

    1 说明 使用SW进行三维模型建模 一般应用在机械工程领域中 将模型保存成STL格式后 转换为 obj文件 才能进一步转换为mesh文件 供QT中的3D控件进行使用 本文章记录一些格式转换步骤和关键点 以便参考 2 第一步 首先在SW软件界
  • easyui怎样实现textarea

    uqery easyui 本身没有实现textarea的封装 用的知识html元素 但是提供了textarea的验证器
  • cpp:State Pattern

    file Gold h brief State Pattern 状态模式 C 14 2023年5月29日 涂聚文 Geovin Du Visual Studio 2022 edit author geovindu date May 2023