網站滾動術:http://blog.csdn.net/jianggaocheng_nupt/article/details/7868320javascript
phpcms具體文件夾的文件
api 接口文件目錄
caches 緩存文件目錄
configs 系統配置文件目錄
caches_* 系統緩存目錄
phpcms phpcms框架主目錄
languages 框架語言包目錄
libs 框架主類庫、主函數庫目錄
classes
data
functions
extention.func.php 用戶自定義函數庫
global.func.php 公共函數庫
model 框架數據庫模型目錄
modules 框架模塊目錄
templates 框架系統模板目錄
languages 框架語言包目錄
zh-cn 中文語言目錄
admin.lang.php cms後臺系統標籤
content.lang.php 內容模型系統標籤
member.lang.php 會員模塊系統標籤
pay.lang.php 交易模塊系統標籤
libs 框架主類庫、主函數庫目錄
model 框架數據庫模型目錄
modules 框架模塊目錄
templates 框架系統模板目錄
default 系統默認主題模板目錄
announce
comment 評論模塊模板
content 內容模塊模板
dianping
formguide
link 友鏈模塊模板
member 會員模塊模板
message 留言模塊模板
mood
pay 交易模塊模板
plugin
poster
search 搜索模塊模板
special
vote
wap 手機模塊模板
phpsso_server phpsso主目錄
statics 系統附件包
css 系統css包
images 系統圖片包
js 系統js包
uploadfile 網站附件目錄
admin.php 後臺管理入口
index.php 程序主入口
crossdomain.xml FLASH跨域傳輸文件
robots.txt 搜索引擎蜘蛛限制配置文件
favicon.ico 系統icon圖標php
網頁加載的幾種狀態css
document.onreadystatechange = subSomething;//當頁面加載狀態改變的時候執行這個方法. function subSomething() { if(document.readyState == 「complete」) //當頁面加載狀態 myform.submit(); //表單提交 }
原文:
0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.
翻譯成中文爲:
0 - (未初始化)尚未調用send()方法
1 - (載入)已調用send()方法,正在發送請求
2 - (載入完成)send()方法執行完成,已經接收到所有響應內容
3 - (交互)正在解析響應內容
4 - (完成)響應內容解析完成,能夠在客戶端調用了 html
java運行環境
http://jingyan.baidu.com/article/e75aca85b29c3b142edac6a8.html
進入頁面就能夠知道
先如今安裝 java jdk
下載以後點擊安裝到相應的文件夾中(推薦安裝到文件夾C:/Program File/)
個人電腦->右擊屬性->高級->環境變量->新建變量
在環境變量中,要修改兩個地方,一個是添加JAVA_HOME。能夠選擇「新建」,變量名填上JAVA_HOME,變量值填上C:\Program Files\Java\jdk1.7.0_04,由於在上面的安裝過程當中,我默認一直下一步安裝,因此裝在C盤,
若是你在安裝過程當中改了,那多是D盤或者E盤。一樣變量值要作相應的更改。
還要修改一個地方,就是Path,添加JAVA的變量值到Path中,選擇Path,而後點「編輯」,在最後面添加以下語句;%JAVA_HOME%\bin;
?注:在環境變量的配置中,名字不能隨便改,JAVA_HOME不要隨便去更改其它的,不然可能認不到。
在上述操做之後再進行以下操做
個人電腦->右擊屬性->高級->環境變量->新建變量(重複操做具體以下)
新建變量名PATH和CLASSPATH值分別爲
C:\Program Files\Java\jdk1.6.0_10\bin
C:\Program Files\Java\jdk1.6.0_10\lib\tools.jar
添加好兩個變量以後進行測試下面爲測試的步驟:
cmd->輸入javac出現正常的信息則安裝成功不然安裝失敗java
網站僞靜態:
訪問:http://localhost/32654_id.html
等同於在訪問
http://localhost/index.php?id=32654
這是由apache中的某個模塊的功能處理的;
具體的步驟見網站中的視頻
http://www.tudou.com/programs/view/rls7LB7GU3U
mod_rewrite是Apache的一個很是強大的功能,它能夠實現僞靜態頁面。下面我詳細說說它的使用方法
1.檢測Apache是否支持mod_rewrite
經過php提供的phpinfo()函數查看環境配置,經過Ctrl+F查找到「Loaded Modules」,其中列出了全部apache2handler已經開啓的模塊,若是裏面包括「mod_rewrite」,則已經支持,再也不須要繼續設置。
若是沒有開啓「mod_rewrite」,則打開目錄 您的apache安裝目錄「/apache/conf/」 下的 httpd.conf 文件,經過Ctrl+F查找到「LoadModule rewrite_module」,將前面的」#」號刪除便可。
若是沒有查找到,則到「LoadModule」 區域,在最後一行加入「LoadModule rewrite_module ,modules/mod_rewrite.so」(必選獨佔一行),而後重啓apache服務器便可。
2.讓apache服務器支持.htaccess
如何讓本身的本地APACHE服務器支持」.htaccess」呢?其實只要簡單修改一下apache的httpd.conf設置就可讓 APACHE支 持.htaccess了。打開httpd.conf文件(在那裏? APACHE目錄的CONF目錄裏面),
用文本編輯器打開後,查找
Options FollowSymLinks
AllowOverride None
改成
Options FollowSymLinks
AllowOverride All
就能夠了。
3.創建.htaccess 文件
有1種最簡單的方法創建.htaccess文件:
用記事本 打開,點擊文件–另存爲,在文件名窗口輸入」.htaccess」,注意是整個綠色部分,
也就是包含英文引號,而後點擊保存就好了。
4.rewrite規則學習
咱們新建一個.htaccess文件以後,就在裏面寫入如下內容:
RewriteEngine on #rewriteengine爲重寫引擎開關on爲開啓off爲關閉
RewriteRule ([0-9]{1,})$index.php?id=$1
我講解一下RewriteRule:RewriteRule是重寫規則,支持正則表達式的,上面的([0-9]{1,})是指由數
字組成的,$是結束標誌,說明是以數字結束!
好吧,如今咱們能夠實現僞靜態頁面了,寫下一下的規則:
RewriteEngine on
RewriteRule ([a-zA-Z]{1,})-([0-9]{1,}).html$index.php?action=$1&id=$2
([a-zA-Z]{1,})-([0-9]{1,}).html$是規則,index.php?action=$1&id=$2是要替換的格式,$1表明第
一個括號匹配的值,$2表明第二個,如此類推!!
咱們寫一個處理的PHP腳本:
index.php
PHP代碼
echo ‘你的Action是:’ . $_GET['action'];
echo ‘
’;
echo ‘你的ID是:’ . $_GET['id'];
?>
好了,咱們如今在瀏覽器中輸入:
localhost/page-18.html
輸出的是:
你的Action是:page
你的ID是:18mysql
mysql優化技術
傳智視頻網址:http://v.youku.com/v_show/id_XNTYzMDUxNTU2.html;
1.表格設計要合理("表的設計要符合三範式:數據不可再分割,不要有重複的數據,不要有冗餘的數據");
2.添加適當的索引:主鍵索引、普通索引、惟一索引、全文索引;
3.表格分割:水平分割、垂直分割;
4.讀寫分離:兩個庫,一個庫專門用來讀.一個庫專門用來寫.當有數據寫入後.觸發,更新只讀的數據庫.這裏的要求是,數據及時性沒要求.而且寫的頻率不高;
5.存儲過程的合理利用;
6.mysql的配置進行設置;
7.mysql服務器進行升級;
8.定時清除不須要的數據,並對碎片進行整理;
查詢mysql的運行進程:
經常使用的有 鏈接的時間:show [session|global] status like 'uptime'/查詢執行的語句頻率:show status like 'com_*'(*能夠是select update delete等);
查看mysql的鏈接數show status like 'connections';
查看鏈接者的ip在cmd控制檯下輸入netstats -an;
顯示慢查詢的次數:show status like 'slow_queries';
查看慢查詢的設置時間:show variables like 'long_query_time';
設置慢查詢的時間 set long_query_time=1;web
建立海量數據對數據庫進行壓力測試:
#建立表DEPT正則表達式
慢查詢的sql記錄到一個日誌中,陌認的不是啓動的
在默認狀況下mysql不記錄慢查詢日誌,須要在啓動的時候指定 bin\mysqld.exe - -safe-mode - -slow-query-log [mysql5.5 能夠在my.ini指定] bin\mysqld.exe –log-slow-queries=d:/abc.log [低版本mysql5.0能夠在my.ini指定]
直接在my.ini文件中可加入以下代碼設置慢查詢
---------------------------
log-slow-queries = D:\wamp\mysql_slow_query.log
long_query_time=5sql
CREATE TABLE dept( /*部門表*/
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
dname VARCHAR(20) NOT NULL DEFAULT "",
loc VARCHAR(13) NOT NULL DEFAULT ""
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;數據庫
#建立表EMP僱員
CREATE TABLE emp
(empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*編號*/
ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/
job VARCHAR(9) NOT NULL DEFAULT "",/*工做*/
mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上級編號*/
hiredate DATE NOT NULL,/*入職時間*/
sal DECIMAL(7,2) NOT NULL,/*薪水*/
comm DECIMAL(7,2) NOT NULL,/*紅利*/
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部門編號*/
)ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
#工資級別表
CREATE TABLE salgrade
(
grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
losal DECIMAL(17,2) NOT NULL,
hisal DECIMAL(17,2) NOT NULL
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO salgrade VALUES (1,700,1200);
INSERT INTO salgrade VALUES (2,1201,1400);
INSERT INTO salgrade VALUES (3,1401,2000);
INSERT INTO salgrade VALUES (4,2001,3000);
INSERT INTO salgrade VALUES (5,3001,9999);
# 隨機產生字符串
#定義一個新的命令結束符合
delimiter $$
#刪除自定的函數
drop function rand_string $$
#這裏我建立了一個函數.
#rand_string(n INT) rand_string 是函數名 (n INT) //該函數接收一個整數
create function rand_string(n INT)
returns varchar(255) #該函數會返回一個字符串
begin
#chars_str定義一個變量 chars_str,類型是 varchar(100),默認值'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
declare chars_str varchar(100) default
'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
declare return_str varchar(255) default '';
declare i int default 0;
while i < n do
set return_str =concat(return_str,substring(chars_str,floor(1+rand()*52),1));
set i = i + 1;
end while;
return return_str;
end $$
delimiter ;
select rand_string(6);
# 隨機產生部門編號
delimiter $$
drop function rand_num $$
#這裏咱們又自定了一個函數
create function rand_num( )
returns int(5)
begin
declare i int default 0;
set i = floor(10+rand()*500);
return i;
end $$
delimiter ;
select rand_num();
#******************************************
#向emp表中插入記錄(海量的數據)
delimiter $$
drop procedure insert_emp $$
#隨即添加僱員[光標] 400w
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
#set autocommit =0 把autocommit設置成0
set autocommit = 0;
repeat
set i = i + 1;
insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());
until i = max_num
end repeat;
commit;
end $$
delimiter ;
#調用剛剛寫好的函數, 1800000條記錄,從100001號開始
call insert_emp(100001,4000000);
#**************************************************************
# 向dept表中插入記錄
delimiter $$
drop procedure insert_dept $$
create procedure insert_dept(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i + 1;
insert into dept values ((start+i) ,rand_string(10),rand_string(8));
until i = max_num
end repeat;
commit;
end $$
delimiter ;
call insert_dept(100,10);
#------------------------------------------------
#向salgrade 表插入數據
delimiter $$
drop procedure insert_salgrade $$
create procedure insert_salgrade(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;
ALTER TABLE emp DISABLE KEYS;
repeat
set i = i + 1;
insert into salgrade values ((start+i) ,(start+i),(start+i));
until i = max_num
end repeat;
commit;
end $$
delimiter ;
#測試不須要了
#call insert_salgrade(10000,1000000);
#----------------------------------------------
MySQL函數不能建立,是未開啓功能:
mysql> show variables like '%func%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF |
+---------------------------------+-------+
1 row in set (0.00 sec)
mysql> set global log_bin_trust_function_creators=1;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like '%func%';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON |
+---------------------------------+-------+
1 row in set (0.00 sec)mysql>
mysql索引
添加索引:
添加主鍵索引:一張表把某個列設爲主鍵的時候.則該列是主鍵索引;
alter table 表名 add primary key (列名);
普通索引:先建表在建立索引;
create index 索引名 on 表(列);
建立全文索引:alter table tablename add fulltext(column1,column2) ;全文索引只對myisam表起做用,只對英文有效;
正確使用全文索引:select * from articles where match(title,body) against ("database");
刪除索引:alter table 表名 drop index 索引名;
若是刪除主鍵索引:alter table 表名 drop primary key;
查詢索引:
desc代表[該方法的缺點是不可以顯示索引的名字];
show index(es) from 表名 \G;
show keys from 表名 \G;
查看索引 show index from 數據庫表名
alter table 數據庫add index 索引名稱(數據庫字段名稱)
PRIMARY KEY(主鍵索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
UNIQUE(惟一索引)
ALTER TABLE `table_name` ADD UNIQUE (`column`)
INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
1.普通索引。
這是最基本的索引,它沒有任何限制。它有如下幾種建立方式:
(1)建立索引:CREATE INDEX indexName ON tableName(tableColumns(length));若是是CHAR,VARCHAR類型,length能夠小於字段實際長度;若是是BLOB 和 TEXT 類型,必須指定length,下同。
(2)修改表結構:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))
(3)建立表的時候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;
2.惟一索引。
它與前面的"普通索引"相似,不一樣的就是:索引列的值必須惟一,但容許有空值。若是是組合索引,則列值的組合必須惟一。它有如下幾種建立方式:
(1)建立索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表結構:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
(3)建立表的時候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));
3.主鍵索引
它是一種特殊的惟一索引,不容許有空值。通常是在建表的時候同時建立主鍵索引:CREATE TABLE testIndex(i_testID INT NOT NULL AUTO_INCREMENT,vc_Name VARCHAR(16) NOT NULL,PRIMARY KEY(i_testID)); 固然也能夠用ALTER命令。
注:那些列上適合添加索引(有利於查詢的速度加快,可是增長了增刪改的壓力):
頻繁做爲查詢條件字段應該建立索引;
惟一性太差的字段不適合單首創建索引;
更新太頻繁的字段不適合建立索引;
複合索引中必須先使用左邊的才能使用右邊的;
模糊查詢中若是百分號加在前面則不會用到索引;
使用or條件查詢的時候兩條件的字段都要創建索引,不然索引失去做用;
若是字段類型是字符串的時候則必定要用引號括起來,不然沒法用到索引;
查詢索引的使用狀況 show status like 'handler_read%';
添加外鍵:
注意:
爲了創建兩個MySQL表之間的一個外鍵關係,必須知足如下三種狀況:
* 兩個表必須是InnoDB表類型。
* 使用在外鍵關係的域(字段)必須爲索引型(Index)。因此要爲設置外鍵的字段創建index。
* 使用在外鍵關係的兩個域(字段)數據類型要相同。
方法:
alter table web_subject add constraint FK1 foreign key (cid) references web_column(cid) ON DELETE CASCADE;
sql語句使用的小技巧:
group by語句默認的將會對結果進行排序,能夠將group by null阻止排序;
mysin類型表刪除數據後存在大量的碎片 須要經過optimize table 表名來進行碎片整理;
mysql數據庫的備份 在cmd控制檯中輸入 mysqldump -u root -proot temp>e:\temp.bak
若是但願備份的是數據庫的某幾張表 mysqldump -u root -proot temp[表名1] [表名2]>e\temp.bak
如何使用備份文件恢復咱們的數據mysql>source D:/www/sql/back.sql;
定時完成數據庫的備份:創建bat文件內部放入本身寫好的執行語句如: E:\wamp\bin\mysql\mysql5.5.20\bin\mysqldump -u root -p test1 dept>e:\dept.bak
數據備份的時候會出現老是覆蓋的問題這就須要一個能夠隨時備份且不會被覆蓋最好是按照時間的順序來排列的一個方法,既先用php文件執行備份命令;php執行命令函數爲exec
在cmd控制檯中如何訪問php文件:E:\wamp\bin\php\php5.3.10\php.exe 被訪問的文件路徑\test.php
php完成定時發送郵件等功能;
sql函數中 unix_timestamp() 獲取當前時間戳(十天以後的值爲unix_timestamp()+3600*10);
strtotime()取得默認取得當天零點的時間戳能夠給定參數求指定時間的時間戳做用大於mktime();
php函數中有個mail函數是發送郵件的最好使用phpmailer類
**使用phpmailer類的使用前提:1.自己的機器是能夠聯網的;2.搭建本身的smtp郵件服務器(接收和發送郵件)或用已有的帳戶郵件帳號進行轉發(前者用的更多);
3.安裝遙志郵件服務器參數配置:(1)選擇數據庫ACCESS;(2)啓用webmail取消(3)郵件服務器配置:域名配置(4)服務器設置中去掉勾選esmtp發送驗證(5)設置一個帳號
*******************************發送郵件的代碼************************************************
<?php
//引入文件類
include './class.phpmailer.php';
//實例化郵件類
$mail=new PHPMailer();
//編寫的郵箱內容
$content=<<<EMAIL
由於你最近非法散播有害國家的信息,你的QQ號將永久封號!;
EMAIL;
//對郵件的一些參數進行配置;
$mail->CharSet='utf-8';
$mail->ContentType='text/html';
$mail->Encoding='base64';
$mail->From='wuwenjie@192.168.1.185';
$mail->FromName='騰訊網';
$mail->Subject='騰訊封號通知';
$mail->Body=$content;
//設置一下語言包
$mail->SetLanguage('zh_cn');
//添加收件人地址
$mail->AddAddress('ping1075745367@163.com','曹慧萍');
if($mail->Send()){
echo"ok";
}
?>
*********************************結束代碼**********************************************
(6)***********修改php.ini****
[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = wuwenjie@192.168.1.185
****************************************************************************************
表的分割技術:
原理:如將一個表分紅三個表,將用戶的數據id%3就能夠知道用戶的信息大概在哪張表;
mysql_insert_id()獲取插入的id;
步驟:1.建四張表(三張表是用來存放數據的,另外一張是輔助表用來存放數據後獲取惟一的id後%3存入另三張表)
讀寫分離:就是讀和增刪改放在不一樣的表中,住表放增刪改,幾張從表是用來執行select操做的,同時主表要定時的去更新幾張從表(?);
增量備份:
定義:mysql數據庫會以二進制的方式記錄數用戶對據庫操做語句,記錄到文件中,當用戶但願恢復的時候可使用備份文件恢復
注:會記錄(dml語句),建立表語句,select語句不會記錄,會記錄操做語句的自己,操做的時間和position;
步驟:配置mysql.cof文件或my.ini文件啓用二進制備份(log-bin=E:\mylog),集成環境中備份的文件存在於E:\wamp\bin\mysql\mysql5.5.20\data文件夾中,能夠在cmd中運行E:\wamp\bin\mysql\mysql5.5.20\bin\mysqlbinlog.exe E:\wamp\bin\mysql\mysql5.5.20\data\備份文件;
利用備份文件進行恢復數據操做
將備份的文件導出爲sql文件:
c:\mysql\bin\> mysqlbinlog e:/log/logbin.000001 > e:/log/log.sql
c:\mysql\bin\> mysqlbinlog e:/log/logbin.000002 >> e:/log/log.sq
時間定位mysqlbinlog --stop(start)-datetime="2013-01-14 18:20:40" E:\wamp\bin\mysql\mysql5.5.20\data\備份文件 | mysql -uroot -p;
位置定位mysqlbinlog --stop(start)-position="100" E:\wamp\bin\mysql\mysql5.5.20\data\備份文件 | mysql -uroot -p;
1)RESET MASTER
在上面查看日誌存放的文件夾中,二進制日誌命名的格式是以mysql-bin.*,*表明日誌的序號,序號是遞增的,其中還有mysql-bin.index是日誌的索引文件,記錄了日誌的最大序號
咱們執行RESET MASTER命名刪除所有日誌
2)PURGE MASTER LOGS TO & PURGE MASTER LOGS BEFORE
執行PURGE MASTER LOGS TO 'mysql-bin.******'命令,是將'******'編號以前的全部日誌進行刪除
執行PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh:mm:ss'命令,是將在'yyyy-mm-dd hh:mm:ss'時間以前的全部日誌進行
EXPIRE_LOGS_DAYS
此參數是設置日誌的過時天數,過時的日誌將會被自動刪除,這有利於減小咱們管理日誌的工做量,須要修改my.cnf
網頁靜態化(大型網站提速優化技術)
學習新知識的思路:
提出問題->引進新技術->作個小案例->技術細節->使用到項目中
apache\Apache2.2.21\bin\ab.exe 能夠作壓力測試 能夠模仿多人迸發訪問摸個頁面
基本用法 ab.exe -n 10000 -c 10 http://www.huixingwo.com
-n 表示多少次
-c 表示多少人
php緩存機制開啓的方式有兩個一個是修改php.ini中output_buffer文件還有中方法是直接在文件的頂部加上ob_start()
//查詢執行狀態show processlist