前端學PHP之文件操作

前端學PHP之文件操作

前面的話

  在程序運行時,程序本身和數據一般都存在內存中,當程序運行結束后,存放在內存中的數據被釋放。如果需要長期保存程序運行所需的原始數據,或程序運行產生的結果,就需要把數據存儲在文件或數據庫。一般地,小型數據存儲在文件中,海量數據存儲在數據庫中。本文主要介紹php中目錄和文件的基本操作

?

文件類型

  文件一般指存儲在外部介質上具有名字(文件名)的一組相關數據集合。用文件可長期保存數據,并實現數據共享

  PHP是以UNIX的文件系統為模型的。因此在Windows系統中我們只能獲得”file”、”dir”或者“unknown”三種文件類型。而在UNIX系統中,我們可以獲得block、char、dir、fifo、file、link和unknown七種類型

  可以使用函數filetype()獲取文件的具體類型,可能的值有fifo,char,dir,block,link,file 和 unknown

string filetype ( string filename ) 

  如果出錯則返回 FALSE。如果調用失敗或者文件類型未知的話 filetype() 還會產生一個 E_NOTICE 消息

  在服務器中新建一個目錄test,并在目錄中新建一個文件a.txt

<?php
echo filetype('test/a.txt');  // file
echo filetype('test/');        // dir
echo filetype('test/b.txt');  // Warning: filetype(): Lstat failed for test/b.txt
?>

  在這7種文件類型中,window系統常用的是'file'和'dir'這兩種,它們配套的類型檢測函數分別是is_dir( )和is_file( )

is_dir( )

  判斷給定文件名是否是一個目錄。如果文件名存在并且是一個目錄則返回 true,否則返回 false 

bool is_dir(_name)

is_file( )

  判斷給定文件名是否為一個正常的文件,如果文件存在且為正常的文件則返回 true?

bool is_file(_name)    
<?php
var_dump (is_file('test/a.txt'));  //boolean true
var_dump (is_dir('test/'));        //boolean true
?>

?

文件屬性

  一般地,在文件或目錄右鍵菜單中,選擇屬性,即可查看文件的屬性

  下表中列出了php中關于文件屬性的常用函數

復制代碼
<?php
var_dump (file_exists('test/a.txt'));  //boolean true
var_dump (filesize('test/a.txt'));  // int 0 
var_dump (is_readable('test/a.txt'));  //boolean true
var_dump (is_writeable('test/a.txt'));  //boolean true
var_dump (is_executable('test/a.txt'));  //boolean false
var_dump (date("Y-m-d H:i:s",(filectime('test/a.txt'))));//string '2016-11-22 06:47:54' (length=19)
var_dump (date("Y-m-d H:i:s",(filemtime('test/a.txt'))));//string '2016-11-22 06:47:54' (length=19)
var_dump (date("Y-m-d H:i:s",(fileatime('test/a.txt'))));//string '2016-11-22 06:47:54' (length=19)
?>
復制代碼

?

目錄路徑

  windows下的目錄路徑使用是正斜杠(\),而unix下的目錄路徑使用是反斜杠(/)

復制代碼
$unixPath="/var/www/html/index.php";    //在UNIX系統中的絕對路徑,必須使用"/"分隔
$winPath="C:\\Appserv\\www\\index.php"; //在Windows系統的絕對路徑,默認使用"\"分隔
$winPath2="C:/Appserv/www/index.php";   //在Windows系統中也可使用“/”分隔
復制代碼

  因為在Windows系統中也可使用(/)分隔。所以,在PHP中,不論是什么操作系統,全部都使用反斜杠(/)代表路徑分隔符號?

  在PHP中,還提供了一個常量DIRECTORY_SEPARATOR,以此來代表目錄分隔符,但寫起來較麻煩

<?php
echo "c:".DIRECTORY_SEPARATOR."a".DIRECTORY_SEPARATOR."b".DIRECTORY_SEPARATOR."c"; //c:\a\b\c
?>

  在windows下多個路徑的分隔符使用分號(;)分隔,而unix下使用冒號(:)分隔

  在PHP中,提供了一個常量PATH_SEPARATOR,用來在跨平臺的情況下,表示多個路徑之間的分隔符

