Python工程師進階學習道路分析

在這里插入圖片描述

本文將分為以下幾個核心部分:

  1. 心態與基礎重塑:從“會用”到“精通”
  2. 核心語言深度:窺探Python的奧秘
  3. 編程范式與設計模式:寫出優雅的代碼
  4. 并發與異步編程:釋放多核時代的威力
  5. 性能分析與優化:讓代碼飛起來
  6. 深入標準庫與常用第三方庫
  7. 工程化與實踐:構建可靠的應用
  8. 領域深度:選擇你的方向
  9. 拓展視野:超越Python本身
  10. 學習路徑與資源推薦
  11. 總結

1. 心態與基礎重塑:從“會用”到“精通”

在開始進階之前,首先要糾正心態。進階不是簡單地學習更多庫的API,而是加深對語言本身、計算機科學原理和軟件工程實踐的理解

1.1 夯實“基礎”中的“基礎”
你以為你掌握了列表、字典、循環和函數?請再思考一下:

  • 列表推導式生成器表達式的性能差異和適用場景是什么?
  • 深拷貝淺拷貝在什么情況下會引發難以察覺的Bug?
  • *args**kwargs的本質是什么?它們如何使用?def foo(a, b, *, c, d) 中的 * 又是什么作用?
  • 裝飾器(Decorator)除了@log,還能做什么?如何寫一個帶參數的裝飾器?
  • 上下文管理器(Context Manager)的__enter____exit__方法具體是如何工作的?除了with open(...),你還能用它來優雅地管理什么資源?

行動建議:重新閱讀官方文檔Tutorial部分,但這次帶著這些問題去讀,并動手實驗。你會發現很多之前忽略的細節。

1.2 理解“Pythonic”的含義
“Pythonic”意味著編寫符合Python哲學和慣用法的代碼。它追求的是簡潔、清晰、可讀性強,而不是炫技。

  • 壞例子:用索引遍歷列表 for i in range(len(my_list)):
  • 好例子:直接迭代元素 for item in my_list: 或用 enumerate 獲取索引。
  • 壞例子:使用maplambda進行簡單的轉換 list(map(lambda x: x*2, my_list))
  • 好例子:使用列表推導式 [x*2 for x in my_list] (通常更清晰)

閱讀《Fluent Python》(流暢的Python)和《Effective Python》這兩本書,是培養Pythonic思維的最佳途徑。

1.3 擁抱開源和社區
進階之路不能閉門造車。積極參與開源社區:

  • 閱讀優秀源碼:從Flask, Requests, Django的某個模塊開始,學習它們的代碼組織和設計。
  • 參與Issue討論:即使不能直接提交代碼,幫助復現Bug、解答他人的問題也是極好的學習。
  • 嘗試貢獻代碼:從修改文檔、編寫測試用例開始,逐步嘗試解決簡單的Bug。

2. 核心語言深度:窺探Python的奧秘

這是進階的核心,理解這些機制能讓你真正理解代碼背后的行為。

2.1 對象模型與數據結構
一切皆對象,每個對象都有身份(id)、類型(type)、值(value)

  • 可變對象(Mutable) vs 不可變對象(Immutable):這是Python中最核心的概念之一。列表、字典、集合是可變的對象;數字、字符串、元組是不可變的。理解這一點對理解函數參數傳遞、別名、內存管理至關重要。
  • is 與 == 的區別is比較兩個對象的身份(即內存地址),==比較兩個對象的值。a is bTrue 意味著 ab 是同一個對象。
  • 小整數緩存Interning機制:Python會對小整數(通常是[-5, 256])和短字符串進行緩存,優化性能。這解釋了為什么a = 256; b = 256; a is bTrue,而a = 257; b = 257; a is b可能是False

2.2 名稱、命名空間與作用域(Namespace & Scope)

  • LEGB規則:名稱查找的順序是 Local -> Enclosing -> Global -> Built-in。理解這個規則是解決UnboundLocalError等錯誤的關鍵。
  • globalnonlocal關鍵字:用于在函數內部修改全局變量或閉包環境中的變量。慎用,它們通常意味著設計上有問題。

