自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ShellScript脚本编程(三)

除了系统函数之外还有自定义函数,接下来我们看一下自定义函数如何实现。

2024-05-02 21:11:55 725

原创 ShellScript脚本编程(二)

Shell中也有条件表达式,也就是比较两个值是否相等。

2024-05-02 19:35:46 368

原创 ShellScript脚本编程(一)

和和. hello.sh两种运行的方式差异性在于,第一种是在子bash环境下运行,而第二种是在当前bash环境下运行,我们通过运行可以看到(source 是 shell 内嵌)我们执行ps -f可以查看当前bash环境,创建一个子bash,继续通过ps -f查看,在当前子bash环境下,你依然可以运行shell文件如果子shell中设置的当前变量,父shell是可不见的age = 20全局变量和局部变量的区别全局变量:层层嵌套的子bash依然可以访问。

2024-05-02 19:07:46 680

原创 Linux软件安装

在Linux中编译安装软件通常需要执行以下几个步骤:下载源代码包可以从软件的官网、github等网下载解压源代码包进入软件包源代码目录在解压后得到的目录中,通常会有一个README文件、INSTALL、SETUP文件,其中描述了如何编译和安装软件执行configure脚本大多数软件包都包含了一个configure脚本,用于检测系统环境,并生成Makefile文件,Makefile文件包含了编译和安装软件所需的所有信息,执行./configure命令即可执行make命令。

2024-05-02 16:44:08 720

原创 Linux使用操作(二)

tar,称之为tarball,归档文件,仅将文件封装成一个.tar文件,未压缩文件体积.gz,也常见为.tar.gz,使用gzip算法进行压缩,从而大幅减小压缩后的文件体积针对这两种格式,使用tar命令均可以进行压缩和解压缩的操作语法tar [选项] [压缩文件] [被压缩的文件1,被压缩的文件2,被压缩的文件3...]选项-c,创建压缩文件,用于压缩模式-v,显示压缩、解压过程,用于查看进度-x,解压模式-f,要创建的文件,或要解压的文件。

2024-05-02 16:16:36 829

原创 Linux使用操作(一)

每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯IP地址主要有2个版本,V4版本和V6版本(V6很少用)IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字,如192.168.66.101就是一个标准的IP地址可以通过命令:ip addr 查看本机的ip地址。

2024-04-24 20:06:46 828

原创 Linux系统用户和权限

在Linux中,每个文件和目录都有一个和,用于控制对它们的无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响不同用户具有不同的权限,毎个用户在权限允许的范围内完成不同的任务用户组是一组用户的集合,由管理员定义目的就是更方便地管理和授予权限。同一用户组内的所有成员都具有相同的访问权,这些访问权取决于组的权限设置。

2024-04-24 18:05:58 749

原创 Linux基本命令(二)

VI是 "Visual interface" 的简称, 是Linux中最经典的文本编辑器VI不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序VI没有菜单,只有命令,且命令繁多VIM 是 VI 的改良版,增加了更多功能和特性,使它成为现代文本编辑器的代表之一VIM 支持多种颜色方案,语法高亮、自动缩进等功能,可以大大提高编程效率提示VIM兼容VI几乎所有命令VIM可以兼容多种操作系统。

2024-04-11 21:34:55 887

原创 Linux基本命令

cpcp(copy) 即拷贝文件和目录cp [-adfilprsu] 来源档(source) 目标档(destination)相当于 -pdr 的意思,至于 pdr 请参考下列说明;(常用)若来源档为链接档的属性(link file),则复制链接档属性而非文件本身;为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)进行硬式链接(hard link)的链接档创建,而非复制文件本身;

2024-04-10 20:12:18 786

原创 Linux系统概述与安装

我们可以借助虚拟机来获得可用的Linux系统环境进行学习啥是虚拟机虚拟机,是借助虚拟化技术,在我们的系统中,通过软件模拟计算机硬件,并且可以给模拟的硬件安装真实的操作系统。这样,就可以在电脑中,虚拟出一个完整的电脑,以供我们学习Linux系统。

2024-04-10 19:16:58 976

原创 python内存管理

