文章目录

  • 1. 需要的库
  • 2. js接口调用部分
    • 每日报平安 post.py
    • 早中午检
    • 以上所需字典文件 xg_json_bean.py
  • 3. 程序调用 start.py
  • 4. 定时启动
  • 5. 网页建站
    • 后端调用
      • 添加账号
        • 添加账号到临时列表
        • 更新临时列表到工作列表
      • 小功能
        • 单次填写
        • 检查是否填写过
    • 网站部分

分析过程省略
代码蹩脚结构混乱不想改
webdriver版效率太低废弃了,没有放进来,推荐列表里有其他同学写的
因为建站方案问题,使用了部分绝对地址,建议根据实际情况修改

1. 需要的库

忘了哪些是自带的了,自己根据报错去装吧,或者直接pycharm自动识别

2. js接口调用部分

每日报平安 post.py

功能为单次提交,服务器没有校验,漏卡可以自定义日期后提交
单人或少数人使用直接修改此部分,参考单次填写,第3节可忽略不看

import requests
import json
import time
import random
import datetime
from xg_json_bean import JBXX_JSON
from xg_json_bean import MRQK_JSON
from xg_json_bean import DATA_JSON
proxies = {'http': '127.0.0.1:1080'}
proxies = {}
#headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE"}
class AutoRobot:def __init__(self):passdef Login(self,username,password):#登录并进入应用session = requests.Session()self.session = sessionuserInfo={'userName': username,'password': password,'isWeekLogin': 'false','verifyCode': ''}loginUrl = "http://xgfx.bnuz.edu.cn/xsdtfw/sys/emapfunauth/loginValidate.do"loginRes = session.post(loginUrl, userInfo,proxies=proxies)#loginData = json.loads(loginRes.text)#loginData = loginData['validate']loginData = loginRes.text#print(loginData)if 'success' in loginData:loginData = 'success'passelif '用户名' in loginData:return '用户名或者密码不正确'elif '验证码' in loginData:return '验证码不正确'else:return '连接错误请重试'#print(loginRes.text.encode('utf8'))#print(mysession.cookies.get_dict())  #打印cookie   cookie转化为一个字典appUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/emaphome/appShow.do?id=d1a203e154ba4216bc84556cefe6f570'appRes = session.get(appUrl,proxies=proxies)return loginDatadef Cheak(self):#检查是否填写session = self.sessioncheakUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/xsyqxxsjapp/mrbpa/checkFilled.do'cheakRes = session.post(cheakUrl,proxies=proxies)#print(cheakRes.text)cheakData = json.loads(cheakRes.text)cheakData = cheakData['data']#print(len(cheakData))if len(cheakData) == 0:return Falseelse:return Truedef GenenateWID(self):s = '01234567890abcdef'wid = ''for i in range(32):wid+=random.choice(s)return widdef LoadData(self):#获取json数据session = self.sessionjbxxUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/xsyqxxsjapp/modules/mrbpa/mrbpabd.do'jbxxRes = session.post(jbxxUrl,proxies=proxies)#print(mrqkRes.text)jbxxData = json.loads(jbxxRes.text)jbxxData = jbxxData['datas']['mrbpabd']['rows'][0]self.jbxxData = jbxxData#print(jbxxData)mrqkUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/xsyqxxsjapp/mrbpa/getJbxx.do'mrqkRes = session.post(mrqkUrl,proxies=proxies)#print(jbxxRes.text)mrqkData = json.loads(mrqkRes.text)mrqkData = mrqkData['data']#print(mrqkData)self.mrqkData = mrqkDataself.WID = self.GenenateWID()#print(self.WID)def DataDeal(self):#重新打包jsonjbxxData = self.jbxxDatamrqkData = self.mrqkDataWID = self.WID#去除none#print(jbxxData)#print(mrqkData)for key in JBXX_JSON:if not key in jbxxData.keys():jbxxData[key] = ''elif jbxxData[key] == None:jbxxData[key] = ''for key in MRQK_JSON:if not key in mrqkData.keys():mrqkData[key] = ''elif mrqkData[key] == None:mrqkData[key] = ''JBXX_JSON['XH']             = jbxxData['XH']JBXX_JSON['XM']             = jbxxData['XM']JBXX_JSON['XBDM_DISPLAY']   = jbxxData['XBDM_DISPLAY']JBXX_JSON['XBDM']           = jbxxData['XBDM']JBXX_JSON['SFZJH']          = jbxxData['SFZJH']JBXX_JSON['DWDM_DISPLAY']   = jbxxData['DWDM_DISPLAY']JBXX_JSON['DWDM']           = jbxxData['DWDM']JBXX_JSON['ZYDM']           = jbxxData['ZYDM']JBXX_JSON['BJDM']           = jbxxData['BJDM']JBXX_JSON['LXDH']           = jbxxData['LXDH']JBXX_JSON['GJDQ_DISPLAY']   = jbxxData['GJDQ_DISPLAY']JBXX_JSON['GJDQ']           = jbxxData['GJDQ']JBXX_JSON['SZDQ_DISPLAY']   = jbxxData['SZDQ_DISPLAY']JBXX_JSON['SZDQ']           = jbxxData['SZDQ']JBXX_JSON['RYLB_DISPLAY']   = jbxxData['RYLB_DISPLAY']JBXX_JSON['RYLB']           = jbxxData['RYLB']JBXX_JSON['JJLXR']          = jbxxData['JJLXR']JBXX_JSON['JJLXRDH']        = jbxxData['JJLXRDH']JBXX_JSON['JJLXRJG_DISPLAY']= jbxxData['JJLXRJG_DISPLAY']JBXX_JSON['JJLXRJG']        = jbxxData['JJLXRJG']JBXX_JSON['JQQK_DISPLAY']   = jbxxData['JQQK_DISPLAY']JBXX_JSON['JQQK']           = jbxxData['JQQK']JBXX_JSON['SFDFHB_DISPLAY'] = jbxxData['SFDFHB_DISPLAY']JBXX_JSON['SFDFHB']         = jbxxData['SFDFHB']JBXX_JSON['JTXXDZ_DISPLAY'] = jbxxData['JTXXDZ_DISPLAY']JBXX_JSON['JTXXDZ']         = jbxxData['JTXXDZ']JBXX_JSON['XXDZ']           = jbxxData['XXDZ']JBXX_JSON['XSBH']           = jbxxData['XSBH']        MRQK_JSON['WID']            = WID#MRQK_JSON['BRJKZT_DISPLAY']= mrqkData['BRJKZT_DISPLAY']#MRQK_JSON['BRJKZT']        = mrqkData['BRJKZT']MRQK_JSON['XSBH']           = mrqkData['XSBH']MRQK_JSON['TBSJ']           = datetime.datetime.now().strftime('%Y-%m-%d')MRQK_JSON['TW']             = str(random.choice([36, 36.1, 36.2, 36.3, 36.4, 36.5, 36.6, 36.7, 36.8]))MRQK_JSON['MRSZDQ']         = mrqkData['MRSZDQ']MRQK_JSON['MRSZDQ_DISPLAY'] = mrqkData['MRSZDQ_DISPLAY']MRQK_JSON['MRXXDZ']         = mrqkData['MRXXDZ']#MRQK_JSON['JKZM']          = mrqkData['JKZM']#print(json.dumps(DATA_JSON, ensure_ascii=False))#处理成转义字符jbxxStr = json.dumps(JBXX_JSON, ensure_ascii=False)mrqkStr = json.dumps(MRQK_JSON, ensure_ascii=False)jbxxStrT = ''mrqkStrT = ''for c in jbxxStr:if c == '"':jbxxStrT += '\\"'else:jbxxStrT += cfor c in mrqkStr:if c == '"':mrqkStrT += '\\"'else:mrqkStrT += cjbxxStr = jbxxStrTmrqkStr = mrqkStrTdata = '{"JBXX":"' + jbxxStrT + '","MRQK":"' + mrqkStrT + '"}'#print(data)return datadef Submit(self,data):session = self.sessionsumitData={'data': data}sumitUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/xsyqxxsjapp/mrbpa/saveMrbpa.do'sumitRes = session.post(sumitUrl,sumitData,proxies=proxies)sumitData = json.loads(sumitRes.text)return sumitData['msg']def AutoFill(self,username,password):loginSta = self.Login(username,password)#print(loginSta)if loginSta == 'success':passelif '用户名' in loginSta or '验证码' in loginSta:return loginStaelse:return '连接错误'try:fillSte = self.Cheak()except Exception as e:print(e)return '用户异常'if fillSte:return '已填跳过'passelse:passtry:self.LoadData()data = self.DataDeal()except Exception as e:print(e)return '数据异常'submitSta = self.Submit(data)#print(submitSta)self.session.close()if '成功' in submitSta:return '填写完成'else:print(submitSta)return '上传异常'

