[WordPress]wordpress防止xmlrpc.php大量消耗服务器资源

mikel阅读(1282)

最近发现访问自己的blog网站的时候,变的很慢,有时候居然无法响应;
到服务器跟踪了下访问日志,有大量的提交到xmlrpc.php的操作,ip地址也是不段变化中.

搜索了下看原理可以利用此漏洞文件进行http的DDOS攻击,还有可能被破解用户口令密码.
也没有什么高招 ,只是 删除文件或者拒绝访问即可(至少不再消耗php解析资源)
解决办法:

方法一:删除或者改个名字即可 xmlrpc.php –> newxmlrpc.php (反正让它不存在)

方法二:在nginx服务器配置文件 加

location ~* /xmlrpc.php {
deny all;
}

计算机图形学、数字图像处理、计算机视觉之间的区别与联系 - lauzhishuai - 博客园

mikel阅读(768)

来源: 计算机图形学、数字图像处理、计算机视觉之间的区别与联系 – lauzhishuai – 博客园

三者之间既有区别,又有联系,不确切的描述:

计算机图形学≈画图

计算机视觉≈看图

数字图像处理≈看图前沐浴更衣焚香做好各种仪式,然后再看图

计算机图形学(Computer Graphics)讲的是图形,也就是图形的构造方式,是一种从无到有的概念,从数据得到图像。是给定关于景象结构、表面反射特性、光源配置及相机模型的信息,生成图像。

计算机视觉(Computer Vision)是给定图象,从图象提取信息,包括景象的三维结构,运动检测,识别物体等。 

数字图像处理(Digital Image Processing)是对已有的图像进行变换、分析、重构,得到的仍是图像。

模式识别(PR)本质就是分类,根据常识或样本或二者结合进行分类,可以对图像进行分类,从图像得到数据。

Computer Graphics和Computer Vision是同一过程的两个方向。Computer Graphics将抽象的语义信息转化成图像,Computer Vision从图像中提取抽象的语义信息。Image Processing探索的是从一个图像或者一组图像之间的互相转化和关系,与语义信息无关。总之,计算机图形学是计算机视觉的逆问题,两者从最初相互独立的平行发展到最近的融合是一大趋势。图像模式的分类是计算机视觉中的一个重要问题,模式识别中的许多方法可以应用于计算机视觉中。

区别:
Computer Graphics,简称 CG 。输入的是对虚拟场景的描述,通常为多边形数组,而每个多边形由三个顶点组成,每个顶点包括三维坐标、贴图坐标、rgb颜色等。输出的是图像,即二维像素数组。
Computer Vision,简称 CV。输入的是图像或图像序列,通常来自相机或usb摄像头。输出的是对于图像序列对应的真实世界的理解,比如检测人脸、识别车牌。
Digital Image Processing,简称 DIP。输入的是图像,输出的也是图像。Photoshop中对一副图像应用滤镜就是典型的一种图像处理。常见操作有模糊、灰度化、增强对比度等。

联系:
CG 中也会用到 DIP,现今的三维游戏为了增加表现力都会叠加全屏的后期特效,原理就是 DIP,只是将计算量放在了显卡端。
CV 更是大量依赖 DIP 来打杂活,比如对需要识别的照片进行预处理。
最后还要提到近年来的热点——增强现实(AR),它既需要 CG,又需要 CV,当然也不会漏掉 DIP。它用 DIP 进行预处理,用 CV 进行跟踪物体的识别与姿态获取,用 CG 进行虚拟三维物体的叠加。

简单点说:1 计算机视觉,里面人工智能的东西更多一些,不仅仅是图像处理的知识,还涵盖了人工智能,机器学习等领域知识;2,计算机图形学,主要涉及图形成像及游戏类开发,如opengl等,还有就是视频渲染等;3,图像处理,这个主要针对图像图像的基本处理,如图像检索或则图像识别,压缩,复原等等操作。

 

