PHP全棧學習筆記5

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

php與mysql資料庫,PHP支持很多資料庫,與mysql為牛逼組合,mysql資料庫的基礎知識的掌握是由必要的,要瞭解如何操作mysql資料庫,數據表的方法。 什麼是資料庫,資料庫能做什麼,資料庫有什麼好處,資料庫的基礎必備技術,備份和恢復的方法。 mysql的好處,功能強大,支持跨平臺,運行速 ...


PHP全棧學習筆記5

php與mysql資料庫,PHP支持很多資料庫,與mysql為牛逼組合,mysql資料庫的基礎知識的掌握是由必要的,要瞭解如何操作mysql資料庫,數據表的方法。

什麼是資料庫,資料庫能做什麼,資料庫有什麼好處,資料庫的基礎必備技術,備份和恢復的方法。

image.png

image.png

mysql的好處,功能強大,支持跨平臺,運行速度快,支持面向對象,成本低,支持各種開發語言,資料庫存儲容量大,支持強大的內置函數。

啟動MySQL伺服器

net start mysql

連接資料庫:

mysql  –u root   –h127.0.0.1   –p password

斷開MySQL伺服器:

quit;

停止MySQL伺服器:

 net stop mysql;

mysqladmin –uroot shutdown –proot

資料庫的操作:

image.png

image.png

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 數據表名
[(create_definition,…)][table_options] [select_statement]
temporary 表示創建一個臨時表
if not exists 表示表是否已經存在
create_definition 表的一些特性
select_statement 快速創建表
col_name  type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
           [PRIMARY KEY ] [reference_definition]

create table table_name (列名1 屬性,列名2 屬性…);
col_name 欄位名
type 欄位類型
not null | null 指出該列是否允許控制
default 表示預設值
auto_increment 表示是否自動編號
primary key 表示是否為主鍵
一個表只能有一個主鍵,如果表中沒有主鍵,mysql會返回第一個沒有任何null列的unique鍵,作為主鍵。
reference_definition 為欄位添加註解
create table tb_admin (
id int auto_increment primary key,
user varchar(30) not null,
password varchar(30) not null,
createtime datetime
);

查看表結構:

SHOW  [FULL] COLUMNS  FROM 數據表名 [FROM 資料庫名];

DESCRIBE 數據表名;

修改表結構:

ALTER[IGNORE] TABLE 數據表名 alter_spec[,alter_spec]… 

image.png

重命名錶:

RENAME TABLE 數據表名1 To 數據表名2 

刪除表:

DROP TABLE 數據表名;
drop table if exists 數據表名;

資料庫的操作:插入已解決insert,查詢select,修改update,刪除記錄delete。

插入記錄insert

insert  into 數據表名(column_name,column_name2, … ) values (value1, value2, … )

查詢資料庫:

select selection_llist from 數據表名 where primary_constraint group by grouping_columns order by sorting_columns having secondary_constraint limit count
表1.欄位=表2.欄位 and 其他查詢條件

select 欄位名 from 表1,表2…… where 表1.欄位=表2.欄位 and 其他查詢條件

update 數據表名set column_name = new_value1,column_name2 = new_value2, …where condition

delete from 數據表名 where condition

資料庫備份和恢復:

使用MYSQLDUMP命令,進行數據的備份。

mysql -uroot –proot db_database <F:\db_database.txt”

image.png

image.png

image.png

image.png

image.png

image.png

php操作資料庫

mysql_connect()函數連接mysql伺服器

mysql_select_db()函數選擇資料庫

mysql_query()函數執行sql語句

mysql_fetch_array()函數從數組結果集中獲取信息

mysql_fetch_row()函數逐行獲取結果集中的每條記錄

mysql_num_rows()函數獲取查詢結果集中的記錄數

insert動態添加

select語句查詢

update動態修改

delete動態刪除

MySQL是一款廣受歡迎的資料庫
開源的半商業軟體
市場占有率高
PHP具有強大的資料庫支持能力

image.png

查詢,顯示,插入,更新,刪除

關閉MySQL伺服器
每使用一次mysql_connect()或mysql_query()函數,都會消耗系統資源。
使用mysql_close()函數關閉與MySQL伺服器的連接,以節省系統資源。

mysql_close($Link); 

image.png

