记————使用aiomysql中遇到的问题
报错信息
报错原因
个人感觉原因是在使用异步IO去请求访问数据库时,一个协程在等待数据的时候突然另外一个协程进来了打断了它的数据读取,感觉就是commit和rollback发生了冲突
解决方式
采用单连接或者连接池去处理
Python练手小项目——HDU_i_like_memory_words
练手小项目——HDU_i_like_memory_words
此项目是使用python做的,作为自己的练手小项目,个人感觉还是比较满意的
这是一个控制台程序,没有加上UI,所以界面有些丑,但不影响主要功能的使用
项目地址
在Github上,由于还是要秉承着好好学习英语的态度,本人将它放在了私有仓库中,没有开源
项目介绍
这个小项目通过利用多线程并发运行,对翻译结果和题目进行匹配,未匹配到的最后自己手动输入,输入的时候会有翻译后的提示
测试结果
测试1
测试2
测试3
一代
56分
58分
0分
二代
88分
98分
95分
平均耗费时长
第一次是7min多,之后几次都是4min多
BUG说明
有可能会因为网页ajax加载速度慢导致没有返回正确的翻译结果
GET和POST可能会出意外(目前还没有遇到过这种情况)
缺点
冗余代码过多,代码重复片段很多,之后会有优化的打算
目前优化
添加上了数据库,对每次的所有题目入库,之后先请求数据库,如果没有数据就去调用chrome浏览器
数据库暂时没有考虑数据并发
视频演示
Mysql之基础CRUD
Mysql
数据库操作
增
创建数据库
create database 数据库名 charset=utf8;
删
删除数据库
drop database 数据库名;
改
使用数据库
use 数据库名;
查
查看所有的数据库
show databases;
查看当前所使用的数据库
select database();
数据表操作
增
创建表
create table 数据表名(表结构);
删
删除表
drop table 数据表名;
改
修改表–添加字段
alter table 表名 add 列名 类型;
修改表–修改字段(重命名)
alter table 表名 change 原名 新名 类型及约束
修改表–修改字段(不重命名)
alter table 表名 modify 列名 类型及约束
修改表–删除字段
alter table 表名 drop 列名;
查
查看当前数据库中的所有表
show tables;
查看表结构
desc 表名;
查看表的创建语句
show create table 数据表名;
表内数据
增
全列插入
...
进阶面向对象
进阶面向对象
super 方法
引入
如果父类中的方法在派生的子类中不能满足其需求的话,可以在子类中通过重写解决这个问题
但是很多情况下,父类中的方法并不是全部一点都不能用,即子类的需求往往是在父类方法实现的功能基础上提出了更多的需求而已,此时如果我们在子类中重写此方法时就会发现出现了很多冗余的代码,这个问题该怎么解决呢?
答:在子类重写的方法中通过调用父类中被重写的方法
代码示例
示例一:
12345678910111213class Father(object): def play_game(self): print("父类中的play_game")class Son(Father): def play_game(self): super().play_game() # 先调用父类被重写的方法 print("子类中的play_game") # 然后再添加子类需要的新功能son = Son()son.play_game() # 调用子类中的方法,因为在子类中重写了play_game方法 ...
深入面向对象
深入面向对象
隐藏数据
引入
1234567891011121314151617class Cat(object): def __init__(self, new_name, new_age): self.name = new_name self.age = new_age def print_info(self): print("我叫%s,今年%s了" % (self.name, self.age))# 创建猫对象cat = Cat("波斯猫", 4)# 调用方法cat.print_info()# 尝试修改属性cat.age = -10# 调用方法cat.print_info()
如果运行上述代码,会发现,第二次输出的信息有误,其为"我交波斯猫,今年-10岁了"
之所以出现这样的错误,究其原因是因为:我们通过对象直接给实例属性赋值的这种方式容易出错
如果在赋值的时候,是通过一个实例方法的调用,在方法中对数据进行严格的检查,合格的数据可以给属性设置,不合格的数据就提醒开发者 ...
初识面向对象
初识面向对象
引入面向对象
本节将通过一个案例,先用之前我们编写的代码方式进行实现,然后分析利弊。从而引出面向对象。
需求
编写一个程序,完成1个学生的基本操作
学生有姓名、年龄
可以输出学习信息( 姓名、年龄)
使用面向过程的方式实现
123456789101112# 遍历打印所有姓名-年龄def print_info(names_temp, ages_temp): print("姓名:", names_temp, " 年龄:", ages_temp)# 定义一个变量存储姓名name = "顾安"# 定义一个变量存储年龄age = 20# 遍历姓名-年龄print_info(name, age)
分析
从上述通过“面向过程”方式实现的代码中,我们可以发现代码行数不是很多,整个程序比较简单
但是上面的代码虽然看上去简单,实际上如果我们想要进行升级功能则不见得容易,例如:我们需要在上述的代码基础上进行修改实现3名同学的信息存储,那么应该怎么办呢?看看下面的方式是否可行?有什么不好的地方?
123456789101112 ...
Python函数进阶
Python函数进阶
函数参数的高级用法
缺省参数
函数的参数在没有传入值的时候,会使用函数的默认值
⚠️
缺省参数只能放在函数参数列表的最右侧
参数列表中,不是缺省参数的放在左边,缺省参数放在右边
命名参数
在调用函数时,传递的实参带有名字,可以根据名称将值传入到指定的变量中而不用考虑参数列表的顺序
⚠️
使用命名参数,命名参数必须在普通参数的后面
不定长参数
定义函数时,形参可以不确定有多少个,这样的参数就是不定长参数
*args:表示调用函数时多余的未命名参数都会以元组的方式存储到args中
**kwargs:表示调用函数时多余的命名参数都会以键值对的方式存储到**kwargs中
⚠️
不定长参数的位置一定在所有参数的最后
*args 一般放在 **kwargs 的前面
国际惯例:正常参数 缺省参数 *args **kwargs
函数返回值的拆包
使用*进行拆包
可以对数组,元组,集合使用*进行拆包,一般是在调用函数的时候使用
使用**进行拆包
使用**可以对字典进行拆包,拆包的结果是命名参数
Python中的引用(‼️)
最小整数池:在Python中为了节约内 ...
JavaScript基础
JavaScript
变量
声明
var 变量 = 值;
打印
console.log(变量名)
JS引入到html文件中
嵌入到html中
引入本地的独立JS文件
引入网络来源的文件
输出方式
弹出框
alert("内容")
输出到页面
document.write("内容")
输出到控制台
console.log("内容")
数据类型
基本数据类型
数值
字符串
bool
复合数据类型
object(对象)
null
undefined
typeof运算符
一般只用于判断原始数据类型
typeof 变量
算数运算符
/
%
自增 ++变量
自减 --变量
赋值运算符
比较运算符
==
===
!=
!==
双等在比较数值的基础上,又比较了数据类型
布尔运算符
取反运算符:!
且运算符:&&
或运算符:||
if ... else ...
switch
三元运算符
表达式 ? true : false
for和while循环
...
CSS基础
CSS基础
选择器
种类
全局选择器
元素选择器
类选择器
class可以在多个元素中重复使用
id选择器
id是唯一的
合并选择器
选择器优先级
行内属性 > id选择器 > 类选择器 > 元素选择器 > 全局选择器
属性
字体属性
颜色(color)
大小(font-size) 单位px chrome浏览器能接受的最小尺寸是12px
加粗(font-weight)
属性值
bold:定义粗体字符
bloder:定义更粗的字符
lighter:定义更细的字符
100 ~ 900:由细到粗,400是默认,700=bold
样式(font-style)
属性值
normal:正常字体
italic:斜体
字体类型(font-family)
背景属性
背景颜色(background-color)
背景图片(background-image)
背景图片显示位置(background-position)
背景图片填充方式(background-repeat)
属性值
repeat:默认值
repeat-x:水平方向平 ...
第五届字节跳动青训营——后端专场(学习内容汇总)
第五届字节跳动青训营——后端专场(学习内容汇总)
一
Go 语言基础 - 基础语法
掘金课程:
走进Go语言基础语法
Go语言实战案例
Go 语言进阶 - 工程进阶
掘金课程:
Go 语言进阶与依赖管理
Go 语言工程实践之测试
Go 框架三件套详解(Web/RPC/ORM)
课程PPT
课程录播:见百度网盘
掘金课程:
Database/sql 及 GORM 相关解读
GORM设计原理
GORM最佳实践
Hertz 新手任务地址
Go 框架三件套详解(Web/RPC/ORM)实战环节-笔记服务项目地址:
优化版
普通版
Hertz 代码设计实践
高质量编程与性能调优实战
掘金课程:
高质量编程简介及编码规范
性能优化指南
性能优化分析工具
性能调优实战案例
二
Go 语言内存管理详解
掘金课程:
性能优化及自动内存管理
Go 内存管理 & 编译器优化思路
三
【实践课】规则引擎设计与实现
课程PPT
课程录播:见百度网盘
架构初探 - 谁动了我的蛋糕
掘金课程:
架构定义解析
企业级后端架构剖析
业内后端架构面临的挑战
后端架 ...