早中午检

只有robot,服务器没有重复校验,多次提交会有多个记录

class AutoRobot:def __init__(self):passdef Login(self,username,password):#登录并进入应用session = requests.Session()self.session = sessionuserInfo={'userName': username,'password': password,'isWeekLogin': 'false','verifyCode': ''}loginUrl = "http://xgfx.bnuz.edu.cn/xsdtfw/sys/emapfunauth/loginValidate.do"loginRes = session.post(loginUrl, userInfo,proxies=proxies)#loginData = json.loads(loginRes.text)#loginData = loginData['validate']loginData = loginRes.text#print(loginData)if 'success' in loginData:passelse:return loginData#print(loginRes.text.encode('utf8'))#print(mysession.cookies.get_dict())  #打印cookie   cookie转化为一个字典appUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/swpubapp/MobileCommon/getMenuInfo.do'appInfo = {'data' : '{"APPID":"5811260348942403","APPNAME":"swmxsyqxxsjapp"}'}appRes = session.post(appUrl,appInfo,proxies=proxies)return loginDatadef Cheak(self):# 检查是否填写session = self.sessioncheakUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/swmxsyqxxsjapp/modules/schoolTemperature/getStuTwList.do'nowTime = datetime.datetime.now().strftime('%Y-%m-%d')cheakInfo = {'data':'{"pageNumber": 1,"pageSize": 10,"CLRQ":'+nowTime+'}'}cheakRes = session.post(cheakUrl, cheakInfo, proxies=proxies)#print(cheakRes.text)cheakData = json.loads(cheakRes.text)cheakData = cheakData['data']stateWID = [False,False,False]for cheakWID in cheakData:#print(cheakWID['WID'])WIDUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/swmxsyqxxsjapp/modules/schoolTemperature/getStuTwDetail.do'WIDInfo = {'data': '{"WID":"'+ cheakWID['WID'] +'"}'}WIDRes = session.post(WIDUrl, WIDInfo, proxies=proxies)WIDData = json.loads(WIDRes.text)['data']['PCMC']if('晨'in WIDData):stateWID[0] = Trueelif('午'in WIDData):stateWID[1] = Trueelif ('晚' in WIDData):stateWID[2] = True#     print(WIDData)# print(stateWID)return stateWIDdef GetData(self):session = self.sessiondataUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/swmxsyqxxsjapp/modules/schoolTemperature/queryTemperatureInfo.do'dataInfo = {'data':'{}'}dataRes = session.post(dataUrl, dataInfo, proxies=proxies)dataData = json.loads(dataRes.text)dataData = dataData['data']self.dataData = dataData# print(dicta)def DataDeal(self):time = self.timedataData = self.dataDatadicta = dataData[time]dicta.update({'CLTW': str(random.choice([36.2, 36.3, 36.4, 36.5, 36.6, 36.7, 36.8, 36.9]))})self.dataData = dictadef Submit(self):session = self.sessionsubmitStr = json.dumps(self.dataData, ensure_ascii=False)sumitData={'data': submitStr}sumitUrl = 'http://xgfx.bnuz.edu.cn/xsdtfw/sys/swmxsyqxxsjapp/modules/schoolTemperature/saveSchoolTempl.do'sumitRes = session.post(sumitUrl,sumitData,proxies=proxies)sumitData = json.loads(sumitRes.text)#print(self.dataData['XM'],end='\t')self.session.close()return sumitData['msg']def AutoFill(self,username,password,time):self.time = timeloginSta = self.Login(username,password)#print(loginSta)if 'success' in loginSta:passelif '用户名' in loginSta or '验证码' in loginSta:return loginStaelse:print(loginSta)return '连接错误'fillSta = self.Cheak()if fillSta[time]:return '已填跳过'else:passself.GetData()if len(self.dataData) == 0:return '用户组错误'else:passself.DataDeal()self.Submit()return '填写完成'

