系統學習·PHP語言

由于之前沒系統的學習PHP語言,都是在做題時遇到不會的才去查,后來發現這樣的效率非常低,審代碼別人一眼掃出漏洞,而我還需要去查一下這行代碼的意思,那個函數的作用,查當然要查,但連簡單的語法都不懂就太說不過去了,有時候甚至直接將一整段代碼扔給AI讓它解讀,這樣對代碼審計的能力根本不能提升

所以我這次決定系統的學習一次PHP語言,為了在后續的解題過程中不用總依賴AI也可以很快審清代碼邏輯。

PHP語言的功能非常強大,在Web開發中也占據著非常重要的地位,這些都懂,就不詳細舉例,直接開始著手對PHP語言進行學習。

1、PHP語言的基本結構

PHP腳本通常以 <?php 開始,以 ?> 結束,這些標簽告訴 PHP 解釋器,其中的內容是 PHP 代碼。

<?php
// PHP 代碼
?>

2、輸出內容

使用 echo 或 print 語句輸出內容

<?php
echo "Hello, World!";
print "Hello, World!";
?>

3、變量

變量以 $ 開頭,變量名區分大小寫

<?php
$variable = "Hello, World!";
echo $variable;
?>

說到變量就不得不提全局變量了

全局變量

超全局變量(Superglobals)是PHP中內置的特殊變量,它們在腳本的任何作用域(全局、函數、類方法等)中都可以直接訪問,無需使用 global?關鍵字聲明。這些變量由PHP預定義,用于收集來自不同來源的數據。

完整的PHP超全局變量列表:

超全局變量作用
$_GET獲取 URL 查詢字符串(?key=value)傳遞的參數
$_POST獲取 HTTP POST 請求提交的表單數據
$_REQUEST

包含 $_GET、$_POST?和 $_COOKIE?的數據(直接使用有一定的

安全風險)

$_SERVER包含服務器和執行環境信息(如 IP、User-Agent、請求方法等)
$_SESSION存儲會話數據(需先 session_start()?)
$_COOKIE獲取客戶端發送的 HTTP Cookies
$_FILES獲取上傳文件的信息(如$_FILES['file']['name'])
$_ENV獲取系統環境變量(如 $_ENV['PATH']?)
$GLOBALS引用全局作用域中的所有變量(如$GLOBALS['var']?)

超全局變量 VS 普通變量

特性超全局變量普通全局變量
作用域全局(自動生效)需 global?聲明
命名前綴$_(如 $_GET?)自定義(如 $count?)
用途請求數據、服務器信息等一般程序邏輯變量
是否可自定義否(PHP預定義)

4、數組

數組數組是存儲多個值的變量。?

5、常用符號

{}

大括號 {} 主要用于控制代碼塊的范圍和作用域 ,確保代碼的結構清晰和邏輯準確。

.

. 在PHP中用于連接字符串

//

注釋符用于在代碼中添加說明性文字,這些文字不會被執行。PHP 支持多種注釋方式,包括單行注釋多行注釋

PHP中注釋符比較廣泛,例如 # 和? /* */ 都可以作為注釋符

例如

<?php? //這是一個單行注釋
? ? ? ?#這也是一個單行注釋

? ? ? ?/*
? ? ? ?這是一個多行注釋
? ? ? ?可以包含多行內容
? ? ? ?不會被執行
? ? ? ?*/

echo "Hello, World!";
?>

=>

=> 是用于鍵值對的語法,通常在數組定義中使用,表示之間的映射關系

這個有點抽象,例如:

<?php
$person = array(
? ? "name" => "China", //"name" => "China" 是鍵值對, name 是鍵(key),China 是值(value)
? ? "age" => 76,
? ? "city" => "Beijing"
);

echo $person["name"]; // 輸出: China
echo $person["age"];? // 輸出: 76
echo $person["city"]; // 輸出: Beijing
?>

?[ ]

在PHP中,中括號 [ ]?有多種用途,主要用于數組操作(數組定義、訪問、修改)字符串操作(訪問、修改字符串)

中括號 [ ] 也可以用于 列表解構?(特別是在 foreach 循環中處理多維數組或鍵值對)

列表解構