Python是由C语言开发的,底层操作都是基于C语言实现,Python中创建每个对象,内部都会与C语言结构体维护一些值。源码下载,将压缩文件减压,可以看到有很多文件,主要关心两个(Include、Objects)在Include目录下object.h中可以查看创建对象的结构体。在创建对象时,每个对象至少内部4个值,PyObject结构体(上一个对象、下一个对象、类型、引用个数)。

2024-04-09 20:47:22 576

原创 python新特性

formatted字符串是带有'f'字符前缀的字符串,可以很方便的格式化字符串。

2024-04-09 19:42:45 752

原创 正则表达式

大多数字、字母和符号都会简单地匹配自身。例如,正则表达式test将会精确地匹配到test提示也可以不区分大小写,后面介绍但该规则有例外,有些字符是特殊的,并不匹配自身。因为这些字符,有表达式中,有特殊含义!. ^ $ * +?如果想匹配这些内容,只需要在符号前上1个就可以了,例如:匹配, 就可以写成\$匹配字符代码功能匹配任意1个字符(除了\n)[ ]匹配[ ]中列举的字符\d匹配数字,即0-9\D匹配非数字,即不是数字\s匹配空白,即 空格,tab键\S匹配非空白\w。

2024-04-09 19:05:58 1167

原创 生成器、迭代器、动态性

什么是生成器?生成器仅仅保存了一套生成数值的算法,并且没有让这个算法现在就开始执行,而是我什么时候调它,它什么时候开始计算一个新的值,并给你返回。

2024-04-05 21:59:25 1026

原创 装饰器深入剖析

装饰器来自Decorator的直译。什么叫装饰,就是装点、提供一些额外的功能。在 python 中的装饰器则是提供了一些额外的功能。装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器用于有以下场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。v1.0版本解决v2.0版本解决v3.0版本解决v4.0版本解决,装饰器修改变量名,见名知意增加参数处理,可以装饰任意多个参数的函数。

2024-04-05 21:44:51 713

原创 函数式编程

排序算法,排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较如果是自定义对象呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。【示例】sorted对list进行排序print("升序排列:",sorter1)

2024-04-05 17:01:28 806

原创 网络通信(二)

UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。UDP 不同于 TCP,不存在请求连接和受理过程,因此在某种意义上无法明确区分服务器端和客户端,只是因为其提供服务而称为服务器端。方法返回数据和客户端的地址与端口,这样,服务器收到数据后,直接调用。如下服务端、客户端代码几乎一模一样,注意接收和发送端口对应,即可。方法,而是直接接收来自任何客户端的数据。

2024-04-05 15:56:22 337

原创 网络通信(一)

TCP协议和UDP协议是传输层的两种协议。Socket是传输层供给应用层的编程接口,所以Socket编程就分为TCP编程和UDP编程两类。Socket编程封装了常见的TCP、UDP操作,可以实现非常方便的网络编程。在Python语言标准库中,通过使用socket模块提供的socket对象,可以在计算机网络中建立可以互相通信的服务器与客户端。在服务器端需要建立一个socket对象,并等待客户端的连接。客户端使用socket对象与服务器端进行连接,一旦连接成功,客户端和服务器端就可以进行通信了。

2024-04-04 15:30:53 1150

原创 网络与并发编程(二)

生产者指的是负责生产数据的模块(这里模块可能是:方法、对象、线程、进程)。

2024-04-04 14:41:42 752

原创 网络与并发编程(一)

同步和异步强调的是消息通信机制 (synchronous communication/ asynchronous communication)。同步(synchronous):A调用B,等待B返回结果后,A继续执行异步(asynchronous ):A调用B,A继续执行,不等待B返回结果;B有结果了,通知A,A再做处理。

2024-04-03 17:03:56 828

原创 pygame--坦克大战(总代码)

如果有地方报错,那可能是因为你没有导包,或者你没有图片什么的,这些需要你自己去寻找,还可能是因为没有音频。

2024-04-03 16:18:59 537

原创 pygame--坦克大战(三)

添加显示子弹按空格键产生子弹,并将子弹添加到子弹列表中将子弹添加到窗口。

2024-04-03 16:16:08 924

