当前位置: 首页 > news >正文

Python高级:GIL、C扩展与分布式系统深度解析

文章目录

    • 📌 **前言**
    • 🔧 **第一章:Python语言的本质与生态**
      • 1.1 **Python的实现与版本演进**
      • 1.2 **开发环境与工具链**
    • 🔧 **第二章:元编程与动态特性**
      • 2.1 **描述符协议(Descriptor Protocol)**
      • 2.2 **元类(Metaclass)**
      • 2.3 **动态代码生成**
    • 🔧 **第三章:并发与高性能编程**
      • 3.1 **多线程与GIL(全局解释器锁)**
      • 3.2 **异步IO与协程**
      • 3.3 **C扩展开发(Cython/CPython)**
    • 🔧 **第四章:设计模式与架构**
      • 4.1 **常见设计模式实战**
      • 4.2 **微服务与分布式系统**
    • 🔧 **第五章:系统级开发与部署**
      • 5.1 **打包与分发**
      • 5.2 **容器化部署(Docker)**
    • 🔧 **第六章:性能优化与调试**
      • 6.1 **内存优化**
      • 6.2 **数据库优化**
    • 🔧 **第七章:Web开发与数据科学**
      • 7.1 **Web框架进阶(Django/Flask)**
      • 7.2 **数据科学与NumPy优化**
    • 📚 **附录:资源与进阶学习**
      • 1. **书籍推荐**
      • 2. **工具链**
      • 3. **开源项目实践**
    • 🎯 **总结**


📌 前言

Python高级编程不仅是语法的堆砌,更是对语言本质、性能优化、设计模式和系统级开发的深度理解。本文将结合 语言特性工具链实战项目,从 语法细节分布式系统 全面解析,助你成为Python领域专家。


🔧 第一章:Python语言的本质与生态

1.1 Python的实现与版本演进

  • CPython、PyPy、Jython对比(性能、适用场景)
  • PEP文档解读:如何追踪语言变化(如PEP 584的|&字典操作)
  • Python 3.13新特性
    # 3.13新增功能示例:精确的浮点数运算
    from math import isclose
    print(0.1 + 0.2 == 0.3)  # False(浮点精度问题)
    print(isclose(0.1 + 0.2, 0.3, rel_tol=1e-9))  # True
    

1.2 开发环境与工具链

  • 虚拟环境venvcondapoetry的对比与实践
  • 调试与分析工具
    • pdb交互式调试
    • memory_profiler内存分析
    • cProfile性能分析
  • 代码质量工具
    • flake8静态检查
    • mypy类型检查
    • black代码格式化

🔧 第二章:元编程与动态特性

2.1 描述符协议(Descriptor Protocol)

  • 应用场景:数据校验、属性代理
  • 案例:自定义属性校验器
    class NonNegative:def __set__(self, instance, value):if value < 0:raise ValueError("值必须非负")instance.__dict__[self.name] = valuedef __set_name__(self, owner, name):self.name = nameclass Product:price = NonNegative()p = Product()
    p.price = 100  # 正常
    p.price = -50  # 抛出ValueError
    

2.2 元类(Metaclass)

  • 作用:控制类的创建过程
  • 案例:单例模式的元类实现
    class SingletonMeta(type):_instances = {}def __call__(cls, *args, **kwargs):if cls not in cls._instances:cls._instances[cls] = super().__call__(*args, **kwargs)return cls._instances[cls]class Logger(metaclass=SingletonMeta):passlogger1 = Logger()
    logger2 = Logger()
    print(logger1 is logger2)  # True
    

2.3 动态代码生成

  • exec()eval()的高级用法
  • ast模块解析与修改代码
    import astclass AddPrintTransformer(ast.NodeTransformer):def visit_FunctionDef(self, node):new_body = [ast.Expr(value=ast.Constant(value="Entering function"))] + node.bodyreturn ast.copy_location(ast.FunctionDef(name=node.name, body=new_body, args=node.args), node)code = """
    def add(a, b):return a + b
    """
    tree = ast.parse(code)
    new_tree = AddPrintTransformer().visit(tree)
    exec(compile(new_tree, filename="<ast>", mode="exec"))
    add(1, 2)  # 输出:Entering function
    

🔧 第三章:并发与高性能编程

