Python训练营打卡——DAY30(2025.5.19)
目录
模块和库的导入
一、导入官方库
1. 标准导入:导入整个库
2. 从库中导入特定项
3. 非标准导入:导入整个库
二、模块、包的定义
三、使用案例
场景1: main.py 和 circle.py 都在同一目录
场景2: main.py 和 circle.py 都在根目录的子目录 model/ 下
场景3: main.py 在根目录,circle.py 在子目录 model/ 下
场景4
四、源代码的查看
五、通俗解释
1. 模块和库是什么?
2. 导入库的三种方式
3. 模块和包怎么放?
4. 为什么有时候导入会报错?
5. 第三方库的秘密
6. 一句话总结
六、作业
准备工作
场景1:同级目录导入
场景2:子目录导入
场景3:跨目录导入
模块和库的导入
一、导入官方库
我们复盘下学习python的逻辑,所谓学习python就是学习python常见的基础语法+学习你所处理任务需要用到的第三方库
类别 | 典型库 | 解决的问题 | 学习门槛 |
---|---|---|---|
基础工具 | os 、sys 、json | 操作系统交互、序列化数据(如读写 JSON 文件) | 低 |
科学计算 | numpy 、scipy | 数值计算、线性代数、信号处理 | 中 |
数据分析 | pandas 、matplotlib | 数据清洗、转换、可视化(如绘制折线图、柱状图) | 中 |
Web 开发 | Django 、Flask | 快速搭建 Web 应用(如网站后台、API 接口) | 中高 |
机器学习 | scikit-learn 、TensorFlow | 机器学习算法(分类、回归、深度学习) | 高 |
自动化脚本 | pyautogui 、pytest | 自动化测试、桌面操作自动化(如模拟鼠标键盘操作) | 低 |
网络爬虫 | requests 、Scrapy | 从网页提取数据(需注意反爬机制和法律合规) | 中 |
所以你用到什么学什么库即可。学习python本身就是个伪命题,就像你说学习科目一样,你没说清晰你学习的具体科目是什么,也没说学这个科目的哪些章节,毕竟每个科目都很大-----要有以终为始的思想。
所以我们这个训练营,正确的说法是:学习借助pythob掌握深度学习和机器学习所必备的基础知识和相关工具。
1. 标准导入:导入整个库
这是最基本也是最常见的导入方式,直接使用import
语句。
# 方式1:导入整个模块
import mathprint("方式1:使用 import math")
print(f"圆周率π的值:{math.pi}")
print(f"2的平方根:{math.sqrt(2)}\n")
方式1:使用 import math 圆周率π的值:3.141592653589793 2的平方根:1.4142135623730951
2. 从库中导入特定项
当使用from语法从库中导入特定的函数或类时,这些函数或类就可以在您的代码中直接使用,不需要添加模块名作为前缀。因为在导入时没有包括模块的完整路径,前面也不能加上库名。
# 方式2:导入特定的函数或变量
from math import pi, sqrtprint("方式2:使用 from math import pi, sqrt")
print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}\n")
方式2:使用 from math import pi, sqrt 圆周率π的值:3.141592653589793 2的平方根:1.4142135623730951
类似的写法,如sklearn库很大,直接导入sklearn库会占用电脑大量内存,所以一般只导入你需要的库,
- 如: from sklearn.model_selection import train_test_split
3. 非标准导入:导入整个库
如下,●这将导入math
模块中定义的所有公开函数和变量。 ●和上述from同理,直接调用sin()
、cos()
等,而无需math.
前缀。
虽然 import math和 from math import *看起来都是导入了 math
模块,但它们在导入方式、作用域处理以及对命名空间的影响上有重要的区别。
-
命名空间的污染 ①
import math
:这种方法会将整个math
模块导入到命名空间中,但是需要使用math.
前缀来访问模块内的函数或变量。这种方式保持了命名空间的整洁,因为所有的math
函数和变量都包含在math
这个模块对象中。 ②from math import *
:这种方法将math
模块中的所有公开的函数和变量导入到当前的命名空间中,可以直接使用这些函数和变量而无需math.
前缀。这种方式可能会导致命名空间污染,特别是当有多个模块都被这样导入时,很容易发生命名冲突。 -
明确性和可维护性 ①
import math
:明确指出了函数和变量来源于math
模块,这对代码的可读性和维护性都是有益的。其他阅读你代码的人可以清楚地看到每个函数的来源,这对大型项目和团队合作尤为重要。 ②from math import *
:虽然代码看起来更简洁,但这种方法减少了代码的明确性。如果没有足够的上下文,很难判断一个特定的函数是来自math
模块还是其他模块,尤其是当你导入了多个模块时。
from math import *print(f"圆周率π的值:{pi}")
print(f"2的平方根:{sqrt(2)}")
圆周率π的值:3.141592653589793 2的平方根:1.4142135623730951
上述这些,如果是python内置库,可以直接导入,大部分第三方库都需要先用pip来安装。下面的模块,也就是.py文件,是不需要安装即可调用的。
二、模块、包的定义
模块(Module)
- 本质:以
.py
结尾的单个文件,包含Python代码(函数、类、变量等)。 - 作用:将代码拆分到不同文件中,避免代码冗余,方便复用和维护。
包(Package):在python里,包就是库
- 本质:有层次的文件目录结构(即文件夹),用于组织多个模块和子包。
- 核心特征:包的根目录下必须包含一个
__init__.py
文件(可以为空),用于标识该目录是一个包。
三、使用案例
若编写一个计算圆面积的代码并保存为 circle.py
,这个文件就是一个模块。
使用时通过 import circle
导入模块,调用其中的函数(如 circle.calculate_area(5)
)。
# circle.py
import mathdef calculate_area(radius):return math.pi * radius ** 2
IDE(如 VSCode 或 PyCharm)通常会将你打开的项目文件夹设为“根目录”(或者说,运行时的工作目录)。Python 在导入模块时,会从这个根目录(以及其他一些标准位置和脚本所在的目录)开始查找。
场景1: main.py
和 circle.py
都在同一目录
目录结构:
项目根目录/ ├── main.py └── circle.py
main.py
内容:
# main.py
from circle import calculate_area
# 或者: import circle (然后用 circle.calculate_area)radius = 5
area = calculate_area(radius)
print(f"半径为 {radius} 的圆,面积是: {area}")
运行方案:直接在终端python main.py
这里的终端可以通过左上角的查看-终端 打卡,默认的路径是你的项目根目录。
场景2: main.py
和 circle.py
都在根目录的子目录 model/
下
目录结构:
项目根目录/ └── model/├── __init__.py (推荐添加,将 model 目录标记为包)├── main.py└── circle.py
model/main.py
内容:
# model/main.py
from circle import calculate_area
# 或者: import circle (然后用 circle.calculate_area)radius = 5
area = calculate_area(radius)
print(f"半径为 {radius} 的圆,面积是: {area}")
运行方案:
- 运行命令:python model/main.py
- 进入路径:cd xxx(main的相对路径),然后执行python main.py (注意如果先cd后,就不能采用第一个命令了)
场景3: main.py
在根目录,circle.py
在子目录 model/
下
目录结构:
项目根目录/ ├── main.py └── model/├── __init__.py (必需添加,将 model 目录标记为一个可导入的包)└── circle.py
main.py
内容:
# main.py
from model.circle import calculate_area
# 或者: from model import circle (然后用 circle.calculate_area,因为此时你是导入了整个模块)radius = 5
area = calculate_area(radius)
print(f"半径为 {radius} 的圆,面积是: {area}")
运行方案:直接在终端python main.py
场景4
项目根目录/ ├── circle2.py └── utils/├── __init__.py (必需添加,将 model 目录标记为一个可导入的包)└── circle.py └── model/└── main.py
运行方式 python -m model.main
如果直接使用python model/main.py,会报错, 当使用 python -m model.main 时,Python 会将当前目录(即项目根目录)添加到 sys.path 的开头。
四、源代码的查看
如果第三方库是纯python写的,往往在函数上按住ctrl即可进入函数内部查看源代码。 但是很多第三方库为了性能,底层是用其他语言写的,这里我们计算机视觉库OpenCV为例。 OpenCV核心是用C++编写的(C++可以显著提高性能),但它通过Python等其他语言的接口(bindings)使得这些功能可以在Python环境中被调用。这些接口是通过一种叫做Python/C API的技术实现的,其中C++的功能被封装成Python模块,使得Python用户可以像使用纯Python编写的库一样使用OpenCV。 OpenCV的核心是用C++编写,并且已经编译成二进制文件,编译后的二进制文件可以在不同操作系统上运行,Python中的用户通常不能直接看到方法的源代码。
二进制文件是机器语言,处理器可以直接理解和执行无需翻译,二进制语言反汇编是很困难的,用二进制语言除了效果好外,也是让用户无法看到源代码,保护了自己的知识产权。
这意味着: ●二进制文件dll文件:当你在Python中导入OpenCV库(通import cv2),你实际上是在调用预先编译好的二进制文件。这些文件包含了实现OpenCV功能的可执行代码,而非人类可读的源代码。 ●接口封装:用户只能看到Python函数和对象的接口(即函数的定义,不包括实现的细节)。这也意味着无法从利用ctrl跳转到函数内部,pycharm的debugger功能同理也无法看到内部结构。 ●文档和源代码:尽管在Python中不能直接看到C++的源代码实现,用户可以参考官方文档来了解各个函数和方法的用法。如果需要查看实现细节,可以访问OpenCV的GitHub仓库查看C++源代码。
这就需要我们养成看文档的能力,文档就是以终为始思想的体现。文档就是api使用说明书,可能你日常买东西都不喜欢看使用说明书,但是在代码学习中,这一步是绕不开的。 你会发现很多B站视频的教学,其实远不如文档说明书细致。
五、通俗解释
1. 模块和库是什么?
想象你做饭需要各种工具:
- 模块 = 一个工具盒(比如装调料的盒子)
- 每个
.py
文件就是一个工具盒,里面放函数(比如切菜刀)、变量(比如盐)等。
- 每个
- 库 = 整个工具箱(比如一整个厨房)
- 多个模块(工具盒)组成一个库(比如
numpy
库就是装满数学工具的箱子)。
- 多个模块(工具盒)组成一个库(比如
2. 导入库的三种方式
假设你想用工具箱里的尺子:
-
整个箱子搬过来 → 每次用都要说箱子名:
import math # 搬来数学工具箱 print(math.sqrt(4)) # 用里面的尺子(开平方)
-
只拿需要的工具 → 直接用工具名:
from math import sqrt # 只拿尺子 print(sqrt(4)) # 直接量尺寸
-
把整个工具箱倒出来(不推荐)→ 容易和别的工具搞混:
from math import * # 倒出所有工具 print(sqrt(4)) # 但可能和别的工具箱里的尺子重名
3. 模块和包怎么放?
-
场景1:工具盒和你要用的地方在同一个抽屉
项目文件夹/
├── 你的代码.py
└── 工具盒.py
# 直接拿工具盒里的东西
from 工具盒 import 切菜刀
切菜刀()
-
场景2:工具盒在子抽屉里
项目文件夹/
└── 厨房/
├── __init__.py (贴个标签,说明这是厨房工具箱)
└── 工具盒.py
# 从厨房子抽屉拿工具
from 厨房.工具盒 import 炒锅
炒锅()
-
场景3:代码在子抽屉,工具盒在隔壁
项目文件夹/ ├── 厨房/ │ └── 工具盒.py └── 我的房间/└── 我的代码.py
# 我的代码.py需要跨到厨房拿工具
from 厨房.工具盒 import 菜刀
菜刀()
4. 为什么有时候导入会报错?
- 问题1:没找到工具盒 → 检查路径对不对。
- 问题2:工具盒没贴标签 → 确保子文件夹有
__init__.py
文件(哪怕空的)。 - 问题3:工具名写错 → 比如
import mat
但正确是import math
。
5. 第三方库的秘密
- 纯Python库(比如
requests
):你能看到所有工具怎么做的(源码)。 - 编译过的库(比如
OpenCV
):工具被锁在盒子里(二进制文件),只能看说明书(官方文档)学用法。
6. 一句话总结
- 学Python库 = 学怎么借别人的工具箱(库)里的工具(函数)。
- 导入方式:按需借工具,别把整个厨房倒出来。
- 路径问题:确保工具箱放在你能找到的地方(正确目录结构)。
六、作业
自己新建几个不同路径文件尝试下如何导入
作业目标
创建 3 种目录结构,练习模块导入,观察成功/失败情况。
准备工作
- 新建一个总文件夹,例如
python_import_practice
- 用 VSCode 或 PyCharm 打开这个文件夹
场景1:同级目录导入
目录结构:
python_import_practice/ ├── utils.py (工具模块) └── main.py (主程序)
操作步骤
(1)在 utils.py
中写:
def say_hello():return "Hello from utils!"
(2)在 main.py
中写:
from utils import say_helloprint(say_hello()) # 预期输出:Hello from utils!
Hello from utils!
场景2:子目录导入
目录结构:
python_import_practice/
├── my_package/ (子包)
│ ├── __init__.py (空文件)
│ └── tools.py (工具模块)
└── main.py (主程序)
操作步骤:
(1)在 tools.py
中写:
def add(a, b):return a + b
(2)在 main.py
中写:
from my_package.tools import addresult = add(3, 5)
print(f"3+5={result}") # 预期输出:3+5=8
场景3:跨目录导入
目录结构:
python_import_practice/
├── core/
│ └── calculator.py (计算器模块)
└── scripts/
└── app.py (主程序)
操作步骤:
(1)在 calculator.py
中写:
def multiply(x, y):return x * y
(2)在 app.py
中写:
# 尝试导入(这里会报错!先故意写错)
from core.calculator import multiplyresult = multiply(4, 6)
print(f"4 * 6={result}")
(3)直接运行会报错!修复方法:
- 在
python_import_practice
文件夹打开终端 - 输入:
python -m scripts.app
(用模块方式运行)
@浙大疏锦行
相关文章:
Python训练营打卡——DAY30(2025.5.19)
目录 模块和库的导入 一、导入官方库 1. 标准导入:导入整个库 2. 从库中导入特定项 3. 非标准导入:导入整个库 二、模块、包的定义 三、使用案例 场景1: main.py 和 circle.py 都在同一目录 场景2: main.py 和 circle.py 都在根目录的子目录 mo…...
Django框架的前端部分使用Ajax请求一
Ajax请求 目录 1.ajax请求使用 2.增加任务列表功能(只有查看和新增) 3.代码展示集合 这篇文章, 要开始讲关于ajax请求的内容了。这个和以前文章中写道的Vue框架里面的axios请求, 很相似。后端代码, 会有一些细节点, 跟前几节文章写的有些区别。 一、ajax请求使用 我们先…...
w~自动驾驶~合集3
我自己的原文哦~ https://blog.51cto.com/whaosoft/13269720 #FastOcc 推理更快、部署友好Occ算法来啦! 在自动驾驶系统当中,感知任务是整个自驾系统中至关重要的组成部分。感知任务的主要目标是使自动驾驶车辆能够理解和感知周围的环境元素&…...
LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串
LeetCode 39. 组合总和 需要注意的是题目已经明确了数组内的元素不重复(重复的话需要执行去重操作),且元素都为正整数(如果存在0,则会出现死循环)。 思路1:暴力解法 对最后结果进行去重 每一…...
C++(2)关键字+数据类型 +数据类型输入
(1)如下关键字是 不能用于定义变量名和常量名的 !。 如int int 这样就会报错 所以注意即可 。 (2)标识符命名规则 (即变量和常量的命名规则) 最主要注意 第一个 字符必须是字母或是下划线 —…...
第二道re
题目来源:天狩CTF竞赛平台 Lihuas for 题目提示说是for循环,不管了干吧 先看加没加壳,没有,直接无脑IDAF5 代码功能概述 程序会要求用户输入一个 flag,然后将输入的每个字符与索引值进行异或运算,并将结…...
【C语言内存函数】--memcpy和memmove的使用和模拟实现,memset函数的使用,memcmp函数的使用
目录 一.memcpy的使用和模拟实现 1.1--memcpy的使用演示 1.2--memcpy的模拟实现 二.memmove的使用和模拟实现 2.1--memmove的使用演示 2.2--memmove的模拟实现 三.memset函数的使用 3.1--memset的使用演示 3.2--总结 四.memcmp函数的使用 4.1--memcmp的使用演示 4.2…...
java集合详细讲解
Java 8 集合框架详解 Java集合框架是Java中最重要、最常用的API之一,Java 8对其进行了多项增强。下面我将全面讲解Java 8中的集合框架。 一、集合框架概述 Java集合框架主要分为两大类: Collection - 单列集合 List:有序可重复Set…...
UniApp 实现的文件预览与查看功能#三方框架 #Uniapp
UniApp 实现的文件预览与查看功能 前言 在开发移动应用时,文件预览功能是一个非常常见的需求。无论是查看PDF文档、图片还是Office文件,都需要一个稳定且易用的预览解决方案。本文将详细介绍如何在UniApp中实现各类文件的预览功能,并分享一…...
用户行为日志分析的常用架构
## 1. 经典Lambda架构 Lambda架构是一种流行的大数据处理架构,特别适合用户行为日志分析场景。 ### 1.1 架构组成 Lambda架构包含三层: - **批处理层(Batch Layer)**: 存储全量数据并进行离线批处理 - **实时处理层(Speed Layer)**: 处理最新数据&…...
【VBA/word】批量替换字体大小
将5号或6号字体改为10.5号字体(循环10次) AI复制的文案问题调整 Sub Change5or6ptTo16pt_10Loops()Dim rng As RangeDim doc As DocumentDim found As BooleanDim i As IntegerDim totalChanges As LongDim targetSizes As VariantDim size As VariantSe…...
C++类与对象--3 C++对象模型和this指针
3.1 类成员分开存储 成员变量和成员函数在内存中是分开存储的只有非静态成员变量是存储在对象上的 C为空对象分配1字节的空间非空对象的大小为其内部非成员变量大小总和 静态成员不占对象空间不同对象的成员函数共享一个函数实例,不占对象空间(通过th…...
DV SSL证书管理主要有哪些功能?
在互联网信息传输高速发展的今天,用户对网站安全性的要求越来越高。SSL证书已成为网站“身份认证数据加密”的标配。其中,DV SSL证书由于其签发快速、价格低廉、使用广泛,成为大量中小型网站、个人博客、电商平台的首选。然而,选择…...
el-tree结合el-tree-transfer实现穿梭框里展示树形数据
参考文章:我把他的弹框单拉出来一个独立文件作为组件方便使用,遇到一些问题记录一下。 testComponet.vue <template><div class"per_container"><div class"per_con_left"><div class"per_con_title&q…...
浅谈GC机制-三色标记和混合写屏障
标记清除法 stw(stop the world):暂停所有goroutine,扫描出可达与不可达对象,进行回收 三色标记法 不暂停,并发扫描,从根节点出发,扫描过对象的为黑,下一个可达对象为…...
Python训练营打卡 Day30
模块和库的导入 知识点回顾: 导入官方库的三种手段 直接导入整个库:使用 import library_name 语法。 导入库中的特定模块或函数:使用 from library_name import module_name 或 from library_name import function_name。 导入库并起别名&…...
深入探讨死区生成:原理、实现与应用
在电力电子、信号处理等众多领域中,“死区生成”是一个十分关键的概念,它能有效避免器件误动作、减少干扰,保障系统稳定运行。今天就通过问答的形式,和大家深入聊聊死区生成相关知识。 什么是死区生成? 死区生成是指…...
OpenCV 环境搭建与概述
// //OpenCV-4.11.0 C VS2019 // 一、OpenCV学习路线 1、入门: OpenCV图像读写、视频读写、基本像素处理、基本卷积处理、基本C开发知识。 2、初级: OpenCV自定义卷积操作、图像梯度、边缘提取、二值分析、视频分析、形态学处理、几何变换与透视变换。 3、中级: 角点查找、BL…...
c/c++的opencv均值函数
C/C 中的均值函数:从基础到应用 📊 在 C/C 编程中,计算一组数值的**均值(平均值)**是一项非常基础且常见的操作。无论是数据分析、信号处理、图像处理还是机器学习,均值函数都扮演着重要的角色。本文将详细…...
go 数据类型转换
graph TDA[整型<br>int, int8, int16, int32, int64] -->|类型转换| B[浮点型<br>float32, float64]B -->|类型转换| AA -->|类型转换| C[布尔型<br>bool]C -->|类型转换| AB -->|类型转换| D[复数型<br>complex64, complex128]D -->…...
Go内存管理
内存管理 文章目录 内存管理何为内存?内存为什么需要管理?内存管理的方式操作系统存储模型操作系统是怎么管理内存的?虚拟内存与物理内存认识虚拟内存分页管理 Golang 内存模型TCMalloc核心概念go内存管理核心概念GO内存分配GO 内存逃逸机制一…...
解决软件连接RabbitMQ突发System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接异常
一、问题描述 系统再运行时,突然出现 System.Exception: [RabbitMQ.Send Error] RabbitMQ.Client.Exceptions.AlreadyClosedException: Already closed: The AMQP operation was interrupted: AMQP close-reason, initiated by Library, code541, text“Unexpected…...
基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用|文献速递-深度学习医疗AI最新文献
Title 题目 Local salient location-aware anomaly mask synthesis for pulmonary disease anomaly detection and lesion localization in CT images 基于局部显著位置感知的异常掩码合成方法在CT图像肺部疾病异常检测与病变定位中的应用 01 文献速递介绍 肺部疾病是全球发…...
【cursor疑惑】cursor续杯后使用agent对话时,提示“需要pro或商业订阅的用户才能使用“
背景 cursor的pro会员体验过期了,想再次体验deepseek、Claude等agent对话提示:“免费版本不可以使用agent对话功能(英文忘记截图了,大意是这样)”。 处理方法 Step-1:再次续杯cursor的pro会员14天体验 详情,见:【c…...
2022年下半年信息系统项目管理师——综合知识真题及答案(3)
2022年下半年信息系统项目管理师 ——综合知识真题及答案(3) 零、时光宝盒 (https://blog.csdn.net/weixin_69553582 逆境清醒) 此文是我2025-05-19回复头条上某作者文章时的评论记录,原作者的文章是写那些被有组织…...
华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的云服务器单机部署Dify-LLM应用开发平台
目录 一、前言 二、华为云Flexus云服务优势 三、华为云Flexus一键部署Dify 3.1 选择模板 3.2 参数配置 3.3 资源栈设置 3.4 配置确认 3.5 创建执行计划 3.6 部署 四、Dify-LLM应用开发平台初体验 4.1 访问Dify-LLM应用开发平台 4.2 设置管理员账户 4.3 登录Dify-LLM应用开发平台…...
NC105NC106美光固态颗粒NC108NC109
NC105NC106美光固态颗粒NC108NC109 美光固态颗粒技术矩阵深度解析:NC105/NC106/NC108/NC109的性能博弈与市场卡位 一、技术基因图谱:解密NC系列颗粒的底层架构 1. TLC与QLC的技术路线分野 美光NC系列颗粒呈现出清晰的技术分层:NC105/NC10…...
洛谷U536262 井底之“鸡” 附视频讲解
题目截图 题目背景 2024年山东财经大学新生赛的时候,xz_chicken厌倦了在鸡舍的生活,于是决定把他的主人ZQH写成QH鸡,然而除了在第一题中已经出现了ZQH所在队伍征途再起的合影,同时xz_chicken还露出其他马脚,比如说答案…...
特征筛选方法总结(面试准备15)
非模型方法 一.FILTER过滤法: 1.缺失值比例(80%以上缺失则删除)/方差 注意: 连续变量只删方差为0的,因为变量取值范围会影响方差大小。 离散类的看各类取值占比,如果是三分类变量可以视作连续变量。 函数:V…...
深入解析分布式数据库TiDB:原理、优化与架构实践
前言 在云计算与大数据时代,传统单机数据库面临三大挑战:海量数据存储、高并发访问和实时分析需求。MySQL 分库分表方案复杂、NoSQL 缺乏 ACID 支持、MPP 数仓难以处理 OLTP… 在这样的背景下,TiDB 应运而生。作为一款开源的分布式 NewSQL 数…...
YouTube视频字幕转成文章算重复内容吗?
很多创作者误以为「自己说的话不算抄袭」,却不知道YouTube自动生成的字幕早已被搜索引擎存档。 去年就有案例:某美食博主将教程视频字幕转为图文,结果原创度检测仅42%,导致页面权重暴跌。 本文揭秘5个实操技巧:从删除…...
codeup添加流水线docker自动化部署
在项目根目录下增加Dockerfile文件 # 使用基础镜像 FROM maven:3.8.4-openjdk-17-slim AS build # 设置工作目录 WORKDIR /app # 复制项目源代码 COPY . . # 构建项目 RUN mvn clean package -DskipTests # 验证JAR包是否生成 RUN ls -l target/your-project.jar # 使用合适的…...
面试点补充
目录 1. 搭建lnmp Linux 系统基础命令 nginx相关命令 MySQL 相关命令 PHP 相关命令 验证命令 下载并部署 Discuz! X3.4 论坛 到 Nginx 网站 2. 脑裂 2.1 脑裂的定义 2.2 脑裂产生的原因 1. 主备节点之间的心跳线中断 2. 优先级冲突 3. 系统或服务负载过高 2.3 如何…...
深入解析 Oracle session_cached_cursors 参数及性能对比实验
在 Oracle 数据库管理中,session_cached_cursors参数扮演着至关重要的角色,它直接影响着数据库的性能和资源利用效率。本文将深入剖析该参数的原理、作用,并通过性能对比实验,直观展示不同参数设置下数据库的性能表现。 一、sessi…...
MyBatis:动态SQL
文章目录 动态SQLif标签trim标签where标签set标签foreach标签include标签和sql标签 Mybatis动态SQL的官方文档: https://mybatis.net.cn/dynamic-sql.html 动态SQL 动态SQL是 MyBatis的强大特性之一,如果是使用JDBC根据不同条件拼接sql很麻烦,例如拼接…...
数据库性能调优:索引设计、缓存配置与查询计划优化
在高并发、大数据量场景下,数据库性能直接影响系统稳定性与用户体验。 本文将从索引设计、缓存配置、查询计划优化三大核心维度出发,结合实战案例与代码示例,系统解析数据库性能调优的关键策略,并深入讲解 EXPLAIN ANALYZE 与 索引覆盖策略 的应用技巧。 一、索引设计:从…...
安全强化的Linux
SElinux简介 SELinux是security-Enhanced Linux的缩写,意思是安全强化的linux SELinux主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。传统的访问控制在我们开启权限后,系统进程可以直接访问 当我们对权限设置不严谨时,这种访问方式就是系统的安全漏洞 在…...
计算机网络(2)——应用层(上)
1.应用层概述 应用层(Application Layer)属于计算机网络体系结构中的最顶层,直接面向用户,提供各种网络服务和应用程序的接口 本文主要的学习内容如下: (1)网络应用进程通信方式 客户端-服务器方式点对点方式混合方式 (2)网络应用的需求与传输…...
day017-磁盘管理-实战
文章目录 1. 硬盘命名规则2. 添加硬盘2.1 查看硬盘名称 3. 硬盘分区3.1 分区命名规则:mbr分区表格式3.2 创建分区:fdisk3.2.1 fdisk -l:查看硬盘及分区信息3.2.2 fdisk /dev/sdc :为该硬盘分区3.2.3 创建扩展分区和逻辑分区3.2.4 保存设置并退…...
Win10 安装单机版ES(elasticsearch),整合IK分词器和安装Kibana
一. 先查看本机windows是否安装了ES(elasticsearch),检查方法如下: 检查进程 按 Ctrl Shift Esc 组合键打开 “任务管理器”。在 “进程” 选项卡中,查看是否有 elasticsearch 相关进程。如果有,说明系统安装了 ES。 检查端口…...
STM32 控制 OLED 全攻略(二):实现字符和汉字的显示
目录 一 前言 二 OLED介绍 (一)SSD1306 (二)OLED屏幕 三 显示原理结合代码解释 1 指令---0x00 2 数据---0x40 3 初始化oled函数 4 codetab.h 四 显示字符串的原理 🧾 ASCII 编码范围: ✅ OLED_S…...
c#将json字符串转换为对象数组
在C#中,将JSON字符串转换为对象数组是一个常见的需求,特别是在处理来自Web API的响应或需要反序列化本地文件内容时。这可以通过使用Newtonsoft.Json(也称为Json.NET)库或.NET Core内置的System.Text.Json来完成。以下是如何使用这…...
Cryosparc里头restack的妙用
在Cryosparc里头经常需要迁移job或者将particle打包成relion可以识别的模式,总是会遇到一个问题,我们需要的颗粒明明很少,但总是保存出一大堆东西来。原因就是,他会把最开初的particle都给你算进来,而不是某个作业对应…...
.bat文档如何运行Python程序
.bat文档如何运行Python程序 在Windows操作系统中,你可以通过几种方式来运行Python程序,即使是通过.bat批处理文件。.bat文件是一种批处理脚本,它允许你执行一系列命令。以下是一些步骤和示例,说明如何从.bat文件运行Python程序。…...
力扣HOT100之二叉树:230. 二叉搜索树中第 K 小的元素
这道题直接用最笨的办法来做的,用递归来做,我们定义一个全局变量vector<int> element,然后使用中序遍历,每当碰到一个非空节点就将其加入到向量中,这样依赖当向量中的元素小于k时,就返回0,…...
【Nextcloud】使用 LNMP 架构搭建私有云存储:Nextcloud 实战指南
目录 一、环境准备与基础配置 1. 系统环境要求 2. 初始化系统配置 二、搭建 LNMP 基础架构 1. 一键安装 LNMP 组件 2. 启动数据库服务 三、部署 Nextcloud 存储服务 1. 上传并解压安装包 2. 设置目录权限(测试环境配置) 3. 配置 MariaDB 数据库…...
已知6、7、8月月平均气温和标准差,求夏季季平均温度与标准差
由下面定理,得出平方和的公式:(即每天的温度平方和) 这样就可以推出季平均的算法: 举例:在Excel用公式算,不要手算: 因此季平均:(B2*C2B3*C3B4*C4)/SUM(B2:B4) 季标准差…...
【cursor指南】cursor免费续杯pro会员试用
背景 心血来潮(其实是被逼的),开始需要cursor里面的agent对话。cursor用着用着就会出现点数耗尽、试用到期等问题,于是自行开始找免费的cursor会员续用方法。 Part01:参考链接鸣谢 1. Cursor 全攻略:注册、使用到无限续杯&…...
Visual Studio解决方案构建三剑客:生成/重新生成/清理完全指南(实战经验总结)
文章目录 当你在VS里右键解决方案时...一、先看实战场景(老板发飙警告)二、三大命令解剖课(重点标记版)2.1 生成解决方案(F7)2.2 重新生成解决方案(CtrlAltF7)2.3 清理解决方案&…...
《JVM如何判断一个对象可以被回收?图文详解GC Root算法》
大家好呀!我是你们的老朋友Java技术博主👋 今天咱们来聊聊Java虚拟机(JVM)中一个超级重要的话题——垃圾回收机制(Garbage Collection)和GC Root可达性分析!这可是Java程序员必须掌握的核心知识点哦!😎 🌟…...