PHP與MYSQL結合中中的一些常用函數,HTTP協議定義,PHP進行文件編程,會話技術

MYSQL:

查詢函數:

執行查詢語句:

1.mysql_query("SQL語法");

凡是執行操作希望拿到數據庫返回的數據進行展示的(結果返回: 數據結果);

2.執行結果的處理:成功為結果集,失敗為false;

成功返回結果:SQL指令沒有錯誤,但是查詢結果本身為空也返回true(結果集是一種資源:轉換成bool永遠為TRUE)

失敗為false:SQL指令有問題

獲取結果集行數:

mysqli_num_rows(SQL指令變量);

<meta charset="utf-8    " />
<?php
include 'Untitled-1.php';$ress = "select * from n_name ";
$result = mysqli_query($mysqli,$ress);
if($result){$eses = mysqli_num_rows($result);echo '結果字符集'.$eses;//釋放結果集內存
}else{echo '查詢執行失敗'.mysqli_error($mysqli);
}mysqli_close($mysqli); //var_dump(mysqli_num_rows($mysqli,$ress));
?>

解析結果集:

將一種結果集資源(PHP不能直接使用),轉換成一種PHP能夠解析的數據格式,通過從結果集中(結果集指針,類似數組指針),按照結果集指針所在位置取出對應的一條記錄(一行),返回一個數組,同時指針下移……直到指針移出結果集.

myqsli_fetch_assoc(變量);

獲取關聯數組,表的表單名字作為數組下標,元素值作為數組元素值。

mysqli_fetch_row(變量):

獲取索引數組,只獲取數據的值,然后數組的下標從0開始自動索引。

mysqli_fetch_array:

獲取關聯后者索引數組,但是默認是同時存在的:一個記錄取兩次,形成一組是關聯數組,一組是索引數組;但是可以通過第二個參數來決定獲取的方式

補:MYSQL_ASSOC 只獲取關聯數組,MYSQL_NUM只獲取數組,MYSQL_BOTH獲取全部兩種:

常用相關函數:

mysqli_num_fields(變量):

獲取一個指定結果種所有的字段數

mysqli_fetch_field_direct():

函數返回的是一個 stdclass對象(代表字段元數據 )

有關出錯信息:

mysqli_error(變量):

獲取出錯對應的提示信息

mysqli_errno(變量):

獲取出錯對應的錯誤提示代號

錯誤的判斷:基于Mysql_query這個函數執行的結果,結果返回false就代表執行錯誤

其他函數:

mysqli_insert_id():

獲取上次插入操作所產生的自增長ID,如果沒有自增長ID就返回0

HTTP協議:

HTTP協議概念:

HTTP協議,即超文本傳輸協議。是一種詳細規定了服務器和萬維網服務器之間相互通信的規則,通過因特網傳送萬維網文檔的數據傳送協議。

HTTP協議是用來從www服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使服務器更加高效,使網絡傳輸更少.它不僅保證計算機正確快速的傳輸超文本文檔,還確定了傳輸文檔的哪一部分,已經哪一部分內容首先顯示(如文本先于圖形)等.

HTTP協議特點:

1.客戶/服務器模式:客戶端(瀏覽器)服務端

2.簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。由于HTTP協議簡單,

使得HTTP服務器的程序規模小,因而通信速度很快。

3.靈活:HTTP允許傳輸任意類型的數據對象

4.無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并

收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。

5.無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀

態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據

量增大。另一方面,在服務器不需要先前信息時它的應答就較快。·

HTTP協議分類:

HTTP請求協議:瀏覽器向服務器發起請求的時候需要遵循的協議

HTTP響應協議:服務器向瀏覽器發起響應的時候需要遵循的協議

HTTP請求:

請求行:

形式:請求方式 資源路徑 協議版本號

GET/index.php HTTP1.1

請求行獨占一行(第一行 )

請求頭:

請求頭就是各種協議內容,具體的協議內容不會每次都使用全部

1.Host:請求的主機地址( 必須 );

