- 博客(87)
- 收藏
- 关注
原创 Python 面向对象 - 依赖倒置原则 (DIP)
✅ 只为确实需要多实现的模块创建抽象。❌ 认为DIP就是依赖注入(DI)✅ DI是实现DIP的一种技术手段。✅ 遵循接口隔离原则(ISP)❌ 抽象接口包含太多方法。❌ 为每个类都创建接口。
2025-04-06 20:46:10
139
原创 Python面向对象编程 - 接口隔离原则(ISP)
接口隔离原则(Interface Segregation Principle, ISP)客户端不应该被迫依赖它们不使用的接口即:多个特定功能的接口比一个通用接口更好识别不同客户端的真实需求通过小接口精确描述功能使用组合/多重继承构建具体实现充分利用Python的动态特性实现灵活设计。
2025-04-06 20:38:09
221
原创 Python面向对象 - 里氏替换原则(LSP)
里氏替换原则(Liskov Substitution Principle, LSP)是SOLID五大原则中的"L",由Barbara Liskov提出:“子类对象必须能够替换其父类对象,而不会破坏程序的正确性。里氏替换原则是保证面向对象设计中多态能正确工作的基础原则。在Python这样的动态类型语言中,虽然编译器不会强制检查LSP,但遵守该原则能使代码更健壮、更易维护。通过合理设计继承层次、使用抽象基类(ABC)和类型提示,可以有效实现LSP。
2025-04-06 19:40:23
134
原创 Python面向对象-开闭原则(OCP)
开闭原则(Open-Closed Principle, OCP)是面向对象设计的五大SOLID原则之一,由Bertrand Meyer提出。其核心定义是:“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。对扩展开放:当需求变化时,可以通过添加新代码来扩展功能对修改关闭:已有的核心代码不应该被修改,保持稳定性。
2025-04-06 19:12:18
267
原创 Python面向对象编程 - 单一职责原则(SRP)
在Python中可以通过模块(文件)来进一步组织单一职责的类,如将数据库操作类放在。通俗理解:一个类/模块/函数应该只负责一项具体职责。一个类应该只有一个引起它变化的原因。
2025-04-06 11:33:03
440
原创 深入理解Python元组:从基础到高级应用
不可变序列:元组(tuple)是Python内置的不可变序列类型异构容器:可以存储不同类型的数据(与列表类似)语法特征:使用圆括号()定义,元素间用逗号分隔# 基本示例t1 = (1, 2, 3) # 标准元组t2 = 1, 2, 3 # 省略括号写法(称为"元组打包")t3 = (42,) # 单元素元组(必须加逗号)t4 = () # 空元组。
2025-04-05 21:49:56
231
原创 Python-文件操作
Python提供了丰富的文件操作功能,从基本的读写到高级的文件系统管理。总是使用with语句确保文件正确关闭处理所有可能的异常根据需求选择合适的文件打开模式对于大型文件,考虑内存高效的读取方式使用标准库模块处理特定格式(如csvjson等)考虑使用专门的库处理复杂场景(如pandas处理数据)掌握这些文件操作技巧将使你能够高效地处理各种文件相关的编程任务。
2025-04-05 21:38:16
688
原创 Python-函数参数
函数参数是向函数传递数据的主要方式,Python 提供了多种参数传递机制。Python 使用"对象引用传递"(按共享传参)接收任意数量的关键字参数,打包为字典。:当函数需要外部数据来完成其操作时。接收任意数量的位置参数,打包为元组。最常见的参数类型,按位置顺序传递。:常用于包装函数或配置参数传递。通过参数名指定,不依赖位置。:不确定需要接收多少参数时。:从其他函数获取参数后传递。:文档生成或参数验证框架。定义函数时指定默认值。
2025-04-05 19:16:01
282
原创 Python 匿名函数(Lambda函数)
匿名函数(也称为lambda函数)是Python中的一种小型匿名函数,它可以接受任意数量的参数,但只能有一个表达式。
2025-04-05 18:58:09
182
原创 Python-函数
在Python中,使用def"""简单的问候函数"""")Python函数是代码重用的基本单元,掌握函数的使用对于编写清晰、模块化和可维护的代码至关重要。从简单的函数定义到高级特性如装饰器和生成器,Python提供了丰富的功能来满足各种编程需求。
2025-04-05 16:08:12
262
原创 Python迭代器与生成器
迭代器和生成器都是Python中处理序列的强大工具生成器提供了更简洁的实现方式,特别适合处理大数据流理解这些概念对于编写高效、Pythonic的代码至关重要。
2025-04-05 16:00:37
166
原创 Python列表(List)深度解析
列表(List)是Python中最基础且强大的数据结构之一,但它的底层实现和特性远比表面看起来复杂。本文将深入探讨列表的各个方面。1.2 异构容器2. 底层实现原理Python列表实际上是动态数组的实现,其关键特性:3. 时间复杂度分析操作时间复杂度说明索引/取值O(1)直接计算内存偏移追加(append)平均O(1)可能触发扩容插入(insert)O(n)需要移动元素删除(del/pop)O(n)需要移动元素包含判断(in)O(n
2025-04-04 23:14:16
643
原创 Python 数据类型 - String
字符串(String)是 Python 中的基本数据类型之一,用于表示文本数据。字符串是由字符组成的不可变序列,可以使用单引号(‘)、双引号(")或三引号(’‘’ 或 “”")来定义。字符串是 Python 中非常重要的数据类型,用于处理文本数据。它具有不可变性,提供了丰富的操作方法和格式化方式,能够满足各种文本处理需求。
2025-03-31 22:13:59
238
原创 cp: cannot create regular file ‘/root/queues.conf’: No space left on devic
背景:在自己环境上部署的一个项目,在操作过程中,发现有一些服务文件找不到,导致操作不了,自己重装服务是,在备份文件是发现拷贝一些文件时爆出这个错误,记录一下,方便以后出现问题可以想起自己的排查这个问题的思路问题解决:首先查了下磁盘空间使用发现根目录满了,删除一些不用大文件后,就可以正常使用...
2021-04-15 17:43:20
1322
原创 Singularity入门(一) 基础容器镜像制作
镜像的制作配置文件Bootstrap:dockerFrom: ubuntu:18.04%help Redis 5.0.0 for Ubuntu%post apt-get update apt-get install -y wget build-essential wget http://download.redis.io/releases/redis-5.0.0.tar.gz tar xzf redis-5.0.0
2021-04-12 16:29:23
1519
原创 python 捕获错误堆栈
之前在框架时可以直接使用log进行错误堆栈的信息记录,有时我们没有log那么可以使用下边这种方式进行记录错误堆栈 import traceback try: raise Exception('test exception') except Exception as e: # 直接打印错误堆栈 traceback.print_exc() # 记录的是错误堆栈字符串信息返回的是字符串,我们可以根据自己的需求把堆栈信息进行记录
2021-03-19 10:36:44
542
原创 socket分包粘包以及一种处理方式(python)
socket分包与粘包分包粘包背景:在之前开发中遇到,从节点通过socket上报资源使用情况时,发现有时上报不上来,根据发现,由于数据比之前服务端设置的recv值大一些,导致分包,但服务端又直接按照整包的情况进行处理了,所以导致的问题。分包假设包的长度最长设置为5字节(较极端的假设,一般长度设置为1000到1500之间),那么在没有粘包的情况下,客户端发送一个大于5字节的包,那么就会产生分包的情况# 服务端import socketimport subprocessdin = socket
2021-02-25 15:24:53
1266
原创 golang序列化与反序列化例子记录
struct对象序列化package mainimport ( "encoding/json" "fmt")/*json数据的序列化与反序列化 */type Person struct { Name string Age int}func main() { p:=&Person{Name: "张三", Age: 16 } structJson, err := json.Marshal(p) if err!=nil{ fmt.Println("结构体序
2021-02-19 10:34:35
196
原创 golang单例模式的实现
golang单例模式1 定义:单例对象的类必须保证只有一个实例存在,全局有唯一接口访问2 分类:3 实现:4 sync.Once说明5 源码(once.go)1 定义:单例对象的类必须保证只有一个实例存在,全局有唯一接口访问2 分类:懒汉方式:指的是全局单例实例在第一次被使用时构建饿汉方式:指的是全局单例实例在类装载时构建3 实现:(1)懒汉方式type Singleton struct {}var ins *Singletonfunc GetInstance() *Single
2021-02-09 11:34:50
769
原创 golang文件读写os.OpenFile(“E:\\“, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)释义
在自学golang时遇到OpenFile中这些参数不知为什么要这样去写,记录一下os.O_WRONLY | os.O_CREATE | O_EXCL 【如果已经存在,则失败】 os.O_WRONLY | os.O_CREATE 【如果已经存在,会覆盖写,不会清空原来的文件,而是从头直接覆盖写】 os.O_WRONLY | os.O_CREATE | os.O_APPEND 【如果已经存在,则在尾部添加写】摘录至https://www.cnblogs.com/onebo
2021-02-08 18:45:01
3087
原创 yum安装netstat时出现No package netstat available解决
1.前言在使用yum安装netstat时,报没有netstat包的错误,具体如下[root@host1 ~]# yum install netstatLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfileepel/x86_64/metalink
2021-01-29 10:23:39
6901
原创 No package xxxxxx available.
第一种 环境搭建好后,配置源后出现的问题*解决方式yum install -y epel-release第二种 环境本身就没安装这个包直接yum去下载就可以其它目前还没遇到,遇到后再添加解决办法,如果各位遇到烦请留言...
2020-12-08 19:32:57
823
原创 TypeError: cannot unpack non-iterable int object问题
报错案例复现:def test(): return 1a,b = test()print(a)报错信息Traceback (most recent call last): File "D:/pytest/thread_test/subprocess_pipe.py", line 5, in <module> a,b = test()TypeError: cannot unpack non-iterable int object很明显是函数返回参数个数
2020-12-07 18:32:24
21171
原创 解决golang包get不下来的问题
针对此问题可进行设置代理的方式进行下载https://goproxy.io/zh/一个为Go模块而生的全球代理具体步骤打开cmd输入go env -w GO111MODULE=on设置代理go env -w GOPROXY=https://goproxy.cn,direct测试之前get的包是否能下载下来转载于:https://blog.youkuaiyun.com/qq_43442524/article/details/104900180...
2020-11-26 17:04:29
634
原创 Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
在模拟iscsi存储的时候安装的时候报这个错误自己处理步骤(仅供参考):加dns 114.114.114.114将/etc/yum.repos.d/epel.repo文件中的https全部改成http这下下载就好了
2020-08-14 11:43:35
944
原创 ovirt常用命令
ovirt常用命令解锁用户以下命令是在node主机上操作查看hosted-engine虚机的状态关闭hosted-engine虚机强制关闭hosted-engine虚机连接hosted engine存储域断开hosted engine存储域查看vdsm的服务状态重启vdsm服务通过virsh查看host上运行的虚机以下命令是在engine虚机/主机里执行查看engine服务状态重启ovirt-engine服务常用虚拟机命令列出所有已开启的虚拟机列出所有的虚拟机展示虚拟机信息关闭虚拟机启动虚拟机设置虚拟机跟随
2020-08-05 10:47:05
2249
转载 Redis并发key竞争问题
什么是key竞争简而言之,就是多客户端并发型的写一个key,本来按照顺序修改为4,3,2,但是由于并发的原因,导致顺序为4,2,3最后的key值变成3了,这种现象称为竞争key如何解决redis的并发竞争key1.分布式锁总的来说,就是准备一个锁,大家去器强锁,抢到锁后就执行set操作传统的锁是单点的操作,在分布式环境下,就需要分式锁。分布式锁可以基于很多方式实现zookeeper、redis,不管是哪种方式实现,基本原理上都差不多:用一个状态值表示锁,对锁的占用和释放通过状态值来标识什么是
2020-08-04 14:58:10
378
原创 django运行报错:SystemCheckError: System check identified some issues(后边还有一个datetime的model字段报错)
排错思路机相关解决方法首先查看自己的settings配置中是否有AUTH_USER_MODEL来指定用户model, 没有问题就接着下一步看着后边那个报错信息很明显,就是再使用Datetime这个Fileds的时候auto_now_add 或者auto_now和default同时使用了导致的删除了default后就能正常进行迁移,并且启动项目...
2020-08-01 14:52:18
1352
原创 nginx服务正常但是没办法访问页面
解决vim /etc/sysconfig/iptables按照22端口加一下80端口重启服务service iptables restart问题就这么解决了
2020-07-31 09:52:10
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人