08 2013 档案
摘要:1、下载Oracle 11g R2 for Windows的版本下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html其中包括两个压缩包:win64_11gR2_database_1of2.zip,win64_11gR2_database_2of2.zip2、将两个压缩包解压到同一个目录下,即“database”,然后单击解压目录下的“setup.exe”文件: 说明:图片是网上的,流程一样,不过我的安装目录是:D:\Oracle,图片中.
阅读全文
摘要:php连接访问Oracle是用过oci函数,以下是整理的文档1.安装Apache和php包yum install -y httpd php*2.下载Oracle组件oracle-instantclient-basic-10.2.0.4-1.i386.rpmoracle-instantclient-sqlplus-10.2.0.4-1.i386.rpmoracle-instantclient-devel-10.2.0.4-1.i386.rpmoracle-instantclient-odbc-10.2.0.4-1.i386.rpm#rpm -ivh oracle-instantclient*(四
阅读全文
摘要:JAVA Web 之 struts2文件上传下载演示(二)一、文件上传演示 详细查看本人的另一篇博客http://titanseason.iteye.com/blog/1489397二、文件下载演示1.Web界面 由于我的操作是,先上传文件,然后才能下载,所以,html代码中的fileFileName=${newFileName},而不是等于具体的文件名,大家在自己做项目的时候,可以修改一下html代码: 1 3 7 8 9 10 ">11 12 下载文件13 14 15 16 下载17 18 19 2.Struts配置xml代码: 1 ...
阅读全文
摘要:JAVA Web 之 struts2文件上传下载演示(一)一、文件上传演示1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/lib目录下面即可,需要的jar包如下图所示,其中的javax.servlet.jar是额外添加的,我到网上随便搜了一个下载地址http://ishare.iask.sina.com.cn/f/19185878.html?retcode=0,当然附件里面也有2.配置web.xml 配置WebContent/WEB-INF/web.xml中的内容,如果你的项目已经配置好了struts,这步可以跳过.Xm
阅读全文
摘要:第一步:编写验证码的Action 1 package com; 2 3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics; 6 import java.awt.image.BufferedImage; 7 import java.util.Random; 8 9 import javax.imageio.ImageIO;10 import javax.servlet.ServletOutputStream;11 import javax.servlet.http.HttpServletRequ..
阅读全文
摘要:问题描述:在firefox中返回的JSON数据没有出现乱码,但在GridPanel中显示乱码,而jsp页面和xml文件都是utf-8类型。解决方案:在 PrintWriter out = response.getWriter(); 语句前使用response.setContentType("text/json; charset=utf-8");response.setCharacterEncoding("utf-8");添加后代码如下:XXXAction.java :String json = "{totalProperty:" +
阅读全文
摘要:1. json-lib是一个java类库,提供将Java对象,包括beans, maps, collections, java arrays and XML等转换成JSON,或者反向转换的功能。2. json-lib 主页 :http://json-lib.sourceforge.net/3.执行环境 需要以下类库支持jakarta commons-lang 2.5jakarta commons-beanutils 1.8.0jakarta commons-collections 3.2.1jakarta commons-logging 1.1.1ezmorph 1.0.64.功能示例 这里通
阅读全文
摘要:1234567817181923242526272829303132343536373839/error.jsp404142474851525357/talk.jsp5861http://www.sina.com626364
阅读全文
摘要:在实际应用中可以做用户权限的应用我这里说到的权限管理办法是一个普遍采用的方法,主要是使用到”位运行符”操作,& 位与运算符、| 位或运行符。参与运算的如果是10进制数,则会被转换至2进制数参与运算,然后计算结果会再转换为10进制数输出。它的权限值是这样的2^0=1,相应2进数为”0001″(在这里...
阅读全文
摘要:window下:imp必须要dba用户,所以用sysdba用户登陆,然后给予chnlmgr用户dba权限grant connect,resource,dba to chnlmgr;全部导入imp chnlmgr/chnlmgr@orcl file=tyqk_catalog_data_2013-03-19.dmp full=y ignore=y destroy=y log=SYNCCRBTPRODUCTEVT.dmp.log导入单个表tables=(a,b)imp chnlmgr/chnlmgr@orcl file=tyqk_catalog_data_2013-03-19.dmp tables=
阅读全文
摘要:前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列 类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场 景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示:从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列的一端输入,从另外一端输出;常用的队列主要有以下两种:(当然通过不同的实现方式,还可以延伸出很多不同类型的队列,De.
阅读全文
摘要:、概念:Filter也称之为过滤器,它是Servlet技术中比较激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。二、Filter简介Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。简单说
阅读全文
摘要:在jsp页面中的对象,包括用户创建的对象(例如,javaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义了在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间内,可以在多个页面中被访问。application对象在整个Web应用程序的生命周期中都可以被访问。在JSP中,有4种范围,如下所示。 ·page范围 具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中。在这个范围内的对象,只能在创建对象的页面中访问。可以调用pageContext这个隐含对象的getAttribute()方法来访问具有这种
阅读全文
摘要:① out - javax.servlet.jsp.jspWriter out对象用于把结果输出到网页上。 方法: 1. void clear() ;清除输出缓冲区的内容,但是不输出到客户端。 2. void clearBuffer() ;清除输出缓冲区的内容,并输出到客户端。 3. void close() ;关闭输出流,清除所有内容。 4. void flush() ;输出缓冲区里面的数据。 5. int getBufferSize() ;获取以kb为单位的目前缓冲区大小。 6. int getRemaining() ;获取以kb为单位的缓冲区中未被占用的空间大小。 7. boolean
阅读全文
摘要:(1)声明变量或方法::慎重使用,因为此方法定义的是全局变量(2)java片段(scriptlet):(3)表达式:用于输出表达式的值到浏览器,在表达式中不能加分号(;)
阅读全文
摘要:public void print(String s) {if (s == null) {s = "null";}write(s); } print只是先对s==null转换为"null" public void println(String x) {synchronized (lock) {print(x);println();} }print 可以格式化输出write 不可以 查看源码你会看到 Java代码1 public void print(Object obj) { 2 write(String.valueOf(obj)); 3 } 1 pub
阅读全文
摘要:1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用。基于B/S(Browser/Server)架构的3层开发模式逐渐取代C/S(Client/Server)架构的开发模式,成为开发企业级应用和电子商务普遍采用的技术。在Web应用开发的早期,主要使用的技术是CGI﹑ASP﹑PHP等。之后,Sun公司推出了基于Java语言的Servlet+Jsp+JavaBean技术。相比传统的开发技术,它具有跨平台﹑安全﹑有效﹑可移植等特性,这使其更便于使用和开发。 Java应用程序访问数据库的基本原理 ...
阅读全文
摘要:一、信息系统的开发架构客户层-------显示层-------业务层---------数据层---------数据库1.客户层:客户层就是客户端,简单的来说就是浏览器。2.显示层:JSP/Servlet,用于给浏览器显示。3.业务层:对于数据层的原子操作进行整合。4.数据层:对于数据库进行的原子操作,增加、删除等;二、DAO(Data Access Object)介绍DAO应用在数据层那块,用于访问数据库,对数据库进行操作的类。三、DAO设计模式的结构DAO设计模式一般分为几个类:1.VO(Value Object):一个用于存放网页的一行数据即一条记录的类,比如网页要显示一个用户的信息,则这
阅读全文
摘要:程序清单一览bean类 1 package com.software.usermanager.bean; 2 3 public class Users { 4 private String id; 5 private String name; 6 private String age; 7 public String getId() { 8 return id; 9 }10 public void setId(String id) {11 this.id = id;12 }13 public St...
阅读全文
摘要:List是一个接口,而ListArray是一个类。ListArray继承并实现了List。所以List不能被构造,但可以向上面那样为List创建一个引用,而ListArray就可以被构造。List list; //正确 list=null;List list=new List(); // 是错误的用法List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。而ArrayList list=new ArrayList();创建一对象...
阅读全文
摘要:事务的特性:1) 原子性(atomicity):事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。2) 一致性(consistency):事务在完成时,必须是所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。3) 隔离性(isolation):一个事务的执行不能被其他事务所影响。4) 持久性(durability):一个事务一旦提交,事物的操作便永久性的保存在DB中。即使此时再执行回滚操作也不能撤消所做的更改。事务(Transaction):是并发控制的单元,是用户定义的一个操作序列。这些操作要么
阅读全文
摘要:在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据。此外,我们将努力探索一些场景,如在内存不足时正常运行,以及如何优化批量操作。首先,使用Java JDBC基本的API批量插入数据到数据库中。Simple Batch - 简单批处理我把它叫做简单批处理。要求很简单,执行批量插入列表,而不是为每个INSERT语句每次提交数据库,我们将使用JDBC批处理操作和优化性能。想想一下下面的代码:Bad Code String [] queries = { "insert into employee (na
阅读全文
摘要:1、PreparedStatement接口继承Statement,PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。2、作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数3、在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替 Statement.也就是说,在任何时候都不要使用Statement.基于以下的...
阅读全文
摘要:连接oracle的时候,要导入oracle驱动的jar包。连接的时候,有statement和preparedstatement两种,从代码中可以看出不同。example: 1 package com.jdbc.oracle; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 import java.sql.State.
阅读全文
摘要:今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题。为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用。呵呵注意:要先导入javamail的mail.jar包。以下三段代码是我的全部代码,朋友们如果想用,直接复制即可。第一个类:MailSenderInfo.java 1 package com.util.mail; 2 3 import java.util.Properties; 4 5 /** 6 * 发送邮件需要使用的基本信息 7 */ 8 public class MailSenderInfo { 9 10 ...
阅读全文
摘要:要在文本框中显示控制台输出,我们必须用某种方法“截取”控制台流。换句话说,我们要有一种高效地读取写入到System.out和 System.err 所有内容的方法。如果你熟悉Java的管道流PipedInputStream和PipedOutputStream,就会相信我们已经拥有最有效的工 具。写入到PipedOutputStream输出流的数据可以从对应的PipedInputStream输入流读取。Java的管道流极大地方便了我们截取控制台输出。Listing 1显示了一种非常简单的截取控制台输出方案。【Listing 1:用管道流截取控制台输出】PipedInputStream piped
阅读全文
摘要:1. 缓冲流java IO通过缓冲流来提高读写效率,普通的字节、字符流都是一个字节一个字符这样读取的,而缓冲流则是将数据先缓冲起来,然后一起写入或者读取出来。经常使用的是readLine()方法,表示一次读取一行数据。Java代码: 1 package com.io; 2 3 4 import java.io.BufferedInputStream; 5 import java.io.BufferedOutputStream; 6 import java.io.File; 7 import java.io.Fi...
阅读全文
摘要:一、通过BufferedReader和BufferedWriter来读写文件 使用缓冲流的好处是,能够更高效的读写信息,原理是将数据先缓冲起来,然后一起写入或者读取出来。经常使用的是readLine()方法,表示一次读取一行数据。 1 package org.example.io; 2 3 import java.io.BufferedReader; 4 import java.io.BufferedWriter; 5 import java.io.File; 6 import java.io.FileNotFoundException; 7 import java.io.FileRead..
阅读全文
摘要:向文件尾加入内容有多种方法,常见的方法有两种:RandomAccessFile类可以实现随机访问文件的功能,可以以读写方式打开文件夹的输出流public void seek(long pos)可以将读写指针移到文件尾,参数Pos表示从文件开头以字节为单位测量的偏移位置,在该位置文件指针。public void write(int pos)将数据写到读写指针后面,完成文件的追加。参数pos表示要写入的Byte通过FileWrite打开文件输出流,构造FileWrite时指定写入模式,是一个布尔量,为真时表示写入的内容添加到已有文件的内容的后面,为假时表示重新写文件,以前的记录被清空,默认的值为假
阅读全文
摘要:最近需要用到发送邮件的功能,原本是用PHP自带的mail()函数发送的。php mail()这个方法非常简单、方便、易用,但是除了网易邮箱、QQ邮箱、GMAIL邮箱等常用的邮箱可以收到之外,经测试HOTMAIL、TOM、LIVE等邮箱是收不到此类邮件的。所以就转而使用PHPMailer这个强大的邮件发送类。使用官方自带的一些例子,有些会报 Mailer Error: Could not instantiate mail function. 这个错误。参考了一些资料之后,还是自己写了一个方法。代码很简单,就不多解释了。 1 function mailto($nickname, $address,
阅读全文
摘要:Java流操作有关的类或接口:Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。处理对象
阅读全文
摘要:park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多。 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收。当时在处理时候,查阅不少资料。因为它们使用确实比较少,也很少朋友工作中会用到 它们。 在工作中,我也逐渐了解到park,unpark,ord对于二进制字节处理的强大。 下面我逐一介绍它们。park,unpark,ord函数使用介绍 park函数说明:本函数用来将资料压缩打包到位的字符串之中。语法:pack(format,args+)参数描述format必需。规定在包装数据时所使用的格式。args+可选。规定被包装的一个或多个参数。字符说明a将字符串空
阅读全文
摘要:在做web应用时候,通过web扩展名判断上存文件类型,这个是我们常使用的。有时候我们这样做还不完善。可能有些人上存一些文件,但是他通过修改 扩展名,让在我们的文件类型之内。 单实际访问时候又不能展示(因为扩展名与文件内容不符)。下面这个php类,可能能够给我们带来帮助。注意: 当然首先要对上传的文件进行第一步的简单检测,如文件大小,后缀格式,名字乱码限制等;然后才是后面一步对内容的检测。一、php检测类首先说明下,上面文件头与文件类型映射关系来自网上,如果你有新的文件需要检查,只需要将映射加入即可。 如果你需要知道文件头信息,可以通过工具:winhex打开标准文件查找。如:代码: 1 http
阅读全文
摘要:1. Accept:告诉WEB服务器自己接受什么介质类型,*/* 表示任何类型,type/* 表示该类型下的所有子类型,type/sub-type。 2. Accept-Charset: 浏览器申明自己接收的字符集 Accept-Encoding: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate) Accept-Language::浏览器申明自己接收的语言语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等。 3. Accept-Ranges:WEB服务器表明自己是否接受获取其某个实体的一部分...
阅读全文
摘要:Reference: 《创建Java线程池》[1],《Java线程:新特征-线程池》[2], 《Java线程池学习》[3],《线程池ThreadPoolExecutor使用简介》[4],《Java5中的线程池实例讲解》[5],《ThreadPoolExecutor使用和思考》[6][1]中博主自己通过ThreadGroup实现一个线程池(挺方便理解的),使用的是jdk1.4版本,Jdk1.5版本以上提供了现成的线程池。[2]中介绍了java.util.concurrent.Executors类的API。[3]中介绍了Java中线程池的类体系结构。[4]中有ThreadPoolExecutor的
阅读全文
摘要:这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制等等。一提到池,我们会想到数据库连接池,但是线程池又如何呢?建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。关于我对同步的认识,要缘于大三年的一本书,书名好像是 Java 实战,这本书写得实在太妙了,真正的从理论到实践,从截图分析到.class字节码分析。哇,我想市场上很难买到这么精致的书了。作为一个Java爱好者,我觉得绝对值得一读。我对此书印象最深之一
阅读全文
摘要:线程 Thread 类,和 Runable 接口 比较两者的特点和应用领域.可以,直接继承线程Thread类。该方法编写简单,可以直接操作线程,适用于单重继承情况,因而不能在继承其他类实现Runnable接口。当一个线程已继承了另一个类时,就只能用实现Runnable接口的方法来创建线程,且便于保持程序风格的一致性。我们知道,一个具有生命的线程,具有下面五种状态:创建状态使用new运算符创建一个线程后,该线程仅仅是一个空对象,系统没有分配资源,称该线程处于创建状态(new thread)可运行状态使用start()方法启动一个线程后,系统为该线程分配了除CPU外的所需资源,使该线程处于可运行状
阅读全文
摘要:sftp>lls显示当前目录内容 sftp>lcdg:\进入本地g盘 sftp>putphpMyAdmin.zip将本地g盘下的phpMyAdmin.zip上传到/home sftp>getgscx.zip从/home下载gscx.zip文件到本地g盘以前在windows上,我要用ssh连接服务器,我一般都用putty。 这段时间一直在linux上工作,由于linux上一般都自带ssh客户端,也就是ssh命令了,此外还有一个命令sftp,用来安全的传送文件,今天为了管理linux服务器,用到了linux下的这两个命令行工具,现就其最常用的用法描述如下: 假定服务器ip为
阅读全文
摘要:因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法回答补充:写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用例子1:public class Orc{ public static class A { public String toS...
阅读全文
摘要:1 /*@author shijin 2 * 生产者与消费者模型中,要保证以下几点: 3 * 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized 4 * 2 同一时间内只能有一个消费者消费 消费方法加锁sychronized 5 * 3 生产者生产的同时消费者不能消费 生产方法加锁sychronized 6 * 4 消费者消费的同时生产者不能生产 消费方法加锁sychronized 7 * 5 共享空间空时消费者不能继续消费 消费前循环判断是否为空,空的话将该线程wait,释放锁允许其他同...
阅读全文
摘要:Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.util.List, java.util.Comparator) 第一个方法要求所排序的元素类必须实现java.lang.Comparable接口。第二个方法要求实现一个java.util.Comparator接口。 java.lang.Comparable接口和java.util.Comparator接口是Java对排序最提供最基本支持。这两个接口不但可以用于集合元素排序,还可以用于数组排序。 如果
阅读全文
摘要:首先导入类库:require_once 'PHPExcel.php'; require_once 'PHPExcel\IOFactory.php'; require_once 'PHPExcel\Reader\Excel5.php';然后创建读取对象$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format $objPHPExcel = $objReader->load($uploadfile);//加载读取的
阅读全文
摘要:Win下apache出现问题:“No services installed”安装完apache之后(不是按照默认路径安装的,我的是 D:\ )右下方那个小羽毛图标是没有启动的,左键不好使,而且提示“No services installed”,提示服务器没有被安装。解决办法是:我的安装路径是:D:\Program Files\ApacheSoftware Foundation\Apache2.21、打开cmd定位到:D:\Program Files\ApacheSoftware Foundation\Apache2.2\bin,bin 目录 有个apache.exe 文件2、键入: httpd
阅读全文
摘要:对于多线程有了一点了解之后,那么来看看java.lang.concurrent包下面的一些东西。在此之前,我们运行一个线程都是显式调用了 Thread的start()方法。我们用concurrent下面的类来实现一下线程的运行,而且这将成为以后常用的方法或者实现思路。 看一个简单的例子:Java代码publicclassCacheThreadPool{publicstaticvoidmain(String[]args){ExecutorServiceexec=Executors.newCachedThreadPool();for(inti=0;ishutdownNow();booleanisS
阅读全文
摘要:ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者int cpuNums = Runtime.getRuntime().availableProcessors(); //获取当前系统的CPU 数目ExecutorService executorService =Executors.newFixedThreadPool(cpuNums
阅读全文
摘要:java.util.concurrent并发库是JDK1.5新增的,其作者是Doug Lea,此人是个BOSS级别的天才人物了.有了他提供的类库,使得我们对多线程并发、锁有了很大的帮助,减少了并发难度、并且相对应java本身的synchronized同步有了很大的性能提升.readLock、writeLock使得控制的力度更小、更精确。TimeUnit是一个枚举类型,可以将时间方便快捷的转换为(天、时、分、秒、纳秒)day,hour,minute,second,millli...有了这个类我们可以方便将时间进行转换for example:1、我们将1个小时转换为多少分钟、多少秒1小时转换分钟数
阅读全文
摘要:Java数据库连接接口(JDBC)是Java里定义的一套用于数据库连接和操作的API的集合。有不同的数据库厂商提供这套接口的实现类,对于 Java程序员来说,程序员不需要关心数据库的底层的实现,统一的调用JDBC里面的抽象出来的API来完成数据库的访问功能,在Data access的功能和接口定义中,Java是在别的语言对数据库的URL的描述,其他的一切也就是通过统一的调用来实现了,本文章手机了主要的数据库厂商 提供的Driver和URL,以便大家方便的对各种数据库进行连接的操作。JDBC里统一的使用方法:Class.for(jdbcDriverName); Connectionconn=Dr
阅读全文
摘要:首先还是下载 nginx:http://nginx.org/en/download.html php:http://windows.php.net/download/ mysql:http://dev.mysql.com/downloads/ nginx 选择zip的压缩包,如果你下了gz的压缩包你会发现你找不到一个能执行的东西,gz对应的linux系统的版本,需要编译后才能安装的 对路径要求比较严格的只有nginx,因为这东西最开始就是为了linux下部署用的 mysql这个数据库比较简易,随便下载一个exe的就可以下一步下一步的安装了,这里我用的是很久以前下的一个版本 mysql-noin
阅读全文
摘要:配置文件中://Oracle 测试环境 'DB_TYPE' => 'Oracle', // 数据库类型 'DB_HOST' => '172.0.0.0', // 服务器地址 'DB_NAME' => '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.0.0)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = vasd) ) )', // 数据
阅读全文
摘要:语言学习和咨询经典网址:http://www.nowamagic.net/经典的web技术和特效:http://www.helloweba.com/WEB中常用的正则表达式:http://www.helloweba.com/view-blog-221.html标签云:3D效果:http://www....
阅读全文
摘要:php.ini中output_buffering = off 关闭php的缓存implicit_flush = Off php不会立即输出到浏览器。如果是ON,相当于每次ECHO 立刻执行一个FLUSHoutput_buffering 相当于一层缓冲。还有一层缓冲是php与浏览器之间的。ob_flush函数相当于把php缓冲写入php如浏览器输出层那个缓冲,当然如果 output_buffering=off的话,也就是相当于没有php缓冲,直接就写入了php与浏览器缓冲。flush函数是把php输出层缓冲立即 给浏览器,输出在浏览器上。output_buffering=off 相当于每次ech
阅读全文
摘要:PV(访问量):即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。IP(独立IP):指独立IP数。00:00-24:00内相同IP地址之被计算一次。雅虎统计指数(YSR):通过来源带来的PV、UV、IP,以及用户停留时间、访问情况、用户行为等因素综合分析按不同权重计算得到的,评判来源质量的指数,指数越高,表明来源质量越高。现在大多数的统计工具只统计到IP和PV的层面上,因为在大多情况下IP与UV数相差不大。但由于校园网络、企业机关等一些
阅读全文
摘要:有25幅作品拿去投票,一次投票需要选16幅,单个作品一次投票只能选择一次。前面有个程序员捅了漏子,忘了把投票入库,有200个用户产生的投票序列为空。那么你会如何填补这个漏子?当然向上级反映情况。但是我们这里讨论的是技术,就是需要生成1-25之间的16个不重复的随机数,去填补。具体怎么设计函数呢?将随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数。程序如下:01程序运行如下:12,3,4,6,7,8,9,10,11,12,13,16,20,21,22,24补充几点说明:生成随机数时用了mt_rand()函数。这个函数生成随机数的平均速度要比rand()快四倍。去除数组中的重
阅读全文
摘要:M方法和D方法的区别ThinkPHP 中M方法和D方法都用于实例化一个模型类,M方法 用于高效实例化一个基础模型类,而 D方法 用于实例化一个用户定义模型类。使用M方法如果是如下情况,请考虑使用 M方法:对数据表进行简单的 CURD 操作而无复杂的业务逻辑时只有个别的表有较为复杂的业务逻辑时,将 M方法 与实例化 CommonModel 类进行结合使用M方法 甚至可以简单看着就是对参数表名对应的数据表的操作:$User = M('User');使用D方法如果是如下情况,请考虑使用 D方法:需要使用 ThinkPHP 模型中一些高级功能如自动验证功能(create()方法中实现)
阅读全文
摘要:1.# 表示权限用户(如:root),$ 表示普通用户开机提示:Login:输入用户名password:输入口令 用户是系统注册用户成功登陆后,可以进入相应的用户环境.退出当前shell,输入:exit2.useradd netseek 添加一个netseek用户passwd netseek给netseek这个用户设置密码.(/etc/passwd /etc/group)userdel netseek 删除账号userdel -r netseek 删除账号连同自家目录.[更详细的操作请参阅man page,和账号管理篇]3.查看命令ls -l显示文件列表ls -al-a 显示所有档案及目录 (
阅读全文
摘要:通过网页title来提示用户有新消息这个功能很常见,比如现在的微博,还有一些邮箱,这个功能都很常见。如何实现则个功能呢?思路是:通过ajax访问后台,若有新消息,则将网页的title替换为 提示信息 ,并与空格来回切换。例:【你有新消息】与【 】切换。提示内容弄是动态的,所以替换文字的空格数目也是算出的。这里用全角的空格。但是如果提示 消息中有‘数字’等半角字符的话就会出现问题。全角的空格比半角的1的宽度要宽的多。这样的话,闪动起来看着就不是很舒服;解决方法就是用全角的空格替换 全角的字符,半角的空格替换半角的字符。但是document.title=' ';不论半角空格有多少个
阅读全文
摘要:先说前端使用 jQuery 时怎么区分: jQuery发出 ajax 请求时,会在请求头部添加一个名为X-Requested-With的信息,信息内容为:XMLHttpRequest 在后端可以使用 $_SERVER["HTTP_X_REQUESTED_WITH"]来获取。(注意:中划线换成了下划线,不区分大小写) 由此,我们可以这样来判断是否为 ajax 请求://php判断是否为ajax请求if(isset($_SERVER["HTTP_X_REQUESTED_WITH"])&&strtolower($_SERVER["HT
阅读全文
摘要:滚动文字 方向 #=left, right,up,down方式 #=scroll, slide, alternate 一圈一圈走!只滚动一次就停了来回滚动循环 #=次数;若未指定则循环不止(infinite) 只走 3 趟 速度 这是比较快的速度啦延时 啦啦啦,我走一步,停一停!外观(Layout)设置对齐方式(Align) #=top, middle, bottom 啦啦啦,我会移动耶!底色 #=rrggbb 16 进制数码,或者是下列预定义色彩:Black, Olive, Teal, Red, Blue, Maroon, Navy, Gray, Lime,Fuchsia, White, .
阅读全文
摘要:你还在用浪费时间又浪费内存的递归遍历无限极分类吗,看了该篇文章,我觉得你应该换换了。这是我在OSChina上看到的一段非常精简的PHP无限极分类生成树方法,巧在引用,整理分享了。function generateTree($items){ $tree = array();foreach($items as $item){if(isset($items[$item['pid']])){ $items[$item['pid']]['son'][]=&$items[$item['id']];}else{ $tree[]=&
阅读全文
摘要:在httpd.cong中LoadModule php5_module modules/libphp5.so #这一行php5安装的时候就已经自动添加上了AddType application/x-httpd-php .php .phtml AddType application/x-httpd-php-source .phps
阅读全文
摘要:1.安装必要的软件 引用 我用的是apahce2.0.61版,可以直接官方提供的绑定openssl的apache. 文件名是:apache_2.0.61-win32-x86-openssl-0.9.7m.msi 否则单独安装windows下的openssl比较麻烦,要么找到一个第三方的编译结果,要么自己编译 2. 生成服务器证书 引用 安装好在bin目录下有一个 openssl.exe文件,用来生成证书和密钥。 1). 生成服务器用的私钥文件server.key 进入conf目录,执行命令行 openssl genrsa -out server.key 1024 有文档指出使用 openssl
阅读全文
摘要:没有安装apache的情况:首先安装SSL,再编译安装Apache,再配置证书即可1.下载apache和openssl网址:http://www.apache.org http://www.openssl.org2.解压(先进入到安装包的位置,和你解压的文件名字是不是和这个一样)#tar zxvf httpd-2.0.54.tar.gz#tar zxvf openssl-0.9.7g.tar.gz3.编译安装openssl,这个软件主要是用来生成证书:#cd openssl-0.9.7g#./config#make#make test#make install把openssl放进内核目录下,使
阅读全文
摘要:看到此标题或许你会说是否是多此一举,直接判断扩展名不就知道文件类型了吗,但是扩展名很容易伪造,这样就绕过了判断。大部分的文件都会将一个特殊的数字或字符存放在文件的特定位置里(开始处的2个字节)/** * @author Mckee * @link http://www.phpddt.com *///使用 'b' 来强制使用二进制模式$fp = fopen('qq.jpg','rb');//只读二进制文件,前2个字节就可以判断文件类型$bin = fread($fp,2);fclose($fp);//将二进制的字符串转化为格式化的字符串,这里转化为
阅读全文
摘要:如果你经常需要做前端页面,那么你一定多多少少需要解决页面的浏览器兼容问题。而浏览器兼容问题大部分也集中在对IE系列的兼容。这里就总结一下对IE系列的CSS Hack,记录一下,方便以后查阅。IE HackIE系列浏览器的hack大略如下:_nowamagic:1px;-----------ie6*nowamagic:1px;-----------ie7nowamagic:1px\0;----------ie89nowamagic:1px\9\0;--------ie9:root nowamagic:1px; ----ie9(实际情况可能ie9还是有问题,再用这种方式)这样就基本上就可以兼容所有
阅读全文
摘要:cron用法说明cron的用法老是记不住,索性写下来备忘。下文内容大部分是根据《Cron Help Guide》翻译而来,有些部分是自己加上的。全文如下:cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序。例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron来自动执行。服务的启动和停止cron服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:/sbin/service crond start/sbin/service crond stop/sbin/service crond restart/sbin
阅读全文
摘要:简单而有用的nohup命令在UNIX/LINUX中,普通进程用&符号放到后台运行,如果启动该程序的控制台logout,则该进程随即终止。要实现守护进程,一种方法是按守护进程的规则去编程(本站有文章介绍过),比较麻烦;另一种方法是仍然用普通方法编程,然后用nohup命令启动程序:nohup<程序名>&则控制台logout后,进程仍然继续运行,起到守护进程的作用(虽然它不是严格意义上的守护进程)。使用nohup命令后,原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用,实现了完整的守护进程功能。ygwu @ 2005年04月18日 上午10:03F
阅读全文
摘要:今天在自己的一个技术群中又被问道了这么一个问题,于是又通俗的解释了一下,做个记录,大家看看解释是否清楚!shell中可能经常能看到:>/dev/null 2>&1命令的结果可以通过%>的形式来定义输出分解这个组合:“>/dev/null 2>&1” 为五部分。1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt2:/dev/null 代表空设备文件3:2> 表示stderr标准错误4:& 表示等同于的意思,2>&1,表示2的输出重定向等同于15:1 表示st
阅读全文
摘要:PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括:*.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址*.支持多种邮件编码包括:8bit,base64,binary和quoted-printable*.支持SMTP验证*.支持冗余SMTP服务器*.支持带附件的邮件和Html格式的邮件*.自定义邮件头*.支持在邮件中嵌入图片*.调试灵活*.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等*.可运行在任何平台之上调用方法:view sourceprint?01.require("class.phpm
阅读全文
摘要:PHP有如下几个拦截器:1、__get($property)功能:访问未定义的属性是被调用2、__set($property, $value)功能:给未定义的属性设置值时被调用3、__isset($property)功能:对未定义的属性调用isset()时被调用4、__unset($property)功能:对未定义的属性调用unset()时被调用5、__call($method, $arg_array)功能:调用未定义的方法时被调用拦截器,顾名思义,它就“拦截”未定义的属性和方法,有点类似__autoload和__construct等方法,应用案例如下(摘自网络):// 若访问一个未定义的属性
阅读全文
摘要:mysql中count(*)和count(column)使用是有区别的:count(*)对行的数目进行计算,包含NULLcount(column)对特定的列的值具有的行数进行计算,不包含NULL值。count()还有一种使用方式,count(1)这个用法和count(*)的结果是一样的。
阅读全文
摘要:我想把数组打乱随机取些值,于是用PHP的shuffl()打乱数组,当然,array_rand()也是可以随机取数组的,但是我想到另一个更高效的办法,是不是能用sql直接随机数据?当然可以!mysql是这样实现的:select * from tablename order by rand() limit 10说明:rand()返回在范围0到1.0内的随机浮点值sqlserver是这样实现的:select top 10 * from tableName order by NewID()说明:NewID()在扫描每条记录的时候都生成一个值, 而生成的值是随机的, 没有大小写顺序. 所以最终结果再按这
阅读全文
摘要:第一步:查看一下/etc/httpd/conf/httpd.conf中下面两个模块是否开启:LoadModule deflate_module modules/mod_deflate.soLoadModule headers_module modules/mod_headers.so查看方法:cat /etc/httpd/conf/httpd.conf | grep mod_deflatecat /etc/httpd/conf/httpd.conf | grep mod_headers如果前面有#则需要你开启,删除即可!开启gzip会消耗额外cpu资源第二步:在apache配置文件最后添加:S
阅读全文
摘要:js实现上下无缝滚动的原理是这样的:1、首先给容器设定高度或宽度,然后overflow:hidden;2、容器高度设定后,内容超出则被隐藏。3、改变容器的scrollTop(上下滚动)属性的值,让内容上下移动一个节点的位置(滚动的原理);4、到滚动的高度scrollTop大于或等于要滚动节点的高度时,设置scrollTop=0,并把把子节点树中的第一个移动到最后,重新开始滚动,无间断循环滚动效果就出现了。代码如下:phpjavarubypythonwww.phpddt.com
阅读全文
摘要:PHP在这方面应该说是比较弱,如果只用php去实现可以如下:但是当我执行脚本的时候,即使我关闭了浏览器,我根本就没法去停止这段程序了,所以你需要一个执行脚本的开关,你可以用外部文件引入的方法来实现,在while循环的时候,include开关变量即可。那么就可以这样实现:建立外部引入变量文件 switch.php 内容如下:改良脚本如下:这个脚本只是测试可行,具体效率应该不高,对于lamp,你完全可以使用crontab来实现
阅读全文
摘要:function rand_array($n){ $array=range(1,$n); shuffle($array); return $array;}
阅读全文
摘要:定义和用法shuffle() 函数把数组中的元素按随机顺序重新排列。若成功,则返回 TRUE,否则返回 FALSE。注释:本函数为数组中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现已被自动完成。语法shuffle(array)参数描述array必需。规定要使用的数组。例子 "Dog", "b" => "Cat", "c" => "Horse");shuffle
阅读全文
摘要:语法range(first,second,step)参数描述first必需。规定数组元素的最小值。second必需。规定数组元素的最大值。step可选。规定元素之间的步进制。默认是 1。注释:该参数是 PHP 5 中加入的。说明该函数创建一个数组,包含从 first 到 second (包含 first 和 second)之间的整数或字符。如果 second 比 first 小,则返回反序的数组。例子 1输出:Array([0] => 0[1] => 1[2] => 2[3] => 3[4] => 4[5] => 5)例子 2输出:Array([0] =&g
阅读全文
摘要:echochunk_split(base64_encode(file_get_contents('base64.txt'))); 例子 1本例分隔每个字符,并添加 ".":输出:H.e.l.l.o. .w.o.r.l.d.!.例子 2本例将在六个字符之后分割一次字符串,并添加 "...":输出:Hello ...world!...
阅读全文
摘要:针对apache,支持mode_rewrite可以通过在目录先建立.htaccess去掉url中index.php.htaccess内容如下:RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-f #这个重要,保证css,js正常加载RewriteCond $1 !^(index\\.php|images|robots\\.txt)RewriteRule ^(.*)$ /index.php/$1 [L]然后找到application/config/config.php文件:将$config['index_page']="
阅读全文
摘要:javascript “||”、“&&”的灵活运用博客分类:Jqueryjavascriptjavascript中运用“||”、“&&”javascript 真值和假值你是否看到过这样的代码:a=a||""; 可能javascript初学者会对此感到茫然。今天就跟大家分享一下我的一些心得。其实:Js代码 a=a||"defaultValue";与:Js代码 if(!a){a="defaultValue";}和:Js代码 if(a==null||a==""||a==undefined)
阅读全文
摘要:偶尔听人说javascript闭包,让我联想起以前学编译原理和数字逻辑里讲的闭包,以前上课讲的闭包很难懂,而且含有递归的意思在里面,现在不想再查看里面的闭包概念。但javascript我是经常要用,所以是要懂这里面的概念。其实javascript里的闭包概念很简单,就是函数用到外部变量,不需要传参就可以获取。举个例子:第一个函数sayHello没有传参数,直接利用了sMessage变量,这个就叫做闭包。第二个函数复杂点,里面有个doAddition也是闭包函数,他不需要参数,直接在执行环境中获取iNum1,iNum2,还有外部变量iBaseNum。第三个函数 是能保护i变量的访问,并且一直保存
阅读全文
摘要:$http_type=((isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on')||(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']=='https'))?'https://':'http://';
阅读全文
摘要:什么是argumentsarguments是是JavaScript里的一个内置对象,它很古怪,也经常被人所忽视,但实际上是很重要的。所有主要的js函数库都利用了arguments对象。所以agruments对象对于javascript程序员来说是必需熟悉的。所有的函数都有属于自己的一个arguments对象,它包括了函所要调用的参数。他不是一个数组,如果用typeof arguments,返回的是’object’。虽然我们可以用调用数据的方法来调用arguments。比如length,还有index方法。但是数 组的push和pop对象是不适用的。创建一个灵活的函数看起来貌似argument对
阅读全文
摘要:Shell脚本是我们写不同类型命令的一种脚本,这些命令在这一个文件中就可以执行。我们也可以逐一敲入命令手动执行。如果我们要使用shell脚本就必须在一开始把这些命令写到一个文本文件中,以后就可以随意反复运行这些命令了。我首先要在本文带给你的是完整脚本。后面会对该脚本做说明。我假定你已经知道shell scripting、mysqldump和crontab。适用操作系统:任何Linux或UNIX。主脚本(用于备份mysql数据库):该Shell脚本可以自动备份数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump命令。后面会对每行脚
阅读全文
摘要:函数说明:array glob ( string $pattern [, int $flags ] )功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的,不能用于远程文件)参数说明:第一个参数:匹配模式;第二个可选参数:GLOB_MARK - 在每个返回的项目中加一个斜线GLOB_NOSORT - 按照文件在目录中出现的原始顺序返回(不排序)GLOB_NOCHECK - 如果没有文件匹配则返回用于搜索的模式GLOB_NOESCAPE - 反斜线不转义元字符GLOB_BRACE - 扩充 {a,b,c} 来匹配 'a','b
阅读全文
摘要:之前写了一篇文章关于linux下apache虚拟主机配置,配置那是相当简单:ServerAdmin admin@example.comDocumentRoot /var/www/html/blogServerName blog.phpddt.comErrorLog /var/log/httpd/bl...
阅读全文
摘要:收集php利用正则过滤各种标签,空格,换行符的代码:查看代码打印01$str=preg_replace("/\s+/"," ",$str);//过滤多余回车02$str=preg_replace("//si","",$str);//注释04$str=preg_replace("//si","",$str);//过滤DOCTYPE05$str=preg_replace("//si","",$str);//过滤html标签06$str=pr
阅读全文
摘要:PHP中的有个非常好的函数:nl2br(),将文本框中的换行转换为HTML页面的,但是如何实现将html中的换行符转换为文本框中的换行符呢?下面这几个方法将能够帮你解决这个问题。PHP版将html中的换行符转换为文本框中的换行符:查看代码打印1functionbr2nl($text){2returnpreg_replace('//i','',$text);3}或者:查看代码打印1functionbr2nl($text){2$text=preg_replace('//i',chr(13),$text);3returnpreg_replace(
阅读全文
摘要:php header()函数的具体作用是向客户端发送一个原始 HTTP 标头[Http Header]到客户端。标头 (header) 是服务器以 HTTP 协义传 HTML 资料到浏览器前所送出的字串,在标头与 HTML 文件之间尚需空一行分隔。在任何实际的输出被发送之前调用 header() 函数(在 PHP 4 以及更高的版本中,您可以使用输出缓存来解决此问题)。下面举一些比较常见的header用法示例:(1)使用header实现重定向(等价于代替用户在地址栏输入url)。查看代码打印1查看代码打印01三秒后自动跳转';08/*09说明:若等待时间为0,则与header(&quo
阅读全文
摘要:HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:1. 建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。2. Web浏览器向Web服务器发送请求命令一旦建立了TCP连接,Web浏览器就会向Web服务器发送请
阅读全文
摘要:抽象类的应用就是典型的模版模式抽象类的应用就是典型的模版模式,先声明一个不能被实例化的模版,在子类中去依照模版实现具体的应用。我们写这样一个应用:银行计算利息,都是利率乘以本金和存款时间,但各种存款方式计算利率的方式不同,所以,在账户这个类的相关方法里,只搭出算法的骨架,但不具体实现。具体实现由各个子类来完成。01interest = getInterestRate();10//用于计算利息的算法:本金*利率,但是利率的算法实现并没有在这个类中实现11$this->interest =$this->getFund() *$this->getInterestRate();12r
阅读全文
摘要:可以理解为对抽象类的扩展抽象类继承另外一个抽象类时,不用重写其中的抽象方法。抽象类中,不能重写抽象父类的抽象方法。这样的用法,可以理解为对抽象类的扩展。下面的例子,演示了一个抽象类继承自另外一个抽象类时,不需要重写其中的抽象方法。01抽象类在被继承后,其中的抽象方法不能被重写。如果发生重写,系统会报错。01程序运行结果:1Fatal error: Can't inheritabstractfunctionUser::setSal() (previously declaredabstractin VipUser) in E:\PHPProjects\test.php on line 14
阅读全文
摘要:SVNCheckout不包括源文件夹根目录,比如我要checkouttrunk/下面的所有文件,但是不包括trunk文件夹我们可以在svn文件夹后面打个空格,在加个“.”就行了eg:“svncohttp://192.168.1.10/svn/project/trunk/“改为”svncohttp://192.168.1.10/svn/project/trunk/.“
阅读全文
摘要:平台描述:Windows下,使用PHP套件 xampp,因为是测试玩,所以没在服务器 Linux 环境中配置。1. 首先,将 nginx.conf 中的PHP配置注释去掉。01# pass the PHP scripts to FastCGI server listening on 127.0.0.1:900002#03#location ~ \.php$ {04# root html;05# fastcgi_pass 127.0.0.1:9000;06# fastcgi_index index.php;07# fastcgi_param SCRIPT_FILENAME /scripts$fa
阅读全文
摘要:为了方便htaccess编写正则,这里整理了一下 htaccess 的正则规则。# —— 位于行首时表示注释。[F] —— Forbidden(禁止): 命令服务器返回 403 Forbidden错误给用户浏览器[L] —— Last rule(最后一条规则): 告诉服务器在本条规则执行完后停止重写URL[N] —— Next(下一条规则): 告诉服务器继续重写,指导所有重写指令都执行过[G] —— Gone(丢失): 命令服务器返回410 GONE(no longer exists)错误消息[P] —— Proxy(代理): 告诉服务器通过mod_proxy模块处理用户请求[C] —— Ch
阅读全文
摘要:1. 文件访问控制利用 httpd.conf 中的 Order、Files 及 FilesMatch 命令实现的访问控制可以满足大部分要求,但是当用户被拒绝时,他们看到的是硕大的“403 Forbidden”,如果你不想伤害用户的感情,就需要显示一些别的东西,通过Rewrite就可以实现这个特性:1RewriteEngine On2RewriteCond %{REQUEST_FILENAME} !^(.+)\.css$3RewriteCond %{REQUEST_FILENAME} !^(.+)\.js$4RewriteCond %{REQUEST_FILENAME} !special.zip
阅读全文
摘要:查询字符串是指URL请求中“问号”后面的部分。比如,http://www.nowamagic.net/?foo=bar中粗体部分就是查询字符串,其中变量名是foo,值是bar。1. 利用QSA转换查询字符串QUERY_STRINGQSA标志( Query String Appending)用于在URI中截取查询字符串,这个截取操作是通过小括号正则表达式实现的:1RewriteEngine On2RewriteRule /pages/(.+) /page.php?page=$1 [QSA]将会把请求/pages/123?one=two映射到 /page.php?page=123&one=
阅读全文
摘要:1. 将 .htm 页面映射到 .php1Options +FollowSymlinks2RewriteEngine on3RewriteRule ^(.*)\.htm$ $1.php [NC]如果正则不是很熟悉,可以参考下《正则表达式入门》。一些注意事项:该RewriteRule能够将.htm静态页面映射到.php动态页面。如果通过.htm进入,浏览器地址栏显示的是.htm扩展名,但服务器上实际执行的是.php。必须保证服务器上有对应的.php,否则会404。浏览器和搜索引擎可以同时通过.htm和.php访问网页。如果该目录上存在.htm,将被忽略。[NC]表示“不区分大小写”。2. 临时重
阅读全文
摘要:Rewirte主要的功能就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等。本文将针对mod_rewrite和URL匹配的技术细节,以及RewriteCond与RewriteRule 指令格式进行探讨。Rewirte模块内部处理Rewirte模块的内部处理极为复杂,但是为了使一般用户避免犯低级错误,也让管理员能充分利用其功能,在此仍然做一下说明。Rewirte模块API阶段首先,你必须了解Apache是分若干阶段来处理HTTP请求的。Apache API对每个阶段都提供了一个hook程序。mod_rewrite使用两个ho
阅读全文
摘要:Apache的Mode Rewrite模块提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。在大多数情况下,它和.htaccess文件配合使用。就是说,.htaccess文件的一个主要功能是用来重写URL请求,那么在本小节里,我们来看看如何实现重写。mod_rewrite实现所有这些神奇功能的模块叫做mod_rewrite,请确保你的服务器安装并启用了该模块:1sudo a2enmod rewrite我们一般会把所有涉及URL重写或者重定向的代码这样放置:12# Turn on rewrite engine3Options +FollowSymlinks4RewriteEngine
阅读全文
摘要:require('./db.class.php');$DB = new db();$DB->connect();//数据库链接header("Content-Type: text/csv");header("Content-Disposition:filename=php100.csv");$sql = "select order_sn,consignee,address,tel,mobile,email,order_amount,add_time from order_info";//查询数据$order =
阅读全文
摘要:很多时候我们会看到这样的代码(出自 CI 框架源码):1$class=& load_class('a','b');我们都知道其中的'&'是指引用,但是它的作用是什么呢?它能够解决什么样的问题呢?带着这些问题,我们开始了解下“引用返回”。引用返回手册里是这么写的:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。不要用返回引用来增加性能,引擎足够聪明来自己进行优化。仅在有合理的技术原因时才返回引用!要返回引用,使用此语法:01value;07}08}0910$obj=newfoo;11// $myValue is a re
阅读全文
摘要:从一道面试题开始在开始本节内容前,我们先来看看一道还算比较常见的PHP面试题:1$arr=array('1','2','3');23foreach($arras&$v){4}56foreach($arras$v){7}89var_dump($arr);猜一下,运行的结果会是什么呢?熟悉PHP的同学可能已经知道结果了:1array20 => string'1'(length=1)31 => string'2'(length=1)42 => &string'2'(len
阅读全文
摘要:$val) { if (isset($array_2[$val])) { unset($array_1[$key]); } } return $array_1;}function runtime($mode = 0) { static $t; if (!$mode) { $t = microtime(); return; } $t1 = microtime(); list($m0, $s0) = explode(" ", $t); list($m1, $s1) = explode(" ", $t1); return sprintf("%.3f&
阅读全文
摘要:$data) { $refer[$data[$pk]] = &$list[$key]; } foreach ($list as $key => $data) { //判断是否存在parent $parantId = $data[$pid]; if ($root == $parantId) { $tree[] = &$list[$key]; } else { if (isset($refer[$parantId])) { $parent = &$refer[$parantId]; $parent[$child][] = &$list[$k...
阅读全文
摘要:$item ) { if ($item [$pid]) { if (! isset ( $t [$item [$pid]] ['parent'] [$item [$pid]] )) $t [$item [$id]] ['parent'] [$item [$pid]] = & $t [$item [$pid]]; } } return $t;}/** * * 创建子节点树形数组 * 参数 * $ar 数组,邻接列表方式组织的数据 * $id 数组中作为主键的下标或关联键名 * $pid * 数组中作为父键的下标或关联键名 * 返回 多维数组 * */fun
阅读全文
摘要:array('id'=>1,'pid'=>0,'name'=>'News_1'),2=>array('id'=>2,'pid'=>1,'name'=>'News_12'),7=>array('id'=>7,'pid'=>1,'name'=>'News_17'),3=>array('id'=>3,'pid&
阅读全文
摘要:// @param array $list 查询结果//@param string $field 排序的字段名//@param array $sortby 排序类型//asc正向排序 desc逆向排序 nat自然排序function list_sort_by($list,$field, $sortby='asc') {if(is_array($list)){$refer = $resultSet = array();foreach ($list as $i => $data){$refer[$i] = &$data[$field];switch ($sortby)
阅读全文