以上所需字典文件 xg_json_bean.py

import json
JBXX_JSON = {'XH':'','XM':'','XBDM_DISPLAY':'','XBDM':'','SFZJH':'','XZNJ':'','DWDM_DISPLAY':'','DWDM':'','ZYDM':'','BJDM':'','LXDH':'','GJDQ_DISPLAY':'','GJDQ':'','SZDQ_DISPLAY':'','SZDQ':'','RYLB_DISPLAY':'','RYLB':'','JJLXR':'','JJLXRDH':'','JJLXRJG_DISPLAY':'','JJLXRJG':'','JQQK_DISPLAY':'','JQQK':'','GCKSRQ':'','GCJSRQ':'','SFDFHB_DISPLAY':'','SFDFHB':'','DFHTJHBSJ':'','JTXXDZ_DISPLAY':'','JTXXDZ':'','XXDZ':'','ZDRQJCQK':'','JTXC':'','JQQTQK':'','XSBH':''
}MRQK_JSON = {'WID':'','BRJKZT_DISPLAY':'','BRJKZT':'','SFJZ_DISPLAY':'','SFJZ':'','JTCYJKZK_DISPLAY':'','JTCYJKZK':'','XLZK_DISPLAY':'','XLZK':'','QTQK':'','XSBH':'','TBSJ':'','TW':'','MRSZDQ_DISPLAY':'','MRSZDQ':'','MRXXDZ':'','BY1':'','SFFRHKS_DISPLAY':'否','SFFRHKS':'0','SFFRHKSQKSM':'','SFQGJCHB_DISPLAY':'否','SFQGJCHB':'0','SFQGJCHBSQKSM':'','SFJCQZ_DISPLAY':'否','SFJCQZ':'0','SFJCQZQKSM':'','SFQZHYS_DISPLAY':'否','SFQZHYS':'0','SFQZHYSQKSM':'','SFBGL_DISPLAY':'否','SFBGL':'0','SFBGLQKSM':'','JKZM':''
}DATA_JSON = {'JBXX':JBXX_JSON,'MRQK':MRQK_JSON
}