<?php
$link = mysql_connect("localhost", "root", "root") or die("用戶名密碼有誤!".mysql_error());   //連接Mysql伺服器
if($link){ 
echo "數據源連接成功!";
}
?>

// mysql_connect('hostname','username','password');
<?php
$link = mysql_connect("localhost", "root", "root") or die("用戶名密碼有誤!".mysql_error());   //連接Mysql伺服器
$db_selected=mysql_select_db("db_database1",$link);
//$db_selected=mysql_query("use db_database1",$link);
if($db_selected){
echo "資料庫選擇成功!";
}
?>

// mysql_select_db ( string資料庫名[,resource link_identifier] ) 

// mysql_query("use資料庫名"[,resource link_identifier]);
<?php
$db = array (
        'server' => 'localhost',
        'port' => '3306',
        'username' => 'root',
        'password' => 'root',
        'database' => 'dashu' 
);
$conn = @mysql_connect($db['server'].':'.$db['port'],$db['username'],$db['password']);
if (! $conn) {
    echo "伺服器不能連!" . mysql_error();
} else {
    // 聲明字元集
    mysql_set_charset('utf8', $conn);
    // 選擇資料庫
    mysql_select_db($db['database'], $conn);
}
<?php
$link = mysql_connect("localhost", "root", "root") or die("資料庫連接失敗".mysql_error());
mysql_select_db("db_database",$link);
mysql_query("set names gb2312");
$sql=mysql_query("select * from tb_book");
$info= mysql_fetch_array($sql);

if($_POST[Submit] == "查詢"){
 $tet_book = $POST[txt_book];
 $sql = mysql_query("select * from tb_book where bookname like '%".trim($txt_book)."%' ");
 $info=mysql_fetch_array($sql);
}

mysql_fetch_array()函數從數組結果集中獲取信息:

array mysql_fetch_array ( resource result [, int result_type] )

mysql_fetch_object()函數從結果集中獲取一行作為對象

object  mysql_fetch_object ( resource result )
對象
<?php echo $info -> id; ?></td>
<?php echo $info -> issuDate; ?></td>
<?php echo $info -> first_name; ?></td>

數組
<?php echo $info[id]; ?></td>

do{

}while($info=mysql_fetch_array($sql));

mysql_fetch_row()函數逐行獲取結果集中的每條記錄

array mysql_fetch_row ( resource result )

image.png

mysql_num_rows()函數獲取查詢結果集中的記錄數

int mysql_num_rows ( resource result )
<?php $nums = mysql_num_rows($sql); echo $nums; ?>

PHP操作MySQL資料庫

<?php
 function chinesesubstr($str,$start,$len) { 
    $strlen=$start+$len; 
    for($i=0;$i<$strlen;$i++) { 
        if(ord(substr($str,$i,1))>0xa0) { 
            $tmpstr.=substr($str,$i,2); 
            $i++; 
         } 
        else 
            $tmpstr.=substr($str,$i,1); 
    } 
    return $tmpstr; 
}
?>

實例:

onClick="return check(form1);"

<script language="javascript">
function check(form){
    if(form.txt_title.value==""){
        alert("請輸入公告標題!");form.txt_title.focus();return false;
    }
    if(form.txt_content.value==""){
        alert("請輸入公告內容!");form.txt_content.focus();return false;
    }
form.submit();
}
</script>
<?php
    $conn=mysql_connect("localhost","root","root") or die("資料庫伺服器連接錯誤".mysql_error());
    mysql_select_db("db_database18",$conn) or die("資料庫訪問錯誤".mysql_error());
    mysql_query("set names gb2312");
    $title=$_POST[txt_title];
    $content=$_POST[txt_content];
    $createtime=date("Y-m-d H:i:s");
    $sql=mysql_query("insert into tb_affiche(title,content,createtime)values('$title','$content','$createtime')");
    echo "<script>alert('公告信息添加成功!');window.location.href='add_affiche.php';</script>";
    mysql_free_result($sql);
    mysql_close($conn);
?>

image.png

<script language="javascript">
function check(form){
    if(form.txt_keyword.value==""){
        alert("請輸入查詢關鍵字!");form.txt_keyword.focus();return false;
    }
form.submit();
}
</script>

image.png

