自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashSet源码分析

public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVersionUID = -5024744406713321676L; // 底层使用HashMap来保存HashSet中所有元素。 private transient Has

2021-07-10 12:33:53 483

原创 装饰器

一 闭包:函数作参数,返回值,嵌套函数(https://www.runoob.com/w3cnote/python-func-decorators.html)装饰器import functools定义一个装饰器logdef log(func): # 函数做参数 @functools.wraps(func) def wrapper(*args, **kwargs): # 定义嵌套函数 print('call %s():' % func.__name__)

2021-03-24 13:05:54 460

原创 数据提取(三):xpath -在lxml中使用xpath语法以获取标签、属性、内容

hello.html<html><body> <div> <ul> <li class="item-0"><a href="link1.html">first item</a></li> <li class="item-1"><a href="link2.html">second item</a>&lt

2020-11-25 13:35:24 4698

原创 数据提取(二):xpath - lxml从字符串和文件中解析html代码 etree.html(),etree.tostring(),etree.parse(),etree.HTMLParser()

一、lxml库简述lxml库是一个HTML、XML的解析器,主要功能是如何解析和提取HTML、XML数据。它和正则一样是用 C 实现的,是一款高性能的 Python HTML/XML 解析器,可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。lxml python 官方文档:http://lxml.de/index.html需要安装C语言库,可使用 pip 安装:pip install lxml二、lxml库的基本使用(1)从字符串中解析HTML代码:etree.html(str

2020-11-24 17:50:01 5800 3

原创 数据提取(一):Xpath - 语法

一、Xpath简述:https://www.runoob.com/xpath/xpath-intro.htmlxpath(XML Path Language)是一门在XML、HTML文档中查找信息的语言,可用来在XML HTML文档中对元素和属性进行遍历二、Xpath Helper简述:https://www.cnblogs.com/tinghai8/p/9552539.htmlxPath helper 是xpath的开发工具,是一款 Chrome 浏览器的开发者插件/Firefox插件为Try Xp

2020-11-24 14:31:33 530

原创 requests库(一):

安装 pip install requests官方文档 http://docs.python-requests.org/zh-CN/latest/index.html官方中文文档https://requests.readthedocs.io/zh_CN/latest/github地址:http://github.com/requests/requests还可以在pycharm中安装第三方库 file->settings->project->+...

2020-11-20 23:16:50 139 1

原创 cookie(一)http.cookiejar模块:两种方法实现模拟登录、cookie本地保存和加载

一、cookie基本概念介绍二、cookie模拟登录""""访问一个需要登录的网站需要加入cookie在headers中以访问知乎热榜https://www.zhihu.com/hot为例不登录无法访问热榜的内容 :从程序控制台输出的网页内容中ctrl+F查找网页中复制的内容 发现找不到,即使我们在headers中加了User-Agent也访问不了热榜内容解决方法一: headers中加入从https://www.zhihu.com/hot网页复制的cookie 注意仅仅在 hea

2020-11-20 17:53:13 3102

原创 urllib库(三)parse模块:quote()/quote_plus(),unquote()/unquote_plus(),quote_from_bytes()

y

2020-11-19 15:15:24 11019

原创 urllib库(二)parse模块:urlparse()/urlsplit(),parse_qs()/parse_qsl(),urlunparse()/urlunsplit(),urlencode()

tt

2020-11-18 21:39:29 1841

原创 urllib库(一)request模块:urlopen(),Request() 实现 get/post,urlretrieve() 下载网页文件,ProxyHandler()设置代理

一、urllib库python3内置的urllib库不需要安装直接import导入该库中主要模块有:urllib.request:用来打开和读取URL,是一个请求模块urllib.error:包含了urllib.request产生的异常,是一个异常处理模块urllib.parse:用来解析和处理URL,是一个解析模块urllib.robotparse:用来解析页面的robots.txturllib.response:响应模块>>> help(urllib)Help on

2020-11-18 00:07:32 1545 1

原创 HTTP简述(一):URL解析、请求方法post/get、请求头参数、响应码,chrome抓包工具

2020-11-15 13:32:46 2555

原创 文件(二)open()read()readline()readlines()write()writelines()close() flush()remove()tell()seek()with-as

一、open()file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])file:表示要创建的文件对象。file_name:要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。 如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可; 否则,此参数需要指定打开文件所在的完整路径。 mode:可选参数,用于指定文件的打开模式。如果不写,则默认以只读(r)模式打开文件,

2020-11-14 23:57:55 673

原创 文件(一)文件路径os.path.join()、os.getcwd()、os.chdir()、路径存在判断、文件文件夹判断、绝对路径相对路径转换

一、文件路径文件夹名称和文件名Windows 和OS X 不区分大小写,Linux 区分大小写Windows 路径使用反斜杠\作为分隔符 OS X 和 Linux 路径使用正斜杠/作为分隔符如果想要程序运行在所有操作系统上,在编写 Python 脚本时,就必须处理这两种情况。os.path.join() 函数可以实现如果将单个文件和路径上的文件夹名称的字符串传递给它,os.path.join() 就会返回一个文件路径的字符串,包含正确的路径分隔符。>>> impor

2020-11-14 20:53:01 6570

原创 异常处理(一)try-except,try-except-else,try-except-finally,raise,sys.exe_info(),traceback

异常类型含义SyntaxError语法错误AssertionErrorassert 后的条件为假时,程序停止运行抛出异常AttributeError当试图访问的对象属性不存在时抛出的异常IndexError索引超出序列范围会引发此异常KeyError字典中查找一个不存在的关键字时引发此异常NameError尝试访问一个未声明的变量时,引发此异常TypeError不同类型数据之间的无效操作ZeroDivisionError除法运算中...

2020-11-14 19:57:15 261

原创 类(四)C++、Java、Python中属性、构造方法初始化顺序、父类子类构造方法调用顺序、初始化参数列表

一、C++1、不存在继承时候类的实例化顺序:先声明/初始化类中变量,再执行构造函数变量的声明/初始化顺序又按照先静态再非静态无论创建几个对象, 该类的静态成员只构建一次, 所以静态成员的构造函数只调用1次class MyClass{ public MyClass(int a) //3. 然后才是执行构造函数 { val = a; } public int val = 20; //1. 首先声明int型变量val并赋值20 public int i = 10; //2. 其次声明in

2020-11-14 17:03:23 524

原创 类(三)MetaClass元类和 type函数的两种用法:查看对象类型、动态创建类

一、typetype(obj) type(name, bases, dict)以上这 2 种语法格式,各参数的含义及功能分别是:第一种语法格式用来查看某个变量(类对象)的具体类型,obj 表示某个变量或者类对象。第二种语法格式用来创建类name 表示类的名称;bases 表示一个元组,其中存储的是该类的父类;dict 表示一个字典,用于表示类内定义的属性或者方法。#查看 3.4 的类型print(type(3.4))#查看类对象的类型class CLanguage: p

2020-11-13 14:56:47 132

原创 类(二)继承(父类方法重载/重写)、多态、封装

Python 类的三大特性 :封装、继承、多态一、继承Python 是多继承机制(和 C++ 一样),即一个子类可以同时拥有多个直接父类子类继承父类时在定义子类时,将父类(可以是多个)放在子类之后的圆括号里即可继承是相对子类来说的,即子类继承自父类;派生是相对父类来说的,即父类派生出子类。class 类名(父类1, 父类2, ...): 类定义部分**如果没有显式指定继承哪个类,默认继承 object 类(object 类是 Python 中所有类的父类,即要么是直接父类,要么是间接

2020-11-12 20:49:29 585

原创 类(一)属性和方法: 实例属性、类属性、局部属性,实例方法self、类方法cls、静态方法 ,重载、重写、覆盖辨析

类中用 @classmethod 修饰的方法为类方法;用 @staticmethod 修饰的方法为静态方法;不用任何修改的方法为实例方法。方法与函数的最大的区别就是方法必须通过类或者类的实例对象来调用 不可以单独调用而函数可以单独调用类初始化方法/构造方法__init__(self)在类的实例对象创建时就会执行初始化方法 初始化方法没有返回值 或者return None初始化方法中self.variableName=value 表明实例初始化时就具有了variableName属性并且属性的值为v

2020-11-12 17:27:25 2064 1

原创 函数(五) 函数式编程 lambda、map、filter

一、lambda表达式lambda 表达式又称匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替语法格式是:name = lambda [参数列表] : 表达式...

2020-11-12 15:36:32 210 1

原创 函数(三)作用域之变量作用域、函数嵌套中局部函数作用域、默认值参数作用域

一、非嵌套函数下全局变量与局部变量的使用x=200>>> def f2():... print(x)...>>> f2()200x=200>>> def f2():... x=100... print(x)...>>> f2()100在函数体外定义的变量,一定是全局变量,例如:add = "http://c.biancheng.net/shell/"def text():

2020-11-12 01:39:25 1267 2

原创 函数(二)函数返回值之返回多个返回值、返回条件运算表达式的值、返回函数对象、返回None

一、函数返回多个值如果程序需要有多个返回值,既可将多个值包装成列表之后返回,也可直接返回多个值,如果 Python 函数直接返回多个值,Python 会自动将多个返回值封装成元组,在函数调用时则可以直接使用元组或者序列解包来接收该函数的返回值def sun_adn_avg(list): sum = 0 count = 0 for e in list: if isinstance(e, int) or isinstance(e, float):

2020-11-11 22:42:05 2414 1

原创 函数(一)参数传递之位置参数/关键字参数/默认参数/可变长度参数/序列解包/函数参数,函数添加函数说明文档

一、参数传递机制根据实际参数的类型不同,参数传递方式可分为 2 种:值传递和引用(地址)传递1、值传递:适用于实参类型为不可变类型(字符串、数字、元组);2、引用/地址传递:适用于实参类型为可变类型(列表,字典);def demo(obj) : obj += obj print("形参值为:",obj)print("-------值传递-----")a = "C语言中文网"print("a的值为:",a)demo(a)print("实参值为:",a)print("----

2020-11-11 20:11:09 3345

原创 循环(三)循环跳出 break、continue,循环中增加else

Python 提供了 2 种强制离开当前循环体的办法:使用 continue 语句,可以跳过执行本次循环体中剩余的代码,转而执行下一次的循环。只用 break 语句,可以完全终止当前循环。一、breakbreak 语句可以立即终止当前循环的执行,跳出当前所在的循环结构。无论是 while 循环还是 for 循环,只要执行 break 语句,就会直接结束当前正在执行的循环体。若要使用break同时跳出内层和外层循环最简单的方法就是借用一个 bool 类型的变量。在跳出内循环时更改 flag 的值,

2020-11-10 17:25:35 6850

原创 循环(二)for循环应用:列表解析、字典解析

列表解析式是将一个列表(实际上适用于任何 可迭代对象(iterable) )转换成另一个列表的工具。在转换过程中,可以指定元素必须符合一定的条件,才能添加至新的列表中,这样每个元素都可以按需要进行转换。...

2020-11-10 16:39:21 4520 1

原创 循环(一)流程控制if-elif-else、while、for,pass、assert语句,range()/zip()/enumerate()函数

python语句后面没有分号一、 if - elif - else语句Python 是一门非常独特的编程语言,通过缩进来识别代码块,具有相同缩进量的若干行代码属于同一个代码块, 因此不要胡乱缩进,代码块一定要有缩进,没有缩进的不是代码块。另外,同一个代码块的缩进量要相同,缩进量不同的不属于同一个代码块。建议缩进 1 个 Tab 键的位置,或者缩进 4 个空格;它们两者其实是等价的,很多编辑器都可以将 Tab 键设置为 4 个空格,比如,IDLE 中默认 Tab 键就是 4 个空格。在其他语言中(如

2020-11-10 16:24:10 331

原创 二分查找、袖珍计算、牛顿迭代求近似值,二分查找越界避免、袖珍计算器法(对数和指数运算)误差问题

例题一牛顿迭代 或 二分查找 判断是否是有效完全平方数注意看java和python的区别(除法取整+循环结构书写)注意各种语言代码的细微差异例题二x的平方根 牛顿迭代+二分查找+袖珍计算器法官方解答内置的ln函数就是log不带底二分越界避免 (left+right)/2换成left+(right-left)/2...

2020-11-01 12:55:49 315 1

原创 python内置对象类型(五)序列之set集合

集合的相关定义Python 中的集合和数学中的集合概念一样(无序性、不重复性),用来保存不重复的元素,即集合中的元素都是唯一的、互不相同的、但是不要求集合中的元素类型都一样,从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中相邻元素之间用“,”分隔,从内容上看,同一集合中,只能存储不可变的数据类型,包括整形、浮点型、布尔型、字符串、元组,无法存储列表、字典、集合这些可变的数据类型,否则 Python 解释器会抛出 TypeError 错误 ,但是可以把列表 集合这些可变对象的元

2020-10-31 22:37:09 429 1

原创 python内置对象类型(四)序列之dict字典,深拷贝与浅拷贝辨析

字典的相关定义Python 字典是一种无序的、可变的序列,元素以“键值对(key-value)”形式存储而列表(list)和元组(tuple)都是有序的序列(这里的有序不是说他们的元素大小是有序排列的的,而是说它们的元素在内存是连续挨着存放的,通常将索引值为0的元素称为第一个元素。)字典类型是 Python 中唯一的映射类型一、字典的创建键必须不同,但是不同的键的值可以一样键只能是整数、字符串或者元组这些唯一和不可变的类型,因此列表不能做键值可以是 Python 支持的任意数据类型和自定义类

2020-10-31 18:10:15 645

原创 python内置对象类型(三)序列之tuple元组、元组与列表的比较

rtyui

2020-10-31 15:46:31 248

原创 python内置对象类型(二)序列之list列表及列表与str字符串的比较

一、列表的定义和基本操作区别于C++的 list <T>(链表容器) 是一个长度可变的、由 T 类型元素组成的序列,它以双向链表的形式组织元素python里面列表list实际是一个序列 因此上一节中序列的所有相关操作都适用于列表如“+拼接,*重复,len()求长度,in判断元素,索引和切片”传送门:序列的相关操作 https://blog.csdn.net/Wjf7496/article/details/109342788二、列表list的元素特点元素可以是任何python的内

2020-10-30 16:42:05 1490

原创 python内置对象类型(一) 整数 浮点数和字符串

python的内置对象类型不用声明直接用如求两个力的合力一、整数int和浮点数floattype(Object) 求某个对象Object的类型 int(3.14)=3,float(3)=3.0 浮点数和整数转换id(Object) 求某个对象的内存地址**help(Object)**查看某个对象的帮助文档 函数也是对象**dir(module)**查看某个模块的内置函数 查看之前先import moduea*b乘法a**b幂次运算a^ba / b 除法 结果就是多少 不会取整a

2020-10-30 14:48:11 1321

原创 不用循环的幂次判断 位运算 / 对数判整 / 预计算暴力哈希 /最大幂数判整

一、2的幂https://leetcode-cn.com/problems/power-of-three/solution/3de-mi-by-leetcode/二、3的幂https://leetcode-cn.com/problems/power-of-three/solution/3de-mi-by-leetcode/三、4的幂https://leetcode-cn.com/problems/power-of-four/solution/4de-mi-by-leetcode/总结方法一、暴

2020-10-28 13:32:07 218

原创 C++ STL序列式容器(一)array

oiuyt

2020-10-25 16:02:02 127

原创 C++ STL排序关联式容器 (二)map / set

原理

2020-10-25 13:18:25 225

原创 Linux(一)网络相关概念、IP配置及修改方法

一、网络IP配置(永久有效)CentOS安装教程Bilibili up主尚硅谷-57虚拟机创建时网络配置选择NAT模式NAT:王五建立的虚拟机不占用物理环境的IP(教室192.168.0/),母机会有两个IP地址 (物理环境192.168.0/ 和与物理环境不在同一个网段的另一个IP192.168.100/,这个IP和虚拟机IP在同一个网段,因此虚拟机可以和母机通信,同时可以通过母机的物理环境IP与外网通信)在后面进行虚拟机IP配置的是时候主机的两个IP分别设置后ping一下就知道设置那个IP是正确

2020-10-25 01:00:35 350

原创 git工作流 GitFlow / Forking /集中式工作流

一、集中式工作流二、GifFlow工作流三、Forking工作流主要是使用fork和pull request审查团队外成员提供的代码

2020-10-23 14:42:17 300

原创 Eclipse图形化操作git:配置、初始化、特定文件忽略、本地库基本操作、远程库push推送、clone克隆、冲突解决

一、 Eclipse中将工程初始化为本地库工程右键->Team->Share project->Git->next->Use or create repository in parent folder of project->选中工程->Create Repository->finish这样则在我们工程目录下新建了一个.git文件 相当于执行了git init命令window->preferences->team->git confi

2020-10-23 00:02:21 824

原创 git常用命令总结

1、git init 初始化本地库2、git status 查看本地库状态3、git add fileName 提交工作区修改到暂存区4、git commit -m “commit messge” fileName 提交暂存区内容到本地库(MERGING状态不加文件名)5、git add +git commit =git commit -a6、git remote -v 查看别名7、git remote add NickName RemoteAddress 给远程库起别名8、gi

2020-10-22 21:45:18 76

原创 厄拉多塞筛法:质数统计

统计所有小于n的非负整数中的质数数量顺序遍历时,每取得一个数(排除0、1),如果将它所有的倍数(排除0、1、本身)都清除,那么剩下的数必为素数 该算法优点就是不用具体判断某一个数是不是质数 而是反其道行之 把所有不是质数的删掉剩下的自然就是质数了需要一个最大的boolean数组来存 初始假设所有数都是质数0 1不是质数不是所有偶数都是不是质数 如2就是质数。应该是所有除了2以外的偶数都不是质数 int countPrimes(int n) { // bool [] flag=n

2020-10-22 19:30:35 184

原创 Leetcode C++位运算(整型 字符型)详解及其应用 判断奇偶、符号变换、绝对值、相反数、数据交换、高低位互换、幂次判断

一、原码 反码 补码正数的原码,反码,补码,移码都等于原码负数的反码=原码取反 (符号不变)负数的补码=反码+1负数的移码=补码的符号位取反二、位运算原理对转换成二进制的数字进行每一位上的0、1的运算,:与(&),或(|),异或(^),左移(<<),右移(>>)注意在计算机组成原理中移位运算如下(无符号数左右逻辑移都是补充0)但是计算机中都是用补码进行运算的 有符号数(算术移位):正数 不管左移右移都是补0(左移末尾补0 右移高位补和符号位 即0)负

2020-10-22 00:14:02 1797

空空如也

空空如也

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

TA关注的人

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