存档

文章标签 ‘Linux’

lamp技术心得

2011年6月1日 没有评论

最近一直在做Web数据分析的项目,调用大量的mysql数据库数据,又对其进行计算,用的全是lamp技术,只因为就会lamp开发。 我想大多数从事Web开发的人员都应该是如此,由于Web程序开发简单,不管是asp,php,jsp,只要会基本的Web程序语言,对数据库调用,再加上一个Web主机、Web服务,就可以开发自己想要的网站程序了。因为上手简单,互联网运用得到很大的发展,从事Web开发的人就相当多了。 我这个非计算机专业的大学生,也就这样从事了Web开发。工作了三年,最近又用lamp  对数据做了大量的运算,这来说说对lamp技术,php的了解,讲讲他们的功能所在。 1.软件开发和Web开发 说到软件开发,大家立马会说java.我没有学习过java,但知道java是软件开发语言必选。下图是Tiobe发布的2011年5月编程语言排行。 java第一,可见java语言要软件开发的重要地位。 PHP有些下降,排名第五,但也说明其语言的地位比较重要。PHP 主要运用于Web开发,这一点目前是不可动摇的。 2.asp,php和jsp 对于新学者总是会比较这三种语言,每一种语言都有他有长处,不然就没有他存在的意思。 从上图也可以看出PHP的优势,其它两种语言都没有其中。目前人们说的较多的jsp比php运行要快,这点不要否认,可Web开发的意思在哪里。 Web开发要求的是开发周期短,运营维护成本低。jsp这点做的不好,他对硬件要求的要高一些,由于从java过来的,动不动就要用oracle数据库。php一般都用mysql数据库,安装的硬件要求相对较低。虽说mysql的单表空间在几十或几百M时,性能会急剧下降,可现行的网站,有几M的单表数据存储是能满足需求的,我的lampblog博客,发了三四百篇文章,算个小有流量的博客,也就用了8.5Mb,单表最大7Mb,网站访问速度还是很稳定的。 还有一点要说,就是php开发的速度快,启用一个现成的框架,配置一下数据库连接,造几个前端模版,很快一个网站就出来了。 3.php的框架 说到快速开发,大家都会用框架,因为框架把布局都已定好,只用填内容就好了。国内国外的的框架比较多,较出名的有Zend Framework,CakePHP,他们都开发了很多功能,用户不用写简单的功能,只要用调用他的功能,写入自己的流程序好了。 目前我正在用的是kohana3,他的优点是小巧、安全、易扩展,前面提到的框加安全因该不是问题,功能也比较强大,可问题出在性能上,因为开发了太多的功能,调用的程序太多,性能损失较大。kohana3小巧,定义了很好的架构,具备了其本的功能,安全没得说,很好的考虑了扩展问题,不管是加载第三方程序,还是自己重写自己的功能,都是很方便的,所以我们团队选择了他。 4.php的兄弟:perl ruby python perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl 象C一样强大,象awk、sed等脚本描述语言一样方便。Perl 一般被称为“实用报表提取语言”,php语言也可以扩展perl的代码库。 Ruby 语言通常非常直观,按照编程人认为它应该的方式运行。加上Ruby on Rails的架构,很多人开始加入了行列。 Python具有非常简捷而清晰的语法特点,适合完成各种高层任务。 因为对这几种语言没怎么用,只是一些了解。php可能因为开发的比较早,功能较全,符合程序员大众的需求。这几个语言可只是在某上方面胜于php,后面这几个兄弟的竞争如何不得而知,但目前php使用是最多的。看看wordpress的用户就知道了。 5.php apache mysql 这是我要说的重点,再加上linux,就成了lamp技术,这里不讲如何安装使用,我的博客讲了很多了。 这两天在做大的数据分析计算,按照原有的网页请求流程,请示Url,apache收到请求处理,调用php程序运行,频繁操作数据库,这对大量的分析计算可是不行。 于是我查到了使用php命令行,也就是php-cli方式运行。用shell程序调用php命令行,绕过了apache,这下程序性能提升了很多倍。原来我用的是kohana2.3.4 ,由于对命令行方式支持不是很好,改进了kohana3,这个问题解决了,还有kohana3在性能上也比kohana2.3.4好很多。 这一步解决了很多性能问题。可再用xhprof (php性能分析工具)一分析,主要性能瓶颈转移到了mysql操作上。我用的是kohana3的ORM操作数据库,快速开发方便操作带来了很大的性能问题,于是把所有的SQL找出来,使用kohana3里的DB,这下性能又提升了很多。 之后再次分析性能,主要在数据库读取写入上了。这下开始优化数据库结构了,根据程序功能,合并或分割数据库,还有一个很重要的是创建索引优化SQL查询。以前觉得SQL查询没什么,正常的博客访问不都是提取数据并显示,这些都没有问题的。这次做大量数据分析计算,很多时间是写入、更新数据库,创建索引会加重数据库的写入。最后通过SQL的记录,性能的分析,每一个写入操作,至少要进行十几次的查询操作,性能问题在查询上。能过创建索引优化SQL查询,程序性能又提升好几倍。 这就是我目前所用到的优化技术。 6.shell和php 这是分析过程的一个小插曲。 前面也讲到用shell调用php,我也想到了用shell来处理数据不是更快。可以用shell调用mysql命令,提取数据库的数据,进行处理再写入数据库,效率不是更高。 想法行好,实现成了问题。shell的效率的确很高,他调用外部命令,执行文件操作都是很好的,可问题是对字符串的大量操作成了问题。awk的操作字符串功能实在有限,不能像php那样有大量的字符串操作函数,所以最后不得不放弃这个想法。同时用php操作字符串,读写文件也还是很快的,如果去掉数据库,我的程序性能又可以提升好几倍,可数据的操作不得不用数据库,还好这点小小的性能问题我还是可以接受的。