3.1 多线程与GIL(全局解释器锁)

  • GIL的限制与突破
    • 使用multiprocessing规避GIL
    • PyPy的无GIL实现
  • 案例:多进程计算斐波那契数列
    from multiprocessing import Pooldef fib(n):if n <= 1:return nreturn fib(n-1) + fib(n-2)if __name__ == "__main__":with Pool() as p:results = p.map(fib, [35]*4)print(results)
    

3.2 异步IO与协程

  • asyncio事件循环:从awaitasync def
  • 案例:异步HTTP请求
    import asyncio
    import aiohttpasync def fetch(session, url):async with session.get(url) as response:return await response.text()async def main():async with aiohttp.ClientSession() as session:tasks = [fetch(session, "https://example.com") for _ in range(10)]results = await asyncio.gather(*tasks)print(f"获取{len(results)}个页面")asyncio.run(main())
    

3.3 C扩展开发(Cython/CPython)

  • Cython语法与性能优化
    # example.pyx
    def sum_cython(int n):cdef int i, s = 0for i in range(n):s += ireturn s
    
  • 编译与性能对比
    $ cythonize -i example.pyx
    # Python版本:O(n)
    # Cython版本:O(1)(编译为C代码)
    

🔧 第四章:设计模式与架构

4.1 常见设计模式实战

  • 工厂模式:动态创建对象
    class Dog:def speak(self):return "Woof!"class Cat:def speak(self):return "Meow!"class AnimalFactory:def get_animal(self, animal_type):if animal_type == "dog":return Dog()elif animal_type == "cat":return Cat()else:raise ValueError("未知类型")
    
  • 观察者模式:事件驱动系统
    class Subject:def __init__(self):self._observers = []def attach(self, observer):self._observers.append(observer)def notify(self):for observer in self._observers:observer.update(self)class Observer:def update(self, subject):print("事件已触发!")
    

4.2 微服务与分布式系统

  • 使用FastAPI构建REST API
    from fastapi import FastAPI
    app = FastAPI()@app.get("/items/{item_id}")
    async def read_item(item_id: int):return {"item_id": item_id}
    
  • 消息队列(RabbitMQ/Kafka)
    # 生产者(RabbitMQ)
    import pika
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
    channel = connection.channel()
    channel.queue_declare(queue='task_queue', durable=True)
    channel.basic_publish(exchange='',routing_key='task_queue',body='Hello World!',properties=pika.BasicProperties(delivery_mode=2,)
    )
    

🔧 第五章:系统级开发与部署

5.1 打包与分发

  • setuptoolspoetry构建包
  • CI/CD实践:GitHub Actions自动化部署
    # .github/workflows/ci.yml
    name: Python CI
    on: [push]
    jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Set up Python 3.10uses: actions/setup-python@v2with:python-version: "3.10"- name: Install dependenciesrun: |python -m pip install --upgrade pippip install flake8 pytest- name: Test with pytestrun: pytest
    

5.2 容器化部署(Docker)

  • Dockerfile示例
    FROM python:3.10-slim
    WORKDIR /app
    COPY requirements.txt .
    RUN pip install -r requirements.txt
    COPY . .
    CMD ["python", "app.py"]
    
  • Kubernetes部署
    # deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:name: my-python-app
    spec:replicas: 3selector:matchLabels:app: my-python-apptemplate:metadata:labels:app: my-python-appspec:containers:- name: my-python-containerimage: my-python-image:latestports:- containerPort: 8080
    

🔧 第六章:性能优化与调试

6.1 内存优化

  • objgraph可视化内存引用
    import objgraph
    objgraph.show_most_common_types()  # 输出对象类型统计
    objgraph.show_refs([obj], filename='refs.png')  # 生成内存图
    
  • 减少对象分配
    # 低效写法
    s = ""
    for line in lines:s += line# 高效写法
    s = "".join(lines)
    

6.2 数据库优化

  • ORM性能陷阱(如N+1查询)
  • 使用SQLAlchemy优化查询
    from sqlalchemy.orm import Session
    from sqlalchemy import selectwith Session(engine) as session:# 预加载关联对象stmt = select(User).options(selectinload(User.orders))users = session.scalars(stmt).all()
    

🔧 第七章:Web开发与数据科学

