MySQL一次查询所有分类前N条记录

2016-4-4 寒川 网页编程

遇到这么一个需求,需要查询所有分类的文章记录,同时要求各分类的前N条,文章的数据表大概如下:

id:文章ID

category_id:分类ID

title:标题

……

其它字段等。

现在要求的就是各分类的前N条记录,此处设N为10,MySQL语句如下:

SELECT a.* FROM article a
WHERE 10>=(
SELECT COUNT(*) FROM article b
WHERE a.category_id=b.category_id AND a.id<=b.id)
ORDER BY a.category_id,a.id desc

标签: mysql sql

评论(0) 浏览(8461)

windows10终于装上autocad2016了。

2015-12-31 寒川 计算机

我的win10是官方安装版本,花了不少银子。然而,作为工程技术人员,计算机辅助设计软件autodesk autocad2016肯定是少不了,可惜win10无论如何都没法装上。真是悲剧万分。百度了很久,包括修改注册码,修改.net版本号最终还是无果。今天再次尝试,开始仍然无法安装,不过当查看完安装日志后,发现了办法。安装日志最后一行大概是这样显示的:

Install MicrosoftVisualC++2010SP1Redistributable(x86) Failed Installationaborted,Result=1603

我了个去,明明是win10 64位版本,居然要安装MicrosoftVisualC++2010SP1Redistributable(x86),而且失败了。于是乎自己手动下载了一个MicrosoftVisualC++2010SP1Redistributable(x86),手动安装上,再安装cad,哈哈,居然没提示错误信息了!没提示错误信息了!没提示错误信息了!

分享给大家,希望对那些win10没装成功的朋友提供一下参考。当发现没安装成功时建议也看看安装日志,将错误信息复制出来,解决掉错误日志,自然就能安装了。

MicrosoftVisualC++2010SP1下载地址(注意x86和x64都要安装): http://pan.baidu.com/s/1pKxAErL 

标签: 计算机 autocad2016

评论(1) 浏览(10869)

php利用curl登录页面并post提交数据上传文件

2015-11-26 寒川 网页编程

好久没写博客了,不知道的人或许会以为博客已经停止更新了,其实不然,确实最近比较忙。偶尔有空也只是上来删删一些垃圾留言。今天特地总结一下php的curl,显示用curl登录目标网站,接着携带cookie提交数据,用post方式提交,接着再上传一张本地图片。贴出这比较low的代码备用。闲话就不多说了,下面看招:

<?php
function login(){
	$url = 'http://xx.com/login.php';//登录地址
	$data = array(
		'username'=>'用户',//用户名,注意与原表单一致
		'password'=>'password'//用户密码,注意与原表单一致
	);
	$cookie_file = tempnam('./tmp','cookie');
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');  
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
	curl_setopt($ch, CURLOPT_MAXREDIRS, 1);  
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
	curl_setopt($ch, CURLOPT_AUTOREFERER, 1);  
	curl_setopt($ch, CURLOPT_POST, 1);  
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  
	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);  
	curl_exec($ch);  
	curl_close($ch);
	return $cookie_file;
}

function post(){
	$data = array(
		'name'=>1,//注意与原表单一致
		'test'=>2,//注意与原表单一致
	);
	$cookie = login();
	$url="http://xx.com/xx.php";//数据提交地址
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);  
	$str = curl_exec($ch);  
	curl_close($ch);
	unlink($cookie);
	return $str;
}


function uploadfile(){
	$cookie = login();
	$fields['data'] = 'data';//注意与原表单一致
	$fields['file'] = '@/www/web/xx.jpg;type=image/jpeg;filename=xx.jpg';//注意与原表单一致
	$url='http://xx.com/upload.php';//数据提交地址
	$ch = curl_init($url);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36');
	curl_setopt($ch, CURLOPT_HEADER, 0);  
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt ($ch,CURLOPT_REFERER,'http://59.151.121.119:8082/mss/uploadHkrtImage.jhtml');
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);  
	$str =  curl_exec($ch);  
	curl_close($ch);
	unlink($cookie);
	return $str;
}
具体使用代码的时候记得注释部分修改成自己的。

标签: php curl 模拟登陆 cookie curl上传

评论(0) 浏览(9272)

centos 修改系统时间无效

2015-5-12 寒川 计算机

情况是这样,我的centos服务器时间故障,系统时间显示未2014年02月14日,采用date -s 命令无法修改centos的系统时间,修改及结果如下:

QQ截图20150512122525.jpg

真是蛋疼,采用date -s修改系统时间,修改后在date,结果居然没变。

百度了很多办法没效果,最后居然用必应解决了。

命令如下:

echo 1 > /proc/sys/xen/independent_wallclock

ntpdate cn.pool.ntp.org

然后系统时间就正常了。


附录:

①、若没有ntpdate命令,Centos请执行 yum -y install ntp*

②、更改系统时区为北京时间:cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

③、添加时间同步任务计划:

i:若没有crontab,请执行 yum -y install vixie-cron crontabs

ii:执行 crontab -e

iii:按 i 添加一行:

*/30 * * * *  /usr/sbin/ntpdate -u pool.ntp.org  #每30分钟同步一次时间

iv:按下ESC,并键入  :wq 保存退出即可。


标签: linux CentOS 系统时间

评论(0) 浏览(9154)

用mod_speling模块让linux下的apache不区分大小写

2015-3-18 寒川 计算机

大概是这样一个情况,有一套windows的php程序,现在准备移植到linux下面,然而,由于各种原因,源程序中对文件目录的大小写很不敏感,若逐一修改源代码,显得费时,比如有的地方用的是./Js/xx.js,有的地方又用的./js/xx.js,还有各种图片路径大小写相当混乱。在懒得修改源程序的情况下,首先想到的是如何让apache服务器能不区分url路径的大小写,百度一下,出来一大堆,然而大多讲的很粗略。经过短时间琢磨,下面将详细的介绍一下linux下面如何安装mod_speling达到让apache不区分路径大小写的目的。测试环境:wdcp面板,apache版本为2.2.24,其他版请参考本文配置。下面进入正题:

1、下载apache源码,因为没找到2.2.24版本的apache源码,我直接下载的2.2.29版本的apache,虽然此版本有点差异,但是还好mod_speling能使用。apache 2.2.29下载地址:http://httpd.apache.org/download.cgi

2、解压源码,找到httpd-2.2.29/modules/mappers目录,将其上传至linux服务器的/www/wdlinux/httpd-2.2.24/bin/目录。

3、cd至linux服务器的/www/wdlinux/httpd-2.2.24/bin/mappers/,然后运行/www/wdlinux/httpd-2.2.24/bin//apxs -c -i -a mod_speling.c。

4、查看/www/wdlinux/httpd-2.2.24/modules/mod_speling.so这个文件是否已经生成,同时查看/www/wdlinux/httpd-2.2.24/conf/httpd.conf中是否已经添加LoadModule speling_module     modules/mod_speling.so,若没有,且/www/wdlinux/httpd-2.2.24/modules/下面存在mod_speling.so文件,请手动添加。

5、在/www/wdlinux/httpd-2.2.24/conf/httpd.conf文件最后一行添加CheckSpelling  on,以启用模块。

6、重启apache服务,server httpd restart,若无意外,应该就成功安装了mod_speling模块。

祝你好运!

标签: linux apache mod_speling

评论(1) 浏览(11990)

linux创建目录连接

2015-2-16 寒川 计算机

linux创建目录链接命令如下:


ln -s /www/web/web1/images images #在当前目录创建/www/web/web1/images链接。


这样做的目的,比如,我有个网站,web1.com,想将图片放到img.web1.com下面,这样采用目录链接,在img.web1.com就可以访问图片,利于网站提速。

标签: linux 网站 ln

评论(2) 浏览(11372)

linux netstat命令使用收集,查看80端口连接数

2014-9-3 寒川 计算机

服务器上的一些统计数据:

1)统计80端口连接数
netstat -nat|grep -i "80"|wc -l

2)统计httpd协议连接数
ps -ef|grep httpd|wc -l

3)、统计已连接上的,状态为“established
netstat -na|grep ESTABLISHED|wc -l

4)、查出哪个IP地址连接最多,将其封了.
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

---------------------------------------------------------------------------------------------

1、查看apache当前并发访问数:
netstat -an | grep ESTABLISHED | wc -l

对比httpd.conf中MaxClients的数字差距多少。

2、查看有多少个进程数:
ps aux|grep httpd|wc -l

3、可以使用如下参数查看数据
server-status?auto

#ps -ef|grep httpd|wc -l
1388
统计httpd进程数,连个请求会启动一个进程,使用于Apache服务器。
表示Apache能够处理1388个并发请求,这个值Apache可根据负载情况自动调整。

#netstat -nat|grep -i "80"|wc -l
4341
netstat -an会打印系统当前网络链接状态,而grep -i "80"是用来提取与80端口有关的连接的,wc -l进行连接数统计。
最终返回的数字就是当前所有80端口的请求总数。

#netstat -na|grep ESTABLISHED|wc -l
376
netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。 然后wc -l统计。
最终返回的数字就是当前所有80端口的已建立连接的总数。

netstat -nat||grep ESTABLISHED|wc - 可查看所有建立连接的详细记录

查看Apache的并发请求数及其TCP连接状态:
Linux命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的
SYN_RECV表示正在等待处理的请求数;
ESTABLISHED表示正常数据传输状态;
TIME_WAIT表示处理完毕,等待超时结束的请求数。

---------------------------------------------------------------------------------------------

查看httpd进程数(即prefork模式下Apache能够处理的并发请求数):
Linux命令:
     ps -ef | grep httpd | wc -l

查看Apache的并发请求数及其TCP连接状态:

Linux命令:
     netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057

说明:
   SYN_RECV表示正在等待处理的请求数;
   ESTABLISHED表示正常数据传输状态;
   TIME_WAIT表示处理完毕,等待超时结束的请求数。

标签: linux netstat

评论(1) 浏览(32678)

Powered by emlog 蜀ICP备12030225号

川公网安备 51042102000001号

sitemap