分类: WEB优化 标签: , , , ,

Linux下用SSH退出符切换SSH会话

2011年5月24日 没有评论

如题进行以下操作: 1.登录远程主机 $ ssh root@192.168.2.236 2. 如果要临时回到本地主机,或者其他的主机,输入退出符号:“~”与“Control-Z”组合 当输入“~”不会立即在屏幕上看到,当按下Control-Z并且按回车之后才显示,如下 remotehost$ ~^Z [suspend ssh] [1]+  Stopped                 ssh 192.168.2.236 localhost$ 3.现你已经回到本地,ssh会在后台运行可以通过jobs 来产看 localhost$ jobs [1]+  Stopped                 ssh 192.168.2.236 4.可以将后台运行的 ssh 会话进程切换到前台, 重新回到远程主机, 而无需输入密码 localhost$ fg %1 ssh 192.168.2.236

分类: Ubuntu 命令 标签:

修改linux的时间时区

2011年5月11日 没有评论

只要一行简单的命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

分类: Ubuntu 命令 标签:

java开发环境搭建

2011年5月7日 没有评论

java开发环境搭建—写给java新手 一、windows下开发环境的搭建 1、从http://java.sun.com/上下载windows平台的JDK,并安装。假设安装目录为:C:\jdk6.0 2、设定相关环境量(以windowsXP)例: 1、右击桌面上“我的电脑”,选择属性 2、再选择“高级”活页,找到系统变量,并点击下面的“新建” 3、变量名:JAVA_HOME ,值:C:\jdk6.0(你的JDK安装目录),点击“确定” 4、以同样的方法新建,变量名:CLASSPATH ,值: %JAVA_HOME%\lib;. 注意,后面是分号与点号(英文的),不能错 5、在系统变量中找到“path”,并点击“修改”,在其对应的值的最后面追加“;%JAVA_HOME%\bin”,引号不在内,一直点“确定”直到所有的窗口关闭 6、打开“运行”窗口,输入“cmd”回车,在出现的提示符窗口下输入:“javac -version”并回车,出现“javac 1.6.0”等类似的信息,则大功告成也。 7、安装你的开发IDE,如Eclipse、JBuilder等,就不多说了 二、linux下开发环境的搭建(以Ubuntu为例) 1、从http://java.sun.com/上下载linux平台的JDK,的bin档; 2、将你下载的bin档放在你想安装的目录,如/opt下面,下面假设放在/opt目录下,文件名为jdk1.6.0.bin 3、打开终端,依次执行下列命令: cd /opt sudo sh jdk1.6.0.bin (其它平台不需要sudo,只要相应的权限就可以) jdk安装完成,安装目录为:/opt/jdk1.6.0 4、设定环境变量 a、编辑/etc/profile文件,在最后面追加以下内容: JAVA_HOME=/opt/jdk1.6.0 CLASSPTH=$JAVA_HOME/lib:. PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME CLASSPATH path b、保存后在终端执行 source /etc/profile (保证你不用重启而加载新设定的环境变量) javac -version 看到“javac 1.6.0”等信息就大功告成 就可以安装你的IDE了,如Eclipse等

分类: WEB开发 标签: ,

shell脚本变量和字符串截取

2011年4月20日 没有评论

变量说明: $ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码(返回值) $- 使用Set命令设定的Flag一览 $* 所有参数列表。如”$*”用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。 $@ 所有参数列表。如”$@”用「”」括起来的情况、以”$1″ “$2″ … “$n” 的形式输出所有参数。 $# 添加到Shell的参数个数 $0 Shell本身的文件名 $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…… 字符串截取 Linux 的字符串截取很有用。有八种方法。 假设有变量 var=http://www.hao.com/123.htm. 一 # 号截取,删除左边字符,保留右边字符。 echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符 即删除 http:// 结果是 :www.hao.com/123.htm 二 ## 号截取,删除左边字符,保留右边字符。 echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / [...]

分类: Ubuntu 命令 标签: ,

十条常用nmap命令行格式

2011年4月5日 没有评论