2.3 函數進階
函數是Python的一等公民(First-Class Citizen)。

  • 一等公民:意味著函數可以像普通變量一樣被賦值、傳遞給其他函數、作為其他函數的返回值。
  • 閉包(Closure):延伸了作用域的函數,能訪問定義體之外的非全局變量。它是裝飾器的基礎。
    def make_multiplier(factor):def multiplier(x):return x * factor  # factor對于multiplier來說,是“非局部”的變量return multiplierdouble = make_multiplier(2)
    print(double(5))  # 輸出 10
    
  • 裝飾器(Decorator):本質上是一個接受函數作為參數并返回一個函數的高階函數。它提供了在不修改原函數代碼的情況下為其添加功能的能力。
    def my_decorator(func):def wrapper(*args, **kwargs):print("Something is happening before the function is called.")result = func(*args, **kwargs)print("Something is happening after the function is called.")return resultreturn wrapper@my_decorator
    def say_hello():print("Hello!")# 等價于 say_hello = my_decorator(say_hello)
    
    使用functools.wraps可以保留原函數的元信息(如__name__)。

2.4 面向對象編程深度

  • 屬性查找順序(MRO - Method Resolution Order):Python使用C3算法來解決多重繼承中的菱形問題(Diamond Problem)。可以通過ClassName.__mro__查看。
  • 描述符(Descriptor):實現了__get__, __set__, __delete__方法的類。它是@property, @classmethod, @staticmethod的實現基礎,是很多高級庫(如ORM)的核心魔法。理解了描述符,你就理解了Python對象屬性訪問的底層機制。
  • 元類(Metaclass):類的類。type是所有類的元類。元類允許你 intercept 類的創建過程并修改它。這是Python中最深奧和強大的特性之一,但也最容易被濫用。99%的場景下你不需要它,但在框架開發中(如Django的模型定義),它至關重要。

2.5 迭代器、生成器與協程
這是Python中非常強大和獨特的特性。

  • 迭代協議__iter__()返回一個迭代器,迭代器需要實現__next__()方法。for循環就是基于這個協議工作的。
  • 生成器(Generator):一種特殊的迭代器,通過yield關鍵字定義。它惰性地產生值,只在需要時計算,極大節省內存。用于處理大數據流、管道等場景。
    def fibonacci():a, b = 0, 1while True:yield aa, b = b, a + bgen = fibonacci()
    for _ in range(10):print(next(gen))
    
  • 生成器表達式(x*2 for x in range(10)),類似于列表推導式,但返回一個生成器對象。
  • 協程(Coroutine):通過yield不僅可以產出值,還可以接收值(.send(value))。這是asyncio庫在Python舊版本中的實現基礎。async/await是更現代、明確的協程語法。

2.6 導入系統(Import System)

  • import語句背后發生了什么?它觸發了__import__()函數。
  • 理解sys.pathPYTHONPATH
  • __init__.py文件在舊版本中用于標識包,現在也可以是空目錄,但通常仍用于包的初始化代碼或定義__all__
  • 相對導入和絕對導入:from . import module, from ..subpackage import module

3. 編程范式與設計模式:寫出優雅的代碼

Python支持多范式,寫出好代碼需要更高級的架構思想。

3.1 面向對象設計原則(SOLID)
雖然不是Python特有,但至關重要。

  • S - 單一職責原則:一個類只做一件事。
  • O - 開閉原則:對擴展開放,對修改關閉。
  • L - 里氏替換原則:子類必須能夠替換其父類。
  • I - 接口隔離原則:使用多個專門的接口,而不是一個臃腫的總接口。
  • D - 依賴倒置原則:依賴于抽象(接口),而不是具體實現。

3.2 常見設計模式在Python中的實現
由于Python的動態性,很多模式實現起來比其他靜態語言更簡單,甚至看起來“不像”模式。

  • 工廠模式(Factory):使用函數或類來創建對象,隱藏實例化邏輯。
  • 單例模式(Singleton):通常使用模塊級別的導入來實現(模塊在Python中天然是單例),而不是復雜的類構造。
  • 策略模式(Strategy):函數是一等公民,可以直接將函數作為參數傳遞,替代了策略類的需要。
  • 觀察者模式(Observer):可以用weakref模塊防止內存泄漏。
  • 裝飾器模式:語言層面直接支持(@語法)。

閱讀《Head First Design Patterns》并思考如何在Python中實現它們。

