PHP全棧學習筆記12

来源:https://www.cnblogs.com/dashucoding/archive/2019/04/27/10780708.html
-Advertisement-
Play Games

php簡介,php歷史,php後端工程師職業前景,php技術方向,php後端工程師職業體系介紹。 php是世界上使用最廣泛的web開發語言,是超文本預處理器,是一種通用的開源腳本語言,語法吸收了c語言,Java語言,和Perl的特點,利於學習,使用廣泛,主要適用於web開發,PHP做出來的動態頁面與 ...


image.png

php簡介,php歷史,php後端工程師職業前景,php技術方向,php後端工程師職業體系介紹。

php是世界上使用最廣泛的web開發語言,是超文本預處理器,是一種通用的開源腳本語言,語法吸收了c語言,Java語言,和Perl的特點,利於學習,使用廣泛,主要適用於web開發,PHP做出來的動態頁面與其他的編程語言相比,PHP是將持續嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多,PHP還可以執行編譯後的代碼,編譯後可以達到加密和優化代碼的目的,讓代碼運行更快。

PHP是在1994年由Rasmus Lerdorf創建的,開始只是一個簡單的用Perl語言編寫的程式,用來統計他自己的網站的訪問者,後來通過c語言的重寫編寫,可以訪問資料庫,1995年開始對外發佈第一個版本,名Personal Home Page Tools,隨後發佈了php 1.0版本。

1995年,php2.0發佈了。1997年,php3發佈,2004年,PHP5.0發佈了。

PHP的使用更加廣泛,web3.0的升溫,PHP是優秀的web開發語言,linux,apache,mysql黃金組合。

web後端技術,web前端技術與PHP語言,linux操作系統,mysql資料庫,各種php開發框架,緩存技術和海量數據優化技術,系統調優和負載均衡技術。

HTML入門,JavaScript入門,PHP語言基礎,源碼管理工作,mysql資料庫。

Linux操作系統,PHP面向對象,語言高級開發技術,常用PHP開發框架,PHP與公共api介面開發,PHP測試工具。

深入學習http協議,PHP環境高級配置,mysql資料庫優化技術,靜態化和緩存技術,網站安全技術。

深入分析PHP框架源代碼,深入學習PHP內核,noSQL型資料庫,集群與負載均衡技術。

深入學習Linux操作系統,多級緩存技術,海量數據優化技術,容災技術,大型系統框架設計方法。

資料庫PDO簡介:

pdo簡介,安裝與配置,pdo鏈接資料庫,pdo對象方法介紹以及使用,pdostatement對象方法介紹以及使用,pdo錯誤處理,pdo參數綁定與預處理,pdo事務處理,pdo實戰。

pdo是資料庫訪問抽象層,統一各種資料庫的訪問介面。

pdo特性,編碼一致性,靈活性,高性能,面向對象特性。

image.png

開啟pdo:

extension = php_pdo.dll
extension = php_pdo_mysql.dll

通過參數形式連接,通過uri形式連接,通過配置文件形式連接資料庫。

<?php
// 通過參數形式連接資料庫
try {
 $dsn = 'mysql:host=localhost; dbname=dashucoding';
 $username=‘root’;
 $passwd='root';
 $pdo=new PDO($dsn, $username, $passwd);
 var_dump($pdo);
}catch(PDOException $e){
 echo $e -> getMessage();
}

image.png

<?php
// 通過uri的形式連接資料庫
try {
 $dsn='uri:file//文件路徑\dsn.txt';
 $username='root';
 $passwd='root';
 $pdo = new PDO($dsn, $username, $password);
 var_dump($pdo);
}catch(PDOException $e){
 echo $e->getMessage();
}
mysql:dbname=dashucoding; host=localhost

image.png

插入記錄操作