计算机图形学和数字图像处理是比较老的技术。计算机视觉要迟几十年才提出。
计算机图形学和数字图像处理的区别在于图形和图像。
图形是矢量的、纯数字式的。图像常常由来自现实世界的信号产生,有时也包括图形。
而图像和图形都是数据的简单堆积,图像是像素的叠加,图形则是基本图元的叠加。计算机视觉要从图像中整理出一些信息或统计数据,也就是说要对计算机图像作进一步的分析。计算机图形学的研究成果可以用于产生数字图像处理所需要的素材,计算机视觉需要以数字图像处理作为基础。计算机视觉与数字图像处理的这种关系类似于物理学和数学的关系。

另外,如果不是浙江大学的或者中科院计算所的,不建议做计算机图形学这一方向,难度太大(图形比图像虽然表面上只高一维,但实际上工作量大了好多倍;其次,图像,国内外差距目前已经很小,好发重要期刊;图形,除上面两个单位和微软外,国内外差距很大,不好发重要期刊)

数字图像处理主要是对已有的图像,比如说可见光的图像、红外图像、雷达成像进行噪声滤除、边缘检测、图像恢复等处理,就像用ps 处理照片一样的。人脸识别啊、指纹识别啊、运动物体跟踪啊,都属于图像处理。去噪有各种滤波算法;其他的有各种时频变化算法,如傅里叶变化,小波变换等,有很多这方面的书籍。
图形学主要研究如何生成图形的,像用autoCAD作图,就是图形学中算法的应用。各种动漫软件中图形算法的生成等。

计算机图形学、数字图像处理、计算机视觉之间的区别与联系 - lauzhishuai - 博客园

mikel阅读(1168)

来源: 计算机图形学、数字图像处理、计算机视觉之间的区别与联系 – lauzhishuai – 博客园

三者之间既有区别,又有联系,不确切的描述:

计算机图形学≈画图

计算机视觉≈看图

数字图像处理≈看图前沐浴更衣焚香做好各种仪式,然后再看图

计算机图形学(Computer Graphics)讲的是图形,也就是图形的构造方式,是一种从无到有的概念,从数据得到图像。是给定关于景象结构、表面反射特性、光源配置及相机模型的信息,生成图像。

计算机视觉(Computer Vision)是给定图象,从图象提取信息,包括景象的三维结构,运动检测,识别物体等。 

数字图像处理(Digital Image Processing)是对已有的图像进行变换、分析、重构,得到的仍是图像。

模式识别(PR)本质就是分类,根据常识或样本或二者结合进行分类,可以对图像进行分类,从图像得到数据。

Computer Graphics和Computer Vision是同一过程的两个方向。Computer Graphics将抽象的语义信息转化成图像,Computer Vision从图像中提取抽象的语义信息。Image Processing探索的是从一个图像或者一组图像之间的互相转化和关系,与语义信息无关。总之,计算机图形学是计算机视觉的逆问题,两者从最初相互独立的平行发展到最近的融合是一大趋势。图像模式的分类是计算机视觉中的一个重要问题,模式识别中的许多方法可以应用于计算机视觉中。

区别:
Computer Graphics,简称 CG 。输入的是对虚拟场景的描述,通常为多边形数组,而每个多边形由三个顶点组成,每个顶点包括三维坐标、贴图坐标、rgb颜色等。输出的是图像,即二维像素数组。
Computer Vision,简称 CV。输入的是图像或图像序列,通常来自相机或usb摄像头。输出的是对于图像序列对应的真实世界的理解,比如检测人脸、识别车牌。
Digital Image Processing,简称 DIP。输入的是图像,输出的也是图像。Photoshop中对一副图像应用滤镜就是典型的一种图像处理。常见操作有模糊、灰度化、增强对比度等。

