2018.10.18学习总结

1"""
hash lib
hash是一种算法 是将一个任意长的数据 根据计算 得到一个固定长度特征码
特征: 不同输入 可能会有相同的结果 几率特别小
相同的输入 必然得到相同结果
由于散列(特征)的性质 从原理来看是不可能 反解

用来 验证 两个输入的数据是否一致
使用场景
1.密码验证
123321 jahsajshajhsjahjas

client 加密后结果 server 拿到加密后

2.验证数据是否被篡改 比如游戏安装包 有没有被改过

为了防止别人撞库成功 可用提升密码的复杂度 其次可以为密码加盐 (加点内容进去)
"""

import hashlib

m = hashlib.md5("aaa".encode("utf-8"))
print(len(m.hexdigest()))

# 撞库破解的原理 有人事先 把常见的 明文和密文的对应关系 存到了数据库中
# 运气好就能查询到
pwds = {"aaa":"47bce5c74f589f4867dbd57e9ca9f808"}

h1 = hashlib.sha512("123".encode("utf-8"))
h2 = hashlib.sha3_512("123".encode("utf-8"))

# print(len(h.hexdigest()))
print(h1.hexdigest())
print(h2.hexdigest())

# 2b70683ef3fa64572aa50775acc84855

# 加盐
m = hashlib.md5("321".encode("utf-8"))
#加
m.update("abcdefplkjoujhh".encode("utf-8"))

print(m.hexdigest())

import hmac
# 没啥区别 只是在创建的时候必须加盐
h = hmac.new("abcdefjjjj".encode("utf-8"))

h.update("123".encode("utf-8"))

print(h.hexdigest())

2logging模块看文件包内容
import logging

# 1.日志的级别
# logging.debug("这是一个调试信息") # 10
# logging.info("常规信息") # 20
# logging.warning("警告信息") # 30#直接可以打印到终端不过默认级别是30
# logging.error("错误信息") # 40
# logging.critical("严重错误") # 50
# 在logging模块中有对应的常量用来标识级别
# 默认情况下 默认的级别30 WARNING 日志输出位置是控制台

# 2.自定定义日志的配置
# logging.basicConfig(#创造一个a.log文件
# filename = "a.log",
# filemode ="at",
# level = 10,
# format ="%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
# datefmt="%Y-%m-%d %X %p"
#
# )
# logging.debug("这又是调试信息")#会写入文件

# 日志模块的四个核心角色
"""
1.logger 日志生成器
2.filter 过滤器
3.handler 处理器
4.formatter 格式处理器
"""

# 1.创建一个日志生成器
# mylog = logging.getLogger("mylog")
# # 设置生成器级别
# mylog.setLevel(logging.DEBUG)
#
# # 2.搞一个日志处理器
# fh = logging.FileHandler("b.log",encoding="utf-8")
#
# # 3.搞一个格式处理器
# fm = logging.Formatter(
# "%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
# datefmt="%Y-%m-%d %X %p")
#
# # 4.将 三个对象进行关联
# mylog.addHandler(fh)
# fh.setFormatter(fm)
# 测试
# mylog.debug("mylog 的 测试!")

# log1 = logging.getLogger("father")
# log2 = logging.getLogger("father.son")
# log3 = logging.getLogger("father.son.grandson")#去掉father就找不到父集就只打印一条信息
#
# # 默认值True 标识 有继承关系 当子的日志产生日志时 给他父级以及父级以上都发一份
# # 如果不需要继承关系就设置False
# log3.propagate = False
#
# fh = logging.FileHandler("c.log",encoding="utf-8")

# fm = logging.Formatter(
# "%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
# datefmt="%Y-%m-%d %X %p")

# log1.addHandler(fh)
# log2.addHandler(fh)
# log3.addHandler(fh)

# fh.setFormatter(fm)
#
# log1.warning("father log")
# log2.warning("father.son log")
# log3.warning("father.son.grandson log")#可以找到父级就会打印3条不然就打印一条,或者直接log3.propagate = False不继承

# import logging.config
# 以字典来配置日志 传入一个字典对象 就不需要在编写上面那一堆代码
# logging.config.dictConfig()

# 流处理器
log1 = logging.getLogger("a")
# 输出到文件
fh = logging.FileHandler("c.log",encoding="utf-8")
# d =logging.FileHandler(r"C:\Users\jtyaole\PycharmProjects\untitled\logger10_25\conf\e.log",encoding="utf-8")
# log1.addHandler(d)

# 输出到控制台
# sh = logging.StreamHandler()

# log1.addHandler(sh)
log1.addHandler(fh)
fm = logging.Formatter(
"%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
datefmt="%Y-%m-%d %X %p")
# d.setFormatter(fm)
# sh.setFormatter(fm)
fh.setFormatter(fm)
log1.warning("测试2!")

# logger = lib.common.get_logger()
#
# def login():
# logger.debug("测试 测试!")
#
# login()

3"""
re模块
主要正则表达式相关
什么是正则表达式 一堆带有特殊意义的符号组成式子
它的作用 处理(匹配 查找 替换 )字符串
1.
在爬虫中大量使用 其实有框架帮你封装了这些复杂的正则
2.
在网站和手机app的注册功能中大量使用 例如判断你的邮箱地址是否正确

"""

import re

# ===============================单个字符匹配=========
print(re.findall("\n","1\n")) # 匹配换行符
print(re.findall("\t","1asasas121 \t")) # 匹配制表符