<?php
 function chinesesubstr($str,$start,$len) { 
    $strlen=$start+$len; 
    for($i=0;$i<$strlen;$i++) { 
        if(ord(substr($str,$i,1))>0xa0) { 
            $tmpstr.=substr($str,$i,2); 
            $i++; 
         } 
        else 
            $tmpstr.=substr($str,$i,1); 
    } 
    return $tmpstr; 
}
?>

update語句動態

<script language="javascript">
function check(form){
    if(form.txt_title.value==""){
        alert("公告標題不能為空!");form.txt_title.focus();return false;
    }
    if(form.txt_content.value==""){
        alert("公告內容不能為空!");form.txt_content.focus();return false;
    }
form.submit();
}
</script>

<?php 
$conn=mysql_connect("localhost","root","root") or die("資料庫伺服器連接錯誤".mysql_error());
mysql_select_db("db_database18",$conn) or die("資料庫訪問錯誤".mysql_error());
mysql_query("set names gb2312");
$id=$_GET[id];
$sql=mysql_query("select * from tb_affiche where id=$id");
$row=mysql_fetch_object($sql);
?>

<form name="form1" method="post" action="check_modify_ok.php">
                              <table width="520" height="212"  border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
                                <tr>
                                  <td width="87" align="center">公告主題:</td>
                                  <td width="433" height="31"><input name="txt_title" type="text" id="txt_title" size="40" value="<?php echo $row->title;?>">
                                  <input name="id" type="hidden" value="<?php echo $row->id;?>"></td>
                                </tr>
                                <tr>
                                  <td height="124" align="center">公告內容:</td>
                                  <td><textarea name="txt_content" cols="50" rows="8" id="txt_content"><?php echo $row->content;?></textarea></td>
                                </tr>
                                <tr>
                                  <td height="40" colspan="2" align="center"><input name="Submit" type="submit" class="btn_grey" value="修改" onClick="return check(form1);">                                    &nbsp;                                    <input type="reset" name="Submit2" value="重置"></td></tr>
                              </table>
                          </form>