联系:
CG 中也会用到 DIP,现今的三维游戏为了增加表现力都会叠加全屏的后期特效,原理就是 DIP,只是将计算量放在了显卡端。
CV 更是大量依赖 DIP 来打杂活,比如对需要识别的照片进行预处理。
最后还要提到近年来的热点——增强现实(AR),它既需要 CG,又需要 CV,当然也不会漏掉 DIP。它用 DIP 进行预处理,用 CV 进行跟踪物体的识别与姿态获取,用 CG 进行虚拟三维物体的叠加。

简单点说:1 计算机视觉,里面人工智能的东西更多一些,不仅仅是图像处理的知识,还涵盖了人工智能,机器学习等领域知识;2,计算机图形学,主要涉及图形成像及游戏类开发,如opengl等,还有就是视频渲染等;3,图像处理,这个主要针对图像图像的基本处理,如图像检索或则图像识别,压缩,复原等等操作。

 

计算机图形学和数字图像处理是比较老的技术。计算机视觉要迟几十年才提出。
计算机图形学和数字图像处理的区别在于图形和图像。
图形是矢量的、纯数字式的。图像常常由来自现实世界的信号产生,有时也包括图形。
而图像和图形都是数据的简单堆积,图像是像素的叠加,图形则是基本图元的叠加。计算机视觉要从图像中整理出一些信息或统计数据,也就是说要对计算机图像作进一步的分析。计算机图形学的研究成果可以用于产生数字图像处理所需要的素材,计算机视觉需要以数字图像处理作为基础。计算机视觉与数字图像处理的这种关系类似于物理学和数学的关系。

另外,如果不是浙江大学的或者中科院计算所的,不建议做计算机图形学这一方向,难度太大(图形比图像虽然表面上只高一维,但实际上工作量大了好多倍;其次,图像,国内外差距目前已经很小,好发重要期刊;图形,除上面两个单位和微软外,国内外差距很大,不好发重要期刊)

数字图像处理主要是对已有的图像,比如说可见光的图像、红外图像、雷达成像进行噪声滤除、边缘检测、图像恢复等处理,就像用ps 处理照片一样的。人脸识别啊、指纹识别啊、运动物体跟踪啊,都属于图像处理。去噪有各种滤波算法;其他的有各种时频变化算法,如傅里叶变化,小波变换等,有很多这方面的书籍。
图形学主要研究如何生成图形的,像用autoCAD作图,就是图形学中算法的应用。各种动漫软件中图形算法的生成等。

微信小程序中使用Promise进行异步流程处理 - 微信小程序开发联盟 - SegmentFault

mikel阅读(1131)

来源: 微信小程序中使用Promise进行异步流程处理 – 微信小程序开发联盟 – SegmentFault

我们知道,JavaScript是单进程执行的,同步操作会对程序的执行进行阻塞处理。比如在浏览器页面程序中,如果一段同步的代码需要执行很长时间(比如一个很大的循环操作),则页面会产生卡死的现象。

所以,在JavaScript中,提供了一些异步特性,为程序提供了性能和体验上的益处,比如可以将代码放到setTimeout()中执行;或者在网页中,我们使用Ajax的方式向服务器端做异步数据请求。这些异步的代码不会阻塞当前的界面主进程,界面还是可以灵活的进行操作,等到异步代码执行完成,再做相应的处理。

一段典型的异步代码类似这样:

function asyncFunc(callback) {
  setTimeout(function () {
    //在这里写你的逻辑代码
    //...

    //逻辑代码结束,执行一个回调函数
    callback();
  }, 5000);
}

或者:

function getAccountInfo(callback, errorCallback) {
  wx.request({
    url: '/accounts/12345',
    success: function (res) {
      //...
      callback(data);
    },
    fail: function (res) {
      //...
      errorCallback(data);
    }
  });
}

然后我们这样调用:

asyncFunc(function () {
  console.log("asyncFunc() run complete");
});

getAccountInfo(function (data) {
  console.log("get account info successfully:", data);
}, function () {
  console.error("get account info failed");
});

这是一种使用了回调函数来控制代码执行流程的方式。这样看起来没问题,也挺容易理解。

