- 博客(63)
- 收藏
- 关注
原创 Redis集群和 zookeeper 实现分布式锁的优势和劣势
在分布式系统中,实现分布式锁是确保多个节点间互斥访问共享资源的一种常见需求。Redis 集群 和 zookeeper 都可以用来实现这一功能,但它们有着各自不同的优势和劣势。
2025-07-06 23:02:10
600
转载 Java并发4--ReetranLock 及 Condition
这是JDK1.5时JUC包下添加的一个类,实现于Lock接口,作用与synchronized相同,不过对比于synchronized更加灵活但是使用时需要我们手动获取/释放锁。ReetrantLock本身是支持重入的一把锁,即支持当前获取锁的线程对锁资源进行多次重复的锁获取,在此同时还支持公平锁与非公平锁如果先执行获取锁操作的线程先获取锁,那么就代表当前的锁是公平的如果先执行获取锁操作的线程还需要和后面执行获取锁操作的线程竞争锁资源,那么则代表当前锁是非公平的。
2025-07-06 20:15:46
18
转载 Java并发3--无锁三大将
当一个线程想要执行被 synchronized 修饰的代码/方法,为了避免操作 共享资源时发生冲突,每次都需要执行加锁策略,而无锁则总是假设对共享资源的访问没有冲突,线程可以不停执行,无需加锁,无需等待。一旦发生冲突,无锁策略将采用一种称为 CAS 的技术来保证线程执行的安全性,也就是说 CAS 技术就是无锁策略实现的关键。CAS 全称 Compare And Swap(比较并交换),而Java中的 CAS 实现最终也是依赖于 CPU 的原子性指令实现。在 CAS 机制中核心思想为:CAS(V, E, N)
2025-07-06 20:09:30
23
转载 Java 并发2 -- volatile 和 synchronized
一是保证特定操作的执行顺序 --> 由于编译器和处理器都能执行指令重排优化,如果在指令间插入一条 MemoryBarrier,则会告诉编译器和CPU,不管什么指令都不能喝这条 MemoryBarrier 指令重排序,也就是通过插入内存屏障,禁止内存屏障前后的指令执行重排序优化。二是保证某系变量的内存可见性(利用该特性实现 volatile 的内存可见性)-> 内存栅栏会强制刷出各种 CPU 缓存数据,因此 任何 CPU 上的线程都能读取到这些数据的最新版本。锁状态说明无锁。
2025-07-06 20:05:18
29
转载 Java 并发1--Java 内存模型JMM
Java内存模型(JMM)与JVM内存模型的区别: JVM内存模型描述的是虚拟机运行时数据区的划分,包括线程共享区(堆、方法区)和线程私有区(虚拟机栈、本地方法栈、程序计数器)。 JMM是一种抽象概念,定义了变量访问规则,强调主内存(共享)和工作内存(线程私有)的交互机制。所有变量存储在主内存,线程操作变量需先拷贝到工作内存,操作完成后写回主内存。 硬件架构只有寄存器、高速缓存和主内存概念,JMM的划分是对硬件内存的抽象描述。JMM的存在是为了解决多线程环境下原子性、有序性和可见性问题,规范线程间数据访问方
2025-07-06 19:55:40
10
原创 MyBatis 学习二
多表查询是在企业中必不可少的,无论多么简单的项目里都会出现多表查询操作。因为只要是关系型数据库,在设计表时都需要按照范式进行设计,为了减少数据冗余,都会拆成多个表。当需要表中数据时,在进行联合查询。在MySQL学习时,知道表之间关系分为:一对一、一对多、多对多。这三种关系又细分为单向和双向。如果学习的是Hibernate框架,必须要严格区分开表之间的关系,然后才能使用Hibernate框架。但是在MyBatis框架中只有两种情况:当前表对应另外表是一行数据还是多行数据。
2025-06-22 12:15:59
665
原创 MyBatis学习一
MyBatis 是一个优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 几乎消除了 JDBC 代码和参数的手动设置以及 结果集的检索。MyBatis 使用简单的 XML 或注解进行配置,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射到数据库中的记录。与其他 ORM 框架不同,MyBatis 并没有将 Java 对象与数据库表关联起来,而是将方法与 SQL 语句关联。
2025-06-22 11:55:45
962
原创 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
368
原创 Flask上下文讲机制
在框架中,通过机制解决不同场景下的数据访问问题二者协同实现,是灵活处理请求与应用级逻辑的核心。下面从核心对象、生命周期、场景及实现维度展开解析。
2025-06-15 18:52:32
516
原创 Flask蓝图
state 是 BlueprintSetupState 实例# deferred_functions 里面是蓝图路由的lambda意思就是 lambda 中的 s 被赋值为 state ,然后state.add_url_rule,这样就执行了app.add_url_rule。
2025-06-15 15:22:21
318
原创 买卖股票的最佳时间 -- 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
223
原创 盛水最多的容器(双指针)-- 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
207
原创 Harbor 安装和基本使用
Harbor 是一个开源的企业级 Docker Registry 服务,它提供了一个安全、可信赖的仓库来存储和管理 Docker 镜像。以下操作必须在服务器安装 docker 和 docker-compose 的前提下。
2025-05-11 21:14:51
1572
原创 Git 分支指南
Git 分支是仓库内的独立开发线,你可以把它想象成一个单独的工作空间,在这里你可以进行修改,而不会影响主分支(或 默认分支)。分支允许开发者在不影响项目实际版本的情况下,开发新功能、修复错误或进行实验。
2025-05-10 22:07:55
1071
转载 MongoDB 和 ES 的一些对比
Elasticsearch特别擅长处理复杂的搜索和分析查询,而MongoDB在点查询和范围查询上表现良好。两者都提供了强大的分布式功能,但它们在数据一致性、集群管理和跨数据中心复制等方面有所不同。
2025-05-07 16:15:34
198
原创 LeetCode---整数反转
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。输入:x = -123。输入:x = 123。输入:x = 120。
2025-04-22 17:55:53
301
原创 Pandas 数据处理-10个高频使用技巧
Pandas 是Python 中最强大的数据分析工具之一,在数据科学、金融分析、机器学习等领域被广泛应用。
2025-04-20 21:25:30
1018
原创 Python 多重继承 MRO 机制
MRO 是指在一个多重继承的类层次结构中,Python解释器查找方法或者属性的顺序。简单来说,当调用一个方法或一个属性时,Python会按照 MRO 定义的顺序逐层搜索,直到找到方法或属性,或是遍历完成所有父类。广度优先:优先访问类的直接父类从左到右:在多重继承类中,优先访问继承列表左边的父类。继承链唯一:每个父类在 MRO 中只出现一次,确保顺序一致性。MRO 是 Python 中解决 多重继承问题的关键机制,定义了多重继承时方法和属性的查找顺序。
2025-04-18 16:00:16
1039
原创 Pydantic v2 的使用
使用 Pydantic 提供的 core_schema.str_schema 方法创建验证规则# 定义类型别名: Pydantic 提供的一个工具,用于动态生成核心模式(Core Schema)。CoreSchema: Pydantic Core 的核心模式定义,用于描述数据验证逻辑。Annotated: 来自 typing_extensions 模块,用于为类型添加元数据或额外的行为。是 Pydantic 的特殊方法,用于定义自定义类型的验证逻辑。
2025-04-15 17:23:33
1158
原创 python typing 类型注解的基本使用
typing模块为 Python带来了类型提示和类型检查的能力。它允许开发者在代码中添加类型注解,提高代码的可读性和可维护性。尽管Python 是一种动态类型语言,但类型注解能让开发者更清晰地了解函数和变量的预期类型。
2025-04-14 17:34:08
230
原创 File 类 (文件|文件夹操作)
在 JDK 中 通过 java.io.File 类,可以实现操作系统重文件|文件夹的创建、删除、查看、重命名等操作。
2025-04-12 17:22:17
1057
原创 Java IO 流
传输过程中,传输数据的最基本单位是字节FileInputStream 和 FileOutputStream 是文件操作常用的两种流,借助这两个流实现文件读取、文件输出、文件拷贝等功能。把硬盘上的文件读取到应用程序中使用 FileInputStream。把应用程序中文件内容输出到硬盘上使用 FileOutputStream。注意流使用完毕一定要关闭,释放资源如果输出流内容来源于输入流,要先关闭输出流后关输入流。// 创建文件对象// 使用字节输入流读取文件。
2025-04-12 16:58:42
1026
原创 Java 容器源码分析
JDK1.7及其之前,HashMap 底层是一个 table数组 + 链表 实现的哈希表存储结构,使用头插链表的每一个节点就是一个 Entry,其中包括:键key、值value、键的哈希码hash、执行下一个节点的引用next四部分//keyV value;//value//指向下一个节点的指针int hash;//哈希码从Java8开始HashMap底层由数组+链表+红黑树。使用HashMap时,当使用无参构造方法实例化时,设置扩容因子为默认扩容因子0.75。
2025-04-08 22:06:03
981
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人