# ========================范围匹配===========
print(re.findall("\w","1aA_*")) # 匹配数字字母下划线
print(re.findall("\W","1aA_*,")) # 匹配非数字字母下划线
print(re.findall("\s"," \n\r\t\f")) # 匹配任意空白字符
print(re.findall("\S"," \n\r\t\f")) # 匹配任意非空白字符
print(re.findall("\d","123abc1*")) # 匹配任意数字,等价于[0-9]
print(re.findall("\D","123abc1*")) # 匹配任意非数字
# print(re.findall("[abc]","AaBbCc")) # 匹配 a b c都行
# print(re.findall("[^abc]","AaBbCc")) # 除了 a b c都行
# print(re.findall("[0-9]","AaBbCc12349")) # 除了 a b c都行
print(re.findall("[a-z]","AaBbCc12349")) # a-z 英文字母
print(re.findall("[A-z]","AaBbC:c??2349[]")) # A-z 匹配原理 是按照ascII码表

# =========================匹配位置======
print(re.findall("\A\d","123abc1*")) # 从字符串的开始处匹配只匹配一个没有输出空
print(re.findall("\d\Z","123abc1*9\n")) # 从字符串的结束处匹配 注意把\Z写在表达式的右边,只匹配一个没有输出空
print(re.findall("\d$","123abc1*9")) # 从字符串的结束处匹配 如果末尾有换行 换行不会参与匹配
print(re.findall("^\d","s1asasas121 \t")) # 从字符开始匹配数字只匹配一个

原文地址:https://www.cnblogs.com/jutao/p/9863510.html

时间: 2024-11-10 00:24:58

2018.10.18学习总结的相关文章

2018.10.16python学习第二十天

常用模块 random 模块 ? 随机数生成模块 ? random.random() 0-1 不包括1的随机浮点数 ? random.randint(1,10) 1-10 包括1和10的整数 ? random.randrange(1,10) 1-10 包括1,但是不包括10的整数 ? random.choice(list) list 从list中随机取出一个数 ? random.choices(list,k=个数) list 从list中随机取出k个数 ? random.sample(list,

2018.10.18 常用API部分测试题

             常用API部分 共40道选择题,每题2.5分.31-40是多选题,多选题有错则全错,全对才满分. c String类中的getBytes()方法的作用是( c    ) a) 将整数变成字符串 b) 将字符串变成字符数组 char[ ] c) 将字符串变成字节数组byte[ ] d) 获取中字符串中字符的个数 对字符串"ababcd abcdefg"使用indexOf('a')和lastIndexOf('a'),的运行结果是( xb    ) a) 1,1 b

2018.10.18 练习赛 数学专练

T1 打气球 题解: 期望递推,不关心具体位置,所以\(F[i][j]\)表示还有\(i\),\(j\)行,列未完; \(code\): #include<cstdio> #include<algorithm> #include<ctype.h> #include<vector> #include<queue> #include<cstring> #define lowbit(x) (x&-x) #define ll long

2018.10.19学习总结

1正则表达式import re# [] 范围匹配 中间 用-来连接# re.findall("[a-zA-Z0-9]","a ab abc abcd a123c")# 如果要匹配 符号- 要写表达式的左边或右边# print(re.findall("[-ab]","a ab abc abcd a123c a--")) # 重复匹配 表达式的匹配次数# * 表示 任意次数 所以0次也满足print(re.findall(&quo

2018.10.11python学习第十七天

模块 1.模块是什么? 模块:一组功能的集合 功能:在python中,一个功能就是一个函数:一个py文件就是一个模块 2.为什么要用模块? 借鉴思想:可以极大的提升开发效率 自定义模块:抽取我们自己程序中要用的功能,定义成模块,然后程序的各部分都去模块中调 用,可以较少代码冗余. 3.如何使用模块? 大前提:注意区分 执行文件 vs 被导入文件 模块类型的分类: 1.自定义模块(第三方模块也属于自定义模块) 2.内置模块 (c语言编写,连接到python解释器中,如time模块) 3.已经编译为

团队任务3 - 每日立会(2018 10 18)

第九组  排课软件系统  项目经理:范佳琦 我们在对项目进行测试的时候发现在支持多个班级添加课程的功能上出现了一些小问题,它只支持多个添加但不支持多个删除. 在这个问题上大家进行了激烈的讨论,每个人都提出了宝贵的具有实际意义的意见,但我对项目出现了小问题的情况对大家进行了 说明,希望大家在项目的一些小问题上要仔细认真的对待,保证项目的保质保量的高标准的完成.组员们也都很有信心. 发现大家这么有信心,我对我么们这个组又充满了信心.最后软件工程师把大家的意见深刻吸收,很快的这个小问题也得以解决 之后

python学习之类的反射(2018.6.18)

在学习网络编程的时候用到反射,然后发现自己反射这部分的应用不是很熟练,决定返回来重新整理一下 对于类的反射,主要有四个用法,下面都说一下 1.hasattr 判断对象或者类是否存在指定的属性,看代码以及结果 class people: def __init__(self,name,age): self.name = name self.age = age def talk(self): print("%s is talking."%self.name) p1 = people('ale

CMG.SUITE.V2012.10全套学习教程+手册资料

CMG.SUITE.V2012.10全套学习教程手册资料.zip油藏数值模拟软件 CMG Suite v2012.0 Win64-ISO 1DVDCMG Suite v2012.0—最大的独立开发的油藏数值模拟软件 为油/气藏的建模与仿真提供实际的解决办法,先进的Windows ?软件,先进的采收率(提高采收率/返回抑制的)进程,油藏工程,为世界各地的客户提供咨询,培训和技术支持. chemcad.v6.1.2Chemcad.v6.01(lic解密,计算好用) CambridgeSoft.Che

201621123080 《Java程序设计》第10周学习总结

201621123080 <Java程序设计>第10周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 结合题集题目7-1回答 1.1 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 以前常遇到ArrayIndexOutOfBoundsException NullPointerException ClassCastException NumberFormatExcept