#1103
展开↯#1104
作者:广西南宁市
Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的。
1.执行时间
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
2.编写个数不同
window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个
$(document).ready()可以同时编写多个,并且都可以得到执行
3.简化写法
window.onload没有简化写法
$(document).ready(function(){})可以简写成$(function(){});
1.执行时间
window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。
$(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。
2.编写个数不同
window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个
$(document).ready()可以同时编写多个,并且都可以得到执行
3.简化写法
window.onload没有简化写法
$(document).ready(function(){})可以简写成$(function(){});
文章:$(window) $(document) 区别 发表时间:2017-08-10, 10:12:35
#1105
作者:北京市
有一段和《两个只能活一个》共用的配乐。 和《放逐》《复仇》组成三部曲,标题就叫《任达华叫黄秋生去杀黄秋生不想杀的三个人》。
文章:那些质量很高却冷门的电影 发表时间:2017-08-10, 01:32:14
#1107
作者:广西南宁市
去掉边框:
去掉小三角:
#,广西南宁市,2017-08-09,16:49:49, 去掉select三角下拉选项三角形
border: 0; background: transparent;
Run code
Cut to clipboard
去掉小三角:
appearance:none;
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari 和 Chrome */
Run code
Cut to clipboard
文章:巧用边框设置一些效果 发表时间:2017-08-09, 16:48:53
#1108
作者:广西南宁市
<?php
echo count('abcd');//1
echo count('“abcd”');//1
echo strlen("abcd");//4
echo strlen('abcd');//4
echo strlen('“abcd”');//10
Run code
Cut to clipboard
文章:PHP中常见的面试题(附答案) 发表时间:2017-08-09, 10:44:12
#1110
作者:广西南宁市
php数组 按指定的KEY排序
function array_sort($arr,$keys,$orderby='asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k=>$v){
$keysvalue[$k] = $v[$keys];
}
//对key集合排序
if($orderby== 'asc'){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
//根据排序好的key按顺序从原数组中获取对应的值
foreach ($keysvalue as $k=>$v){
$new_array[] = $arr[$k];
}
return $new_array;
}
Run code
Cut to clipboard
文章:js生成随机数(指定范围)的代码 发表时间:2017-08-08, 10:53:29
#1111
作者:广西南宁市
php生成不重复随机数
<?php
/*
* array unique_rand( int $min, int $max, int $num )
* 生成一定数量的不重复随机数
* $min 和 $max: 指定随机数的范围
* $num: 指定生成数量
*/
function unique_rand($min, $max, $num) {
$count = 0;
$return = array();
while ($count < $num) {
$return[] = mt_rand($min, $max);
$return = array_flip(array_flip($return));
$count = count($return);
}
shuffle($return);
return $return;
}
$arr = unique_rand(1, 25, 16);
sort($arr);
$result = '';
for($i=0; $i < count($arr);$i++)
{
$result .= $arr[$i].',';
}
$result = substr($result, 0, -1);
echo $result;
?>
Run code
Cut to clipboard
文章:js生成随机数(指定范围)的代码 发表时间:2017-08-08, 10:52:56
#1112
作者:广西南宁市
手机版网页 阻止屏幕滑动
#,广西南宁市,2017-08-08,10:51:50, 给以某网站域名链接开头的a标签、超链接添加图标logo
//阻止屏幕滑动
$('html,body').on(touchmove,function(e){
e.preventDefault()
});
Run code
Cut to clipboard
#main #content a[href^="https://lizhenqiu.com"]{
letter-spacing:0;
font-size: 14px;
padding:3px 0 3px 27px;
background:url(images/url_yuncode_icon.png) no-repeat -155px -329px;
}
Run code
Cut to clipboard
文章:为iframe添加onclick事件 发表时间:2017-08-08, 10:48:24
#1113
作者:广西南宁市
jquery方式判断checkbox是否选中(.is(":checked"))
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>1-6-1</title>
<!-- 引入 jQuery -->
<script src="../../scripts/jquery-1.3.1.js" type="text/javascript"></script>
<script type="text/javascript">
//等待dom元素加载完毕.
$(document).ready(function(){
var $cr = $("#cr"); //jQuery对象
$cr.click(function(){
if($cr.is(":checked")){ //jQuery方式判断
alert("感谢你的支持!你可以继续操作!");
}
})
});
</script>
</head>
<body>
<input type="checkbox" id="cr"/><label for="cr">我已经阅读了上面制度.</label>
</body>
</html>
Run code
Cut to clipboard
文章:为iframe添加onclick事件 发表时间:2017-08-08, 10:47:23
#1114
作者:广西南宁市
贪婪是重点,名声臭了,最近正面新闻也少了 #,广西南宁市,2017-08-08,09:02:52, 关键是最后一句。 #,广西南宁市,2017-08-08,09:03:01, 有脑子的自然能分辨真假, #,广西南宁市,2017-08-08,09:03:19, 总感觉个人感情评述太多了,再有,为什么这个时候把他提出来说。 #,广西南宁市,2017-08-08,09:03:30, 郎咸平其实就是个渣男
文章:这篇文章的目的不是跟文中的郎的作为很相似吗? 发表时间:2017-08-08, 09:02:30
#1115
作者:广西南宁市
PHP 经典算法
<?
//--------------------
// 基本数据结构算法
//--------------------
//二分查找(数组里查找某个元素)
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;
}
?>
Run code
Cut to clipboard
文章:居然还有这样的操作???没想到吧~这些奇怪的排序算法,你没见过吧? 发表时间:2017-08-07, 15:10:01
#1116
作者:广西南宁市
某公司,一程序员正怼老板,需求那么多,时间那么少,我不干了。旁边一程序员冒出一句,把他工资给我,我给干。老板说,你这么闲是吗。然后两人都被开了 #,广西南宁市,2017-07-28,16:42:02, 什么叫感情用事,就是在同一件事,同一时间不止一种关系。 #,广西南宁市,2017-07-29,10:52:11, 一个有眼光的boss才是企业最大的财富,绝对是真理。 #,广西南宁市,2017-08-07,15:03:11,
2N 原则:
公司原则上不欢迎任何一个管理人员带原单位的人过来,公司是鼓励你一个人来。很多公司是一个部门来一个头,带了很多原部门的人。等这个头走的时候,发现这些人都走了。这样是非常可怕的,走的时候损失也很大,我们不可以。
第二个不可以的是,所有管理人员给你一年的时间,找到可以替代你的公司认可的人员,如果找不到的话,第二年新的业务也不会给你,加薪也不会给你。如果两年之内还是找不到,你不能随便指一个人,我们还要调查。如果找不到的话,公司请你走,必须离职。
2N 原则:
公司原则上不欢迎任何一个管理人员带原单位的人过来,公司是鼓励你一个人来。很多公司是一个部门来一个头,带了很多原部门的人。等这个头走的时候,发现这些人都走了。这样是非常可怕的,走的时候损失也很大,我们不可以。
第二个不可以的是,所有管理人员给你一年的时间,找到可以替代你的公司认可的人员,如果找不到的话,第二年新的业务也不会给你,加薪也不会给你。如果两年之内还是找不到,你不能随便指一个人,我们还要调查。如果找不到的话,公司请你走,必须离职。
文章:在创业这件事上,不成功是普遍常态,成功者才是异数 发表时间:2017-07-27, 17:16:42
#1117
作者:广西柳州市
no.gif透明小小图片
#,广西南宁市,2017-05-10,09:11:32,
局域网连接共享打印机
win+r
#,广西南宁市,2017-05-10,09:15:26,
js随机函数 #,广西南宁市,2017-05-10,09:23:24,
PHP date时间格式化输出