3.3 函數式編程(FP)元素
Python不是純函數式語言,但提供了一些支持。

  • 匿名函數lambda x: x*2,但功能有限(只能是一個表達式)。
  • 高階函數map, filter, reducefunctools中)。但通常列表推導式和生成器表達式是更Pythonic的選擇。
  • functools模塊:partial(部分應用)、lru_cache(Memoization)、reduce
  • operator模塊:提供函數式的運算符,如operator.add,可用于替代lambda x, y: x+y

4. 并發與異步編程:釋放多核時代的威力

這是現代Python開發中不可避免的挑戰和利器。

4.1 并發 vs 并行

  • 并發(Concurrency):處理多件事的能力,不一定是同時。(IO密集型)
  • 并行(Parallelism):同時做多件事的能力。(CPU密集型)

4.2 多線程(threading)

  • 優點:適合IO密集型任務(如網絡請求、文件讀寫),因為在等待IO時,GIL會釋放,其他線程可以運行。
  • 缺點:由于**全局解釋器鎖(GIL)**的存在,Python的多線程無法實現真正的多核并行計算(CPU密集型任務)。
  • 線程安全queue.Queue是線程安全的數據交換首選。使用threading.Lock等鎖機制來保護臨界區,但要小心死鎖。

4.3 多進程(multiprocessing)

  • 優點:繞過GIL,真正利用多核,適合CPU密集型任務。
  • 缺點:進程創建和上下文切換開銷大,進程間通信(IPC)比線程間通信復雜(需要使用QueuePipeManager等)。

4.4 協程與異步IO(asyncio)
這是Python處理高并發IO密集型任務的現代解決方案。

  • 核心概念事件循環(Event Loop)協程(Coroutine)FutureTask
  • 語法async def定義異步函數,await用于等待一個可等待對象(Awaitable),asyncio.create_task()用來并發運行任務。
    import asyncioasync def fetch_data(url):# 模擬網絡請求await asyncio.sleep(2)return f"Data from {url}"async def main():task1 = asyncio.create_task(fetch_data('url1'))task2 = asyncio.create_task(fetch_data('url2'))results = await asyncio.gather(task1, task2)print(results)asyncio.run(main())
    
  • 優勢:單線程內實現高并發,開銷極小,數萬個任務并發很常見。
  • 生態:需要配套使用異步庫(如aiohttp代替requestsasyncpg代替psycopg2)。

4.5 如何選擇?

  • CPU密集型 -> multiprocessing
  • IO密集型,且需要大量并發連接 -> asyncio
  • IO密集型,但并發量不大,或使用的庫不支持異步 -> threading
  • 混合型:復雜場景可能需要結合使用,如multiprocessing + asyncio,或者使用concurrent.futures.ThreadPoolExecutor/ProcessPoolExecutor

5. 性能分析與優化:讓代碼飛起來

“不要猜,要測”。優化前必須先找到性能瓶頸。

5.1 分析工具

  • timeit:測量小代碼片的執行時間。
  • cProfile / profile:性能分析器,給出函數調用次數、耗時等詳細數據。使用snakeviz可以可視化cProfile的結果。
  • line_profiler:逐行分析函數性能。
  • memory_profiler:分析內存使用情況。

5.2 優化策略

  • 算法優化:永遠是第一選擇。用O(n)的算法替代O(n2)的算法帶來的提升是數量級的。
  • 使用內置函數和庫:它們通常由C實現,速度極快。
  • 局部變量:訪問局部變量比全局變量快。
  • 避免點操作符(.)訪問:在循環中,將方法或屬性賦值給一個局部變量。
    # 慢
    for i in range(1000000):my_list.append(i)# 快
    append = my_list.append
    for i in range(1000000):append(i)
    
  • 字符串拼接:避免在循環中使用+,改用str.join()
  • 利用生成器:節省內存,惰性計算。
  • 使用C擴展/ Cython:將關鍵部分用Cython重寫或調用C庫,是終極優化手段。numpy, pandas等庫的高性能就源于此。

6. 深入標準庫與常用第三方庫

一個優秀的Python工程師必須熟悉“電池”和強大的第三方生態。

