自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 Matplotlib 相关知识

Matplotlib 是Python 中著名的 2D 绘图库,它提供了一个面向对象的 API和一系列函数,用于将数据可视化。Matplotlib 采用三层架构设计,各层职责分明:主要后端类型如下:主要模块:顶级容器 ,相当于画布创建一个新的图形窗口或画布可以包含一个或多个 Axes(子图)控制图形大小、DPI、背景色等全局属性常用方法:3.2 坐标轴系统 - axes实际的绘图区域(子图)每个 Axes 包含 x 轴和 y 轴真正的绘图函数(如 plot())都是在 Axes 上调用的创建方

2025-07-26 02:05:32 197

原创 python 整合使用 Redis

有序集合,在集合的基础上,为每元素排序;元素的排序需要根据另外一个值进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序。对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。计算给定的一个或多个有序集合的交集并将结果集存储在新的有序集合 key 中。

2025-07-24 16:30:49 343

原创 Redis详解

​ 目前市场主流数据存储都是使用关系型数据库。每次操作关系型数据库时都是I/O操作,I/O操作是主要影响程序执行性能原因之一,连接数据库关闭数据库都是消耗性能的过程。关系型数据库索引数据结构都是树状结构,当数据量特别大时,导致树深度比较深,当深度深时查询性能会大大降低。尽量减少对数据库的操作,能够明显的提升程序运行效率。

2025-07-24 16:28:58 595

原创 FastAPI中间件

中间件是一个函数,它的每个请求被特定的路径操作处理之前运行,同时也会在每个响应返回之前运行。中间件是包裹在应用程序周围的层,可以拦截所有传入的请求和传出的响应。中间件按添加的顺序执行(请求从外到内,响应从内到外)

2025-07-24 16:18:10 290

原创 FastAPI 中的依赖注入

FastAPI 中的依赖注入是一种强大的机制,能够增强代码的模块化和可维护性。通过高效地管理和注入依赖项,FastAPI 让开发人员能够创建更加有条理、可扩展且可测试的应用程序。

2025-07-24 16:16:10 612

原创 FastAPI 实现身份验证与授权

我们将创建用于生成和验证 JWT 的工具函数。SECRET_KEY替换为生产环境中安全且唯一的密钥。import jwt:接受数据并返回 JWT 令牌。:解码并验证令牌,如果有效则返回有效载荷。

2025-07-24 16:12:12 668

原创 fastapi 传参以及参数校验

这段代码把路径参数 user_id,item_id 的值传递给路径函数的参数 user_id,item_id并使用 Path 对 user_id 和 item_id 的类型和值做了限制。

2025-07-24 16:09:31 268

原创 docker-compose 详解

Docker Compose 是一种用于定义和多容器 Docker 应用程序的工具。通过一个 docker-compose.yml 文件,可以配置应用程序需要的所有服务(例如:Web 服务器、数据库、缓存等)并轻松管理他们。

2025-07-22 20:20:08 571

原创 Dockerfile 详解

我们来做一个案例:使用 Dockerfile 构建基于 ubuntu 22.04 的镜像,安装 Python3 并输出 “Hello, world”

2025-07-22 20:19:05 748

原创 Java并发9--线程池详解

/创建一个定长的线程池//创建一个单线程的线程池//创建一个可缓存支持灵活回收的线程池//创建一个支持周期执行任务的线程池在ThreadPoolExecutor类中有几个非常重要的方法:execute() & submit() & shutdown() & shutdownNow()

2025-07-19 23:03:44 978

原创 Java并发8--并发安全容器详解

关于写时复制的容器,优势比较明显,其内部充分运用了读写分离的思想提升了容器的整体并发吞吐量,以及避免了并发修改抛出异常。内存占用问题。因为CopyOnWrite容器每次在发生修改时都会复制一个新的数组,所以当数组数据过大时对内存消耗比较高。数据不一致性问题。CopyOnWrite容器保证的是最终一致性,一条线程在执行修改操作,另一条线程在执行读取操作,读取的线程并不能看到最新的数据,就算修改操作执行了setArray()方法将指向改成了新数组,原本读取的线程也不能看到最新的数据。

2025-07-19 22:58:01 632

原创 Java并发7--FutrureTask 及CompletetableFuture

一种是轮询方法,当结果为true的时候获取执行结果第二种则是调用方法。但是无论那种方式都无法实现真正意义上的异步回调,因为任务执行需要时间,所以都会使得主线程被迫阻塞等待执行结果返回后才能接着往下执行,最多只能在一定程度上减少等待方面开销的时间// 创建一个futureTask任务// 在线程t1中执行// todo: 可以在这里完成别的工作,因为任务执行需要时间System.out.println("main线程获取异步执行结果: " + futureTask.get());