7.1 Web框架进阶(Django/Flask)

  • Django的中间件与信号量
  • Flask的扩展开发
    from flask import Flask
    from flask_caching import Cacheapp = Flask(__name__)
    cache = Cache(app, config={'CACHE_TYPE': 'redis'})@app.route('/cache')
    @cache.cached(timeout=50)
    def cached_view():return "缓存内容"
    

7.2 数据科学与NumPy优化

  • 向量化操作替代循环
    import numpy as np
    a = np.random.rand(1000000)
    b = np.random.rand(1000000)# 低效循环
    c = [a[i] + b[i] for i in range(len(a))]  # 约1秒# 高效向量化
    c = a + b  # 几乎瞬间完成
    

📚 附录:资源与进阶学习

1. 书籍推荐

  • 《Python高性能编程》:深入性能优化技巧
  • 《流畅的Python》:高级特性与设计模式
  • 《Python Cookbook》:300+ 实战案例

2. 工具链

  • 调试pdbipdbPyCharm调试器
  • 性能分析cProfilePy-Spy(实时火焰图)
  • 代码质量flake8mypyblack

3. 开源项目实践

  • Django Rest Framework(企业级API开发)
  • Celery(分布式任务队列)
  • PyTorch(深度学习框架)

🎯 总结

通过本教程,你将掌握:

  1. 语言本质:元编程、GIL、CPython实现
  2. 高性能开发:异步IO、C扩展、内存优化
  3. 系统级能力:微服务、容器化、CI/CD
  4. 前沿技术:Type Hints、异步框架、数据科学优化

下一步建议

  1. 元编程异步IO 入手,选择一个案例实战。
  2. 使用 mypy 为现有代码添加类型注解。
  3. 尝试用 Cython 优化CPU密集型函数。

相关文章:

Python高级:GIL、C扩展与分布式系统深度解析

文章目录 &#x1f4cc; **前言**&#x1f527; **第一章&#xff1a;Python语言的本质与生态**1.1 **Python的实现与版本演进**1.2 **开发环境与工具链** &#x1f527; **第二章&#xff1a;元编程与动态特性**2.1 **描述符协议&#xff08;Descriptor Protocol&#xff09;*…...

数学之握手问题

问题描述 小蓝组织了一场算法交流会议&#xff0c;总共有 50人参加了本次会议。在会议上&#xff0c;大家进行了握手交流。按照惯例他们每个人都要与除自己以外的其他所有人进行一次握手 (且仅有一次)。但有 7 个人&#xff0c;这 7 人彼此之间没有进行握手 (但这 7 人与除这 …...

【Nodejs】2024 汇总现状

之前已经调研了容器、nexus-public&#xff0c;实现了本地构建应用镜像和基础设施的镜像。为实现分布式一体化协作开发的目标&#xff0c;还需要配套的线上协作开发环境。故而重回前端调研现状&#xff0c;比较 5 年前的 nodejs 快好的啊。 以下是针对 Node.js 工具链的深度解析…...

人工智能之数学基础:矩阵的降维

本文重点 在现实世界中,我们经常会遇到高维数据。例如,图像数据通常具有很高的维度,每个像素点都可以看作是一个维度。高维数据不仅会带来计算和存储上的困难,还可能会导致 “维数灾难”,即随着维度的增加,数据的稀疏性和噪声也会增加,从而影响数据分析的效果。因此,我…...

数仓开发那些事(10)

某神州优秀员工&#xff1a;&#xff08;没错&#xff0c;这个diao毛被评为了优秀员工&#xff09;一闪&#xff0c;听说你跑路了&#xff0c;不做零售行业了 一闪&#xff1a;没错&#xff0c;老东家的新it总监上任后大家都开始躺平&#xff0c;失去了当年的动力&#xff0c;所…...

【手工】早教游戏:下楼的猴子

一、效果 二、准备材料 吸管: 10.4 c m 10.4cm 10.4cm&#xff1b;棉签&#xff1a; 6 6 6 根双头棉签&#xff1b;硬币&#xff1a;1角&#xff1b;纸皮人: 2.0 c m 4.0 c m 2.0cm4.0cm 2.0cm4.0cm&#xff1b;纸板&#xff1a; 12.0 c m 30.0 c m 12.0cm30.0cm 12.0cm30…...

力扣刷题46. 全排列

46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 使用dfs搜索&#xff0c;查找所有的情况&#xff0c;首先定义所有的链表集合list&#xff0c;在定义每一种情况的链表res&#xff0c;在主函数中遍历所有的初始元素&#xff0c;首先初始化res&#xff0c;并且添加到res中&…...