6.1 必須精通的的標準庫模塊

  • collectionsdeque, defaultdict, Counter, namedtuple, OrderedDict。數據處理的利器。
  • itertools:創建迭代器的函數,用于構建高效、優雅的數據管道。
  • functools:高階函數和操作可調用對象的工具,如partial, lru_cache, wraps
  • contextlib:用于創建上下文管理器的工具。
  • argparse / click:命令行參數解析。click是第三方庫,但更強大易用。
  • logging:替代print,進行專業的日志記錄。
  • unittest / pytest:單元測試框架。pytest是第三方,是事實上的標準。
  • json, csv, configparser:處理常見數據格式。
  • pathlib:面向對象的路徑操作(Python3.4+),比舊的os.path好用得多。
  • concurrent.futures:簡單的線程/進程池接口。
  • typing:類型提示支持(Python3.5+)。

6.2 必須了解的頂級第三方庫

  • Web框架Django(全能型)、Flask(微框架)、FastAPI(現代,高性能,基于類型提示)。
  • 網絡請求requests(同步,人性化)、aiohttp(異步)。
  • 數據科學numpy(數值計算)、pandas(數據分析)、scikit-learn(機器學習)、matplotlib / seaborn(可視化)。
  • 異步asyncio(標準庫)、celery(分布式任務隊列)。
  • 數據庫ORMSQLAlchemy(Python界ORM之王)、Django ORMasyncpg/aiomysql(異步驅動)。
  • DevOpsfabric / ansible(自動化部署)、docker
  • APIREST framework(Django生態的REST框架)。
  • 測試pytestfactory_boy(創建測試數據)、responses(Mock HTTP請求)。
  • 代碼質量black(格式化)、isort(排序import)、flake8 / pylint( linting)、mypy(靜態類型檢查)。

在這里插入圖片描述

7. 工程化與實踐:構建可靠的應用

個人技巧很重要,但讓團隊協作開發出穩定、可維護的軟件更需要工程化實踐。

7.1 開發環境與依賴管理

  • 虛擬環境venv(Python3標準庫)或virtualenv,實現項目依賴隔離。
  • 依賴管理pip + requirements.txt是基礎。強烈推薦使用PoetryPipenv,它們能更好地管理依賴版本、鎖定依賴樹,并處理虛擬環境。

7.2 代碼風格與質量

  • 遵守PEP 8:使用black( Opinionated,無需配置)或autopep8自動格式化代碼。
  • Import排序:使用isort
  • Linting:使用flake8(集成了PyFlakes, pycodestyle)或pylint(更嚴格)檢查代碼錯誤和風格問題。
  • 類型提示(Type Hints):從Python 3.5開始支持。它不能提高運行時性能,但能:
    • 極大提高代碼可讀性和可維護性。
    • 被IDE(PyCharm, VSCode)用于更精準的自動補全和錯誤檢查。
    • 可以使用mypy進行靜態類型檢查,在運行前發現潛在Bug。
    from typing import List, Optional, Dictdef greet_all(names: List[str]) -> None:for name in names:print(f"Hello, {name}")def find_user(user_id: int) -> Optional[Dict[str, str]]:# ... 可能返回一個字典,也可能返回Nonereturn None
    

7.3 測試

  • 測試金字塔:編寫大量的單元測試(快、穩定),適量的集成測試,少量的端到端(E2E)測試(慢、脆弱)。
  • unittest vs pytestpytest提供更簡潔的語法、強大的Fixture系統和豐富的插件,是目前的主流。
    # pytest 例子
    def test_fetch_data(mocker): # mocker 是一個fixturemock_requests = mocker.patch('my_module.requests')mock_requests.get.return_value.json.return_value = {'key': 'value'}result = fetch_data()assert result == 'value'mock_requests.get.assert_called_once_with('https://api.example.com')
    
  • Mocking:使用unittest.mockpytest-mock來隔離測試對象,模擬外部依賴(如數據庫、網絡請求)。

7.4 日志(Logging)
不要再用print調試和記錄信息了。使用logging模塊:

  • 可以設置不同的日志級別(DEBUG, INFO, WARNING, ERROR, CRITICAL)。
  • 可以輕松地輸出到控制臺、文件、網絡等。
  • 可以配置格式、過濾器等。
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)def main():logger.debug('This is a debug message')logger.info('Process started')try:1 / 0except ZeroDivisionError:logger.error('Failed to divide', exc_info=True)

