Python進階編程總結

🧑 博主簡介:CSDN博客專家歷代文學網(PC端可以訪問:https://literature.sinhy.com/#/literature?__c=1000,移動端可微信小程序搜索“歷代文學”)總架構師,15年工作經驗,精通Java編程高并發設計Springboot和微服務,熟悉LinuxESXI虛擬化以及云原生Docker和K8s,熱衷于探索科技的邊界,并將理論知識轉化為實際應用。保持對新技術的好奇心,樂于分享所學,希望通過我的實踐經歷和見解,啟發他人的創新思維。在這里,我希望能與志同道合的朋友交流探討,共同進步,一起在技術的世界里不斷學習成長。
技術合作請加本人wx(注明來自csdn):foreast_sea

在這里插入圖片描述


在這里插入圖片描述

文章目錄

  • Python進階編程總結
    • 函數式編程
    • 面向對象
      • 變量
      • 方法(存儲在內存中)
      • 屬性(@property def func(self))
      • 創建類的兩種方法
      • 使用枚舉類(枚舉類不可比較大小,但是同一枚舉類的成員可以做等值is / not is判斷)
      • 定義枚舉類
    • 高級面向對象
      • 元類types
      • 元類type構造對象
      • 使用Slot限制添加屬性
      • 裝飾器
      • python垃圾回收機制
    • python 異常(Exception)、調試(Debug)、回溯(Traceback)
      • 異常(Exception)
        • 常見的異常:
      • 調試(Debug)
        • 單元測試
        • 文檔測試(doctest)
      • 回溯(Traceback)
    • with 用法
    • f_string 處理
    • 數組復制的5種方法

Python進階編程總結

Python 作為一種功能強大且廣泛應用的編程語言,其進階編程領域蘊含著豐富的知識與技巧。在當今數字化快速發展的時代,深入掌握 Python 進階編程對于提升開發效率、優化代碼質量以及應對復雜項目需求有著至關重要的意義。

函數式編程提供了一種全新的編程范式,它強調將計算視為函數的求值過程,通過高階函數、匿名函數等特性,使代碼更加簡潔靈活且易于維護。而面向對象編程則以類和對象為核心,通過合理定義變量、方法和屬性,構建出清晰的程序結構。無論是使用常規方式還是借助枚舉類來創建類,都為開發者提供了多樣化的選擇,以滿足不同場景的建模需求。

高級面向對象中的元類、Slot 機制以及裝飾器等進一步拓展了 Python 的編程能力。元類能夠深入控制類的創建過程,Slot 可有效限制屬性添加從而優化內存使用,裝飾器則為代碼的動態增強提供了便捷手段。同時,理解 Python 的垃圾回收機制有助于更好地管理內存資源。
在程序運行過程中,異常處理、調試與回溯是保障程序穩定性和可維護性的關鍵環節。熟悉常見異常類型能讓我們快速定位和解決問題,單元測試和文檔測試為代碼質量保駕護航,回溯則清晰呈現錯誤發生的路徑。此外,with 用法簡化了資源管理,f_string 提供了高效的字符串格式化方式,數組復制的多種方法也為數據處理提供了更多靈活性。

本文將深入探討 Python 進階編程的這些核心要點,幫助讀者全面提升 Python 編程水平,更好地應對實際開發中的各種挑戰。

函數式編程

  • 高階函數(參數里有函數類型)

map/reduce(functools.reduce())
filter
sorted

  • 返回函數(返回函數類型)
  • 匿名函數(lambda
  • 裝飾器(@:有參裝飾器、無參裝飾器,functools.wraps(function)
  • 偏函數(functools.partor(function[,args,**kwords])

面向對象

變量

1.靜態字段
2.普通字段(self.value)

方法(存儲在內存中)

1.普通方法def func(self[,args])
2.類方法(@classmethod def func(cls[,args]))
3.靜態方法(@staticmethod def func())

屬性(@property def func(self))

1.靜態字段
2.裝飾類

經典裝飾器
新裝飾器(使用方法模擬成員變量以及對成員變量的操作)

方法一
繼承object

@property 			object.funcName //user funcName to get the function return value like member value
@funcName.setter 	object.func = value
@funcName.deleter 	del object.funcName

方法二
創建property對象的靜態字段

pro = property(get_value(),set_value(),del_value(),__doc__)
obj = Object()
ov = obj.pro
obj.pro = value
del obj.pro
obj.pro.__doc__

類的特殊成員

  • __doc__ 表示類的描述信息

  • __name__類名

  • __bases__類的所有父類構成的元組:tuple,不包含該類的type (類名即type類型使用(my_class,)可獲得該類名的元組)

  • __mro__類的繼承順序包含類本身<class ‘main.My_class’>,

  • __module__ 表示當前操作的對象在那個模塊 packages.module

  • __class__ 表示當前操作的對象的類 packages.module.class

  • __init__() 類的構造方法

  • __del__() 類的析構方法

  • __call__() 對象的方法 obj() self()

  • __getattr__()當訪問obj不存在的屬性時會調用該方法

    getattr(obj, name, value) ==> obj.name 不存在該屬性返回value

    name是函數name()需要添加@property 描述符

  • __dict__ 類或對象中的所有成員

  • __str__ 將類格式化成字符串 print(obj) 時調用,即toString()方法

  • __repr__ 將類格式化成字符串 print(obj) 時調用,和 __str__ 的區別:更適合從編程語言上理解

print(obj) [output:] class_name.method(self, arg1, arg2, ...)
  • __getitem__ 用于索引操作[num],獲取數據

  • __setitem__ 用于索引操作[num],設置數據

  • __delitem__ 用于索引操作[num],刪除數據

class mydict(object):def __getitem__(self, key):return self.keydef __setitem__(self, key, value):self.key = valuedef __delitem__(self, key):del self.keyobj = mydict()result = obj[key]obj['key'] = valuedel obj['key']

實現切片操作

__getitem__(self, n)傳入的參數n 可能是int也可能是slice

class Fib(object):
def __getiter__(self, n):if isinstance(n, int):a, b = 1, 1for x in range(n):a, b = b, a + breturn aif isinstanece(n, slice):l = []slice.start = 0 if (slice.start is None)a, b = 1, 1for x in range(n.stop):if (x >= n.start and (x - n.start)%n.step == 0):l.append(a)a, b = b, a+breturn l
  • __getslice__ (self, i, j) obj[-1:1]

  • __setslice__ (self, i, j, sequence) obj[0:1] = [11,22,33,44]

  • __delslice__ (self, i, j) del obj[0:2]

  • __iter__ 迭代器

  • __next__ 配合__iter__實現類的interable屬性

  • __new__方法__new__(cls, name, bases, attrs) 類準備將自身實例化時調用,在__init__()調用之前調用__new__(),該方法是一個類方法@classmethod

    cls:當前準備創建的類的對象:type

    name:類的名字:str

    bases:類繼承的父類集合:class

    attrs:類的方法集合:dict

  • __metaclass__ 該屬性定義一個類的元類,即表示類該有哪個類(元類)來實例化

創建類的兩種方法

1.普通方法

class Object(object):def func(self):print('hello world!')
object = Object()

2.特殊方法(元類type構造對象)

def func(self):print('Hello world!')object = type('Object', (object,), {'func':func})
#arg1:str 類名 ;arg2:tuple 基類; arg3:dict 成員;

類的創建過程
外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳
【CODE】

class MyType(type):def __init__(self, what, bases=None, dict=None):super(MyType, self).__init__(what, bases, dict)def __call__(self, *args, **kwargs):obj = self.__new__(self, *args, **kwargs)self.__init__(obj)
class Foo(object):__metaclass__ = MyTypedef __init__(self, name):self.name = namedef __new__(cls, *args, **kwargs):return object.__new__(cls, *args, **kwargs)
# 第一階段:解釋器從上到下執行代碼創建Foo類
# 第二階段:通過Foo類創建obj對象
obj = Foo()

使用枚舉類(枚舉類不可比較大小,但是同一枚舉類的成員可以做等值is / not is判斷)

from enum import Enum
month = Enum('Mouth',('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
for name ,member in month.__members__.items():print(f'{name}=>{member}=>{member.value}')

定義枚舉類

from enum import Enum, unique
@unique#unique裝飾器幫助檢查Enum內部字段,保證字段不重復
class My_weekday(Enum):Sun = 0Mon = 1Tue = 2Wed = 3Thu = 4Fri = 5Sat = 6 
my_weekday = My_weekday()#my_weekday.Sun
print(my_weekday.Sun)#my_weekday.Sun
print(my_weekday['Sun'])#my_weekday.Sun
print(my_weekday(0))#my_weekday.Sun
print(my_weekday.Sun.value)#0
for name, member in my_weekday.__members__.item():print(f'{name} {member} {member.value}')
【output】
"""
Sun  My_weekday.Sun 0
Mon  My_weekday.Mon 1
Tue  My_weekday.Tue 2
Wed  My_weekday.Wed 3
Thu  My_weekday.Thu 4
Fri  My_weekday.Fri 5
Sat  My_weekday.Sat 6
"""

高級面向對象

元類types

動態地給對象添加方法(MethodType(func[, object/None], Object))

from types import MethodTypedef func(self, value):self.age = value
class Student(object):def __init__(self,name):self.name = name
student = Student('Bob')
student.age_setter = MethodType(age_setter,func)
student.age_setter(21)
print(f'{student.name}is {student.age} years old.')

動態的給類添加方法

def func(self, value):self.age = value
class Student(object):def __init__(self,name):self.name = name
Student.age_setter = func
Student.age_setter = MethodType(func, None, Student)
student = Student('Bob')
student.age_setter(21)
print(f'{student.name}is {student.age} years old.')

元類type構造對象

def func(self):print('Hello world!')
object = type('Object', (object,), {'func':func})
#arg1:str 類名 ;arg2:tuple 基類; arg3:dict('a' = a, 'b' = b...) 類變量/靜態字段;

使用Slot限制添加屬性

slot是一個特殊靜態字段,tuple類型.slot只對當前類起作用,對其子類并不起作用

class Student(object):__slot__ = ('name', 'age')def __init__(self, name, age):super(Student,self).__init__()self.name = nameself.age = age@propertydef name(self):return self.name@name.setterdef name(self,name):self.name = name@propertydef age(self):return self.age@age.setterdef age(self,name):self.age = age
s1 = Student('Bill',21)
s1.score = 89                [ERROR]:不能添加score字段

裝飾器

一般裝飾器(@decorate)

描述符裝飾器

實現了__get__() __set__() __del__()@property @func.setter @func.deleter

數據描述符(實現了get set)
非數據描述符(只實現get 沒有實現set)

python垃圾回收機制

  • 引用計數器(當一個對象被引用機會增加其引用計數,當不被引用時減少引用計數,減少至0時在合適的時機下內存被回收)
  • 循環垃圾收集器(針對循環引用)
  • 手動內存回收 del obj.obj (將引用計數置零,只有最后引用該內存的對象釋放后才執行析構函數__del__())

python 異常(Exception)、調試(Debug)、回溯(Traceback)

異常(Exception)


try:pass
except Exception as e:raise
else:pass
finally:pass
常見的異常:
異常名稱描述
BaseException所有異常K的基類
SystemExit解釋器請求退出
KeyboardInterrupt用戶自行中斷執行^C
Exception常規錯誤的基類
StopIteration迭代器溢出
GeneratorExit生成器發生異常后通知退出
StandardError所有標準異常類的基類
ArithmeticError所有數值計算錯誤的基類
FloattingPointError浮點計算錯誤
OverflowError數值運算溢出
ZeroDivisionError除[,取模]by0
AssertionError斷言語句失敗
AttributeError對象缺失該屬性
EOFError沒有內建輸入,到達EOF標記
EnvironmentError操作系統錯誤的基類
IOError輸入/輸出操作失敗
OSError操作系統錯誤
WindowsError系統調用失敗
ImportError導入模塊/對象失敗
LookupError無效數據查詢的基類
IndexError序列中沒有此索引
KeyError映射中沒有此鍵
MemoryError內存溢出(對于Python解釋起來說非致命)
NameError未聲明/初始化對象
UnboundLocalError訪問未初始化的本地變量
ReferenceError試圖訪問已被回收器回收的對象(弱引用)
RuntimeError一般運行時錯誤
NotImplementedError尚未實現的方法
SyntaxErrorPython語法錯誤
IndentationError縮進錯誤
TabErrorTab和Space混用
SystemError一般的解釋器系統錯誤
TypeError對類型無效的操作
ValueError傳入無效的參數
UnicodeErrorUnicode相關錯誤
UnicodeDecodeErrorUnicode解碼時的錯誤
UnicodeEncodeErrorUnicode編碼時的錯誤
UnicodeTranslateErrorUnicode轉碼時的錯誤
Warning警告的基類
DeprecationWarning關于被棄用的特性的警告
FutureWarning關于構造將來語義會有改變的警告
OverflowWarning舊的關于自動提升為長整型(long)的警告
pendingDeprecationWarning關于特性將會被廢棄的警告
RuntimeWarning可疑的運行時行為的警告
SysntaxWarning可疑語法的警告
UserWarning用戶代碼生成的警告

調試(Debug)

單元測試

單元測試的類在unittest包中使用時直接導入包import unittest.

import unittest
class TestClass(unitest.TestCase):def setUp(self):passdef tearDown(self):passdef test_init(self):self.assertEqual()self.assertTrue()self.assertRaises()def test_func1(self):passdef test_func2(self):pass
文檔測試(doctest)

Python的文檔測試模塊可以直接提取注釋中的代碼并執行

class Dict(dict):'''Simple dict but also support access as x.y style.>>> d1 = Dict()>>> d1['x'] = 100>>> d1.x100>>> d1.y = 200>>> d1['y']200>>> d2 = Dict(a=1, b=2, c='3')>>> d2.c'3'>>> d2['empty']Traceback (most recent call last):...KeyError: 'empty'>>> d2.emptyTraceback (most recent call last):...AttributeError: 'Dict' object has no attribute 'empty''''def __init__(self, **kw):super(Dict, self).__init__(**kw)def __getattr__(self, key):try:return self[key]except KeyError:raise AttributeError(r"'Dict' object has no attribute '%s'" % key)def __setattr__(self, key, value):self[key] = valueif __name__=='__main__':import doctestdoctest.testmod()

回溯(Traceback)

代碼
以下代碼功能相同

import tracebacktraceback.print_exc()
traceback.format_exc()
traceback.print_exception(*ss.exc_info())

with 用法

事前事后用with(前后文管理器)

【version 1.0file = open("/src/tmp.txt")
data = file.read()
file.close()  
#可能會忘記關閉句柄
#可能會出現異常
【version 2.0file = open("/src/tmp.txt")
try:data = file.read()
finally:file.close()
#總體結構安全性都有提升
【version 3.0 withwith open("/src/tmp.txt") as file:data = file.read()

with 對處理對象需要自定義__enter__() __exit__()方法

class Sample:
def __enter__(self):print('function:enter')return "SAMPLE"def __exit__(self, type, value, trace):print('function:exit')
def get_sample():return Sample()with get_sample() as sample:print(f'{sample}do somethings')[result:]
function:enter
SAMPLE do somethings
function:exitclass Sample:
def __init__(self, value):self.num = value
def __enter__(self):print('function:enter')return selfdef __exit__(self, type, value, trace):print('function:exit')print('m_type:{type}\tm_value:{value}\ttrace:{trace})def func(self, value):return self.num/value
def get_sample(num):
return Sample(num)with get_sample() as sample:print(f'{sample}do somethings')num = input("input a number:")sample.func(num)#執行順序:
#with 后面的函數/或type對象使用類的__init__()創建出一個對象,然后調用__enter__()方法將返回值賦給as 后的變量。在with執行完畢后調用類中的__exit__()方法,清理或關閉句柄。
  • open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

f_string 處理

__str__,__repr__

  • __str __()__repr __()方法處理對象如何呈現為字符串,因此您需要確保在類定義中包含至少一個這些方法。如果必須選擇一個,請使用__repr __(),因為它可以代替__str __()
  • __str __()返回的字符串是對象的非正式字符串表示,應該可讀。__repr __()返回的字符串是官方表示,應該是明確的。調用str()repr()比直接使用__str __()__repr __()更好。
  • 默認情況下,f字符串將使用__str __(),但如果包含轉換標志!r,則可以確保它們使用__repr __()
f"{new_comedian}"
'This __str__'
f"{new_comedian!r}"
'This __repr__'

數組復制的5種方法

python中簡單將一個數組賦值給另一個數組,實際上是兩個引用指向同一塊內存,可能無法達到預期目的.因此這里整理了幾種數組拷貝復制的方法.

  1. 切片
newArr = oldArr[:]
  1. list()
newArr = list(oldArr)
  1. Arr*1
newArr = oldArr*1
  1. copy.copy()淺拷貝方法
newArr = copy.copy(oldArr)
newArr = oldArr.copy()
  1. copy.deepcopy()深拷貝方法
newArr = copy.deepcopy(oldArr)

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

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

相關文章

Redis復制(replica)主從模式

Redis主從復制 Redis 的復制&#xff08;replication&#xff09;功能允許用戶根據一個 Redis 服務器來創建任意多個該服務器的復制品&#xff0c;其中被復制的服務器為主服務器&#xff08;master&#xff09;&#xff0c;而通過復制創建出來的服務器復制品則為從服務器&#…

Adobe Premiere Pro2023配置要求

Windows 系統 最低配置 處理器&#xff1a;Intel 第六代或更新版本的 CPU&#xff0c;或 AMD Ryzen? 1000 系列或更新版本的 CPU&#xff0c;需要支持 Advanced Vector Extensions 2&#xff08;AVX2&#xff09;。操作系統&#xff1a;Windows 10&#xff08;64 位&#xff…

【Kubernets】Deployment 和 StatefulSet 有什么區別?什么時候用 StatefulSet?

Deployment 和 StatefulSet 的區別 在 Kubernetes 中&#xff0c;Deployment 和 StatefulSet 都用于管理 Pod&#xff0c;但它們適用于不同的場景。 1. Deployment&#xff1a;管理無狀態應用 特點&#xff1a; 無狀態&#xff1a;Pod 之間相互獨立&#xff0c;不需要保持順…

R語言零基礎系列教程-03-RStudio界面介紹與關鍵設置

代碼、講義、軟件回復【R語言03】獲取。 設置位置: 菜單欄 - Tools - Blobal Options 設置 通用設置 設置面板左側General選項 版本選擇: 一般只用一個版本即可 默認工作目錄設置: 你希望RStudio打開時是基于哪個目錄進行工作可以不設置, 因為腳本一般都是放置在特定項目路…

車載以太網測試-9【網絡層】-子網劃分的子網掩碼VLAN

目錄 1 摘要2 子網劃分2.1 子網掩碼2.2 VLAN&#xff08;虛擬局域網&#xff09;2.2.1 IEEE 802.1Q VLAN標簽2.2.1.1 VLAN標簽的結構2.2.1.2 VLAN標簽的插入2.2.1.3 VLAN標簽的處理2.1.2.4 PVID&#xff08;Port VLAN Identifier&#xff09; 和 VID&#xff08;VLAN Identifie…

微信小程序刷題邏輯實現:技術揭秘與實踐分享

頁面展示&#xff1a; 概述 在當今數字化學習的浪潮中&#xff0c;微信小程序以其便捷性和實用性&#xff0c;成為了眾多學習者刷題備考的得力工具。今天&#xff0c;我們就來深入剖析一個微信小程序刷題功能的實現邏輯&#xff0c;從代碼層面揭開其神秘面紗。 小程序界面布局…

JVM--垃圾回收

垃圾回收的概念 垃圾回收主要針對的是堆中的對象&#xff0c;堆是一個共享的區域&#xff0c;創建的對象和數組都放在這個位置。但是我們不能一直的創建對象&#xff0c;也不是所有的對象能一直存放&#xff0c;如果不進行垃圾回收&#xff0c;內存遲早會耗盡&#xff0c;及時…

【教程】繼承中的訪問控制 C++

目錄 簡介public&#xff0c;protected 和 private繼承中的 public&#xff0c;protected 和 private示例 簡介 在 C 中派生類可以通過 public&#xff0c;protected 和 private 三種修飾符決定基類成員在派生類中的訪問級別 public&#xff0c;protected 和 private 公有成…

【2025】基于python+django的駕校招生培訓管理系統(源碼、萬字文檔、圖文修改、調試答疑)

課題功能結構圖如下&#xff1a; 駕校招生培訓管理系統設計 一、課題背景 隨著機動車保有量的不斷增加&#xff0c;人們對駕駛技能的需求也日益增長。駕校作為駕駛培訓的主要機構&#xff0c;面臨著激烈的市場競爭和學員需求多樣化等挑戰。傳統的駕校管理模式往往依賴于人工操作…

要登錄的設備ip未知時的處理方法

目錄 1 應用場景... 1 2 解決方法&#xff1a;... 1 2.1 wireshark設置... 1 2.2 獲取網口mac地址&#xff0c;wireshark抓包前預過濾掉自身mac地址的影響。... 2 2.3 pc網口和設備對接... 3 2.3.1 情況1&#xff1a;... 3 2.3.2 情…

一.ffmpeg打開麥克風,錄制音頻并重采樣

一.windows windows下使用msys編譯ffmpeg&#xff0c;先編譯libx264和libx265&#xff0c;然后編譯ffmpeg的時候需要添加這兩個庫的路徑才能--enable&#xff1b;為什么ffplay--enable了還是沒有呢&#xff0c;仔細看編譯打印&#xff0c;可能剛有一段報錯提示SDL找不到&#…

go 安裝swagger

1、依賴安裝&#xff1a; # 安裝 swag 命令行工具 go install github.com/swaggo/swag/cmd/swaglatest# 安裝 gin-swagger 和 swagger 文件的依賴 go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files 2、測試 cmd中輸入&#xff1a; swag -v 如果…

網絡安全反滲透 網絡安全攻防滲透

網絡滲透防范主要從兩個方面來進行防范&#xff0c;一方面是從思想意識上進行防范&#xff0c;另一方面就是從技術方面來進行防范。 1.從思想意識上防范滲透 網絡攻擊與網絡安全防御是正反兩個方面&#xff0c;縱觀容易出現網絡安全事故或者事件的公司和個人&#xff0c;在這些…

java泛型通配符?及上下界(extends,super)保證安全性、靈活性、可讀性

在 Java 中&#xff0c;泛型通配符&#xff08;?&#xff09;用于表示未知類型&#xff0c;通常用于增強泛型的靈活性。通配符可以與上下限結合使用&#xff0c;以限制泛型的范圍。以下是通配符及上下限的使用示例&#xff1a; 1. 無界通配符 (?) 無界通配符表示可以接受任意…

技術視界|構建理想仿真平臺,加速機器人智能化落地

在近期的 OpenLoong 線下技術分享會 上&#xff0c;松應科技聯合創始人張小波進行了精彩的演講&#xff0c;深入探討了仿真技術在機器人智能化發展中的關鍵作用。他結合行業趨勢&#xff0c;剖析了現有仿真平臺的挑戰&#xff0c;并描繪了未來理想仿真系統的設計理念與實現路徑…

uniapp-x 之useAttrs只讀

數據類型&#xff1a; useAttrs在web端拿到的是obj&#xff0c;app拿到的是map 是否可以修改內部元素&#xff1a; 否&#xff0c;只讀 這意味著你想這樣寫代碼將會無效 let attrsuseAttrs();console.log("attrs",attrs, attrs instanceof Map)//appif(attrs ins…

Python 正則表達式模塊 re

Python 正則表達式模塊 re flyfish 一、正則表達式基礎 1. 什么是正則表達式&#xff1f; 正則表達式&#xff08;Regular Expression, RE&#xff09;是一種用于匹配、查找和替換文本模式的工具&#xff0c;由普通字符&#xff08;如字母、數字&#xff09;和特殊字符&…

【商城實戰(33)】解鎖版本迭代與更新策略

【商城實戰】專欄重磅來襲&#xff01;這是一份專為開發者與電商從業者打造的超詳細指南。從項目基礎搭建&#xff0c;運用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用戶、商品、訂單等核心模塊開發&#xff0c;再到性能優化、安全加固、多端適配&#xf…

環境配置 | 5分鐘極簡Git入門:從零上手版本控制

你是否剛接觸Git&#xff1f;別擔心&#xff01;這篇指南將用最簡單的步驟帶你掌握Git核心操作&#xff0c;快速開啟版本控制之旅&#xff01;? 1.git在win10上的下載安裝 1.1.下載git 打開官方網站 Git - Downloadshttps://git-scm.com/downloads ? ?? 1.2.git安裝 …

計算機網絡——DNS

一、什么是DNS&#xff1f; DNS&#xff08;Domain Name System&#xff0c;域名系統&#xff09; 是互聯網的核心服務&#xff0c;負責將人類可讀的域名&#xff08;如 www.baidu.com&#xff09;轉換為機器可識別的 IP地址&#xff08;如 14.119.104.254&#xff09;。它像一…