QT 中Modbus主机和下位机不能通信,不能下发数据,不能读取数据,拜托各位大神帮忙解决一下。 10C

1.使用USB转串口测试了一下上位机中Modbus协议那部分程序,上位机机与下位机不能通信,不能下发数据,也不能读取数据。主机执行connectDevice()函数后,
APF_ModbusData->ModbusMaster->state() == QModbusDevice::ConnectedState成立,执行sendReadRequest()后,返回的指针对象调用error()函数后也没有错误。按理说state()返回值等于
QModbusDevice::ConnectedState表示Modbus网络应该已经连接上了,而且error()返回值也没错,但是为什么不能下发数据和读取数据呢?程序能正常执行,但是读取数据时,发送请求和读取数都不成功。
下面是我的代码,看Modbus线程中遥测部分的程序即可

2.Modbus处理数据的线程程序

#include "ModbusDataThread.h"
#include "GUIDataThread.h"
#include
#include

int DataMode = 2; //数据处理模式选择  1.遥调;2.遥测;3.遥信;
extern QMutex Mutex;

void ModbusDataThread::run()
{

APF_ModbusData = new ModbusData;

while(true)
{

    if(  APF_ModbusData->ModbusMaster->state() != QModbusDevice::ConnectedState)
    {
        int state1 = APF_ModbusData->ModbusMaster->state();
        qDebug() << "state1" << state1;
        APF_ModbusData->Modbus_Connection();
        msleep(2000);
    }

    if( APF_ModbusData->ModbusMaster->state() == QModbusDevice::ConnectedState )
    {

        int state3 = APF_ModbusData->ModbusMaster->state();
        qDebug() << "state3" << state3;
        qDebug() << "通信成功";

        while(true)
        {
            if( DataMode == 1 )                             //Modbus处理遥调数据
            {
                Mutex.lock();
                APF_ModbusData->RemoAdjust_DataTrans_Modbus();
                APF_ModbusData->Modbus_ReadWriteDatas_RemoAdjust(1);
                RemoAdjust_GUI = RemoAdjust_Modbus;
                //qDebug() << RemoAdjust_GUI;
                DataMode = 2;
                Mutex.unlock();
                msleep(2000);
            }

            if( DataMode == 2 )                           //Modbus处理遥测数据
            {
                Mutex.lock();
                qDebug() << "遥测";
                APF_ModbusData->Modbus_ReadDatas_RemoMea(1);
                RemoMea_GUI = RemoMea_Modbus;
                DataMode = 3;
                Mutex.unlock();
                msleep(2000);
            }

            if( DataMode == 3 )                           //Modbus处理遥信数据
            {
                Mutex.lock();
                qDebug() << "Modbus";
                qDebug() << "遥信";
                APF_ModbusData->Modbus_ReadDatas_RemoSignal(1);
                RemoSignal_GUI = RemoSignal_Modbus;
                DataMode = 2;
                Mutex.unlock();
                msleep(2000);
            }
        }
    }
}

delete APF_ModbusData->ModbusMaster;

}

3.设置串口参数和连接程序APF_ModbusData->Modbus_Connection();


void ModbusData::Modbus_Connection()
{
if (!ModbusMaster)
return;
QString portname = "/dev/ttyUSB0";
ModbusMaster->setConnectionParameter(QModbusDevice::SerialPortNameParameter,portname);
ModbusMaster->setConnectionParameter(QModbusDevice::SerialParityParameter,QSerialPort::NoParity);
ModbusMaster->setConnectionParameter(QModbusDevice::SerialBaudRateParameter,QSerialPort::Baud9600);
ModbusMaster->setConnectionParameter(QModbusDevice::SerialDataBitsParameter,QSerialPort::Data8);
ModbusMaster->setConnectionParameter(QModbusDevice::SerialStopBitsParameter,QSerialPort::OneStop);

ModbusMaster->setTimeout(1000);
ModbusMaster->setNumberOfRetries(3);
ModbusMaster->connectDevice();

}

4.APF_ModbusData->Modbus_ReadDatas_RemoMea() ,此为遥测发送请求和读取数据的函数