3. 程序调用 start.py

此段带账号管理,无多人或建站需求可以忽略

import sys
import time
import random
import datetime
from post import AutoRobotdef Start(addr):robot = AutoRobot()with open(addr + 'UserList.txt', 'r', encoding='utf-8') as f:users_info = [x.rstrip().split() for x in f.readlines()]if len(users_info) == 0:print("void\r\n")return FalseinvalidAccount = []retry = Falsefor user, pwd in users_info:try:sta = robot.AutoFill(user, pwd)if '用户名'in sta:invalidAccount.append(user)elif '验证码'in sta or '连接错误' in sta:retry = Trueexcept Exception as e:print(e)sta = '程序异常'robot.session.close()retry = Trueprint(user,sta)Log(datetime.datetime.now().strftime('%H:%M') + '\t' + user + '\t' + sta + '\n')DeletInvalidAccount(addr,users_info,invalidAccount)return retrydef Log(log):nowTime = datetime.datetime.now().strftime('%m-%d')  # 现在f=open(".\\LOG\\signlog-{}.txt".format(nowTime), 'a', encoding='utf-8')f.write(log)f.close()def DeletInvalidAccount(addr, srcList, account):if len(account) == 0:returnprint('发现密码错误')with open(addr + 'UserList.txt',"w",encoding="utf-8") as f:for user, pwd in srcList:if user in account:continuef.write(user +  ' ' + pwd + '\n')#if __name__ == "__main__":
#    Start('C:\web\\')

4. 定时启动

可以设置系统任务定时启动
因为挂在服务器不用考虑太多,直接写了个程序,顺便加上简单的出错重试机制

