python pyqt5 怎样暂停和退出指定线程?

图片说明

怎样在点击界面的按钮暂停 或 停止 来控制线程的暂停或停止

我写的代码如下,请大神们指导下添加什么方法来控制线程

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test1.ui'
#
# Created by: PyQt5 UI code generator 5.11.2
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
import time
import threading
import sys
import os
class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(387, 288)
        self.listWidget = QtWidgets.QListWidget(Dialog)
        self.listWidget.setGeometry(QtCore.QRect(110, 30, 256, 192))
        self.listWidget.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.listWidget.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        self.listWidget.setObjectName("listWidget")
        self.widget = QtWidgets.QWidget(Dialog)
        self.widget.setGeometry(QtCore.QRect(20, 40, 77, 83))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.verticalLayout.addWidget(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.widget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.verticalLayout.addWidget(self.pushButton_3)

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton.setText(_translate("Dialog", "开始"))
        self.pushButton_2.setText(_translate("Dialog", "暂停"))
        self.pushButton_3.setText(_translate("Dialog", "停止"))


class Dialog(QtWidgets.QDialog):

    def closeEvent(self, event):
        reply = QtWidgets.QMessageBox.question(self,
                                               '本程序',
                                               "是否要退出程序?",
                                               QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
                                               QtWidgets.QMessageBox.No)
        if reply == QtWidgets.QMessageBox.Yes:
            event.accept()
            os._exit(0)
        else:
            event.ignore()


class myThread(threading.Thread):
    def __init__(self, ui):
        threading.Thread.__init__(self)
        self.ui = ui

        self.counter = 0
    def run(self):
        a = 0
        while True:
            a+=1
            print(a)
            self.ui.listWidget.addItem(str(a))
            time.sleep(1)






def main():
    """
    主函数,用于运行程序
    :return: None
    """
    app = QtWidgets.QApplication(sys.argv)
    dialog = Dialog()  # 注意修改为了自己重写的Dialog类
    ui = Ui_Dialog()
    ui.setupUi(dialog)
    dialog.show()  # 显示了自己重写的Dialog类
    thread1 = myThread(ui)
    thread1.start()

    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
























1个回答

MAYATAO1982
董无忧 百度知道里面的答案居然也要钱?关键是楼主要的是暂停和退出的功能实现,这个答案里只有退出吧?浪费我一毛钱
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python PYQT5 UI窗口突然自动关闭

我想通过获得输入的数据传给函数,然后再利用函数输出想要的结果到tableView中。函数能print出结果,但传入tableView中时UI界面就突然自动关闭了。 烦请大神出手相助,谢谢! 代码如下: ``` #读取数据 db = pd.read_excel('C:/Users/Documents/Project/SQL/TBFA.xlsx') class Where_Failed_PN(QWidget): def __init__(self): super(Where_Failed_PN, self).__init__() self.ui = Ui_Where_Units() self.ui.setupUi(self) # 装载所有初始数据 modeldf = pandasModel(db) self.ui.dataTable.setModel(modeldf) #在label上显示输入UI窗口输入的数据 self.ui.PNedit.textEdited.connect(self.showText) input=self.ui.PNedit.sender() self.ui.PNlable.setText(input) self.ui.PNedit.editingFinished.connect(self.inputText) self.ui.getBtn.clicked.connect(self.inputText) def showText(self,Text): self.ui.PNlable.setText(Text) self.ui.PNlable.adjustSize() def inputText(self): self.ui.PNedit.end(True) inputText = self.ui.PNlable.text() #函数输出结果 PNdata = db[(db['PartNum'] == inputText)] print(PNdata)#在终端能显示结果,但UI窗口自动关闭了 #希望将结果显示在UI的tableView中 modeldf = pandasModel(PNdata) self.ui.dataTable.setModel(modeldf) if __name__ == '__main__': app = QApplication(sys.argv) main = Where_Failed_PN() main.show() sys.exit(app.exec_()) ```

pyqt5 使用多线程进行socket通信,界面未响应后程序退出

本来准备开好几个线程通信,写了两个正常运行,加了第三个后界面未响应,pycharm报错Process finished with exit code -1073740791 (0xC0000409) 现在一个线程也这样,不知是哪里出了问题。 这是UI类函数 class TabDemo(QTabWidget,QMainWindow): def __init__(self,parent=None): super(TabDemo,self).__init__(parent) self.resize(1200,900) self.tab1 = QWidget() self.tab2 = QWidget() self.tab3 = QWidget() self.tab4 = QWidget() self.tab5 = QWidget() self.addTab(self.tab1,'Voltage Curent') self.addTab(self.tab2,'Parameters') self.addTab(self.tab3,'Waveforms') self.addTab(self.tab4,'Charts') self.addTab(self.tab5,'Save Load') self.tab1UI() self.tab2UI() self.tab3UI() self.tab4UI() self.tab5UI() # self.Tcptrans = TcpThread() # self.Tcptrans1 = TcpThread1() # self.Tcptrans2 = TcpThread2() self.Tcptrans3 = TcpThread3() # self.Tcptrans.start() # self.Tcptrans1.start() # self.Tcptrans2.start() self.Tcptrans3.start() # self.Tcptrans.sinOut.connect(self.display) # self.Tcptrans1.sinOut1.connect(self.display1) # self.Tcptrans2.sinOut2.connect(self.display2) self.Tcptrans3.sinOut3.connect(self.display3) self.setWindowTitle('电能质量监测系统') 这是tab2UI def tab2UI(self): grid = QGridLayout() grid.setSpacing(10) l1=QLabel('Parameters') l2=QLabel('24V Supply') l3=QLabel('Volts') l4=QLabel('DSP Temp') l5=QLabel('Dg.c') self.t1=QTextBrowser() self.t2=QTextBrowser() self.table=QTableWidget(9,20) self.g1=QGraphicsView() self.table.setVerticalHeaderLabels(['ReactivePowerA', 'ReactivePowerC', 'ActivePowerA', 'ActivePowerC','CurrentA','CurrentC','THD IA', 'THD IC','Meter ID']) ''' self.l1.setGeometry(QtCore.QRect(190, 10, 101, 16)) self.l2.setGeometry(QtCore.QRect(50, 30, 91, 16)) self.l3.setGeometry(QtCore.QRect(170, 60, 72, 15)) self.l4.setGeometry(QtCore.QRect(50, 130, 72, 15)) self.l5.setGeometry(QtCore.QRect(170, 170, 72, 15)) self.t1.setGeometry(QtCore.QRect(30, 50, 111, 31)) self.t2.setGeometry(QtCore.QRect(30, 160, 111, 31)) self.table.setGeometry(QtCore.QRect(100, 20, 871, 291)) ''' grid.addWidget(l1,1,3) grid.addWidget(self.g1,2,0,5,16) grid.addWidget(l2,2,17) grid.addWidget(self.t1,3,17) grid.addWidget(l3,3,18) grid.addWidget(l4,4,17) grid.addWidget(self.t2,5,17) grid.addWidget(l5,5,18) grid.addWidget(self.table,6,0,20,21) self.tab2.setLayout(grid) 这是槽函数 def display3(self,Meterreading): for i in range(9): for j in range(20): self.Item=QTableWidgetItem('%s' % Meterreading[i,j]) self.table.setItem(i,j,self.Item) 这是定义的子线程类class TcpThread3(QThread): sinOut3 = pyqtSignal(np.ndarray) def __init__(self, parent=None): super(TcpThread3, self).__init__(parent) self.working = True def __del__(self): # 线程状态改变与线程终止 self.working = False self.wait() def run(self): if self.working == True: self.tcp_client_socket2 = socket(AF_INET, SOCK_STREAM) self.tcp_client_socket2.connect(("127.0.0.1", 6666)) while self.working == True: self.meg3 = b'\x01\x09\x00\x00\x01\x68\xDD\xB5' self.tcp_client_socket3.send(self.meg3) self.recv_data3 = self.tcp_client_socket3.recv(1024) l3 = list() l4 = list() CT = 1 PT = 1 for i in range(3, 723, 2): temp = self.recv_data3[i:i + 2] result = struct.unpack('!h', temp)[0] l3.append(result) list4 = l3[0:320] a = np.array(list4).reshape(20, 16) for i in range(10): l4.append(a[..., i]) ReactivePowerA = l4[0] * 0.0001 * CT * PT ReactivePowerC = l4[1] * 0.0001 * CT * PT ActivePowerA = l4[2] * 0.0001 * CT * PT ActivePowerC = l4[3] * 0.0001 * CT * PT CurrentA = l4[4] * 0.01 * CT CurrentC = l4[5] * 0.01 * CT THDIA = l4[6] * 0.1 THDIC = l4[7] * 0.1 lastone = (a[..., 8] * 65536 + a[..., 9]) * 0.01 Meterreading = np.vstack((ReactivePowerA, ReactivePowerC, ActivePowerA, ActivePowerC, CurrentA, CurrentC, THDIA, THDIC, lastone)) self.sinOut3.emit(Meterreading) QApplication.processEvents() self.sleep(1)

pyqt5什么情况下用线程和signal?

初学python和pyqt,遇到困难求助。 Measure.py def measure(a,b,c): ... return d,e,f Mainwindow.py self.commandLinkButton.clicked.connect(lambda: measure(a,b,c)) 我怎么获得measure的返回值呢?还有,信号和线程分别是在什么情况下使用?

pyqt5如何弹出多个界面心事多组不同的数据

我这里有多组数据需要展示,展示的界面是在alert.py中写的,现在我想弹出多个界面,其中每个界面展示一组数据。现在的结果是alert.py可以接收到传过来的数据,界面也能弹出,但是界面上没有显示出数据,而且我的弹框线程无法将数据和界面一一对应起来,我想请问一下这是什么原因? main.py ``` from PyQt5 import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * import sys import time from alert import Show_Text from change import Show_Change import winsound class Ui_Control_system(object): def setupUi(self, Control_system): Control_system.setObjectName("Control_system") Control_system.resize(1004, 722) Control_system.setFixedSize(1004, 722) Control_system.setWindowIcon(QIcon('images/icon.png')) Control_system.setStyleSheet("QMainWindow{border-image:url(images/background.jpg)}") self.centralwidget = QWidget(Control_system) self.centralwidget.setObjectName("centralwidget") self.pushButton_skip = QPushButton(self.centralwidget) self.pushButton_skip.setGeometry(QRect(70, 60, 121, 41)) self.pushButton_skip.setObjectName("pushButton_skip") Control_system.setCentralWidget(self.centralwidget) self.statusbar = QStatusBar(Control_system) self.statusbar.setObjectName("statusbar") Control_system.setStatusBar(self.statusbar) self.retranslateUi(Control_system) QMetaObject.connectSlotsByName(Control_system) def retranslateUi(self, Control_system): _translate = QCoreApplication.translate Control_system.setWindowTitle(_translate("Control_system", "实时监控系统")) self.pushButton_skip.setText(_translate("Control_system", "跳转")) class Control_system(QMainWindow, Ui_Control_system): #alarmQueue = queue.LifoQueue() def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.add_data_list = "" self.pushButton_skip.clicked.connect(self.jump_to_alert) self._alerts = [] @pyqtSlot() def jump_to_alert(self): self.popup_window_thread = PopupWindow(self) self.popup_window_thread.popup.connect(self.goAlert) self.popup_window_thread.start() @pyqtSlot() def jump_to_change(self): self.change_window_thread = ChangeWindow(self) self.change_window_thread.change_signal.connect(self.goChange) self.change_window_thread.start() def goAlert(self): self.add_data_list = [["1","2","3"],["4","5","6"]] for term in self.add_data_list: alert = Alert() alert.some_room = term[0] alert.some_machine = term[1] alert.some_project = term[2] print(alert.some_project) alert.show() self._alerts.append(alert) class Alert(Show_Text): def __init__(self): super().__init__() #self.setupUi(self) def closeEvent(self, event): reply = QMessageBox.question(self, '警告', "是否要退出警告?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if reply == QMessageBox.Yes: event.accept() else: event.ignore() class PopupWindow(QThread): popup = pyqtSignal() def __init__(self, parent=None): super(PopupWindow, self).__init__() self.index = 0 def run(self): while self.index <= 1: self.index +=1 self.popup.emit() time.sleep(1) def stop(self): self.quit() self.wait() if __name__ == '__main__': if not QApplication.instance(): app = QApplication(sys.argv) else: app = QApplication.instance() w = Control_system() w.show() sys.exit(app.exec()) ``` alert.py ``` from PyQt5 import * from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * import time class Ui_Dialog(object): def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(557, 444) #Dialog.setStyleSheet("QDialog{border-image:url(images/background.jpg)}") Dialog.setWindowIcon(QIcon('images/icon.png')) self.textBrowser = QtWidgets.QTextBrowser(Dialog) self.textBrowser.setGeometry(QtCore.QRect(200, 80, 256, 41)) self.textBrowser.setObjectName("textBrowser") self.textBrowser_2 = QtWidgets.QTextBrowser(Dialog) self.textBrowser_2.setGeometry(QtCore.QRect(200, 170, 256, 41)) self.textBrowser_2.setObjectName("textBrowser_2") self.textBrowser_3 = QtWidgets.QTextBrowser(Dialog) self.textBrowser_3.setGeometry(QtCore.QRect(200, 260, 256, 41)) self.textBrowser_3.setObjectName("textBrowser_3") self.label = QtWidgets.QLabel(Dialog) self.label.setGeometry(QtCore.QRect(60, 80, 111, 31)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(20) font.setBold(True) font.setWeight(75) self.label.setFont(font) self.label.setStyleSheet("color: rgb(255, 0, 0);") self.label.setTextFormat(QtCore.Qt.AutoText) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(Dialog) self.label_2.setGeometry(QtCore.QRect(60, 170, 111, 31)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(20) font.setBold(True) font.setWeight(75) self.label_2.setFont(font) self.label_2.setStyleSheet("color: rgb(255, 0, 0);") self.label_2.setTextFormat(QtCore.Qt.AutoText) self.label_2.setObjectName("label_2") self.alert = QtWidgets.QLabel(Dialog) self.alert.setGeometry(QtCore.QRect(60, 260, 111, 31)) font = QtGui.QFont() font.setFamily("微软雅黑") font.setPointSize(20) font.setBold(True) font.setWeight(75) self.alert.setFont(font) self.alert.setStyleSheet("color: rgb(255, 0, 0);") self.alert.setTextFormat(QtCore.Qt.AutoText) self.alert.setObjectName("alert") self.retranslateUi(Dialog) def retranslateUi(self, Dialog): _translate = QtCore.QCoreApplication.translate Dialog.setWindowTitle(_translate("Dialog", "警告")) self.label.setText(_translate("Dialog", "报警车间")) self.label_2.setText(_translate("Dialog", "报警机器")) self.alert.setText(_translate("Dialog", "报警项目")) class Show_Text(QDialog, Ui_Dialog): def __init__(self, parent=None): super().__init__(parent) self.some_room = "" self.some_machine = "" self.some_project = "" print(self.some_room) print(self.some_machine) print(self.some_project) self.setupUi(self) self.show_text_thread = showtext_Thread(self.some_room,self.some_machine,self.some_project) self.show_text_thread.start() @pyqtSlot(str, str, str) def show_Data(self, room, machine, project):#数据更新 self.textBrowser.append(room) self.textBrowser_2.append(machine) self.textBrowser_3.append(project) class showtext_Thread(QtCore.QThread): trigger = QtCore.pyqtSignal(str,str,str) def __init__(self, room, machine, project, parent=None): super(showtext_Thread, self).__init__(parent) self.thread_room = room self.thread_machine = machine self.thread_project = project def run(self): print(self.thread_room) self.trigger.emit(self.thread_room,self.thread_machine,self.thread_project) time.sleep(1) def stop(self): self.quit() self.wait() ```

pyqt5中截获terminal的打印信息,打印到UI界面的textedit上,出现问题

问题如题目所示,项目是深度学习项目,训练过程中就会不断的打印一些新的信息,包括训练过程中的loss值等等。 一般情况下都是直接显示在terminal上,这里想要用pyqt编写一个界面,实现点击按钮就训练,或者测试。此时方便对训练过程信息的了解,就让原本在terminal上显示的信息显示在UI上,用textedit进行显示。 网上找到了一个较为好用的代码,实现这个功能,如下: ``` class EmittingStream(QtCore.QObject): textWritten = QtCore.pyqtSignal(str) def write(self, text): self.textWritten.emit(str(text)) class AI_Workstation(QtWidgets.QMainWindow): def __init__(self, parent=None): super(AI_Workstation, self).__init__() sys.stdout = EmittingStream(textWritten=self.normalOutputWritten) sys.stderr = EmittingStream(textWritten=self.normalOutputWritten) self._createUI() self.Config = Configuration() self.N = 0 self._connect() self.show() # def __del__(self): # # Restore sys.stdout # sys.stdout = sys.__stdout__ # sys.stderr = sys.__stderr__ def _createUI(self): self.ui = MainUI.Ui_MainWindow() self.ui.setupUi(self) self.ui.retranslateUi(self) # 创建信号槽事件 def _connect(self): # 打印超参数 self.ui.pushButton_Print.clicked.connect(self.parameterInit) # 信号槽机制 self.ui.pushButton_Train.clicked.connect(self.trainNow) self.ui.pushButton_Test.clicked.connect(self.testNow) self.ui.pushButton_Inference.clicked.connect(self.inferenceNow) def parameterInit(self): self.lr_value = self.ui.lineEdit_Lr.text() # 获取文本框内容 self.opt_value = self.ui.comboBox_Opt.currentText() self.numworkers_value = self.ui.lineEdit_Workers.text() self.maxepoch_value = self.ui.lineEdit_MaxEpoch.text() self.nclass_value = self.ui.lineEdit_Class.text() self.Config.LR=self.lr_value self.N=self.N+1 self.ui.label_PrecentProc.setText(str(self.N)) # 给label设定text参数 self.ui.horizontalSlider.setValue(self.N) # 给horizontalSlider设定value参数 print(u'打印训练参数:\n' + u'学习率: ' + self.Config.LR + u'优化方式: ' + self.opt_value + u'多线程: ' + self.numworkers_value) for line in open("./records/20190814103634/loss.txt"): print(line.strip()) def normalOutputWritten(self, text): """Append text to the QTextEdit.""" # Maybe QTextEdit.append() works as well, but this is how I do it: cursor = self.ui.textEdit_Print.textCursor() cursor.movePosition(QtGui.QTextCursor.End) cursor.insertText(text) self.ui.textEdit_Print.setTextCursor(cursor) self.ui.textEdit_Print.ensureCursorVisible() ``` 直接print打印时可以的,很正常的将terminal上的信息,打印在了textedit上,terminal不再显示。但是在训练的时候,就会报错,如下: ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570698900_343696.png) 此时屏蔽掉如下两行的信息,就很正常的进行显示,不过是在terminal的显示 ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570698932_339379.png) 显示的如下: ![图片说明](https://img-ask.csdn.net/upload/201910/10/1570698964_791308.png) 特来请教,我的WX号:muchen123q,谢谢前辈指导,谢谢

pygame中调用pyqt5写的设置界面,只能显示一次不能多次启动,求解?

最近学习python用pygame做了一个小游戏,在拓展游戏设置和网络对战功能时,用pyqt5,Qt Designer设计了游戏设置和网络界面,发现第一次启动时能正常调用界面,但关闭之后不能再次打开,尝试过直接调用和新开线程调用,均不能解决问题,求解!? #窗口文件代码 #窗口界面代码 ``` class Ui_dialog(object): def setupUi(self, dialog): dialog.setObjectName("dialog") dialog.setWindowModality(QtCore.Qt.NonModal) dialog.resize(480, 320) self.buttonBox = QtWidgets.QDialogButtonBox(dialog) self.buttonBox.setGeometry(QtCore.QRect(240, 270, 221, 41)) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok) self.buttonBox.setObjectName("buttonBox") self.verticalLayoutWidget = QtWidgets.QWidget(dialog) self.verticalLayoutWidget.setGeometry(QtCore.QRect(9, 9, 461, 251)) self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget) self.label_2.setObjectName("label_2") self.verticalLayout.addWidget(self.label_2) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.radioButton_3 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_3.setEnabled(True) self.radioButton_3.setTabletTracking(False) self.radioButton_3.setChecked(True) self.radioButton_3.setObjectName("radioButton_3") self.buttonGroup = QtWidgets.QButtonGroup(dialog) self.buttonGroup.setObjectName("buttonGroup") self.buttonGroup.addButton(self.radioButton_3) self.horizontalLayout.addWidget(self.radioButton_3) self.radioButton = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton.setObjectName("radioButton") self.buttonGroup.addButton(self.radioButton) self.horizontalLayout.addWidget(self.radioButton) self.verticalLayout.addLayout(self.horizontalLayout) self.label = QtWidgets.QLabel(self.verticalLayoutWidget) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.horizontalLayout_2 = QtWidgets.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.radioButton_4 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_4.setChecked(True) self.radioButton_4.setObjectName("radioButton_4") self.buttonGroup_2 = QtWidgets.QButtonGroup(dialog) self.buttonGroup_2.setObjectName("buttonGroup_2") self.buttonGroup_2.addButton(self.radioButton_4) self.horizontalLayout_2.addWidget(self.radioButton_4) self.radioButton_5 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_5.setObjectName("radioButton_5") self.buttonGroup_2.addButton(self.radioButton_5) self.horizontalLayout_2.addWidget(self.radioButton_5) self.radioButton_10 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_10.setObjectName("radioButton_10") self.buttonGroup_2.addButton(self.radioButton_10) self.horizontalLayout_2.addWidget(self.radioButton_10) self.radioButton_11 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_11.setObjectName("radioButton_11") self.buttonGroup_2.addButton(self.radioButton_11) self.horizontalLayout_2.addWidget(self.radioButton_11) self.radioButton_6 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_6.setObjectName("radioButton_6") self.buttonGroup_2.addButton(self.radioButton_6) self.horizontalLayout_2.addWidget(self.radioButton_6) self.verticalLayout.addLayout(self.horizontalLayout_2) self.label_3 = QtWidgets.QLabel(self.verticalLayoutWidget) self.label_3.setObjectName("label_3") self.verticalLayout.addWidget(self.label_3) self.horizontalSlider = QtWidgets.QSlider(self.verticalLayoutWidget) self.horizontalSlider.setMaximum(10) self.horizontalSlider.setProperty("value", 5) self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.horizontalSlider.setTickInterval(0) self.horizontalSlider.setObjectName("horizontalSlider") self.verticalLayout.addWidget(self.horizontalSlider) self.label_4 = QtWidgets.QLabel(self.verticalLayoutWidget) self.label_4.setObjectName("label_4") self.verticalLayout.addWidget(self.label_4) self.horizontalLayout_3 = QtWidgets.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.radioButton_7 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_7.setObjectName("radioButton_7") self.buttonGroup_3 = QtWidgets.QButtonGroup(dialog) self.buttonGroup_3.setObjectName("buttonGroup_3") self.buttonGroup_3.addButton(self.radioButton_7) self.horizontalLayout_3.addWidget(self.radioButton_7) self.radioButton_8 = QtWidgets.QRadioButton(self.verticalLayoutWidget) self.radioButton_8.setChecked(True) self.radioButton_8.setObjectName("radioButton_8") self.buttonGroup_3.addButton(self.radioButton_8) self.horizontalLayout_3.addWidget(self.radioButton_8) self.verticalLayout.addLayout(self.horizontalLayout_3) self.retranslateUi(dialog) self.buttonBox.accepted.connect(dialog.accept) self.buttonBox.rejected.connect(dialog.reject) self.radioButton_5.clicked.connect(self.gamedj) QtCore.QMetaObject.connectSlotsByName(dialog) dialog.setTabOrder(self.radioButton_3, self.radioButton) dialog.setTabOrder(self.radioButton, self.radioButton_4) dialog.setTabOrder(self.radioButton_4, self.radioButton_5) dialog.setTabOrder(self.radioButton_5, self.radioButton_10) dialog.setTabOrder(self.radioButton_10, self.radioButton_11) dialog.setTabOrder(self.radioButton_11, self.radioButton_6) dialog.setTabOrder(self.radioButton_6, self.horizontalSlider) dialog.setTabOrder(self.horizontalSlider, self.radioButton_7) dialog.setTabOrder(self.radioButton_7, self.radioButton_8) def retranslateUi(self, dialog): _translate = QtCore.QCoreApplication.translate dialog.setWindowTitle(_translate("dialog", "游戏设置")) self.label_2.setText(_translate("dialog", "游戏模式选择:")) self.radioButton_3.setText(_translate("dialog", "普通阶")) self.radioButton.setText(_translate("dialog", "可变阶")) self.label.setText(_translate("dialog", "游戏阶数(最高阶):")) self.radioButton_4.setText(_translate("dialog", "4")) self.radioButton_5.setText(_translate("dialog", "5")) self.radioButton_10.setText(_translate("dialog", "6")) self.radioButton_11.setText(_translate("dialog", "7")) self.radioButton_6.setText(_translate("dialog", "8")) self.label_3.setText(_translate("dialog", "游戏速度选择:")) self.label_4.setText(_translate("dialog", "道具模式选择:")) self.radioButton_7.setText(_translate("dialog", "开启")) self.radioButton_8.setText(_translate("dialog", "关闭")) #逻辑执行类 class MyMainWindow(QDialog,Ui_dialog): def __init__(self, parent = None): super(MyMainWindow, self).__init__(parent) self.setupUi(self) # 连接槽函数 #self.radioButton_5.clicked.connect(self.gamedj) #定义新增槽函数ok def gamedj(self): print(“o'k” ) #设置内容测试 #定义调用函数 def setting_ui(): app = QApplication(sys.argv) win = MyMainWindow() win.show() app.exec() #新开线程 class setui_Thread(threading.Thread): def __init__(self): super(setui_Thread, self).__init__() def run(self): currentTreadname = threading.currentThread() #测试 print("set ui running in", currentTreadname) #测试 setting_ui() setui = setui_Thread() setui.setDaemon(daemonic=True) #调用线程或函数代码片 #检测鼠标点击是否在游戏设置 if ksyx3.textRect.collidepoint(mouse_x,mouse_y): if not ai_settings.game_set: ai_settings.game_set = True #setui.run() setui.start() ``` 请各位大神答疑,谢谢!

pyqt5+scrapy传值问题

用pyqt5给爬虫做个界面,但是在界面中的lineEdit文本传不到爬虫中去(要爬微博所以得传一个用于搜索的关键字) 方法是设一个全局变量KEYWORD然后再在界面中用lineEdit修改这个全局变量,最后开启爬虫,读取这个修改后的KEYWORD 无关的函数我都改成pass方便查看- -,为什么这方法有错误,是因为开了另一个线程然后爬虫默认赋值为原来的关键字1 ? # -*- coding: utf-8 -*- KEYWORD = '关键字1' class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(769, 575) self.lineEdit = QLineEdit(Form) self.lineEdit.setGeometry(QRect(130, 50, 161, 21)) self.lineEdit.setObjectName("lineEdit") self.label = QLabel(Form) self.label.setGeometry(QRect(30, 50, 91, 21)) self.label.setObjectName("label") self.pushButton_2 = QPushButton(Form) self.pushButton_2.setGeometry(QRect(550, 40, 81, 41)) self.pushButton_2.setObjectName("pushButton_2") self.pushButton_3 = QPushButton(Form) self.pushButton_3.setGeometry(QRect(330, 40, 81, 41)) self.pushButton_3.setObjectName("pushButton_3") self.pushButton_4 = QPushButton(Form) self.pushButton_4.setGeometry(QRect(440, 40, 81, 41)) self.pushButton_4.setObjectName("pushButton_4") self.pushButton_5 = QPushButton(Form) self.pushButton_5.setGeometry(QRect(660, 40, 81, 41)) self.pushButton_5.setObjectName("pushButton_5") self.pushButton_4.clicked.connect(self.pop2) #开启爬虫 self.pushButton_2.clicked.connect(self.pop1) self.pushButton_3.clicked.connect(self.pop4) #开启cookiespool和修改关键字值 self.pushButton_5.clicked.connect(self.pop5) self.tableView = QTableView(Form) self.tableView.setGeometry(QRect(15, 131, 731, 421)) #设置tableView self.model = QStandardItemModel(1, 6) self.model.setHorizontalHeaderLabels(['作者id', '评论数', '正文', '转发数', '点赞数', 'user']) self.tableView.setEditTriggers(QAbstractItemView.NoEditTriggers) # 只读 self.tableView.resizeColumnsToContents() # 宽度和长度和显示内容相同 self.tableView.setModel(self.model) #设置tableView结束 self.tableView.setObjectName("tableView") self.label_2 = QLabel(Form) self.label_2.setGeometry(QRect(30, 110, 72, 15)) self.label_2.setObjectName("label_2") self.retranslateUi(Form) QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "输入关键字")) self.pushButton_2.setText(_translate("Form", "显示结果")) self.pushButton_3.setText(_translate("Form", "启动服务")) self.pushButton_4.setText(_translate("Form", "开始抓取")) self.pushButton_5.setText(_translate("Form", "结果分析")) self.label_2.setText(_translate("Form", "结果显示")) #槽函数部分 def pop1(self): #从数据库显示数据 pass def pop2(self): #开启爬虫 new.run() def pop3(self): #退出 pass def pop4(self): #开启服务 在这修改关键字 比如传入的时关键字2 global KEYWORD KEYWORD = self.lineEdit.text() print(KEYWORD) #输出会显示关键字2 而不是关键字1 s.start() def pop5(self): #结果显示 pass if __name__ == '__main__': app = QApplication(sys.argv) MainWindow = QMainWindow() ui = Ui_Form() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) #爬虫部分 class WeiboSpider(Spider): client = pymongo.MongoClient(host='127.0.0.1', port=27017) db = client.weibo p = db.weibo name = 'weibo' allowed_domains = ["weibo.cn"] start_url='https://weibo.cn/search/mblog' max_page = 100 count = 0 def start_requests(self): global KEYWORD keyword = KEYWORD #这里获取不到已经修改的关键字 print(keyword) #输出的还是关键字1 url='{url}?keyword={keyword}'.format(url=self.start_url, keyword=keyword) for page in range(self.max_page + 1): data = { 'mp' : str(self.max_page), 'page' : str(page) } yield FormRequest(url, callback=self.parse_index, formdata=data) def parse_index(self, response): pass def comment_detail(self, response): pass new.py 文件内容 from scrapy.crawler import CrawlerProcess from weibosearch.spiders.weibo import WeiboSpider def run(): process = CrawlerProcess() process.crawl(WeiboSpider) process.start()

python析构函数__del__的行为

python类的 ``` __del__() ``` 函数在执行之前发生了什么? 我想在类的析构函数中保存数据,以防成员函数出现异常数据没有保存,现在我在析构函数中调用open()函数会出现错误 ![图片说明](https://img-ask.csdn.net/upload/201912/23/1577090140_794739.jpg) 是什么原理,python在执行del前就已经释放了一些资源么?

为什么有些线程被调用了多次,难道不应该只调用一次吗

#include<windows.h> #include<stdio.h> HANDLE hSemaphore; HANDLE h[3]; DWORD WINAPI ThreadProc15(LPVOID lpParam) { ::WaitForSingleObject(hSemaphore,INFINITE); printf("线程1正在运行\n"); ReleaseSemaphore(hSemaphore,1,NULL); return 0; } DWORD WINAPI ThreadProc16(LPVOID lpParam) { ::WaitForSingleObject(hSemaphore,INFINITE); printf("线程2正在运行\n"); ReleaseSemaphore(hSemaphore,1,NULL); return 0; } DWORD WINAPI ThreadProc17(LPVOID lpParam) { ::WaitForSingleObject(hSemaphore,INFINITE); printf("线程3正在运行\n"); ReleaseSemaphore(hSemaphore,1,NULL); return 0; } void CSample08View() { hSemaphore=CreateSemaphore(NULL,3,1,NULL); DWORD uId; h[0]=::CreateThread(NULL,NULL,ThreadProc15,NULL,NULL,&uId); h[1]=::CreateThread(NULL,NULL,ThreadProc16,NULL,NULL,&uId); h[2]=::CreateThread(NULL,NULL,ThreadProc17,NULL,NULL,&uId); } int main(int argc,char* argv[]) { CSample08View(); ::WaitForMultipleObjects(3,h,TRUE,INFINITE); ::CloseHandle(h[0]); ::CloseHandle(h[1]); ::CloseHandle(h[2]); //z这样一来,总算是有点规律可找了,应该是,如果出现123完整的一组,那么就会退出。 return 0; } //电脑调用线程是随机的,也就是说代码的执行是不受控制的。

QT窗口关闭进程不退出问题

写了一个程序类似QQ一样,有个登陆界面,登陆成功后显示用户界面。当我设置成自动登录后,然后再关掉界面,进程不退出(窗口的析构没有执行)。不是自动登录没事。我新定义了一个信号,用来触发登陆按钮的click()信号,当检测到自动登录被选中后,触发信号。问题出在什么地方?

pycharm下为啥debug能显示结果,run不能

刚接触python和pycharm,不太明白为啥我debug结果都显示出来了,点击run却不可以。![图片说明](https://img-ask.csdn.net/upload/201811/05/1541418991_295975.png) run显示的结果就是上图,debug的那个窗口是有正常结果的。 因为不懂这个界面,所以个人感觉点击run以后不应该在python Console里面显示结果吗?求解

QThread: Destroyed while thread is still running

最近发现代码有问题 QThread: Destroyed while thread is still running 线程snap_thread.cpp ``` Snap_thread::Snap_thread(QLabel *pb) :QThread() { isRunning = true; udp_fd = -1; this->pb = pb; } void Snap_thread::run() { run_socket(); } void Snap_thread::run_socket() { int len; char sendbuf[256]; //sendto中使用的对方地址 struct sockaddr_in toAddr; //在recvfrom中使用的对方主机地址 struct sockaddr_in fromAddr; unsigned int fromLen; char recvBuffer[128]; udp_fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); if(udp_fd < 0) { printf("创建套接字失败了.\r\n"); return; } //memset()函数 memset(&toAddr,0,sizeof(toAddr)); toAddr.sin_family=AF_INET; //对方的地址和对方的主机port toAddr.sin_addr.s_addr=inet_addr("127.0.0.1"); toAddr.sin_port = htons(this->port); sendbuf[0]=0x1; if(flag_video_press_num == GUIONTIMEONE) { str = qpath; str += "/car.jpg"; } else if(flag_video_press_num == GUIONTIMETWO) { str = qpath; str += "/goods.jpg"; } strcpy(&sendbuf[1],path); if((len=sendto(udp_fd,sendbuf,strlen(path)+2,0,(struct sockaddr*)&toAddr,sizeof(toAddr))) != strlen(path)+2) { printf("sendto() 函数使用失败了.\r\n"); } printf("%d has sent %d bytes\n",this->port,len); fromLen = sizeof(fromAddr); if(recvfrom(udp_fd,recvBuffer,128,0,(struct sockaddr*)&fromAddr,&fromLen)<0) { printf("recvfrom()函数使用失败了.\r\n"); } if(recvBuffer[0] == 2) { if(recvBuffer[1] == 1) { this->pb->setText("截图成功"); } else if(recvBuffer[1] == -1) { this->pb->setText("文件名错误"); } else { this->pb->setText("存储错误"); } } close(udp_fd); udp_fd = -1; } Snap_thread::~Snap_thread(){} void Snap_thread::setPort(int port) { this->port = port; } void Snap_thread::setPath(QString path) { this->qpath = "/mnt/ftp/"; qpath += path; } void Snap_thread::stop() { std::cout<<"this is stop!"<<std::endl; this->isRunning = false; if(udp_fd >= 0) { close(udp_fd); } this->quit(); } ``` 在主线程调用代码如下 ``` snap = new Snap_thread(ui->label_toast); snap->setPort(6000); snap->setPath(snap_save_path); snap->start(); ... if(snap->isRunning) { snap->stop(); delete snap; snap = NULL; } ``` 现在报 QThread: Destroyed while thread is still running 还有可能直接导致程序崩溃,我应该如何改成呢?

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

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

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

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

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

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

做了5年运维,靠着这份监控知识体系,我从3K变成了40K

从来没讲过运维,因为我觉得运维这种东西不需要太多的知识面,然后我一个做了运维朋友告诉我大错特错,他就是从3K的运维一步步到40K的,甚至笑着说:我现在感觉自己什么都能做。 既然讲,就讲最重要的吧。 监控是整个运维乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供详实的数据用于追查定位问题。目前业界有很多不错的开源产品可供选择。选择一款开源的监控系统,是一个省时省力、效率最高的方...

计算机网络——浅析网络层

一、前言 注意,关于ipv4和ipv6,ipv4是ip协议第4版本,也表示这个版本的ip一共4个字节,同样地,ipv6是ip协议第6版本,也表示这个版本的ip一共6个字节。 关于网络层使用路由器实现互联:在计算机网络的分层结构中,不同层有不同的中继设备: 计算机网络层 中继设备/中继系统 物理层 中继器、集线器Hub 数据链路层 网桥或交换机(交换机是多端口网桥,两者本质上是一个东西) 网络层 路...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

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

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

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

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

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

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

win10暴力查看wifi密码

刚才邻居打了个电话说:喂小灰,你家wifi的密码是多少,我怎么连不上了。 我。。。 我也忘了哎,就找到了一个好办法,分享给大家: 第一种情况:已经连接上的wifi,怎么知道密码? 打开:控制面板\网络和 Internet\网络连接 然后右击wifi连接的无线网卡,选择状态 然后像下图一样: 第二种情况:前提是我不知道啊,但是我以前知道密码。 此时可以利用dos命令了 1、利用netsh wlan...

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

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是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,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

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

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

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

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

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

程序员为什么千万不要瞎努力?

本文作者用对比非常鲜明的两个开发团队的故事,讲解了敏捷开发之道 —— 如果你的团队缺乏统一标准的环境,那么即使勤劳努力,不仅会极其耗时而且成果甚微,使用...

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

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中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多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

给女朋友解释为什么TCP可靠而非安全,UDP非可靠而安全(聊天记录)

给女朋友解释为什么TCP可靠而非安全,UDP非可靠而安全

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

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

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

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

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

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

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

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

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

立即提问
相关内容推荐