但是,如果我们一段代码中,异步操作太多,又要保证这些异步操作是有顺序的执行,那我们的代码就看起来非常糟糕,就像这样:

asyncFunc1(function(){
  //...
  asyncFunc2(function(){
    //...
    asyncFunc3(function(){
      //...
      asyncFunc4(function(){
        //...
        asyncFunc5(function(){
           //...
        });
      });
    });
  });
});

这样的代码可读性和可维护性可想而知了。还有,回调函数真正的问题在于:

它剥夺了我们使用 return 和 throw 这些关键字的能力。那有什么办法来改善这个问题呢?答案是肯定的,Promise这种概念的产生,很好地解决了这一切。关于什么是Promise,一搜一大把介绍,我这里就不复制粘贴了,我主要是讲一下我们怎么用它来解决我们的问题。

我们来看一下,上面的例子如果使用Promise,它会是什么样子?我们先将这些函数变成Promise的方式:

function asyncFunc1(){
  return new Promise(function (resolve, reject) {
    //...
  })
}

// asyncFunc2,3,4,5也实现成跟asyncFunc1一样的方式…然后看一下他们是怎么样被调用的:

asyncFunc1()
  .then(asyncFunc2)
  .then(asyncFunc3)
  .then(asyncFunc4)
  .then(asyncFunc5);

这样,这些异步函数就会按照顺序一个一个依次执行了。

ES6中原生支持了Promise,不过在原生不支持Promise的环境中,我们有很多第三方库来支持,比如Q.js和Bluebird。它们一般都除了提供标准Promise的API外,还提供了一些标准之外但非常有用的API,使得异步流程的控制更加优雅。

从微信小程序的API文档中我们可以看到,框架提供的JavaScript API中很多函数其实都是异步的,如wx.setStorage(), wx.getStorage(), wx.getLocation()等等,它们也是提供的回调的处理方式,在参数中传入success, fail,complete回调函数,就可以对运行成功或失败进行分别处理。

如:

wx.getLocation({ 
  type: 'wgs84', 
  success: function(res) { 
    var latitude = res.latitude 
    var longitude = res.longitude 
    var speed = res.speed 
    var accuracy = res.accuracy 
  },
  fail: function() {
    console.error("get location failed")
  }
})

我们能不能让微信小程序的异步API支持Promise呢?答案是肯定的,我们当然可以一个一个的用Promise去包装这些API,但是这个还是比较麻烦的。不过,由于小程序的API的参数格式都比较统一,只接受一个object参数,回调都是在这个参数中设置,所以,这为我们的统一处理提供了便利,我们可以写一个非侵入性的工具方法,来完成这样的工作:

假设我们将这个工具方法写到一个名为的util.js的文件中:

var Promise = require('../libs/bluebird.min')  //我用了bluebird.js

function wxPromisify(fn) {  
  return function (obj = {}) {    
    return new Promise((resolve, reject) => {      
      obj.success = function (res) {        
        resolve(res)      
      }      

      obj.fail = function (res) {        
        reject(res)      
      }      

      fn(obj)    
    })  
  }
}

module.exports = {  
  wxPromisify: wxPromisify
}

之后,我们来看一下如何使用这个方法,将原来回调方式的API变成Promise的方式:

var util = require('../utils/util')

var getLocationPromisified = util.wxPromisify(wx.getLocation)

getLocationPromisified({
  type: 'wgs84'
}).then(function (res) {
  var latitude = res.latitude 
  var longitude = res.longitude 
  var speed = res.speed 
  var accuracy = res.accuracy 
}).catch(function () {
  console.error("get location failed")
})

是不是很容易理解?

关于使用Promise处理异步流程,就先讲到这里,有什么疑问,可以留言给我。不对之处,欢迎指正。
相关阅读:
一斤代码深入理解系列《一》:微信小程序事件机制
一斤代码深入理解系列《二》:微信小程序样式机制
一斤代码深入理解系列《三》:微信小程序和服务器通信

微信小程序 warning: Now you can provide attr "wx:key" for a "wx:for" to improve performance.