原创 pygame--坦克大战(二)

敌方坦克的方向是随机的,使用随机数生成。初始化敌方坦克。生成随机的四个方向创建敌方坦克。

2024-04-02 23:25:14 873

原创 pygame--坦克大战(一)

本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认5个的(这可以自己设置),当然,如果我方坦克被敌方坦克的子弹打中,游戏结束。从面向对象分析该项目有以下类组成:主类主要包括开始游戏、结束游戏的功能。坦克类:主要包括坦克的创建、显示、移动及射击的功能。我方坦克类继承坦克类,主要包括创建、与敌方坦克的碰撞方法敌方坦克类继承坦克类,主要包括创建、与我方坦克碰撞方法。

2024-04-02 12:38:32 755

原创 pygame的搭建

set_mode函数:会返回一个Surface对象,代表了在桌面上出现的那个窗口。在3个参数中,第1个参数为元组,表示屏幕的大小;第2个标志位,具体含义如下表所示,如果不用什么特性,就指定0;如果未安装pygame模块的,打开控制台执行 pip install pygame 命令进行安装。游戏的主循环是一个无限循环,直到用户退出。在这个主循环里面做的事情就是不停的刷新新画面。其中最常用模块的具体说明如下表所示。在Pygame框架中有很多模块,官方网址。对上述示例代码的具体说明如下所示。

2024-04-01 23:59:27 911

原创 python模块

强大的标准库奠定了python发展的基石,丰富和不断扩展的第三方库是python壮大的保证。我们可以进入PyPI官网():可以看到发布的第三方库达到了十多万种,众多的开发者为Python贡献了自己的力量。表 常用第三方库大汇总分类库名称说明环境管理P非常简单的交互式 python 版本管理工具Pyenv简单的 Python 版本管理工具Vex可以在虚拟环境中执行命令创建独立 Python 环境的工具包管理pipPython 包和依赖关系管理工具pip-tools。

2024-04-01 23:43:08 1167

原创 文件处理(二)

csv是逗号分隔符文本格式,常用于数据交换、Excel文件和数据库数据的导入和导出。Python标准库的模块csv提供了读取和写入csv格式文件的对象。我们在excel中建立一个简单的表格:另存为。

2024-03-18 19:55:45 881

原创 文件处理(一)

Python标准库中,如下是文件操作相关的模块。名称说明用于处理压缩和解压缩文件(分别对应不同的算法)csv模块用于csv文件处理filecmp模块用于文件的比较fileinput模块处理多个输入文件fnmatch模块使用模式来匹配文件路径名glob模块查找符合特定规则的文件路径名io模块文件流的输入和输出操作 input outputos模块基本操作系统功能,包括文件操作pickle和cPickle用于序列化和反序列化xml包用于XML数据处理。

2024-03-18 18:27:39 825

原创 异常机制总结

程序开发中,有时候我们也需要自己定义异常类。自定义异常类一般都是运行时异常,通常继承Exception或其子类即可。命名一般以ErrorException为后缀。自定义异常由raise语句主动抛出。【示例】自定义异常类和raise语句#测试自定义异常类class AgeError(Exception): #继承Exceptionreturn str(self.errorInfo)+",年龄错误!应该在1-150之间"############测试代码################

2024-03-16 11:19:10 870

原创 集合Python开发环境搭建

虚拟环境就是虚拟出来的一个隔离的Python环境,每个项目都可以有自己的虚拟环境,用pip安装各自的第三方包,不同项目之间也不会存在冲突。

2024-03-13 20:27:21 1122

原创 面向对象(五)

设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计模式有很多种,比较流行的是:GOF(Goup Of Four)23种设计模式。两个最常用的模式:工厂模式和单例模式。工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。

2024-03-13 19:18:43 437

原创 面向对象(四)

在子类中,如果想要获得父类的方法时,我们可以通过super()来做。super()代表父类的定义,不是父类对象。super(子类名称,self).__init__(参数列表)class A:print("A的构造方法")​​super(B,self).__init__() #调用父类的构造方法print("B的构造方法")#A.say(self) 调用父类的say方法super().say() #通过super()调用父类的方法​b = B()b.say()A的构造方法。