<?php
//定義一個二維數組
$array = [
? ? ["apple", "banana"],
? ? ["cherry", "orange"]? //包含兩個子數組的二維數組,每個子數組包含兩個水果名稱字符串
];
//使用foreach循環結合數組解構遍歷
foreach ($array as [[$fruit1, $fruit2]]) {? //當前子數組的元素會被自動解構賦值到變量 $fruit1 和 $fruit2? 第一次循環 $fruit1="apple" $fruit2="banana" 第二次循環 $fruit1="cherry" $fruit2="orange"
? ? echo $fruit1 . " " . $fruit2 . "\n";? ? //輸出 第一個數組與空格拼接后再與輸出的第二個數組拼接再換行 的值
}
// 輸出:
// apple banana
// cherry orange
?>

鍵值對解構

<?php
//定義一個關聯數組,包含3個元素:名字、年齡、城市
$array = [
? ? "name" => "China",
? ? "age" => 76,
? ? "city" => "Beijing"
];
//使用foreach循環遍歷數組 array()
foreach ($array as $key => $value) {? //$array as $key 表示每次循環中當前元素的鍵會賦值給 $key ,值會賦值給 $value。
? ? echo $key . ": " . $value . "\n";? 將鍵、冒號、值 連接起來輸出
}
// 輸出:
// name: China
// age: 76
// city: Beijing

?>

6、數據類型

PHP?支持多種數據類型,包括字符串、整數、浮點數、布爾值、數組和對象

<?php
$string = "Hello, World!";? ? ? ? ? ? ? ? //字符串
$integer = 123;? ? ? ? ? ? ? ? ? ? ? ? ? ?//整數
$float = 123.45;? ? ? ? ? ? ? ? ? ? ? ? ? //浮點數
$boolean = true;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//布爾值
$array = array("apple", "banana", "cherry"); //數組
$object = new stdClass();? ? ? ? ? ? ? ? ? ? //對象? ?stdClass是 PHP 的一個內置類,它是一個空的類,沒有任何屬性和方法。它通常用于創建一個通用的對象。
$object->name = "John";? ? ? ? ? ? ? ? ? ? ? //表示訪問 $object 對象的 name 屬性,name 是一個屬性名,它在 $object 對象中被動態創建;將字符串 John 賦值給 name 屬性。
?>

7、控制結構

條件語句

if 條件語句(最簡單)
<?php
$age = 18;  //這里的年齡為了簡單就直接賦值,而通常條件判斷中需要獲取用戶輸入if ($age >= 18) {echo "您已成年,可以進入。";
}
?>
?if else 語句
<?php
$age = 18;  if ($age >= 18) {echo "您已成年,可以進入。";
} else {echo "您未成年,禁止進入!";
}
?>

?if - elseif - else 多重結構
<?php
$grade = 85;if ($grade >= 90) {echo "優秀!";
} elseif ($grade >= 80) {echo "良好!";
} elseif ($grade >= 60) {echo "及格!";
} else {echo "不及格!";
}
?>
三元運算符?
<?php
$isMember = true; //創建一個名為 $isMember 的布爾型變量,并將值 ture 賦值給它,ture 表示 "是會員",如果改為 false 則表示 "不是會員"。
$message = $isMember ? "歡迎會員!" : "請注冊成為會員!"; //檢查 $isMember 的值,如果為 ture 則選擇 ? 后面的第一個值("歡迎會員!");如果為 false 則選擇 : 后面的第二個值 ("請注冊成為會員!")
echo $message;
?>
switch語句

<?php
$day = "Monday";switch ($day) {case "Monday":echo "今天是星期一";break;case "Tuesday":echo "今天是星期二";break;case "Wednesday":echo "今天是星期三";break;default:echo "今天是周末或其他日子";
}
?>

空值合并運算符(??)?

但這個有 PHP7.0版本 + 引入的特性 的要求,作用是檢查左側值是否存在且不為null (空值),如果是則返回左側值,否則返回右側值

<?php
$username = $_GET['user'] ?? '訪客';
echo "歡迎," . $username;
?>

循環語句

