首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
13,307 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
10,905 阅读
3
gradle-5.4.1-all.zip下载
8,831 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
7,816 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,866 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
623
篇文章
累计收到
612
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
36
篇与
的结果
2020-08-17
jQuery 完整 ajax示例
$(function(){ //请求参数 var list = {}; // $.ajax({ //请求方式 type : "POST", //请求的媒体类型 contentType: "application/json;charset=UTF-8", //请求地址 url : "http://127.0.0.1/admin/list/", //数据,json字符串 data : JSON.stringify(list), //请求成功 success : function(result) { console.log(result); }, //请求失败,包含具体的错误信息 error : function(e){ console.log(e.status); console.log(e.responseText); } }); });
2020年08月17日
686 阅读
0 评论
0 点赞
2020-08-16
HTML打印准考证用JS在html页面实现打印功能
用JS在html页面实现打印功能做项目时,有在网页实现全局和局部打印的需求,百度许久,现总结如下:打印方式一:1.首先在head里面加入下面一段js代码:<script language="javascript"> function preview(fang) { if (fang < 10){ bdhtml=window.document.body.innerHTML;//获取当前页的html代码 sprnstr="<!--startprint"+fang+"-->";//设置打印开始区域 eprnstr="<!--endprint"+fang+"-->";//设置打印结束区域 prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取html prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html window.document.body.innerHTML=prnhtml; window.print(); window.document.body.innerHTML=bdhtml; } else { window.print(); } } </script>2.然后在所需要打印的代码,用和包围着,如下:<!--startprint1--> <!--打印内容开始--> <div id=wdf> ... </div> <!--打印内容结束--> <!--endprint1-->3.最后加上一个打印的按钮<input type='button' name='button_export' title='打印1' onclick=preview(1) value='打印1'>打印方式二:1.javascript中方法为:<javascript> function dayin(){ var userAgent = navigator.userAgent.toLowerCase(); //取得浏览器的userAgent字符串 if (userAgent.indexOf("trident") > -1){ alert("请使用google或者360浏览器打印"); return false; }else if(userAgent.indexOf('msie')>-1){ var onlyChoseAlert = simpleAlert({ "content":"请使用Google或者360浏览器打印", "buttons":{ "确定":function () { onlyChoseAlert.close(); } } }) alert("请使用google或者360浏览器打印"); return false; }else{//其它浏览器使用lodop var oldstr = document.body.innerHTML; var headstr = "<html><head><title></title></head><body>"; var footstr = "</body>"; //执行隐藏打印区域不需要打印的内容 document.getElementById("otherpho").style.display="none"; //此处id换为你自己的id var printData = document.getElementById("printdivaa").innerHTML; //获得 div 里的所有 html 数据 document.body.innerHTML = headstr+printData+footstr; window.print(); //打印结束后,放开隐藏内容 document.getElementById("otherpho").style.display="block"; document.body.innerHTML = oldstr ; } } </javascript>2.页面内容如下: ... <!--打印内容开始--> <div id='printdivaa'> ... </div> <!--打印内容结束--> ...3.页面中放置一个打印按钮:<button type="button" class="btn_search" onclick="dayin()">打印</button>打印方式三(此方式会重新打开一个浏览器窗口):1.javascript中方法为: //打印操作 function print() { var userAgent = navigator.userAgent.toLowerCase(); //取得浏览器的userAgent字符串 if (userAgent.indexOf("trident") > -1) { alert("请使用google或者360浏览器打印"); return false; } else if (userAgent.indexOf('msie') > -1) { var onlyChoseAlert = simpleAlert({ "content" : "请使用Google或者360浏览器打印", "buttons" : { "确定" : function() { onlyChoseAlert.close(); } } }) alert("请使用google或者360浏览器打印"); return false; } else {//其它浏览器使用lodop var oldstr = document.body.innerHTML; var headstr = "<html><head><title></title></head><body>"; var footstr = "</body></html>"; //执行隐藏打印区域不需要打印的内容 document.getElementById("otherpho").style.display="none"; var printData = document.getElementById("studentPhoTable").innerHTML; //获得 div 里的所有 html 数据 var wind = window.open("", "newwin", "toolbar=no,scrollbars=yes,menubar=no"); wind.document.body.innerHTML = headstr + printData + footstr; wind.print(); //打印结束后,放开隐藏内容 document.getElementById("otherpho").style.display="block"; wind.close(); window.document.body.innerHTML = oldstr; } } </script>2.页面内容如下: ... <!--打印内容开始--> <div id='studentPhoTable'> ... </div> <!--打印内容结束--> ...3.页面中放置一个打印按钮:<input type="button" onclick="print()" value="确定打印" />
2020年08月16日
1,318 阅读
0 评论
1 点赞
2020-08-07
Linux修改系统时间为东八区北京时间(上海时间)
1. Linux时间# Linux的时间分为 System Clock(系统时间)和 Real Time Clock(硬件时间,简称RTC)。 系统时间:指系统内核中的时间。 硬件时间:指主板上的时间。2. 查看系统时间#date3. 查看硬件时间#hwclock4. 删除本地时间#rm -rf /etc/localtime5. 创建软连接#ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2020年08月07日
821 阅读
0 评论
0 点赞
2020-08-07
Apscheduler时间调度程序——python定时任务
1.简介APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时,它还支持异步执行、后台执行调度任务。2. 安装 pip install APScheduler3. 基础组件APScheduler 有四种组件,分别是:调度器(scheduler),作业存储(job store),触发器(trigger),执行器(executor)。schedulers(调度器)它是任务调度器,属于控制器角色。它配置作业存储器和执行器可以在调度器中完成,例如添加、修改和移除作业。triggers(触发器)描述调度任务被触发的条件。不过触发器完全是无状态的。job stores(作业存储器)任务持久化仓库,默认保存任务在内存中,也可将任务保存都各种数据库中,任务中的数据序列化后保存到持久化数据库,从数据库加载后又反序列化。executors(执行器)负责处理作业的运行,它们通常通过在作业中提交指定的可调用对象到一个线程或者进城池来进行。当作业完成时,执行器将会通知调度器。""" date 触发器使用示例如下: date 触发器指在某一指定时间下执行脚本的方法 """ from datetime import datetime from datetime import date from apscheduler.schedulers.background import BackgroundScheduler def job_func(text): print(text) scheduler = BackgroundScheduler() # 在 2017-12-13 时刻运行一次 job_func 方法 scheduler .add_job(job_func, 'date', run_date=date(2017, 12, 13), args=['text']) # 在 2017-12-13 14:00:00 时刻运行一次 job_func 方法 scheduler .add_job(job_func, 'date', run_date=datetime(2017, 12, 13, 14, 0, 0), args=['text']) # 在 2017-12-13 14:00:01 时刻运行一次 job_func 方法 scheduler .add_job(job_func, 'date', run_date='2017-12-13 14:00:01', args=['text']) scheduler.start()""" interval 触发器 循环执行脚本任务的触发器 weeks (int) – 间隔几周 days (int) – 间隔几天 hours (int) – 间隔几小时 minutes (int) – 间隔几分钟 seconds (int) – 间隔多少秒 start_date (datetime|str) – 开始日期 end_date (datetime|str) – 结束日期 timezone (datetime.tzinfo|str) – 时区 """ import datetime from apscheduler.schedulers.background import BackgroundScheduler def job_func(text): print(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]) scheduler = BackgroundScheduler() # 每隔两分钟执行一次 job_func 方法 scheduler .add_job(job_func, 'interval', minutes=2) # 在 2017-12-13 14:00:01 ~ 2017-12-13 14:00:10 之间, 每隔两分钟执行一次 job_func 方法 scheduler .add_job(job_func, 'interval', minutes=2, start_date='2017-12-13 14:00:01' , end_date='2017-12-13 14:00:10') scheduler.start()""" cron 触发器使用示例如下: 指定指定时间循环执行脚本的触发器 year (int|str) – 年,4位数字 month (int|str) – 月 (范围1-12) day (int|str) – 日 (范围1-31) week (int|str) – 周 (范围1-53) day_of_week (int|str) – 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun) hour (int|str) – 时 (范围0-23) minute (int|str) – 分 (范围0-59) second (int|str) – 秒 (范围0-59) start_date (datetime|str) – 最早开始日期(包含) end_date (datetime|str) – 最晚结束时间(包含) timezone (datetime.tzinfo|str) – 指定时区 """ import datetime from apscheduler.schedulers.background import BackgroundScheduler def job_func(text): print("当前时间:", datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]) scheduler = BackgroundScheduler() # 在每年 1-3、7-9 月份中的每个星期一、二中的 00:00, 01:00, 02:00 和 03:00 执行 job_func 任务 scheduler .add_job(job_func, 'cron', month='1-3,7-9',day='0, tue', hour='0-3') scheduler.start()参考链接:https://www.cnblogs.com/luxiaojun/p/6567132.html参考链接:https://www.cnblogs.com/ohyb/p/9084011.html参考链接:https://www.cnblogs.com/cool-fire/p/7449758.html参考链接:http://www.cnblogs.com/luxiaojun/p/6567132.html官方文档:https://apscheduler.readthedocs.io/en/latest/userguide.html#basic-concepts
2020年08月07日
1,121 阅读
2 评论
0 点赞
2020-08-06
使程序在Linux下后台运行
一、为什么要使程序在后台执行我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用putty远程连接到日本Linux服务器。所以使程序在后台跑有以下三个好处:1:我们这边是否关机不影响日本那边的程序运行。(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼)2:不影响计算效率2:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情。二、怎么样使程序在后台执行方法有很多,这里主要列举两种。假如我们有程序pso.cpp,通过编译后产生可执行文件pso,我们要使pso在linux服务器后台执行。当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果。(假设操作都在当前目录下)方法1在终端输入命令: # ./pso > pso.file 2>&1 & 解释:将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。 当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。 方法2在终端输入命令:# nohup ./pso > pso.file 2>&1 &解释:nohup就是不挂起的意思,将pso直接放在后台运行,并把终端输出存放在当前目录下的pso.file文件中。当客户端关机后重新登陆服务器后,直接查看pso.file文件就可看执行结果(命令:#cat pso.file )。三、常用任务管理命令# jobs //查看任务,返回任务编号n和进程号# bg %n //将编号为n的任务转后台运行# fg %n //将编号为n的任务转前台运行# ctrl+z //挂起当前任务# ctrl+c //结束当前任务 注:如果要使在前天执行任务放到后台运行,则先要用ctrl+z挂起该任务,然后用bg使之后台执行。 附: 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:$ ./test.sh & [1] 17208 $ jobs -l [1]+ 17208 Running ./test.sh &对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行:$ ./test.sh [1]+ Stopped ./test.sh $ bg %1 [1]+ ./test.sh & $ jobs -l [1]+ 22794 Running ./test.sh &但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)$ echo $$ 21734 $ nohup ./test.sh & [1] 29016 $ ps -ef | grep test 515 29710 21734 0 11:47 pts/12 00:00:00 /bin/sh ./test.sh 515 29713 21734 0 11:47 pts/12 00:00:00 grep test$ setsid ./test.sh & [1] 409 $ ps -ef | grep test 515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh 515 413 21734 0 11:49 pts/12 00:00:00 grep test上面的试验演示了使用nohup/setsid加上&使进程在后台运行,同时不受当前shell退出的影响。那么对于已经在后台运行的进程,该怎么办呢?可以使用disown命令:$ ./test.sh & [1] 2539 $ jobs -l [1]+ 2539 Running ./test.sh & $ disown -h %1 $ ps -ef | grep test 515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh 515 2542 21734 0 11:52 pts/12 00:00:00 grep test另外还有一种方法,即使将进程在一个subshell中执行,其实这和setsid异曲同工。方法很简单,将命令用括号() 括起来即可:$ (./test.sh &) $ ps -ef | grep test 515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh 515 12483 21734 0 11:59 pts/12 00:00:00 grep test注:本文试验环境为Red Hat Enterprise Linux AS release 4 (Nahant Update 5),shell为/bin/bash,不同的OS和shell可能命令有些不一样。例如AIX的ksh,没有disown,但是可以使用nohup -p PID来获得disown同样的效果。还有一种更加强大的方式是使用screen,首先创建一个断开模式的虚拟终端,然后用-r选项重新连接这个虚拟终端,在其中执行的任何命令,都能达到nohup的效果,这在有多个命令需要在后台连续执行的时候比较方便:$ screen -dmS screen_test $ screen -list There is a screen on: 27963.screen_test (Detached) 1 Socket in /tmp/uscreens/S-jiangfeng. $ screen -r screen_test
2020年08月06日
595 阅读
0 评论
0 点赞
2020-05-25
Burpsuite2.1中文版安装步骤
下载地址:https://gitlab.com/Vastsa/lanpicbed/-/raw/master/post/9.html一、安装Burpsuite(1)工具运行需要Java环境,请自行安装,此处不赘述。解压完成后打开文件夹,双击运行这个文件burp-loader-keygen-2_1_05-Jaky.jar (2)点击Run启动Burpsuite(3)打开Burpsuite成功(4)然后将Keygen中License复制(CTRL+C)粘贴(CTRL+V)到Burp Suite中,然后点击Next(下一步)(5)然后点击Manual activation(6)点击Copy request(7)点击Copy request,复制完成之后,将字符串粘贴到keygen的Activation Request框里,然后Activation Response框里就有了结果,如下(8)复制完后,将字符串粘贴到BurpSuite剩下的那个框里,如图,然后再点击Next(9)显示激活成功,然后点击Finish(10)然后点击Next(11)再点击Start Burp(12)进入Burpsuite主界面二、启动汉化版Burpsuite (1)注册安装完之后我们点击左上角的Burp→Exit→Yes 退出Burpsuite(2)退出后,找到文件夹下的vbs文件,然后双击启动汉化版的Burpsuite(3)进入汉化版的Burpsuite主界面
2020年05月25日
405 阅读
0 评论
0 点赞
2020-05-07
正则表达式手册
字符描述将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“ ”匹配一个换行符。串行“\”匹配“”而“(”则匹配“(”。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“ ”或“ ”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“ ”或“ ”之前的位置。*匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。+匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。?匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。{n}n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。{n,}n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。{n,m}m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。?当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。.匹配除“n”之外的任何单个字符。要匹配包括“n”在内的任何字符,请使用像“(.| )”的模式。(pattern)匹配pattern并获取这一匹配。所获取的匹配可以从产生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中则使用$0…$9属性。要匹配圆括号字符,请使用“(”或“)”。(?:pattern)匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。(?=pattern)正向肯定预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。(?!pattern)正向否定预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始(?<=pattern)反向肯定预查,与正向肯定预查类拟,只是方向相反。例如,“(?<=95|98|NT|2000)Windows”能匹配“2000Windows”中的“Windows”,但不能匹配“3.1Windows”中的“Windows”。(?<!pattern)反向否定预查,与正向否定预查类拟,只是方向相反。例如“(?<!95|98|NT|2000)Windows”能匹配“3.1Windows”中的“Windows”,但不能匹配“2000Windows”中的“Windows”。x|y匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。[xyz]字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。[^xyz]负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。[a-z]字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。[^a-z]负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。匹配一个单词边界,也就是指单词和空格间的位置。例如,“er”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。B匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。cx匹配由x指明的控制字符。例如,cM匹配一个Control-M或回车符。x的值必须为A-Z或a-z之一。否则,将c视为一个原义的“c”字符。d匹配一个数字字符。等价于[0-9]。D匹配一个非数字字符。等价于[^0-9]。f匹配一个换页符。等价于x0c和cL。 匹配一个换行符。等价于x0a和cJ。 匹配一个回车符。等价于x0d和cM。s匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ f v]。S匹配任何非空白字符。等价于[^ f v]。 匹配一个制表符。等价于x09和cI。v匹配一个垂直制表符。等价于x0b和cK。w匹配包括下划线的任何单词字符。等价于“[A-Za-z0-9_]”。W匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。xn匹配n,其中n为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,“x41”匹配“A”。“x041”则等价于“x04&1”。正则表达式中可以使用ASCII编码。.num匹配num,其中num是一个正整数。对所获取的匹配的引用。例如,“(.)1”匹配两个连续的相同字符。n标识一个八进制转义值或一个向后引用。如果n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。nm标识一个八进制转义值或一个向后引用。如果nm之前至少有nm个获得子表达式,则nm为向后引用。如果nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则nm将匹配八进制转义值nm。nml如果n为八进制数字(0-3),且m和l均为八进制数字(0-7),则匹配八进制转义值nml。un匹配n,其中n是一个用四个十六进制数字表示的Unicode字符。例如,u00A9匹配版权符号(©)。常用正则表达式用户名/^[a-z0-9_-]{3,16}$/密码/^[a-z0-9_-]{6,18}$/十六进制值/^#?([a-f0-9]{6}|[a-f0-9]{3})$/电子邮箱/^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$//^[a-zd]+(.[a-zd]+)*@([da-z](-[da-z])?)+(.{1,2}[a-z]+)+$/URL/^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$/IP 地址/((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)//^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/HTML 标签/^<([a-z]+)([^<]+)*(?:>(.*)</1>|s+/>)$/删除代码\注释(?<!http:|S)//.*$Unicode编码中的汉字范围/^[u2E80-u9FFF]+$/
2020年05月07日
1,481 阅读
0 评论
0 点赞
1
2
3
4
...
6