2024-03-13 18:55:06 1046

原创 面向对象(三)

xxx:保护成员,不能用导入,只有类对象和子类对象能访问这些成员。(⚠️讲完模块再看)__xxx__:系统定义的特殊成员__xxx: 类中的私有成员,只有类对象自己能访问,子类对象也不能访问。(但,在类外部可以通过对象名. _类名__xxx这种特殊方式访问。Python不存在严格意义的私有成员)⚠️ 再次强调,方法和属性都遵循上面的规则。

2024-03-13 02:00:00 623

原创 面向对象(二)

静态方法”和在模块中定义普通函数没有区别,只不过“静态方法”放到了“类的名字空间里面”,需要通过“类调用”。类属性是从属于“类对象”的属性,也称为“类变量”。由于,类属性从属于类对象,可以被所有实例对象共享。构造方法用于执行“实例对象的初始化工作”,即对象创建后,初始化当前对象的相关属性,无返回值。Python是动态语言,我们可以动态的为类添加新的方法,或者动态的修改类的已有的方法。实例属性是从属于实例对象的属性,也称为“实例变量”。该方法使得实例对象可以像调用普通函数那样,以“对象名()”的形式使用。

2024-03-12 20:47:34 874 1

原创 面向对象(一)

类:我们叫做class。对象:我们叫做objectinstance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。

2024-03-12 19:32:14 807 1

原创 python——函数(三)

递归(recursion)是一种常见的算法思路,在很多算法中都会用到。因此,使用时候,要慎重!递归函数指的是:自己调用自己的函数,在函数体内部直接或间接的自己调用自己。⚠️递归函数由于会创建大量的函数对象、过量的消耗内存和运算能力。表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。运算结果是:表达式的运算结果。注释掉,观察控制台打印的内容,体会LEBG的搜索顺序。表示递归什么时候结束。指的是嵌套函数(一个函数包裹另一个函数,闭包)函数是一种简单的、在同一行中定义函数的方法。

2024-02-26 23:26:37 818 1

原创 python——函数(二)

Python中“一切皆对象”,所有的赋值操作都是“引用的赋值”。所以,Python中参数的传递都是“引用传递”,不是“值传递”。传递参数是可变对象(例如:列表、字典、自定义的其他可变对象等),实际传递的还是对象的引用。按位置传递的参数,称为:“位置参数”。print("n:",id(n)) #传递进来的是a对象的地址。我们也可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数”可变参数指的是“可变数量的参数”。

2023-12-15 18:23:53 26

原创 python——函数(一)

函数是可重用的程序代码块。函数的作用,不仅可以实现代码的复用,更能实现代码的一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。在编写函数时,函数体中的代码写法和我们前面讲述的基本一致,只是对代码实现了封装,并增加了函数调用、传递参数、返回计算结果等内容。⚠️为了让大家更容易理解,掌握的更深刻。我们也要深入内存底层进行分析。绝大多数语言内存底层都是高度相似的,这样大家掌握了这些内容也便于以后学习其他语言。函数简介函数(function)的基本概念。

2023-12-12 23:58:39 44

原创 python——控制语句(三)

我们可以通过zip()函数对多个序列进行并行迭代,zip()函数在最短序列“用完”时就会停止。{100: '泉州', 200: '厦门', 300: '龙岩', 400: '三明'}或者:{表达式 for item in 可迭代对象 if 条件判断}类似于列表推导式,字典推导也可以增加if条件判断、多个for循环。values = ["泉州","厦门","龙岩","三明"]#不适用推导式,生成列表。names = ("白","李","林","刘")jobs = ("老师","程序员","公务员")

2023-12-11 23:02:26 56 1

原创 python——控制语句(二)

empNum = 0s = input("请输入员工的薪资(按Q或q结束)")​print("录入结束")breakprint("无效!继续录入!")continueprint("录入成功!")empNum +=1​print("员工数{0}".format(empNum))print("录入薪资:",salarys)print("总发薪资:",salarySum)

2023-12-11 19:53:19 70 1

空空如也

空空如也

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

TA关注的人

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