mikel阅读(2108)

 

来源: 微信小程序 wx:key – 酸柠檬的博客 – 博客频道 – CSDN.NET

在实际开发过程中遇到 warning: Now you can provide attr “wx:key” for a “wx:for” to improve performance.

上网查找资料与查看官方文档发现原因大致如下:

官方解释:

wx:key

如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。


网上资料:

wx:key 的值以两种形式提供

1、wx:key=”property” 其中property是代表在 for 循环的 array 中 item 的某个 property,该 property 的值需要是列表中唯一的字符串或数字,且不能动态改变。类似于字典的key值

2、wx:key=”*this”, 保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字,如:

当数据改变触发渲染层重新渲染的时候,会校正带有 key 的组件,框架会确保他们被重新排序,而不是重新创建,以确保使组

件保持自身的状态,并且提高列表渲染时的效率。

不添加wx:key情况:

<block wx:for-items=”{{userInfoList}}” >,会出现warning: Now you can provide attr “wx:key” for a “wx:for” to improve performance. 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。

推荐array 的 每一个item都添加一个唯一识别的property来管理,这样就可以去掉warning,如果使用保留关键字,好像会出现显示的item都是最后一个的

<block wx:for-items=”{{userInfoList}}” wx:key=”userInfoListId”>

SHOPNC注册国语频繁,会提示“操作频繁,禁止注册”

mikel阅读(1161)

SHOPNC注册国语频繁,会提示“操作频繁,禁止注册”

修改:

路经:

\core\framework\libraries\process.php

看着文字进行自己修改

const MAX_LOGIN = 6;        //密码连续输入多少次被暂时锁定
const MAX_COMMIT = 3;        //连续评论多少次被暂时锁定
const MAX_REG = 3;                //连续注册多少个账号被暂时锁定
const MAX_FORGET = 6;        //找回密码输入多少次被暂时锁定
const MAX_ADMIN = 8;        //后台管理员输入多少次被暂时锁定

PHP中Date获取时间不正确怎么办

mikel阅读(927)

今天用echo $showtime=date(“Y-m-d H:i:s”)获取系统时间时,发现获取的时间与系统的时间不符。

研究了一番发现,PHP默认设置的时间是以格林威治时区为标准的,所以我们必须把PHP的时区设定改为北京时间。

操作方法:

打开php.ini文件,一般在PHP的安装根目录下
找到其中的;date.timezone
删掉date.timezone前面的分号,并改成date.timezone = PRC
存盘,并重新启动Apahce服务(有时用Apache的restart功能会有问题,建议先stop然后再start)
让我们重新检验一下echo $showtime=date(“Y-m-d H:i:s”)。

是不是时间恢复正常了?

PHP写入txt文件换行 - chennan0769的专栏 - 博客频道 - CSDN.NET

mikel阅读(980)

来源: PHP写入txt文件换行 – chennan0769的专栏 – 博客频道 – CSDN.NET

今天遇到了一个问题就是用fwrite写入txt文件的时候用 \r\n不能换行

试了很久都没找到办法!

突然之间想到一个东东以前看书见过后来还是用这个东东给解决了!

现在写出来预防将来忘记也希望能帮到需要帮助的朋友!

直接看代码:

<?PHP
$stream = fopen(“robots.txt”, “w+”);
fwrite($stream, “你换行了吗?\r\n我已经换行了!”);
?>

注意:代码里面不要用单引号,我就是错在这步上如果用单引号输出的将是User-agent: *\r\nDisallow: / 因为PHP里面的单引号是不对内容里面的东西进行替换的所以用双引号,因为双引号PHP是检查里面的东西的!

本人表达能力不好! 没办法凑合着看吧!

完!

上述转载文章

一下是自己的代码

$host = getenv(“HTTP_HOST”);
$agent = getenv( “HTTP_USER_AGENT” );
date_default_timezone_set(‘Asia/Tokyo’); //
$current_date = date(‘d/m/Y == H:i:s’);