2025-07-19 22:52:16 751

原创 Java并发6--ThreadLocal详解

1、ThreadLocal 是一种特殊的无锁线程安全方式,通过为每个线程分配独立的资源副本,从根本上避免发生资源冲突2、ThreadLocal 在所有线程间隔离,InheritableThreadLocal 在创建子线程时会拷贝父线程中 InheritableThreadLocal 的有效键值对3、虽然 ThreadLocal 提供了自动清理数据的能力,但是自动清理存在滞后性。为了避免内存泄漏,在业务开发中应该及时调用 remove 清理无效的局部存储4、

2025-07-19 21:59:29 556

原创 Java并发5--AQS共享模式的数据结构

Semaphore 信号量是包下的一个并发工具类。可以用来控制同一时刻访问临界资源(共享资源)的线程数,以确保访问临界资源的线程能够正确、合理的使用公共资源。而其内部则宇 ReentrantLock 一样,都是通过直接或间接的调用 AQS 框架的方法实现。在 Semaphore 中存在一个 许可的概念:在初始化 Semaphore 信号量需要为这个许可传入一个数值,该数值表示同一时刻可以访问临界资源的最大线程数,也被称为许可集。

2025-07-19 21:52:13 869

原创 Redis集群和 zookeeper 实现分布式锁的优势和劣势

在分布式系统中,实现分布式锁是确保多个节点间互斥访问共享资源的一种常见需求。Redis 集群 和 zookeeper 都可以用来实现这一功能,但它们有着各自不同的优势和劣势。

2025-07-06 23:02:10 603

转载 Java并发4--ReetranLock 及 Condition

这是JDK1.5时JUC包下添加的一个类,实现于Lock接口,作用与synchronized相同,不过对比于synchronized更加灵活但是使用时需要我们手动获取/释放锁。ReetrantLock本身是支持重入的一把锁,即支持当前获取锁的线程对锁资源进行多次重复的锁获取,在此同时还支持公平锁与非公平锁如果先执行获取锁操作的线程先获取锁,那么就代表当前的锁是公平的如果先执行获取锁操作的线程还需要和后面执行获取锁操作的线程竞争锁资源,那么则代表当前锁是非公平的。

2025-07-06 20:15:46 21

转载 Java并发3--无锁三大将

当一个线程想要执行被 synchronized 修饰的代码/方法,为了避免操作 共享资源时发生冲突,每次都需要执行加锁策略,而无锁则总是假设对共享资源的访问没有冲突,线程可以不停执行,无需加锁,无需等待。一旦发生冲突,无锁策略将采用一种称为 CAS 的技术来保证线程执行的安全性,也就是说 CAS 技术就是无锁策略实现的关键。CAS 全称 Compare And Swap(比较并交换),而Java中的 CAS 实现最终也是依赖于 CPU 的原子性指令实现。在 CAS 机制中核心思想为:CAS(V, E, N)

2025-07-06 20:09:30 28

转载 Java 并发2 -- volatile 和 synchronized

一是保证特定操作的执行顺序 --> 由于编译器和处理器都能执行指令重排优化,如果在指令间插入一条 MemoryBarrier,则会告诉编译器和CPU,不管什么指令都不能喝这条 MemoryBarrier 指令重排序,也就是通过插入内存屏障,禁止内存屏障前后的指令执行重排序优化。二是保证某系变量的内存可见性(利用该特性实现 volatile 的内存可见性)-> 内存栅栏会强制刷出各种 CPU 缓存数据,因此 任何 CPU 上的线程都能读取到这些数据的最新版本。锁状态说明无锁。

2025-07-06 20:05:18 37

转载 Java 并发1--Java 内存模型JMM

Java内存模型(JMM)与JVM内存模型的区别: JVM内存模型描述的是虚拟机运行时数据区的划分,包括线程共享区(堆、方法区)和线程私有区(虚拟机栈、本地方法栈、程序计数器)。 JMM是一种抽象概念,定义了变量访问规则,强调主内存(共享)和工作内存(线程私有)的交互机制。所有变量存储在主内存,线程操作变量需先拷贝到工作内存,操作完成后写回主内存。 硬件架构只有寄存器、高速缓存和主内存概念,JMM的划分是对硬件内存的抽象描述。JMM的存在是为了解决多线程环境下原子性、有序性和可见性问题,规范线程间数据访问方

2025-07-06 19:55:40 12

原创 MyBatis 学习二