#,广西南宁市,2017-05-10,10:42:47,
文字放大闪动动画css3
#,广西南宁市,2017-05-10,14:41:07,
说明下:
字符串的indexOf方法是无法区分.no-js和.no-js-indeed这样的类;
类名的分隔符可能不是空格,还有可能是\t等。 #,广西南宁市,2017-05-10,14:43:51,
从1开始 至 任意值parseInt(Math.random()*上限+1); 2. 从任意值开始 至 任意值parseInt(Math.random()*(上限-下限+1)+下限);
Math.ceil() 返回大于等于数字参数的最小整数(取整函数),对数字进行上舍入
Math.floor() 返回小于等于数字参数的最大整数,对数字进行下舍入
Math.round() 返回数字最接近的整数,四舍五入 #,广西南宁市,2017-05-10,14:44:50,
生成800-1500的随机整数,包含800但不包含1500
#,广西南宁市,2017-05-12,15:37:14,
图片自适应父元素,并左右上下居中
这种效果多见于矩形盒子里面调用不规则的图片,希望能够达到的效果。这个效果可以很简单的用css来实现,虽然已经烂熟于心,但是并未记录下来。今天看到又有这个需求,所以写了一个简单的demo,放在这里,便于自己记忆。
#,广西南宁市,2017-05-12,15:38:01, vertical-align: middle #,广西南宁市,2017-05-12,17:44:11,
Canvas画布爆破效果
#,广西南宁市,2017-05-15,10:17:55, 135、445好比是facebook
IPsec好比是GFW
GFW屏蔽了facebook让你无法访问但是不等于说GFW把facebook的服务器给关机了
希望这样说能明白 #,广西南宁市,2017-05-15,10:18:29,
bat查指定端口是否开启
#,广西南宁市,2017-05-15,10:19:19,
勒索病毒-批处理关闭135 137 445等端口
永恒之蓝勒索病毒wanacrypt0r
#,广西南宁市,2017-05-15,10:27:16,
制作一个BAT的端口扫描器
#,广西南宁市,2017-05-15,10:31:12,
window dos bat 检查本机开放的端口及端口对应进程的批处理
#,广西南宁市,2017-05-15,10:53:33, 这玩意的内幕就是如果墙一旦放开你们这些温室里的花朵要被撸 #,广西南宁市,2017-05-15,10:59:21, 每次看到有人骄傲地说“我常年裸奔从不中毒”我就等着看今天。 #,广西南宁市,2017-05-15,11:01:01,
ms17-010
十年一遇的远程代码执行漏洞,SYSTEM 权限
95~Win10 全中
不夸张的说,如果不是 MS 补丁出得快
全球 Windows 电脑将无一幸免 #,广西南宁市,2017-05-15,11:01:52, 这次事件是全世界范围内的.很多大公司都中招了. #,广西南宁市,2017-05-15,11:03:16,
据说是 NSA 提前通知微软补洞了,所以才没成为全版本 Windows 通杀漏洞。
蜜汁更新干掉了 Shadow Brokers 的 0day:
https://arstechnica.com/security/2017/04/purported-shadow-brokers-0days-were-in-fact-killed-by-mysterious-patch/ #,广西南宁市,2017-05-15,11:51:53,
虽然人命和电脑文档无法类比,但还是以相近的例子说一下,被绑架禁止交赎金?
警察和政府都无权阻止受害人以交赎金避免损失的行为,因为他人并不能承担受害人的实际损失
可以持“不支持”的立场,但不能禁止
不能以“助长犯罪”去评价受害人,这是道德绑架 #,广西南宁市,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.
自己看看这两条规则有没有开启就行。 #,广西南宁市,2017-05-15,11:57:26,
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 #,广西南宁市,2017-05-15,14:19:47,
代理的概念是一样的,就是你不能直接访问为你提供服务的那台服务器,需要有个中间人(代理)来帮你转达你的请求,或者服务器返回的信息。
从使用者的角度来说,
[正向代理] 就是你明知道你无法直接访问服务器 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)是世界范围内最大的广域网。
广域网是由许多交换机组成的,交换机之间采用点到点线路连接,几乎所有的点到点通信方式都可以用来建立广域网,包括租用线路、光纤、微波、卫星信道。而广域网交换机实际上就是一台计算机,有处理器和输入/输出设备进行数据包的收发处理。 #,广西南宁市,2017-05-15,14:23:35,
正向代理-- 我代理帮我干活。(你发出去的 http 请求是完整的 url,由代理生成 http 请求头)
反向代理-- 我不知道帮我干活的是代理。(服务器自己的负载均衡服务器调度,你不用管)
透明代理-- 我不知道他帮我干了活(著名的劫持, 重组 http 请求) #,广西南宁市,2017-05-15,14:24:12,
正向代理也可以不部署在 LAN 内;反向代理也可以代理 LAN 外的服务器(比如代理 google 的各种网站)。
我觉得正向 /反向的主要区别在于代理服务器是专门为 Client/Server 服务的。 #,广西南宁市,2017-05-15,15:10:33,
“Kill Switch”就是紧急开关的意思。WannaCry勒索病毒此前发作的时候会向某个域名发出请求,如果该域名存在就会退出,不存在则继续攻击,这个域名就是它的Kill Switch。 #,广西南宁市,2017-05-15,15:41:54, 完全不能,你支这些病毒厂商又无耻的在欺骗民众了
为了防止硬盘空间不够的意外,WanaCry 都是原地写入的, 加密数据覆盖到原来的位置
而不是愚蠢的生成一个新文件再把旧的删掉
什么反删除软件屁用都没有,知乎上吹牛逼的垃圾一堆堆的
其素质早就跌到和微信朋友圈一个水准了 #,广西南宁市,2017-05-15,15:43:50, 事实上只能恢复一部分,因为病毒是删除部分做勒索恢复的示例。加密的是没办法恢复的。 #,广西南宁市,2017-05-15,15:44:09, 如果是这样,证明这病毒太恶毒了,不是加密文件而是删除文件后改用随机内容覆盖,这的却比算 DES 快 #,广西南宁市,2017-05-17,10:22:32,@23 ,
在cmd状态下批量执行以下命令可关闭危险端口:
#,广西南宁市,2017-05-17,10:48:00,@34 ,
UPUPW服务器能访问,外网访问不了的解决办法
大家在服务器环境的使用过程中可能会经常碰到服务器能访问外网访问不了的情况,具体表现如下:
1、服务器环境启动正常,PHP探针文件可见,域名解析成功,服务器上输入域名可访问对应网站但外网无法访问。
2、本地局域网上搭建服务器环境,局域网IP已绑定,搭建环境那台机器访问正常局域网内其它机器均无法访问。
以上两种情况都是由windows自带的防火墙已开启但是没有添加80端口造成的
解决办法:
1、开始---设置---控制面板---windows防火墙---例外(入站规则)---添加端口---名称和端口号分别输入80---确定(如果服务器环境已改为非80端口则添加对应端口号)
还有一种办法是在例外(允许应用或功能通过windows防火墙)选择添加程序---浏览---找到对应服务器环境程序如apache版添加httpd.exe,nginx版添加nginx.exe,kangle版添加kangle.exe
2、有另一种情况除了使用以上方法外还要考虑到一个问题,那就是你的服务器或云主机提供商在整体网络上设置了白名单机制,没有在白名单里的域名外网也无法访问到,此时需要你联系服务商把域名添加进去解决问题。
以上两种方法希望能够帮助大家解决问题。 #,广西南宁市,2017-05-17,10:48:59,@35 , 错误代码:414
错误信息:Request-URI Too Long #,广西南宁市,2017-05-17,10:51:30,@36 , nginx 400 Bad request 错误的原因和解决办法
去掉access日志中的400方法
0.7.12以前版本的nginx收到一个空请求,nginx不会去与任何虚拟主机匹配,直接返回400错误,
之后的新版本nginx可以用server_name _;匹配空请求头。
所以如果用的旧版本先升级到0.7.12以后的版本
升级之后添加如下默认虚拟主机server。
增加默认的server到配置文件,以下配置的解释看这里禁止未绑定域名访问
建议把上面这个server保存为default.conf,然后include到主配置文件nginx.conf #,广西南宁市,2017-05-17,11:01:37, 3389端口
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与修改后的端口号都将连不上远程桌面。 #,北京市,2017-08-06,22:00:51,@2 ,
data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==
Run code
Cut to clipboard
局域网连接共享打印机
win+r
\\192.168.1.102
Run code
Cut to clipboard
+Math.random();
Run code
Cut to clipboard
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);
}
}
Run code
Cut to clipboard
说明下:
字符串的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);
Run code
Cut to clipboard
图片自适应父元素,并左右上下居中
这种效果多见于矩形盒子里面调用不规则的图片,希望能够达到的效果。这个效果可以很简单的用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>
Run code
Cut to clipboard
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>
Run code
Cut to clipboard
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
Run code
Cut to clipboard
勒索病毒-批处理关闭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
Run code
Cut to clipboard
制作一个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
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
)
Run code
Cut to clipboard
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=block
Run code
Cut to clipboard
UPUPW服务器能访问,外网访问不了的解决办法
大家在服务器环境的使用过程中可能会经常碰到服务器能访问外网访问不了的情况,具体表现如下:
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”,一般情况下,不要更改这个值,使用默认即可,特殊情况适当修改。
Run code
Cut to clipboard
client_header_buffer_size 128k;
large_client_header_buffers 4 128k;
Run code
Cut to clipboard
去掉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;
}
Run code
Cut to clipboard
建议把上面这个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与修改后的端口号都将连不上远程桌面。
文章:常用html、demo代码 发表时间:2016-03-29, 10:44:47
#1119
作者:广西南宁市
<?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;
}
}
Run code
Cut to clipboard
文章:PHP导出Excel,用来对付那些客户是杠杠的 发表时间:2017-08-04, 19:50:50
#1120
作者:广西南宁市
<?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 );
}
Run code
Cut to clipboard
文章:PHP导出Excel,用来对付那些客户是杠杠的 发表时间:2017-08-04, 19:43:15
#1121
作者:广西南宁市
九死一生,实情。
只有技术不行,得有过人的胆识和豁出去的意志,这种创业者的特质,个人觉得必须必备。 #,广西南宁市,2017-07-27,16:49:02, 文章为了印证自己的观点,举例只举了部分代表。如果加上程维,道哥这种,也许结论就会有所不同。 #,广西南宁市,2017-08-04,16:44:28, 大势不常有,五年逢机遇,十年出巨头。不想做“池中物”,只能找准方向步步为营,方能“一遇风云便化龙”。
只有技术不行,得有过人的胆识和豁出去的意志,这种创业者的特质,个人觉得必须必备。
文章:在创业这件事上,不成功是普遍常态,成功者才是异数 发表时间:2017-07-27, 16:27:22
jQuery(window).height()代表了当前可见区域的大小,而jQuery(document).height()则代表了整个文档的高度,可视具体情况使用.
注意当浏览器窗口大小改变时(如最大化或拉大窗口后) jQuery(window).height() 随之改变,但是jQuery(document).height()是不变的。
$(document).scrollTop() 获取垂直滚动的距离 即当前滚动的地方的窗口顶端到整个页面顶端的距离
$(document).scrollLeft() 这是获取水平滚动条的距离
要获取顶端 只需要获取到scrollTop()==0的时候 就是顶端了
要获取底端 只要获取
scrollTop()>=$(document).height()-$(window).height()
$(document).height() //是获取整个页面的高度 $(window).height() //是获取当前 也就是你浏览器所能看到的页面的那部分的高度 这个大小在你缩放浏览器窗口大小时 会改变 与document是不一样的 根据英文应该也能理解吧
自己做个实验就知道了
$(document).scroll(function(){ $("#lb").text($(document).scrollTop()); }) <span id="lb" style="top:100px;left:100px;position:fixed;"></span><!--一个固定的span标记 滚动时方便查看-->