<?php
echo "aaa/ccc/ddd".PATH_SEPARATOR."/www/yyyy";//aaa/ccc/ddd;/www/yyyy
?>

換行 

  在window下,換行是\r\n,而在unix下,換行是\n。通常在寫程序中,換行就以unix為準,寫作\n

  同樣地,PHP提供了一個常量PHP_EOL,用來在跨平臺的情況下,表示換行

.和..

  在PHP中,.表示當前目錄,..表示上一級目錄

<?php
var_dump (file_exists('test/a.txt'));//boolean true
var_dump (file_exists('./test/a.txt'));//boolean true
var_dump (file_exists('../www/test/a.txt'));//boolean true
?>

根路徑

  有兩種根路徑需要進行區分,一種是客戶端根路徑,一種是服務器根路徑

  以我自己在d盤安裝的wamp為例,客戶端根路徑指'd:\wamp\www\',而服務器根路徑為為'd:\'

<?php
echo '<img src="/a.jpg">';//客戶端根路徑,相當于d:\wamp\www\a.jpg
mkdir('/hello');//服務器根路徑,相當于d:\hello
?>

路徑解析函數

【basename()】

  basename()函數用于返回路徑中的文件名部分

復制代碼
<?php
echo "1) ".basename("/etc/sudoers.d", ".d");//1) sudoers
echo "2) ".basename("/etc/passwd").PHP_EOL;//2) passwd
echo "3) ".basename("/etc/").PHP_EOL;//3) etc
echo "4) ".basename(".").PHP_EOL;//4) .
echo "5) ".basename("/");//5) 
?>
復制代碼

【dirname()】

  dirname()函數用于返回路徑中的目錄部分

<?php
echo "1) " . dirname("/etc/passwd") . PHP_EOL; // 1) /etc
echo "2) " . dirname("/etc/") . PHP_EOL; // 2) \
echo "3) " . dirname("."); // 3) .
?>

【pathinfo()】

  pathinfo()函數用于返回文件路徑的信息

復制代碼
<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['dirname'], "\n";// '/www/htdocs/inc' 目錄名
echo $path_parts['basename'], "\n";// 'lib.inc.php' 文件名
echo $path_parts['extension'], "\n";// 'php' 文件后綴
echo $path_parts['filename'], "\n"; // 'lib.inc' 文件名不帶后綴
?>
復制代碼

【realpath()】

  realpath()函數用于返回規范化的絕對路徑名

  在Windows上,realpath()會將unix風格的路徑改成Windows風格的

<?php
echo realpath('/wamp');// 'D:\wamp'
?>

?

目錄遍歷

glob()

  glob()函數用于尋找與模式匹配的文件路徑

array glob ( string $pattern [, int $flags = 0 ] )

  在www目錄下新建a.txt和b.txt文件

復制代碼
<?php
foreach (glob("*.txt") as $filename) {//a.txt size 1050 b.txt size 73echo "$filename size " . filesize($filename) . "\n";
}
?>
復制代碼

opendir()

  opendir()函數用于打開目錄句柄。如果成功則返回目錄句柄的resource,失敗則返回 FALSE

resource opendir ( string $path [, resource $context ] )
<?php
var_dump(opendir('test'))//resource(3, stream)
?>

closedir()

  closedir()函數用于關閉目錄句柄

void closedir ([ resource $dir_handle ] )

  參數dir_handle表示目錄句柄的 resource,之前由 opendir()所打開的。如果目錄句柄沒有指定,那么會假定為是opendir()所打開的最后一個句柄

<?php
$dir = opendir('test');
closedir($dir);
?>

readdir()

  readdir()函數用于從目錄句柄中讀取條目,返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回,失敗時返回 FALSE

string readdir ([ resource $dir_handle ] )

  在www目錄下新建目錄test,并在目錄test下新建a.txt和b.txt文件