if (isset($data) && isset($result)) {
$path = $this->code->getBackupDir();
$file = $this->code->getBackupDir() . ‘entry_’ . date(“YmdHis”) . ‘_’ . $data[‘kessai_no’] . ‘_’ . $result.”.txt”;
foreach ($data as $data1){
$detailLog.= $data1;
}
if(!file_exists($file)){
$handle=fopen($file,”w+”);
fwrite($handle,”———————————————————————————\r\n”);
fwrite($handle,”▼LOG内容\r\n”);
fwrite($handle,”———————————————————————————\r\n”);
fwrite($handle,”———————————————————————————\r\n”);
fwrite($handle,”番号 = “.$data[‘kessai_no’].”\r\n”);
fwrite($handle,”———————————————————————————\r\n”);
fwrite($handle,”———————————————————————————\r\n”);
fwrite($handle,”———————————————————————————\r\n”);
fwrite($handle,”送信日時 : “.$current_date.”\r\n”);
fwrite($handle,”ブラウザ : “.$agent.”\r\n”);
fwrite($handle,”ホスト名 : “.$host.”\r\n”);
fwrite($handle,”———————————————————————————\r\n”);
fclose($handle);

}
}

PHP连接MySQL查询结果中文显示乱码解决方法

mikel阅读(981)

PHP连接MySQL查询结果中文显示乱码解决方法

修改方法:

1.最直接的还是在PHP文件的定不增加

header("Content-type: text/html; charset:utf-8");

如果提示:
Warning: Cannot modify header information – headers already sent by (output started at D:\52xinju\php\register_login.php:88) in D:\52xinju\php\register_login.php on line 90

则直接修改:php.ini中的output_buffering =On;

然后重启apache或者iis就行了

 

windows下使用PHP实现定时执行脚本

mikel阅读(957)

一直以来,使用PHP定时运行脚本都是让大家头痛的问题,但是我们确实可以利用windows的计划任务来定时调用PHP脚本,当然这还要感谢PHP.exe。下面,站长将向大家介绍,如何来实现。

目标:根据系统时间定时执行PHP脚本,不需要人工运行(这里以定时新建一个文本文件并写入内容为例)

解决步骤:

1、建立PHP脚本,如下:
<meta charset=’utf-8′>
<?php
file_put_contents(‘D:\www\root\1.txt’,’ok’);
?>
大家,可以看见,我们在这里对将要创建的文件路径使用了绝对路径,这是因为我们将要通过windows命令行来调用此脚本,由于cmd.exe与我们的web根目录是不一样的,而php的文件目录函数只能在web根目录范围内进行操作,所以我们需要使用绝对路径,否则代码将正确执行但是文件将不会被创建。
2、新建.bat文件,代码如下:

“D:\Program Files\wamp\bin\php\php5.3.10\php.exe” -f “D:\www\test\index.php”
保存,并命名为run.bat。

注意,如果你的PHP目录或web根目录中含有空格,你需要使用引号将整个路径引用起来,否则将运行错误。站长的目录中含有空格,因此使用了引号。创建属于你自己的bat文件时,请根据自身情况决定是否要使用引号和文件的目录。

3、添加windows计划任务
从控制面板中打开计划任务(这里主要针对win7用户进行说明),点击“创建基本任务”,填写名称和描述,然后点击“下一步”,选择任务执行的频率,很好理解,然后点击“下一步”,设置任务的执行时间,然后点击“下一步”,选择“启动程序”,点击“下一步”,点击浏览按钮选择我们建立的“run.bat”文件,点击”下一步“,点击”完成“。

4、运行
根据你设置的时间,系统会定时自动运行,如果你等不及也可以手动执行。在”计划任务“中间栏下方的任务名中查找你刚才新建的任务,鼠标双击该任务,单击右边的运行按钮,系统会弹出一个cmd对话框然后关闭,这说明你的脚本已经正确执行了,到创建文件的目录去检查文件是否创建。