7.5 配置管理

  • 簡單應用:使用configparser(ini文件)或直接使用json/yaml文件。
  • 復雜應用:使用環境變量(os.environ),特別是敏感信息(密碼、密鑰)。永遠不要將密碼硬編碼在代碼中或提交到版本庫!
  • 推薦庫:python-decoupledjango-environ(Django項目)。

7.6 打包與發布
學習如何使用setuptoolswheeltwine將自己的庫打包并發布到PyPI。即使不發布,良好的setup.pypyproject.tomlPoetry使用)配置也是專業性的體現。


8. 領域深度:選擇你的方向

通用技能掌握后,需要在一個特定領域深耕,形成自己的核心競爭力。

8.1 Web后端開發

  • 核心技術:HTTP協議、RESTful API設計、認證授權(OAuth2/JWT)、數據庫、緩存、消息隊列、部署。
  • 框架:深入Django(及其生態DRF, Django Channels)或Flask/FastAPI
  • 數據庫PostgreSQL/MySQLRedis(緩存/消息隊列),MongoDB(可選)。
  • 部署:Linux, Nginx, Gunicorn/uWSGI, Docker, Kubernetes, AWS/GCP/Aliyun。

8.2 數據科學與機器學習

  • 核心庫numpy, pandas, scikit-learn, matplotlib, seaborn, jupyter
  • 深度學習TensorFlow / PyTorch
  • 大數據PySpark
  • 理論知識:線性代數、概率統計、機器學習算法。

8.3 網絡爬蟲

  • 核心庫requests, scrapy, selenium(處理JS)、beautifulsoup4, lxml
  • 難點:反爬蟲策略(IP代理、驗證碼識別、User-Agent輪換)、分布式爬蟲、數據清洗。

8.4 運維自動化與DevOps

  • 核心ansible, fabric, saltstack(配置管理)。
  • 容器化Dockerdocker-composeKubernetes Python客戶端。
  • 云平臺:使用boto3(AWS SDK)等庫通過代碼管理云資源。

8.5 桌面應用與游戲

  • PyQt / PySide:創建功能強大的跨平臺桌面應用。
  • Tkinter:標準庫,簡單易用,但界面較舊。
  • Pygame:用于開發2D游戲。

9. 拓展視野:超越Python本身

頂級工程師不會把自己局限在一種語言或工具里。

  • 學習另一門語言
    • Go:靜態編譯,并發模型強大,適合API、云計算、 DevOps工具。
    • Rust:無GC且內存安全,性能極致,正在滲透Python的性能關鍵領域(如通過PyO3創建Python擴展)。
    • JavaScript/TypeScript:了解前端世界,有助于全棧開發。
  • 深入計算機網絡:理解TCP/IP, HTTP/HTTPS, WebSocket等協議。
  • 深入操作系統:理解進程、線程、內存管理、文件系統。Linux是必須熟悉的。
  • 數據庫內部:了解索引(如B+Tree)、事務(ACID)、隔離級別、鎖機制。
  • 分布式系統:了解一致性、共識算法(如Paxos, Raft)、CAP定理、微服務、服務發現、熔斷降級等概念。

10. 學習路徑與資源推薦

10.1 學習路徑建議

  1. 鞏固基礎:重讀官方文檔,閱讀《Effective Python》、《Fluent Python》。
  2. 深入核心:研究描述符、元類、生成器、異步IO。動手實現一些魔法。
  3. 工程實踐:在一個新項目中強制自己使用pytest, logging, type hints, Poetry,并編寫完整的測試覆蓋。
  4. 并發攻關:分別用threading, multiprocessing, asyncio實現同一個IO密集型和CPU密集型任務,體會差異。
  5. 性能調優:找一個自己的舊項目,使用cProfileline_profiler找到瓶頸并優化它。
  6. 領域深耕:選擇1-2個方向,構建一個完整的項目(如用Django/FastAPI搭建一個帶Celery異步任務和Redis緩存的REST API;或用pandas+sklearn完成一個完整的數據分析報告)。
  7. 參與開源:在GitHub上找到一個你喜歡的、活躍的庫,從閱讀源碼、提Issue開始,最終嘗試貢獻一個PR。
  8. 拓展邊界:學習Go/Rust,閱讀《數據密集型應用系統設計》等書籍。