void ModbusData::Modbus_ReadDatas_RemoMea(int serverAddress)
{
if (!ModbusMaster)
return;
QModbusDataUnit readRequest_RemoMea(QModbusDataUnit::InputRegisters,1,100);
if ( auto *Reply = ModbusMaster->sendReadRequest( readRequest_RemoMea, serverAddress))
{

    quint16 error_RemoMea = Reply->error();
    qDebug() << "error_RemoMea" << error_RemoMea;

    if ( !Reply->isFinished() )
    {
        bool a =  connect(Reply, &QModbusReply::finished, this, &ModbusData:: ReadReady_RemoMea);
        qDebug() << a;
    }
    else
    {
        delete Reply;
    }
}
else
{
    qDebug() << "request error";
}

}

5.插槽函数ReadReady_RemoMea()为函数Modbus_ReadDatas_RemoMea()中
connect(Reply, &QModbusReply::finished, this, &ModbusData:: ReadReady_RemoMea);关联的插槽函数。


void ModbusData::ReadReady_RemoMea()
{
QModbusReply *reply = qobject_cast(sender());

if (!reply)
    return;
if (reply->error() == QModbusDevice::NoError)
{
    RemoMea_Modbus = reply->result().values();             //返回读取的遥测数据
}
else
{
    qDebug() << "reply error";
}

reply->deleteLater();     //delete the reply

}

XIAOJIASONG
XIAOJIASONG 如果能解决问题,奖赏会增加
一年多之前 回复

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
QT中Modbus主机调用sendReadRequest()函数,不能读取返回的数据。