2.Accept:當前請求能夠接收服務器返回的類型(MIME類型);

3.Accept-Language:接收的語言;

4.User-Agent:客戶服務器所在點的一些信息

注:請求頭不固定數量,每個請求協議也是獨占一行,最后會有一行空行(用來區分)

請求體:

請求數據:POST請求會有請求體.GET請求所有的數據都是跟在URL之后的,會在請求行中的資源路徑上體現.

基本格式:資源名字=資源值&&資源名字=資源值……

HTTP響應:

響應行:

1.形式:協議版本號 狀態碼 狀態信息(獨占一行)

HTTP/1.1 200 ok;

2. 200 ok:成功;

3. 403 Forbidden: 沒權限訪問;

  1. 404 Not Found:未找到頁面;

5. 500 Server Internal Error: 服務器內部錯誤;

響應頭:

具體協議內容:

  1. 時間:web,16 Sep 2017 11:43:33 GMT
  2. 服務器: Server: Apache/2.2.22 (win32) PHP/5.3.13
  3. 內容長度:Content-Length:1571,數據具體的字節數(響應體);
  4. 內容類型:Content-Type:text/html:告訴瀏覽器對應的數據格式

列舉了幾個常見的響應頭,并不是:響應頭一個占一行

響應體:

實際服務器響應給瀏覽器的內容

常用HTTP狀態碼:

狀態碼 200 :成功

狀態碼 403 :forbidden,拒接訪問(沒有權限)

狀態碼 404 : NOT FOUND , 找不到(客戶端出錯了)

狀態碼 500 :服務器問題

1XX:

服務器正在處理中:

2XX:

3XX:

請求的目標已經轉移或者需要更新:

4XX:

客戶端(服務器)出錯了

5XX:

服務器錯誤

常見HTTP響應設置及使用:

PHP中針對HTTP協議(響應)進行了底層設計,可以通過函數header來實現修改HTTP響應(響應頭)

注意事項:

1、Header可以設計HTTP響應,因為HTTP協議特點是:響應行,響應頭(空行結尾),響

應體。認為通過header設計響應頭的時候,不應該有任何內容輸出,所以一旦產生內容輸

出(哪怕一個空格),系統都會認為響應頭已經結束而響應體開始了,所有如果先輸出內容

后設置響應頭(header使用),理論設置無效;

2、在PHP5以后,增加程序緩存內容:允許服務器腳本在輸出內容的時候,不直接返回劉

覽器而是先在服務器端使用程序緩存保留(php.ini中使用output buffering),有了該內容之

后,在程序緩存內會自動調整響應頭和響應體(允許響應頭在已經輸出的內容之后再設置),

但是此時會報錯(警告)。

總結:header設置響應體之前不要有任何輸出

location:重定向,立即跳轉(響應體不用解析)

瀏覽器在解析服務器響應的時候:先判定響應行,繼續響應頭,最后響應體:location是在響應頭中,所有瀏覽器一旦見到該協議項,不再往下解析.

Refresh:重定向,定時跳轉(響應體會解析)

延時重定向,瀏覽器會根據具體時間延遲后在訪問指定跳轉鏈接:瀏覽器在準備跳轉訪問之前,會繼續解析HTTP協議(響應頭和響應體)

Content-type:內容類型,MIME類型

通過內容告知(MIME類型),瀏覽器正確解析內容

轉換后:

content-disposition: 內容類型,MIME類型擴展,激活瀏覽器文件下載對話框

瀏覽器在解析內容的時候,默認是直接解析,那么有時候需要瀏覽器不解析,當做一個內容下載成文件

點擊后立馬下載成功:

PHP模擬HTTP請求:

原理:

PHP可以通過模擬HTTP協議發起HTTP請求

CURL是一個非常強大的開源庫,支持很多協議,包括HTTP、FTP、TELNET等,我們使用它

來發送HTTP請求。它給我們帶來的好處是可以通過靈活的選項設置不同的HTTP協議參數,

