负载均衡式的在线OJ项目编写(七) - 实践

一. 前期内容回顾

对前面的准备不熟悉的,可以看前面的内容,连接如下:

https://blog.csdn.net/weixin_60668256/article/details/152253861?fromshare=blogdetail&sharetype=blogdetail&sharerId=152253861&sharerefer=PC&sharesource=weixin_60668256&sharefrom=from_link

二. 一键上线和综合调试

1.题目编号乱序问题解决

//根据题目数据构建网页
        bool AllQuestions(std::string *html)
        {
            bool ret = true;
            vector all;
            if(model_.GetAllQUestions(&all))
            {
                //获取一个题目信息成功,将所有的题目数据构建成网页
                //题目进行排序
                sort(all.begin(),all.end(),[](const Question& q1,const Question& q2){
                    return atoi(q1.number.c_str()) < atoi(q2.number.c_str());
                });
                view_.AllExpandHtml(all,html);
            }
            else
            {
                *html = "获取题目失败,形成题目列表失败";
                ret = false;
            }
            return ret;
        }

2.主机下线之后,上线功能的实现

void OnlineMachine()
        {
            //当所有主机都离线的时候,我们统一上线
            mtx.lock();
            online.insert(online.end(),offline.begin(),offline.end());
            offline.erase(offline.begin(),offline.end());
            mtx.unlock();
            LOG(INFO) << "所有的主机又上线了" << "\n";
        }

三.题目数据库化

1.在数据库中设计可以远程登录的MYSQL账户,并给他赋权  (oj_client)

这样,我们就将我们的oj的库的所有权限给了oj_client了

目前oj数据库中没有表

2.设计表结构 (数据库: oj,表: oj_questions)

首先下载mysql workbench软件,下载链接如下(直接无脑下载就行):

MySQL :: Download MySQL Workbench

<
posted @ 2025-10-02 09:31  yxysuanfa  阅读(8)  评论(0)    收藏  举报