復制代碼
<?php
$dir = opendir('test');
echo readdir($dir)."<br>";//.
echo readdir($dir)."<br>";//..
echo readdir($dir)."<br>";//a.txt
echo readdir($dir)."<br>";//b.txt
echo readdir($dir)."<br>";//
closedir($dir);
?>
復制代碼

  在遍歷目錄時,每個目錄的前兩個返回值都是.和..,.代表當前目錄,..代表上一級目錄

  所以,一般地,列出當前目錄的所有文件并去掉 . 和 ..,常采用下面的代碼

復制代碼
<?php
if ($handle = opendir('test')) {while (false !== ($file = readdir($handle))) {if ($file != "." && $file != "..") {echo "$file\n";}}closedir($handle);
}
?>
復制代碼

  接下來,在test目錄下,新建一個目錄in,并在in目錄中新建文件c.txt。然后,目錄和文件區分顯示

  [注意]通過is_dir()函數判斷目錄時,需要加入路徑

復制代碼
<?php
if ($handle = opendir('test')) {while (false !== ($file = readdir($handle))) {if ($file != "." && $file != "..") {$file = "test/".$file;if(is_dir($file)){echo "目錄:".$file."<br>";}else{echo "文件:".$file."<br>";}}}closedir($handle);
}
/*
文件:test/a.txt
文件:test/b.txt
目錄:test/in*/
?>    
復制代碼

rewinddir()

  rewinddir()函數用于倒回目錄句柄,將參數dir_handle指定的目錄流重置到目錄的開頭

void rewinddir ( resource $dir_handle )

  如果不使用rewinddir()函數,則文件只能遍歷一次

復制代碼
<?php
if ($handle = opendir('test')) {while (false !== ($file = readdir($handle))) {if ($file != "." && $file != "..") {$file = "test/".$file;if(is_dir($file)){echo "目錄:".$file."<br>";}else{echo "文件:".$file."<br>";}}}while (false !== ($file = readdir($handle))) {if ($file != "." && $file != "..") {$file = "test/".$file;if(is_dir($file)){echo "目錄:".$file."<br>";}else{echo "文件:".$file."<br>";}}}closedir($handle);
}/*
文件:test/a.txt
文件:test/b.txt
目錄:test/in*/
?>
復制代碼

  使用rewinddir()函數,可以把目錄句柄返回到第一個文件,從而實現重新遍歷

復制代碼
<?php
if ($handle = opendir('test')) {while (false !== ($file = readdir($handle))) {if ($file != "." && $file != "..") {$file = "test/".$file;if(is_dir($file)){echo "目錄:".$file."<br>";}else{echo "文件:".$file."<br>";}}}rewinddir($handle);while (false !== ($file = readdir($handle))) {if ($file != "." && $file != "..") {$file = "test/".$file;if(is_dir($file)){echo "目錄:".$file."<br>";}else{echo "文件:".$file."<br>";}}}closedir($handle);
}/*
文件:test/a.txt
文件:test/b.txt
目錄:test/in
文件:test/a.txt
文件:test/b.txt
目錄:test/in*/
?>
復制代碼

?

目錄統計

disk_total_space()

  disk_total_space()函數返回一個目錄的磁盤總大小

float disk_total_space ( string $directory )
復制代碼
<?php
$ds = disk_total_space("C:");
echo $ds."<br>";//126652637184
$ds = disk_total_space("D:");
echo $ds;//1000202240000
?>
復制代碼

disk_free_space()

  disk_free_space()函數返回目錄中的可用空間

float disk_free_space ( string $directory )
復制代碼
<?php
$ds = disk_free_space("C:");
echo $ds."<br>";//86087041024
$ds = disk_free_space("D:");
echo $ds;//481647472640
?>
復制代碼

  下面來統計在www文件夾下新建的test目錄的個數