并且支持HTTPS。CURL可以根據URL前綴是“HTTP”還是“HTTPS”自動選擇是否加密發

送內容。

前提條件:HTTP協議的客戶端/服務端模式,HTTP協議不局限于一定要刻覽器訪問

curl擴展庫使用:

1.建立連接:curl_init():激活一個curl連接功能

2.設置請求選項:

基本語法:Curl_setopt(變量,操作,文件地址):設定(連接)選項

//文件地址也可以寫成布爾類型,意為文件流形式返回數據(不直接顯示)

操作:

curlopt_url:連接對象

curlopt_returntransfer:將服務器執行的結果(響應)以文件流的形式返回請求界面(php腳本)

curlopt_post:是否才有post方式發起請求(默認請求時GET)

curlopt_postfields:用來傳遞post提交的數據,分為兩種方式:字符串(name=abc&password=123),

以及數組形式(array('name'=>'abc',……))

curlopt_header:是否得到響應的header信息(響應頭),默認不獲取。

3.執行請求:curl_exec():執行選項(與服務器發起請求),得到服務器返回的內容

4.關閉請求:curl_close():關閉資源

文件編程:

文件編程的必要性:

文件編程指利用PHP代碼針對文件(文件夾)進行增刪改查操作.

在實際開發項目中,會有很多內容(文件上傳,配置文件等)具有很多不確定性,不能在一開始就手動的創建,需要根據實際需求和數據本身進行管理,這個時候就可以使用PHP文件編程來實現代碼批量控制和其他操作

文件編程的分類:

1.目錄操作:文件夾,用來存放文件的特殊文件

2.文件操作:用來存放內容

路徑操作(增刪改查):

目錄操作:

文件操作創建目錄結構:

1.mkdir(路徑名字):創建成功返回true,創建失敗返回false

//一般來說創建失敗的原因有2

1.路徑錯誤

2.已有該文件

錯誤:

應該加上錯誤抑制符:@

刪除操目錄:

rmdir(指定文件夾目錄):移出文件夾

讀取目錄:

讀取方式:將文件夾(路徑)按照資源方式打開

1.opendir():打開資源,返回一個路徑資源,包含指定目錄下的所有文件(文件夾);

2.readdir():從資源中讀取指針所在位置的文件名字,然后指針下移,直到指針移出資源

又或者循環遍歷:

如果已經沒有資源了,再往下就不會在運行了:

關閉目錄:

closedir():關閉資源

其他目錄操作:

1.dirname(一個路徑):得到的是路徑的上一層路徑

2.realpath(一個路徑/文件):得到真實的路徑信息(目錄路徑)

3.is_dir(一個路徑):判斷指定路徑是否是一個目錄

同理,如果是文件,結果也是false

4.scandir():

封裝版的opendir/readdir/closedir,獲取一個指定路徑下的所有文件信息(第一層),以數組的形式返回

文件的形式就會報錯:

遞歸遍歷目錄:

遞歸遍歷目錄:指定一個目錄的情況下,將其下所有的目錄和文件,及其目錄內容的所有內容都輸出出來。

遞歸遍歷目錄:指定一個目錄的情況下,將其下的所有文件和目錄,及其目錄內部的所有內容都輸出出來。

遞歸算法:將大問題切成相似的小問題(最小單位),然后可以調用解決大問題的方法來解決小問題。

遞歸函數:函數如果自己內部調用自己,該函數稱之為遞歸函數。

遞歸遍歷目錄的思維邏輯:

1.設計一個能夠遍歷一層文件的函數:

a.創建函數

b.安全判定:是路徑才訪問

c.讀取全部內容,遍歷輸出

2.找到遞歸,點:遍歷得到的文件是目錄,應該調用當前函數(調用自己):

a.需要構造路徑(遍歷得到的結果只是文件的名字)

b.需要注意除 “ . ” 和“ .. ”;

3、找到遞歸出口:遍歷完這個文件夾之后,發現沒有任何子文件夾(函數不再調用自己)

