- 博客(61)
- 收藏
- 关注
原创 Python装饰器
闭包 闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures),是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。 以 Python 为例更通俗的解释一下:比如我们调用一个带有返回值的函数 x,此时函数 x 为我们返回一个函数 y,这个函数 y
2022-04-02 16:17:26
431
原创 命名空间&作用域
命名空间 概念 命名空间(namespace)是名称到对象的映射,当前大部分命名空间都是通过 Python 字典来实现的,它的主要作用是避免项目中的名字冲突,每一个命名空间都是相对独立的,在不同的命名空间中可以同名,在相同的命名空间中不可以同名。 种类 命名空间主要有以下三种: 内置:主要用来存放内置函数、异常等,比如:abs 函数、BaseException 异常。 全局:指在模块中定义的名称,比如:类、函数等。 局部:指在函数中定义的名称,比如:函数的参数、在函数中定义的变量等。 生命周期 通常在不
2022-04-02 16:17:03
399
原创 迭代器&生成器
迭代器 迭代 我们知道 Python 中有一些对象可以通过 for 来循环遍历,比如:列表、元组、字符等,以字符串为例,如下所示: for i in 'Hello': print(i) 执行结果: H e l l o 这个遍历过程就是迭代。 可迭代对象 可迭代对象需具有 __iter__() 方法,它们均可使用 for 循环遍历,我们可以使用 isinstance() 方法来判断一个对象是否为可迭代对象,看下示例: from collections import Iterable pr
2022-03-25 15:35:45
163
原创 正则表达式
1. 简介 正则表达式是一个强大的字符串处理工具,几乎所有的字符串操作都可以通过正则表达式来完成,其本质是一个特殊的字符序列,可以方便的检查一个字符串是否与我们定义的字符序列的某种模式相匹配。 正则表达式并不是 Python 所特有的,几乎所有编程语言都支持正则表达式,Python 提供了内置模块 re 和第三方模块 regex 来支持正则表达式,regex 模块提供了与 re 模块兼容的 API 接口,同时还提供了额外的功能和更全面的 Unicode 支持,本文只介绍 re 模块。 2. 使用 2.1 语
2022-03-25 15:34:19
311
原创 sys模块
1. 简介 sys 模块主要负责与 Python 解释器进行交互,该模块提供了一系列用于控制 Python 运行环境的函数和变量。 之前我们说过 os 模块,该模块与 sys 模块从名称上看着好像有点类似,实际上它们之间是没有什么关系的,os 模块主要负责与操作系统进行交互。 2. 使用 我们先整体看一下 sys 模块都包含哪些内容,如下所示: >>> import sys >>> dir(sys) ['__displayhook__', '__doc__', '__ex
2022-03-25 15:33:55
1400
原创 数学相关模块
简介 我们来看一下 Python 中数学相关模块,如下所示: 模块 描述 math 提供了对 C 标准定义的数学函数的访问(不适用于复数) cmath 提供了一些关于复数的数学函数 decimal 为快速正确舍入的十进制浮点运算提供支持 fractions 为分数运算提供支持 random 实现各种分布的伪随机数生成器 statistics 提供了用于计算数字数据的数理统计量的函数 本文具体介绍一下相对比较常用的模块:math、decimal 和 random。 1.
2022-03-25 15:33:39
149
原创 Python枚举
简介 起初 Python 中并未内置枚举(enum)类型,枚举是在 Python3.4 添加的新功能,此时我们可能会有一个疑问:Python3.4 之前的版本还能不答案是可以使用,但是不能直接使用,使用之前需要先用 pip install enum 安装。 什么是枚举? 枚举可看作是一系列符号名称的集合,集合中每一个元素要保证唯一性和不可变,因此我们可以对枚举中元素进行恒等比较,通俗来讲枚举就是一系列常量的集合,枚举是可迭代的。 枚举有什么作用? 我们先来思考一个问题:不使用枚举我们如何定义常量呢? 常用的
2022-03-25 15:33:00
286
原创 错误&异常
简介 程序中的错误我们通常称为 bug ,工作中我们不仅需要改自己程序中的 bug ,还需要改别人程序中的 bug ,新项目有 bug 要改,老项目也有 bug 要改,可以说 bug 几乎贯穿一个程序员的职业生涯… 我们通常将 bug 分为 Error(错误) 和 Exception(异常),我们下面来具体学习下 Python 中的 错误 和 异常。 错误 错误 通常是指程序中的 语法错误 或 逻辑错误 异常 即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误,运行期检测到的错误
2022-03-25 15:32:35
161
原创 Python os模块
简介 os 中文就是操作系统的意思,顾名思义,Python 的 os 模块提供了各种操作系统的接口,这些接口主要是用来操作文件和目录。 Python 中所有依赖于操作系统的内置模块统一设计方式为:对于不同操作系统可用的相同功能使用相同的接口,这样大大增加了代码的可移植性;当然,通过 os 模块操作某一系统的扩展功能也是可以的,但这样做会损害代码的可移植性。 常用函数 os.getcwd() 查看当前路径。 import os print(os.getcwd()) os.listdir(path) 返回指
2022-03-25 15:32:16
110
原创 文件基本操作
简介 在编程工作中文件操作还是比较常见的,基本文件操作包括:创建、读、写、关闭等,Python 中内置了一些文件操作函数,我们使用 Python 操作文件还是很方便的。 基本操作 创建 Python 使用 open() 函数创建或打开文件,语法格式如下所示: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None,closefd=True, opener=None) 参数说明如下所示: file:表示将要打
2022-03-25 15:31:41
242
原创 Python面向对象
面向对象 面向对象(OOP)是一种对现实世界理解和抽象的方法,对象的含义是指在现实生活中能够看得见摸得着的具体事物,一句比较经典的描述是一切皆对象,Python 是一门面向对象的语言,面向对象编程简单来说就是一种封装代码的方式。 面向对象相关概念 类:描述具有相同属性和方法的集合,简单来说就是一个模板,通它来创建对象。 对象:类的实例。 方法:类中定义的函数。 类变量:定义在类中且在函数之外的变量,在所有实例化对象中公用。 局部变量:方法中定义的变量,只作用于当前实例。 面向对象三大特性 封装:隐藏对
2022-03-25 15:31:09
111
原创 Python模块&包
简介 模块 Python 中一个以 .py 结尾的文件就是一个模块,模块中定义了变量、函数等来实现一些类似的功能。Python 有很多自带的模块(标准库)和第三方模块,一个模块可以被其他模块引用,实现了代码的复用性。 包 包是存放模块的文件夹,包中包含 __init__.py 和其他模块,__init__.py 可为空也可定义属性和方法,在 Python3.3 之前的版本,一个文件夹中只有包含 __init__.py,其他程序才能从该文件夹引入相应的模块、函数等,之后的版本没有 __init__.py 也能
2022-03-25 15:30:08
98
原创 python函数
简介 简单来说函数就是一段实现特定功能的代码,使用函数可以提高代码的重复利用率。Python 中有很多内置函数,比如之前常用的 print 函数,当内置函数不足以满足我们的需求时,我们还可以自定义函数。 自定义函数 Python 使用 def 关键字来声明函数,格式如下所示: def 函数名(参数): 函数体 return 返回值 如果要定义一个无任何功能的空函数,函数体只写 pass 即可。格式如下所示: def 函数名(): pass 当我们不确定参数的个数时,可以使用不定长参数,在参数名前加
2022-03-23 14:34:45
121
原创 与时间相关的模块
time模块 time 模块提供了很多与时间相关的类和函数,下面我们介绍一些常用的。 struct_time类 time 模块的 struct_time 类代表一个时间对象,可以通过索引和属性名访问值。对应关系如下所示: 索引 属性 值 0 tm_year(年) 如:1945 1 tm_mon(月) 1 ~ 12 2 tm_mday(日) 1 ~ 31 3 tm_hour(时) 0 ~ 23 4 tm_min(分) 0 ~ 59 5 tm_sec(秒) 0 ~ 61
2022-03-23 14:34:15
153
原创 字典&集合
字典 dict的内容都是以键-值(key-value)的方式存在的。dict 拥有良好的查询速度,dict 中的值可以是任意 Python 对象,多次对一个 key 赋 value,后面的 value 会把前面的 value 覆盖。 创建 字典的内容在花括号 {} 内,键-值(key-value)之间用冒号 : 分隔,键值对之间用逗号 , 分隔,比如创建字典 d,可以直接创建和用 dict() 创建如下所示: d = {'name':'小明', 'age':'18'} # 使用 dict 函数 # 方式一
2022-03-23 14:33:58
148
原创 列表&元组
列表 Python 中没有数组,而是加入了功能更强大的列表(list),列表可以存储任何类型的数据,同一个列表中的数据类型还可以不同;列表是序列结构,可以进行序列结构的基本操作:索引、切片、加、乘、检查成员。 基本使用 创建 列表中所有元素都放在一个中括号 [] 中,相邻元素之间用逗号 , 分隔,如下所示: l = [1024, 0.5, 'Python'] 访问 通过索引访问列表中的值,还可以使用 : 截取范围内的元素,如下所示: l = [1024, 0.5, 'Python'] print('l[0
2022-03-23 14:33:33
118
原创 python序列
简介 Python 中的序列是一块可存放多个值的连续内存空间,所有值按一定顺序排列,每个值所在位置都有一个编号,称其为索引,我们可以通过索引访问其对应值。 字符串就是序列结构,除此之外常见的序列结构还包括列表、元组等。 基本使用 索引 序列索引支持非负数和负数,索引为非负数,从 0 开始, 索引为负数由右向左计数,从 -1 开始 str = 'Python' print('str[0] str[-6] =', str[0], str[-6]) print('str[5] str[-1] =', str[
2022-03-23 14:33:04
88
原创 字符串基本操作
基本操作 访问单个字符串 s = 'Python' # 访问第一个字符 P print(s[0]) 访问范围内字符 # 访问范围内字符 s = 'string' # 访问tr print(s[1:3]) # 访问str print(s[:3]) # 访问ing print(s[3:]) 单个字符编码 Python 使用了 ord() 函数返回单个字符的编码,chr() 函数把编码转成相应字符 # 单个字符编码 s = 'A' print(ord(s)) print(chr(65)) 转义符 之前我
2022-03-23 14:32:26
196
原创 python的数据类型
数值类型 我有三种数值类型,分别是:整型(int)、浮点型(float)、复数(complex),如果你使用的还是我的低版本 Python2,那么还包含长整型(long) 整形 包括正整数、负整数。如:1024、-1024。整型有四种进制表示,分别为:二进制、八进制、十进制、十六进制 种类 描述 引导符 二进制 由 0 和 1 组成 0b 或 0B 八进制 由 0 到 7 组成 0o 或 0O 十进制 默认情况 无 十六进制 由 0 到 9、a 到 f、A 到 F 组成,不区分大
2022-03-23 14:31:37
138
原创 python基本语句
条件语句 在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断 if 判断条件1: 执行语句1... elif 判断条件2: 执行语句2... elif 判断条件3: 执行语句3... else: 执行语句4... 循环语句 当需要多次重复执行时,我们要用到循环语句,Python 提供了 for 循环和 while 循环。 for循环 for 循环可以遍历任何序列,比如:字符串 # for循环 str = 'python'
2022-03-23 14:31:05
303
原创 python基础2
标识符 标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。 以下划线开头的标识符有特殊含义,单下划线开头的标识符,如:_xxx ,表示不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 导入;双下划线开头的标识符,如:__xx,表示私有成员; 双下划线开头和结尾的标识符,如:__xx__,表示 Python 中内置标识,如:init() 表示类的构造函数。 关键字 and
2022-03-23 14:30:28
101
原创 Python基础
变量 变量(标识符) 定义:存储信息+可操作对象 标识符的命名:([a-zA-Z] [a-zA-Z0-9_])+大小写敏感 变量使用:赋值即可用,不需要声明或定义数据类型 数据类型 —python把在程序中用到的任何定西都称为“对象” 空对象:None Boolean:True, False 整形: 整数,长整数, 浮点数(3.23和52.3E-4)和 复数((-5+4j)和(2.3-4.6j)) 字符串: 在python中没有专门的char数据类型 单引号和双引号字符串是完全相同的 用自
2022-03-23 14:29:33
135
原创 JVM垃圾回收
JVM的垃圾回收 垃圾回收概述 1.Java和C++语言的区别,就在于垃圾收集技术和内存动态分配上,C++语言没有垃圾收集技术,需要程序员手动的收集。 2.关于垃圾收集有三个经典问题: 哪些内存需要回收? 什么时候回收? 如何回收? 3.垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。 什么是垃圾
2021-10-24 14:35:25
147
原创 JVM概述
JVM虚拟机 虚拟机概述 1.类加载 类加载子系统的作用 类加载器子系统负责从文件系统或者网络中加载 class 文件,class文件在文件开头有特定的文件标识 (字节码文件都以 ca fe ba be 标识开头 )。 classLoader只负责class文件的加载,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是class文件中常量池部分的内存映射). 类加载ClassLoader的角色 1.cla
2021-09-09 23:38:55
185
原创 UML建模语言
UML建模语言 建模语言(UnifiedModelingLanguage,UML)是用来设计软件蓝图的可视化建模语言,1997年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标准. 建模语言能为软件开发的所有阶段提供模型化和可视化支持。而且融入了软件工程领域的新思想、新方法和新技术,使软件设计人员沟通更简明,进一步缩短了设计时间,减少开发成本。 类 (1)类名(Name)是一个字符串,例如,Student。 (2)属性(Attribute)是指类的特性,即类的成员变量。UML按以下格
2021-08-31 20:47:47
437
3
原创 Redis
Redis Redis是什么? Redis是开源的,C语言编写的,支持网络交互的,非关系型数据库(也可以用作缓存和消息中间件)。 缓存:将数据存储到内存中(程序使用时,可以缓存数据,具有临时性,速度快) SqlSession 一级缓存 SqlSessionFactory 二级缓存 可设置有效时间 优点:减轻数据库压力 Redis支持多种类型的数据结构,如字符串(Strings),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets)与范围查询,b
2021-08-31 20:39:03
255
原创 nginx
nginx 概述 Nginx是由俄罗斯的程序设计师开发的高性能的web和反向代理服务器,也是一个IMAP/POP3/SMTP代理的服务器。(IMAP交互式邮件访问协议,POP3邮局协议的第三个版本,SMTP简单邮件传输协议 ) 特点: 占有内存小,并发能力强 Nginx不仅能做反向代理,实现负载均衡;还能作为正向代理来进行上网等功能。 什么是代理服务器 所谓代理服务器就是位于发起请求的客户端与原始服务器端之间的一台跳板服务器,正向代理可以隐藏客户端,反向代理可以隐藏原始服务器。 正向代理
2021-08-31 20:31:37
247
原创 MySql高级
MySql高级 MySql基础 数据库的概述:是一个数据管理系统 存储:按照特定的规则存储 管理:sql增删改查操作 数据库的类型: 关系型数据库 非关系型数据库 数据库的环境搭建: 安装服务器端(sqlyog) 可视化客户端工具 sql: DDL:创建数据表结构 DML:对数据的增,删,改 DQL:对数据的查询(查询结果的处理:排序,多表关联,条件查询,模糊查询,数量限制,分组,函数) MySql高级 MySql引擎 引擎就是数据库在处理数据时的机制 不同
2021-08-31 20:23:34
371
原创 ThreadLocal
ThreadLocal 为每一个线程赋值一份变量副本(创建一个ThreadLocal对象,用来为每个线程保存一份变量,实现线程封闭) 底层使用一个ThreadLocalMap对象存储 使用ThreadLocal存在内存泄露问题: 使用ThreadLocal对象作为键,是弱引用,可以被回收掉,键为null,但是value值为强引用,不会被回收掉 ThreadLocal正确的使用方法: 建议:每次使用完ThreadLocal都调用它的remove()方法清除数据. 线程池 任务多且简单时,为了减少频
2021-08-31 18:08:53
132
原创 并发 编程
并发编程 并行与并发 **并发(concurrent):**是同一时间应对多件事情的能力(串行)。 **并行(parallel):**是同一时间动手做多件事情的能力。 程序,进程,线程 **程序 (program)????*是为了完成特定的任务,用某种语言编写的一组指令的集合. 即指一段静态事物代码. **进程 (process)????*就是正在执行的程序,从Windows角度讲,进程是含有内存和资源并安置线程的地方(操作系统分配资源的单元,运行中的程序) **线程 (thread)????*进程可进一步
2021-08-31 18:01:25
327
2
原创 IDEA的web项目的创建极其服务器的配置
WEB流程 1.创建一个WEB项目 先创建一个普通的java项目,然后在ADD Frameworks Support选项中选择Web Application(versions:4.0) 2.配置服务器(TomCat) 3.在WEB-INF下建立lib包导入所需jar包 servlet-api.jar jsp-api.jar mysql-connector-java-8.0.16.jar jstl-1.2.jar 4.建立对应的包结构 filter 过滤器 (解决中文字符集乱码等) 1.
2021-05-25 15:10:00
616
原创 servlet的搭建及配置
Servlet Web开发概述 学习Web开发,需要先安装一台Web服务器,将开发好的Web项目部署在Web服务器中供外界访问 Web服务器 狭义上讲:Web服务器是一款软件(程序),是一个连接用户与程序之间的中间件 广义上讲:可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览. Web服务器有很多,流行的Web服务器有TomCat,WebSphere,WebLogic,Jboss Servlet搭建 继承HttpServlet重写父类方法 构造方法(可以不写,在父类中继承) g
2021-05-22 11:17:57
744
原创 java的图形界面GUI
GUI GUI的概念 GUI ( Graphical User Interface ) 即图形用户界面,它能够使应用程序看上去更加友好 Swing概述 Swing是纯Java组件,使得应用程序在不同的平台上运行时具有相同外观和相同的行为 Swing中的大部分组件类位于javax.swing包中 Swing中的组件非常丰富,支持很多功能强大的组件 容器组件 Java的图形用户界面的基本组成部分是组件,组件是一个以图形化的方式显示在屏幕上并能与用户进行交互的对象 组件不能独立地显示出来,必须将组件放在一定
2021-05-16 20:54:11
294
原创 异常处理,try/catch/finally/throws/throw,自定义异常
Java异常 异常 : 在java语言中,将程序执行中发生的不正常情况称为"异常" Java程序在执行过程中所发生的异常(运行时一切不正常情况)事件可分为两类: Error : java虚拟机无法解决的严重问题. 如 : JVM系统内部错误,资源耗尽等严重情况.一般不编写针对性的代码处理. public static void main(String[] args) { Demo1 d = new Demo1(); //java.lang.StackOverflowError
2020-12-16 19:52:12
240
2
原创 冒泡排序,选择排序,插入排序
数组排序 冒泡排序(Bubble Sort) 工作原理 : 比较相邻的两个元素,如果前一个比后一个大,就交换它们两个,从头到尾对每一对元素都做比较,这样最大的元素就会被移到最后面,元素从前到后依次按从小到大排列. 算法描述 : 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成。 代码展示 public class
2020-12-09 14:39:03
109
原创 数组,二维数组
数组 **数组:**相同数据类型元素的集合 数组本身是引用数据类型,即对象,但数组可以存储基本数据类型,也可以存储引用数据类型 数组的声明 数组的声明有两种方式 : 数据类型 [ ] 数组名字 例如 : int [ ] a; 数据类型 数组的名字 [ ] 例如 : int a [ ]; PS : 在Java语言中两种声明方法没有任何区别,但是建议大家用第一种,避免混淆a的数据类型 数组创建 数组创建的三种方式 : 声明数组的同时,根据指定的长度分配内存,但数组中元素
2020-12-09 14:37:51
160
原创 接口&多态
接口 生活中的接口 : USB风扇,USB接口,U盘 接口可以实现的功能 : 编写USB接口---------->根据需求设计方法 实现USB接口---------->实现所有方法 使用USB接口---------->用多态的 认识接口 所有属性默认为 : public static final 所有方法默认为 : public abstract 接口的特性 : 接口不可以被实例化 实现类必须重写接口的所有方法 实现类可以实现多个接口 接口中的变量都是静态常量 面向接口编程 关心实现类
2020-12-09 14:34:23
196
原创 封装,继承,this,super,重写,关联,依赖,抽象abstract
封装 概念 : 将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问 封装的好处 : 只能通过规定的方法访问 隐藏类的实现细节 方便加入控制语句 方便修改实现 public class Demo{ //属性用private权限 private String name; //方法用public权限 public String getName (){ return name; } public void
2020-12-01 11:32:17
148
原创 面向对象2(对象与引用& static & 代码块 & )
对象与引用 java语言中除基本类型之外的变量类型都称之为引用类型 Java中的对象是通过引用对其操作的. 用汽车类来说明 : 自定义一个Car类(汽车类) class Car{ String color; String name; String model; } Car car=new Car(); //通常把这条语句的动作称之为创建一个对象 /* 1)右边的“new Car()”,是以Car类为模板,调用Car类的构造函数,在堆空间里创建一个Car类对象。 2)左边的“Car ca
2020-11-30 17:59:26
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人