<?php
$conn=mysql_connect("localhost","root","root") or die("資料庫伺服器連接錯誤".mysql_error());
mysql_select_db("db_database18",$conn) or die("資料庫訪問錯誤".mysql_error());
mysql_query("set names gb2312");
$title=$_POST[txt_title];
$content=$_POST[txt_content];
$id=$_POST[id];
$sql=mysql_query("update tb_affiche set title='$title',content='$content' where id=$id");
if($sql){
    echo "<script>alert('公告信息編輯成功!');history.back();window.location.href='modify.php?id=$id';</script>";
}else{
    echo "<script>alert('公告信息編輯失敗!');history.back();window.location.href='modify.php?id=$id';</script>";
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

image.png

image.png

image.png

<!--  翻頁條 -->
                            <td width="37%">&nbsp;&nbsp;頁次:<?php echo $_GET[page];?>/<?php echo $page_count;?>頁&nbsp;記錄:<?php echo $message_count;?> 條&nbsp; </td>
                            <td width="63%" align="right">
                            <?php
                            /*  如果當前頁不是首頁  */
                            if($_GET[page]!=1){
                            /*  顯示“首頁”超鏈接  */
                            echo  "<a href=page_affiche.php?page=1>首頁</a>&nbsp;";
                            /*  顯示“上一頁”超鏈接  */
                            echo "<a href=page_affiche.php?page=".($_GET[page]-1).">上一頁</a>&nbsp;";
                            }
                            /*  如果當前頁不是尾頁  */
                            if($_GET[page]<$page_count){
                            /*  顯示“下一頁”超鏈接  */
                            echo "<a href=page_affiche.php?page=".($_GET[page]+1).">下一頁</a>&nbsp;";
                            /*  顯示“尾頁”超鏈接  */
                            echo  "<a href=page_affiche.php?page=".$page_count.">尾頁</a>";
                            }
                            mysql_free_result($sql);
                            mysql_close($conn);
                            ?>

編輯:

<?php
$conn=mysql_connect("localhost","root","root") or die("資料庫伺服器連接錯誤".mysql_error());
mysql_select_db("db_database18",$conn) or die("資料庫訪問錯誤".mysql_error());
mysql_query("set names gb2312");
$title=$_POST[txt_title];
$content=$_POST[txt_content];
$id=$_POST[id];
$sql=mysql_query("update tb_affiche set title='$title',content='$content' where id=$id");
if($sql){
    echo "<script>alert('公告信息編輯成功!');history.back();window.location.href='modify.php?id=$id';</script>";
}else{
    echo "<script>alert('公告信息編輯失敗!');history.back();window.location.href='modify.php?id=$id';</script>";
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<?php
$conn=mysql_connect("localhost","root","root") or die("資料庫伺服器連接錯誤".mysql_error());
mysql_select_db("db_database18",$conn) or die("資料庫訪問錯誤".mysql_error());
mysql_query("set names gb2312");
$title=$_POST[txt_title];
$content=$_POST[txt_content];
$id=$_POST[id];
$sql=mysql_query("update tb_affiche set title='$title',content='$content' where id=$id");
if($sql){
    echo "<script>alert('公告信息編輯成功!');history.back();window.location.href='modify.php?id=$id';</script>";
}else{
    echo "<script>alert('公告信息編輯失敗!');history.back();window.location.href='modify.php?id=$id';</script>";
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

練習:

<html>
<head>
<title>新聞</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/style.css" rel="stylesheet">
</head>
<body>
<?php
 function chinesesubstr($str,$start,$len) { 
    $strlen=$start+$len; 
    for($i=0;$i<$strlen;$i++) { 
        if(ord(substr($str,$i,1))>0xa0) { 
            $tmpstr.=substr($str,$i,2); 
            $i++; 
         } 
        else 
            $tmpstr.=substr($str,$i,1); 
    } 
    return $tmpstr; 
}
?>
<table width="600" height="100" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFCC">
  <tr>
    <td width="600" height="257" align="center" valign="top" background="images/image_08.gif"><table width="579" height="271"  border="0" cellpadding="0" cellspacing="0">
        <tr>
          <td width="579" height="50" align="center" class="word_orange"><span class="style1">熱焦新聞</span></td>
        </tr>
        <tr>
          <td height="249" align="center" valign="top">              <table width="460"  border="1" align="center" cellpadding="1" cellspacing="1" bordercolor="#FFFFCC" bgcolor="#DFDFDF">
                <?php
                    $conn=mysql_connect("localhost","root","root") or die("資料庫伺服器連接錯誤".mysql_error());
                    mysql_select_db("db_database18",$conn) or die("資料庫訪問錯誤".mysql_error());
                    mysql_query("set names gb2312");
                    $sql=mysql_query("select * from tb_affiche order by createtime desc limit 0,10");
                    $info=mysql_fetch_array($sql);
                    if($info==false){
                      echo "本站暫無公告信息!";
                     }
                    else{
                    $i=0;
                      do{ 
                  ?>
                <tr bgcolor="#E3E3E3">
                  <td height="24" align="left" bgcolor="#FFFFFF">&nbsp;&nbsp;
                      <?php 
                                $i=$i+1;    
                                echo $i."、".chinesesubstr($info[title],0,40);
                                  if(strlen($info[title])>40){
                                    echo "...";

                                  } 
                               ?>
                      <em>&nbsp;[<?php echo $info[createtime];?>]</em> </td>
                </tr>
                <?php
                      }while($info=mysql_fetch_array($sql));
                   }
                    mysql_free_result($sql);                                //關閉記錄集
                    mysql_close($conn);                                 //關閉MySQL資料庫伺服器
                  ?>
            </table></td>
        </tr>
    </table></td>
  </tr>
</table>
</body>
</html>

封裝類資料庫連接,操作,分頁,字元串截取

<?php
//資料庫連接類
class ConnDB{
    var $dbtype;
    var $host;
    var $user;
    var $pwd;
    var $dbname;
    var $conn;    
    function ConnDB($dbtype,$host,$user,$pwd,$dbname){      //構造方法,為成員變數賦值
        $this->dbtype=$dbtype;
        $this->host=$host;
        $this->user=$user;
        $this->pwd=$pwd;
        $this->dbname=$dbname;
    }
    function GetConnId(){                                   //實現與資料庫的連接並返回連接對象
        $this->conn=mysql_connect($this->host,$this->user,$this->pwd) or die("資料庫伺服器連接錯誤".mysql_error());
        mysql_select_db($this->dbname,$this->conn) or die("資料庫訪問錯誤".mysql_error());
        mysql_query("set names gb2312");                    //設置資料庫的編碼格式
        return $this->conn;                                 //返回連接對象
    }
    function CloseConnId(){                                 //定義關閉資料庫的方法
            $this->conn->Disconnect();                  //執行關閉的操作
    }
}   

//資料庫管理類
class AdminDB{
    function ExecSQL($sqlstr,$conn){                    //定義方法,參數為SQl語句和連接資料庫返回的對象
        $sqltype=strtolower(substr(trim($sqlstr),0,6)); //截取SQL中的前6個字元串,並轉換成小寫
        $rs=mysql_query($sqlstr);                   //執行SQL語句
        if($sqltype=="select"){                     //判斷如果SQL語句的類型為SELECT
            $array=mysql_fetch_array($rs);              //執行該語句,獲取查詢結果
            if(count($array)==0 || $rs==false)          //判斷語句是否執行成功
                return false;                   //如果查詢結果為0,或者執行失敗,則返回false
            else
                return $array;                  //否則返回查詢結果的數組
        }elseif ($sqltype=="update" || $sqltype=="insert" || $sqltype=="delete"){
            //判斷如果SQL語句類型不為select、則執行如下操作
            if($rs)
                return true;                        //執行成功返回true
            else 
                return false;                       //是否返回false
        }
    }
}


//分頁類
class SepPage{
    var $rs;
    var $pagesize;                  //定義每頁顯示的記錄數
    var $nowpage;                   //當前頁碼
    var $array;
    var $conn;
    var $sqlstr;                    //執行的SQL語句
    var $total;
    var $pagecount;                 //總的記錄數
    function ShowDate($sqlstr,$conn,$pagesize,$nowpage){    //定義方法
        $arrays=array();
        $array_title=array();
        $array_content=array();
        if(!isset($nowpage) || $nowpage=="" || $nowpage==0)         //判斷當前頁變數值是否為空
            $this->nowpage=1;                       //定義當前頁的值
        else
            $this->nowpage=$nowpage;                //獲取當前頁的值
        
        $this->pagesize=$pagesize;                  //定義每頁輸出的記錄數
        $this->conn=$conn;                          //連接資料庫返回的標識
        $this->sqlstr=$sqlstr;                      //執行的查詢語句
        $this->pagecount=$pagecount;                //總的記錄數
        $this->total=$total;                        //總的記錄數
        
        $this->rs=mysql_query($this->sqlstr."limit ".$this->pagesize*($this->nowpage-1).",$this->pagesize",$this->conn);
        $this->total=mysql_num_rows($this->rs);         //獲取記錄數
        if($this->total==0){                                    //判斷如果查詢結果為0,則輸出如下內容
            return false;     
       }else{                               //否則
            if(($this->total % $this->pagesize)==0){            //判斷如果總的記錄數除以每頁顯示的記錄數等於0
                $this->pagecount=intval($this->total/$this->pagesize);  //則為變數pagecount賦值
            }else if($this->total<=$this->pagesize){
                $this->pagecount=1;//如果查詢結果小於等於每頁記錄數,那麼為變數賦值為1  
            }else{
                $this->pagecount=ceil($this->total/$this->pagesize);    //否則輸出變數值
            }
            while($this->array=mysql_fetch_array($this->rs)){
                array_push($array_title,$this->array[title]);
                array_push($array_content,$this->array[content]);
            }           
            array_push($arrays,$array_title,$array_content);
            return $arrays;
        }
    }
    function ShowPage($contentname,$utits,$anothersearchstr,$class){
        $allrs=mysql_query($this->sqlstr,$this->conn);      //執行查詢語句
        $record=mysql_num_rows($allrs);
        $pagecount=ceil($record/$this->pagesize);       //計算共有幾頁
        $str.="共有".$contentname."&nbsp;".$record."&nbsp;".$utits."&nbsp;每頁顯示&nbsp;".$this->pagesize."&nbsp;".$utits."&nbsp;第&nbsp;".$this->nowpage."&nbsp;頁/共&nbsp;".$pagecount."&nbsp;頁";
        $str.="&nbsp;&nbsp;&nbsp;&nbsp;";
        $str.="<a href=".$_SERVER['PHP_SELF']."?page=1".$anothersearchstr." class=".$class.">首頁</a>";
        $str.="&nbsp;";
        if(($this->nowpage-1)<=0){ 
            $str.="<a href=".$_SERVER['PHP_SELF']."?page=1".$anothersearchstr." class=".$class.">上一頁</a>";
        }else{
            $str.="<a href=".$_SERVER['PHP_SELF']."?page=".($this->nowpage-1).$anothersearchstr." class=".$class.">上一頁</a>";
        }
        $str.="&nbsp;"; 
        if(($this->nowpage+1)>=$pagecount){
            $str.="<a href=".$_SERVER['PHP_SELF']."?page=".$pagecount.$anothersearchstr." class=".$class.">下一頁</a>";
        }else{
            $str.="<a href=".$_SERVER['PHP_SELF']."?page=".($this->nowpage+1).$anothersearchstr." class=".$class.">下一頁</a>";
        }
        $str.="&nbsp;";
            $str.="<a href=".$_SERVER['PHP_SELF']."?page=".$pagecount.$anothersearchstr." class=".$class.">尾頁</a>";
        if(count($this->array)==0 || $this->rs==false)          
            return "";
        else
            return $str;    
    }
}
//系統常用方法
class UseFun{
    
    function chinesesubstr($str,$start,$len) { 
    $strlen=$start+$len; 
    for($i=0;$i<$strlen;$i++) { 
        if(ord(substr($str,$i,1))>0xa0) { 
            $tmpstr.=substr($str,$i,2); 
            $i++; 
         } 
        else 
            $tmpstr.=substr($str,$i,1); 
    } 
    return $tmpstr; 
}
    
}

?>
<?php
require("system..php");
//資料庫連接類實例化
$connobj=new ConnDB("mysql","localhost","root","root","db_database");
$conn=$connobj->GetConnId();
//資料庫操作類實例化
$admindb=new AdminDB();
//分頁類實例化
$seppage=new SepPage();
//字元串截取類
$unhtml=new UseFun();

?>

結言

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

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

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

image

image


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

-Advertisement-
Play Games
更多相關文章
  • 一、組件化開發 1.1組件化概述 頁面特效的製作,特別需要HTML、CSS有固定的佈局,所以說現在越來越流行組件開發的模式,就是用JS寫一個類,當你實例化這個類的時候,頁面上的效果佈局也能自動完成。 實例化後,頁面中就有一個輪播圖的佈局結構,而且可以通過參數傳遞進去。 這個new裡面封裝了HTML、 ...
  • 一、ES6語法 ES6中對數組新增了幾個函數:map()、filter()、reduce() ES5新增的forEach()。 都是一些語法糖。 1.1 forEach()遍曆數組 forEach()方法用來迴圈遍曆數組,方法中的function回調函數接收3個參數 參數1是遍歷的數組內容(item ...
  • 有時候在一個寬高固定的容器中,需要載入“更多內容”,如果設置了overflow:auto,載入更多內容時,子元素的大小超過父容器,就會出現滾動條。而滾動條的突然出現,會讓子元素統統“向左抖了一下”。效果如下: 先來複習一下overflow的幾個概念: overflow:visible //預設屬性, ...
  • 一、數據類型 數據分為基本數據類型(String, Number, Boolean, Null, Undefined,Symbol)和對象數據類型。 基本數據類型的特點:直接存儲在棧(stack)中的數據 引用數據類型的特點:存儲的是該對象在棧中引用,真實的數據存放在堆記憶體里 引用數據類型在棧中存儲 ...
  • 一、吧MongoDB的驅動程式添加到Node.js中 Node.js 連接 MongoDB 連接 ...
  • 現在很多朋友都想進軍IT行業,但是卻不知道學習前端或者後端好,對於這個問題小猿圈視頻網站的講師今天就為你講一下前端和後端的區別有哪些,你可以針對的選一下,這樣為你的以後IT之路有一個更好的選擇。 ...
  • 背景 不同於《編寫代碼的「八榮八恥」》,《穩定性「三十六計」》是應用於設計階段的非手腳架方式的標準化。 在實際工作中,通常會提倡給新人機會,讓他們自己去設計系統。這時候如果沒有一種標準化的check機制,會影響整個系統的質量。《穩定性「三十六計」》在實際項目中,我們作為設計階段的checklist來 ...
  • 上個月試了一波水,記錄了面試官的問題,問題答案自己對應的百度,希望對大家有幫助 1.設計模式的六大原則2.如果讓你設計一個RPC,你怎麼設計3.高併發的單列模式4.連接池的submit和execute的聯繫和區別5.怎麼避免重覆消費6.講一講noi和bio7.既然講到了selector 那你講講se ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...