多表查询是在企业中必不可少的,无论多么简单的项目里都会出现多表查询操作。因为只要是关系型数据库,在设计表时都需要按照范式进行设计,为了减少数据冗余,都会拆成多个表。当需要表中数据时,在进行联合查询。在MySQL学习时,知道表之间关系分为:一对一、一对多、多对多。这三种关系又细分为单向和双向。如果学习的是Hibernate框架,必须要严格区分开表之间的关系,然后才能使用Hibernate框架。但是在MyBatis框架中只有两种情况:当前表对应另外表是一行数据还是多行数据。

2025-06-22 12:15:59 666

原创 MyBatis学习一

MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 几乎消除了 JDBC 代码和参数的手动设置以及 结果集的检索。MyBatis 使用简单的 XML 或注解进行配置,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射到数据库中的记录。与其他 ORM 框架不同,MyBatis 并没有将 Java 对象与数据库表关联起来,而是将方法与 SQL 语句关联。

2025-06-22 11:55:45 964

原创 Django中间件讲解

total_time : .2f } s' # 记录慢请求 if total_time > 1.0 : # 超过1秒的请求 cache . set(f'slow_request_ {'path' : request . path , 'method' : request . method , 'time' : total_time , 'user' : str(request . user) , } , timeout = 86400 # 24小时过期) return response.2fs'

2025-06-15 21:10:59 369

原创 Flask上下文讲机制

在框架中,通过机制解决不同场景下的数据访问问题二者协同实现,是灵活处理请求与应用级逻辑的核心。下面从核心对象、生命周期、场景及实现维度展开解析。

2025-06-15 18:52:32 524

原创 Flask蓝图

state 是 BlueprintSetupState 实例# deferred_functions 里面是蓝图路由的lambda意思就是 lambda 中的 s 被赋值为 state ,然后state.add_url_rule,这样就执行了app.add_url_rule。

2025-06-15 15:22:21 323

原创 数组转树形结构

【代码】数组转树形结构。

2025-06-05 09:13:21 144

原创 买卖股票的最佳时间 -- python

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算 法来计算你所能获取的最大利润。输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。

2025-06-05 08:57:20 227

原创 盛水最多的容器(双指针)-- Python

给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。输入:[1,8,6,2,5,4,8,3,7] 输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色 部分)的最大值为 49。

2025-06-05 08:53:19 210

原创 单例模式实现的几种方式--Python

【代码】单例模式实现的几种方式--Python。

2025-06-05 08:49:33 159

原创 嵌套列表深度--Python

【代码】嵌套列表深度--Python。

2025-06-05 08:39:02 112

原创 展开一个嵌套序列 -- Python

【代码】展开一个嵌套序列 -- Python。

2025-06-05 08:37:53 144

原创 冒泡排序 -- Python

【代码】冒泡排序 -- Python。

2025-06-05 08:28:14 104

原创 python实现快排

【代码】python实现快排。

2025-06-05 07:52:42 80

原创 找出每个学校GPA 最低的同学

题目:现在运营想要找到gpa最低的同学来做调研,请你取出每个学校的最低gpa。

2025-06-04 15:19:50 131

原创 Harbor 安装和基本使用

Harbor 是一个开源的企业级 Docker Registry 服务,它提供了一个安全、可信赖的仓库来存储和管理 Docker 镜像。以下操作必须在服务器安装 docker 和 docker-compose 的前提下。

2025-05-11 21:14:51 1688

原创 Git 分支指南

Git 分支是仓库内的独立开发线,你可以把它想象成一个单独的工作空间,在这里你可以进行修改,而不会影响主分支(或 默认分支)。分支允许开发者在不影响项目实际版本的情况下,开发新功能、修复错误或进行实验。

2025-05-10 22:07:55 1091

转载 MongoDB 和 ES 的一些对比

Elasticsearch特别擅长处理复杂的搜索和分析查询,而MongoDB在点查询和范围查询上表现良好。两者都提供了强大的分布式功能,但它们在数据一致性、集群管理和跨数据中心复制等方面有所不同。

2025-05-07 16:15:34 203

原创 python 使用 mongodb 的一些方法

首先,确保你已经安装了。

2025-05-07 10:56:47 468

原创 mongodb 学习笔记

Mongo是一个基于分布式文件存储的Nosql数据库。支持的数据结构非常松散,可以通过json格式来修改插入数据。

2025-05-07 10:53:29 980

原创 LeetCode---整数反转

如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。输入:x = -123。输入:x = 123。输入:x = 120。

2025-04-22 17:55:53 305

原创 Python+Word实现周报自动化的完整流程

python word 自动化

2025-04-21 18:02:26 634

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除