for循環
<?php
// 打印1到5的數字
for ($i = 1; $i <= 5; $i++) {echo $i . " ";
}
// 輸出: 1 2 3 4 5
?>
while循環
<?php
// 打印1到5的數字
$i = 1;
while ($i <= 5) {echo $i . " ";$i++;
}
// 輸出: 1 2 3 4 5
?>
do - while 循環?
<?php
// 至少執行一次,打印1到5的數字
$i = 1;
do {echo $i . " ";$i++;
} while ($i <= 5);
// 輸出: 1 2 3 4 5
?>
foreach 循環(遍歷數組)?
<?php
// 遍歷數組
$colors = ["紅色", "綠色", "藍色"];foreach ($colors as $color) {echo $color . " ";
}
// 輸出: 紅色 綠色 藍色// 帶鍵名的遍歷
$age = ["小明" => 18, "小紅" => 20];foreach ($age as $name => $value) {echo "$name 的年齡是 $value 歲<br>";
}
/*
輸出:
小明的年齡是18歲
小紅的年齡是20歲
*/
?>
循環控制語句
<?php
// break 示例
for ($i = 1; $i <= 10; $i++) {if ($i == 5) {break; // 當$i等于5時退出循環}echo $i . " ";
}
// 輸出: 1 2 3 4// continue 示例
for ($i = 1; $i <= 5; $i++) {if ($i == 3) {continue; // 跳過當前迭代}echo $i . " ";
}
// 輸出: 1 2 4 5
?>
嵌套循環
<?php
// 打印乘法表
for ($i = 1; $i <= 9; $i++) {for ($j = 1; $j <= $i; $j++) {echo "$j × $i = " . ($i * $j) . " ";}echo "<br>";
}
?>

8、函數

PHP函數是一段可重復執行的代碼塊。

<?php
function sayHello($name) {? ?//定義一個函數
? ? echo "Hello, " . $name . "!";
}
sayHello("John");? ?//調用函數
?>

9、文件操作

讀取和寫入文件

// 寫入文件(如果文件不存在會自動創建)
$file = 'example.txt';
$content = "這是要寫入文件的內容\n第二行內容";// 寫入文件
file_put_contents($file, $content);echo "內容已寫入文件";
$file = 'example.txt';// 讀取整個文件內容
$content = file_get_contents($file);
echo "文件內容:<br>" . nl2br($content); // nl2br() 將換行符轉為HTML的<br>// 或者逐行讀取
$lines = file($file);
echo "<br><br>逐行讀取:";
foreach($lines as $line) {echo "<br>" . htmlspecialchars($line);
}

10、表單處理

處理HTML表單提交的數據

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
? ? $name = htmlspecialchars($_POST["name"]);
? ? echo "Hello, " . $name . "!";
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
? ? <title>Simple PHP App</title>
</head>
<body>
? ? <form method="post">
? ? ? ? <label for="name">Name:</label>
? ? ? ? <input type="text" id="name" name="name">
? ? ? ? <input type="submit" value="Submit">
? ? </form>
</body>
</html>

11、錯誤處理

處理錯誤和異常

<?php
if (!file_exists("example.txt")) {
? ? die("File not found");
}

try {
? ? $content = file_get_contents("example.txt");
? ? echo $content;
} catch (Exception $e) {
? ? echo "Error: " . $e->getMessage();
}
?>

12、會話管理

使用會話管理用戶狀態

<?php
session_start();
if (!isset($_SESSION['count'])) {
? ? $_SESSION['count'] = 0;
}
$_SESSION['count']++;
echo "You have visited this page " . $_SESSION['count'] . " times.";
?>

13、日期和時間

處理日期和時間

<?php
echo date("Y-m-d H:i:s"); // Y - 4位數的年份(如 2023 ,m - 2位數的月份(01 到 12 ,d - 2位數的日期(01 到 31 ,H - 24小時制的小時(00 到 23 ),i - 分鐘(00 到 59) ,s - 秒(00 到 59)
?>

14、正則表達式

使用正則表達式進行字符串匹配和替換.

<?php
// 要驗證的電子郵件地址
$email = "example@test.com";

// 正則表達式模式
$pattern = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';

// 使用preg_match函數進行匹配
if (preg_match($pattern, $email)) {
? ? echo "電子郵件地址 $email 是有效的。";
} else {
? ? echo "電子郵件地址 $email 是無效的。";
}
?>

15、PHP語言的實戰學習及運用

對于學習PHP語言,更多的都是選擇 VScode 這個程序,VScode 中文官網:vscode中文網 下載 Visual Studio Code

下載安裝好后進行漢化

VScode 使用 g++ 編譯 .c文件 或 .cpp文件 :

進行 g++ 的配置

g++ 也叫GCC,在Windows 中,使用MinGW方式實現 g++(分32和64位)

下載配置 g++?

網盤地址:通過網盤分享的文件:x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0.7z
鏈接: https://pan.baidu.com/s/1OrfIbrLm58TKlv2dTsnBLQ?pwd=ydby 提取碼: ydby

下載后解壓到當前文件夾

接下來需要把 g++ 的 bin 路徑添加到系統環境變量的 Path 里:
打開菜單欄的設置,找到系統環境變量?

進入環境變量的系統環境變量的Path路徑

編輯添加 g++ 的 bin 路徑

添加?

然后確定

驗證 g++

g++ -v

可以看到 g++ 的版本號,說明 g++ 環境配置成功

在桌面新建一個 code 文件夾

然后回到 VScode ,打開剛剛的新建文件夾,選擇信任父級文件夾

點擊第二個加號新建文件名為 .vscode(注意必須是這個名字)

然后分別再新建 四個文件,文件名分別為:

c_cpp_properties.json
launch.json
settings.json
tasks.json

然后分別為四個文件添加內容

c_cpp_properties.json

{"configurations": [{"name": "Win64","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG", "UNICODE", "_UNICODE"],"windowsSdkVersion": "10.0.18362.0","compilerPath": "D:\VScode\MinGW-W64 GCC\mingw64\bin\g++.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}],"version": 4
}

但是要注意把?

compilerPath 替換為剛剛配置的 g++ 路徑

launch.json

{"version": "0.2.0","configurations": [{"name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false,"cwd": "${workspaceRoot}","environment": [],"externalConsole": true, "MIMode": "gdb","miDebuggerPath": "D:\VScode\MinGW-W64 GCC\mingw64\bin\g++.exe","preLaunchTask": "g++","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

miDebuggerPath? 路徑也要替換為 g++ 配置路徑

settings.json

{"files.associations": {"*.py": "python","iostream": "cpp","*.tcc": "cpp","string": "cpp","unordered_map": "cpp","vector": "cpp","ostream": "cpp","new": "cpp","typeinfo": "cpp","deque": "cpp","initializer_list": "cpp","iosfwd": "cpp","fstream": "cpp","sstream": "cpp","map": "c","stdio.h": "c","algorithm": "cpp","atomic": "cpp","bit": "cpp","cctype": "cpp","clocale": "cpp","cmath": "cpp","compare": "cpp","concepts": "cpp","cstddef": "cpp","cstdint": "cpp","cstdio": "cpp","cstdlib": "cpp","cstring": "cpp","ctime": "cpp","cwchar": "cpp","exception": "cpp","ios": "cpp","istream": "cpp","iterator": "cpp","limits": "cpp","memory": "cpp","random": "cpp","set": "cpp","stack": "cpp","stdexcept": "cpp","streambuf": "cpp","system_error": "cpp","tuple": "cpp","type_traits": "cpp","utility": "cpp","xfacet": "cpp","xiosbase": "cpp","xlocale": "cpp","xlocinfo": "cpp","xlocnum": "cpp","xmemory": "cpp","xstddef": "cpp","xstring": "cpp","xtr1common": "cpp","xtree": "cpp","xutility": "cpp","stdlib.h": "c","string.h": "c"},"editor.suggest.snippetsPreventQuickSuggestions": false,"aiXcoder.showTrayIcon": true
}

tasks.json

{"version": "2.0.0","tasks": [{"label": "g++","command": "g++","args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"],"problemMatcher": {"owner": "cpp","fileLocation": ["relative", "${workspaceRoot}"],"pattern": {"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$","file": 1,"line": 2,"column": 3,"severity": 4,"message": 5}},"group": {"kind": "build","isDefault": true}}]
}

保存四個文件后就配置完成了。(以后的C/C++代碼文件必須放在這個code文件夾里,或者有 .vscode 文件夾的文件夾里面,否則放其他文件夾會報錯)

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

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

相關文章

leetcode2-兩數相加

leetcode 2 思路 鏈表特性利用&#xff1a;由于數字按逆序存儲&#xff0c;個位在鏈表頭部&#xff0c;因此可以直接從前往后遍歷鏈表進行逐位相加 比如題目中的 2->4->3 和 5->6->4 其實可以直接按位從第一位開始往后相加&#xff0c;就得到啦708 這樣比把數字…

Java的Arrays.sort():排序算法與優化分析

文章目錄 前言一、基本類型數組&#xff1a;雙軸快速排序關鍵優化策略 二、對象數組&#xff1a;TimSort關鍵優化策略 三、性能對比總結總結 前言 在Java中&#xff0c;Arrays.sort()是開發者最常用的排序方法之一。但你是否思考過它的底層實現&#xff1f;本文將基于OpenJDK …

軟件測試質量的“防”與“治”

引言: 想象一下,你正在建造一座摩天大樓。你是愿意在打地基時就嚴格檢查材料規格和設計圖紙(主動防患),還是等到大樓封頂后才開始拿著錘子敲敲打打找裂縫(被動補救)?軟件世界亦是如此!今天,我們就來聊聊軟件測試這個“質量守護神”的兩大戰略思維和三大實戰招式,讓你…

TDengine 如何從 2.x 遷移到 3.0

本節講述如何通過 Explorer 界面創建數據遷移任務&#xff0c;從舊版 TDengine2 遷移數據到 TDengine 3.0 集群。 功能概述 taosX 通過 SQL 查詢源集群數據&#xff0c;并把查詢結果寫入到目標數據庫。具體實現上&#xff0c;taosX 以一個子表的一個時間段的數據作為查詢的基…

免下載蘋果 IPA 文件重簽名工具:快速更換應用名稱和 BID的教程

在iOS設備的使用和開發過程中&#xff0c;我們有時需要對IPA文件進行重簽名&#xff0c;以便更換應用名稱、Bundle ID&#xff08;軟件包標識符&#xff09;或其他相關信息。這一過程通常需要使用到特定的工具&#xff0c;然而&#xff0c;市面上的一些工具可能需要下載和安裝&…

Python全棧開發:前后端分離項目架構詳解

文章目錄 技術棧選擇后端技術棧前端技術棧 項目整體結構詳細目錄結構說明后端架構&#xff08;backend/&#xff09;1. 應用核心&#xff08;app/&#xff09;2. 數據層&#xff08;models/&#xff09;3. API模式層&#xff08;schemas/&#xff09;4. API路由層&#xff08;a…

微信小程序使用圖片實現紅包雨功能

微信小程序紅包雨功能實現&#xff1a;從組件封裝到頁面調用的完整實踐 先看示例截圖&#xff1a; 一、背景與技術選型 在微信小程序營銷活動中&#xff0c;紅包雨是一種極具吸引力的互動形式。實現紅包雨效果主要有 Canvas 和圖片兩種方案&#xff1a; &#xff08;1&…

Python day31

浙大疏錦行 數據拆分的基本框架&#xff0c;拆分后讓項目結構更加清晰

Chapter10-XXE

文章目錄 1.XXE介紹1.1 XXE產生的原因1.1.1 什么是XML&#xff1f;1.1.2 什么是XML實體1.1.3 什么是文檔類型定義&#xff08;document type definition&#xff09;1.1.4 什么是XML自定義實體1.1.5 什么是XML外部實體 2.XXE攻擊類型2.1 利用XXE檢索文件2.2 利用XXE執行SSRF攻擊…

Ribbon負載均衡實戰指南:7種策略選擇與生產避坑

引言&#xff1a;客戶端負載均衡的不可替代性 當面試官問你&#xff1a;“Ribbon 和 Nginx 有什么區別&#xff1f;”——Ribbon 是進程內 LB 這一句話值 20K 月薪。 作為微服務調用的核心樞紐&#xff0c;Ribbon 通過 ??本地服務清單動態分發請求??&#xff0c;避免中心化…

Webpack:現代前端構建工具的核心解析

Hi&#xff0c;我是布蘭妮甜 &#xff01;在前端工程化日益重要的今天&#xff0c;Webpack作為主流構建工具&#xff0c;已成為現代前端開發的核心基礎設施。它通過模塊化打包機制&#xff0c;優雅地解決了復雜應用中的資源管理問題&#xff0c;使開發者能夠專注于業務邏輯的實…

Elasticsearch索引wildcard查詢

在之前的文章 Elasticsearch索引的字段映射 中介紹過關于索引中字段查詢的多種方式。可以根據需要通過設置索引字段的type以及fields來實現分詞,精確匹配等多種方式的查詢。 elasticSearch中檢索核心類型大概可以分為:精準匹配檢索(Term-level queries)和基于分詞的全文匹…

1.3、SDH光接口類型

接口類型的命名遵循一個特定的代碼結構&#xff0c;格式通常為&#xff1a;應用代碼-速率等級.波長/距離代碼。 代碼的第一位字母表示應用場合&#xff1a;I 表示局內通信&#xff1b;S 表示短距離局間通信&#xff1b;L 表示長距離局間通信。字母橫杠后的第一位表示 STM 的速率…

淺析MySQL數據遷移與恢復:從SQLServer轉型到MySQL

文章目錄 前言一、MySQL與SQLServer數據管理方式對比1.1 文件結構差異&#xff1a;1.2 存儲引擎多樣性&#xff1a;1.3 備份恢復方式&#xff1a; 二、MySQL數據遷移方法與技術2.1 邏輯備份與恢復2.2 物理備份與恢復2.3 異構數據庫遷移(從SQLServer到MySQL) 三、MySQL數據恢復策…

HarmonyOS 5中UniApp的調試步驟

在 HarmonyOS 5 中調試 UniApp 應用的完整步驟如下&#xff0c;涵蓋環境配置、設備連接及調試方法&#xff1a; 一、環境準備 ?開發工具? 安裝 HBuilderX 4.64&#xff08;需啟用鴻蒙插件&#xff09;可選安裝 DevEco Studio 5.0.3&#xff08;用于真機調試&#xff09;配置 …

使用centos服務器和Let‘s Encypted配置SpingBoot項目的https證書

一、Centos安裝Certbot客戶端 yum install certbot 二、生成證書 certbot certonly --standalone -d 你的域名 執行該命令后會生成如下文件 privkey.pem : the private key for your certificate. fullchain.pem: the certificate file used in most server software. c…

AWS Well-Architected Framework詳解

一、六大支柱&#xff08;Well-Architected Framework&#xff09; AWS Well-Architected Framework 的實際操作可以通過其五大支柱&#xff08;或六大支柱&#xff0c;包括可持續性&#xff09;的具體實踐來證明。以下是每個支柱對應的實際操作示例&#xff1a; 卓越運營&am…

【特征工程】機器學習的特征構造和篩選

調研論文中&#xff0c;看到datafun的一篇agent文章“智能不夠&#xff0c;知識來湊”——知識驅動的金融決策智能體&#xff0c;里面提到了自動因子挖掘&#xff0c;感覺可以用來做機器學習的“特征工程”。 第一部分介紹如何“構造特征”&#xff0c;第二部分介紹如何“分析…

第21節 Node.js 多進程

Node.js本身是以單線程的模式運行的&#xff0c;但它使用的是事件驅動來處理并發&#xff0c;這樣有助于我們在多核 cpu 的系統上創建多個子進程&#xff0c;從而提高性能。 每個子進程總是帶有三個流對象&#xff1a;child.stdin, child.stdout和child.stderr。他們可能會共享…

【走進Golang】測試SDK環境搭建成功,配置path環境變量

[1]進入控制命令臺&#xff1a;win R -->cmd [2]證明SDK環境成功 1.此電腦 2.高級系統設置 3.環境變量 4.點擊環境變量&#xff0c;進入找到 path&#xff0c;點擊編輯 5.進入編輯,找到對應目錄&#xff0c;配置成功 添加完成后&#xff0c;點擊確定&#xff0c;確定&#…