<?php
try{
$pdo = new PDO('mysql:host=localhost;dbname='dashucoding','root','root');
// exec對select沒有作用
// exec()執行一條語句並返回其受影響的記錄條數
$sql = <<<EOF
 CREATE TABLE IF NOT EXISTS user(
 id INT UNSIGNED AUT_INCREMENT key,
 username varchar(20) not null unique,
 password CHAR(32) not null,
 email varchar(30) not null
 );
EOF;
 $res = $pdo -> exec($sql);
 var_dump($res);

 $sql='insert user(username,password,email) values ('dashu',"'.md5('dashu').'","[email protected]")'));
}catch(PDOException $e){
 echo $e -> getMessage();
}

errorCode()和errorInfo()方法查看錯誤信息

<?php
header('content-type:text/html; charset=utf-8');

try{
$pdo = new PDO('mysql:host=localhost; dbname=dashucoding', 'root', 'root');
$res = $pdo->exec($sql);
var_dump($res);
 if($res === false){
  echo $pdo -> errorCode();
  echo '<br/>';
  echo $pdo -> errorInfo();
  print_r($errInfo);
  }
}catch(PDOException $e){
echo $e->getMessage();
}

query()方法執行查詢語句

<?php
header('content-type:text/html; charset=utf-8');
try{
 $pdo = new PDO('mysql:host=localhost; dbname=dashucoding', 'root', 'root');
 $sql = 'select * from user where id = 3';
 $stmt = $pdo -> query($sql);
 var_dump($stmt);
 foreach($stmt as $row){
 }

}catch(PDOException $e){
 echo $e -> getMessage();
}

image.png

瞭解pdo,連接資料庫的方法,pdo中執行sql語句的方法,pdo中獲取結果集的方法,掌握pdo中獲取sql語句中的錯誤,錯誤處理的方法,事務處理,pdo中存儲過程。

pdo是PHP數據對象。

pdo是一個資料庫訪問抽象層,可以統一各種資料庫的訪問介面。

安裝pdo,linux環境下,要使用mysql資料庫configure命令:

--with-pdo-mysql=/path/to/mysql/installation

pdo連接資料庫:

<?php
$dbms = 'mysql';
$dbName = 'db_database';
$user = 'root';
$pwd = 'root';
$host = 'localhost';
$dsn = "$dbms:host=$host; dbname=$dbName";
try{
 $pdo = new PDO($dsn, $user, $pwd);
 echo "pdo連接mysql成功";
}catch(Exception $e){
echo $e -> getMessage()."<br>";
}
?>

dsn:數據源名稱
username:連接資料庫的用戶名
password:連接資料庫的密碼
driver_options:連接資料庫的其他選項