10.2 資源推薦

  • 書籍
    • 《Fluent Python》(流暢的Python) - 進階必讀圣經
    • 《Effective Python》 - 編寫高質量Python代碼的90個有效方法
    • 《Python Cookbook》 - 解決方案合集,工具書
    • 《設計模式:可復用面向對象軟件的基礎》 + 《Head First Design Patterns》
    • 《數據密集型應用系統設計》 - 拓寬系統設計視野
  • 網站/視頻
    • Real Python:高質量的教程和文章。
    • PyCon Talks:YouTube上的PyCon會議視頻,尤其是關于Python核心、性能、新特性的演講。
    • Awesome Python:GitHub上的資源清單,幾乎包含了所有優秀的Python庫和資源。
  • 社區
    • Stack Overflow:提問和查找問題。
    • GitHub:閱讀源碼。
    • Reddit:/r/python/r/learnpython
    • Discord / Slack:各種技術社區頻道。

11. 總結

Python工程師的進階之路是一場從“術”到“道”的修行。初期,你學習具體的“術”(語法、庫、工具)。中期,你開始理解背后的“道”(設計原理、編程范式、工程思想)。后期,你將融會貫通,不再局限于Python本身,而是從軟件工程和計算機科學的宏大視角來設計和構建系統。

這條路沒有終點,技術的浪潮永不停歇。但只要你保持好奇心和持續學習的動力,就一定能成為一名優秀的,甚至卓越的Python工程師。

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

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

相關文章

IntelliJ IDEA中Maven的“Sync“與“Reload“詳解:小白的避坑指南

在IntelliJ IDEA中使用Maven時,Sync All Maven Projects(同步)和 Reload All Maven Projects(重新加載)是兩個最常用的操作按鈕。它們看似相似,實則承擔著完全不同的職責。本文將通過通俗易懂的對比和場景分…

網絡地址的詳細計算說明

IP地址分類與計算 IP地址分5類A類 :0開頭,適用于大型網絡 B類 :10開頭,適用于中型網絡 C類 :110開頭,適用于小型網絡 D類 :1110開頭,用于組播 E類 : 1110開頭&#xff0c…

人工智能驅動的現代電商前端開發:從基礎到智能體驗

引言:AI如何重塑電商體驗電子商務行業正在經歷一場人工智能革命。從個性化推薦到視覺搜索,從智能客服到預測分析,AI技術正在徹底改變用戶與電商平臺的交互方式。作為前端開發者,了解如何集成AI功能已成為必備技能。本文將帶您深入…

mimic數據統計

是否能聯通 psql -h 127.0.0.1 -U Shinelon-d mimic --password pgadmin建庫 psql -d mimiciv -f mimic-iv/buildmimic/postgres/create.sql 也可以pgadmin直接運行create.sql 導入csv.gz數據 psql -d mimic -v ON_ERROR_STOP1 -v mimic_data_dirH:/mimic-iv-2.2 -f C:\Users\S…

孟德爾隨機化小試 從軟件安裝數據下載到多種檢驗

孟德爾隨機化(Mendelian Randomization, MR)作為一種利用基因數據推斷因果關系的強大工具,在流行病學研究中應用廣泛。本文將詳細講解MR的核心原理、完整分析流程,并附上關鍵代碼實現,幫助你從零開始完成一次MR分析。1…

記一次:postman請求下載文件的使用方法

前言:筆者的后端接口是swagger,遇到像文件導出下載的功能就實現不了。然后使用postman工具就可以了。注:postman工具使用send下拉選項中有請求下載,如圖完美解決。后續有其它方法在補充。

快速搭建項目(若依)

RuoYi-Vue 是一個 Java EE 企業級快速開發平臺,低代碼的框架。 1.環境要求: 其中MySQL和Redis放在服務器上或者本機上。 2.代碼搭建: 代碼下載地址:https://gitee.com/y_project/RuoYi-Vue,在官方文檔里面可下載若依…

iOS開發之UICollectionView為什么需要配合UICollectionViewFlowLayout使用

1. UICollectionView 的職責分離UICollectionView 本質上只是一個容器,用來展示一系列的 cell(單元格)。 它本身 不關心 cell 的擺放方式,只負責:Cell 的復用(避免性能浪費)Cell 的增刪改查滾動…

一、部署LNMP

