Python实现游戏辅助脚本
目录
- 预处理 需实现的功能
- 对窗口的获得
- 对屏幕图像的获得
- 实现屏幕上找到特定图像
- 实现鼠标点击、按键功能
- 整体实现
- 多进程
- 思路
- 进入关卡
- 完成关卡
- 死亡
- 整个的代码
代码较多,文字较少,不懂请留言
使用的是多进程,不能直接运行.py文件,需在shell上 python *.py
请勿转发
《爆枪英雄》已获得版权登记,受法律保护,请尊重开发者的劳动成果,不得转载、破解、篡改我们的游戏,侵权必究。——四三九九网络股份有限公司
预处理 需实现的功能
- 对窗口的获得
- 对屏幕上图像的获得
- 实现屏幕上找到特定图像
- 实现鼠标点击、按键功能
对窗口的获得
该游戏是4399游戏,运行于网页上,须获得浏览器窗口,便于在该窗口上进行操作。
可通过spyxx获得窗口的wdname和classname
import win32com,win32gui
import win32com.client
class GameAssist:def __init__(self,classname,wdname):self.shell = win32com.client.Dispatch('WScript.Shell')self.hwnd = win32gui.FindWindow(classname,wdname)#获得句柄if not self.hwnd:print("窗口找不到,请确认窗口句柄名称:【%s】" % wdname)exit()#窗口显示最前化self.SetAsForegroundWindow()win32gui.SetActiveWindow(self.hwnd)# 使得分辨率为1980x1080self.get_screen()
其中关键在于classname与wdname的获得。分辨率的设置是使得屏幕上的某些点的绝对坐标是可知的。同时大部分函数都将在GameAssist类里实现,只有不写在GameAssist类的特别说出,否则所有函数均在该类里。
对屏幕图像的获得
import sys
from PyQt5.QtWidgets import QApplicationdef get_screen(self,img2='123.jpg'):'''img2 : 图片存储路径. The default is '123.jpg'.'''app = QApplication(sys.argv)screen = QApplication.primaryScreen()img = screen.grabWindow(QApplication.desktop().winId()).toImage()img.save('{:s}'.format(img2))
get_screen实现对屏幕截图、保存的功能,用来进行图像之间的分析。
实现屏幕上找到特定图像
基本思路为读取两张图片,进行分析
使用cv2.imread读取,cv2.matchTemplate分析。
cv2.imread(‘filename’,0)实现对某绝对路径或相对路径中图片文件,以灰度模式加载。默认参数为1,以彩色加载。
cv2.matchTemplate(image, templ, method, result=None, mask=None)
image:待搜索图像
templ:模板图像
result:匹配结果
method:计算匹配程度的方法
我采用的是CV_TM_CCOEFF_NORMED 归一化相关系数匹配法
图像判断代码
import cv2def is_sim(self,img1='',img2='123.jpg',s=0.75):'''判断img2里是否有img1----------img1 : The default is ''.img2 : The default is '123.jpg'.s : 匹配最小值. The default is 0.75.'''img1 = cv2.imread(img1,0)self.get_screen(img2)img2 = cv2.imread(img2,0)res = cv2.matchTemplate(img2,img1,cv2.TM_CCOEFF_NORMED)if res.max()<s:return Falsereturn True
需进行res.max()在于res为列表形式,设定一个阈值使得存在某区域最小匹配度大于s时,认为屏幕上存在此图片。
由于大部分的实现图像在屏幕上的查找是为了获得进行鼠标点击操作
import numpy as np
from PIL import Imagedef get_position(self,img1,img2='123.jpg',s=0.75,M=True,K=False):'''当K为True时,用于返回进行rgb判断的数组----------img1 : 路径名,需要在屏幕上查找的图片DESCRIPTION.img2 : 截图时临时存放位置. The default is '123.jpg'.s : 不大于1的正数,传递给is_sim函数.M : BOOL, optional为False时,未查找到返回(100,100)点. The default is True.K : 是否用于进行rgb搜索. The default is False.Returns-------(X,Y) 图像中心点坐标'''while self.is_sim(img1=img1,img2=img2,s=s) is not True:if M is True and K is not True:continueelse:return (100,100)self.get_screen(img2)d = Image.open(img1).sizeim = cv2.imread(img1,0)im2 = cv2.imread(img2,0)res = cv2.matchTemplate(im2,im,cv2.TM_CCOEFF_NORMED)loc = np.where(res==res.max())X = int(loc[1]+d[0]/2)Y = int(loc[0]+d[1]/2)if K is True:im = cv2.imread('F:\Python/fuzhu/%s'%img2)im = im[max(0,int(loc[0])):min(1980,int(loc[0]+d[1])),max(0,int(loc[1])):min(1980,int(loc[1]+d[0])),:]return imelse:return (X,Y)
X,Y是由于返回的是矩形的左上角点故增加查找图像的尺寸的一半。
实现鼠标点击、按键功能
本人是通过pyautogui来实现
pyautogui.keyDown()/keyUp()/click()/mouseDown()/mouseUp()/moveTo()来实现按下某键/取消按下某键/点击/按下鼠标/松开鼠标/移动鼠标功能
keyDown(‘key_name’)键名’a’-‘z’以及’enter’/‘ ’等
click(X,Y)输入坐标
具体参数运用在每个函数里。
整体实现
运用多进程实现判断与操作的同时进行以及多图像的同时匹配
多进程
不涉及到进程池,涉及到队列及进程
此处均不位于GameAssist类里
设计process_job函数用于每个进程的调用,包括是否死亡、是否已过关、在关中时的操作以及是否射击打怪。
调用为 p2 = Process(target=process_job, args=(‘in_guan’,q1,q2,))
target 接受 函数名,args接受此函数需要的参数
对于队列
q1,q2 = Queue(),Queue() 来创造
q2.put()向队列里放入;q2.empty()是否为空/q2.get()从中拿走并返回最新加入的信息。
from multiprocessing import Process,Queue
def Break(q1=Queue(),q2=Queue()):'''True 表示可以break'''order = q2.get()q2.put(order)if q1.empty() is False:return Trueelif order=='finish':return True
'''
某些代码
'''
def process_job(name,q1,q2,x=[]):'''----------name : 确定执行的函数q1 : 当获得None值时,该函数退出,None由死亡或过关写入.q2 : 'in'表示已进入关内,'main'表示开始可进入关,'finishi'已完成关卡.x : 传递给某些函数的参数.'''while True:if name=='death':if demo.death() is True:q1.put(None)print('已死亡')breakif q1.empty() is False:breakelif name=='finish':if q2.empty() is not True:A = demo.finish(G_n=x[0],q1=q1,q2=q2)if A is True:q1.put(None)print(name,'结束',os.getpid(),os.getppid())breakelif A is None:print(name,'结束',os.getpid(),os.getppid())breakelif name=='in_guan':if q2.empty() is not True:print(name,'is starting',os.getpid(),os.getppid())while True:demo.jineng()if Break(q1,q2) is True:print(name,'结束',os.getpid(),os.getppid())breakbreakelif name=='shot':if q2.empty() is not True:print(name,'is starting',os.getpid(),os.getppid())shot(q1,q2,G=x[0])print(name,'结束',os.getpid(),os.getppid())breakelse:print('未设置该',name,'函数')
'''
某些代码
'''
if __name__=='__main__' and 1==1:'''demo.get_in()参数修改对参数args('finish 中最后一项改变')'''for i in range(1,71):if i%2==0:demo.full()q1,q2 = Queue(),Queue()demo.get_in('G_96.jpg','M_zhch.jpg','N_kn.jpg')q2.put('in')p2 = Process(target=process_job, args=('in_guan',q1,q2,))p4 = Process(target=process_job,args=('death',q1,q2,))p1 = Process(target=process_job,args=('finish',q1,q2,['G_96.jpg'],))p0 = Process(target=process_job,args=('shot',q1,q2,['G_96']))p0.start()p2.start()p4.start()p1.start()p0.join()p4.join()p2.join()p1.join()p0.join()
思路
进入关卡、在关中进行某些操作(判断是否已过关或死亡)、过关时的操作、死亡时的操作、重复
进入关卡
不同关卡进入时执行操作不同
保存某些矩形方块,进行找点
def get_in(self,G_n='',M_n='',N_n='',G=True):'''G_n : str,关卡名,G_90.jpgM_n : str,模式名,M_zhch.jpg,N_n : str,难度,N_ly.jpg,仅M_n为M_wj.jpg时不需此参数G_n : Bool,是否需要召唤队友'''G_n = 'P_xtjm/%s'%G_nM_n = 'P_xtjm/%s'%M_ntime.sleep(1)self.click(G_n)time.sleep(1)self.click(M_n) if M_n!='P_xtjm/M_wj.jpg':N_n = 'P_xtjm/%s'%N_nself.click(N_n)else:self.click('G_jm/queding.jpg')G = Falsewhile self.is_sim('G_jm/yi_jr.jpg') is not True:continueif G_n=='P_xtjm/G_94.jpg':self.keydown('a',2)elif G_n=='P_xtjm/G_89.jpg':self.keydown('a',3)'''省略某些代码'''if G is True:time.sleep(0.5)self.keydown('g')
完成关卡
def finish(self,G_n='',q1=Queue(),q2=Queue()):'''判断是否完成关卡----------G_n : 关卡名. The default is ''.q1 : 队列,用来停止相关进程. The default is Queue().q2 : 队列,用来停止相关进程. The default is Queue().'''if G_n=='G_90_2.jpg':G_n = 'G_jm/jt_90_2.jpg'while self.is_sim(G_n,img2='back_i.jpg') is not True:if q1.empty() is False:return Nonepyautogui.keyDown('a')continueq2.put('finish')pyautogui.keyUp('a')self.keydown('d',15)self.back()return Trueelif G_n=='G_91.jpg':G_n = 'G_jm/jt_91.jpg'while self.is_sim(G_n,img2='back_i.jpg') is not True:if q1.empty() is False:return Nonecontinueq2.put('finish')time.sleep(3)self.keydown('d',4.5)self.aw(0.3)time.sleep(0.15)self.keydown('a',1.6)self.keydown('d',5.5)self.back()return True'''省略某些关卡代码'''else:print('增加 %s函数'%G_n)
死亡
def death(self):if self.is_sim('G_jm/siwang.jpg',img2='120.jpg') is not True:return Falseprint('你死了')self.click('G_jm/quxiao.jpg')return True
此下为本人实现某关操作的代码
整个的代码
爆枪英雄91关正常炼狱模式实现,需手动进入寒光市,之后无需操作,同时只给出了91关刷关代码,某些个人保存图片请私我,主要目的为学习,请尊重版权,请勿转发!!
# -*- coding: utf-8 -*-
import win32gui,time,pyautogui,cv2
import win32com.client
from PyQt5.QtWidgets import QApplication
import sys,os
from PIL import Image
import numpy as np
from multiprocessing import Process,Queueclass GameAssist:def __init__(self,classname,wdname):"""初始化"""self.shell = win32com.client.Dispatch("WScript.Shell")# 获取窗口句柄self.hwnd = win32gui.FindWindow(classname,wdname)if not self.hwnd:print("窗口找不到,请确认窗口句柄名称:【%s】" % wdname)exit()#窗口显示最前化self.SetAsForegroundWindow()win32gui.SetActiveWindow(self.hwnd)# 使得分辨率为1980x1080self.get_screen()# PyMouse对象,鼠标点击self.mouse = pyautoguidef SetAsForegroundWindow(self):#发送ALT键,ALT键使用&号表示self.shell.SendKeys('&')win32gui.SetForegroundWindow(self.hwnd)# 向左上跳def aw(self,t=0.2):pyautogui.keyDown('w')pyautogui.keyUp('w')pyautogui.keyDown('a')time.sleep(t)pyautogui.keyUp('a')# 回到主页面def back(self,M=True):time.sleep(0.2)B = self.get_position('G_jm/xitong.jpg',img2='back_i.jpg')pyautogui.mouseDown(B)pyautogui.mouseUp(B)time.sleep(0.2)B = self.get_position('G_jm/tuichu.jpg',img2='back_i.jpg')pyautogui.mouseDown(B)pyautogui.mouseUp(B)time.sleep(0.2)B = self.get_position('G_jm/queding.jpg',img2='back_i.jpg')pyautogui.mouseDown(B)pyautogui.mouseUp(B)time.sleep(0.2)if M is True:while self.is_sim('G_jm/chj.jpg',img2='back_i.jpg') is not True:continueself.mouse.click(1250,330)return Truedef click(self,img=''):'''点击图像'''A = self.get_position(img1=img)x = A[0]y = A[1]self.mouse.click(x,y)# 判断是否死亡def death(self):if self.is_sim('G_jm/siwang.jpg',img2='120.jpg') is not True:return Falseprint('你死了')self.click('G_jm/quxiao.jpg')return True# 向右上跳def dw(self,t=0.2):pyautogui.keyDown('w')pyautogui.keyUp('w')pyautogui.keyDown('d')time.sleep(t)pyautogui.keyUp('d')def finish(self,G_n='',q1=Queue(),q2=Queue()):'''判断是否完成关卡----------G_n : 关卡名. The default is ''.q1 : 队列,用来停止相关进程. The default is Queue().q2 : 队列,用来停止相关进程. The default is Queue().''' if G_n=='G_91.jpg':G_n = 'G_jm/jt_91.jpg'while self.is_sim(G_n,img2='back_i.jpg') is not True:if q1.empty() is False:return Nonecontinueq2.put('finish')time.sleep(3)self.keydown('d',4.5)self.aw(0.3)time.sleep(0.15)self.keydown('a',1.6)self.keydown('d',5.5)self.back()return True# 判断背包是否满def full(self,J=True,Y=1):'''----------J : Bool, 是否对基因体操作. The default is True.Y : str, 默认为对武器一键拆解. The default is 1.基因体仅支持一键分解,装备为一键卖出.'''time.sleep(3)self.click('P_xtjm/beibao.jpg')time.sleep(0.1 )# 武器time.sleep(0.1)self.mouse.click(1080,330)time.sleep(0.1)if Y==1:self.mouse.click(1350,915)time.sleep(0.1)else:self.mouse.click(1350,875)time.sleep(0.1)self.click('G_jm/queding.jpg')self.click('G_jm/queding.jpg')# 装备time.sleep(0.5)self.mouse.click(1170,330)time.sleep(0.1)self.mouse.click(1350,875)time.sleep(0.1)self.click('G_jm/queding.jpg')time.sleep(0.1)if J is True:# 基因体time.sleep(0.5)self.mouse.click(1360,330)time.sleep(0.1)self.mouse.click(1350,915)time.sleep(0.1)self.click('G_jm/queding.jpg')time.sleep(0.1)time.sleep(0.5)self.click('P_xtjm/beibao.jpg')def get_in(self,G_n='',M_n='',N_n='',G=True):'''G_n : str,关卡名,G_90.jpgM_n : str,模式名,M_zhch.jpg,N_n : str,难度,N_ly.jpg,仅M_n为M_wj.jpg时不需此参数G_n : Bool,是否需要召唤队友'''G_n = 'P_xtjm/%s'%G_nM_n = 'P_xtjm/%s'%M_ntime.sleep(1)self.click(G_n)time.sleep(1)self.click(M_n) if M_n!='P_xtjm/M_wj.jpg':N_n = 'P_xtjm/%s'%N_nself.click(N_n)else:self.click('G_jm/queding.jpg')G = Falsewhile self.is_sim('G_jm/yi_jr.jpg') is not True:continueif G_n=='P_xtjm/G_94.jpg':self.keydown('a',2)if G_n=='P_xtjm/G_89.jpg':self.keydown('a',3)if G_n=='P_xtjm/G_96.jpg':pyautogui.keyDown('a')time.sleep(4)self.keydown('e',t=0.2)pyautogui.keyDown('s')time.sleep(4)pyautogui.keyUp('a')pyautogui.keyDown('d')time.sleep(8)pyautogui.keyUp('d')pyautogui.keyUp('s')self.keydown('e',t=0.2)self.keydown('e',t=0.2)self.keydown('d')self.mouse.click(1200,500)G = Falsepassif G is True:time.sleep(0.5)self.keydown('g')def get_position(self,img1,img2='123.jpg',s=0.75,M=True,K=False):'''当K为True时,用于返回进行rgb判断的数组----------img1 : 路径名,需要在屏幕上查找的图片DESCRIPTION.img2 : 截图时临时存放位置. The default is '123.jpg'.s : 不大于1的正数,传递给is_sim函数.M : BOOL, optional为False时,未查找到返回(100,100)点. The default is True.K : 是否用于进行rgb搜索. The default is False.Returns-------(X,Y) 图像中心点坐标'''while self.is_sim(img1=img1,img2=img2,s=s) is not True:if M is True and K is not True:continueelse:return (100,100)self.get_screen(img2)d = Image.open(img1).sizeim = cv2.imread(img1,0)im2 = cv2.imread(img2,0)res = cv2.matchTemplate(im2,im,cv2.TM_CCOEFF_NORMED)loc = np.where(res==res.max())X = int(loc[1]+d[0]/2)Y = int(loc[0]+d[1]/2)if K is True:im = cv2.imread('F:\Python/fuzhu/%s'%img2)im = im[max(0,int(loc[0])):min(1980,int(loc[0]+d[1])),max(0,int(loc[1])):min(1980,int(loc[1]+d[0])),:]return imelse:return (X,Y)# 获得矩形位置截屏def get_screen(self,img2='123.jpg'):'''Parameters----------img2 : 图片存储路径. The default is '123.jpg'.'''app = QApplication(sys.argv)screen = QApplication.primaryScreen()img = screen.grabWindow(QApplication.desktop().winId()).toImage()img.save('{:s}'.format(img2))def is_sim(self,img1='',img2='123.jpg',s=0.75):'''判断img2里是否有img1----------img1 : The default is ''.img2 : The default is '123.jpg'.s : 匹配最小值. The default is 0.75.'''img1 = cv2.imread(img1,0)self.get_screen(img2)img2 = cv2.imread(img2,0)res = cv2.matchTemplate(img2,img1,cv2.TM_CCOEFF_NORMED)if res.max()<s:return Falsereturn Truedef jineng(self):'''直接按下键盘'''K = ['f','1','2','3','4','5','6','7','0']for i in K:self.keydown(i,0.3)time.sleep(0.1)def keydown(self,J='',t=1):pyautogui.keyDown(J)time.sleep(t)pyautogui.keyUp(J)def need_c(self):if self.is_sim('c.jpg',s=0.88) is True:self.keydown('c',0.2)def search_rgb(self,img1='',img2='',size=(256,256)):'''Parameters----------img1 : 来源于get_position. The default is ''.img2 : 来源于存储图片. The default is ''.size : 进行比较时统一大小. The default is (256,256).Returns-------n : 相似值'''# 计算单通道的直方图的相似值def calculate(image1, image2):hist1 = cv2.calcHist([image1], [0], None, [256], [0.0, 255.0])hist2 = cv2.calcHist([image2], [0], None, [256], [0.0, 255.0])# 计算直方图的重合度degree = 0for i in range(len(hist1)):if hist1[i] != hist2[i]:degree = degree + (1 - abs(hist1[i] - hist2[i]) / max(hist1[i], hist2[i]))else:degree = degree + 1degree = degree / len(hist1)return degreedef classify_hist_with_split(image1, image2, size=size):# 将图像resize后,分离为RGB三个通道,再计算每个通道的相似值image1 = cv2.resize(image1, size)image2 = cv2.resize(image2, size)sub_image1 = cv2.split(image1)sub_image2 = cv2.split(image2)sub_data = 0for im1, im2 in zip(sub_image1, sub_image2):sub_data += calculate(im1, im2)sub_data = sub_data / 3return sub_dataim1 = img1im2 = cv2.imread(img2)n = classify_hist_with_split(im1,im2,size=size)return ndef Break(q1=Queue(),q2=Queue()):'''True 表示可以break'''order = q2.get()q2.put(order)if q1.empty() is False:return Trueelif order=='finish':return Truedef shot(q1=Queue(),q2=Queue(),G=''):if G=='G_91':pyautogui.mouseDown(1195,360)while Break(q1,q2) is not True:demo.need_c()pyautogui.mouseUp(1195,360)def process_job(name,q1,q2,x=[]):'''Parameters----------q1 : TYPE当获得None值时,该函数退出,None由死亡或过关写入.q2 : TYPE'in'表示已进入关内,'main'表示开始可进入关,'finishi'已完成关卡.'''while True:if name=='death':if demo.death() is True:q1.put(None)print('已死亡')breakif q1.empty() is False:breakelif name=='finish':if q2.empty() is not True:A = demo.finish(G_n=x[0],q1=q1,q2=q2)if A is True:q1.put(None)print(name,'结束',os.getpid(),os.getppid())breakelif A is None:print(name,'结束',os.getpid(),os.getppid())breakelif name=='in_guan':if q2.empty() is not True:print(name,'is starting',os.getpid(),os.getppid())while True:demo.jineng()if Break(q1,q2) is True:print(name,'结束',os.getpid(),os.getppid())breakbreakelif name=='shot':if q2.empty() is not True:print(name,'is starting',os.getpid(),os.getppid())shot(q1,q2,G=x[0])print(name,'结束',os.getpid(),os.getppid())breakelse:print('未设置该',name,'函数')classname = 'Chrome_WidgetWin_1'
wdname = u'爆枪英雄,4399爆枪英雄,爆枪英雄小游戏,4399小游戏 - 个人 - Microsoft Edge'
demo = GameAssist(classname,wdname)
if __name__=='__main__' and 1==1:'''demo.get_in()参数修改对参数args('finish 中最后一项改变')''''''本周该做 无尽/91关刷零件(日至少20)/96关宝石(日至少20)/装备碎片'''for i in range(1,71):if i%2==0:demo.full()q1,q2 = Queue(),Queue()demo.get_in('G_91.jpg','M_zhch.jpg','N_ly.jpg')q2.put('in')p2 = Process(target=process_job, args=('in_guan',q1,q2,))p4 = Process(target=process_job,args=('death',q1,q2,))p1 = Process(target=process_job,args=('finish',q1,q2,['G_91.jpg'],))p0 = Process(target=process_job,args=('shot',q1,q2,['G_91']))p0.start()p2.start()p4.start()p1.start()p0.join()p4.join()p2.join()p1.join()p0.join()
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- eclipse idea 代码规范插件
一、环境准备 1、安装代码规范插件 eclipse安装方式: 摘自https://blog.csdn.net/qq_32448349/article/details/81744418 打开Help -> Install New Software -> work with填入https://p3c.alibaba.com/plugin/eclipse/update 把自动更新去掉不然安装不了 …...
2024/4/21 21:22:29 - 嘿嘿,我的读者拿到阿里offer,复盘他的时间轴
作者:程序员小跃 上周六晚上,我在家里刷着群消息,忽然一条私信过来:跃哥,最近拿到了阿里的 offer。虽然只是阿里的意向书,但是也表明这位同学的努力得到了回报。 一时间,当我把这个喜悦分享到群…...
2024/4/21 21:53:37 - 安防视频监控系统视频上云解决方案EasyCVR语音转发功能音频数据打包发送流程介绍
目前我们的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍、Ehome协议调用流程介绍。 EasyCVR语音转发功能音频数据打包发送流程 1、数据整…...
2024/4/23 13:27:46 - ArcGIS 10.2安装教程
安装包文件: 一,安装许可 安装好后,先停止服务 二,安装ArcGIS Desktop 单击setup,一路下一步即可,这里安装过程大概5-10分钟 三,启动服务 打开ArcGIS Administrator,安装产品 四&a…...
2024/4/21 21:53:35 - iMindMap12中文思维导图设计软件下载安装激活教程
iMindMap12是思维导图软件imindmap的最新版本,也是国内领先的思维导图设计软件,由创始人托尼巴赞(Tony Buzan)开发,结合着独特的自由形态头脑风暴视图模式和系统的思维导图视图模式,特别适用于头脑风暴、策…...
2024/4/21 21:09:49 - 大数据信息资料采集:运动场馆健身房体育锻炼商家数据信息采集
大数据信息资料采集:运动场馆健身房体育锻炼商家数据信息采集 数据采集满足多种业务场景:适合产品、运营、销售、数据分析、政府机关、电商从业者、学术研究等多种身份职业。 舆情监控:全方位监测公开信息,抢先获取舆论趋势。 市场分析&…...
2024/4/29 9:46:49 - Win10 安装 Rational Rose 教程(亲自测试)
本内容主要借鉴于别人的博客,感兴趣的也可以去看他的博客 网址: https://blog.csdn.net/hdkvsyralkvv_hk/article/details/105330982 (1)先下载相关文件 链接: https://pan.baidu.com/s/1CBTOCiHnGNkmHG6osPIJiQ 提取码…...
2024/4/23 13:15:13 - node学习笔记之mongodb
mongoDB 这是一个数据库,与MySQL的区别就是,它是一个非关系型数据库 NoSql数据库 1.性能高、I/O处理快 2.速度快 3.稳定不好,占用空间大 1.安装MongoDB 下载对应版本的mongodb来进行安装,安装的后注意需要手动设置数据库的位置…...
2024/4/24 21:40:31 - 软件设计原则-开闭原则
开闭原则开闭原则定义开闭原则应用案例说明开闭原则定义 开闭原则是Java世界里最基础的设计 原则,它指导我们如何建立一个稳定的、灵活的系统,定义如下: Software entities like classes,modules and functions should be open for extensio…...
2024/4/28 4:54:18 - Maven与JDK环境变量配置
由于Maven是依赖JDK使用的,所以我们的电脑上需要安装 JDK1.7 版本 并且配置好环境变量,我这边使用的是 JDK8 相关版本。然后再配置Maven的 好啦,废话讲完,上干货 JDK配置环境变量,右击此电脑,选择并点击属…...
2024/4/26 13:23:48 - flax布局
flax布局 flax布局:Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为 Flex 布局。行内元素也可以使用 Flex 布局。Webkit 内核的浏览器,必须加上-webkit前缀。注意&#…...
2024/5/1 3:27:54 - 数通部门软开9.16凉经
一面:1h10min 预约的2点,2:25之后开始。 1.自我介绍,项目。 2.说完然后直接题目发过来,题目大概是: 有本词根的词典 “an me cat ”, 有个句子 “I was meeting another cattey” 句子和词根都是…...
2024/4/21 21:53:31 - 致远OA二开整理(基础版,本地环境搭建,插件project设置,页面引入外部js文档)
最近在看致远OA开发相关,顺便整理了分文档(基础的)。 关注下方公众号 回复“致远OA”免费获取。...
2024/4/27 19:33:41 - Linux Tomcat配置jks格式证书
在Tomcat的conf 目录下生成p12证书 openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name server 在Tomcat的conf 目录下通过p12证书,生成jks证书 keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -destkeystore…...
2024/4/24 22:33:35 - 打开python的IDLE
打开python的IDLE #找到安装python的文件 在目录下找到Lib目录 这里写自定义目录标题打开python的IDLE欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创…...
2024/4/21 21:53:29 - LintCode 1308. 因子组合 Python算法
描述 数字可以被视为其因数的乘积。 例如, 8 2 x 2 x 2; 2 x 4。 编写一个函数,可以输入整数n并返回其因子的所有可能组合。 说明 您可以假设n总是正数。 因数应大于1且小于n。 样例 - 样例1输入: 12 输出: [[2, 6],[2, 2, 3],[3, 4] ] 解释: 2*…...
2024/5/4 15:36:05 - 异步非阻塞的艺术,java并发库中CompletableFuture使用,及python库tornado使用对比
老猿猿应该都用过guava的ListenableFuture,现在大家都用CompletableFuture了 使用案例地址 (并发处理任务,并且汇总结果后统一处理数据): https://download.csdn.net/download/u011643716/12828671 JDK1.8中的Comp…...
2024/4/21 12:35:35 - SpringCloud——zuul
概述 Netflix Zuul是一个API网关,它的主要功能是提供网关服务。Netflix Zuul提供了一系列不同类型的过滤器(Filter),通过这些过滤器,系统维护人员能够快速灵活地过滤服务、限制流量、实现服务器的负载均衡,从而避免外部请求冲垮微…...
2024/4/26 23:18:24 - gcc版本切换python版本切换
目录 gcc版本切换 python版本切换1 python版本切换2 gcc版本切换 查看系统已装gcc ls /usr/bin/gcc* 系统ubuntu18.04,预装gcc7和gcc6,因需要安装gcc4.8 sudo apt-get install gcc-4.8 gcc-4.8-multilib sudo apt-get install g-4.8 g-4.8-multil…...
2024/5/2 11:39:55 - 无刷无霍尔BLCD电机控制(转)
1.概述 无霍尔的BLDC控制方案与有霍尔BLDC的基本原理相似,都是用所谓“六步换向法”,根据转子当前的位置,按照一定的顺序给定子绕组通电使BLDC电机转动。所不同的是无霍尔BLDC不需要霍尔效应传感器,通过检测定子绕组的反电动势过零…...
2024/5/2 18:59:37
最新文章
- 基于Springboot的校园食堂订餐系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的校园食堂订餐系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…...
2024/5/4 16:25:59 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 【Locust分布式压力测试】
Locust分布式压力测试 https://docs.locust.io/en/stable/running-distributed.html Distributed load generation A single process running Locust can simulate a reasonably high throughput. For a simple test plan and small payloads it can make more than a thousan…...
2024/5/3 13:02:07 - 【干货】零售商的商品规划策略
商品规划,无疑是零售业的生命之源,是推动业务腾飞的强大引擎。一个精心策划的商品规划策略,不仅能帮助零售商在激烈的市场竞争中稳固立足,更能精准捕捉客户需求,实现利润最大化。以下,我们将深入探讨零售商…...
2024/5/1 13:01:46 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/4 12:05:22 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/4 11:23:32 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/4 14:46:16 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/3 16:00:51 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/4 12:10:13 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/3 21:22:01 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/3 23:17:01 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/4 14:46:12 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/4 14:46:11 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/4 14:46:11 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/4 2:14:16 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/3 16:23:03 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/4 12:39:12 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/4 13:16:06 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/3 14:57:24 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/4 14:46:05 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/4 2:00:16 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/3 22:03:11 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/4 9:07:39 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/4 14:46:02 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57