Qt槽函数接受不到信息?

我只是想做一个非常简单的qt关于网络的测试,读取一个网页内容作为请求,解析出其中信息,代码附上:

myHTTP.h
#pragma once
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QtWidgets/QMainWindow>
#include "ui_myHTTP.h"

class myHTTP : public QMainWindow
{
    Q_OBJECT

public:
    myHTTP(QWidget *parent = Q_NULLPTR);

private:
    Ui::myHTTPClass ui;
    QNetworkAccessManager *manager;
public slots:
    void  slotFinished(QNetworkReply* reply);
};

 myHTTP.cpp
 #include "myHTTP.h"
#include <QUrl>
myHTTP::myHTTP(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
    manager = new QNetworkAccessManager(this);
    bool b = connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotFinished((QNetworkReply*))));
    /*此处b总是为false*/
    manager->get(QNetworkRequest(QUrl("http://www.baidu.com")));  //  开启一个以百度首页的网络请求

}
void myHTTP::slotFinished(QNetworkReply* reply)
{
    QString allData = reply->readAll();
    ui.textBrowser->setText(allData);

    // 删除网络回复资源
    reply->deleteLater();
}

}

4个回答

图片说明

图片说明

程序跑起来看看log两个connect连接时有没有异常,再看看emit有没有执行