<?php
header('Content-Type:text/html; charset=utf-8");
$dbms='mysql';
$dbName='db_database';
$user='root';
$pwd='root';
$host='localhost';
$dsn="$dbms:host=$host;dbname=$dbName";
try{
 $pdo=new PDO($dsn, $uer, $pwd);
 echo "PDO連接Mysql成功";
}catch(Exception $e){
 echo $e->getMessage()."<br>";
}
?>

dsn為數據源,提供連接資料庫需要的信息。

pdo執行sql語句:

exec()方法
exec 方法返回執行sql語句後受影響的行數
int PDO::exec(string statement)
參數statement要執行的sql語句

通用insert,delete和update

<?php
$dbms = 'mysql';
$dbName='db_database';
$user='root';
$pwd='root';
$host='localhost';
$dsn = "$dbms:host=$host; dbname=$dbName";
$query="delete from tb_da where id=2"; // sql語句
try{
$pdo = new PDO($dsn, $user, $pwd);
$affCount=$pdo -> exec($query);
echo "刪除條數".$affCount;
}catch(Exception $e){
echo "".$e->getMessage()."<br>";
}
?>

query()方法

query()方法通常用於返回執行查詢後的結果集

PDOStatement PDO::query(string statement)
<table width="200" border="0" bgcolor="#FF3377">
 <tr>
 <td></td>
 </tr>
</table>

<?php
$dbms = 'mysql';
$dbName='db_database';
$user='root'
$pwd='root';
$dsn="$dbms:host=$host; dbname=$dbName";
$query = "select * from tb_da";
try{
$pdo = new PDO($dsn, $user, $pwd);
$result=$pdo->query($query); // 輸出結果集中的數據
foreach($result as $row){ // 輸出結果集中的數據

}catch(Exception $e){
echo $e->getMessage()."<br>";
}
?>

預處理語句:prepare()和execute()
prepare()方法做查詢的準備工作,execute()方法執行查詢,bindParam()方法來綁定參數提供給execute()方法

PDOStatement PDO::prepare(string statement [, array driver_options])
bool PDOStatement::execute([array input_parameters])

prepare()和execute()方法:

<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_da';
$user='root';
$pass='root';
$dsn="$dbms:host=$host;dbname=$dbName";
try{
$pdo=new PDO($dsn, $user, $pass);
$query = "select * from tb_mysql";
$result = $pdo->prepare($query);
$result->execute();
while($res = $result->fetch(PDO::FETCH_ASSOC)){

}catch(PDOException $e){
die($e->getMessage()."<br/>");
}
?>

php中獲取結果集的方法

fetch()方法獲取結果集中的下一行數據
fetchAll()方法獲取結果集中的所有行
fetchColumn()方法獲取結果集中下一行指定的列的值

fetch()方法:參數

mixed PDOStatement::fetch( fetch_style, cursor_orientation, int_cursor_offset)

PDO::FETCH_ASSOC關聯數組形式
PDO::FETCH_NUM數字索引數組形式
PDO::FETCH_BOTH兩者數組形式都有
PDO::FETCH_OBJ按照對象的形式
PDO::FETCH_BOUND以布爾值的形式返回結果
PDO::FETCH_LAZY 以關聯數組,數字索引,和對象三種形式返回

cursor_orientation:PDOStatement對象的一個滾動游標
cursor_offset:游標的偏移量

<?php
$dbms = 'mysql';
$host='localhost';
$dbName='db_database';
$user='root';
$pass='root';
$dsn = "$dbms:host=$host;dbname=$dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = "select * from tb_pdo_mysql";
$result = $pdo->prepare($query);
$result->execute();
while($res=$result->fetch(PDO::FETCH_ASSOC)){
}catch(PDOException $e){
die( $e->getMessage()."<br/>");
}
?>
<?php
$dbms='mysql'; // 資料庫類型,對於開發者來說,使用不同的資料庫,只要該這個就行
$host='localhost';
$dbName='db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbms:host=$host; dbname=$dbName";
try{
 $pdo = new PDO($dsn,$user,$pass);
 $query = "select * from tb_pdo_mysql";
 $result=$pdo->prepare($query);
 $result->execute();
 while($res=$result->fetch(PDO::FETCH_ASSOC){

}catch(PDOException $e){
die( $e -> getMessage() );
}
?>

fetchAll()方法獲取結果集中的所有行

array PDOStatement::fetchAll();
參數fetch_style:控制結果集中數據的返回方式
參數column_index:欄位的索引
返回的是包含結果集中所有數據的二維數組
<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbmms:host=$host; dbname = $dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = "select * from tb_pdo_mysql";
$result=$pdo -> prepare($query);
$result->execute();
$res=$result->fetchAll(PDO::FETCH_ASSOC);
for($i=0;$i<count($res);$i++){
?>
<tr>
<td height="22" align="center" valign="middle"><?php echo $res[$i]['id'];?></td>
<td align="center" valign="middle"><?php echo $res[$i]['pdo_type'];?</td>
</tr>
<?php
}
}catch(PDOException $e){
 die("Error!:".$e->getMessage()."<br/>");
}
?>

fetchColumn()方法

獲取結果集中下一行指定列的值:

string PDOStatement::fetchColumn()

參數column_number設置行中列到的索引值,該值從0開始,省略該參數將從第1列開始取值。

<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbms:host=$host;dbname=$dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = " select * from tb_pdo_mysql";
$result = $pdo -> prepare($query); // 準備查詢語句
$result -> execute(); // 執行查詢語句
?>
<tr>
<td><?php echo $result->fetchColumn(0);?></td>
<td><?php echo $result->fetchColumn(0);?></td>
<td><?php echo $result->fetchColumn(0);?></td>
<td><?php echo $result->fetchColumn(0);?></td>
</tr>
<?php
 }catch(PDOException $e) {
 die("Error!:".$e->getMessae()."<br/>");
}
?>

pdo中捕獲sql語句中的錯誤

使用預設模式
PDO::ERRMODE_SILENT
pdo::errmode_silent

使用警告模式
PDO::ERROMODE_WARNING
pdo::erromode_warning

使用異常模式
PDO::ERRMODE_EXCEPTION
pdo::errmode_exception

// pdo連接資料庫mysql,通過預處理prepare()和execute()方法執行insert添加操作
<?php
if($_POST['Submit']=="提交"&&$_POST['pdo']!=""){
$dbms = 'mysql';// 資料庫類型
$host = 'localhost'; // 資料庫主機名
$dbName = 'db_database'; // 使用的資料庫
$user = 'root'; // 資料庫的連接用戶名
$pass = 'root'; // 對應的密碼
$dsn = "$dbms:host=$host; dbname=$dbName";
$pdo = new PDO($dsn, $user, $pass);
$query = "insert into tb_pdo_mysql(pdo_type, database_name,dates) values ("", $_POST['pdo'].", ".$_POST['databases'].",".$_POST['dates'].")";
$result = $pdo->prepare($query);
$result -> execute();
$code = $result->errorCode();
if(empty($code)){
echo "數據添加成功!"'
}else{
echo "數據添加錯誤:<br/>";
echo 'sql query:'.$query;
echo '<pre>';
var dump($result->errorInfo());
echo '</pre>';
}}
?>
// 設置警告模式,通過prepare()和execute()方法讀取資料庫中數據
// setAttribute()方法設置為警告模式
<?php
$dbms = 'mysql'; // 資料庫類型
$host = 'localhost'; // 資料庫主機名
$dbName = 'db_database'; // 資料庫連接用戶名
$user = 'root';
$pass = 'root';
$dsn="$dbms:host=$host; dbname=$dbName";
try{
 $pdo = new PDO($dsn, $user, $pass);
 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); // 設置為警告模式

$query = "select * from tb_pdo_mysqls"; // 定義sql語句
$result = $pdo -> prepare($query); // 準備查詢語句
$result->execute(); // 執行查詢語句,並返回結果集
while($res=$result->fetch(PDO::FETCH_ASSOC)){
?>
<tr>
 <td><?php echo $res['id'];?></td>
 <td><?php echo $res['date'];?></td>
</tr>
<?php
 } 
 }catch(PDOException $e){
 die("Error!:".$e->getMessage()."<br/>");
}
?>
// 異常模式
<?php
heder("Content-type: text/html; charset="utf-8"); // 設置文件編碼格式
if($_GET['conn_id']!=""){
 $dbms = 'mysql';//資料庫類型
 $host = 'localhost';
 $dbName='db_database';
 $user='root';
 $pass='root';
 $dsn = "$dbms:host=$host; dbname=$dbName";
 try {
 $pdo = new PDO($dsn, $user, $pass);
 $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $query="delete from tb_pdo_mysqls where Id=:id";
 $result = $pdo->prepare($query); // 預準備語句
 $result = bindParam(':id', $_GET['conn_id']); // 綁定更新的數據
 $result -> execute();
}catch(PDOException $e) {
echo 'PDO Exception Caught.';
echo 'Error with the database:<br/>';
echo 'SQL Query:'.$query;
echo '<pre>';
echo "Erro:".$e->getMessage()."<br/>";
echo "File:".$e->getCode()."<br/>";
echo "Line:".$e->getFile()."<br/>";
echo "Trace:".$e->getTranceAsString()."<br/>";
echo '</pre>';
}}
?>

pdo中錯誤處理:
errorCode()方法和errorInfo()方法

errorCode()方法用於獲取在操作資料庫句柄時所發生的錯誤代碼。

int PDOStatement::errorCode(void)

errorCode()方法返回一個sqlstate代碼。

<?php
$dbms='mysql'; // 資料庫類型
$host='localhost'; // 資料庫主機名
$dbName = 'db_database'; // 使用的資料庫
$user = 'root'; // 資料庫連接用戶名
$pass = 'root' 對應的密碼
$dsn = "dbms:host = $host; dbname = $dbName";
try{
$pdo = new PDO($dsn, $user, $pass);
$query = "select * from tb_pdo_mysqls"; // 定義sql語句
$result = $pdo -> query($query); // 執行查詢語句,並返回結果集
echo "errorCode為: ".$pdo->errorCode();
foreach($result as $items){
?>
<tr>
<td><?php echo $items['id'];?></td>
</tr>
<?php
 }
}catch(PDOException $e){
die("Error!:" . $e->getMessage()."<br/>");
}
?>

errorInfo()方法用於獲取操作資料庫句柄時所發生的錯誤的信息。

array PDOStatement::errorInfo(void)
<?php
$dbms = 'mysql';
$host = 'localhost';
$dbName = 'db_database';
$user = 'root';
$pass = 'root';
$dsn = "$dbms:host=$host; dbname=$dbName";
try{
$pdo = new PDO($dsn, $user, $pass); // 初始化一個pdo對象,創建資料庫連接對象$pdo
$query = "select * from tb_pdo_mysqls"; // 定義sql語句
$result = $pdo -> query($query); // 執行查詢語句
print_r($pdo->errorInfo());
foreach($result as $items){
?>
<tr>
<td><?php echo $items['id'];?></td>
<td><?php echo $items['pdo_type'];?></td>
</tr>
<?php
}
}catch(PDOException $e){
die("Error!:".$e->getMessage()."<br/>");
}
?>

pdo中事務處理:

開啟事務:beginTransaction()方法
beginTransaction()方法將關閉自動提交autocommit模式,直到事務提交或者回滾以後才恢復

提交事務:commit()方法
commit()方法完成事務的提交操作,成功返回true,否則為false

事務回滾:rollBack()方法
通過prepare和execute()方法向資料庫中添加數據,並且通過事務處理機制確保數據能夠正確地添加到資料庫中

通過beginTransaction()方法開啟事務
通過$_POST[] 方法獲取表單中提交的數據
通過prepare()和execute()方法向資料庫中添加數據
通過commit()方法完成事務的提交操作
rollBack()方法執行事務的回滾操作

<?php
if($_POST['Submit']=="提交" && $_POST['pdo']!=""){
 $dbms = 'mysql'; //資料庫類型
 $host = 'localhost'; // 資料庫主機名
 $dbName = 'db_database''; // 資料庫
 $user='root';
 $pass='root';
 $dsn = "$dbms:host=$host; dbname=$dbName";
 try{
 $pdo=new PDO($dsn, $user, $pass);
 $pdo -> beginTransaction(); // 開啟事務
 $query="insert into tb_pdo_mysql(pdo_type, database_name, dates) values ("", $_POST['pdo'].",".$_POST['databases'].",".$_POST['dates'].")";
  $result = $pdo->prepare($query);
 if($result->execute()){
  echo "數據添加成功";
 }else{
  echo "數據添加失敗";
}
 $pdo->commit(); // 執行事務的提交操作
 }catch(PDOException $e){
 die("Error!:".$e->getMessage()."<br/>");
 $pdo->rollBack();
 }
}
?>

pdo中存儲過程

pdo中調用存儲過程:

drop procedure if exists pro_reg;
delimiter // 
create procedure pro_reg(in nc varchar(80), in pwd varchar(80), in email varchar(80), in address varchar(50))
begin
insert into ...
end;
// 

用戶註冊:用戶昵稱,註冊密碼,e-mail,家庭地址。

<title>用戶註冊</title>
<form name="form1" method="post" action="index.php"  onsubmit="return chkinput(this)">

</form>

<?php
 if($_POST['submit']!=""){
    $dbms='mysql';                      //資料庫類型
    $host='localhost';                  //資料庫主機名
    $dbName='db_database';          //使用的資料庫
    $user='root';                       //資料庫連接用戶名
    $pass='root';                       //對應的密碼
    $dsn="$dbms:host=$host;dbname=$dbName";
    try {
        $pdo = new PDO($dsn, $user, $pass);     //初始化一個PDO對象
        $pdo->query("set names utf8");          //設置資料庫編碼格式
        $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $nc=$_POST['nc'];
        $pwd=md5($_POST['pwd']);
        $email=$_POST['email'];
        $address=$_POST['address'];
        $query="call pro_reg('$nc','$pwd','$email','$address')";//call調用存儲過程
        $result=$pdo->prepare($query);
        if($result->execute()){
            echo "數據添加成功!";
        }else{
            echo "數據添加失敗!";
        }
    } catch (PDOException $e) {
        echo 'PDO Exception Caught.';
        echo 'Error with the database:<br/>';
        echo  'SQL Query: '.$query;
        echo '<pre>';
        echo "Error: " . $e->getMessage(). "<br/>";     
        echo "Code: " . $e->getCode(). "<br/>";
        echo "File: " . $e->getFile(). "<br/>";
        echo "Line: " . $e->getLine(). "<br/>";
        echo "Trace: " . $e->getTraceAsString(). "<br/>";
        echo '</pre>';

    }
 }

?>

<script language="javascript">
  function chkinput(form){
  
    if(form.nc.value==""){
      alert("請輸入用戶昵稱!");
      form.nc.select();
      return(false);
    }
   if(form.pwd.value==""){
      alert("請輸入註冊密碼!");
      form.pwd.select();
      return(false);
    }
     if(form.email.value==""){
      alert("請輸入E-mail地址!");
      form.email.select();
      return(false);
    }
    
    if(form.address.value==""){
      alert("請輸入家庭地址!");
      form.address.select();
      return(false);
    }
   return(true);
  }

</script>
<?php 
    header("Content-Type:text/html;charset=utf-8");
    $dbms='mysql';
    $dbName='db_database';
    $user='root';
    $pwd='root';
    $host='localhost';
    $dsn="$dbms:host=$host;dbname=$dbName";
?>

    <form action="" method="post">
    <div>
    <span>PDO插入數據</span><br>
        用戶名:<input class="one" type="text" name="text" ><br>
        密&nbsp;&nbsp;碼:<input class="one"type="password" name="pwd"><br>
        <input class="two" type="submit" name="sub" value="確定">
        <input class="two" type="reset" name="res" value="重置">
<?php
    if(isset($_POST[sub])){
        if($_POST[text]==""&&$_POST[pwd]==""){
            echo "文本框內容不能為空";
        }else{
            try {
                $pdo=new PDO($dsn,$user,$pwd);
                $sql="insert into tb_pdo values('','$_POST[text]','$_POST[pwd]',now())";
                $result=$pdo->exec($sql);
                echo "插入數據成功,影響條數為".$result;
            } catch (Exception $e) {
                echo "ERROR!!".$e->getMessage()."<br>";
            }       
        }
    }
?>
    </div>
    </form> 
<form action=''method="post">
<?php 
        }
        if(isset($_GET[id])){
            $sql1="select * from tb_pdo where id='$_GET[id]'";
            $resul=$pdo->query($sql1);
                foreach ($resul as $value){
                    
                
?>
    <tr>
            <td class="one"><input readonly type='text' name='id' value='<?php echo $value[id];?>'></td>
            <td class="one"><input type='text' name='user' value='<?php echo $value[1];?>'></td>
            <td class="one"><input type='password' name='pwd' value='<?php echo $value[2];?>'></td>
            <td class="one"><input type='text' name='date' value='<?php echo $value[3];?>'></td>
            <td class="one"><input class="two" type='submit' name='sub1' value='確定'></td>
    </tr>
    
<?php 
            }
        }