【工作记录】pytest使用总结

1、 fixture夹具 可参考&#xff1a; python3.x中 pytest之fixture - 漂泊的小虎 - 博客园 fixture是指夹具&#xff08;把用例夹在中间&#xff09;&#xff0c;它包括前置工作和后置工作&#xff0c;前置是用例代码的准备阶段&#xff0c;后置是用例执行之后的清理阶段,用…...

linux 命令 mkdir

以下是 Linux mkdir 命令的简明总结&#xff0c;适合快速查阅和实际场景应用&#xff1a; 基础语法 mkdir [选项] 目录名... 常用选项速查 选项作用-p自动创建父目录&#xff08;解决多级目录问题&#xff09; mkdir -p a/b/c-m直接设置权限&#xff08;替代chmod&#xff0…...

浏览器对一个资源设置了缓存,如何清除缓存,且后续请求不命中缓存

方式1、浏览器端强制刷新 方式2、修改资源url eg&#xff1a;如下图&#xff0c;添加了查询参数 <link rel"stylesheet" href"style.css?v1.2.1"> <script src"app.js?t20231010"></script> 原理&#xff1a;1、在资源的…...

k8s的存储

一 configmap 1.1 configmap的功能 configMap用于保存配置数据&#xff0c;以键值对形式存储。 configMap 资源提供了向 Pod 注入配置数据的方法。 镜像和配置文件解耦&#xff0c;以便实现镜像的可移植性和可复用性。 etcd限制了文件大小不能超过1M 1.2 configmap的使用…...

[JavaScript]如何利用作用域块避免闭包内存泄漏?

出自《你不知道的JavaScript》上卷 以下是本书给出的反例: function process (data) {...} var bigdata{...} process(bigdata); var btn document.getElementById(x); btn.addEventListener(click, function click{...});click会被回调在其他位置, 在addEventListener函数内…...

Pytorch使用手册—扩展 TorchScript 使用自定义 C++ 操作符(专题五十三)

提示 本教程自 PyTorch 2.4 起已弃用。有关 PyTorch 自定义操作符的最新指南,请参阅 PyTorch 自定义操作符。 PyTorch 1.0 版本引入了一种名为 TorchScript 的新编程模型。TorchScript 是 Python 编程语言的一个子集,可以被 TorchScript 编译器解析、编译和优化。此外,编译后…...

CellOracle|基因扰动研究基因功能|基因调控网络+虚拟干预