foreach自帶遞歸出口

結果:

4、如問顯示層級關系?

函數第一次運行遍歷的結果是最外層目錄,內部調用一次說明進入一個子目錄,子目錄再調用一次函數進行孫子目錄如果能夠在第一次調用的時候給個標記,然后在進入的時候,通過標記的變化來識別層級關系,就可以達到目的:該標記還能代表層次關系:縮進。

a.在函數參數中增加一個標記:默認值為0

b.遞歸調用的時候也需要使用該參數:但是是屬于當前層級的子級,所以+1

c.根據層級縮進:str_repeat()

<?phpheader('Content_type:text/html;charset=utf-8');$res = 'xxx';function my_scandir($res,$lench = 0){if(!is_dir($res)){//保證文件安全,如果不是路徑沒有必要往下echo '沒有路徑';return ;}//讀取全部路徑信息,遍歷輸出$files = scandir($res);foreach($files as $file){//$file就是一個個文件名echo str_repeat("&nbsp;&nbsp",$lench) ,$file . '<br/>';//排除.和..if($file == '.' || $file == '..'){continue;}//構造路徑$files_dir = $res.'/'.$file;if(is_dir($files_dir)){my_scandir($files_dir,$lench+1);}}}//測試my_scandir($res);
?>

設計知識點:

str_repeat 函數

str_repeat 是 PHP 的內置函數,作用是將指定字 符串 重復指定次數。它有兩個參數,第一個參數是要重復的字符串,第二個參數是重復的次數。在這句代碼中,str_repeat("&nbsp;&nbsp;",$lench) 就是將 "&nbsp;&nbsp;" 這個字符串重復 $lench 次 。

&nbsp; 的含義

&nbsp; 是 HTML 中的一種實體字符,代表一個空格 。在 HTML 文檔中,普通的空格在多個連續出現時,瀏覽器會自動將其合并為一個空格來顯示。而使用 &nbsp; 可以確保每個實體字符都顯示為一個獨立的空格。這里 "&nbsp;&nbsp;" 表示兩個空格,通過 str_repeat 函數重復若干次,就能產生一定數量的空格效果。

文件操作:

常用文件操作函數:

file_get_contents(文件路徑):獲取指定文件的所有內容

如果路徑不存在,最好做安全處理

file_put_contents(文件路徑,內容):將指定內容寫入指定文件內

如果當前路徑不存在指定的文件,函數會自動創建(如果路徑不存在,不會創建路徑)

fopen(文件路徑,打開模式):打開一個文件資源,限定打開模式

fread(資源,長度):從打開的資源中讀取指定長度的內容(字節)

fwrite(資源,內容):向打開的資源中寫入指定的內容

fclose(資源):關閉資源

相關函數:

is_file():判斷文件是否正確(不識別路徑);

filesize():獲取文件大小

file_exists():判斷文件是否存在(識別路徑);
?

unlink():取消文件名字與磁盤地址的連接(刪除文件);

filemtime():獲取文件最后一次修改的時間

fseek():設定fopen打開的文件的指針位置

fgetc:一次獲取一個字符

fgets():一次獲取一個字符串(默認行)

file():讀取整個文件,類似file_get_contents,區別是按行讀取,返回一個數組

文件下載:

文件下載:從服務器將文件通過HTTP協議傳輸到瀏覽器,瀏覽器不解析保存成相應的文件。

提供下載方式可以使用HTML中的a標簽:<a href="互聯網絕對文件路徑”>點擊下載</a>

1、缺點1:a標簽能夠讓瀏覽器自動下載的內容有限:瀏覽器是發現如果解析不了才會啟用下載,如果能解析便不會下載

2、缺點2:a標簽下載的文件存儲路徑會需要通過hf屬性寫出來,這樣會暴露服務器存儲數據的位置(不安全);

PHP下載:

讀取文件內容,以文件流的形式傳遞給瀏覽器,在響應頭中告知瀏覽器不要解析,激活下載框實現下載

1.指定瀏覽器解析字符集

2.設定響應頭

a.設定文件返回類型:image/jpg || application/octem-stream

b. 設定返回文件計算方式:Accept-ranges:bytes

c. 設定下載提示:'content-disposition:attachment;fileename=' . 文件名字

d.設定文件大小:'Accept-length:' . 文件大小(字節)

//普遍使用filesize(文件名)來表示文件大小

//如果文件的名字是從文件夾里面讀取出來,而且存在中文,那么如果直接使用名字作為下載名字會出現亂碼,出現這種情況需要進行字符集轉碼,從GBK專成UTF-8:iconv(GBK,UTF-8,文件名字);

3.讀取文件

4.輸出文件

方案1:如果文件較小,可以直接使用文件函數操作:file_get_contents(文件名);

方案2:文件比較大,網絡不是很好:使用文件操作方式:一次讀一點

<?php//php文件下載$file = 'oende3';header( 'content-type:application/octem-stream');header('Accept-ranges:bytes');header('content-disposition:attachment;fileename='.$file);header('Accept-length:' . filesize($file));//輸出文件//PHP:小文件//echo file_get_contents($file);//PHP:大文件$f = @fopen($file,'r') or die();while ($rew = fread($f,1024)){echo $rew;}?>

或者:

<?php//php文件下載$file = 'oende3';header( 'content-type:application/octem-stream');header('Accept-ranges:bytes');header('content-disposition:attachment;fileename='.$file);header('Accept-length:' . filesize($file));//輸出文件//PHP:小文件//echo file_get_contents($file);//PHP:大文件$f = @fopen($file,'r') or die();while (!feof($f)){echo fread($f,1024);}//關閉資源fclose($f);
?>

補充:

結果(已經成功,只是頁面沒有改變而已):

會話技術:

初步認識:

web會話可簡單理解為:用戶開一個瀏覽器,訪問某一個web站點,在這個站點點擊多個超鏈接,訪問服務器多個web資源,然后關閉瀏覽器,整個過程稱之為一個會話。

HTTP協議的特點是無狀態無連接,當一個瀏覽器連續多次請求同一個web服務器時,服務器是無法區分多個操作是否來自于同一個瀏覽器(用戶)。會話技術就是通過HTTP協議想辦法讓服務器能夠識別來自同一個瀏覽器的多次請求,從而方便瀏覽器(用戶)在訪問同一個網站的多次操作中,能夠持續進行而不需要進行額外的身份驗證。

會話技術分類:

cookie技術

cookie是在HTTP協議下,服務器或腳本可以維護客戶工作站上信息的一種方式.

cookie是由web服務器保存在用戶瀏覽器(客戶端)上的小文本文件(HTTP協議響應頭),它可以包含有關用戶的信息。無論何時用戶鏈接到服務器(HTTP請求攜帶數據),web站點都可以訪問cookie信息.

session技術

Session直接翻譯成中文比按困難,一般都譯成時域。

在計算機專業術語中,Session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間。以及如果需要的話,可能還有一定的操作空間。

Session技術是將數據保存到服務器端,無論何時用戶鏈接到服務器,Web站點都可以訪問Session信息.

SESSION技術的實現是依賴COOKIE技術的。

區別:
1.安全性方面:
  1. session存儲服務器端,安全性高
  2. cookie存儲瀏覽器端,安全性低
2.數據大小方面:
  1. cookie的數量和大小都有限制(20個/4k)
  2. session數據存儲不限
3.可用數據類型:
  1. cookie只能存儲簡單數據,數值/字符串
  2. session可以存儲復雜數據(自動序列化)
4.保存位置方面
  1. cookie保存在瀏覽器上
  2. session保存在服務器上

COOKIE:

工作原理:

服務器將數據通過HTTP響應存儲到瀏覽器上,瀏覽器可以在以后攜帶對應的cookie數據訪問服務器;

1.第一次請求時,PHP會通過setcookie函數將數據通過http協議響應頭傳輸給瀏覽器;

2.瀏覽器在第一次響應時將cookie數據保存到瀏覽器;

3.瀏覽器后續請求同一個網站的時候,會自動檢測是否存在cookie數據,如果存在將在請求頭中將數據攜帶到服務器;

4.PHP執行的時候會自動判斷瀏覽器請求中是否攜帶cookie,如果寫到,自動保存到$_cookie中;

5.利用$_cookie訪問cookie數據。

交互過程:

COOKIE的基本使用:

設置cookie信息息

setcookie函數用來設置cookie信息

setcookie(名字,值);

  1. cookie名的設置:字符串,第一個參數
  2. cookie值的設置:第二個參數
  3. cookie值的類型要求:必須是簡單類型中的整數或者字符串

查看:F12 => application(應用程序) => cooies

讀取cookie信息:

1.$_COOKIE數組的使用

同時:

COOKIE高級:

cookle生命周期:


cookie在瀏覽器生存時間(瀏覽器在下次訪問服務器的時候是否攜帶對應的cookie)

  1. 默認(不設定)是的生命周期:不設定周期默認是關閉瀏覽器(會話結束)
  2. 設定一個常規日期戳的周期:通過setcookie第三個參數可以限定生命周期,是用時間戳來管理,從格林威治時間開始

在經過重啟后,a1和a2都消失了

  1. 設定一個" 0 "的周期:在第三個參數設置為0代替時間戳的時候,表示的就是普通設置,相當于沒有,會話結束過期
  2. 刪除一個cookie的做法

服務器沒有權限去操作瀏覽器上的內容(不可能刪除),可以 通過設定生命周期來讓瀏覽器自動判定cookie是否有效,無效 就清除

a. 清空cookie數據內容

b. 設定時間戳過期

COOKIE適用范圍:

作用范圍:不同的文件層級中,設定的C00KIE默認是在不同的文件夾下有訪問限制。上層文件夾中設定的C00KIE可以在下層(子文件夾)中訪問,而子文件夾中設定的C00KIE不能在上層文件夾中訪問。(就是子能看到父,而父看不到子)

  1. 默認(不設定)的范圍,就是使用cookie默認的作用范圍

  1. 設定為"/"的含義:告知瀏覽器當前cooie的作用范圍是網站根目錄(就是設定全局都可以訪問,父也可以訪問子問);

語法:setcookie(名字,值,生命周期,'/')

COOKIE跨子域:

跨子域:在同一級別域名下,myitcast.com(一級域名),可以有多個子域名(www.myitcast.com 和 gz.myitcast..com) , 他們之間是搭建在不同的服務器上(不同文件夾:E:/server/apache/htdocs和E:web) , 但是可以通過COOKIE設置實現對應的COOKIE共享訪問,但是默認是不允許跨域名訪問的。

  1. 設定cookie的有效域名,不同的域名(包含主機)之間不能共享cookie,可以通過setcookie的第五個參數進行控制

基本語法:setcookie(名字,值,生命周期,作用范圍,有效域名)

//意為,凡是以有效域名為結尾的網站都可以共享

不設定時的默認有效域名

  1. 3)跨子域的設定方法:在設定域名訪問的時候用設定上級域名即可:myitcast..com,這個是有所有以myitcast.com結尾的網站都可以共享COOKIE

COOKIE數組使用:

C00KIE本身只支持簡單數據(數字或者字符串),能的夠保留的數據本身有限,也不成體系。

如果需要使用C00KE來保留一組數據的化,想辦法湊成數組。(C00KIE不支持數組)

  1. 設置形式:setcookie('cl[k1]',值)

  1. 讀取形式:$_COOKIE['c1']['k1']

注:

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

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

相關文章

數學分析——一致性(均勻性)和收斂

目錄 1. 連續函數 1.1 連續函數的定義 1.2 連續函數的性質 1.2.1 性質一 1.2.2 性質二 1.2.3 性質三 1.2.4 性質四 2. 一致連續函數 2.1 一致連續函數的定義 2.2 一致連續性定理(小間距定理)(一致連續函數的另一種定義) 2.3 一致連續性判定法 2.4 連…

湖北理元理律師事務所:企業債務優化的科學路徑與人文關懷

湖北理元理律師事務所&#xff1a;企業債務優化的科學路徑與人文關懷 在中小企業經營壓力增大的背景下&#xff0c;如何平衡債務清償與員工生計成為關鍵課題。湖北理元理律師事務所聯合計劃集團公司&#xff0c;為服務企業設計了一套兼顧法律合規性與民生保障的債務解決方案&a…

樹莓派安裝openwrt搭建軟路由(ImmortalWrt固件方案)

&#x1f923;&#x1f449;我這里準備了兩個版本的openwrt安裝方案給大家參考使用&#xff0c;分別是原版的OpenWrt固件以及在原版基礎上進行改進的ImmortalWrt固件。推薦使用ImmortalWrt固件&#xff0c;當然如果想直接在原版上進行開發也可以&#xff0c;看個人選擇。 &…

一鍵凈化Excel數據:高性能Python腳本實現多核并行清理

摘要 本文分享兩個基于Python的Excel數據凈化腳本&#xff0c;通過多進程并行技術清除工作表內不可見字符、批注、單元格樣式等冗余內容&#xff0c;利用OpenPyXL實現底層操作&#xff0c;結合tqdm進度條和進程級任務分配&#xff0c;可快速處理百萬級單元格數據。適用于數據分…

【Netty】EventLoopGroup

在Netty的ServerBootstrap中設置兩個EventLoopGroup的作用是將網絡操作的兩個關鍵階段分離到不同的線程組中處理&#xff0c;從而優化性能并簡化并發控制。具體來說&#xff1a; 1. 兩個EventLoopGroup的角色 第一個EventLoopGroup&#xff08;通常稱為bossGroup&#xff09;&…

【前端】Vue中使用CKeditor作為富文本編輯器

官網https://ckeditor.com/ 此處記錄一下我在使用的時候具體初始化的代碼。 <template><div><textarea :id"id"></textarea></div> </template><script> export default {name: CkEditor,data: function () {return {id:…

前端面經 websocket

應用層協議&#xff0c;實現一個TCP連接上的全雙工通信&#xff0c;實時通訊 之前的實時WEB 實現輪詢 增加輪詢頻率 ws wss 明文版本 和 密文版本 特點 # 1 頭部小 2 更注重實時性

【筆記】suna部署之獲取 Supabase API key 和 project URL

#工作記錄 Supabase | The Open Source Firebase Alternative 一、注冊與登錄 方式一&#xff1a;GitHub 授權登錄 在登錄頁面選擇 “繼續使用 GitHub” &#xff0c;跳轉到 GitHub 授權頁面&#xff08;如圖 5 所示&#xff09;。確認 “Supabase 的想要訪問您的 [賬戶名] 帳…

爬蟲工具鏈的詳細分類解析

以下是針對爬蟲工具鏈的詳細分類解析&#xff0c;涵蓋靜態頁面、動態渲染和框架開發三大場景的技術選型與核心特性&#xff1a; &#x1f9e9; 一、靜態頁面抓取&#xff08;HTML結構固定&#xff09; 工具組合&#xff1a;Requests BeautifulSoup 適用場景&#xff1a;目標數…

STM32F407寄存器操作(ADC非連續掃描模式)

1.前言 書接上回&#xff0c;在看手冊的時候我突然發現手冊上還描述了另一種ADC掃描模式&#xff0c;即非連續掃描模式&#xff0c;想著連續掃描模式都已經探索過了&#xff0c;那就順手把非非連續模式研究一下吧。 2.理論 我們先看看手冊&#xff0c;這里我就以規則通道舉例…

spring切面

概念 兩個特點&#xff1a; IOC控制反轉AOP主要用來處理公共的代碼 例如一個案例就是添加用戶&#xff0c;重復的代碼包含了記錄日志、事務提交和事務回滾等&#xff0c;都是重復的&#xff0c;為了簡單&#xff0c;交給AOP來做。 即將復雜的需求分解出不同方面&#xff0c…

[Python] Python中的多重繼承

文章目錄 Lora中的例子 Lora中的例子 https://github.com/michaelnny/QLoRA-LLM/blob/main/qlora_llm/models/lora.py#L211C1-L243C10如果繼承兩個父類&#xff0c;并且父類的__init__參數不一樣&#xff0c;則可以顯式的調用父類init&#xff1b;如果用super().__init__()則需…

rsync服務的搭建

目錄 一、rsync介紹 rsync的安裝 二、rsync的語法 三、rsync命令使用 1. 本機同步 2. 遠程同步 四、rsync作為服務使用 1、嘗試啟動rsync程序 2、rsync的配置文件介紹 注意事項&#xff1a; 3. rsyncinotify實時同步 3.依賴服務托管xinetd&#xff08;CentOS 6中rs…

【C/C++】面試基礎題目收集

C 軟件開發面試中常見的刷題題目通常可分為以下幾大類&#xff1a;數據結構與算法、系統編程、面向對象設計、C 語言特性、并發編程等。 &#x1f9e0; 一、數據結構與算法&#xff08;力扣/牛客經典題&#xff09; 掌握 STL 和底層結構實現能力&#xff1a; &#x1f4cc; 數…

將手機網絡經USB數據線和本地局域網共享給華為AP6050DN無線接入點

引言 由于最近裝畢的新家所在的小區未能及時通寬帶,于是家中各類無線設備如何上網就成了首要要解決的問題。 鑒于家中要聯網的設備多、類型雜、支持頻段也不一,總是開手機熱點不是回事兒,于是就想著把手機網絡引至華為AP6050DN無線接入點中,讓家中所有的無線設備都能快速高…

【數據結構】圖論核心算法解析:深度優先搜索(DFS)的縱深遍歷與生成樹實戰指南?

深度優先搜索 導讀&#xff1a;從廣度到深度&#xff0c;探索圖的遍歷奧秘一、深度優先搜索二、算法思路三、算法邏輯四、算法評價五、深度優先生成樹六、有向圖與無向圖結語&#xff1a;深潛與回溯&#xff0c;揭開圖論世界的另一面 導讀&#xff1a;從廣度到深度&#xff0c;…

Flink CEP實踐總結:使用方法、常見報錯、優化與難點應對

Flink CEP實踐總結&#xff1a;使用方法、常見報錯、優化與難點應對 隨著實時數據分析需求的提升&#xff0c;Flink CEP&#xff08;Complex Event Processing&#xff0c;復雜事件處理&#xff09;成為事件流檢測中的利器。本文結合實際項目經驗&#xff0c;總結Flink CEP的基…

Python數據類型詳解:從字符串到布爾值,一網打盡

Python是現代編程語言中非常流行的一種&#xff0c;它的語法簡潔、易懂&#xff0c;非常適合初學者。而在Python編程中&#xff0c;“數據類型”是最基礎也是最重要的概念。理解這個概念&#xff0c;將為你之后的編程打下堅實的基礎。 1. 什么是數據類型&#xff1f; 在Pytho…

python打卡day42

Grad-CAM與Hook函數 知識點回顧 回調函數lambda函數hook函數的模塊鉤子和張量鉤子Grad-CAM的示例 在深度學習中&#xff0c;我們經常需要查看或修改模型中間層的輸出或梯度&#xff0c;但標準的前向傳播和反向傳播過程通常是一個黑盒&#xff0c;很難直接訪問中間層的信息。PyT…

中國風展示工作總結商務通用PPT模版

中國風展示工作總結商務通用PPT模版&#xff1a;中國風商務通用PPT 模版https://pan.quark.cn/s/42ad18c010d4