?>
    </form>
<?php 
        if($_POST[sub1]=="確定"){
            $sql2="update tb_pdo set username='$_POST[user]',userpwd='$_POST[pwd]',date='$_POST[date]' where id='$_POST[id]'";
            $resu=$pdo->exec($sql2);
            if($resu==1){
                echo "<script>alert('更新數據成功');window.location.href='index.php'</script>";
            }   
        }   
    } catch (Exception $e) {
        echo "ERROR!!!".$e->getMessage()."<br>";
    }
?>

結言

好了,歡迎在留言區留言,與大家分享你的經驗和心得。

感謝你學習今天的內容,如果你覺得這篇文章對你有幫助的話,也歡迎把它分享給更多的朋友,感謝。

感謝!承蒙關照!您真誠的贊賞是我前進的最大動力!

image

image


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 所屬網站分類: 資源下載 > python電子書 作者:熊貓燒香 鏈接:http://www.pythonheidong.com/blog/article/66/ 來源:python黑洞網,專註python資源,python教程,python技術! 所屬網站分類: 資源下載 > python電子書 ...
  • 在創建Maven項目時,需要在pom.xml 文件中添加相應的依賴,其中有一個scope標簽,該標簽是設置該依賴範圍 (maven項目包含三種classpath{編譯classpath,測試classpath、運行classpath})的,其可選配置:compile、test、provided、ru ...
  • ConcurrentLinkedQueue是阻塞隊列嗎? ConcurrentLinkedQueue如何保證併發安全? ConcurrentLinkedQueue能用於線程池嗎? ...
  • 包: 對類文件進行分類管理;給類提供多層命名(名稱)空間;寫在程式文件的第一行;類名的全稱是 包名.類名包也是一種封裝形式; package protected必須是成為其子類,才能繼承import導入指定包中的類用的 導包的原則:用到哪個導哪個;作用:為了簡化類名書寫; jar包:Java的壓縮包 ...
  • Python基礎之字典的知識,內容包括 字典初識,字典的操作函數,字典其他擴展。其中,字典初識 包括 字典的認識,字典的作用和定義語法,字典的定義和取值,字典的基本使用-增刪改查;字典的操作函數包括 字典操作函數查看,字典操作實操,字典常用操作函數羅列,字典操作實操;字典其他擴展 包括 字典 迴圈遍... ...
  • Redis-Sentinel是官方推薦的高可用解決方案,當redis在做master-slave的高可用方案時,假如master宕機了,redis本身(以及其很多客戶端)都沒有實現自動進行主備切換,而redis-sentinel本身也是獨立運行的進程,可以部署在其他與redis集群可通訊的機器中監控... ...
  • 根據Java虛擬機規範,虛擬機記憶體中除過程式計數器之外的運行時數據區域都會發生OutOfMemoryError(OOM),本文將通過實際例子驗證分析各個數據區域OOM的情況。為了更貼近生產,本次所有例子都是通過調用介面觸發,並使用jvisualvm工具監控tomcat記憶體進行分析。 一、Java堆溢 ...
  • 1 九九乘法表 2 登錄程式 3,購物車程式 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...