%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
@echo off
color 1f
title 关闭135 137 138 139 445 端口
echo.
echo.
echo.
echo 正在关闭135端口 请稍候…
netsh advfirewall firewall add rule name = "Disable port 135 - TCP" dir = in action = block protocol = TCP localport = 135
echo.
netsh advfirewall firewall add rule name = "Disable port 135 - UDP" dir = in action = block protocol = UDP localport = 135
echo.
echo 正在关闭137端口 请稍候…
netsh advfirewall firewall add rule name = "Disable port 137 - TCP" dir = in action = block protocol = TCP localport = 137
echo.
netsh advfirewall firewall add rule name = "Disable port 137 - UDP" dir = in action = block protocol = UDP localport = 137
echo.
echo 正在关闭138端口 请稍候…
netsh advfirewall firewall add rule name = "Disable port 138 - TCP" dir = in action = block protocol = TCP localport = 138
echo.
netsh advfirewall firewall add rule name = "Disable port 138 - UDP" dir = in action = block protocol = UDP localport = 138
echo.
echo 正在关闭139端口 请稍候…
netsh advfirewall firewall add rule name = "Disable port 139 - TCP" dir = in action = block protocol = TCP localport = 139
echo.
netsh advfirewall firewall add rule name = "Disable port 139 - UDP" dir = in action = block protocol = UDP localport = 139
echo.
echo 正在关闭445端口 请稍候…
netsh advfirewall firewall add rule name = "Disable port 445 - TCP" dir = in action = block protocol = TCP localport = 445
echo.
netsh advfirewall firewall add rule name = "Disable port 445 - UDP" dir = in action = block protocol = UDP localport = 445
echo.
echo 按任意键退出
pause>nul
Run code
Cut to clipboard
#,广西南宁市,2017-05-15,10:27:16, 制作一个BAT的端口扫描器
@echo off
setlocal enabledelayedexpansion
title 端口扫描器 by 风旋碧浪
color 4f&MODE con: COLS=50 LINES=12
echo.&echo 开始扫描,需要时间,请稍候……
(echo.&echo 端口号 进程名称
echo.&echo TCP协议: )>>端口查看.txt
echo.&echo 正在扫描TCP协议……
for /f "skip=4 tokens=2,5" %%a in ('netstat -ano -p TCP') do (
for /f "tokens=2 delims=:" %%A in ("%%a") do set TCP端口=%%A
for /f "skip=2 delims=, tokens=1" %%A in ('tasklist /fi "PID eq %%b" /FO CSV') do set TCP进程=%%~A
echo !TCP端口! !TCP进程!>>端口查看.txt
)
echo UDP协议: >>端口查看.txt
echo.&echo 正在扫描UDP协议……
for /f "skip=4 tokens=2,4" %%a in ('netstat -ano -p UDP') do (
for /f "tokens=2 delims=:" %%A in ("%%a") do set UDP端口=%%A
for /f "skip=2 delims=, tokens=1" %%A in ('tasklist /fi "PID eq %%b" /FO CSV') do set UDP进程=%%~A
echo !UDP端口! !UDP进程!>>端口查看.txt
)
echo.&echo.&echo 扫描结束!请查看《端口查看.txt》文件!
pause>nul
Run code
Cut to clipboard
#,广西南宁市,2017-05-15,10:31:12, window dos bat 检查本机开放的端口及端口对应进程的批处理
@echo off
color 1f
Title XP端口-进程查询
setlocal enabledelayedexpansion
echo ╔- -╗
echo 本机开放的端口及使用该端口的进程
echo ╚- -╝
echo ------------------------------------
echo 端口号 进程名称
ECHO TCP协议:
::利用netstat命令找出使用TCP协议通信的端口,并将结果分割;
::将第二个参数(IP加端口)传给%%i,第五个参数(PID号)传给%%j;
for /F "usebackq skip=4 tokens=2,5" %%i in (`"netstat -ano -p TCP"`) do (
call :Assoc %%i TCP %%j
echo !TCP_Port! !TCP_Proc_Name!
)
ECHO UDP协议:
for /F "usebackq skip=4 tokens=2,4" %%i in (`"netstat -ano -p UDP"`) do (
call :Assoc %%i UDP %%j
echo !UDP_Port! !UDP_Proc_Name!
)
echo 按任意键退出
pause>nul
:Assoc
::对%1(第一个参数)进行分割,将第二个参数传给%%e。在本程序中,%1即为上面的%%i(形式为:IP:端口号)
for /F "tokens=2 delims=:" %%e in ("%1") do (
set %2_Port=%%e
)
:: 查询PID等于%3(第三个参数)的进程,并将结果传给变量?_Proc_Name,?代表UDP或者TCP;
for /F "skip=2 usebackq delims=, tokens=1" %%a in (`"Tasklist /FI "PID eq %3" /FO CSV"`) do (
::%%~a表示去掉%%a外面的引号,因为上述命令的结果是用括号括起来的。
set %2_Proc_Name=%%~a
)
#,广西南宁市,2017-05-15,11:55:50, https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/ https://technet.microsoft.com/zh-cn/library/security/MS17-010 To open the firewall ports to enable file and printer sharing Open Control Panel, click System and Security, and then click Windows Firewall. In the left pane, click Advanced settings, and in the console tree, click Inbound Rules. Under Inbound Rules, locate the rules File and Printer Sharing (NB-Session-In) and File and Printer Sharing (SMB-In). For each rule, right-click the rule, and then click Enable Rule.
[正向代理] 就是你明知道你无法直接访问服务器 A,需要找个服务,来让你能迂回的访问到服务器 A。比如你明明知道 Google 打不开,然后想要打开的时候,你用的服务对你来说就是正向代理。
[反向代理] 就是你需要访问一个服务,比如百度,你知道访问 baidu.com,也知道对应的 ip 是 14.215.177.37,但百度可能是用到内部的一个服务器 ip 192.168.0.2 来接受搜索的请求并返回结果,只是通过 14.215.177.37 这个 ip 跟你进行交互,14.215.177.37 这个 ip 不提供搜索的服务,这个过程中的 14.215.177.37 就是反向代理了。而使用者在这个过程中是完全无感的。
#,广西南宁市,2017-05-15,14:21:11, 局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。
#,广西南宁市,2017-05-15,14:22:27, 广域网(WAN,Wide Area Network)也称远程网(long haul network )。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。 覆盖的范围比局域网(LAN)和城域网(MAN)都广。广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界范围内最大的广域网。 广域网是由许多交换机组成的,交换机之间采用点到点线路连接,几乎所有的点到点通信方式都可以用来建立广域网,包括租用线路、光纤、微波、卫星信道。而广域网交换机实际上就是一台计算机,有处理器和输入/输出设备进行数据包的收发处理。
做网站的文盲太多了,贴个 xx 官网真的没有说服力啊。比如你看看「重起」「重启」哪个是对的? xx 商城里的「冲值」你猜是不是「充值」的意思?按钮上那大大的「登陆」他们可能其实想说的是「登录」。最狠的是读条时候那个「请稍后」,90%以上的网站都是这么写的,我怀疑它们用的是同一套控件,或者至少同一个输入法。能正确写成「请稍候」的网站简直凤毛麟角。
#1122
#1123
<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = intval(($low+$high)/2 ); if ($array[$mid] == $k){ return $mid; }elseif ( $k < $array[$mid]){ return bin_sch($array, $low, $mid-1, $k); }else{ return bin_sch($array, $mid+ 1, $high, $k); } } return -1; } //顺序查找(数组里查找某个元素) function seq_sch($array, $n, $k){ $array[$n] = $k; for($i=0; $i<$n; $i++){ if( $array[$i]==$k){ break; } } if ($i<$n){ return $i; }else{ return -1; } } //线性表的删除(数组中实现) function delete_array_element($array , $i) { $len = count($array); for ($j= $i; $j<$len; $j ++){ $array[$j] = $array [$j+1]; } array_pop ($array); return $array ; } //冒泡排序(数组排序) function bubble_sort( $array) { $count = count( $array); if ($count <= 0 ) return false; for($i=0 ; $i<$count; $i ++){ for($j=$count-1 ; $j>$i; $j--){ if ($array[$j] < $array [$j-1]){ $tmp = $array[$j]; $array[$j] = $array[ $j-1]; $array [$j-1] = $tmp; } } } return $array; } //快速排序(数组排序) function quick_sort($array ) { if (count($array) <= 1) return $array; $key = $array [0]; $left_arr = array(); $right_arr = array(); for ($i= 1; $i<count($array ); $i++){ if ($array[ $i] <= $key) $left_arr [] = $array[$i]; else $right_arr[] = $array[$i ]; } $left_arr = quick_sort($left_arr ); $right_arr = quick_sort( $right_arr); return array_merge($left_arr , array($key), $right_arr); } //------------------------ // PHP内置字符串函数实现 //------------------------ //字符串长度 function strlen ($str) { if ($str == '' ) return 0; $count = 0; while (1){ if ( $str[$count] != NULL){ $count++; continue; }else{ break; } } return $count; } //截取子串 function substr($str, $start, $length=NULL) { if ($str== '' || $start>strlen($str )) return; if (($length!=NULL) && ( $start>0) && ($length> strlen($str)-$start)) return; if (( $length!=NULL) && ($start< 0) && ($length>strlen($str )+$start)) return; if ($length == NULL) $length = (strlen($str ) - $start); if ($start < 0){ for ($i=(strlen( $str)+$start); $i<(strlen ($str)+$start+$length ); $i++) { $substr .= $str[$i]; } } if ($length > 0){ for ($i= $start; $i<($start+$length ); $i++) { $substr .= $str[$i]; } } if ( $length < 0){ for ($i =$start; $i<(strlen( $str)+$length); $i++) { $substr .= $str[$i ]; } } return $substr; } //字符串翻转 function strrev($str) { if ($str == '') return 0 ; for ($i=(strlen($str)- 1); $i>=0; $i --){ $rev_str .= $str[$i ]; } return $rev_str; } //字符串比较 function strcmp($s1, $s2) { if (strlen($s1) < strlen($s2)) return -1 ; if (strlen($s1) > strlen( $s2)) return 1; for ($i =0; $i<strlen($s1 ); $i++){ if ($s1[ $i] == $s2[$i]){ continue; }else{ return false; } } return 0; } //查找字符串 function strstr($str, $substr) { $m = strlen($str); $n = strlen($substr ); if ($m < $n) return false ; for ($i=0; $i <=($m-$n+1); $i ++){ $sub = substr( $str, $i, $n); if ( strcmp($sub, $substr) == 0) return $i; } return false ; } //字符串替换 function str_replace($substr , $newsubstr, $str) { $m = strlen($str); $n = strlen($substr ); $x = strlen($newsubstr ); if (strchr($str, $substr ) == false) return false; for ( $i=0; $i<=($m- $n+1); $i++){ $i = strchr($str, $substr); $str = str_delete ($str, $i, $n); $str = str_insert($str, $i, $newstr); } return $str ; } //-------------------- // 自实现字符串处理函数 //-------------------- //插入一段字符串 function str_insert($str, $i , $substr) { for($j=0 ; $j<$i; $j ++){ $startstr .= $str[$j ]; } for ($j=$i; $j <strlen($str); $j ++){ $laststr .= $str[$j ]; } $str = ($startstr . $substr . $laststr); return $str ; } //删除一段字符串 function str_delete($str , $i, $j) { for ( $c=0; $c<$i; $c++){ $startstr .= $str [$c]; } for ($c=( $i+$j); $c<strlen ($str); $c++){ $laststr .= $str[$c]; } $str = ($startstr . $laststr ); return $str; } //复制字符串 function strcpy($s1, $s2 ) { if (strlen($s1)==NULL || !isset( $s2)) return; for ($i=0 ; $i<strlen($s1); $i++){ $s2[] = $s1 [$i]; } return $s2; } //连接字符串 function strcat($s1 , $s2) { if (!isset($s1) || !isset( $s2)) return; $newstr = $s1 ; for($i=0; $i <count($s); $i ++){ $newstr .= $st[$i ]; } return $newsstr; } //简单编码函数(与php_decode函数对应) function php_encode($str) { if ( $str=='' && strlen( $str)>128) return false; for( $i=0; $i<strlen ($str); $i++){ $c = ord($str[$i ]); if ($c>31 && $c <107) $c += 20 ; if ($c>106 && $c <127) $c -= 75 ; $word = chr($c ); $s .= $word; } return $s; } //简单解码函数(与php_encode函数对应) function php_decode($str) { if ( $str=='' && strlen($str )>128) return false; for( $i=0; $i<strlen ($str); $i++){ $c = ord($word); if ( $c>106 && $c<127 ) $c = $c-20; if ($c>31 && $c< 107) $c = $c+75 ; $word = chr( $c); $s .= $word ; } return $s; } //简单加密函数(与php_decrypt函数对应) function php_encrypt($str) { $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890'; $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359'; if ( strlen($str) == 0) return false; for ($i=0; $i<strlen($str); $i ++){ for ($j=0; $j <strlen($encrypt_key); $j ++){ if ($str[$i] == $encrypt_key [$j]){ $enstr .= $decrypt_key[$j]; break; } } } return $enstr; } //简单解密函数(与php_encrypt函数对应) function php_decrypt($str) { $encrypt_key = 'abcdefghijklmnopqrstuvwxyz1234567890'; $decrypt_key = 'ngzqtcobmuhelkpdawxfyivrsj2468021359'; if ( strlen($str) == 0) return false; for ($i=0; $i<strlen($str); $i ++){ for ($j=0; $j <strlen($decrypt_key); $j ++){ if ($str[$i] == $decrypt_key [$j]){ $enstr .= $encrypt_key[$j]; break; } } } return $enstr; } ?>#1124
2N 原则:
公司原则上不欢迎任何一个管理人员带原单位的人过来,公司是鼓励你一个人来。很多公司是一个部门来一个头,带了很多原部门的人。等这个头走的时候,发现这些人都走了。这样是非常可怕的,走的时候损失也很大,我们不可以。
第二个不可以的是,所有管理人员给你一年的时间,找到可以替代你的公司认可的人员,如果找不到的话,第二年新的业务也不会给你,加薪也不会给你。如果两年之内还是找不到,你不能随便指一个人,我们还要调查。如果找不到的话,公司请你走,必须离职。
#1125
data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==局域网连接共享打印机
win+r
\\192.168.1.102+Math.random();js随机函数
PHP date时间格式化输出
文字放大闪动动画css3
#baitianyemaozi { display:inline-block; -webkit-transform:scale(.9); -moz-transform:scale(.9); transform:scale(.9); -webkit-animation:baitianyemaozi .5s infinite linear alternate-reverse; -moz-animation:baitianyemaozi .5s infinite linear alternate-reverse; animation:baitianyemaozi .5s infinite linear alternate-reverse; } @-webkit-keyframes baitianyemaozi { to { -webkit-transform:scale(1.2); } }@-moz-keyframes baitianyemaozi { to { -moz-transform:scale(1.2); } }@keyframes baitianyemaozi { to { transform:scale(1.2); } }说明下:
字符串的indexOf方法是无法区分.no-js和.no-js-indeed这样的类;
类名的分隔符可能不是空格,还有可能是\t等。
从1开始 至 任意值parseInt(Math.random()*上限+1); 2. 从任意值开始 至 任意值parseInt(Math.random()*(上限-下限+1)+下限);
Math.ceil() 返回大于等于数字参数的最小整数(取整函数),对数字进行上舍入
Math.floor() 返回小于等于数字参数的最大整数,对数字进行下舍入
Math.round() 返回数字最接近的整数,四舍五入
生成800-1500的随机整数,包含800但不包含1500
1500-800 = 700 Math.random()*700 var num = Math.random()*700 + 800; num = parseInt(num, 10);图片自适应父元素,并左右上下居中
这种效果多见于矩形盒子里面调用不规则的图片,希望能够达到的效果。这个效果可以很简单的用css来实现,虽然已经烂熟于心,但是并未记录下来。今天看到又有这个需求,所以写了一个简单的demo,放在这里,便于自己记忆。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div class="picdemo"><img src="https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=1438475101,354016904&fm=58" alt=""></div> <div class="picdemo"><img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2201558756,12364836&fm=111&gp=0.jpg" alt=""></div> </body> </html> <style> .picdemo { width: 120px;height: 120px;margin: 40px auto;border: 1px solid #ccc;text-align: center;padding: 5px; } .picdemo:before { content: "";display: inline-block;height: 100%;vertical-align: middle;width: 0; } .picdemo img { max-width: 120px; max-height: 120px;vertical-align: middle; } </style>Canvas画布爆破效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="Pragma" CONTENT="no-cache"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="format-detection" content="telephone=no"> <meta name="keywords" content="canvas html5 video"/> <meta name="description" content="点击爆破视屏" /> <title>爆破视屏</title> <style> *{ margin:0; padding:0; } .video{ /*display:none;*/ width:1px; height:1px; text-align:center ; position:absolute; } .video video{ width:1px; height:1px; } #sourcecopy{ display:none; } .tip{ text-align:center; margin:5% 0 0 0; font-size: 18px; font-weight: 600; color: #666; position:absolute; top:0; width:100%; } .stage{ text-align:center; } #sourceshow{ /*background-color:#ddd;*/ } </style> </head> <body> <div class="video"> <video id="sourceid" autoplay="true" loop="true" volume="0" loop="true" controls="controls" webkit-playsinline> <source src="http://www.tofei.cc/comments/4_BlowVido/video/BigBuckBunny_640x360.mp4"> <source src="http://www.tofei.cc/comments/4_BlowVido/video/BigBuckBunny_640x360.ogv"> </video> <canvas id="sourcecopy"></canvas> </div> <div class="stage"> <div class="tip"><p>请点击视屏</p> </div> <canvas id="sourceshow"></canvas> </div> <script> var video; var copy; var copycanvas; var draw; var first=true; //小方块的大小 var TILE_WIDTH = 32; var TILE_HEIGHT = 24; //方块中心位置 var TILE_CENTER_WIDTH=16; var TILE_CENTER_HEIGHT=12; //全局变量,根据视屏大小定义画布大小 var COPY_WIDTH=640; var COPY_HEIGHT=360; var DRAW_WIDTH=window.innerWidth*0.99; var DRAW_HEIGHT=window.innerHeight*0.99; var SOURCERECT = {x:0,y:0,width:0,height:0}; var PAINTRECT={x:0,y:0,width:DRAW_WIDTH,height:DRAW_HEIGHT}; function init(){ //初始化画布 video=document.getElementById('sourceid'); copycanvas=document.getElementById('sourcecopy'); copycanvas.width=COPY_WIDTH; copycanvas.height=COPY_HEIGHT; copy=copycanvas.getContext("2d");//获取2d绘图环境 var showcanvas=document.getElementById('sourceshow'); showcanvas.width=DRAW_WIDTH; showcanvas.height=DRAW_HEIGHT; draw=showcanvas.getContext("2d"); /*每隔33毫秒绘制一帧canvas*/ setInterval("processFrame()", 33); /*鼠标点击屏幕事件*/ showcanvas.addEventListener('mousedown',dropBomb,false); showcanvas.addEventListener('touchstart',dropBomb,false); //setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。 } //后面用于小方块旋转角度使用 var RAD = Math.PI/180; //存储小方块信息的数组 var tiles = []; /*每帧画布的绘制*/ function processFrame(){ //video.duration 属性返回当前音频/视频的长度,以秒计。 //isNaN() 函数用于检查其参数是否是非数字值。 if(!isNaN(video.duration)){ if(SOURCERECT.width==0) { SOURCERECT={x:0,y:0,width:video.videoWidth,height:video.videoHeight}; //初始化小方块 createTiles(); } } //绘制拷贝用的copy canvas画布 copy.drawImage(video,0,0);//drawImage() 方法在画布上绘制图像、画布或视频。 draw.clearRect(PAINTRECT.x, PAINTRECT.y,PAINTRECT.width,PAINTRECT.height);//clearRect() 方法清空给定矩形内的指定像素 //绘画每一帧之前清空前一帧 /*根据栈tiles绘制每一个小tile*/ for (var i = 0; i <tiles.length; i++) { var tile=tiles[i]; if(tile.force>0.0001){ tile.moveX *= tile.force;//移动的x距离(根据force计算,越靠近点击的中心离原来的位置越远,回来的一帧移动距离越大) tile.moveY *= tile.force;//移动的y距离 tile.moveRotation *= tile.force;//转动的角度 tile.currentX += tile.moveX;//移动后的位置 tile.currentY += tile.moveY; tile.rotation += tile.moveRotation;//转动后的角度 tile.rotation %= 360; tile.force *= 0.9;//force每渲染一帧值都减少,直到小于0.0001 if(tile.currentX <= 0 || tile.currentX >= PAINTRECT.width){ tile.moveX *= -1; //超出边界左右 } if(tile.currentY <= 0 || tile.currentY >= PAINTRECT.height){ tile.moveY *= -1; //超出上下边界 } }else if(tile.rotation != 0||tile.currentX != tile.originX || tile.currentY != tile.originY)//判断没有回来到原来的位置和角度 { var diffx=(tile.originX-tile.currentX)*0.2; var diffy=(tile.originY-tile.currentY)*0.2; var diffRot=(0-tile.rotation)*0.2; if(Math.abs(diffx)<0.5)//Math.abs计算绝对值的数值表达式(距离的0.2倍小于0.5为最后一步,接下来回到原位) { tile.currentX = tile.originX; }else{//距离的0.2超过0.5,那么加上距离的0.2再次渲染 tile.currentX += diffx; } if(Math.abs(diffy)<0.5)//Math.abs计算绝对值的数值表达式 { tile.currentY = tile.originY; }else{ tile.currentY += diffy; } if(Math.abs(diffRot) < 0.5){ tile.rotation = 0; }else{ tile.rotation += diffRot; } }else{//回到原来的位置 tile.force = 0; } draw.save();//save() 方法把当前状态的一份拷贝压入到一个保存图像状态的栈中。 draw.translate(tile.currentX,tile.currentY); draw.rotate(tile.rotation*RAD); //从copycanvas获取数据,根据数组中tile[i]的数据画一个小方格 draw.drawImage(copycanvas, tile.videoX, tile.videoY, TILE_WIDTH, TILE_HEIGHT, -TILE_CENTER_WIDTH, -TILE_CENTER_HEIGHT, TILE_WIDTH, TILE_HEIGHT); draw.restore();//restore() 方法从栈中弹出存储的图形状态并恢复 CanvasRenderingContext2D 对象的属性、剪切路径和变换矩阵的值。 } } /*把视屏分成根据视屏屏幕大小分成300个tile,栈用于存储每个tile的位置,旋转角度,中心等信息,用于绘制展示页面的绘制*/ function createTiles(){ var offsetX=TILE_CENTER_WIDTH+(PAINTRECT.width-SOURCERECT.width)/2; var offsetY=TILE_CENTER_HEIGHT+(PAINTRECT.height-SOURCERECT.height)/2; var y=0; while (y<SOURCERECT.height) { var x=0; while(x<SOURCERECT.width){ var tile=new Tile(); tile.videoX=x; tile.videoY=y; tile.originX=offsetX+x; tile.originY=offsetY+y; tile.currentX=tile.originX; tile.currentY=tile.originY; tiles.push(tile); x+=TILE_WIDTH; } y+=TILE_HEIGHT; } } /*Tile对象用于存储每个小块的信息*/ function Tile(){ this.originX=0; this.originY=0; this.currentX=0; this.currentY=0; this.rotation=0; this.force=0; this.moveX=0; this.moveY=0; this.moveRotation=0; this.videoX=0; this.videoY=0; } /*计算出点击在显示的canvas画布的位置*/ function dropBomb(evt){ var posx=0; var posy=0; var e=evt||event; //clientX 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标。客户区指的是当前窗口。 //pageX() 属性是鼠标指针的位置,相对于文档的左边缘。 if(e.pageX||e.pageY){ posx=e.pageX; posy=e.pageY; }else if(e.clientX || e.clientY){ /*有两个值一个是:scrollTop一个是scrollLeft 第一个代表页面利用滚动条滚动到下方时,隐藏在滚动条上方的页面的高度; 第二个代表页面利用滚动条滚动到右侧时,隐藏在滚动条左侧的页面的宽度*/ posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop; } /*obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位像素。 obj.offsetLeft 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,整型,单位像素。*/ var canvasX=posx-this.offsetLeft; var canvasY=posy-this.offsetTop; explode(canvasX,canvasY); if(first) { video.play(); first=false; //musictype=true; //musicOn.setAttribute("class", "music on"); } } function explode(x,y){ for(var i=0;i<tiles.length;i++) { var tile=tiles[i]; var xdiff=tile.currentX-x; var ydiff=tile.currentY-y; var dist=Math.sqrt(xdiff*xdiff+ydiff*ydiff);//sqrt根号 dist为tile碎片到点击点的距离 var randRange=220+(Math.random()*30); //randRange值的计算方式????不太了解250是从哪个值计算而来 var range=randRange-dist; var force = 3*(range/randRange);//越靠近force越大 if(force>tile.force){//如果当前的force已经大图要赋值给的force那么不再赋值 tile.force=force; var radians=Math.atan2(ydiff, xdiff);//atan2(Y2-Y1,X2-X1)所表达的意思是坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度。 tile.moveX=Math.cos(radians); tile.moveY=Math.sin(radians); tile.moveRotation=0.5-Math.random(); //console.log('tile.moveX:'+tile.moveX+'tile.moveY:'+tile.moveY+'tile.moveRotation:'+tile.moveRotation); } } tiles.sort(zindexSort);//sort() 方法用于对数组的元素进行排序。zindexSort可选。规定排序顺序。必须是函数。 processFrame();//渲染小方块,此刻小方块的的位置和旋转较多变化了。 } //排序小方块(根据force的大小) function zindexSort(a,b){ return (a.force-b.force); } window.onload=init; </script> </body> </html>IPsec好比是GFW
GFW屏蔽了facebook让你无法访问但是不等于说GFW把facebook的服务器给关机了
希望这样说能明白
bat查指定端口是否开启
@echo off :str echo. & set /p "str=请输入需要查询的端口号:" & echo. if not defined str goto :str call :for %str% goto :str :for Setlocal Enabledelayedexpansion for /F "usebackq skip=4 tokens=2" %%i in (`netstat -ano -p UDP`) do ( set "var=%%i" & set "var=!var:*:=!" echo.!var! | findstr /i "%1" 1>nul && echo 端口:%1 已开启。 && goto :eof) echo 端口:%1 未开启。 & goto :str勒索病毒-批处理关闭135 137 445等端口
永恒之蓝勒索病毒wanacrypt0r
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit @echo off color 1f title 关闭135 137 138 139 445 端口 echo. echo. echo. echo 正在关闭135端口 请稍候… netsh advfirewall firewall add rule name = "Disable port 135 - TCP" dir = in action = block protocol = TCP localport = 135 echo. netsh advfirewall firewall add rule name = "Disable port 135 - UDP" dir = in action = block protocol = UDP localport = 135 echo. echo 正在关闭137端口 请稍候… netsh advfirewall firewall add rule name = "Disable port 137 - TCP" dir = in action = block protocol = TCP localport = 137 echo. netsh advfirewall firewall add rule name = "Disable port 137 - UDP" dir = in action = block protocol = UDP localport = 137 echo. echo 正在关闭138端口 请稍候… netsh advfirewall firewall add rule name = "Disable port 138 - TCP" dir = in action = block protocol = TCP localport = 138 echo. netsh advfirewall firewall add rule name = "Disable port 138 - UDP" dir = in action = block protocol = UDP localport = 138 echo. echo 正在关闭139端口 请稍候… netsh advfirewall firewall add rule name = "Disable port 139 - TCP" dir = in action = block protocol = TCP localport = 139 echo. netsh advfirewall firewall add rule name = "Disable port 139 - UDP" dir = in action = block protocol = UDP localport = 139 echo. echo 正在关闭445端口 请稍候… netsh advfirewall firewall add rule name = "Disable port 445 - TCP" dir = in action = block protocol = TCP localport = 445 echo. netsh advfirewall firewall add rule name = "Disable port 445 - UDP" dir = in action = block protocol = UDP localport = 445 echo. echo 按任意键退出 pause>nul制作一个BAT的端口扫描器
@echo off setlocal enabledelayedexpansion title 端口扫描器 by 风旋碧浪 color 4f&MODE con: COLS=50 LINES=12 echo.&echo 开始扫描,需要时间,请稍候…… (echo.&echo 端口号 进程名称 echo.&echo TCP协议: )>>端口查看.txt echo.&echo 正在扫描TCP协议…… for /f "skip=4 tokens=2,5" %%a in ('netstat -ano -p TCP') do ( for /f "tokens=2 delims=:" %%A in ("%%a") do set TCP端口=%%A for /f "skip=2 delims=, tokens=1" %%A in ('tasklist /fi "PID eq %%b" /FO CSV') do set TCP进程=%%~A echo !TCP端口! !TCP进程!>>端口查看.txt ) echo UDP协议: >>端口查看.txt echo.&echo 正在扫描UDP协议…… for /f "skip=4 tokens=2,4" %%a in ('netstat -ano -p UDP') do ( for /f "tokens=2 delims=:" %%A in ("%%a") do set UDP端口=%%A for /f "skip=2 delims=, tokens=1" %%A in ('tasklist /fi "PID eq %%b" /FO CSV') do set UDP进程=%%~A echo !UDP端口! !UDP进程!>>端口查看.txt ) echo.&echo.&echo 扫描结束!请查看《端口查看.txt》文件! pause>nulwindow dos bat 检查本机开放的端口及端口对应进程的批处理
@echo off color 1f Title XP端口-进程查询 setlocal enabledelayedexpansion echo ╔- -╗ echo 本机开放的端口及使用该端口的进程 echo ╚- -╝ echo ------------------------------------ echo 端口号 进程名称 ECHO TCP协议: ::利用netstat命令找出使用TCP协议通信的端口,并将结果分割; ::将第二个参数(IP加端口)传给%%i,第五个参数(PID号)传给%%j; for /F "usebackq skip=4 tokens=2,5" %%i in (`"netstat -ano -p TCP"`) do ( call :Assoc %%i TCP %%j echo !TCP_Port! !TCP_Proc_Name! ) ECHO UDP协议: for /F "usebackq skip=4 tokens=2,4" %%i in (`"netstat -ano -p UDP"`) do ( call :Assoc %%i UDP %%j echo !UDP_Port! !UDP_Proc_Name! ) echo 按任意键退出 pause>nul :Assoc ::对%1(第一个参数)进行分割,将第二个参数传给%%e。在本程序中,%1即为上面的%%i(形式为:IP:端口号) for /F "tokens=2 delims=:" %%e in ("%1") do ( set %2_Port=%%e ) :: 查询PID等于%3(第三个参数)的进程,并将结果传给变量?_Proc_Name,?代表UDP或者TCP; for /F "skip=2 usebackq delims=, tokens=1" %%a in (`"Tasklist /FI "PID eq %3" /FO CSV"`) do ( ::%%~a表示去掉%%a外面的引号,因为上述命令的结果是用括号括起来的。 set %2_Proc_Name=%%~a )ms17-010
十年一遇的远程代码执行漏洞,SYSTEM 权限
95~Win10 全中
不夸张的说,如果不是 MS 补丁出得快
全球 Windows 电脑将无一幸免
据说是 NSA 提前通知微软补洞了,所以才没成为全版本 Windows 通杀漏洞。
蜜汁更新干掉了 Shadow Brokers 的 0day:
https://arstechnica.com/security/2017/04/purported-shadow-brokers-0days-were-in-fact-killed-by-mysterious-patch/
虽然人命和电脑文档无法类比,但还是以相近的例子说一下,被绑架禁止交赎金?
警察和政府都无权阻止受害人以交赎金避免损失的行为,因为他人并不能承担受害人的实际损失
可以持“不支持”的立场,但不能禁止
不能以“助长犯罪”去评价受害人,这是道德绑架
https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
https://technet.microsoft.com/zh-cn/library/security/MS17-010
To open the firewall ports to enable file and printer sharing
Open Control Panel, click System and Security, and then click Windows Firewall.
In the left pane, click Advanced settings, and in the console tree, click Inbound Rules.
Under Inbound Rules, locate the rules File and Printer Sharing (NB-Session-In) and File and Printer Sharing (SMB-In).
For each rule, right-click the rule, and then click Enable Rule.
自己看看这两条规则有没有开启就行。
永恒之蓝病毒
SMB 服务确实是默认开着的(关了还会出问题),但是防火墙默认禁用了所有入站流量。
https://support.microsoft.com/en-us/help/2696547/how-to-enable-and-disable-smbv1,-smbv2,-and-smbv3-in-windows-vista,-windows-server-2008,-windows-7,-windows-server-2008-r2,-windows-8,-and-windows-server-2012
代理的概念是一样的,就是你不能直接访问为你提供服务的那台服务器,需要有个中间人(代理)来帮你转达你的请求,或者服务器返回的信息。
从使用者的角度来说,
[正向代理] 就是你明知道你无法直接访问服务器 A,需要找个服务,来让你能迂回的访问到服务器 A。比如你明明知道 Google 打不开,然后想要打开的时候,你用的服务对你来说就是正向代理。
[反向代理] 就是你需要访问一个服务,比如百度,你知道访问 baidu.com,也知道对应的 ip 是 14.215.177.37,但百度可能是用到内部的一个服务器 ip 192.168.0.2 来接受搜索的请求并返回结果,只是通过 14.215.177.37 这个 ip 跟你进行交互,14.215.177.37 这个 ip 不提供搜索的服务,这个过程中的 14.215.177.37 就是反向代理了。而使用者在这个过程中是完全无感的。
局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。
广域网(WAN,Wide Area Network)也称远程网(long haul network )。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。
覆盖的范围比局域网(LAN)和城域网(MAN)都广。广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界范围内最大的广域网。
广域网是由许多交换机组成的,交换机之间采用点到点线路连接,几乎所有的点到点通信方式都可以用来建立广域网,包括租用线路、光纤、微波、卫星信道。而广域网交换机实际上就是一台计算机,有处理器和输入/输出设备进行数据包的收发处理。
正向代理-- 我代理帮我干活。(你发出去的 http 请求是完整的 url,由代理生成 http 请求头)
反向代理-- 我不知道帮我干活的是代理。(服务器自己的负载均衡服务器调度,你不用管)
透明代理-- 我不知道他帮我干了活(著名的劫持, 重组 http 请求)
正向代理也可以不部署在 LAN 内;反向代理也可以代理 LAN 外的服务器(比如代理 google 的各种网站)。
我觉得正向 /反向的主要区别在于代理服务器是专门为 Client/Server 服务的。
“Kill Switch”就是紧急开关的意思。WannaCry勒索病毒此前发作的时候会向某个域名发出请求,如果该域名存在就会退出,不存在则继续攻击,这个域名就是它的Kill Switch。
为了防止硬盘空间不够的意外,WanaCry 都是原地写入的, 加密数据覆盖到原来的位置
而不是愚蠢的生成一个新文件再把旧的删掉
什么反删除软件屁用都没有,知乎上吹牛逼的垃圾一堆堆的
其素质早就跌到和微信朋友圈一个水准了
在cmd状态下批量执行以下命令可关闭危险端口:
net stop SCardSvr net stop SCPolicySvc sc config SCardSvr start= disabled sc config SCPolicySvc start= disabled sc config MpsSvc start= auto net start MpsSvc netsh advfirewall set allprofiles state on netsh advfirewall firewall add rule name="deny udp 137" dir=in protocol=udp localport=137 action=block netsh advfirewall firewall add rule name="deny tcp 137" dir=in protocol=tcp localport=137 action=block netsh advfirewall firewall add rule name="deny udp 138" dir=in protocol=udp localport=138 action=block netsh advfirewall firewall add rule name="deny tcp 138" dir=in protocol=tcp localport=138 action=block netsh advfirewall firewall add rule name="deny udp 139" dir=in protocol=udp localport=139 action=block netsh advfirewall firewall add rule name="deny tcp 139" dir=in protocol=tcp localport=139 action=block netsh advfirewall firewall add rule name="deny udp 445" dir=in protocol=udp localport=445 action=block netsh advfirewall firewall add rule name="deny tcp 445" dir=in protocol=tcp localport=445 action=blockUPUPW服务器能访问,外网访问不了的解决办法
大家在服务器环境的使用过程中可能会经常碰到服务器能访问外网访问不了的情况,具体表现如下:
1、服务器环境启动正常,PHP探针文件可见,域名解析成功,服务器上输入域名可访问对应网站但外网无法访问。
2、本地局域网上搭建服务器环境,局域网IP已绑定,搭建环境那台机器访问正常局域网内其它机器均无法访问。
以上两种情况都是由windows自带的防火墙已开启但是没有添加80端口造成的
解决办法:
1、开始---设置---控制面板---windows防火墙---例外(入站规则)---添加端口---名称和端口号分别输入80---确定(如果服务器环境已改为非80端口则添加对应端口号)
还有一种办法是在例外(允许应用或功能通过windows防火墙)选择添加程序---浏览---找到对应服务器环境程序如apache版添加httpd.exe,nginx版添加nginx.exe,kangle版添加kangle.exe
2、有另一种情况除了使用以上方法外还要考虑到一个问题,那就是你的服务器或云主机提供商在整体网络上设置了白名单机制,没有在白名单里的域名外网也无法访问到,此时需要你联系服务商把域名添加进去解决问题。
以上两种方法希望能够帮助大家解决问题。
错误信息:Request-URI Too Long
方法1:清除下浏览器缓存和Cookie 方法2:修改Apache2/conf/httpd.conf 在最后加上以下配置后回upupw面板rr下 复制代码 LimitRequestLine 40940 LimitRequestFieldSize 40940 LimitRequestLine 这个指令用来设置客户端发送的HTTP请求行的最大字节数。请求行包括HTTP方法、URL、协议版本等。因此LimitRequestLine指令能够限制URL的长度,服务器会需要这个值足够大以装载它所有的资源名,包括可能在GET请求中所传递的查询部分的所有信息。 LimitRequestFieldSize 这个指令用来设置客户端发送的HTTP请求头的最大字节数。一般来说,服务器需要此值够大,以适应普通客户的的任何请求的头域大小。头域的大小一般与浏览器支持的内容协议有密切关系。 LimitRequestLine和LimitRequestFieldSize指令有很好的可控性,以把握客户端不正常的请求行为,这有助于避免某些攻击。默认值为“8190”,一般情况下,不要更改这个值,使用默认即可,特殊情况适当修改。client_header_buffer_size 128k; large_client_header_buffers 4 128k;去掉access日志中的400方法
0.7.12以前版本的nginx收到一个空请求,nginx不会去与任何虚拟主机匹配,直接返回400错误,
之后的新版本nginx可以用server_name _;匹配空请求头。
所以如果用的旧版本先升级到0.7.12以后的版本
升级之后添加如下默认虚拟主机server。
增加默认的server到配置文件,以下配置的解释看这里禁止未绑定域名访问
server { listen 80 default_server; server_name _; return 404; access_log off; }建议把上面这个server保存为default.conf,然后include到主配置文件nginx.conf
3389端口是Windows 2000(2003) Server远程桌面的服务端口,可以通过这个端口,用"远程桌面"等连接工具来连接到远程的服务器,如果连接上了,输入系统管理员的用户名和密码后,将变得可以像操作本机一样操作远程的电脑,因此远程服务器一般都将这个端口修改数值或者关闭。
中文名 3389端口 远程桌面的服务端口 平台 Windows 2000(2003) Server 过程 开始->设置->控制面板
关闭3389端口之前,请将您的系统登录密码设置的较为复杂些。
一、关闭与3389端口相关的Windows后台服务
Windows XP/2003中:
依次点击:开始->设置->控制面板->管理工具->服务
在后台服务列表中,找到下列四项
NetMeeting Remote Desktop Sharing
Remote Desktop Help Session Manager
Terminal Services
Terminal Services Session Directory
将上述四项Windows后台服务设置为禁用。
Windows 7中:
注:在控制面板中,将“查看方式”改成“大图标”方可看到上述选项。
在后台服务列表中,找到下列三项
Remote Desktop Configuration
Remote Desktop Services
Remote Desktop Services UserMode
将上述三项Windows后台服务设置为禁用。
二、关闭与3389端口相关的前台程序
依次点击:开始->设置->控制面板->系统
选择“系统属性”窗口中的“远程”标签
1、将“启用远程协助并允许从这台计算机发送邀请”前面的对号去除
2、将“启用这台计算机上的远程桌面”前面的对号去除
重启电脑,即可将3389端口彻底关闭
注:如果你的系统登录密码为空或过于简单,且23、135、139这些端口尚未并闭,则很容易通过这些端口再次远程开启3389端口,本次操作也就没有任何意义。
修改服务器端的端口设置 ,注册表有2个地方需要修改。 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] PortNumber值,默认是3389,修改成所希望的端口,如6222。[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp]PortNumber值,默认是3389,同样修改成所希望的端口值6222。
要注意的是:当你的计算机修改完端口号后要想继续使用远程桌面,并且计算机有启用防火墙,则必须在防火墙例外中添加所修改的端口号。否则用3389与修改后的端口号都将连不上远程桌面。
#1126
#1127
<?php namespace Addons\Huiyuan\Controller; use Home\Controller\AddonsController; class HuiyuanController extends AddonsController{ var $model; function _initialize() { $this->model = $this->getModel ( 'huiyuan' ); parent::_initialize (); $act = strtolower ( _ACTION ); $type = I ( 'type' ); $res ['title'] = '会员列表'; $res ['url'] = addons_url ( 'Huiyuan://Huiyuan/lists' ); $res ['class'] = $act == 'lists' || $type == 'text' ? 'current' : ''; $nav [] = $res; $res ['title'] = '文本注册'; $res ['url'] = addons_url ( 'Huiyuan://Huiyuan/dr' ); $res ['class'] = $act == 'dr' || $type == 'textarea' ? 'current' : ''; $nav [] = $res; $res ['title'] = '批量导入会员注册'; $res ['url'] = addons_url ( 'Huiyuan://Huiyuan/daoru' ); $res ['class'] = $act == 'daoru' || $type == 'textarea' ? 'current' : ''; $nav [] = $res; $this->assign ( 'nav', $nav ); } //随机盐 function generate_rand($l){ $c= "ABCDEFGHJKLMNPQRSTUVWXYabcdefghijkmnpqrstuvwxy3456789"; srand((double)microtime()*1000000); for($i=0; $i<$l; $i++) { $rand.= $c[rand()%strlen($c)]; } return $rand; } function ree($tel,$pass,$yue){ if(!$tel) return false; $mapc['tel']=$tel; $s_tel=M('huiyuan')->where($mapc)->limit(0,1)->select(); $s_tel=($s_tel['0']['id']); if($s_tel) return false; //写入注册信息 $data ['token'] = get_token (); //$data['rip']=$this->getip(); $data['tel']=($tel+0);//$_SESSION['check_mobile'];//$_POST['tel']; $salt=$this->generate_rand(9);//rand(100000,999999); $data['salt']=$salt; $data['pass']=md5($pass.$salt); $data['cTime']=time(); $data['mTime']=$data['cTime']; $saltr=$this->generate_rand(9); $data['saltr']=$saltr; //$data['lip']=$data['rip']; $data['zcj']=0;//$_SESSION['guanzhu_choujiang']; //$data['logg']=md5($data['rip'].$data['saltr']);//md5($data['rip'].$data['mTime'].$data['saltr']); //注册送抽奖次数 //$nnpn=($this->config); //$nnpn=$nnpn['cjzss']+0; //$nnpncjzssdd=($this->config); //$nnpncjzssdd=$nnpncjzssdd['cjzssdd']+0; //$data['dtime']=date('Ymd'); //if($nnpn) $data['zcj']=$_SESSION['guanzhu_choujiang']+$nnpn;//$_SESSION['guanzhu_choujiang']+$nnpn; $res = M('Huiyuan')->add($data); if($res){ $dataa['uid']=$res; $dataa['tel']=$data['tel']; $dataa['yue']=($yue+0); $dataa['mtime']=time(); $aaasss=M('recharge')->add($dataa); //echo '成功注册 '.$tel.'<br />'; } return $aaasss; } function daoru(){ if (! is_login ()) { redirect ( U ( 'home/user/login', array ( 'from' => 2 ) ) ); } /*if($_POST){ $this->daorudata(); exit; }*/ //dump($_POST); $this->display (); } function daorudata(){ $new_text='请上传Excel文件'; if(! empty ( $_FILES ['file_stu'] ['name'] )){ $file = $_FILES ['file_stu'] ['tmp_name']; $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] ); $file_type = $file_types [count ( $file_types ) - 1]; /*判别是不是.xls文件,判别是不是excel文件*/ if (strtolower ( $file_type ) != "xls"){ $new_text='不是Excel文件,重新上传'; //exit; } else{ // 判断文件是什么格式 $type = pathinfo($file); $type = strtolower($type["extension"]); $type=$type==='csv' ? $type : 'Excel5'; ini_set('max_execution_time', '0'); Vendor('PHPExcelN.PHPExcel'); // 判断使用哪种格式 $objReader = \PHPExcel_IOFactory::createReader($type); $objPHPExcel = $objReader->load($file); $sheet = $objPHPExcel->getSheet(0); // 取得总行数 $highestRow = $sheet->getHighestRow(); // 取得总列数 $highestColumn = $sheet->getHighestColumn(); //循环读取excel文件,读取一条,插入一条 $data=array(); //从第一行开始读取数据 //dump($data); for($j=2;$j<=$highestRow;$j++){ //从A列读取数据 for($k='A';$k<='B';$k++){ // 读取单元格 //$k='A'; if($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()){ $vsfsd=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); //电话 if($k=='A'){ $tel=$vsfsd; } if($k=='B'){ $yue=$vsfsd; } $newdr=$tel.'#'.$yue; /*$data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue(); if($k=='A') $newdr[$k]['tel']=$vsfsd; $pass=str_split('0'.$vsfsd,6); if($k=='A') $newdr[$k]['pass']=$pass['1']; $daoruok=$this->ree($newdr[$k]['tel'],$newdr[$k]['pass']);*/ //成功注册 /*if($daoruok){ $daoruokstr.='成功注册'.$newdr[$k]['tel'].'<br>'; }else{ $daoross.='导入失败'.$newdr[$k]['tel'].'<br>'; }*/ /*$daoross.=$newdr[$k]['tel'].'<br>'; if($j==$highestRow) $daoross.='会员数据导入结束。<br>';*/ //$this->display (); } } $newdr=explode('#',$newdr); $pass=str_split('0'.$newdr['0'],6); $pass=$pass['1']; $daoruok=$this->ree($newdr['0'],$pass,$newdr['1']); //成功注册 if($daoruok){ $daoruokstrsss='<span style="color:blue;">成功注册</span>'; }else{ $daoruokstrsss='<span style="color:red;">导入失败/手机已注册</span>'; } $daoross.='<p style="color:#000;">第'.($j-1).'条 电话 '.$newdr['0'].' 余额 '.$newdr['1'].' '.$daoruokstrsss.'</p>'; if($j==$highestRow) $daoross.='<br><p style="color:blue;">会员数据导入结束。</p>'; //$this->display (); } //dump($data); $new_text='<p style="color:blue;">正在导入中...</p>'; //return $data; } } $this->assign ( 'daoruokstr', $daoruokstr ); $this->assign ( 'daoross', $daoross ); $this->assign ( 'new_text', $new_text ); $this->display (); } function dr(){ if (! is_login ()) { redirect ( U ( 'home/user/login', array ( 'from' => 2 ) ) ); } //echo get_token ();exit; //$templateFile = $this->model ['template_list'] ? $this->model ['template_list'] : ''; //$this->display ( $templateFile ); $dr=I ( 'dr' ); if($dr) { //$this->error ( $Model->getError () ); //dump(I ( 'dr' )); //$dr=str_ireplace("\r\n",'#',$dr); //$nnpnxxee=str_ireplace("购",'',$nnpnxxee); $dr=explode("\r\n",$dr); foreach ($dr as $k=>&$vsfsd) { $vsfsd = str_ireplace(' ','',$vsfsd); $vsfsd=explode('#',$vsfsd); $newdr[$k]['tel']=$vsfsd['0']; $pass=str_split('0'.$vsfsd['0'],6); $newdr[$k]['pass']=$pass['1']; $this->ree($newdr[$k]['tel'],$newdr[$k]['pass'],$vsfsd['1']); } //dump($newdr); $url = U ( 'lists' ); $this->success ( '批量注册完成!', $url,3 ); exit; } else $this->display (); } public function del() { } public function add() { $this->del(); return false; } }#1128
<?php namespace Addons\Huiyuan\Controller; use Home\Controller\AddonsController; class HuiyuanController extends AddonsController{ var $model; function _initialize() { $this->model = $this->getModel ( 'huiyuan' ); parent::_initialize (); $act = strtolower ( _ACTION ); $type = I ( 'type' ); $res ['title'] = '会员列表'; $res ['url'] = addons_url ( 'Huiyuan://Huiyuan/lists' ); $res ['class'] = $act == 'lists' || $type == 'text' ? 'current' : ''; $nav [] = $res; $res ['title'] = '文本注册'; $res ['url'] = addons_url ( 'Huiyuan://Huiyuan/dr' ); $res ['class'] = $act == 'dr' || $type == 'textarea' ? 'current' : ''; $nav [] = $res; $res ['title'] = '批量导入会员注册'; $res ['url'] = addons_url ( 'Huiyuan://Huiyuan/daoru' ); $res ['class'] = $act == 'daoru' || $type == 'textarea' ? 'current' : ''; $nav [] = $res; $this->assign ( 'nav', $nav ); }#1129
只有技术不行,得有过人的胆识和豁出去的意志,这种创业者的特质,个人觉得必须必备。
#1130
#1131
<?php //实现数学上的组合数算法 header("content-type:text/html;charset=utf-8"); /** * 在数组$a中任意m个元素组合 * * @param array $a 候选的集合 * @param int $n 候选的集合大小 * @param int $m 组合元素大小 * @param array $b 储存当前组合中的元素,这里储存的是元素键值 * @param int $M 相当一个常量,一直保持不变 * @return */ function combine($a,$n,$m,$b,$M){ for($i=$n;$i>=$m;$i--){ $b[$m-1]=$i-1; if($m > 1){ $combine[]=combine($a,$i-1,$m-1,$b,$M); }else{ $onecombine=''; for($j=$M-1;$j>=0;$j--){ $onecombine.=$a[$b[$j]]; } $combine[]=$onecombine; $onecombine=''; } } return $combine; } /** * 递归输出数组 * * @param array $arr 待输出的数组 * @return int 返回数组元素个数*/ function recursionarray($arr){ $i=0; foreach($arr as $value){ if(is_array($value)){ $i+=recursionarray($value); }else{ echo $value."<br/>"; $i++; } } return $i; } $a=array('A','B','C','D','E','F','G','H','I','J'); $b=array(); $combine=combine($a,10,5,$b,5); $count=recursionarray($combine); echo "总共有".$count."组合";#1132
#1133
win+r
\\192.168.1.102
http://sunlogin.oray.com/zh_CN/download/
bat
@echo off @explorer \\173.32.255.155#1134
#1135
阀值,阈值的文盲版;阈值,阀值的学究版。
阀fá 控制、开关、把持。1) 机械名词,指在管道中用来控制液体或气体的部件。意为阀门、开关、把持。如截止阀、减压阀、安全阀。
阈yù 范围,边界,程度。1) 门槛、门限,引申为边界、界阈、视阈。
可见“阀”与“阈”是词义不同的2个词。那么“阀值”会不会是一个新词呢? 经查,不是。在表达“界限”、“范围”的意思时应该用“阈”而不是“阀”。阈值跟英文threshold value对应。
语言的发展表明,把阈值看成阀值,或直接使用阀值,不是什么大问题,只要能在上下文中也能进行较准确的理解。越来越多的人开始接受这个词的用法。
其次,阈值又叫临界值,是指一个效应能够产生的最低值或最高值。此一名词广泛用于各方面,包括建筑学、生物学、飞行、化学、电信、电学、心理学等,如生态阈值。阀值:这个词最早是没有的,后来国家的咬文嚼字工作组通过统计全国人民使用词语的习惯,发现了阀值这个词。这个词本身是错误的一个词,他的产生是由于把阈值误写成“阀值”。所以早期的阀值和阈值是一个概念。
后来社科院的语言研究所在编制汉语词典的时候把阀值这个词收录了,最早的意思是指界定两种不同事物。
再后来,阀值这个词除了具有界定两种不同事物这个意思外还具有标准线的意思。
最后,阈值在很多领域都有应用
#1136
扁平化管理是企业为解决层级结构的组织形式在现代环境下面临的难题而实施的一种管理模式。当企业规模扩大时,原来的有效办法是增加管理层次,而现在的有效办法是增加管理幅度。当管理层次减少而管理幅度增加时,金字塔状的组织形式就被“压缩”成扁平状的组织形式。
#1137
$("#submitGrade").click(function () { $("#courseStandardVoId tr td").find("input[type='radio']").each(function(){ if($(this).is(":checked")){ alert($(this).val()); } }); }#1138
算法的时间复杂度和空间复杂度合称为算法的复杂度。
1.时间复杂度
(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
(2)时间复杂度 在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
时间频度不同,但时间复杂度可能相同。如:T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。
按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),..., k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
(3)最坏时间复杂度和平均时间复杂度 最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。 这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。
在最坏情况下的时间复杂度为T(n)=0(n),它表示对于任何输入实例,该算法的运行时间不可能大于0(n)。 平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。
指数阶0(2n),显然,时间复杂度为指数阶0(2n)的算法效率极低,当n值稍大时就无法应用。
(4)求时间复杂度
【1】如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。
x=91; y=100;
while(y>0) if(x>100) {x=x-10;y--;} else x++;
解答: T(n)=O(1),
这个程序看起来有点吓人,总共循环运行了1100次,但是我们看到n没有?
没。这段程序的运行是和n无关的,
就算它再循环一万年,我们也不管他,只是一个常数阶的函数
【2】当有若干个循环语句时,算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的。
x=1;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x++;
该程序段中频度最大的语句是(5),内循环的执行次数虽然与问题规模n没有直接关系,但是却与外层循环的变量取值有关,而最外层循环的次数直接与n有关,因此可以从内层循环向外层分析语句(5)的执行次数: 则该程序段的时间复杂度为T(n)=O(n3/6+低次项)=O(n3)
【3】算法的时间复杂度不仅仅依赖于问题的规模,还与输入实例的初始状态有关。
在数值A[0..n-1]中查找给定值K的算法大致如下:
i=n-1;
while(i>=0&&(A[i]!=k))
i--;
return i;
此算法中的语句(3)的频度不仅与问题规模n有关,还与输入实例中A的各元素取值及K的取值有关: ①若A中没有与K相等的元素,则语句(3)的频度f(n)=n; ②若A的最后一个元素等于K,则语句(3)的频度f(n)是常数0。
(5)时间复杂度评价性能
有两个算法A1和A2求解同一问题,时间复杂度分别是T1(n)=100n2,T2(n)=5n3。(1)当输入量n<20时,有T1(n)>T2(n),后者花费的时间较少。(2)随着问题规模n的增大,两个算法的时间开销之比5n3/100n2=n/20亦随着增大。即当问题规模较大时,算法A1比算法A2要有效地多。它们的渐近时间复杂度O(n2)和O(n3)从宏观上评价了这两个算法在时间方面的质量。在算法分析时,往往对算法的时间复杂度和渐近时间复杂度不予区分,而经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。
2.空间复杂度
一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一些为现实计算所需信息的辅助空间。程序执行时所需存储空间包括以下两部分。
(1)固定部分。这部分空间的大小与输入/输出的数据的个数多少、数值无关。主要包括指令空间(即代码空间)、数据空间(常量、简单变量)等所占的空间。这部分属于静态空间。
(2)可变空间,这部分空间的主要包括动态分配的空间,以及递归栈所需的空间等。这部分的空间大小与算法有关。
一个算法所需的存储空间用f(n)表示。S(n)=O(f(n)) 其中n为问题的规模,S(n)表示空间复杂度。
#1139
概念
对于这种特殊的数组,我们可以采用前面提到的二分法来查找数组中特定的元素,这种算法的思想是:每查找一次,便将查找的范围缩小一半,所以叫做二分法查找。
有序数组的优点就是增加了查询的效率,但是它并没有提高删除和插入元素的效率,因此,对于有序数组更适合用于查询的领域。
#1140