QT中Modbus主机调用sendReadRequest()函数,返回指针对象不为空,也没有错误,但是却不发送finished信号,这是什么原因。 bool a = connect(Reply, &QModbusReply::finished, this, &ModbusData:: ReadReady_RemoMea); 这句信号和槽函数关联语句也被执行,a返回值为true,但是槽函数ReadReady_RemoMea()却没有执行。这是什么原因? 拜托各位大神了,小弟必有重谢,奖励50元。 1.void ModbusData::Modbus_ReadDatas_RemoMea(int serverAddress) { if (!ModbusMaster) return; QModbusDataUnit readRequest_RemoMea(QModbusDataUnit::InputRegisters,1,100); if ( auto *Reply = ModbusMaster->sendReadRequest( readRequest_RemoMea, serverAddress)) { quint16 error_RemoMea = Reply->error(); qDebug() << "error_RemoMea" << error_RemoMea; if ( !Reply->isFinished() ) { qDebug() << "1"; bool a = connect(Reply, &QModbusReply::finished, this, &ModbusData:: ReadReady_RemoMea); qDebug() << a; qDebug() << "2"; } else { //delete Reply; } quint16 error_RemoMea1 = Reply->error(); qDebug() << "error_RemoMea1" << error_RemoMea1; } else { qDebug() << "request error"; } } 槽函数:ReadReady_RemoMea()如下 void ModbusData::ReadReady_RemoMea() { qDebug() << "完成"; QModbusReply *reply = qobject_cast<QModbusReply *>(sender()); if (!reply) return; if (reply->error() == QModbusDevice::NoError) { RemoMea_Modbus = reply->result().values(); //返回读取的数据 } else { qDebug() << "reply error"; } reply->deleteLater(); //delete the reply }

Qt modbus tcp 下位机发送的是16进制,上位机读取操作命令返回值是乱码,怎么解决?

void My_socket::on_ReadBackText() { qint64 DataNum = tcpSocket.bytesAvailable();//获得TCP需要read的字节数 char data[35] = {0}; qint64 num = tcpSocket.read(data, DataNum); qDebug("返回的数据包有%d位,值为%s",DataNum,data); if (num <= 0) { ui.ReceiveWid->appendPlainText(QString::fromLocal8Bit("获取继电器状态失败.....")); } else { int DataLen = strlen(data); const QString string = QString(QLatin1String(data)); ui.ReceiveWid->appendPlainText(string); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201908/29/1567070306_881663.jpg) ���ص����ݰ���16λ��ֵΪ�( 非十六进制发送的串接收正常 tcpSocket.bytesAvailable()获取的字符数量正确, ���ص����ݰ���29λ��ֵΪY31X30B3azv1cDA 懂得帮忙给看看,万分感谢!!!!! ```

qt 多线程接收下位机数据写进MySQL中。

qt 多线程接收下位机数据写进MySQL中。上位机是一个多线程的服务端,想接收多个<1~100台>客户端(下位机)发来的数据(每个下位机大致有50MB的数据)。网络环境是局域网。问题1,大数据在tcpsocket上怎么发送,接收。问题2,如何多线程的写进MySQL中。问题3,传输和读写的速度需要越快越好,有大咖说这样的话可以使用索引+写硬盘。没见过呀。 希望大咖们百忙中指教哈。

实现上位机和下位机通信

下位机用的sim808模块,要通过GPRS将数据发给上位机,现在问题是,电脑在学校的内网,有一个服务器IP,应该怎么实现通信。

Qt 网络编程客户端与主机连不上

利用Qt编写一个客户端的界面,和开发板上的主机进行通信,现在是客户端的connect函数不能与服务器连接。Qt利用的是c的socket相关函数。通过一个线程来创建socket的 部分代码如下: socketfd = socket(AF_INET,SOCK_STREAM,0); if(socketfd < 0) { qDebug()<<"socket error"; perror("socketfd"); exit(1); } memset(&addr,0,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(8000); addr.sin_addr.s_addr = inet_addr("192.168.1.10"); char buf[1024]; memset(buf , 0 , sizeof(buf)); if(::connect(socketfd,(struct sockaddr*)&addr,sizeof(addr)) < 0); { qDebug()<<"connect error"; return; } recv(socketfd,buf,sizeof(buf),0); ..... 希望大神们帮我解决一下,不胜感谢

用qt5 socket写的服务器和客户端可以连接,但客户端不能给服务器传数据

服务器头文件/widget.h ``` #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QtNetwork> class QTcpServer; class QTcpSocket; namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void readMessage(); //void DataReceived(); private: Ui::Widget *ui; QTcpServer *tcpServer; QTcpSocket *tcpSocket; QString message1; }; #endif // WIDGET_H ``` 服务器主函数/main.cpp ``` #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } ``` 服务器源文件/widget.cpp ``` #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); tcpServer=new QTcpServer(this); tcpServer->listen(QHostAddress::Any,6666); connect(tcpServer,SIGNAL(newConnection()),this,SLOT(readMessage())); qDebug()<<"2"; } Widget::~Widget() { delete ui; } void Widget::readMessage() { QTcpSocket *clientConnection=tcpServer->nextPendingConnection(); qDebug()<<"2"; message1=clientConnection->readAll(); qDebug()<<message1; ui->statusLabel->setText(message1); qDebug()<<"1"; } ``` 客户端头文件/widget.h ``` #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QtNetwork> class QTcpSocket; namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void newConnect(); void on_pushButton_clicked(); private: Ui::Widget *ui; QTcpSocket *tcpSocket; }; #endif // WIDGET_H ``` 客户端主函数/main.cpp ``` #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } ``` 客户端源文件/widget.cpp ``` #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); tcpSocket=new QTcpSocket(this); } Widget::~Widget() { delete ui; } void Widget::newConnect() { tcpSocket->abort(); tcpSocket->connectToHost("localhost",6666); qDebug()<<"631"; } void Widget::on_pushButton_clicked() { newConnect(); tcpSocket->write("2"); } ``` 通过调试发现,服务器和客户端可以连接,但是就是不能**从客户端向服务器**发送数据,qt入门级别,请指教,谢谢啦

QT 启动了一个线程,在线程中实现TCPScoket通信,但连接不到服务器了

一、刚开始做的时候直接在主线程中测试了以下程序: 1.头文件 ``` class MainWindow : public QMainWindow { Q_OBJECT private slots: void on_pushButton_clicked(); void connected(); void readyread(); private: QTcpSocket *socket; }; 2.源文件 void MainWindow::on_pushButton_clicked() { this->socket=new QTcpSocket(); this->socket->connectToHost("10.10.15.11",26,QTcpSocket::ReadWrite); connect(this->socket,SIGNAL(connected()),this,SLOT(readyread())); } void MainWindow::connected() { connect(this->socket,SIGNAL(readyRead()),this,SLOT(readyread())); } void MainWindow::readyread() { QByteArray qba = socket->readAll(); } 这个时候是可以连接并接收到数据的。 二、现在需要在QT项目中启动一个线程,这个线程专门负责TCPScoket通信接收数据,程序如下: 1.头文件 class ThreadReceive : public QThread { Q_OBJECT private slots: void connected(); void readyread(); public: void run(); private: QTcpSocket *ScoketRecv; }; 2.源文件 void ThreadReceive::run() { this->ScoketRecv=new QTcpSocket(); this->ScoketRecv->connectToHost("10.10.15.11",26,QTcpSocket::ReadWrite); connect(this->ScoketRecv,SIGNAL(connected()),this,SLOT(connected())); } void ThreadReceive::connected() { connect(this->ScoketRecv,SIGNAL(readyRead()),this,SLOT(readyread())); } void ThreadReceive::readyread() { QByteArray recvBuf=ScoketRecv->readAll(); } ``` 在主线程中启动子线程之后会跳转到void ThreadReceive::run()函数中,但 connect(this->ScoketRecv,SIGNAL(connected()),this,SLOT(readyread()));一直连接不到,也就是跳不到void ThreadReceive::readyread()中。 麻烦大神看看是哪儿有问题,谢谢!

qt串口通信实现小车控制

如何实现按下w键便给下位机发送一串数据,从而实现小车的控制,只需知道上位机怎么写就可以了,

学习usb通信,使用qt creator开发cypress usb上位机问题,请大神们指点一二。

问题:相比串口通信交互来讲,每次串口有数据就会发出readready信号,通过 connect信号槽机制,可以实现上下位机的交互。但是usb不是qt自带的模块。 没有类似信号发出。该怎么模拟这种机制呢可以使usb上下位机正常交互呢? ps:有个点子:新建一个线程,把接受函数放到死循环里实现?这样可行? 该怎么写呢?该使用继承qthread还是new thread然后movetothead方法开线程呢? 我试着用后者建立,写到connect地方是不知道怎么写了。 qthread *thread = new qthread(); usbdevice = new ccyusbdevice(null); usbdevice->movetothread(thread); connet(?,?,?,?); //这个地方不知道怎么写了。 是不是应该换成继承thread的方式? thread->start();

Qt串口通信,两个zigbee模块高速通信丢包问题

通过usb转232数据线将两个zigbee模块和pc连接,然后在widows系统下用qt写出一个串口通信程序实现两个zigbee模块之间的通信,通信的数据也很简单例如312332.2123 21322.21231 21213.232 每一组都是数字和空格组成的 每一组中的数字个数也不多不超过20个。但是在高速通讯下会出现丢包,想通过在qt程序中加入crc校验等方法实现校准,但是验错之后怎么实现让发出端自动补发缺少的数据呢,各位大牛有什么方法吗,最好有类似的程序可以给我学习一下吗

qt tcp通信数据显示的方式不对

想用一个TCP/IP通信客户端程序接收激光雷达数据,连接成功,但是收到的是黑色的方块。。 ![图片说明](https://img-ask.csdn.net/upload/202004/16/1587007295_894779.png) 不知道是哪里不对劲,应收到的数据两个相关函数代码, ``` ```void MainWindow::on_pushButton_Send_clicked() { qDebug() << "Send: " << ui->textEdit_Send->toPlainText(); //获取文本框内容并以ASCII码形式发送 socket->write(ui->textEdit_Send->toPlainText().toLatin1()); socket->flush(); void MainWindow::socket_Read_Data() { QByteArray buffer; //读取缓冲区数据 buffer = socket->readAll(); if(!buffer.isEmpty()) { QString str = ui->textEdit_Recv->toPlainText(); str+=tr(buffer); //刷新显示 ui->textEdit_Recv->setText(str); } }

Qt串口通讯QSerialport接受数据失帧问题

最近在写一个上位机软件,用Qt做的,串口通信用的是QSerialport类,使用它本身提供的readyread信号,当有检测到有数据的时候触发我编写的接受处理函数,数据的接收使用 QByteArrary recvdata = serial->readAll(); 将得到的recvdata返回,进行每一帧的提取和后续的处理,现在出现一个问题,在波特率是115200的情况下,没有失帧的情况出现,当我把波特率升到921600后,出现严重的失帧情况。下位机给上位机发送的数据是每帧64字节,数据位8位,1位停止位,1位校验位,差不多1.25ms就发送一帧,持续不断地发送。请问该怎么解决失帧的问题。(这个问题拖了挺久,本人代码经验很少,菜鸟类型,这是刚入职的任务,有什么疑问请都提出来,十分想解决这个东西,谢谢)

Qt的串口接收和发送问题

发送: 我发现发送单条消息给串口助手是正常的,如果一次发好几条数据,串口助手只能接收到最后一条消息,这是什么原因? 代码 ``` int serialCommunication::sendSerialData(char *buffer, int length ) { m_SerialPort->clear(QSerialPort::Input); m_SerialPort->clear(QSerialPort::Output); return m_SerialPort->write(buffer, length); } ``` 接收: 假如接收14个字节的数据,每来一个字节,接收函数都处理一次,会处理14次,前13次是无用的 代码 ``` void serialCommunication::readSerialData() { //读取串口数据 //usleep(100000); QByteArray readComData = m_SerialPort->readAll(); mData.append(readComData); char *buf = NULL; int len = mData.length(); qDebug()<<"mData length: "<<len <<endl; buf = (char*)malloc(len * sizeof(char)); memcpy(buf, mData.data(), len); unsigned short validDataLen = (uchar)buf[1];//len of data unsigned char num; for(int i =0; i<len; i++) { num = (unsigned char) buf[i]; qDebug() <<"num"<< num; } ... free(buf); buf=NULL; } ``` 求指点

使用QT,主机做了一个服务端,局域网中可以连接别人,别人连接自己输入字符就会断开连接

cmd下使用telnet也是输入字符就断开连接 电脑杀毒软件一直没启动,防火墙全部关闭,端口号10000 然后写了个客户端,同样的问题,输入字符断开连接。楼下依次上图

qt udp通信接收速度。

有人测试过qt下 udp 最大接收速度能达到多少吗?需要保证不丢包。

QT程序通过Wi-Fi进行数据传送

目前有个项目,两台pc通过连接同一个Wi-Fi实现数据 传送,要求用QT写通信程序,不知道 从何下手! 谢谢!

windows中Qt5.5.0程序接收不到UDP报文

最近使用Qt5.5.0编写一个通信软件,分为PC端软件和板载软件。使用UDP作为通信协议,在程序运行刚开始时能够正常运行,运行一段时间以后会发生在也接收不到UDP报文的情况,我使用wireshark查看捕捉的数据后发现,板载软件确实发生了udp数据包到PC机上,但是我的程序却没有收到该UDP数据包。关键是一开始会收到,程序运行一段时候后就再也收不到了。qt发生报文时采用广播方式,绑定了本地端口。

QT中的QSqlRelationalModel能不能将两个数据库表拼在 一起的数据集显示在TabView上,并进行更改数据?

QT中的QSqlRelationalModel能不能将两个表拼在 一起的数据集显示在TabView上,并进行更改数据?

qt 串口通信 write 写16进制数据

龚建伟老师编写的串口调试助手里面有个十六进制的发送和接收功能,不知道有没有哪位尝试过在QT里面实现同样的功能?就是对于类似“02e3a2f5d6”的字符串作为一个十六进制字符串发送,而不是作为普通的字符串发送,我看了他写的源代码,里面有一个字符串转换函数,这个函数可以直接拿过来用,但是使用qextserialport类进行发送的时候,出现了一点小问题,就是当字符的ASCII码值大于127时,会将最高位省略,比如发送"f5",收到的字符转换为十六进制后变成"75",如果你们有兴趣,可以帮我看看,十分感谢!!

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

点沙成金:英特尔芯片制造全过程揭密

“亚马逊丛林里的蝴蝶扇动几下翅膀就可能引起两周后美国德州的一次飓风……” 这句人人皆知的话最初用来描述非线性系统中微小参数的变化所引起的系统极大变化。 而在更长的时间尺度内,我们所生活的这个世界就是这样一个异常复杂的非线性系统…… 水泥、穹顶、透视——关于时间与技艺的蝴蝶效应 公元前3000年,古埃及人将尼罗河中挖出的泥浆与纳特龙盐湖中的矿物盐混合,再掺入煅烧石灰石制成的石灰,由此得来了人...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

一文带你入门Java Stream流,太强了

两个星期以前,就有读者强烈要求我写一篇 Java Stream 流的文章,我说市面上不是已经有很多了吗,结果你猜他怎么说:“就想看你写的啊!”你看你看,多么苍白的喜欢啊。那就“勉为其难”写一篇吧,嘻嘻。 单从“Stream”这个单词上来看,它似乎和 java.io 包下的 InputStream 和 OutputStream 有些关系。实际上呢,没毛关系。Java 8 新增的 Stream 是为...

立即提问
相关内容推荐