楼主指的是Go to slot(槽函数)没有接收到网页信息?那试试用全局变量是否可行!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用QT写了一个0槽和信号相关的代码,代码编译成功,但是槽函数始终接收不到信号,
先看main.cpp文件: 就是定义一个线程 int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); /*定义一个线程,并且启动一个线程*/ MyThread receive_data; receive_data.start(); return a.exec(); } 然后在mainwindow.h 文件中,定义了该线程的类,同时在mainwindow类中定义了一个槽函数,在mythread中定义了一个信号 class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = 0); ~MainWindow(); protected: void changeEvent(QEvent *e); private: Ui::MainWindow *ui; public slots: void print(); //我的槽函数 private slots: void on_pushButton_clicked(); }; /*创建一个线程类*/ class MyThread : public QThread { Q_OBJECT public: virtual void run(); signals: void UpdateSignal(); //我定义的类 }; 然后再mainwindow.h中实现了槽函数,并在线程中循环发送信号: /*一个线程的主函数*/ void MyThread::run() { while(1) { //开启一个死循环,每隔一秒就发送一个信号 qDebug("hello"); Sleep(1000); emit UpdateSignal(); } } void MainWindow::print() { ui->label->setText("hello"); //槽函数的实现,就是不执行 } 结果:编译也没有问题,但是槽函数就是不执行,到底是什么原因? 对了,在mainwindow的构造函数中,进行了连接 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); MyThread thread_1; connect(&thread_1, SIGNAL(UpdateSignal()), this, SLOT(print())); } 这是我全部的代码,就是不行
Qt 创建新线程后,执行到run函数后不执行槽函数
#include "mythread1.h" #include <QDebug> #include <QMutex> #include <QApplication> //int i = 0; //共享资源 QMutex mutex; //互斥锁 Mythread1::Mythread1() { } void Mythread1::run() { // QString aa; // aa.append("0123456789"); ser = new QSerialPort; ser->setPortName("COM4"); //串口初始化 ser->setBaudRate(QSerialPort::Baud9600); ser->setDataBits(QSerialPort::Data8); ser->setStopBits(QSerialPort::OneStop); ser->setParity(QSerialPort::NoParity); //打开串口 bool ret = ser->open(QIODevice::ReadWrite); if(!ret) { //QMessageBox::warning(this,"警告","打开串口失败!"); qDebug() << "打开串口失败!"; return; } connect(ser,SIGNAL(readyRead()),this,SLOT(recvserialdata())); qDebug() << "打开串口成功!"; //seekserial(); while(1) { //mutex.lock(); seekserial(); //preventcrash(); emit send_data(cardID); QThread::sleep(2); //mutex.unlock(); } } void Mythread1::recvserialdata() { qDebug() << "接收串口数据"; QByteArray tmpr = ser->readAll(); qDebug() << "tmpr =" << tmpr; QString recvd; for(int i = 0; i < tmpr.count(); i++) { recvd.append(QString::number((quint8)tmpr[i],16)); recvd.append(" "); } //判断命令执行是否成功 if(recvd.mid(4,1) != "0") { qDebug() << "命令执行不成功!"; qDebug() << "recvd =" << recvd; } else { qDebug() << "命令执行成功!"; qDebug() << "recvd =" << recvd; if(recvd.mid(6,1) == "4") { cardID.append("命令执行成功,读到卡号为:"); cardID.append(recvd.mid(8,2)); cardID.append(recvd.mid(11,2)); cardID.append(recvd.mid(14,2)); cardID.append(recvd.mid(17,2)); qDebug() << "cardID =" << cardID; //cardID.clear(); } } } //寻卡 void Mythread1::seekserial()//07 02 41 01 52 e8 03 { QByteArray tmpcmd; tmpcmd.append((unsigned char)0x07); tmpcmd.append((unsigned char)0x02); tmpcmd.append((unsigned char)0x41); tmpcmd.append((unsigned char)0x01); tmpcmd.append((unsigned char)0x52); //QByteArray转为unsigned char uchar *thePointerYouNeed = (uchar *)(tmpcmd.data()); //校验和 tmpcmd.append(CalBCC(thePointerYouNeed, thePointerYouNeed[0]-2)); tmpcmd.append((unsigned char)0x03); //发送给RFID模块 ser->write(tmpcmd); qDebug() << "发送寻卡命令!"; } //防冲突 void Mythread1::preventcrash()//08 02 42 02 93 00 26 03 { QByteArray tmpcrash; tmpcrash.append((unsigned char)0x08); tmpcrash.append((unsigned char)0x02); tmpcrash.append((unsigned char)0x42); tmpcrash.append((unsigned char)0x02); tmpcrash.append((unsigned char)0x93); tmpcrash.append((char)0x00); //QByteArray转为unsigned char uchar *thePointerYouNeed = (uchar *)(tmpcrash.data()); //校验和 tmpcrash.append(CalBCC(thePointerYouNeed, thePointerYouNeed[0]-2)); tmpcrash.append((unsigned char)0x03); //发送给RFID模块 ser->write(tmpcrash); qDebug() << "发送防冲突命令!"; } //校验和 unsigned char Mythread1::CalBCC(unsigned char *buf, int n) { int i; unsigned char bcc = 0; for(i = 0; i < n; i++) { bcc ^= *(buf+i); } return (~bcc); } 代码如上,程序不会执行槽函数recvserialdata(),只执行run函数里的语句。
求助一下QT与Javascript间调用函数的问题
想用qt做一个实时的定位监测界面,思路是在Qt中调用Qwebengineview类来嵌入网页, 利用百度地图API进行定位显示。 流程大概是:QT接收到GPS数据-->QT调用Javascript中的函数--->调用百度API接口函数--->显示。在map.html中写了一个函数接口 function show_()来测试,show中调用百度地图的API,直接打开网页测试时是有效的。 而在QT中,某个按钮事件click内,调用了QWebengineView 的 runJavascript()类: view->page()->runJavascript("show_()") ,老版本QT是调用evaluateJavaScript()类,调试时,一点击按钮,调用runJavascript成就就崩溃了,不知道原因,求大神解答
Qt派生类继承基类信号槽问题
在A项目中定义基类Base,里面含有发送和接收的信号和槽函数。在项目B中定义派生类ComA继承自Base,B中有一个按钮,点击按钮后调用Base中的sendMsg信号发送信息。 方式1中方法是可行的。但是方法2中槽函数却收不到信息。但是从A向B中发送的信号在方式2中是可行的。方式1采用的是直接引用的方式;方式2采用动态加载的形式。二者区别在什么地方呢?为何直接引用可以,动态加载的就不可以呢?请各位大神指教~~~ 项目A中类的伪代码如下: ``` class Base:public QWidget{ Q_OBJECT ...... signals: void sendMsg(const QString &str); public slots: virtual void recMsg(const QString &str){ } } Class MainWindow:public QMainWindow{ Q_OBJECT ..... signals: void sendMsgToCom(const QString &str); private slots: void recMsgFromCom(const QString &str); } 在MainWindow构造函数中 //方式1 Base *test = new ComA(); this->setCentralWidget((QWidget*)test); connect(test,SIGNAL(sendMsgToFrame(QString)),this,SLOT(recMsgFromCom(QString))); //方式2 QLibrary lib("B.dll"); typedef Base* (*handle)(); handle t = (handle)lib.resolve("CreateComInterface"); this->setCentralWidget((QWidget*)t()); Base *child = t(); connect(child,SIGNAL(sendMsgToFrame(QString)),this,SLOT(recMsgFromCom(QString))); connect(this,SIGNAL(sendMsgToCom(QString)),child,SLOT(recMsgFromFrame(QString))); ``` 项目B中类的伪代码如下,B项目最终导出为动态库,供A使用。 ``` Class ComA:public Base{ Q_OBJECT ...... public slots: //实现基类中槽 virtual void recMsg(const QString &str); } //B中带界面,点击按钮后发送sendMsg信号 //导出C接口 extern "C" __declspec(dllexport) Base* CreateComInterface(); ```
QT socket接收端每一次接收缓冲区数据的延时问题。
我想实现局域网视频传输功能,客户端通过调用摄像头将每一帧画面传送到服务器端,服务器端将获致的画面显示出来,客户端是在Linux系统上,服务器端是在Windows系统上。在客户端中我的QSocket类对象调用write()发送数据流,服务器端readyread()信号关联的槽函数中用readAll()来读取缓冲区中的数据流,但是在读取数据的时候,我发现每一次读取数据后会有几毫秒的延时才会继续读取后来的数据,并且缓冲区每次也只有3472个字节的数据可读取,我的每帧画面大概有300多K,所以正因为这种延时我在客户端发送每帧画面的频率不能过快,大概只能一秒一帧才会正常显示画面。这个问题困扰我很长时间了,我应该怎样处理这种问题??????? 补充,从windows上发送数据给Linux不会有上述问题,视频很流畅。
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使用Qextserialport写串口程序,readAll()读取数据时不准确
![图片说明](https://img-ask.csdn.net/upload/201510/30/1446208588_220328.png) readCom()函数读取时,当串口发送字符串ab时,程序只能接收到一个字节。
Qt串口通信的紧急问题
为了不影响程序其他功能,本人创建了一个线程,用新建线程接收串口数据,串口50Hz的数据。 说明:系统为Win7 64位,Qt为5.6 MingW新建线程已经通过某个按钮启动,同时也通过某个按钮停止,通过调试也能看到线程能够启动;通过串口调试工具也能收到数据。 问题1:上述程序中串口无法接收到数据。 问题2:注释掉的connect()函数用上也不能进入信号的槽函数,即也是无法收到数据。 请各位大神帮忙指导啊! 新建线程如下: 新建线程 .pro文件: QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport QT+=network QT+=serialport .h文件: #ifndef COMTHREAD_H #define COMTHREAD_H #include <QObject> #include <QThread> #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> class ComThread : public QThread { Q_OBJECT public: ComThread(); //~ComThread(); void stop(); QByteArray TxData; bool comopen=false; struct ComRxData \\接收数据的结构体 { ushort head; int hyzl; int hyfk; int zyzl; int zyfk; ushort tail; }; struct ComTxData { ushort head; ushort hyfz; ushort hyzq; ushort zyfz; ushort zyzq; ushort tail; }; QSerialPort *Com1Port; QByteArray RxData; private slots: //void ComDataProcess(); protected: void run(); private: volatile bool stopped; volatile bool com_opened; }; #endif // COMTHREAD_H .cpp文件: #include "comthread.h" #include "widget.h" #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> #include <QDebug> extern volatile double HYZL; //hy指令 extern volatile double HYRT; //hy实际值 extern volatile double ZYZL; //zy指令 extern volatile double ZYRT; //zy实际值 ComThread::ComThread() { stopped=false; } void ComThread::run() { Com1Port=new QSerialPort("COM1"); //Com1Port->setPortName("COM1"); if(!com_opened&&(!stopped)) { com_opened=true; comopen=Com1Port->open(QIODevice::ReadWrite); //打开串口并设置串口参数 Com1Port->setBaudRate(QSerialPort::Baud115200); Com1Port->setDataBits(QSerialPort::Data8); Com1Port->setParity(QSerialPort::NoParity); Com1Port->setStopBits(QSerialPort::OneStop); Com1Port->setFlowControl(QSerialPort::NoFlowControl); //connect(Com1Port,SIGNAL(readyRead()),this,SLOT(ComDataProcess())); } while(!stopped) { //for(int n=0;n<10;n++) //{ //qDebug()<<n<<n<<n<<n<<n<<n<<n; //} RxData=Com1Port->readAll(); //读取串口所有的数据 if(RxData!=NULL) { ComRxData theRx; //串口接收数据的结构体 memcpy(&theRx.hyzl,&RxData.data()[2],4); HYZL=(double)theRx.hyzl/1000; memcpy(&theRx.hyfk,&RxData.data()[6],4); HYRT=(double)theRx.hyfk/1000; memcpy(&theRx.zyzl,&RxData.data()[10],4); ZYZL=(double)theRx.zyzl/1000; memcpy(&theRx.zyfk,&RxData.data()[14],4); ZYRT=(double)theRx.zyfk/1000; } if(stopped&&com_opened) { Com1Port->close(); com_opened=false; delete Com1Port; //将串口对象删除 } } stopped=false; } void ComThread::stop() { stopped=true; } //void ComThread::ComDataProcess() //{ // RxData=Com1Port->readAll(); //读取串口所有的数据 // ComRxData theRx; //串口接收数据的结构体 // memcpy(&theRx.hyzl,&RxData.data()[2],4); // HYZL=(double)theRx.hyzl/1000; // memcpy(&theRx.hyfk,&RxData.data()[6],4); // HYRT=(double)theRx.hyfk/1000; // memcpy(&theRx.zyzl,&RxData.data()[10],4); // ZYZL=(double)theRx.zyzl/1000; // memcpy(&theRx.zyfk,&RxData.data()[14],4); // ZYRT=(double)theRx.zyfk/1000; //}
C语言怎么输出正弦曲线的坐标点
我有一个需求利用纯C写出一个获取正弦曲线的坐标点。。。每接收1K的数据,就输出一个坐标点,把它编译成.so库,然后供Qt调用,Qt利用获取到的坐标点来绘制正弦函数图形。 工作上就是这样的需求,我也搞不懂是怎么回事,有大神知道的,帮我写一下。谢谢~~
qt 子线程串口发送数据异常
class UartQThread : public QThread { Q_OBJECT public: UartQThread(); void run(); private: QSerialPort *Uart; QString UartPort; uint32_t BaudRate; uint32_t DataBits; QString StopBits; QString Parity; bool UartReady; char readbuff[128]; public: void UartInit(); private slots: void UartRead(void); }; UartQThread::UartQThread() { UartInit(); } void UartQThread::run() { int result; while(true) { result = Uart->write("this is uart send test456"); qDebug("UartQThread 1000ms test:%d %d", result, Uart->bytesAvailable()); msleep(1000); } } void UartQThread::UartInit() { Uart = new QSerialPort(); UartReady = false; connect(Uart,SIGNAL(readyRead()),this,SLOT(UartRead())); //连接槽 // ...... 省略 串口波特率等设置 if(Uart->open(QIODevice::ReadWrite)) { qDebug("open uart port success"); } else { qDebug()<<"open uart fail"<<UartPort; } Uart->write("this is uart send test123"); } Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); UartQThread *UartProcessD = new UartQThread(); UartProcessD->start(); } 使用QSerialport,UartQThread 继承QThread ,对端串口收到了 UartInit发送数据;但是run 函数中,循环write 发送数据,对端串口只收到一次, 如果将UartInit放到run 里面初始化,一条也发送不出去,也收不到
QT密码错误依然跳转主界面
qt设计登陆界面进入主界面,登陆时,无论是密码正确或是错误,都会进入下一个界面,不知如何解决 oneform.h ``` #ifndef ONEFORM_H #define ONEFORM_H #include <QWidget> #include "twoform.h" namespace Ui { class oneform; } class oneform : public QWidget { Q_OBJECT public: explicit oneform(QWidget *parent = 0); ~oneform(); private slots: void doProcessClinckGotoTwoForm(bool); void doProcessTwoFormRequest(QString); void on_pushButton_2_clicked(); void on_pushButton_clicked(); private: Ui::oneform *ui; twoform t1; twoform *p_t2; void Init(); }; #endif // ONEFORM_H ``` twoform.h ``` #ifndef TWOFORM_H #define TWOFORM_H #include <QWidget> namespace Ui { class twoform; } class twoform : public QWidget { Q_OBJECT public: explicit twoform(QWidget *parent = 0); ~twoform(); private slots: void doProcessClickBackOneForm(bool); signals: void SignalShowOneForm(QString); private: Ui::twoform *ui; int clickCount; void Init(); }; #endif // TWOFORM_H ``` oneform.cpp ``` #include "oneform.h" #include "ui_oneform.h" #include <QDebug> #include <QDebug>//第一次登录的打印 #include <QMessageBox> oneform::oneform(QWidget *parent) : QWidget(parent), ui(new Ui::oneform) { ui->setupUi(this); Init(); qDebug()<<"Date:xxxxxxxxxxxx"; } oneform::~oneform() { delete ui; } void oneform::Init(){ //处理单击,到达第二个页面 connect(ui->pushButton,SIGNAL(clicked(bool)), this,SLOT(doProcessClinckGotoTwoForm(bool))); p_t2 = new twoform(); //接收第二页面的显示请求 connect(p_t2,SIGNAL(SignalShowOneForm(QString)), this,SLOT(doProcessTwoFormRequest(QString))); } /////////////////slots///////////// void oneform::doProcessClinckGotoTwoForm(bool){ //第一种方式(出现多个2页面)创建第二个页面 //this会使子窗体的父窗体直接显示 //twoform *tf1= new twoform(this);//this会使子窗体的父窗体直接显示 //twoform *tf1= new twoform(); //tf1->show();//出现多个窗体 new多各对象 //第二种方式t1全局对象 //t1.show();//只会出现一个对象 //第三种,指针全局(一个对象) p_t2->show(); this->hide();//隐藏第一窗体 } void oneform::doProcessTwoFormRequest(QString str){ qDebug()<< str <<endl; this->show(); } ////////////////////////////////// //取消 void oneform::on_pushButton_2_clicked() { this->close(); } //登录 void oneform::on_pushButton_clicked() { QString name=ui->line_name->text(); QString passwd=ui->line_passwd->text(); if(name==passwd){ qDebug()<<"登录成功"<<endl; } else{ QMessageBox::warning(this,tr("WARNING"),tr("username or password wrong!"),QMessageBox::Yes); this->ui->line_passwd->clear();//清除密码 this->ui->line_passwd->setFocus();//鼠标回到密码栏 } } ``` main.cpp ``` #include "oneform.h" #include <QApplication> #include "twoform.h"//// int main(int argc, char *argv[]) { QApplication a(argc, argv); oneform w; w.show(); return a.exec(); } ``` 后来尝试加入accept()发生错误,显示找不到函数 ![图片说明](https://img-ask.csdn.net/upload/201903/19/1553001549_42084.png) ![图片说明](https://img-ask.csdn.net/upload/201903/19/1553001574_492829.png)
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
MySQL数据库总结
文章目录一、数据库简介二、MySQL数据类型(5.5版本)三、Sql语句(1)Sql语句简介(2)数据定义语言DDLcreate,alter,drop(3)数据操纵语言DMLupdate,insert,delete(4)数据控制语言DCLgrant,revoke(5)数据查询语言DQLselect(6)分组查询与分页查询group by,limit四、完整性约束(单表)五、多表查询六、MySQL数
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
中年危机,35 岁定律,见鬼去吧!
中年危机,35 岁定律,相信你都听说过,每次触及还会让你感到丝丝焦虑,毕竟时间这把杀猪刀不会放过任何一个人。中年危机或 35 岁定律是客观存在的,你迟早都会遭遇的,那你是否有信心战胜它呢? 中年危机之所以让人害怕,一则是你没有把握打赢这场遭遇战,再则中年是一个输不起的阶段。古人云:知己知彼,百战不殆。恐惧,主要源自对敌人和自己的不了解,不知道敌人的优劣势,也不清楚自己的长短板,常常以己之所短攻彼...
程序设计的5个底层逻辑,决定你能走多快
阿里妹导读:肉眼看计算机是由CPU、内存、显示器这些硬件设备组成,但大部分人从事的是软件开发工作。计算机底层原理就是连通硬件和软件的桥梁,理解计算机底层原理才能在程序设计这条路上越走越快,越走越轻松。从操作系统层面去理解高级编程语言的执行过程,会发现好多软件设计都是同一种套路,很多语言特性都依赖于底层机制,今天董鹏为你一一揭秘。 结合 CPU 理解一行 Java 代码是怎么执行的 根据冯·诺...
张小龙-年薪近3亿的微信之父,他是如何做到的?
张小龙生于湖南邵东魏家桥镇, 家庭主要特点:穷。 不仅自己穷,亲戚也都很穷,可以说穷以类聚。爷爷做过铜匠,总的来说,标准的劳动阶级出身。 家有兄弟两人, 一个小龙,一个小虎。 小虎好动,与邻里打成一片, 小龙好静,喜好读书。 “文静的像个妹子。”张小龙的表哥如是说。 穷文富武,做个读书郎是个不错的选择。 87年至94年, 华中科技大学本硕连读。 本科就读电信系, 不喜欢上课
阿里靠什么武功秘籍渡过“双十一“的天量冲击
双十一大概会产生多大的数据量呢,可能大家没概念,举个例子央视拍了这么多年电视新闻节目,几十年下来他存了大概80P的数据。而今年双11一天,阿里要处理970P的数据,做为一个IT人,笔者认为今年”双十一“阿里最大的技术看点有有以下两个: 阿里的数据库,也就是刚刚拿下TPC冠军的OcceanBase,处理峰值也达到了骇人听闻的6100万次/秒, 阿里核心系统百分百上云了。 如果把信息系统比做一个武
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
相关热词 c# 二进制截断字符串 c#实现窗体设计器 c#检测是否为微信 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片
立即提问