大一Python期末复习笔记
目录
前言
一,输出格式控制
①多行输出
②不换行输出
③精度保留和对齐
Ⅰ.format
Ⅱ.f'{}'
Ⅲ.%
二,嵌套
①嵌套循环
Ⅰ.for
Ⅱ.while
②嵌套列表,字典
三,列表与字符串
①添加元素
②切片访问与逆序,join
③count,find,index
④删除与替换
list
str
四,函数
①lambda
②复合函数
③可变长参数
④递归函数与迭代器
Ⅰ.递归
Ⅱ.yield
⑤eval
⑥assert
⑦zip,zip(*),*zip
Ⅰ、zip
Ⅱ、zip(*)
Ⅲ、*zip
五,文件读取和处理
①open
②with
③常用的处理
六,numpy
①数组的创建
②shape&reshape
③zeros&ones
④eye&diagonal
⑤比较运算
⑥切片和索引
⑦vectorize
七,曲线绘制
八,字典
①元素的增加,删除,查找,修改
②keys&values
③items&for
九、is,==,copy
①is&==
②copy&deepcopy
结语
前言
一个寒假没碰Python,难免会生疏。本文是作者综合了学校考试,平时笔记还有Educoder作业,以及网上相关资源提取出来的知识点的呈现,既帮助了本人复习,也希望对你有所帮助。记得一键三连哦~~
一,输出格式控制
①多行输出
六个单引号
print('''hello
wolrd''')
output:
hello
wolrd
②不换行输出
print('hello',end='---')#指定连接符,可为空
print('world',end='---')
print('!')
output:
hello---world---!
③精度保留和对齐
Ⅰ.format
>>> print('{:+.2f}'.format(3.1415))#带符号保留两位小数
+3.14
>>> print('{:%}'.format(0.1415))#以%形式保留
14.150000%
Ⅱ.f'{}'
username=input("What's your name?\n")#\n为换行符
print(f'Hello, {username.title()}!')
What's your name?
he
Hello, He!
Ⅲ.%
>>> print('%+.2f'%(12.3456))#带符号保留两位小数
+12.35
>>> print('%.2g'%(12.3456))#保留2位有效数字
12
print('%-8.2f'%(3.14159),end='')#左对齐占用八个
print('hello')
print('%8.2f'%(3.14159),end='')#右对齐
print('world')
3.14 hello3.14world
二,嵌套
①嵌套循环
Ⅰ.for
for i in s1:for j in s2:# do something # do something else
Ⅱ.while
while expression1:while expression2:# do something# do something else
②嵌套列表,字典
l=[[1,2,3],[4,5,6],[7,8,9,[10]]]
print(l[2][3])
print(l[2][3][0])
d={1:'a',2:'b',3:'c',4:{5:'f',6:{7:'g'}}}
print(d[4][6])
print(d[4][6][7])
[10]
10
{7: 'g'}
g
三,列表与字符串
列表与字符串有很多相似之处,故将其并在一起
①添加元素
l=[1,2,3]
l.append(4)
l.append('567')
l.append((8,9))#添加元组
l.extend('abc')#逐个添加
print(l)
s='qwer'
s+='tyui'
print(s)
[1, 2, 3, 4, '567', (8, 9), 'a', 'b', 'c']
qwertyui
②切片访问与逆序顺序,join
l=[1,2,3,4,5,6,7]
s='1234567'
print(l[0:7:1],s[0:7:1])#l[start:end:step],均可缺省,end取不到
print(l[6:0:-1],s[6:0:-1])#step小于0从右至左,start>end
print(l[::-1],s[::-1])#返回逆序
print(reversed(l),type(reversed(l)))#使用reversed不会返回列表,而是一个迭代器
#因此要进行数据转化。而字符串的要通过join来实现
print(reversed(s),type(reversed(s)))
print(list(reversed(l)),''.join(reversed(s)))#'连接符'.join(str/list)
[1, 2, 3, 4, 5, 6, 7] 1234567
[7, 6, 5, 4, 3, 2] 765432
[7, 6, 5, 4, 3, 2, 1] 7654321
<list_reverseiterator object at 0x0000018A71694EB8> <class 'list_reverseiterator'>
<reversed object at 0x0000018A71694EB8> <class 'reversed'>
[7, 6, 5, 4, 3, 2, 1] 7654321
reverse和reversed,sort和sorted
>>> l=[1,2,3,5,4]
>>> l.reverse()
>>> l
[4, 5, 3, 2, 1]
>>> list(reversed(l))
[1, 2, 3, 5, 4]
>>> l.sorted()
>>> l.sort()
>>> l
[1, 2, 3, 4, 5]
③count,find,index
>>> l=[1,2,3,4,1,1,2]
>>> l.count(1)
3
>>> l.index(1)#返回第一个1的index
0
>>> s='1234112'
>>> s.count('1')
3
>>> s.find('1')#返回第一个1的index
0
关于find和index的区别
>>> s='qwertyuiop'
>>> s.find('a')#当find中的字符段不在其中时,返回-1
-1
>>> s[-1]#值得注意的是,s[-1]是存在的,而find只会返回正向索引值
'p'
>>> l=[1,2,3,4]
>>> l.index(5)#而index与find不同,会报错
Traceback (most recent call last):File "<pyshell#4>", line 1, in <module>l.index(5)
ValueError: 5 is not in list
④删除与替换
list
Ⅰ.del/pop
>>> l=[0,1,2,3,4]
>>> l.pop(0)#会返回被删去的值,且只能用索引进行操作,不支持切片
0
>>> l
[1, 2, 3, 4]
>>> del l[0:2]#支持切片
>>> l
[3, 4]
Ⅱ.remove
>>> l=[0,1,2,3,4,5,1,1,2]
>>> l.remove(1)#删除第一个1
>>> l
[0, 2, 3, 4, 5, 1, 1, 2]
如要删除所有的特定元素,可结合count和循环使用
⑤创建嵌套列表
>>> #创建3*4嵌套全0列表(初始化)
>>> l=[[0]*4 for i in range(3)]
>>> l
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
str
Ⅰ.strip
>>> s = '****abcd**efgh***-***'
>>> s=s.lstrip('*')#删除左边指定字符并重新赋值给s
>>> s
'abcd**efgh***-***'
>>> s=s.rstrip('*')#右边。若两边都要删除,可直接用strip()
>>> s
'abcd**efgh***-'
Ⅱ.replace
>>> s=s.replace('*','!')#replace(a,b),replace a with b
>>> s
'!!!!abcd!!efgh!!!-!!!'
Ⅲsplit
>>> s='1,2,3,4'
>>> s=s.split(',')#指定分隔符,返回一个列表
>>> s
['1', '2', '3', '4']
四,函数
①lambda
>>> f=lambda x,y:x*y+x+y #变量名称,函数关系
>>> f(1,2)
5
②复合函数
from math import sin, cos
delX = 0.001
x = float(input())
def diff(f):#求f(x)的导数g=lambda x:(f(x+delX)-f(x-delX))/(2*delX)return g
print("%.2f"%(diff(sin)(x)))#f是指定的具体函数,返回其导函数的估计值,x为代入点
0
1.00
>>>
③可变长参数
def method(*args,**kwargs):print(args,type(args))#*args被解读为元组print(kwargs,type(kwargs))#**kargs被解读为字典for arg in args:print('arg:',arg)for kwarg in kwargs:#**参数一定出现在整个参数列表的最后print('%s:' %kwarg,kwargs[kwarg])
method(1,'one',a = 1,b = 'two')
(1, 'one') <class 'tuple'>
{'a': 1, 'b': 'two'} <class 'dict'>
arg: 1
arg: one
a: 1
b: two
④递归函数与迭代器
求解斐波那契数列
Ⅰ.递归
def fib(n):if n ==1:return 0elif n==2:return 1else:return fib(n-1)+fib(n-2)
Ⅱ.yield
理解:
'''在一个函数中添加了yield关键字之后,该函数在调用时会变成一个生
成器。通过使用next关键字可以使该生成器运行到第一个yield处停止。
再次使用next,使代码接着上次停止的地方运行至下一个yield(如果
没有则结束)。'''
def generator():print("debug 1")yield 1print("debug 2")yield 2print("debug 3")yield 3
G = generator()#如果不将generator()赋值给G调用,那么每次调用都会重新开始
print( next(G), "\n")
print( next(G), "\n")
print( next(G), "\n")
print(next(generator()))
'''
debug 1
1 debug 2
2 debug 3
3 debug 1
1
'''
利用yield解决斐波那契数列
def fib():a = 0b = 1yield a # 第一次的返回值yield b # 第二次的返回值while True:a,b = b, a+byield b # 后面项的返回值
f = fib()
n = int(input())
for i in range(n):s=next(f)
print(s)
⑤eval
'''eval(expression),eval()函数用于执行一个字符串表达式,
并且返回该表达式的值。'''
s='x**2+y**2+x-y'
f=lambda x,y:eval(s)
print(f(1,2))#return 4
⑥assert
def zero(s):a = int(s)assert a > 0,"a超出范围" #这句的意思:如果a确实大于0,程序正常往下运行return a
print(zero(float(input())))
#但是如果a是小于0的,程序会抛出AssertionError错误,报错为参数内容“a超出范围”
⑦zip,zip(*),*zip
Ⅰ、zip
>>> l1=[0,1,2]
>>> l2=[1,2,3]
>>> l3=[2,3,4,5]
>>> z1=zip(l1,l2)
>>> z1 #返回一个对象,如同map,reversed
<zip object at 0x0000024DB4679408>
>>> list(z1)
[(0, 1), (1, 2), (2, 3)]
>>> z2=zip(l1,l3)
>>> list(z2)
[(0, 2), (1, 3), (2, 4)]#长度不一致以小的为标准>>> d1={'1':1,'2':2,'3':3}
>>> z1=zip(d1)
>>> list(z1)
[('1',), ('2',), ('3',)]#返回keys
Ⅱ、zip(*)
>>> l1=[[1,2,3],[4,5,6]]#l1=[p1,p2],是一个压缩列表
>>> z1=zip(*l1) #认为前面一个储存x的所有值,后面储存y的所有值
>>> list(z1) #返回[(x,y)]
[(1, 4), (2, 5), (3, 6)]#解压缩>>> l2=[['1','2','3'],[1,2,3]] #[[keys],[values]]
>>> z2=zip(*l2)
>>> dict(z2)
{'1': 1, '2': 2, '3': 3}
Ⅲ、*zip
>>> l1=[1,2,3]
>>> l2=[5,6,7]
>>> z1=*zip(l1,l2)
SyntaxError: can't use starred expression here
>>> *zip(l1,l2)
SyntaxError: can't use starred expression here
>>> zip(*zip(l1,l2))
<zip object at 0x0000028644AF66C8>
>>> print(*zip(l1,l2))
(1, 5) (2, 6) (3, 7)
#注:*不能单独使用,常用于函数的传参,此处print即为函数
五,文件读取和处理
①open
f=open('text.txt','w')
f.write('hello\n')#注意添加换行符
f.write('world')
f.close()#记得关闭文件
②with
with open('filepath','r') as f:for line in f:
#无需close,当语句在with缩进外时会自动关闭
③常用的处理
f=open('path','r').readlines()#返回列表,行数-1即为索引值
result=[0]*len(f)
for i in range(len(f)):#对每一行进行处理,一般为数据提取l=f[i].strip('\n').split()#去除换行符,得到一个列表reslut=l[0]#例如需要将文档第一列数据提取出来
六,numpy
参考pyhon之numpy详细教程
①数组的创建
>>> a=np.array([[1,2],[3,4]])#2×2
>>> print(a,type(a))
[[1 2][3 4]] <class 'numpy.ndarray'>
②shape&reshape
>>> a.shape
(2, 2)
>>> b=a.reshape(1,4)
>>> b
array([[1, 2, 3, 4]])
③zeros&ones
>>> import numpy as np
>>> a=np.zeros((2,2))
>>> a
array([[0., 0.],[0., 0.]])
>>> b=np.zeros_like(a)#创建同型矩阵
>>> b
array([[0., 0.],[0., 0.]])
>>> c=np.ones_like(a)
>>> c
array([[1., 1.],[1., 1.]])
④eye&diagonal
>>> e=np.eye(3)#n阶单位方阵
>>> e
array([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])
>>> d=np.diag((1,2,3))#创建对角矩阵
>>> d
array([[1, 0, 0],[0, 2, 0],[0, 0, 3]])
⑤比较运算
>>> import numpy as np
>>> a=np.arange(1,10).reshape(3,3)
>>> a
array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
>>> a>5#返回bool矩阵
array([[False, False, False],[False, False, True],[ True, True, True]])
>>> a[a>5]#根据bool矩阵,True对应的值
array([6, 7, 8, 9])
⑥切片和索引
>>> a=np.arange(10)
>>> b=a[2:7:2]#[start:end:step],不包括end
>>> b
array([2, 4, 6])
>>> a=np.arange(1,10).reshape(3,3)
>>> b=a[(0,1,2),(2,1,0)]#返回(0,2),(1,1),(2,0)为索引的值
>>> a
array([[1, 2, 3],[4, 5, 6],[7, 8, 9]])
>>> b
array([3, 5, 7])
⑦vectorize
import numpy as np
f=lambda x:x**3+x**2+x+1
g=np.vectorize(f)#与map相似
a=np.array([1,2,3,4,5])
print(g(a),type(g(a)))#[ 4 15 40 85 156] <class 'numpy.ndarray'>
关于otypes的说明
vectorize输出的数据类型是通过使用输入的第一个元素调用函数来确定的。通过指定otypes参数可以避免这种情况。以下为例,第一个数据为0,被认为是int,所以后面生成的都当作int,故需要指定otypes=[float]
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']#显示中文标签
plt.rcParams['axes.unicode_minus'] = False#显示负号
def f(x):if x<0 or x>=2:s=0return selif 0<=x<1:s=xreturn selse:s=2-xreturn s
H=np.vectorize(f)
g=np.vectorize(f,otypes=[float])
x=np.linspace(-3,5,1000)
y=H(x)
z=g(x)
plt.subplot(1,2,1)
plt.plot(x,y,'b-',linewidth=1)
plt.title('未指定otypes')
plt.subplot(1,2,2)
plt.plot(x,z,'r-',linewidth=1)
plt.title('指定otypes=[float]')
plt.show()
⑧mean
>>> import numpy as np>>>#array
>>> b=np.array([[1,2,3],[4,5,6]])
>>> b
array([[1, 2, 3],[4, 5, 6]])
>>> np.mean(b)#返回整体均值
3.5
>>> np.mean(b,0)#0,1表示维度
array([2.5, 3.5, 4.5])
>>> np.mean(b,1)
array([2., 5.])>>>#matrix
>>> a=np.mat([[1,2,3],[4,5,6]])#创建2*3矩阵
>>> a
matrix([[1, 2, 3],[4, 5, 6]])
>>> np.mean(a)
3.5
>>> np.mean(a,0)
matrix([[2.5, 3.5, 4.5]])
>>> np.mean(a,1)
matrix([[2.],[5.]])
七,曲线绘制
以三角函数和幂函数图形绘制来说明,参考python绘制初等函数
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']#显示中文标签
plt.rcParams['axes.unicode_minus'] = False#显示负号
x = np.linspace(0,2*np.pi, 200)
f1 = np.sin(x)
f2 = np.cos(x)
f3 = np.tan(x)
plt.subplot(1,2,1)#声明:在这张画布上有1*2个图,现在画第一个
plt.plot(x, f1,'-r',x,f2,'--g',x,f3,'b*')#直接传入数据就可,引号内为linestyle
plt.xlim(x.min() * 1.1, x.max() * 1.1)# limit x range
plt.ylim(-4, 4) # limit y range
plt.legend([r'$y=sin(x)$',r'$y=cos(x)$',r'$y=tan(x)$'],loc='best')
plt.xlabel('x')#说明x,y轴
plt.ylabel('y')
plt.title('三角函数图像')#添加标题plt.subplot(1,2,2)#画1*2的第二张图
x=np.linspace(-5,5,1000)
g1=1/x
g2=x
g3=x**2
plt.axis([-6,6,-10,10])#axis([xmin xmax ymin ymax])
plt.plot(x, g1,'r*',x,g2,'--g',x,g3,'b-')
plt.legend([r'$y=1/x$',r'$y=x$',r'$y=x^2$'],loc='best')
plt.xlabel('x')
plt.ylabel('y')
plt.title('幂函数图像')
plt.show()
八,字典
①元素的增加,删除,查找,修改
字典是无序的,不支持索引和切片
>>> d={'name':'zhangsan','age':18,'sex':'male'}
>>> d['city']='changsha'#增加
>>> d
{'name': 'zhangsan', 'age': 18, 'sex': 'male', 'city': 'changsha'}
>>> d['sex']#查找
'male'
>>> d['name']='lisi'#修改
>>> d['name']
'lisi'
>>> del d['name']#删除
>>> d
{'age': 18, 'sex': 'male', 'city': 'changsha'}
>>> d.pop('age')
18
>>> d#pop的用法:删除指定key,返回对应的value.与在list中的用法相同
{'sex': 'male', 'city': 'changsha'}
②keys&values
>>> d
{'age': 18, 'sex': 'male', 'city': 'changsha'}
>>> d.keys()
dict_keys(['age', 'sex', 'city'])
>>> d.values()
dict_values([18, 'male', 'changsha'])
③items&for
遍历一个字典
>>> d.items()#返回列表,键值对以元组形式存放
dict_items([('age', 18), ('sex', 'male'), ('city', 'changsha')])
>>> for i,j in d.items():print((i,j))('age', 18)
('sex', 'male')
('city', 'changsha')
④按values排序
soted(d,key=),key 后面接自定排序规则
>>> d={'a':1,'b':4,'c':2,'d':3}
>>> d.items()
dict_items([('a', 1), ('b', 4), ('c', 2), ('d', 3)])
>>> d1=sorted(d.items(),key=lambda x:x[1]) #升序
>>> d1
[('a', 1), ('c', 2), ('d', 3), ('b', 4)]
>>> d2=sorted(d.items(),key=lambda x:x[1],reverse=True) #降序
>>> d2
[('b', 4), ('d', 3), ('c', 2), ('a', 1)]
九、is,==,copy
①is&==
is比较的是两个对象的地址值,也就是两个对象是否为同一个实例对象
==比较的是对象的值是否相等,其调用了对象的__eq__()方法。
l1=[1,2]
l2=l1
l3=list(l1)
print(id(l1),id(l2),id(l3))
>>> 2646623610248 2646623610248 2646625833928f=lambda i,j,k:print(i==j,i==k)#这里命名两个函数方便判断
g=lambda i,j,k:print(i is j,i is k)
f(l1,l2,l3)
>>> True True
g(l1,l2,l3)
>>> True False
②copy&deepcopy
①浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面
的元素是原对象中各个子对象的引用。
②深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,
以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没
有任何关联。
import copy as c
l4=[[0,1],[2,3]]
l5=c.copy(l4)#浅拷贝
l6=c.deepcopy(l4)#深拷贝
f(l4,l5,l6) #三个对象的值的相等>>>True True
g(l4,l5,16)
>>>False False
print(id(l4),id(l5),id(l6))#三个的id都不相同
>>> 3085327296264 3085327296328 3085327296456l4[0]=2
print(l4,l5,l6)#l5的输出与l6相同
>>> [2, [2, 3]] [[0, 1], [2, 3]] [[0, 1], [2, 3]]
l4[1][0]=4
print(l4,l5,l6)#l5的输出与l6不同
>>> [2, [4, 3]] [[0, 1], [4, 3]] [[0, 1], [2, 3]]'''
总结一下:deepcopy后的l6若要改变只能直接对l6操作(l4,l6没有关联)
为什么l4[0]=2时l5不跟着变? copy是对子对象的引用,shallow copy中的子list内部
发生改变,则shallow copy 的值也会改变
'''
再看一个例子
>>> import copy as c
>>> l1=[[1,2,[3,4]],5,6] #[1,2,[3,4]]是子list,其内部发生任何改变都会影响l2
>>> l2=c.copy(l1) #但l1[0]=0 对l2无影响
>>> l1[1]=0
>>> l2
[[1, 2, [3, 4]], 5, 6]
>>> l1[0][0]=0
>>> l2
[[0, 2, [3, 4]], 5, 6]
>>> l1[0][2]=0
>>> l2
[[0, 2, 0], 5, 6]
结语
如果你坚持看到这,感谢你的认真和支持,祝愿你取得好成绩!
大一Python期末复习笔记相关推荐
- Python期末复习笔记
author:Nakiri 本文存在部分知识点的遗漏,以个人使用习惯进行整理,仅作期末复习使用!! 第一章 Python概述 Python的特点 简洁.实现同样的功能时相对于其他语言的代码量最少. 语 ...
- python 期末复习笔记
关于python大数据分析的期末选择题已经整理好啦,关注公众号:大数据智库,回复[大数据选择题],即可获得网盘连接! 文章目录 1.类型 数据类型 数值类型 值类型与引用类型 可变与不可变对象类型 1 ...
- 【Python数据分析与可视化】期末复习笔记整理(不挂科)
[Python数据分析与可视化]期末复习笔记 1. 数据分析与可视化概述 对比 概念 常用工具 Python常用类库 Jupyter notebook中的常用快捷方式 2. Python编程基础 co ...
- RFID原理及应用期末复习笔记 | 1.RFID概述【完结✿✿ヽ(°▽°)ノ✿】
系列索引:RFID原理及应用期末复习笔记 | 快速索引 RFID是博主大三下的一门专业课,因为疫情缩短学期进程提前结课,所以期末考试也来的更早,这里就简单记录一下自己复习时的一些笔记,也给后来的学弟学 ...
- 【数据分析与挖掘】期末复习笔记(不挂科)
[数据挖掘]期末复习笔记 1. 数据挖掘概论 1.1 参考资料 1.2 简介 1.3 数据.信息.知识 1.4 数据分析与数据挖掘 1.5 主要任务 1.6 数据库系统与数据仓库 1.7 数据挖掘常用 ...
- 太牛了 Python期末复习总结,提高成绩必备回家过个开心年
Python期末复习之语法 将用一张思维导图的形式来展示python的基础语法. Python期末复习之运算符 Python语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑 ...
- 【期末复习笔记】知识产权法——著作权、专利法、商标权
[期末复习笔记]知识产权法 著作权 著作权法不予以保护的客体 著作权的归属 著作权的内容 著作人身权 著作财产权 著作权的取得方式:自动取得 著作权的保护期限: 邻接权 表演者权 表演者义务 表演者权 ...
- 南邮部分期末复习笔记汇总@tou
README 知识库链接:tou/njupt-cst-notes 这个知识库存放了部分我在 NJUPT-CST 专业就读期间的期末复习笔记,这一部分公开的语雀笔记是我众多笔记中总结的还算 OK 的,仅 ...
- 奇异矩阵能lu分解条件_矩阵分析-期末复习笔记(上)
(复习笔记,可能有点乱.夹杂着乱七八糟的英文,因为要用英文考试.) (如果有误请一定要和我说!祝我final考个好成绩-) 目录: 特征值,特征向量,相似 (Eigenvalues, eigenvec ...
最新文章
- 转Go语言TCP Socket编程
- Android中的“再按一次返回键退出程序”实现
- 如何做到微信机器人不封号_微信如何做到一键群发所有群
- 合奏:机器学习中唯一(几乎)免费的午餐
- Python 小白从零开始 PyQt5 项目实战(7)折叠侧边栏的实现
- 深度学习(三十九)LSTM、GRU网络入门学习-未完待续
- 量子艺术、魔法成像、水生政治、性方程式……这些AI“衍生”科目都是啥?...
- 安卓fragment笔记
- 基于RGB图像的机器人抓取算法汇总
- Office 2013和Office 365应用程序对电脑和移动操作系统支持情况分析
- MODSCAN32的应用
- PCB制作仿真、自制51板测试及性能改进
- HTML_html自动播放音乐
- 微信小程tree组件,无限递归
- SaaS模式、技术与案例详解——第16章 SaaS模式可行性分析
- java对数据加解密_java 使用AES对数据进行加密和解密
- 论ICT技术与数据中心的关系
- php提取新闻图片,php新闻采集并生成图片
- rv1126/1109平台下的lt8912显示驱动的调试
- 解决gtid主从复制connecting问题