1) 获取远程主机的系统类型及开放端口 nmap -sS -P0 -sV -O <target> 这里的 < target > 可以是单一 IP, 或主机名,或域名,或子网 -sS TCP SYN 扫描 (又称半开放,或隐身扫描) -P0 允许你关闭 ICMP pings. -sV 打开系统版本检测 -O 尝试识别远程操作系统 其它选项: -A 同时打开操作系统指纹和版本检测 -v 详细输出扫描情况. nmap -sS -P0 -A -v < target > 2) 列出开放了指定端口的主机列表 nmap -sT -p 80 -oG – 192.168.1.* | grep open 3) 在网络寻找所有在线主机 [...]

分类: Ubuntu 命令 标签: , ,

LINUX TOP详解

2011年4月1日 没有评论

top命令 是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。 top – 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total,   1 running, 28 sleeping,   0 stopped,   0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem:    191272k total,   173656k used,    17616k free,    22052k [...]

分类: Ubuntu 命令 标签:

Linux下解压命令大全

2011年4月1日 没有评论

.tar 解压:tar xvf filename.tar 打包:tar cvf filename.tar dirname —————————————————- .gz 解压:gzip -d filename.gz / gunzip filename.gz 压缩:gzip filename —————————————————- .tar.gz/.tgz 解压:tar zxvf filename.tar.gz 压缩:tar zcvf filename.tar.gz dirname —————————————————- .bz2 解压:bzip2 -d filename.bz2 / bunzip2 filename.bz2 压缩:bzip2 -z filename —————————————————- .tar.bz2 解压:tar jxvf filename.tar.bz2 压缩:tar jcvf filename.tar.bz2 dirname —————————————————- .bz 解压:bzip2 -d filename.bz / bunzip2 filename.bz [...]

分类: Ubuntu 命令 标签:

对Web设计和开发人员有用的15个Chrome插件

2011年3月16日 没有评论

1. Aviary Screen Capture 屏幕截图 Aviary Screen Capture让你能够截取网页的屏幕快照。获得屏幕快照后,用Aviary.com的应用程序在浏览器内编辑那幅快照。基本的图像编辑装置让你能够标记(通过画箭头和长方形)、编辑(裁剪、旋转和调整大小)和获得精确的像素色彩。 其特性包括: 保存在桌面、在线主机、或在其它的Aviary应用程序上编辑 即时截图 能够截取所有网页和图像的任何部分 能够截取整张网页 能够添加看得见的备注,比如箭头、文本及在你截取的图片上标出醒目符号 裁剪截取的图片 调整截图的大小、旋转及翻转截图 智能选择和去除截图的元素 从页面上获得色彩信息 快速启动6个Aviary设计工具,包括图像、标记、矢量、调色板、效果和音频编辑器。 2. Chrome SEO 搜索引擎优化 Chrome SEO为搜索引擎优化工具提供了方便的路径。这些工具帮助你做每日搜索引擎优化工作,比如竞争分析、关键词分析、反向链接检查及网页排名检查等。 3. Chrome Sniffer 嗅探器 Chrome Sniffer使Web开发人员能够在网站上运行的检查web框架∕CMS和JavaScript库。这个插件通过一个图标,显示已检测到的框架。目前,这个插件最多可检测70个流行的CMS和JavaScript库。 4. Eye Dropper 滴管 Eye Dropper让你能够从网页或高级颜色选择器上选择颜色。 5. Firebug Lite for Google Chrome Firebug Lite for Google Chrome 并 不是Firebug的替代品(这很不幸),也不是浏览器开发人员的工具。想法,你应该和其它工具一起使用。Firebug Lite提供了大量的视觉效果,类似于Firebug的HTML元素、DOM元素及箱状模式阴影。Firebug Lite还具备其他一些很酷的功能,比如用鼠标检测HTML元素,及实时编辑CSS的特性。 6. IE Tab [...]

分类: 未分类 标签:

自动备份博客程序到gmail邮箱

2011年3月13日 没有评论

1.定时计划任务 定时任务 crontab 用于linux 下的计划任务,博客程序的自动备份任务的起动就是通过此程序进行的。 注意这几个目录 /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly 这些目录下的文件可以分别每小时,每天,每周,每月自动执行一次。 如果是把脚本程序放置在上面的目录里,最好把权限设置为0700。 2.用mutt和msmtp实现发送gmail邮件 ubuntu下用mutt和msmtp实现发送gmail邮件将务份的文件以附件发送到gmail 3.备份sh脚本 #!/bin/bash # lampblog.net back up YYYYMMDD=`date +%Y%m%d` SUBJECT=’Bak_of_lampblog.net_’${YYYYMMDD}; ATTTMP=’/backup/lampblog.net’ rm -rf $ATTTMP mkdir -p $ATTTMP cd $ATTTMP tar zcPf /backup/lampblog_${YYYYMMDD}.tar.gz /var/www/lampblog.net split -b 20m -a 3 -d /backup/lampblog_${YYYYMMDD}.tar.gz ${SUBJECT}.part for file in * do echo “blog backup” | mutt -s [...]

分类: Ubuntu 标签: , ,