一、準備環境操作系統:CentOS 7.x(最少 2 核 CPU 2GB 內存 20GB 磁盤)網絡:能訪問公網(用于下載包)軟件版本:Nginx 1.20MySQL 5.7/8.0PHP 7.4WordPress 6.x(商城插件 WooCommerce&…

【時時三省】vectorCAST 便捷使用技巧

山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省 目錄 1,工程的共享 2,工程的關鍵文件保存 2,工作環境目錄下,各個文件夾的作用 1,build 和 environment 的區別 2,vcm的作用 3,tst 文件的妙用 4,配置文件的妙用 5,復制測試環境 6,vectorCAST…

TOPSIS 優劣解距離法總結

TOPSIS 優劣解距離法總結 1. 基本思想 TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)方法通過計算方案與正理想解(最優值)和負理想解(最劣值)的距離,來評價方案的優…

機器學習筆試題

人工智能與機器學習單選題(50道)1. 機器學習的核心目標是:A. 通過硬編碼規則解決問題 B. 從數據中自動學習模式 C. 提高計算機硬件性能 D. 優化數據庫查詢速度2. 以下屬于監督學習任務的是:A. 聚類分析 B. 圖像分類 C. 異常檢測 D…

CISP-PTE之路--10文

1.TCP/UDP 工作在 OSI 哪個層? 應用層 傳輸層 數據鏈路層 表示層 答案:傳輸層 解析:TCP(傳輸控制協議)和 UDP(用戶數據報協議)是 OSI 模型中傳輸層的核心協議,負責端到端的數據傳輸管理,如可靠性(TCP)、實時性(UDP)等。 2.下列哪種設備可以隔離 ARP 廣播幀? …

接口性能測試工具 - JMeter

1. 下載和運行JMeter 是由 Java 語言編寫的, 因此 JMeter 的使用依賴于 Java 環境 - JRE.前往 oracle 官網下載 JMeter 壓縮包.Mac 用戶解壓完成后, 在包內的 bin 目錄下運行 sh jmeter:Windows 用戶直接運行 bin 目錄下的 jmeter.bat:即可進入 JMeter 主頁面:1.1 添加環境變量…

Go語言實戰案例-數據庫事務處理

在實際業務中,很多操作需要保證 要么全部成功,要么全部失敗,否則可能造成數據不一致。比如:? 用戶轉賬(A 賬戶扣款,B 賬戶加款)? 下單支付(生成訂單、扣減庫存、記錄支付&#xff…

為何vivo做了頭顯,小米卻選擇AI眼鏡

在押注下一代智能終端這件事上,手機廠商為何步調不一致?文|游勇編|周路平在手機銷量和創新都陷入停滯的背景下,主流手機廠商正在探索下一代交互終端,試圖尋找新的增長點。今年6月,小米發布了AI眼…

Day24 目錄遍歷、雙向鏈表、棧

day24 目錄遍歷、雙向鏈表、棧顯示指定目錄下的所有 .h 文件 功能描述 遍歷指定目錄(遞歸進入子目錄),查找所有以 .h 為后綴的頭文件,將其完整路徑(路徑 文件名)存儲到雙向鏈表中,并正向或反向…

JupyterLab 安裝(python3.10)

目錄 一、環境 二、安裝 三、啟動Jupyterlab 四、通過chrome瀏覽器進行訪問 五、打開Jupyter Notebook 六、pandas驗證 JupyterLab 是一個基于 Web 的交互式開發環境,是經典 Jupyter Notebook 的下一代版本。它支持多種編程語言(如 Python、R、Juli…

【neo4j】安裝使用教程

一、安裝 1.0 前置條件 安裝配置好jdk17及以上 注意我使用的是neo4j 5.26.10版本,匹配java17剛好 Java Archive Downloads - Java SE 17.0.12 and earlier 無腦安裝即可 配置以下環境變量 1.1 安裝程序 Neo4j Deployment Center - Graph Database & Anal…

AECS(國標ECALL GB 45672-2025)

車載緊急呼叫功能作為車輛遇險時的響應機制,為司機和乘客的安全營救提供通信支持。為了能夠降低通信延遲,提高響應速度,基于4G/5G的下一代緊急呼叫技術(NG eCall)將在歐盟于2027年起成為強制標準,中國也已經…