【python】速通笔记
Python学习路径 - 从零基础到入门
环境搭建
-
安装Python
- Windows: 从官网下载安装包 https://www.python.org/downloads/
- Mac/Linux: 通常已预装,可通过终端输入
python3 --version
检查
-
配置开发环境
- 推荐使用VS Code或PyCharm作为代码编辑器
- 安装Python扩展插件
- 创建第一个Python文件
hello.py
# hello.py print("Hello, Python!")
- 运行程序: 在终端输入
python3 hello.py
基础语法
-
变量与数据类型
- 数字类型
# 整数 age = 20 # 浮点数 price = 3.99
- 字符串
name = "Alice" greeting = 'Hello, World!'
- 布尔值
is_student = True is_teacher = False
- 数字类型
-
基本运算
# 算术运算 print(10 + 3) # 13 print(10 - 3) # 7 print(10 * 3) # 30 print(10 / 3) # 3.333...# 字符串拼接 first_name = "John" last_name = "Doe" full_name = first_name + " " + last_name print(full_name) # John Doe
-
练习题目
- 练习1: 计算两个数的和
num1 = 5 num2 = 7 # 计算并打印它们的和
- 练习2: 打印个人信息
name = "你的名字" age = 你的年龄 # 打印"我叫XX,今年XX岁"
- 练习1: 计算两个数的和
基础语法
-
变量与数据类型
- 数字、字符串、布尔值
# 示例 num = 42 name = "Python" is_true = True
- 列表、元组、字典、集合
# 示例 my_list = [1, 2, 3] my_tuple = (1, 2, 3) my_dict = {"name": "Alice", "age": 25} my_set = {1, 2, 3}
- 数字、字符串、布尔值
-
运算符
- 算术运算符
# 示例 print(10 + 3) # 13 print(10 - 3) # 7 print(10 * 3) # 30 print(10 / 3) # 3.333... print(10 // 3) # 3 (整除) print(10 % 3) # 1 (取余) print(10 ** 3) # 1000 (幂)
- 比较运算符
# 示例 print(10 > 3) # True print(10 < 3) # False print(10 == 3) # False print(10 != 3) # True
- 逻辑运算符
# 示例 print(True and False) # False print(True or False) # True print(not True) # False
- 算术运算符
-
控制结构
- 条件语句(if/elif/else)
# 示例 age = 18 if age < 13:print("儿童") elif age < 18:print("青少年") else:print("成人")
- 循环(for/while)
# for循环示例 for i in range(5):print(i)# while循环示例 count = 0 while count < 5:print(count)count += 1
- break和continue
# 示例 for i in range(10):if i == 5:break # 退出循环if i % 2 == 0:continue # 跳过本次循环print(i)
- 条件语句(if/elif/else)
函数编程
- 函数定义与调用
# 示例 def greet(name):"""打印问候语"""print(f"Hello, {name}!")greet("Alice") # 调用函数
- 参数传递
- 位置参数
# 示例 def add(a, b):return a + bprint(add(3, 5)) # 8
- 关键字参数
# 示例 def greet(name, message):print(f"{message}, {name}!")greet(message="Hi", name="Bob") # Hi, Bob!
- 默认参数
# 示例 def greet(name, message="Hello"):print(f"{message}, {name}!")greet("Alice") # Hello, Alice! greet("Bob", "Hi") # Hi, Bob!
- 可变参数(*args, **kwargs)
# 示例 def print_args(*args):for arg in args:print(arg)print_args(1, 2, 3) # 打印1, 2, 3def print_kwargs(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_kwargs(name="Alice", age=25) # 打印name: Alice, age: 25
- 位置参数
- lambda表达式
# 示例 square = lambda x: x ** 2 print(square(5)) # 25# 与map/filter一起使用 numbers = [1, 2, 3, 4] squared = list(map(lambda x: x**2, numbers)) print(squared) # [1, 4, 9, 16]
- 作用域与闭包
# 作用域示例 x = 10 # 全局变量def foo():y = 20 # 局部变量print(x + y) # 可以访问全局变量foo() # 30# 闭包示例 def outer_func(x):def inner_func(y):return x + yreturn inner_funcclosure = outer_func(10) print(closure(5)) # 15
面向对象编程
- 类与对象
# 示例 class Dog:# 类属性species = "Canis familiaris"# 初始化方法def __init__(self, name, age):self.name = name # 实例属性self.age = age# 实例方法def description(self):return f"{self.name} is {self.age} years old"# 实例方法def speak(self, sound):return f"{self.name} says {sound}"# 创建对象 my_dog = Dog("Buddy", 5) print(my_dog.description()) # Buddy is 5 years old print(my_dog.speak("Woof")) # Buddy says Woof
- 继承与多态
# 继承示例 class Bulldog(Dog):def speak(self, sound="Woof"):return super().speak(sound)# 多态示例 def animal_speak(animal):print(animal.speak())bulldog = Bulldog("Max", 3) print(bulldog.speak()) # Max says Woof
- 魔术方法
# __str__ 示例 class Dog:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Dog(name='{self.name}', age={self.age})"my_dog = Dog("Buddy", 5) print(my_dog) # Dog(name='Buddy', age=5)# __add__ 示例 class Vector:def __init__(self, x, y):self.x = xself.y = ydef __add__(self, other):return Vector(self.x + other.x, self.y + other.y)v1 = Vector(1, 2) v2 = Vector(3, 4) v3 = v1 + v2 print(v3.x, v3.y) # 4 6
- 装饰器
# 函数装饰器示例 def my_decorator(func):def wrapper():print("装饰器: 调用函数前")func()print("装饰器: 调用函数后")return wrapper@my_decorator def say_hello():print("Hello!")say_hello() # 输出: # 装饰器: 调用函数前 # Hello! # 装饰器: 调用函数后# 类装饰器示例 def class_decorator(cls):class Wrapper:def __init__(self, *args, **kwargs):self.wrapped = cls(*args, **kwargs)def __getattr__(self, name):return getattr(self.wrapped, name)return Wrapper@class_decorator class MyClass:def __init__(self, value):self.value = valuedef show(self):print(f"Value: {self.value}")obj = MyClass(42) obj.show() # Value: 42
高级特性
-
生成器与迭代器
# 生成器示例 def count_up_to(max):count = 1while count <= max:yield countcount += 1counter = count_up_to(5) print(next(counter)) # 1 print(next(counter)) # 2# 迭代器示例 my_list = [1, 2, 3] my_iter = iter(my_list) print(next(my_iter)) # 1 print(next(my_iter)) # 2
-
装饰器高级用法
# 带参数的装饰器 def repeat(num_times):def decorator_repeat(func):def wrapper(*args, **kwargs):for _ in range(num_times):result = func(*args, **kwargs)return resultreturn wrapperreturn decorator_repeat@repeat(num_times=3) def greet(name):print(f"Hello {name}")greet("Alice")# 类装饰器 class Timer:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):import timestart = time.time()result = self.func(*args, **kwargs)end = time.time()print(f"执行时间: {end - start:.2f}秒")return result@Timer def long_running_func():time.sleep(2)long_running_func()
-
元类编程
# 元类示例 class Meta(type):def __new__(cls, name, bases, namespace):namespace['version'] = '1.0'return super().__new__(cls, name, bases, namespace)class MyClass(metaclass=Meta):passprint(MyClass.version) # 1.0# 动态创建类 def make_class(name):return type(name, (), {'x': 10})DynamicClass = make_class('DynamicClass') print(DynamicClass().x) # 10
-
上下文管理器
# with语句示例 with open('file.txt', 'w') as f:f.write('Hello, world!')# 自定义上下文管理器 class MyContextManager:def __enter__(self):print("进入上下文")return selfdef __exit__(self, exc_type, exc_val, exc_tb):print("退出上下文")with MyContextManager() as cm:print("在上下文中")
-
多线程与多进程
# 多线程示例 import threadingdef worker():print("线程执行")threads = [] for i in range(5):t = threading.Thread(target=worker)threads.append(t)t.start()for t in threads:t.join()# 多进程示例 from multiprocessing import Processdef worker():print("进程执行")processes = [] for i in range(5):p = Process(target=worker)processes.append(p)p.start()for p in processes:p.join()
-
异步编程(asyncio)
import asyncioasync def hello():print("Hello")await asyncio.sleep(1)print("World")async def main():await asyncio.gather(hello(), hello(), hello())asyncio.run(main())
常用标准库
-
os/sys - 系统操作
# os示例 import os print(os.getcwd()) # 获取当前工作目录 os.mkdir('new_dir') # 创建目录# sys示例 import sys print(sys.argv) # 命令行参数 sys.exit(0) # 退出程序
-
pathlib - 现代化路径操作
from pathlib import Path# 创建路径对象 p = Path('.')# 遍历目录 for f in p.glob('*.py'):print(f.name)# 路径拼接 new_file = p / 'subdir' / 'new_file.txt' new_file.write_text('Hello, Pathlib!')
-
subprocess - 运行外部命令
import subprocess# 运行简单命令 result = subprocess.run(['ls', '-l'], capture_output=True, text=True) print(result.stdout)# 管道操作 ps = subprocess.Popen(['ps', '-aux'], stdout=subprocess.PIPE) grep = subprocess.Popen(['grep', 'python'], stdin=ps.stdout, stdout=subprocess.PIPE) ps.stdout.close() output = grep.communicate()[0] print(output.decode())
-
re - 正则表达式
import re# 匹配示例 pattern = r'\b\w+\b' text = 'Hello, world!' matches = re.findall(pattern, text) print(matches) # ['Hello', 'world']# 替换示例 new_text = re.sub(r'world', 'Python', text) print(new_text) # Hello, Python!
-
datetime - 日期时间
from datetime import datetime, timedelta# 当前时间 now = datetime.now() print(now.strftime('%Y-%m-%d %H:%M:%S')) # 格式化输出# 时间计算 tomorrow = now + timedelta(days=1) print(tomorrow)
-
json - JSON处理
import json# 序列化 data = {'name': 'Alice', 'age': 25} json_str = json.dumps(data) print(json_str) # {"name": "Alice", "age": 25}# 反序列化 loaded_data = json.loads(json_str) print(loaded_data['name']) # Alice
-
collections - 高级数据结构
from collections import defaultdict, Counter, namedtuple# defaultdict示例 d = defaultdict(int) d['a'] += 1 print(d['a']) # 1# Counter示例 cnt = Counter('abracadabra') print(cnt.most_common(3)) # [('a', 5), ('b', 2), ('r', 2)]# namedtuple示例 Point = namedtuple('Point', ['x', 'y']) p = Point(11, y=22) print(p.x + p.y) # 33
学习资源
- 官方文档: https://docs.python.org/3/
- 推荐书籍:
- 《Python编程:从入门到实践》- 适合初学者
- 《流畅的Python》- 适合进阶学习
- 《Python Cookbook》- 实用技巧
- 练习平台:
- LeetCode: 算法练习
- Codewars: 编程挑战
- HackerRank: 综合练习
- 在线课程:
- Coursera: Python专项课程
- Udemy: 实用Python项目
- 社区资源:
- Stack Overflow: 问题解答
- GitHub: 开源项目学习
- Python官方论坛
进阶主题
-
并发编程
# 线程池示例 from concurrent.futures import ThreadPoolExecutordef task(n):return n * nwith ThreadPoolExecutor(max_workers=4) as executor:results = executor.map(task, range(10))print(list(results))
-
性能优化
# 使用timeit测量代码执行时间 import timeitsetup = """ def sum_range(n):return sum(range(n)) """print(timeit.timeit('sum_range(1000)', setup=setup, number=1000))
-
设计模式
# 单例模式实现 class Singleton:_instance = Nonedef __new__(cls):if cls._instance is None:cls._instance = super().__new__(cls)return cls._instances1 = Singleton() s2 = Singleton() print(s1 is s2) # True
实战项目
1. 电商数据分析系统
需求分析:
- 从CSV文件读取销售数据
- 计算每日/每月销售额
- 生成可视化报表
实现步骤:
import pandas as pd
import matplotlib.pyplot as pltdef sales_analysis():# 1. 读取数据df = pd.read_csv('sales.csv')# 2. 数据处理df['date'] = pd.to_datetime(df['date'])daily_sales = df.groupby(df['date'].dt.date)['amount'].sum()# 3. 可视化plt.figure(figsize=(10,6))daily_sales.plot(kind='bar')plt.title('每日销售额')plt.savefig('daily_sales.png')
调试技巧:
- 使用
df.head()
检查数据读取是否正确 - 打印中间结果验证数据处理逻辑
2. 天气查询应用
需求分析:
- 调用天气API获取实时数据
- 支持多城市查询
- 缓存历史查询记录
实现步骤:
import requests
import jsonclass WeatherApp:def __init__(self, api_key):self.api_key = api_keyself.history = {}def get_weather(self, city):url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={self.api_key}"response = requests.get(url)data = json.loads(response.text)self.history[city] = datareturn data
调试技巧:
- 检查API响应状态码
- 使用try-except处理网络异常
3. 机器学习房价预测
需求分析:
- 使用线性回归模型
- 评估模型性能
- 部署预测接口
实现步骤:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split# 加载数据
data = pd.read_csv('housing.csv')
X = data[['size', 'rooms']]
y = data['price']# 训练模型
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LinearRegression()
model.fit(X_train, y_train)# 评估
score = model.score(X_test, y_test)
print(f"模型R2分数: {score:.2f}")
调试技巧:
- 检查数据分布
- 尝试特征工程提高模型性能
1. 电商数据分析系统
2. Web爬虫应用
需求分析:
- 使用requests和BeautifulSoup抓取网页数据
- 提取特定信息并存储到CSV文件
- 实现分页爬取和异常处理
实现步骤:
import requests
from bs4 import BeautifulSoup
import csvheaders = {'User-Agent': 'Mozilla/5.0'}def scrape_page(url):try:response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, 'html.parser')# 提取数据示例items = []for item in soup.select('.product-item'):name = item.select_one('.name').text.strip()price = item.select_one('.price').text.strip()items.append({'name': name, 'price': price})return itemsexcept Exception as e:print(f"爬取失败: {e}")return []# 主程序
base_url = "https://example.com/products?page="
all_items = []for page in range(1, 6): # 爬取5页items = scrape_page(base_url + str(page))all_items.extend(items)print(f"已爬取第{page}页,共{len(items)}条数据")# 保存到CSV
with open('products.csv', 'w', newline='') as f:writer = csv.DictWriter(f, fieldnames=['name', 'price'])writer.writeheader()writer.writerows(all_items)
调试技巧:
- 使用print输出中间结果检查数据提取是否正确
- 设置time.sleep避免请求过于频繁
- 使用try-except捕获网络异常
3. 自动化测试框架
需求分析:
- 支持Web UI自动化测试
- 生成测试报告
- 支持并行测试
实现步骤:
from selenium import webdriver
import unittestclass TestWebsite(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.driver.implicitly_wait(10)def test_homepage(self):self.driver.get("http://example.com")self.assertIn("Example Domain", self.driver.title)def test_search(self):self.driver.get("http://example.com")search_box = self.driver.find_element_by_name("q")search_box.send_keys("Python")search_box.submit()self.assertIn("Python", self.driver.page_source)@classmethoddef tearDownClass(cls):cls.driver.quit()if __name__ == "__main__":unittest.main()
调试技巧:
- 使用driver.save_screenshot()保存错误截图
- 增加显式等待避免元素未加载问题
- 使用HTMLTestRunner生成美观的测试报告
1. 电商数据分析系统
需求分析:
- 从CSV文件读取销售数据
- 计算每日/每月销售额
- 生成可视化报表
实现步骤:
import pandas as pd
import matplotlib.pyplot as pltdef sales_analysis():# 1. 读取数据df = pd.read_csv('sales.csv')# 2. 数据处理df['date'] = pd.to_datetime(df['date'])daily_sales = df.groupby(df['date'].dt.date)['amount'].sum()# 3. 可视化plt.figure(figsize=(10,6))daily_sales.plot(kind='bar')plt.title('每日销售额')plt.savefig('daily_sales.png')
调试技巧:
- 使用
df.head()
检查数据读取是否正确 - 打印中间结果验证数据处理逻辑
2. 天气查询应用
需求分析:
- 调用天气API获取实时数据
- 支持多城市查询
- 缓存历史查询记录
实现步骤:
import requests
import jsonclass WeatherApp:def __init__(self, api_key):self.api_key = api_keyself.history = {}def get_weather(self, city):url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={self.api_key}"response = requests.get(url)data = json.loads(response.text)self.history[city] = datareturn data
调试技巧:
- 检查API响应状态码
- 使用try-except处理网络异常
3. 自动化测试框架
需求分析:
- 支持Web UI自动化测试
- 生成测试报告
- 支持并行测试
实现步骤:
from selenium import webdriver
import unittestclass TestWebsite(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()def test_homepage(self):self.driver.get("http://example.com")self.assertIn("Example", self.driver.title)@classmethoddef tearDownClass(cls):cls.driver.quit()
调试技巧:
- 添加显式等待处理元素加载
- 使用Page Object模式提高可维护性
4. 机器学习房价预测
需求分析:
- 使用线性回归模型
- 评估模型性能
- 部署预测接口
实现步骤:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split# 加载数据
data = pd.read_csv('housing.csv')
X = data[['size', 'rooms']]
y = data['price']# 训练模型
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = LinearRegression()
model.fit(X_train, y_train)# 评估
score = model.score(X_test, y_test)
print(f"模型R2分数: {score:.2f}")
调试技巧:
- 检查数据分布
- 尝试特征工程提高模型性能
5. 区块链简易实现
需求分析:
- 实现区块链数据结构
- 支持交易验证
- 工作量证明机制
实现步骤:
import hashlib
import json
from time import timeclass Block:def __init__(self, index, transactions, timestamp, previous_hash):self.index = indexself.transactions = transactionsself.timestamp = timestampself.previous_hash = previous_hashself.hash = self.calculate_hash()def calculate_hash(self):block_string = json.dumps(self.__dict__, sort_keys=True)return hashlib.sha256(block_string.encode()).hexdigest()
调试技巧:
- 打印区块哈希验证计算逻辑
- 使用单元测试验证区块链完整性
- 计算器程序
# 简单计算器实现
import operatordef calculator():operations = {'+': operator.add,'-': operator.sub,'*': operator.mul,'/': operator.truediv}num1 = float(input("输入第一个数字: "))op = input("选择操作(+ - * /): ")num2 = float(input("输入第二个数字: "))result = operations[op](num1, num2)print(f"结果: {result}")calculator()
- 文件管理系统
# 基础文件管理
import osdef file_manager():while True:print("\n文件管理系统")print("1. 列出文件")print("2. 创建文件")print("3. 删除文件")print("4. 退出")choice = input("选择操作: ")if choice == '1':files = os.listdir('.')print("当前目录文件:")for f in files:print(f)elif choice == '2':filename = input("输入文件名: ")with open(filename, 'w') as f:f.write("")print(f"文件 {filename} 已创建")elif choice == '3':filename = input("输入要删除的文件名: ")if os.path.exists(filename):os.remove(filename)print(f"文件 {filename} 已删除")else:print("文件不存在")elif choice == '4':breakelse:print("无效选择")file_manager()
- 网络爬虫
# 简单网页爬虫
import requests
from bs4 import BeautifulSoupdef simple_crawler(url):try:response = requests.get(url)soup = BeautifulSoup(response.text, 'html.parser')print(f"网页标题: {soup.title.string}")print("所有链接:")for link in soup.find_all('a'):print(link.get('href'))except Exception as e:print(f"错误: {e}")simple_crawler('https://www.python.org')
- Web应用(Flask/Django)
# Flask示例
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello():return "Hello, Python!"if __name__ == '__main__':app.run()
- 数据可视化
# 使用matplotlib绘图
import matplotlib.pyplot as pltdef plot_example():x = [1, 2, 3, 4, 5]y = [2, 4, 6, 8, 10]plt.plot(x, y)plt.title("简单折线图")plt.xlabel("X轴")plt.ylabel("Y轴")plt.show()plot_example()
项目开发建议
- 从简单项目开始:先完成基础功能,再逐步添加复杂特性
- 版本控制:使用Git管理代码版本
- 文档编写:为每个项目编写README说明
- 测试驱动:先写测试用例再开发功能
- 代码重构:定期优化代码结构和性能
每天学习2-3小时,坚持项目实践,1个月后你将掌握Python实际开发能力!
建议学习路径:
- 第1周: 基础语法和函数
- 第2周: 面向对象编程
- 第3周: 标准库和项目实践
- 第4周: 高级特性和框架学习
常见问题
-
Python版本选择
- 推荐使用Python 3.8+版本,新特性更丰富且兼容性好
- 使用
python --version
检查当前版本
-
虚拟环境使用
# 创建虚拟环境 python -m venv myenv# 激活虚拟环境(Linux/Mac) source myenv/bin/activate# 安装包到虚拟环境 pip install package_name# 退出虚拟环境 deactivate
-
性能优化技巧
- 使用列表推导式替代循环
# 传统方式 squares = [] for x in range(10):squares.append(x**2)# 列表推导式 squares = [x**2 for x in range(10)]
- 使用生成器节省内存
# 生成器表达式 gen = (x**2 for x in range(1000000))# 生成器函数 def generate_squares(n):for x in range(n):yield x**2
-
模块导入错误
try:import requests except ImportError:print("请先安装requests模块: pip install requests")
-
编码问题
- 在文件开头添加
# -*- coding: utf-8 -*-
解决中文编码问题 - 使用
.encode('utf-8')
和.decode('utf-8')
处理字符串编码
- 在文件开头添加
-
性能优化
- 使用
timeit
模块测试代码执行时间 - 避免不必要的循环和递归
- 使用
调试技巧
-
print调试
print(f"变量值: {variable}") # 简单有效
-
日志记录进阶
import logging# 配置日志 logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',filename='app.log' )# 不同级别日志 logging.debug('调试信息') logging.info('普通信息') logging.warning('警告信息') logging.error('错误信息') logging.critical('严重错误')
-
性能分析
import cProfiledef slow_function():total = 0for i in range(1000000):total += ireturn total# 运行性能分析 cProfile.run('slow_function()')
-
内存分析
import tracemalloctracemalloc.start()# 你的代码 data = [i for i in range(1000000)]snapshot = tracemalloc.take_snapshot() top_stats = snapshot.statistics('lineno')for stat in top_stats[:10]:print(stat)
-
pdb调试器
import pdb; pdb.set_trace() # 设置断点
-
日志记录
import logging logging.basicConfig(level=logging.DEBUG) logging.debug('调试信息')
-
IDE调试工具
- 使用VS Code/PyCharm等IDE的调试功能
- 设置断点、单步执行、查看变量值
-
异常处理
try:# 可能出错的代码 except Exception as e:print(f"错误类型: {type(e).__name__}")print(f"错误详情: {str(e)}")
相关文章:
【python】速通笔记
Python学习路径 - 从零基础到入门 环境搭建 安装Python Windows: 从官网下载安装包 https://www.python.org/downloads/Mac/Linux: 通常已预装,可通过终端输入python3 --version检查 配置开发环境 推荐使用VS Code或PyCharm作为代码编辑器安装Python扩展插件创建第…...
简易Minecraft python
废话多说 以下是一个基于Python和ModernGL的简化版3D沙盒游戏框架。由于代码长度限制,这里提供一个核心实现(约500行),您可以通过添加更多功能和内容来扩展它: python import pygame import moderngl import numpy a…...
Linux信号处理解析:从入门到实战
Linux信号处理全解析:从入门到实战 一、初识Linux信号:系统级的"紧急电话" 信号是什么? 信号是Linux系统中进程间通信的"紧急通知",如同现实中的交通信号灯。当用户按下CtrlC(产生SIGINT信号&…...
2025-04-04 Unity 网络基础5——TCP分包与黏包
文章目录 1 分包与黏包2 解决方案2.1 数据接口2.2 定义消息2.3 NetManager2.4 分包、黏包处理 3 测试3.1 服务端3.2 客户端3.3 直接发送3.4 黏包发送3.5 分包发送3.6 分包、黏包发送3.7 其他 1 分包与黏包 分包、黏包指在网络通信中由于各种因素(网络环境、API …...
Ubuntu 安装 JMeter:为你的服务器配置做好准备
Apache JMeter 是一个开源的负载测试工具,可以用于测试静态和动态资源,确定服务器的性能和稳定性。在本文中,我们将讨论如何下载和安装 JMeter。 安装 Java(已安装 Java 的此步骤可跳过) 要下载 Java,请遵…...
swift-oc和swift block和代理
一、闭包或block 1.1、swift 闭包表达式作为参数的形式 一、闭包的定义 func exec(v1: Int, v2: Int, fn: (Int, Int) -> Int) { print(fn(v1, v2)) } 二、调用 exec(v1: 10, v2: 20, fn: { (v1: Int, v2: Int) -> Int in return v1 v2 }) 1.2、swift 闭包表达式作为…...
【数据结构】_队列
hello 友友们~ 今天我们要开始学习队列啦~ 话不多说,让我们开始吧!GO! 1.队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表。 队列具有先进先出FIFO(First In First Out) 入队列&#x…...
【软考中级软件设计师】数据表示:原码、反码、补码、移码、浮点数
数据表示 一、数据表示1、整数的表示(1) 原码(2) 反码(3) 补码:(4) 移码 2、浮点数的表示(IEEE 754标准) 一、数据表示 计算机使用的是二进制,也就是0和1的组合。所有的数据,无论是数字、文字还是图片、声音ÿ…...
Linux(十二)信号
今天我们就要来一起学习信号啦!!!还记得小编在之前的文章中说过的ctrlc吗?之前小编没有详细介绍过,现在我们就要来学习啦!!! 一、信号的基本介绍 首先,小编带领大家先一…...
迪杰斯特拉+二分+优先队列+拓扑+堆优化(奶牛航线Cowroute、架设电话线dd、路障Roadblocks、奶牛交通Traffic)
原文地址 https://fmcraft.top/index.php/Programming/2025040402.html 主要算法 迪杰斯特拉Dijkstra 题目列表 P1:奶牛航线Cowroute 题目描述 题目描述 Bessie已经厌倦了农场冬天的寒冷气候,她决定坐飞机去更温暖的地方去度假。不幸的是…...
【数据结构】树的介绍
目录 一、树1.1什么是树?1.2 树的概念与结构1.3树的相关术语1.4 树形结构实际运用场景 二、二叉树2.1 概念与结构2.2 特殊的二叉树2.2.1 满二叉树2.2.2 完全二叉树 个人主页,点击这里~ 数据结构专栏,点击这里~ 一、树 1.1什么是树࿱…...
【CF】Day24——Codeforces Round 994 (Div. 2) D
D. Shift Esc 题目: 思路: 典DP的变种 如果这一题没有这个变换操作,那么是一个很典型的二维dp,每一个格子我们都选择上面和左边中的最小值即可 而这题由于可以变换,那我们就要考虑变换操作,首先一个显然…...
Python 字典
Python 字典 字典的介绍 字典不仅可以保存值,还能对值进行描述使用大括号来表示一个字典,不仅有值 value ,还有值的描述 key字典里的数据都是以键值对 key-value 的形式来保留的key 和 value 之间用冒号 : 来连接多个键值对之间用逗号 , 来…...
yolov12检测 聚类轨迹运动速度
目录 分割算法api版: 分割算法: yolo_kmean.py 优化版: 第1步,检测生成json 第2步骤聚类: 分割算法api版: import json import os from glob import globimport cv2 import imageio import numpy as np from scipy.ndimage import gaussian_filter1d from scipy.s…...
【Lua】pcall使用详解
目录 基本语法核心作用基础示例示例 1:捕获一个简单错误示例 2:调用不存在的函数 高级用法1. 传递多个参数和接收多个返回值2. 捕获带 error 主动抛出的错误3. 匿名函数与 pcall 使用场景注意事项总结 在 Lua 中,pcall(Protected …...
Floyd 算法 Java
图论算法实践:使用 Floyd 求任意两点最短路(Java 实现) 在图论算法中,Floyd-Warshall 算法是一个经典的动态规划算法,用于在一个加权图中寻找所有点对之间的最短路径。 场景描述 假设我们有一个包含 n 个点的无向图&…...
List结构之非实时榜单实战
像京东、淘宝等电商系统一般都会有热销的商品榜单,比如热销手机榜单,热销电脑榜单,这些都是非实时的榜单。为什么是非实时的呢?因为完全实时的计算和排序对于资源消耗较大,尤其是当涉及大量交易数据时。 一般来说&…...
OCR的备份与恢复
1.简介 在Oracle RAC环境中,ASM(Automatic Storage Management)管理的OCR(Oracle Cluster Registry)是集群的关键组件,存储集群配置和状态信息。 OCR的备份一般指物理备份,系统默认每4个小时自…...
算法思想之双指针(一)
欢迎拜访:雾里看山-CSDN博客 本篇主题:算法思想之双指针(一) 发布时间:2025.4.4 隶属专栏:算法 目录 双指针算法介绍对撞指针:快慢指针: 例题移动零题目链接题目描述算法思路代码实现 复写零题目链接题目描…...
Pascal语言的设备管理
Pascal语言的设备管理 引言 在计算机科学中,设备管理是操作系统的重要组成部分之一。设备管理指的是操作系统对外部设备的控制和协调,实现对各种设备的有效利用。Pascal语言作为一种教育性编程语言,虽然最初并不是为了直接进行设备管理而设…...
【MySQL】DML:添加-修改-删除数据 (数据操作语言) 学习笔记
DML (数据操作语言) 学习笔记 1. 数据表结构 首先创建员工表 employee: CREATE TABLE employee (id int unsigned NOT NULL AUTO_INCREMENT COMMENT ID,username varchar(20) NOT NULL COMMENT 用户名,password varchar(32) DEFAULT 123456 COMMENT 密码,name va…...
React编程高级主题:背压(Backpressure)处理
文章目录 **5.1 背压(Backpressure)概述****5.1.1 缓冲(Buffer)****1. 基本概念****2. 缓冲的实现方式****3. 适用场景****4. 潜在问题** **5.1.2 丢弃(Drop)****1. 基本概念****2. 丢弃的实现方式****3. 适…...
Spring IoCDI
IoC容器 前⾯我们提到IoC控制反转, 就是将对象的控制权交给Spring的IOC容器 ,由IOC容器创建及管理对 象。 也就是bean的存储. 在类上⾯添加 RestController 和 Controller 注解, 就是把这个对象交给Spring管理 , Spring 框架启动时就会加载该类. 把对象…...
COBOL语言的数据库交互
COBOL语言的数据库交互 引言 随着信息技术的不断发展,数据库管理系统(DBMS)已经成为现代应用程序中不可或缺的组成部分。在众多编程语言中,COBOL(Common Business-Oriented Language)以其在商业应用中的稳…...
【C++11(中)】—— 我与C++的不解之缘(三十一)
一、可变参数模版 基本语法: C11支持可变参数模版,简单来说就是支持可变数量参数的函数模版或者类模版; 可变数目的参数被称为参数包,存在两种参数包:模版参数包(表示0个或者多个模版参数),函数参数包(表示…...
JavaScript学习19-事件类型之鼠标事件
1. 2. 3....
文件或目录损坏且无法读取:数据恢复的实战指南
在数字化时代,数据的重要性不言而喻。然而,在日常使用电脑、移动硬盘、U盘等存储设备时,我们难免会遇到“文件或目录损坏且无法读取”的提示。这一提示如同晴天霹雳,让无数用户心急如焚,尤其是当这些文件中存储着重要的…...
python爬虫:小程序逆向实战教程
根据我之前发表的文章,我们进行延伸实战https://blog.csdn.net/weixin_64809364/article/details/146981598?spm1001.2014.3001.5501 1. 想要爬取什么小程序,我们进行搜索 2. 找到我们vx小程序的文件地址,我们就可以进行破解 破解步骤强看…...
第二十节课:python实例五:身体质量指数BMI计算
python实例五:身体质量指数BMI计算 一、问题分析 BMI计算公式: BMI 体重(kg) / 身高(m)^2国际与国内标准对比 分类国际标准国内标准偏瘦<18.5<18.5正常18.5-2518.5-24偏胖25-3024-28肥胖≥30≥28 二、实现要点 输入处理 # 同时接收身高体重…...
八、重学C++—动态多态(运行期)
上一章节: 七、重学C—静态多态(编译期)-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146999362?spm1001.2014.3001.5502 本章节代码: cpp/dynamicPolymorphic.cpp CuiQingCheng/cppstudy - 码云 - 开源中…...
思维链 Chain-of-Thought(COT)
思维链 Chain-of-Thought(COT):思维链的启蒙 3. 思维链 Chain-of-Thought(COT)存在问题?2. 思维链 Chain-of-Thought(COT)是思路是什么?1. 什么是 思维链 Chain-of-Thoug…...
React框架的Fiber架构
以下是关于 Fiber 架构 的系统梳理: 一、Fiber 架构的出现背景 React 15 及之前的问题 同步递归渲染:虚拟DOM的diff过程不可中断,导致主线程长时间阻塞。掉帧问题:复杂组件树渲染时,用户交互无法及时响应。无法实现增量渲染:无法拆分任务优先级,无法利用浏览器空闲时间。…...
PCI与PCIe接口的通信架构是主从模式吗?
PCI(Peripheral Component Interconnect)总线在通信架构上本质是主从模式,但其具体实现和角色分配在不同版本(如传统PCI与PCI Express)中存在差异。以下是详细分析: 传统PCI总线的主从模式 (1) 基本架构 主…...
【2011】【论文笔记】THz保护文化遗产——
前言 类型 太赫兹 + 文化保护 太赫兹 + 文化保护 太赫兹+文化保护 期刊 I E E E T R A N S A C T I O N S O N T E R A H E R...
状态机思想编程练习
状态机实现LED流水灯 本次实验,我们将利用状态机的思想来进行Verilog编程实现一个LED流水灯,并通过Modelsim来进行模拟仿真,再到DE2-115开发板上进行验证。 首先进行主要代码的编写。 module led (input sys_clk,input sys_…...
三部门新政力推智能家居 居然智家数智化转型迎利好东风
2025年3月,工业和信息化部、教育部、市场监管总局联合印发《轻工业数字化转型实施方案》,明确提出重点培育智能家居、智能穿戴、智能骑行、智慧养老等消费端场景,深化人工智能技术在家电、家具等领域的应用,推动产业链供应链智能化…...
CCF GESP C++编程 七级认证真题 2025年3月
C 七级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 B A B C B B B A D D A C B B D 一、单选题 第 1 题 下列哪个选项是C中的关键字? A. function B. class C. method D. object 第 2 题 下面代码输出的是() int main()…...
【MySQL】navicat16 result字段识别不了
在mysql里面使用result字段 打印出来为空 之后换了个字段命名 使用outcome 成功能打印出来了。。 不知道是不是版本的问题...
【教学类-102-02】自制剪纸图案(留白边、沿线剪)02——Python+PS自动化添加虚线边框
背景需求: 01版本实现了对透明背景png图案边界线的扩展,黑线实线描边 【教学类-102-01】自制剪纸图案(留白边、沿线剪)01-CSDN博客文章浏览阅读974次,点赞15次,收藏7次。【教学类-102-01】自制剪纸图案(留白边、沿线剪)01https://blog.csdn.net/reasonsummer/article…...
CExercise_05_1函数_1.1素数(要对键盘录入的数据做参数校验)
题目: 编写函数实现以下功能: 键盘录入一个正整数,请判断它是否是一个素数,然后控制台输出对应的结果。要对键盘录入的数据做参数校验,素数是一个大于1的自然数,它仅能被1和自身整除。 关键点 分析…...
运算放大器(五)电压比较器
比较器在最常用的简单集成电路中排名第二,仅次于排名第一的运算放大器。 电压比较器是一种用来比较输入信号电压与参考电压大小,并将比较结果以高电平或低电平形式输出的一种信号处理电路,广泛应用于各种非正弦波的产生和变换电路中…...
蓝桥杯_PCF8591
目录 一 前言 二 引言 三 PCF8591介绍 (1)I2C通信 (2)原理图中的8591 四 代码层面 (1)根据题目所给的示范代码,实现ADC 1 为什么需要返回值,同时返回值是unsigned char&#x…...
Windows修改hosts文件让向日癸软件联网
Windows修改hosts文件让向日癸软件联网 前言一、查看向日葵软件使用的网址及IP1.清除dns记录2.打开向日葵软件并将dns记录导出txt 二、修改Windows服务器的hosts文件1.winx选择Windows PowerShell(管理员)2.在Windows PowerShell中输入如下内容:3.在hosts文件最后添…...
[MySQL初阶]MySQL数据类型
MySQL数据类型 1. 数据类型分类2. 数值类型2.1 tinyint类型2.2 bit类型2.3 float类型2.4 decimal类型3. 字符串类型3.1 char3.2 varchar3.3 日期和时间类型3.4 enum和set1. 数据类型分类 数据库中的类型决定了在存储位置中,占据的空间大小以及如何识别的问题。 2. 数值类型 2…...
JS用ES6和ES5分别实现:8字节长整数和字节数组的互转
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
【学Rust写CAD】29 Alpha256结构体(alpha256.rs)
源码 #[derive(Clone, Copy)] pub struct Alpha256(u32);impl Alpha256{#[inline]pub fn from(alpha:u32)->Alpha256{Alpha256(alpha1)}// Calculates 256 - (value * alpha256) / 255 in range [0,256],// for [0,255] value and [0,256] alpha256.#[inline]fn alpha_mul_…...
Titanic - Machine Learning from Disaster
数据集 通过网盘分享的文件: 链接: https://pan.baidu.com/s/17TLeF8PW2GSWTbAIJC69-A?pwd4dak 提取码: 4dak 准备工作 # 导入必要的库 import numpy as np # 用于数值计算(如矩阵运算、数学函数等) import pandas as pd # 用于数据…...
GoFrame框架中Prometheus Metric组件监控的优势与实践
文章摘要 GoFrame 是一款轻量、高效且模块化的 Go 语言全能型框架,在 Go 生态中以其企业级应用能力和简洁设计受到开发者青睐。随着微服务架构的普及,性能监控成为开发中不可或缺的一环,而 Prometheus 凭借其强大的时间序列数据处理能力和灵…...
SQL语言的物联网
以SQL语言的物联网 引言 物联网(IoT,Internet of Things)作为一个新兴的技术领域,正迅速改变着我们的生活方式和工作模式。它通过将各种物体连接到互联网,实现了设备之间的智能通信与数据交换。随着物联网的普及&…...
戴尔笔记本 ubuntu 22.04 开机后进入initramfs界面
问题 在 Ubuntu 22.04 启动时进入 initramfs 界面,并提示 Gave up waiting for root device. Common problems: - Boot args (cat /proc/cmdline)- Check rootdelay (did the system wait long enough?) - Missing modules (cat /proc/modules; ls /dev) ALERT! …...