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

企业集团网站源码/杭州seo顾问

企业集团网站源码,杭州seo顾问,仓库系统erp好学吗,地图网站开发一、设计要求 用QT做一个聊天室, 制作一个服务器和客户端。可以进行注册、登录, 登陆成功后可以使用昵称进行发送、接收消息。 能根据昵称、聊天内容查询历史记录,也可以查询全部聊天记录。 。 二、客户端三级ui界面 三、项目代码 //在…

一、设计要求

用QT做一个聊天室,

制作一个服务器和客户端。可以进行注册、登录,

登陆成功后可以使用昵称进行发送、接收消息。

能根据昵称、聊天内容查询历史记录,也可以查询全部聊天记录。

二、客户端三级ui界面

三、项目代码

//在pro文件里加入
QT       += core gui network
RC_FILE += icon_config.rc
//客户端dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QtWidgets>
#include <QDebug>
// 网络连接类
#include <QTcpSocket>
// 文本流
#include <QTextStream>
#include <QDateTime>
#include <QByteArray>namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private:Ui::Dialog *ui;QTcpSocket *client;void printMsg(QString); // 输出内容到公屏void succRight();private slots:void btnConnClickedSlot(); // 连接按钮void btnSendClickedSlot(); // 发送按钮void connectedSlot(); // 连接成功的槽函数void disconnectedSlot(); // 断开连接的槽函数void readReadSlot(); // 接收数据的槽函数void btnHisClickedSlot();//历史记录void btnHisNameClickedSlot();//按照昵称void btnHisNeiClickedSlot();//按照内容void btnLoginClickedSlot();//登录/切换窗口void btnRegClickedSlot();//注册};#endif // DIALOG_H
//客户端dialog.c
#include "dialog.h"
#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);// 抢前台setWindowFlags(Qt::WindowStaysOnTopHint);connect(ui->pushButtonConn,SIGNAL(clicked()),this,SLOT(btnConnClickedSlot()));connect(ui->pushButtonSend,SIGNAL(clicked()),this,SLOT(btnSendClickedSlot()));client = new QTcpSocket(this);// 建立网络连接检测的信号槽connect(client,SIGNAL(connected()),this,SLOT(connectedSlot()));connect(client,SIGNAL(disconnected()),this,SLOT(disconnectedSlot()));// 接收消息的信号槽connect(client,SIGNAL(readyRead()),this,SLOT(readReadSlot()));
//历史connect(ui->pushButtonHis,SIGNAL(clicked()),this,SLOT(btnHisClickedSlot()));connect(ui->pushButtonName,SIGNAL(clicked()),this,SLOT(btnHisNameClickedSlot()));connect(ui->pushButtonNei,SIGNAL(clicked()),this,SLOT(btnHisNeiClickedSlot()));//切换窗口:登录connect(ui->pushButtonLo,SIGNAL(clicked()),this,SLOT(btnLoginClickedSlot()));//注册connect(ui->pushButtonReg,SIGNAL(clicked()),this,SLOT(btnRegClickedSlot()));}Dialog::~Dialog()
{disconnect(client,SIGNAL(disconnected()),this,SLOT(disconnectedSlot()));// 如果还在连接if(client->isOpen())client->close();delete ui;
}void Dialog::btnConnClickedSlot()
{// 发起连接请求// 默认用户输入的参数都对client->connectToHost(ui->lineEditIp->text(),ui->spinBox->value());
}void Dialog::printMsg(QString msg)
{// 获得当前时间QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd-hh:mm:ss");ui->textBrowser->append(time);ui->textBrowser->append(msg);ui->textBrowser->append("");
}void Dialog::succRight()
{ui->stackedWidget->setCurrentIndex(1);
}void Dialog::btnSendClickedSlot()
{// 获得昵称和消息内容QString user = ui->lineEditUser->text();if(user==""){QMessageBox::warning(this,"提示","请输入昵称!");return;}QString msg = ui->lineEditMsg->text();if(msg == ""){QMessageBox::warning(this,"提示","请输入要发送的消息!");return;}QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss");// 创建文本流对象QTextStream output(client);// 连续输出发送output << time<<":"<<user << ":" << msg;// 清空消息输入框ui->lineEditMsg->clear();// 公屏显示msg = user+QString("(本机):")+msg;printMsg(msg);
}void Dialog::connectedSlot()
{// 屏蔽连接按钮,开启发送按钮ui->pushButtonConn->setEnabled(false);ui->pushButtonConn->setText("已连接");ui->pushButtonSend->setEnabled(true);ui->stackedWidget->setCurrentIndex(1);
}void Dialog::readReadSlot()
{QTextStream input(client);QString text = input.readAll();QString text1=input.readLine(100);qDebug() <<text1;QStringList list = text.split(":");QStringList list2 = text1.split(":");qDebug()<<"分割后数量"<<list.size();qDebug() <<list2.size();if(list.size()<4){if(text=="dlchengg"){qDebug() <<text;ui->stackedWidget->setCurrentIndex(2);ui->textBrowser->clear();}
//    else if(list.size()==3)
//    {//        ui->textBrowser_2->append(text);
//        return;
//    }else{printMsg(text);}}else if(list.size()>=4){ui->textBrowser_2->append(text);return;}
}void Dialog::btnHisClickedSlot()
{ui->textBrowser_2->clear();QString user = ui->lineEditUser->text();if(user==""){QMessageBox::warning(this,"提示","请输入昵称!");return;}QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd-hh-mm-ss");// 创建文本流对象QTextStream output(client);QString mm="历史记录";output<< time<<":"<<user << ":" <<mm ;
}void Dialog::btnHisNameClickedSlot()
{ui->textBrowser_2->clear();QString user = ui->lineEditUser->text();QString time = "hh";// 创建文本流对象QTextStream output(client);QString mm="按照昵称";output<< time<<":"<<user << ":" <<mm ;
}void Dialog::btnHisNeiClickedSlot()
{ui->textBrowser_2->clear();QString user = "sjdhs";QString time = "按照内容";// 创建文本流对象QString msg = ui->lineEditMsg->text();if(msg == ""){QMessageBox::warning(this,"提示","请输入要发送的消息!");return;}QTextStream output(client);output<< time<<":"<<user << ":" <<msg ;
}void Dialog::btnLoginClickedSlot()
{QString user = ui->lineEditUs->text();if(user==""){QMessageBox::warning(this,"提示","请输入昵称!");return;}QString pwd = ui->lineEdit_2Pwd->text();if(pwd == ""){QMessageBox::warning(this,"提示","请输入密码!");return;}// 创建文本流对象QTextStream output(client);// 连续输出发送QString mag="hha";QString haf="lele";output <<user << ":" << pwd<<":"<<mag<<":"<<haf;}void Dialog::btnRegClickedSlot()
{QString user = ui->lineEditUs->text();if(user==""){QMessageBox::warning(this,"提示","请输入昵称!");return;}QString pwd = ui->lineEdit_2Pwd->text();if(pwd == ""){QMessageBox::warning(this,"提示","请输入密码!");return;}// 创建文本流对象QTextStream output(client);// 连续输出发送output <<user << ":" << pwd;
}void Dialog::disconnectedSlot()
{// 开启连接按钮,屏蔽发送按钮ui->pushButtonConn->setEnabled(true);ui->pushButtonConn->setText("连接");ui->pushButtonSend->setEnabled(false);// 弹窗printMsg("连接已断开!");QMessageBox::warning(this,"提示","连接已断开!");ui->stackedWidget->setCurrentIndex(0);
}
//服务器dialog.h
#ifndef DIALOG_H
#define DIALOG_H#include <QtWidgets>
#include <QDebug>
// 连接管理类
#include <QTcpServer>
#include <QDateTime>
// 连接类
#include <QTcpSocket>
// 文本流
#include <QTextStream>#include <QButtonGroup>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlError>
#include <QMessageBox>
#include <QSqlQuery>
#include <QByteArray>namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private:Ui::Dialog *ui;QTcpServer* server; // 管理对象(母鸡)void printMsg(QString); // 输出内容到公屏QTcpSocket* socket = NULL; // 连接对象(绿蛋)QList<QTcpSocket*> sockets;QList<QString> ips;QSqlDatabase db;void connect2DB(); // 连接到数据库1void createTable();// 建表void createTable2();void insertData(); // 插入数据void selectAll(int);  // 数据全查void selectLOgin(QString,QString,int);void selectName(QString,int);void selectNei(QString,int);private slots:// 新连接来了的槽函数void newConnSlot();// 连接掉线的信号槽void disconnetedSlot();// 有数据可读时的槽函数void readyReadSlot();};#endif // DIALOG_H
//服务器dialog.c
#include "dialog.h"
#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);// 抢前台setWindowFlags(Qt::WindowStaysOnTopHint);server = new QTcpServer(this);// 连接新连接来了的信号槽connect(server,SIGNAL(newConnection()),this,SLOT(newConnSlot()));// 开启监听服务server->listen(QHostAddress::Any,8887);connect2DB();
}Dialog::~Dialog()
{if(server->isListening()) // 如果还在监听server->close();delete ui;
}void Dialog::printMsg(QString msg)
{// 获得当前时间QString time = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");ui->textBrowser->append(time);ui->textBrowser->append(msg);ui->textBrowser->append("");
}void Dialog::connect2DB()
{// 创建连接对象db = QSqlDatabase::addDatabase("QSQLITE");// 设置数据库的文件名称db.setDatabaseName("book_management.db");// 打开数据库if(db.open()){qDebug() << "连接成功";// createTable();// createTable2();}else{// 获得错误信息封装类QSqlError info = db.lastError();// 提取错误文本QString text = info.text();// 展示错误QMessageBox::critical(this,"错误",text);}}void Dialog::createTable()
{QString sql = "CREATE TABLE book(time TEXT PRIMARY KEY,name TEXT,msg TEXT);";// 创建数据库操作类对象QSqlQuery sq;if(sq.exec(sql)){qDebug() << "建表成功";}else// 失败{// 获得错误信息封装类QSqlError info = sq.lastError();// 提取错误文本QString text = info.text();// 展示错误qDebug() << text;}}void Dialog::createTable2()
{QString sql2 = "CREATE TABLE class(name TEXT PRIMARY KEY,pwd TEXT);";// 创建数据库操作类对象QSqlQuery sq;if(sq.exec(sql2)){qDebug() << "建表2成功";}else// 失败{// 获得错误信息封装类QSqlError info = sq.lastError();// 提取错误文本QString text = info.text();// 展示错误qDebug() << text;}
}void Dialog::selectAll(int i)
{QString sql = "SELECT * FROM book";QSqlQuery sq;sq.prepare(sql);if(sq.exec(sql)){// 清空上次显示//  ui->textBrowser->clear();while(sq.next())// 循环取出{// 取出一条数据库中的字段QString time = sq.value(0).toString();QString name = sq.value(1).toString();QString msg = sq.value(2).toString();QString msa="历史";// 拼接并显示QString text = msa.append(":")+ time.append(":")+ name.append(":") + msg;QTextStream output(sockets.at(i));output<< text<<endl;}}}void Dialog::selectLOgin(QString user, QString pwd2,int i)
{QString name=user;QString pwd=pwd2;QString sql = "SELECT * FROM class WHERE name LIKE ? AND pwd LIKE ?;";QSqlQuery sq;sq.prepare(sql);if(sq.exec(sql)){while(sq.next()){qDebug() << "yes";QString user = sq.value(0).toString();QString pwd = sq.value(1).toString();QString text ="dlchengg";QTextStream output(sockets.at(i));output<<text;}}else{QSqlError info = sq.lastError();// 提取错误文本QString text = info.text();text.prepend("登录失败:");QMessageBox::warning(this,"警告",text);}
}void Dialog::selectName(QString name1,int i)
{QString name=name1;QString sql = "SELECT * FROM book WHERE name LIKE ?";QSqlQuery sq;sq.prepare(sql);sq.addBindValue(name);if(sq.exec()){while(sq.next())// 循环取出{// 取出一条数据库中的字段QString time = sq.value(0).toString();QString name = sq.value(1).toString();QString msg = sq.value(2).toString();QString msa="历史";// 拼接并显示QString text = msa.append(":")+time.append(":")+ name.append(":") + msg;QTextStream output(sockets.at(i));output<< text<<endl;}}
}void Dialog::selectNei(QString msg, int i)
{QString sql = "SELECT * FROM book WHERE msg LIKE ?";QSqlQuery sq;sq.prepare(sql);sq.addBindValue(msg.prepend("%").append("%"));if(sq.exec()){while(sq.next())// 循环取出{// 取出一条数据库中的字段QString time = sq.value(0).toString();QString name = sq.value(1).toString();QString msg = sq.value(2).toString();QString msa="历史";// 拼接并显示QString text = msa.append(":")+time.append(":")+ name.append(":") + msg;QTextStream output(sockets.at(i));output<< text<<endl;}}
}void Dialog::newConnSlot()
{// 获得服务器端的连接类对象socket = server->nextPendingConnection();QTextStream output(socket);// 如果满员则踢出if(sockets.size() == 20){qDebug() << "聊天室满员";output << QString("聊天室已达人数上限,连接失败!");socket->close();return;}sockets.append(socket);// 绿蛋收到消息的信号槽connect(socket,SIGNAL(readyRead()),this,SLOT(readyReadSlot()));// 绿蛋掉线的信号槽connect(socket,SIGNAL(disconnected()),this,SLOT(disconnetedSlot()));// 给客户端打个招呼output << QString("服务器:你好啊!");// 获得对面的IP地址和端口号QString ip = socket->peerAddress().toString();quint16 port = socket->peerPort();QString portText = QString::number(port);QString text = "新连接来了!";text.append(ip).append(":").append(portText);printMsg(text);
}void Dialog::disconnetedSlot()
{// 拿到发射者socket = (QTcpSocket*)sender();for(int i = 0;i<sockets.size();i++){if(socket == sockets.at(i)){qDebug() << "第" << i << "个客户端掉线了";// 获得对面的IP地址和端口号QString ip = sockets.at(i)->peerAddress().toString();quint16 port = sockets.at(i)->peerPort();QString portText = QString::number(port);QString text = "连接已断开!";text.append(ip).append(":").append(portText);printMsg(text);sockets.removeAt(i);}}
}//接收数据
void Dialog::readyReadSlot()
{for(int i=0;i<sockets.size();i++){if(sockets.at(i)->isReadable() && sockets.at(i)->bytesAvailable()>0){qDebug() << "第" << i << "个客户端发的消息";QTextStream input(sockets.at(i));// 一口气都读了QString text = input.readAll();//写入数据库QStringList list = text.split(":");qDebug()<<"分割后数量"<<list.size();if(list.size()==3){QString time = list[0];QString name = list[1];QString msg = list[2];if(list[2]=="历史记录"){selectAll( i);}else if(list[2]=="按照昵称"){selectName(name,i);}else if(list[0]=="按照内容"){selectNei(msg,i);}else{createTable();QString sql = "INSERT INTO book VALUES(?,?,?);";QSqlQuery sq;sq.prepare(sql);sq.addBindValue(time);sq.addBindValue(name);sq.addBindValue(msg);if(sq.exec()){qDebug()<<"数据插入成功";// QMessageBox::information(this,"通知","数据插入成功");}else{// 获得错误信息封装类QSqlError info = sq.lastError();// 提取错误文本QString text = info.text();// 展示错误text.prepend("数据插入失败:");QMessageBox::warning(this,"警告",text);}printMsg(text);for(int m=0;m<sockets.size();m++){if(m==i)continue;QTextStream output(sockets.at(m));output << text;}}}else if(list.size()==2){createTable2();QString name = list[0];QString pwd = list[1];QString sql = "INSERT INTO class VALUES(?,?);";QSqlQuery sq;sq.prepare(sql);sq.addBindValue(name);sq.addBindValue(pwd);if(sq.exec()){qDebug()<<"注册成功";// QMessageBox::information(this,"通知","数据插入成功");}else{// 获得错误信息封装类QSqlError info = sq.lastError();// 提取错误文本QString text = info.text();// 展示错误text.prepend("注册失败:");QMessageBox::warning(this,"警告",text);}printMsg(text);for(int m=0;m<sockets.size();m++){if(m==i)continue;QTextStream output(sockets.at(m));output << text;}}else if(list.size()==4){QString name = list[0];QString pwd = list[1];qDebug() << name<<pwd;QString sql = "SELECT * FROM class WHERE name=? AND pwd=?";QSqlQuery sq;sq.prepare(sql);sq.addBindValue(name);sq.addBindValue(pwd);qDebug() << "yes";if(sq.exec()){// 取出一条数据库中的字段while(sq.next()){QString name = sq.value(0).toString();QString pwd = sq.value(1).toString();qDebug() <<name<<pwd;qDebug() << "yes";QString text ="dlchengg";QTextStream output(sockets.at(i));output<<text;}}else{QSqlError info = sq.lastError();// 提取错误文本QString text = info.text();text.prepend("登录失败:");QMessageBox::warning(this,"警告",text);}}}}}

四、项目结果

相关文章:

QT--聊天室

一、设计要求 用QT做一个聊天室&#xff0c; 制作一个服务器和客户端。可以进行注册、登录&#xff0c; 登陆成功后可以使用昵称进行发送、接收消息。 能根据昵称、聊天内容查询历史记录&#xff0c;也可以查询全部聊天记录。 。 二、客户端三级ui界面 三、项目代码 //在…...

Javascript前端面试基础4【每日学习并更新10】

同步和异步的区别 同步:浏览器访问服务器请求&#xff0c;用户看得到页面刷新&#xff0c;重新发请求等请求完&#xff0c;页面刷新,新内容出现&#xff0c;用户看到新内容,进行下一步操作异步:浏览器访问服务器请求&#xff0c;用户正常操作&#xff0c;浏览器后端进行请求。等…...

社区团购系统搭建开发,前端uniapp。社区团购搭建开发定制

目录 前言&#xff1a; 一、社区团购系统有哪些功能&#xff1f; 二、社区团购管理端 三、社区团购的基本流程如下&#xff1a; 总结 &#xff1a; 前言&#xff1a; 社区团购是一种以社区为单位进行的集体购物模式。这种模式利用了互联网平台来组织同一社区内的居民一起购…...

node+mysql+layui+ejs实现左侧导航栏菜单动态显示

nodemysqllayuiejs实现左侧导航菜单动态显示 实现思路效果图数据库技术栈代码实现main.html&#xff08;前端首页页面&#xff09;查询资源菜单方法 jsapp.js配置ejs模板 node入门到入土项目实战开始&#xff0c;前端篇项目适合node小白入门&#xff0c;因为我也是小白来学习no…...

FRP配置内网穿透52版本以上适用

简述 适用frp配置内网穿透来说我们需要进行简单的区分&#xff0c;具有公网IP的服务器我们简称为服务端&#xff0c;内网的服务器我们可以简称为客户端&#xff0c;frp需要针对不同的服务器配置不同的文件 下载安装包 Linux下载地址 https://github.com/fatedier/frp/relea…...

IFM易福门LR3000LR3300液位传感器操作说明

IFM易福门LR3000LR3300液位传感器操作说明...

【Python大语言模型系列】基于阿里云人工智能平台采用P-Tuning v2微调ChatGLM2-6B大模型(完整教程)

这是我的第331篇原创文章。 一、引言 P-Tuning 是一种对预训练语言模型进行少量参数微调的技术。所谓预训练语言模型&#xff0c;就是指在大规模的语言数据集上训练好的、能够理解自然语言表达并从中学习语言知识的模型。P-Tuning 所做的就是根据具体的任务&#xff0c;对预训练…...

基于Spring boot + Vue的加油站系统

项目名称&#xff1a;加油站系统 作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址&#xff1a;程序员云翼-CSDN博客 1.项目技术栈&#xff1a; 前后端分离的项目 后端&#xff1a;Springboot MybatisPlus 前端&#xff1a;Vue…...

️RPC协议 --基于TCP实现RPC通信

RPC 协议介绍 RPC(Remote Procedure Call,远程过程调用)协议是一种通信协议,允许一个程序调用另一个地址空间(通常是在网络上)的过程或函数,而不需要显式地处理细节如数据序列化和网络通信。它允许开发人员编写分布式应用程序,就像编写本地应用程序一样。 关键特点和组…...

android(安卓)最简单明了解释版本控制之MinSdkVersion、CompileSdkVersion、TargetSdkVersion

1、先明白几个概念 &#xff08;1&#xff09;平台版本&#xff08;Android SDK版本号&#xff09; 平台版本也就是我们平时说的安卓8、安卓9、安卓10 &#xff08;2&#xff09;API级别&#xff08;API Level&#xff09; Android 平台提供的框架 API 被称作“API 级别” …...

Redis缓存穿透、击穿和雪崩的理解和解决思路

Redis的缓存穿透 缓存穿透是指那些查询请求所要获取的数据既不在缓存&#xff08;Redis&#xff09;中&#xff0c;也不在数据库&#xff08;例如&#xff1a;MySQL&#xff09;中&#xff0c;因此每次请求都会直接访问数据库。这种情况通常由以下几种情形引起&#xff1a; 恶…...

ReactHooks(完结)

上期戳here ReactHooks[三] 一.memo 函数1.1 语法格式 二. useMemo2.1 问题引入2.2 语法格式2.3 使用 useMemo 解决刚才的问题 三.useCallback3.1 useMemo和useCallback区别3.2 语法格式 四.useTransition4.1 问题引入4.2 语法格式4.3 使用 isPending 展示加载状态4.4 注意事项…...

【数据中台】大数据管理平台建设方案(原件资料)

建设大数据管理中台&#xff0c;按照统一的数据规范和标准体系&#xff0c;构建统一数据采集&#xfe63;治理&#xfe63;共享标准、统一技术开发体系、统一接口 API &#xff0c;实现数据采集、平台治理&#xff0c;业务应用三层解耦&#xff0c;并按照统一标准格式提供高效的…...

UE5+OpenCV配置(Windows11系统)

一、概述 因为需要在UE5中使用OpenCV这些工具进行配置&#xff0c;所以在网络上参考借鉴一些资料进行配置。查询到不少的资料&#xff0c;最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。 二、具体过程 &#xff08;一&#xff09;版本 使用Windows11系统、UE5.…...

自研Vue3开源Tree组件:节点拖拽bug修复

当dropType为after&#xff0c;且dropNode为父节点时&#xff0c;bug出现了&#xff1a; bug原因&#xff1a;插入扁平化列表的位置insertIndex计算的不对&#xff1a; 正确的逻辑&#xff0c;同inner要算上子孙节点所占的位置&#xff1a; bug修复&#xff01;...

SSM学习9:SpringBoot简介、创建项目、配置文件、多环节配置

简介 SpringBoot式用来简化Spring应用的初始搭建以及开发过程的一个框架 项目搭建 File -> New -> Project 选中pom.xml文件&#xff0c;设置为maven项目 项目启动成功 可以访问BasicController中的路径 配置文件 在resources目录下 application.properties 默…...

Java面试题---索引

什么是索引 索引是用来高效获取数据的存储结构如同字典的目录一样&#xff0c;数据库的索引通常使用btree来实现&#xff0c;索引树的节点和数据地址相关联&#xff0c;查询的时候在索引树种进行高效搜索&#xff0c;然后根据数据地址获取数据。索引提高了搜索的效率同时增加了…...

ollama本地部署大语言模型记录

目录 安装Ollama更改模型存放位置 拉取模型GemmaMistralQwen1.5(通义千问)codellama 部署Open webui测试性能知识广度问题1问题2 代码能力总结 最近突然对大语言模型感兴趣 同时在平时的一些线下断网的CTF比赛中&#xff0c;大语言模型也可以作为一个能对话交互的高级知识检索…...

【C++红黑树应用】模拟实现STL中的map与set

目录 &#x1f680; 前言一&#xff1a; &#x1f525; 红黑树的修改二&#xff1a; &#x1f525; 红黑树的迭代器 三&#xff1a; &#x1f525; perator() 与 operator--() 四&#xff1a; &#x1f525; 红黑树相关接口的改造✨ 4.1 Find 函数的改造✨ 4.2 Insert 函数的改…...

前端实习手计(5):班味十足?!

自我感觉没有班味&#xff01;&#xff01;&#xff01;每天还是快快乐乐上班哇&#xff0c;是愉快的一周~这周没有太多活咯&#xff0c;基本就是修修改改改代码学习。真的感觉自己写的代码就是乱七八糟&#xff0c;只要能跑起来有效果就行&#xff08;我不是合格的处女座哈哈哈…...

Duix AI 太上瘾,让我熬夜体验的AI女友

✨点击这里✨&#xff1a;&#x1f680;原文链接&#xff1a;&#xff08;更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号&#xff01;&#xff09; Duix AI 太上瘾&#xff0c;让我熬夜体验的AI女友 开启 Duix AI 女友的奇妙之旅_ Hi&#xff0c;这…...

php判断某个目录下是否存在文件

/*** 判断字符串是否以什么结尾* param String $haystack 字符串* param String $needle 结尾* return Boolean*/ function endWith($haystack, $needle) {$length strlen($needle);if ($length 0) {return true;}return (substr($haystack, -$length) $needle); } /***…...

重塑互联网生态:探索Web 3.0、大数据与隐私保护的新篇章

引言&#xff1a;互联网的新纪元 随着互联网技术的日新月异&#xff0c;我们正迈入一个全新的时代&#xff0c;其中Web 3.0、大数据以及隐私保护成为塑造未来互联网生态的三大核心力量。它们不仅改变了我们与互联网交互的方式&#xff0c;更深刻地影响着社会的方方面面。 Web…...

HR模块中PA信息类型的相关函数

目录 1、新增、删除&#xff0c;修改&#xff1a;HR_INFOTYPE_OPERATION新增&#xff1a;INS删除&#xff1a;DEL修改&#xff1a;MOD 2、读取PA信息类型&#xff1a;HR_READ_INFOTYPE3、入职&#xff0c;生成新工号用&#xff1a;HR_PAD_HIRE_EMPLOYEE4、加锁&#xff1a;BAPI…...

c# 日期类型变量默认值

DateTime类型是比较常用的变量类型&#xff0c;但是以前处理都比较业余&#xff0c;下面总结2中常用方式 这次把它总结下&#xff1a; DateTime t1 default(DateTime); DateTime t2 DateTime.MinValue; 这样t1&#xff0c;t2 的值都是 {0001/1/1 0:00:00} PS: 由于DateTi…...

设计模式实战:任务调度系统的设计与实现

问题描述 设计一个任务调度系统,支持任务的创建、调度、执行和状态管理。系统需要确保任务的执行过程可以被灵活调度,并且支持任务状态的跟踪和通知功能。 设计分析 命令模式 命令模式用于将请求封装成对象,从而使我们可以用不同的请求、队列或日志来参数化其他对象。任…...

代码中的特殊注释

代码中特殊注释——TODO、FIXME、XXX、HACK_fix me todo hack-CSDN博客 代码中特殊注释——TODO、FIXME、XXX、HACK TODO&#xff1a;英语翻译为待办事项&#xff0c;备忘录。如果代码中有该标识&#xff0c;说明在标识处有功能代码待编写&#xff0c;待实现的功能在说明中会…...

ubuntu20.04.6 安装Skywalking 10.0.1

1.前置准备 1.1. **jdk17&#xff08;Skywalking10 jdk22不兼容&#xff0c;用17版本即可&#xff09;**安装&#xff1a; https://blog.csdn.net/CsethCRM/article/details/140768670 1.2. elasticsearch安装&#xff1a; https://blog.csdn.net/CsethCRM/article/details…...

C++:map和set

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习《C&#xff1a;map和set》&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 如果本篇文章对你有帮助&#xff0c;还请各位点点赞&#xff01;&#xff01;…...

深入理解二叉搜索树:定义、操作及平衡二叉树

引言 二叉搜索树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;是一种特殊的二叉树结构&#xff0c;每个节点的左子树节点值小于根节点值&#xff0c;而右子树节点值大于根节点值。二叉搜索树在计算机科学中有着广泛的应用&#xff0c;尤其在动态查找表和优先队列…...