復制代碼
<?php$dirn = 0; //目錄數$filen = 0; //文件數//統計一個目錄下的文件和目錄的個數function getdirnum($file) {global $dirn;global $filen;    $dir = opendir($file);while (false !== ($filename = readdir($dir))) {if($filename!="." && $filename !="..") {$filename = $file."/".$filename; //更新路徑if(is_dir($filename)) {$dirn++;getdirnum($filename);  //遞歸,就可以查看所有子目錄} else {$filen++; }}}closedir($dir);}getdirnum("test");echo "目錄數為:{$dirn}<br>";//目錄數為:1echo "文件數為:{$filen}<br>";//文件數為:3
?>
復制代碼

  下面來統計在www文件夾下新建的test目錄的大小

復制代碼
<?php//統計目錄大小function dirsize($file) {$size = 0;$dir = opendir($file);while(false !== ($filename = readdir($dir))) {if($filename!="." && $filename !="..") {$filename = $file."/".$filename;if(is_dir($filename)) {$size += dirsize($filename);//使用遞歸} else {$size += filesize($filename);}}}closedir($dir);return $size;}
echo "test目錄大小為:".dirsize("test")."<br>";//test目錄大小為:302
?>
復制代碼

目錄增刪

mkdir()

  mkdir()函數用于新建目錄 

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

rmdir()

  rmdir()函數用于刪除目錄

bool rmdir ( string $dirname [, resource $context ] )

  [注意]該目錄必須是空的,而且要有相應的權限。失敗時會產生一個 E_WARNING 級別的錯誤

unlink()

  unlink()函數用于刪除文件

bool unlink ( string $filename [, resource $context ] )

  下面來清空test目錄