在gzh“生信小鹏”同步文章 论文来源: 发表期刊:Nature发表时间:2023年2月23日论文题目:Dissecting cell identity via network inference and in silico gene perturbation研究团队:Kenji Kamimoto 等,华盛顿大学医学院1. 研究背景与问题提出 细胞身份(Cell Identit…...

深入探索JVM字节码增强技术与调优实践

引言 Java虚拟机(JVM)是Java程序运行的基石,而字节码增强技术则是JVM生态中一项强大的工具。通过字节码增强,开发者可以在不修改源代码的情况下,动态地修改或增强类的行为。本文将深入探讨字节码增强技术的原理、常用工具,并结合JVM调优和排错实践,帮助开发者更好地理解…...

vue 中常用操作数组的方法

操作数组方法 记录一下自己常用到的操作数组的方法 1.forEach() 遍历数组 在回调函数中对原数组的每个成员进行修改&#xff08;不用 return&#xff09; 方法接收一个回调函数 回调函数接收两个参数 第一个是遍历的当前元素 第二个是元素的索引 const arr [{name: 张三},…...

envoy 源码分析

整体架构 Envoy 的架构如图所示: Envoy 中也可能有多个 Listener&#xff0c;每个 Listener 中可能会有多个 filter 组成了 chain。 Envoy 接收到请求后&#xff0c;会先走 FilterChain&#xff0c;通过各种 L3/L4/L7 Filter 对请求进行微处理&#xff0c;然后再路由到指定的集…...

c++基础知识--返回值优化

在 C 中&#xff0c;Named Return Value Optimization&#xff08;NRVO&#xff0c;具名返回值优化&#xff09; 是一种编译器优化技术&#xff0c;用于消除函数返回一个局部对象时的拷贝或移动操作。它是 返回值优化&#xff08;RVO&#xff09; 的一种更复杂的变体&#xff0…...

【第14节】windows sdk编程:进程与线程介绍

目录 一、进程与线程概述 1.1 进程查看 1.2 何为进程 1.3 进程的创建 1.4 进程创建实例 1.5 线程查看 1.6 何为线程 1.7 线程的创建 1.8 线程函数 1.9 线程实例 二、内核对象 2.1 何为内核对象 2.2 内核对象的公共特点 2.3 内核对象句柄 2.4 内核对象的跨进程访…...

实测 Gemini 2.0 Flash 图像生成:多模态 AI 的创作力边界

近日&#xff0c;Google 发布了 Gemini 2.0 Flash 的实验性图像生成功能&#xff08;Gemini 2.0 Flash (Image Generation) Experimental&#xff09;。我也第一时间体验了这一功能&#xff0c;再次感受到 AI 技术对传统图像处理工具的颠覆性冲击。 引言 Gemini 2.0 Flash 的…...

每日一题——买卖股票的最佳时机

买卖股票的最佳时机 问题描述示例示例 1示例 2 提示 问题分析难点分析 算法设计思路 代码实现复杂度分析测试用例测试用例 1测试用例 2测试用例 3 总结 问题描述 给定一个数组 prices&#xff0c;其中第 i 个元素 prices[i] 表示一支给定股票在第 i 天的价格。你可以选择某一天…...

以太坊节点间通信机制 DEVp2p 协议

文章目录 概要1. 协议概述2. 协议栈与关键技术3. RLPx 协议核心机制3.1 数据包结构3.2 加密握手流程 4. 核心子协议与消息类型4.1 基础控制消息4.2 以太坊子协议示例4.3 网络 ID 列表 5. 安全与防攻击机制6. 节点标识与声誉管理7. 对比其他区块链通信协议8. 总结 概要 1. 协议…...

YOLO+OpenCV强强联手:高精度跌倒检测技术实战解析

目录 关于摔倒检测 摔倒检测核心逻辑 摔倒检测:联合多种逻辑判断 原理详细解释 1. 导入必要的库 2. 定义函数和关键点连接关系 3. 筛选有效关键点并计算边界框 4. 计算人体上下半身中心点和角度 5. 绘制关键点和连接线 6. 绘制角度标注和检测跌倒 7. 返回处理后的图…...

HyperAD:学习弱监督音视频暴力检测在双曲空间中的方法

文章目录 速览摘要1. 引言2. 相关工作弱监督暴力检测双曲空间中的神经网络 3. 预备知识双曲几何切空间&#xff08;Tangent Space&#xff09;指数映射与对数映射&#xff08;Exponential and Logarithmic Maps&#xff09;3.1 双曲图卷积网络&#xff08;Hyperbolic Graph Con…...

网络协议抓取与分析(SSL Pinning突破)

1. 网络协议逆向基础 1.1 网络协议分析流程 graph TD A[抓包环境配置] --> B[流量捕获] B --> C{协议类型} C -->|HTTP| D[明文解析] C -->|HTTPS| E[SSL Pinning突破] D --> F[参数逆向] E --> F F --> G[协议重放与模拟] 1.1.1 关键分析目标…...

基于C#的以太网通讯实现:TcpClient异步通讯详解

基于C#的以太网通讯实现&#xff1a;TcpClient异步通讯详解 在现代工业控制和物联网应用中&#xff0c;以太网通讯是一种常见的数据传输方式。本文将介绍如何使用C#实现基于TCP协议的以太网通讯&#xff0c;并通过异步编程提高通讯效率。我们将使用TcpClient类来实现客户端与服…...

通过C#脚本更改材质球的参数

// 设置贴图Texture mTexture Resources.Load("myTexture", typeof(Texture )) as Texture;material.SetTexture("_MainTex", mTexture );// 设置整数material.SetInt("_Int", 1);// 设置浮点material.SetFloat("_Float", 0.1f);// 设…...

SpringBoot常用注解

SpringBoot常用注解 SpringBoot框架提供了丰富的注解&#xff0c;极大地简化了应用开发。本文将SpringBoot常用注解按功能分组&#xff0c;并提供详细说明和使用示例。 一、核心注解 1. SpringBootApplication 这是SpringBoot应用的核心注解&#xff0c;标记在主类上&#…...

Vim 编辑器复制文件所有内容

Vim 编辑器复制文件所有内容 在 Vim 的可视化模式下复制所有内容&#xff0c;可以通过以下步骤完成&#xff1a; 方法 1&#xff1a;可视化模式全选复制 进入可视化模式 按下 V&#xff08;大写 V&#xff09;进入 行可视化模式。 全选内容 依次按下 gg&#xff08;跳转到文件…...

MySQL 安全传输

Doris 开启 SSL 功能需要配置 CA 密钥证书和 Server 端密钥证书&#xff0c;如需开启双向认证&#xff0c;还需生成 Client 端密钥证书&#xff1a; 默认的 CA 密钥证书文件位于Doris/fe/mysql_ssl_default_certificate/ca_certificate.p12&#xff0c;默认密码为doris&#xf…...

【速览】数据库

一、课程性质和特点 数据库系统原理是高等教育自学考试计算机信息管理专业(独立本科段)、计算机网络专业(独立本科段)、计算机及应用专业(独立本科段)、计算机通信工程专业(独立本科段)考试计划的一门专业基础课。本课程的设置目的是为了使应考者掌握数据库系统的基本原理、方法…...

MySQL 中利用 mysql.help_topic 实现行转列的深入剖析

MySQL 中利用 mysql.help_topic 实现行转列的深入剖析 在数据库操作中&#xff0c;我们常常会遇到数据格式转换的需求。其中&#xff0c;行转列是一种常见的数据处理任务&#xff0c;它能将数据从一种便于存储的行结构&#xff0c;转换为更便于分析和展示的列结构。在 MySQL 数…...

学习使用smartengine

1、开源地址 smartengine的地址 GitCode - 全球开发者的开源社区,开源代码托管平台 2、如何基于这个开源的框架实现自己的业务定制 参考一些文章&#xff1a; 探索BPMN—工作流技术的理论与实践&#xff5c;得物技术...

鸿蒙保姆级教学

鸿蒙&#xff08;HarmonyOS&#xff09;是华为推出的一款面向全场景的分布式操作系统&#xff0c;支持手机、平板、智能穿戴、智能家居、车载设备等多种设备。鸿蒙系统的核心特点是分布式架构、一次开发多端部署和高性能。以下是从入门到大神级别的鸿蒙开发深度分析&#xff0c…...

HW华为流程管理体系精髓提炼华为流程运营体系(124页PPT)(文末有下载方式)

资料解读&#xff1a;HW华为流程管理体系精髓提炼华为流程运营体系&#xff08;124页PPT&#xff09; 详细资料请看本解读文章的最后内容。 华为作为全球领先的科技公司&#xff0c;其流程管理体系的构建与运营是其成功的关键之一。本文将从华为流程管理体系的核心理念、构建…...

What a code!

要在前后两个图表之间连接对应的坐标轴刻度点&#xff0c;可以通过在父部件中绘制线条来实现。以下是具体步骤和代码实现&#xff1a; 步骤说明 重写paintEvent函数&#xff1a;在Bigraph的paintEvent中绘制连接线。获取刻度值列表&#xff1a;根据每个坐标轴的最小值、最大值…...

Qt开发中的常见问题与解决方案

目录 1.Qt中大资源文件的处理 2.中文URL编码问题 3.编译器类型、版本与操作系统的判断 4.Qt版本与构建套件位数的判断 5.QWidget样式表不起作用的解决方案 6.动态改变弹簧的拉伸策略 7.文件操作的性能优化 8.自定义心跳包与TCP保活机制 9.Qt平台插件加载失败问题 10.…...

蓝桥杯嵌入式赛道复习笔记3(lcd与led引脚冲突问题)

直接上干货 1.在初始化lcd之前要关闭锁存器 切记一定要开启PD2的引脚&#xff0c;否则白搭 2.在用到的lcd函数要加 uint16_t temp GPIOC->ODR;GPIOC->ODR temp;例如...

【cf】交换

交换数组中元素&#xff0c;逆序对数1&#xff0c;所以逆序对奇偶性发生改变 D. Swap Dilemma https://www.cnblogs.com/pure4knowledge/p/18292578这个写的太好了 任意交换两个数&#xff0c;会使序列的逆序对数加减一个奇数。 所以如果两个序列&#xff0c;初始逆序对数的奇…...

anythingLLM之stream-chat传参

1、 接口地址 /v1/workspace/{slug}/stream-chat POST请求 {"message": "根据以下事件信息找出今天发生的事件有哪几个[{\"事件所在桩号\":\"K1045900\",\"事件发生位置&#xff08;经纬度值&#xff09;\":\"114.149…...

友思特应用 | 行业首创:基于深度学习视觉平台的AI驱动轮胎检测自动化

导读 全球领先的轮胎制造商 NEXEN TIRE 在其轮胎生产检测过程中使用了基于友思特伙伴Neurocle开发的AI深度学习视觉平台&#xff0c;实现缺陷检测率高达99.96%&#xff0c;是该行业首个使用AI平台技术推动缺陷检测自动化流程的企业。 将AI应用从轮胎开发扩展到制造过程 2024年…...

Python 变量的定义与使用:从基础到高级

Python 变量的定义与使用:从基础到高级 在 Python 中,变量是程序中最基本的概念之一。变量用于存储数据,并在程序运行过程中随时访问和修改这些数据。理解变量的定义和使用是学习 Python 编程的第一步。 1. 变量的定义 1.1 什么是变量? 变量是程序中用于存储数据的容器。…...

Linux 系统性能调优

概述 在日常运维和架构优化中&#xff0c;Linux 性能调优是提高系统稳定性和运行效率的重要手段。本文结合工作经验&#xff0c;总结了 Linux 服务器常见的优化技巧&#xff0c;涵盖 CPU、内存、磁盘 I/O、网络等多个方面&#xff0c;帮助大家在不同场景下快速定位和优化系统性…...

蓝桥杯备考:奶牛晒衣服

这道题第一眼想用贪心做&#xff0c;1 2 3 我们可以让最多的3用烘干机1秒就能完成&#xff0c;那么是不是我们每次都给湿度最大的衣服用烘干机呢&#xff1f;我们试试哈&#xff0c;比如[5,8]&#xff0c;每秒晒干1我们给8衣服一直用烘干机是需要4秒的&#xff0c;4秒后8这个…...

英伟达“AI 超级碗”开幕

Nvidia的AI和机器人技术进展 2025年03月19日 | AI日报 ![](https://i-blog.csdnimg.cn/direct/e7838b88f17f40c9a435f6dc48d26c59.jpeg#pic_center) 欢迎各位人工智能爱好者。 Nvidia的CEO Jensen Huang刚刚拉开了他的“AI超级碗”&#xff0c;并发表了关于该公司最新芯片、…...

Java使用FFmpegFrameGrabber进行视频拆帧,结合Thumbnails压缩图片保存到文件夹

引入依赖 <dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.17</version></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ja…...

KVM安全模块生产环境配置与优化指南

KVM安全模块生产环境配置与优化指南 一、引言 在当今复杂多变的网络安全环境下&#xff0c;生产环境中KVM&#xff08;Kernel-based Virtual Machine&#xff09;的安全配置显得尤为重要。本指南旨在详细阐述KVM安全模块的配置方法&#xff0c;结合强制访问控制&#xff08;M…...

如何设计一个 RPC 框架?需要考虑哪些点?

设计一个完整的 RPC 框架需要覆盖以下核心模块及关键技术点&#xff1a; 一、核心架构模块 模块功能与实现要点服务注册与发现使用 Zookeeper/Nacos 等实现服务地址动态注册与订阅&#xff0c;支持心跳检测和节点变更通知网络通信层基于 Netty 或 gRPC 的 HTTP/2 实现异步非阻…...

dify+deepseek联网搜索:免费开源搜索引擎Searxng使用(让你的大模型也拥有联网的功能)

docker安装SearXng 项目地址:https://github.com/searxng/searxng-docker 第一步 git clone下来 git clone https://github.com/searxng/searxng-docker.git第二步 进入 searxng-docker目录中修改docker-compose.yaml(直接复制粘贴) cd searxng-dockerdocker-compose.yaml …...

主流的Java生态下权限管理框架

在当今国内互联网行业中&#xff0c;主流的Java生态下权限管理框架主要分为三类&#xff1a; 通用权限框架&#xff08;含认证和权限&#xff09;权限细粒度控制框架&#xff08;专注资源访问&#xff09;企业级安全认证和权限框架&#xff08;更完善的安全功能&#xff09; &…...