import sys
sys.path.append('C:/web')
import time
import datetime
from start import Startretry = True
delayTime = 0;
THO = 0
TMO = 0
CH = 10
CM = 0def CountTime(hm,nh,nm,de):while de > 60:de = de - 60nh = nh + 1nm += deif nm >=60:nm -= 60nh += 1if hm:return nhelse:return nm
def getDelay():return ((int(datetime.datetime.now().strftime('%H')) - CH) * 60) + int(datetime.datetime.now().strftime('%M')) + 30def isTime(H,M,D):if H == CountTime(True,CH,CM,D) and M == CountTime(False,CH,CM,D):return Trueelse:return False
#Start('C:\my\\')
#updateUser()
#Start('C:\web\\')#test
while True:nowH = int(datetime.datetime.now().strftime('%H'))nowM = int(datetime.datetime.now().strftime('%M'))#print(nowH,nowM)if not TMO == (nowM//10):#print(nowH,nowM)TMO = (nowM//10)#if nowH == 0 and nowM == 0://建站时需要使用#    print('更新用户')#    updateUser()#    time.sleep(60)if isTime(nowH, nowM, delayTime):print((datetime.datetime.now().strftime('%m')) + '-' + (datetime.datetime.now().strftime('%d')) + "  " + (datetime.datetime.now().strftime('%H')) + ":"  + (datetime.datetime.now().strftime('%M')) + '开始填写')delayTime = 0retry = Start('C:\web\\')if retry:delayTime = getDelay()print((datetime.datetime.now().strftime('%m')) + '-' + (datetime.datetime.now().strftime('%d')) + "  " + (datetime.datetime.now().strftime('%H')) + ":"  + (datetime.datetime.now().strftime('%M')) + '填写结果' + str(not retry))time.sleep(60)if delayTime > 720:delayTime = 0time.sleep(30)#if nowH == 23 or nowH == 0 or nowH == 1 or nowH == 2:#    time.sleep(1)#else:#    time.sleep(abs(nowH - 8) * 10)

5. 网页建站

后端调用

添加账号

添加账号到临时列表

后端调用入口,命令行调用

import sys
sys.path.append('C:\\web')
#from Logfile import Logif __name__ == "__main__":try:#Log(str(sys.argv[1]) + '\t Add\n')f=open('C:\\web\\userListNew.txt', 'a', encoding='utf-8')f.write(str(sys.argv[1])+ '\t' + str(sys.argv[2])+ '\n')f.close()print('完成')except:print('失败')
更新临时列表到工作列表

调用位置为上一节定时任务

import sys
import datetimeif __name__ == "__main__":nowTime = datetime.datetime.now().strftime('%Y-%m-%d')fb=open("C:\\web\\UserBak-{}.txt".format(nowTime), 'a', encoding='utf-8')users_info = []with open('C:\\web\\UserList.txt', 'r', encoding='utf-8') as fl:for x in fl.readlines():line = x.rstrip().split()if len(line)==0:continueusers_info.append(line[0])fb.write(line[0] +  ' ' + line[1] + '\n')#print(users_info)fb.close()with open('C:\\web\\UserListNew.txt', 'r', encoding='utf-8') as f:users_info_new = [x.rstrip().split() for x in f.readlines()]with open('C:\\web\\UserList.txt',"a",encoding="utf-8") as fs:for user, pwd in users_info_new:if user in users_info:continuefs.write(user +  ' ' + pwd + '\n')with open('C:\\web\\UserListNew.txt', 'w', encoding='utf-8') as f:pass

小功能

单次填写
import sys
sys.path.append('C:\\web')
#from Logfile import Log
from post import AutoRobotif __name__ == "__main__":#Log(str(sys.argv[1]) + '\t oneTime\n')try:robot = AutoRobot()print(robot.AutoFill(str(sys.argv[1]), str(sys.argv[2])))except Exception as e:print(str(e))
检查是否填写过
import sys
sys.path.append('C:\\web')
#from Logfile import Log
from post import AutoRobotif __name__ == "__main__":#Log(str(sys.argv[1]) + '\t cheakFill\n')try:robot = AutoRobot()robot.Login(str(sys.argv[1]), str(sys.argv[2]))sta = robot.Cheak()if sta:print('已经填写')else:print('未填写')except Exception as e:print(str(e))

。。。。。。

网站部分

实际网站部分暂时不想整理