復制代碼
<?phpfunction deldir($dirname) {//如果是文件,直接刪除即可if(is_file($dirname)) {unlink($dirname);}$dir = opendir($dirname);while(FALSE !== ($filename = readdir($dir))) {if($filename !="." && $filename!="..") {$filename = $dirname."/".$filename;if(is_dir($filename)) {deldir($filename);//遞歸}else {unlink($filename);//刪除文件}}}closedir($dir);if($dirname != 'test'){rmdir($dirname);//刪除目錄}}deldir("test");
?>
復制代碼

?

目錄復制

copy()

  copy()函數用于拷貝文件 

bool copy ( string $source , string $dest [, resource $context ] )

  [注意]copy()函數不能用于復制目錄

<?php
$file = 'a.txt';
$newfile = 'a.bak';
copy($file, $newfile);
?>

rename()

  rename()函數用于重命名一個文件或目錄

bool rename ( string $oldname , string $newname [, resource $context ] )

  [注意]rename()函數具有移動文件或目錄的功能?

  下面把www目錄下的test目錄剪貼,命名為t,并移動到d盤目錄下

<?php
rename("test", "d:/t");
?>

  使用rename()只能實現剪切的操作,使用copy()只能復制文件。如果要復制目錄,則需要使用循環和遍歷

復制代碼
<?php/*** $dirsrc  原目錄* $dirto  目標目錄*/function copydir($dirsrc, $dirto) {//如果目錄不存在,則新建一個目錄if(!file_exists($dirto)) {mkdir($dirto);}$dir = opendir($dirsrc);while(FALSE !== ($filename = readdir($dir))) {if($filename != "." && $filename !="..") {$srcfile = $dirsrc."/".$filename;  //原文件$tofile = $dirto."/".$filename;    //目標文件if(is_dir($srcfile)) {copydir($srcfile, $tofile);  //遞歸處理所有子目錄}else{copy($srcfile, $tofile);//復制文件}}}}copydir("test", "d:/t");
?>
復制代碼

?

文件操作

touch()

  touch()函數用來設定文件的訪問和修改時間。如果文件不存在,則會被創建。成功時返回 TRUE, 或者在失敗時返回 FALSE

bool touch ( string $filename [, int $time = time() [, int $atime ]] )

  參數filename表示要設定的文件名,time表示要設定的時間。如果沒有提供參數 time 則會使用當前系統的時間;atime表示如果給出了這個參數,則給定文件的訪問時間會被設為atime,否則會設置為time。如果沒有給出這兩個參數,則使用當前系統時間

<?phptouch('abc.txt')
?>

copy()

  copy()函數用于拷貝文件

bool copy ( string $source , string $dest [, resource $context ] )

  [注意]copy()函數不能用于復制目錄

<?php
$file = 'a.txt';
$newfile = 'a.bak';
copy($file, $newfile);
?>

rename()

  rename()函數用于重命名一個文件或目錄

bool rename ( string $oldname , string $newname [, resource $context ] )

  [注意]rename()函數具有移動文件或目錄的功能

<?php
rename("abc.txt", "d:/cba.txt");
?>

unlink()

  unlink()函數用于刪除文件

bool unlink ( string $filename [, resource $context ] )
<?php
unlink("d:/cba.txt");
?>

?

文件內容

fopen()

  fopen()函數用于打開文件或者URL,fopen()將 filename 指定的名字資源綁定到一個流上

  fopen() 中 mode 的可能值列表

復制代碼
mode      說明
'r'       只讀方式打開,將文件指針指向文件頭。
'r+'      讀寫方式打開,將文件指針指向文件頭。
'w'       寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。
'w+'      讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。
'a'       寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'a+'      讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
復制代碼
復制代碼
<?php//使用絕對路徑打開file.txt文件,選擇只讀模式,并返回資源$handle$handle = fopen("/home/rasmus/file.txt", "r");//訪問文檔根目錄下的文件,也以只讀模式打開$handle = fopen(“{$_SERVER['DOCUMENT_ROOT']}/data/info.txt", "r");//在 Windows 平臺上,轉義文件路徑中的每個反斜線,或者用斜線,以二進制和只寫模式組合$handle = fopen("c:\\data\\file.gif", "wb");//使用相對路徑打開file.txt文件,選擇只讀模式,并返回資源$handle$handle = fopen("../data/info.txt", "r");//打開遠程文件, 使用HTTP協議只能以只讀的模式打開$handle = fopen("http://www.example.com/", "r");//使用FTP協議打開遠程文件,如果FTP服務器可寫,則可以以寫的模式打開$handle = fopen("ftp://user:password@example.com/somefile.txt", "w");
?>
復制代碼

fclose()

  fclose()函數用于關閉一個已打開的文件指針

bool fclose ( resource $handle )
<?php
$handle = fopen('test/a.txt', 'r');
fclose($handle);
?>

fwrite()

  fwrite()函數用于寫入文件(可安全用于二進制文件),返回寫入的字符數,出現錯誤時則返回 FALSE

int fwrite ( resource $handle , string $string [, int $length ] )

  當打開方式為只讀模式時,無法向文件寫入字符

復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
echo fwrite($fp, '1');//0
echo "<br>";
echo fwrite($fp, '23');//0
echo "<br>";
fclose($fp);
?>
復制代碼

  當打開方式為寫模式時,可以向文件寫入字符

復制代碼
<?php
$fp = fopen('test/a.txt', 'w');
echo fwrite($fp, '1');//1
echo "<br>";
echo fwrite($fp, '23');//2
echo "<br>";
fclose($fp);
/*
文件內容為123*/
?>
復制代碼

  當打開方式為追加模式時,將向文件的尾部追加新的字符

復制代碼
<?php
$fp = fopen('test/a.txt', 'a');
echo fwrite($fp, '1');//1
echo "<br>";
echo fwrite($fp, '23');//2
echo "<br>";
fclose($fp);
/*
刷新兩次時,文件內容為123123*/
?>
復制代碼

fgetc()

  fgetc()函數用于從文件指針中讀取字符

  [注意]使用fgetc()函數時,需要在fopen()函數中使用讀模式

string fgetc ( resource $handle )
復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
echo fgetc($fp);//1
echo fgetc($fp);//2
echo fgetc($fp);//3
fclose($fp);
?>
復制代碼

feof()

  feof()函數用于測試文件指針是否到了文件結束的位置

bool feof ( resource $handle )
復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
while(!feof($fp)){echo fgetc($fp);//123123
}
fclose($fp);
?>
復制代碼

fgets()

  fgets()函數用于從文件指針中讀取一行

string fgets ( resource $handle [, int $length ] )

  將test目錄下的a.txt文件內容修改為

aa
bbb
復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
echo fgets($fp);//'aa'
echo fgets($fp);//'bbb'
echo fgets($fp);//''
fclose($fp);
?>
復制代碼

fread()

  fread()函數用于讀取文件(可安全用于二進制文件)。fread()從文件指針handle讀取最多length個字節。該函數在讀取了length個字節或到達了文件末尾(EOF)時將停止讀取文件

string fread ( resource $handle , int $length )
復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
echo fread($fp,3);//'aa '
fclose($fp);$fp = fopen('test/a.txt', 'r');
echo fread($fp,filesize('test/a.txt'));//'aa bbb'
fclose($fp);
?>
復制代碼

fseek()

  fseek()函數用于在文件指針中定位,成功則返回 0;否則返回 -1

int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )    

  將test目錄下的a.txt文件內容修改為'12345'

復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
echo fgetc($fp);//'1'
fseek($fp,4);
echo fgetc($fp);//'5'
fclose($fp);
?>
復制代碼
復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
echo fread($fp,2)."<br>";//12
fseek($fp,4);
echo fread($fp,2)."<br>";//5
fseek($fp,-3,SEEK_END);
echo fread($fp,2)."<br>";//34
fclose($fp);
?>
復制代碼

ftell()

  ftell()函數用于返回文件指針讀/寫的位置 

int ftell ( resource $handle )
復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
echo ftell($fp);//0
fgetc($fp);
echo ftell($fp);//1
fseek($fp,4);
echo ftell($fp);//4
fclose($fp);
?>
復制代碼

rewind()

  rewind()函數用于倒回文件指針的位置,將handle的文件位置指針設為文件流的開頭

bool rewind ( resource $handle )
復制代碼
<?php
$fp = fopen('test/a.txt', 'r');
fseek($fp,2);
echo ftell($fp);//2
rewind($fp);
echo ftell($fp);//0
?>
復制代碼

file_get_contents()

  file_get_contents()函數用于將整個文件讀入一個字符串

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
<?php
$homepage = file_get_contents('test/a.txt');
echo $homepage;//'12345'
?>

  頁面變為百度首頁

<?php
$homepage = file_get_contents('http://www.baidu.com/');
echo $homepage;
?>

file_put_contents()

  file_put_contents()函數用于將一個字符串寫入文件

int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

  使用該函數和依次調用 fopen(),fwrite() 以及 fclose() 功能一樣

  [注意]默認為寫模式,若設置第三個參數為FILE_APPEND,則變為追加模式

<?php
file_put_contents('test/a.txt','abc');
?>

readfile()

  readfile()函數用于讀取文件并寫入到輸出緩沖

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
復制代碼
<?php
readfile('http://www.baidu.com/');//頁面中顯示百度首頁
?>
<?php
readfile('test/a.txt');//頁面中顯示abc
?>
復制代碼

file()

  file()函數用于把整個文件讀入一個數組中,每一行作為一個數組的元素

array file ( string $filename [, int $flags = 0 [, resource $context ]] )

  將a.txt的文件內容改為每一行一個數字,分別是1、2、3、4、5、6、7、8、9

<?php
$arr = file('test/a.txt',0);
echo $arr[0]."<br>";//1
echo count($arr);//9
?>

ftruncate()

  ftruncate()函數用于將文件截斷到給定的長度

bool ftruncate ( resource $handle , int $size )

  [注意]使用ftruncate()函數時,需要使用追加模式。經測試,使用讀模式時無效,使用寫模式時,文件內容被清空

<?php
$fp = fopen("test/a.txt","a");
ftruncate($fp,100);
?>
-轉載

轉載于:https://www.cnblogs.com/wenJiaQi/p/6103337.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373398.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373398.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373398.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

騰訊云CentOS6.5下安裝mysql,并配置好遠程訪問等權限,途中遇到的問題

1.使用yum命令安裝mysql [rootbogon ~]# yum -y install mysql-server 2.設置開機啟動 [rootbogon ~]# chkconfig mysqld on 3.啟動MySQL服務 [rootbogon ~]# service mysqld start 4.設置MySQL的root用戶設置密碼 [rootbogon ~]# mysql -u root mysql> select u…

休眠性能提示:臟收集效果

在使用Hibernate作為ORM開發服務器和嵌入式應用程序8年后&#xff0c;我全力以赴地尋求提高Hibernate性能的解決方案&#xff0c;閱讀博客和參加會議&#xff0c;我決定與您分享這幾年獲得的知識。 這是更多新帖子中的第一篇&#xff1a; 去年&#xff0c;我以Devoxx的身份參加…

java runtime 異常_Java中RuntimeException和Exception

在java的異常類體系中,Error和RuntimeException是非檢查型異常&#xff0c;其他的都是檢查型異常。所有方法都可以在不聲明throws的情況下拋出RuntimeException及其子類不可以在不聲明的情況下拋出非RuntimeException簡單的說&#xff0c;非RuntimeException必要自己寫catch塊處…

BZOJ3130: [Sdoi2013]費用流[最大流 實數二分]

3130: [Sdoi2013]費用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 960 Solved: 505[Submit][Status][Discuss]Description Alice和Bob在圖論課程上學習了最大流和最小費用最大流的相關知識。 最大流問題&#xff1a;給定一張有向圖表示運輸網絡…

Linux Shell 003-變量

Linux Shell 003-變量 本節關鍵字&#xff1a;Linux、Shell、變量、全局變量、系統變量 相關指令&#xff1a;read、echo、unset、export 變量的含義 變量是用來臨時保存數據的&#xff0c;該數據是可以變化的數據。如果某個內容需要多次使用&#xff0c;并且在代碼中重復出現…

Java自動機實現

這篇文章將解決在Java中實現有限狀態機的問題。 如果您不知道什么是FSM或在什么地方可以使用FSM&#xff0c;您可能會熱衷于閱讀此 &#xff0c; 這個和這個 。 如果您發現自己在設計上使用FSM的情況&#xff0c;則可能已經開始為實現相同接口的每個狀態編寫類。 一個好的設計可…

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files這個文件找不到

在C:\Windows\Microsoft.NET\Framework64\v4.0.30319文件夾下面建立Temporary ASP.NET Files 文件夾&#xff08;Framework64 注意64&#xff0c;這個可能是我們用的64位系統&#xff0c;但是vs2010不分32位還是64位&#xff0c;所以在C:\Windows\Microsoft.NET\Framework\v4.0…

java電腦運行視頻演示_javaweb視頻第一天(二)

無論通過哪種方式得到的class類對象&#xff0c;是同一個。比較的是地址碼這里教會你&#xff1a;如何去使用class對象現在就知道這個&#xff1a;如何使用反射&#xff0c;并且說反射是實現了什么樣的功能。如何通過反射得到里面的相應字段&#xff0c;得到里面的相應函數等等…

模型驅動 ModelDriven

ModelDriven:模型驅動,對所有action的模型對象進行批處理. 我們在開發中&#xff0c; 在action中一般是用實體對象&#xff0c;然后給實體對象get&#xff0c;set方法。 RegAction{   User user ;   //get/set} 然后在jsp頁面中給action中的user屬性綁定值是通過如下方式 &…

本月風味– Neo4j和Heroku

Neo4j今年早些時候發起了一項挑戰&#xff0c;即“ 種子播云 ”&#xff0c;以使人們使用Neo4j附加組件在Heroku上創建模板或演示應用程序。 經過許多內部辯論之后&#xff0c;我決定進入&#xff0c;但由于缺乏想法而陷入絕望。 當我什么都沒做的時候&#xff0c;這個主意就出…

1 + 11 + 1111+ 11111+ ..... + 11111(2016個) 結果是幾位數

# -*- coding: utf-8 -*- """ Created on Mon Mar 21 20:38:06 2016author: yanjie """1 11 1111 11111 ..... 11111(2016個) 結果是幾位數 用什么數據結構 有幾個6 寫算法a []; m 0; six 0; for i in range(2016,0,-1):b (im) % 10;m (…

[回歸分析][10]--相關誤差的問題

[回歸分析][10]--相關誤差的問題這一篇文章還是來分析相關誤差的問題。 1.游程數 定義&#xff1a;游程數--殘差穿過x-軸的次數 用這個可以檢查如殘差有一塊在x軸上面&#xff0c;一塊在x軸下面的情形。 如上面這樣的殘差 下面構造兩個統計量&#xff1a; 其中 n…

Spring 3 MVC異常處理程序

我遇到的大多數Spring 3錯誤處理示例代碼似乎都提供了其用法的最簡單概述&#xff0c;但是&#xff0c;有人說&#xff0c;如何處理錯誤比正常代碼的工作方式更為重要。 前一天&#xff0c;當我在Spring&#xff08;2&#xff09;錯誤處理程序中遇到一個簡單的GOTCHA時&#xf…

java編譯找不到符號_javac編譯時找不到符號?

我是個新手&#xff0c;在linux使用java編程時&#xff0c;出現這個情況。我把要引的包放在classpath中&#xff0c;紅色部分&#xff1a;export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/hadoop-1.0.4.core.jar:${CLASSPATH}通過echo $CLASSP…

全備份、差異備份和增量備份概念詳述

全備份、差異備份和增量備份概念詳述 1、完全備份&#xff08;Full Backup&#xff09; 備份全部選中的文件夾&#xff0c;并不依賴文件的存檔屬性來確定備份那些文件。在備份過程中&#xff0c;任何現有的標記都被清除&#xff0c;每個文件都被標記為已備份。換言之&#xff0…

微信接入登錄功能access_token流程記錄

提示&#xff1a;只有認證過的訂閱號或者服務號才能獲取access_token。 1.app微信登錄第一步是&#xff0c;app調起來微信客戶端&#xff0c;通過app端的配置&#xff0c;引入一個微信類庫&#xff0c; 2.授權成功后&#xff0c;微信會返回你一個code。 將APP_ID替換成你在微信…

使用MVC模式制作游戲-教程和簡介

游戲開發中一種有用的體系結構模式是MVC&#xff08;模型視圖控制器&#xff09;模式。 它有助于分離輸入邏輯&#xff0c;游戲邏輯和UI&#xff08;渲染&#xff09;。 在任何游戲開發項目的早期階段&#xff0c;其實用性很快就會被注意到&#xff0c;因為它允許快速更改內容&…

boost

參考博客 http://www.cnblogs.com/lidabo/p/3805487.html http://www.cppblog.com/Robertxiao/archive/2013/01/06/197022.html http://www.cnblogs.com/finallyliuyu/archive/2013/05/23/3094246.html http://www.cnblogs.com/lidabo/p/3782193.html http://www.cnblogs.com/z…

moment格式換時間_不一樣的日期、時間轉換(moment.js)

無意中遇到了一種很奇怪的日期格式&#xff0c;從接口中返回的日期是這樣的&#xff0c;如 2018-02-06T11:59:2208:00 。然而這卻不是我們想要的&#xff0c;我們要的是這種&#xff0c;YYYY-MM-DD HH:mm:ss。那么這種是怎么轉換的呢&#xff1f;這時候就可以使用一款很好用的日…

并發模式:生產者和消費者

在我15年的職業生涯中&#xff0c;生產者和消費者的問題是我僅遇到過幾次。 在大多數編程情況下&#xff0c;我們正在做的事情是以同步方式執行功能&#xff0c;其中JVM或Web容器自行處理多線程的復雜性。 但是&#xff0c;在編寫某些需要的用例時。 上周&#xff0c;我遇到了一…