BNUZ自动打卡系统相关推荐

  1. Python进行网页自动打卡系统

    Python进行网页自动打卡系统 安装Python 下载Chromedriver 安装selenium 设置定时自动运行 Python程序 安装Python 可以直接Python官网下载,需要进行路径 ...

  2. 全球某工商云战役自动打卡系统

    文章目录 前言 一.python连接打卡网站实现自动批量打卡 1.代码 2.关键部分分析 二.定时启动打卡程序 1.腾讯服务器 2.使用linux+crontab添加定时启动项 三.每日报送成功发送邮 ...

  3. 自动判卷 、答题卡识别、六级答题卡客观题自动判卷系统1.0

    自动判卷 .答题卡识别.六级答题卡客观题自动判卷系统1.0 一.前言 二.代码 三.处理原图片.以及效果图片 四.总结 一.引言: 1.本程序设计想法来源于一次四六级考试,因为六级没有好好准备,裸考上 ...

  4. bankPay_转卡系统/卡转卡系统/支付宝转卡系统/app自动回调

    全自动收款系统/转卡系统源码/银行卡自动收款/卡转卡代收系统/卡转卡支付系统/卡转卡系统源码/转卡系统监控/转卡收款系统源码 软件架构 ●使用vue.element-ui.spring-boot技术 ...

  5. 【NodeJs-5天学习】第三天实战篇② ——基于物联网的WiFi自动打卡考勤系统

    [NodeJs-5天学习]第三天实战篇② --基于物联网的WiFi自动打卡考勤系统 1. 前言 2.实现思路 2.1 NodeJs服务器代码 2.1.1 对接Express服务器 2.1.2 对接Ma ...

  6. 【物联网服务NodeJs-5天学习】第三天实战篇② ——基于物联网的WiFi自动打卡考勤系统

    [NodeJs-5天学习]第三天实战篇② --基于物联网的WiFi自动打卡考勤系统 1. 前言 2.实现思路 2.1 NodeJs服务器代码 2.1.1 对接Express服务器 2.1.2 对接Ma ...

  7. 【NodeJs-5天学习】第四天存储篇③ ——基于物联网的WiFi自动打卡考勤系统,升级存储为mysql,提醒功能改为QQ

    [NodeJs-5天学习]第四天存储篇③ --基于物联网的WiFi自动打卡考勤系统,升级存储为mysql,提醒功能改为QQ 1. 前言 2. 服务器代码 2.1 配置MySQL服务器 2.2 Node ...

  8. 【物联网服务NodeJs-5天学习】第四天存储篇③ ——基于物联网的WiFi自动打卡考勤系统,升级存储为mysql,提醒功能改为QQ

    [NodeJs-5天学习]第四天存储篇③ --基于物联网的WiFi自动打卡考勤系统,升级存储为mysql,提醒功能改为QQ 1. 前言 2. 服务器代码 2.1 配置MySQL服务器 2.2 Node ...

  9. 如何区分电梯卡为id卡ic卡_电梯ic卡系统与ID卡系统有什么区别

    电梯 ic 卡系统与 ID 卡系统有什么区别 现在很多地方乘坐电梯都需要刷卡,要不是刷卡进去乘坐电梯,就是进去电梯内刷卡. 很多人不清楚那个卡片属于什么类型.有些地方用 ic 卡有些地方用 ID 卡, ...

最新文章

  1. 一个用泛型隐式传递权限关键字的方法
  2. Hibernate之一级缓存和二级缓存
  3. zabbix-web前端配置
  4. workflow initialization - GSWFWC
  5. 一步步编写操作系统 27 处理器微架构之流水线简介
  6. python统计中文字符的个数_python统计中文字符数量的两种方法
  7. 训练日志 2018.10.11
  8. 为什么MediaPlayer中onCompletion()每次播放音频时都触发?
  9. Linux 命令(64)—— strings 命令
  10. Get value from agent failed: cannot connect to [[192.168.121.128]:10050]:[4]Interrupted systemctl ca
  11. Redux入门教程(快速上手)_day_01
  12. 使用_thread多线程模块ping主机代码
  13. springboot默认数据源如何设置连接数_Spring Boot学习:如何使用Druid数据源
  14. Geoserver使用CSS插件编辑Style样式
  15. 【CSAPP】二进制拆弹实验
  16. html表单的13种表单控件
  17. 百度算法发布历史列表
  18. Python冲击省一蓝桥杯 DFS集锦
  19. 电子政务信息交换平台与数据中心的构建(转)
  20. 谈谈老衲对闭包的理解!!综合了我在网上看的资料,把我的理解跟大家分享

热门文章

  1. 分布式:分布式系统设计实践。
  2. Uav开发杂记-4-无人机开发的C-C++
  3. JAVA企业面试题精选 数据库31-40
  4. Processing基本函数整理
  5. Otterctf 2018 内存取证
  6. OpenLayer仿天地图多时相
  7. [附源码]java毕业设计病历管理系统
  8. Excel合并单元格怎么分组排序?
  9. Hive基础之创建数据库
  10. 战双帕弥什qq登录服务器未响应是什么意思,战双帕弥什qq登录