期末老师布置的大作业,没地方存,丢这吧

只实现了部分功能

用navicat创数据库

数据库里有三个表,books(bno,bname,author),borrow(bno,rno,appointment,prestamo_time,fee),reader(rno,password,rname,estado)

还有个名为fee的视图,定义为

select `borrow`.`rno` AS `rno`,`borrow`.`fee` AS `fee` from `borrow`
# -*- coding: utf-8 -*-
"""
Created on Fri Dec 16 22:07:10 2022@author: errormaker
"""import datetimeimport pymysqldef connecting(userr:str='publicuser',passwordd='123456'): #配合Navicat for mysql使用conn=pymysql.connect(host='localhost',user=userr,password=passwordd,port=3306,charset='utf8',db='estar')if conn:print("连接成功")return connadministrator=['root','root1','root2']#三个管理员       def lookall(table:str):sql=conn.cursor()sql.execute("select * from %s" %(table))conn.commit() result=sql.fetchall()print("当前表内数据为:",end='\n')for i in result:print(i)def addoperate(): #管理员对所有表添加数据------------------------------------------while True:print("\n你想在哪个表增加数据?1:books;2:reader;3:borrow;0:退出")a=(input("请输入1或2或3或0:"))if a=='1':sql=conn.cursor()print("按照“图书编号”“图书名称”“作者”顺序来输入数据:")bno=input("图书编号:")bname=input("图书名称:")author=input("作者:")# print("INSERT INTO %s VALUES(%s,%s,%s)" %('books',repr(bno),repr(bname),repr(author)) )sql.execute("INSERT INTO %s VALUES(%s,%s,%s)" %('books',repr(bno),repr(bname),repr(author)) )conn.commit()sql=conn.cursor()sql.execute("select * from %s" %('books'))conn.commit() result=sql.fetchall()print("插入数据后的表为:",end='\n')for i in result:print(i)elif a=='2':sql=conn.cursor()print("按照“读者编号”“读者密码”“读者名称”“estado”顺序来输入数据:")rno=input("读者编号:")password=input("读者密码:")rname=input("读者名称:")estado=input("estado:")# print("INSERT INTO %s VALUES(%s,%s,%s)" %('books',repr(bno),repr(bname),repr(author)) )sql.execute("INSERT INTO %s VALUES(%s,%s,%s,%s)" %('reader',repr(rno),repr(password),repr(rname),repr(estado)) )conn.commit()    sql=conn.cursor()sql.execute("select * from %s" %('reader'))conn.commit() result=sql.fetchall()print("插入数据后的表为:",end='\n')for i in result:print(i)elif a=='3':sql=conn.cursor()print("按照“图书编号”“读者编号”“读者名称”“appointment”“prestamo_time”“fee”顺序来输入数据:")bno=input("图书编号:")rno=input("读者编号:")appointment=input("appointment:")prestamo_time=input("prestamo_time:")fee=input("fee:")sql.execute("INSERT INTO %s VALUES(%s,%s,%s,%s,%s)" %('borrow',repr(bno),repr(rno),repr(appointment),repr(prestamo_time),repr(fee)) )conn.commit()    sql=conn.cursor()sql.execute("select * from %s" %('borrow'))conn.commit() result=sql.fetchall()print("插入数据后的表为:",end='\n')for i in result:print(i)elif a=='0':print("退出成功!")breakelse:print("请输入正确数字:")continue#------------------------------------------------------------------------------
def deleteoperate():#管理员对所有表删除数据while True:print("\n你想在哪个表删除数据?1:books;2:reader;3:borrow;0:退出")a=(input("请输入1或2或3或0:"))if a=='0':print("退出成功!")breakelif a=='1':lookall('books')bno=input("输入你要删除数据的书的编号:")sql=conn.cursor()sql.execute("DELETE FROM %s where bno=%s" %('books',repr(bno)))lookall('books')elif a=='2':lookall('reader')rno=input("输入你要删除数据的读者的编号:")sql=conn.cursor()sql.execute("DELETE FROM %s where rno=%s" %('reader',repr(rno)))lookall('reader')elif a=='3':lookall('borrow')bno=input("输入你要删除数据的书的编号:")rno=input("输入你要删除数据的读者的编号:") sql=conn.cursor()sql.execute("DELETE FROM %s where rno=%s and bno=%s" %('borrow',repr(rno),repr(bno)))lookall('borrow')else:print("请输入正确数字:")continue
#------------------------------------------------------------------------------def updataoperate():#管理员对所有表修改数据while True:print("\n你想在哪个表修改数据?1:books;2:reader;3:borrow;0:退出")a=(input("请输入1或2或3或0:"))if a=='0':print("退出成功!")breakelif a=='1':lookall('books')while True:b=(input("你想修改哪个属性?1:图书编号;2:图书名称;3:作者(输入数字);0:返回;(输入数字):"))if b=='1':before=input("输入原来的图书的编号:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set bno=%s where bno=%s" %('books',repr(after),repr(before)))conn.commit() lookall('books')elif b=='2':bno=input("输入你想修改的那一行的图书编号:")   before=input("输入原来的图书的名称:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set bname=%s where bname=%s and bno=%s" %('books',repr(after),repr(before),repr(bno)))conn.commit() lookall('books')elif b=='3':bno=input("输入你想修改的那一行的图书编号:")  before=input("输入你想修改的图书的作者:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set author=%s where author=%s and bno=%s" %('books',repr(after),repr(before),repr(bno)))conn.commit() lookall('books')elif b=='0':print("返回")breakelse:print("请输入正确数字:")continueelif a=='2':lookall('reader')while True:b=(input("你想修改哪个属性?1:读者编号;2:密码;3:读者姓名;4:estado;0:返回;(输入数字):"))if b=='1':before=input("输入原来的读者编号:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set rno=%s where rno=%s" %('reader',repr(after),repr(before)))conn.commit() lookall('reader')elif b=='2':rno=input("输入你想修改的那一行的读者编号:")   before=input("输入原来的的密码:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set password=%s where password=%s and rno=%s" %('reader',repr(after),repr(before),repr(rno)))conn.commit() lookall('reader')elif b=='3':rno=input("输入你想修改的那一行的读者编号:")   before=input("输入原来的读者姓名:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set rname=%s where rname=%s and rno=%s" %('reader',repr(after),repr(before),repr(rno)))conn.commit() lookall('reader')elif b=='4':rno=input("输入你想修改的那一行的读者编号:")   before=input("输入原来的estado:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set estado=%s where estado=%s and rno=%s" %('reader',repr(after),repr(before),repr(rno)))conn.commit() lookall('reader')elif b=='0':print("返回")breakelse:print("请输入正确数字:")continueelif a=='3':lookall('borrow')while True:b=(input("你想修改哪个属性?1:图书编号;2:读者编号;3:appointment;4:prestamo_time;5:fee;0:返回;(输入数字):"))if b=='1':before=input("输入原来的图书编号:")       rno=input("输入你想修改的那一行的读者编号:")after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set bno=%s where bno=%s and rno=%s" %('borrow',repr(after),repr(before),repr(rno)))conn.commit() lookall('borrow')elif b=='2':before=input("输入原来的读者编号:")  bno=input("输入你想修改的那一行的图书编号:")    after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set rno=%s where rno=%s and bno=%s" %('borrow',repr(after),repr(before),repr(bno)))conn.commit() lookall('borrow')elif b=='3':bno=input("输入你想修改的那一行的图书编号:")  rno=input("输入你想修改的那一行的读者编号:")before=input("输入原来的appointment:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set appointment=%s where appointment=%s and rno=%s and bno=%s" %('borrow',repr(after),repr(before),repr(rno),repr(bno)))conn.commit() lookall('borrow')elif b=='4':bno=input("输入你想修改的那一行的图书编号:")  rno=input("输入你想修改的那一行的读者编号:")before=input("输入原来的prestamo_time:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set prestamo_time=%s where prestamo_time=%s and rno=%s and bno=%s" %('borrow',repr(after),repr(before),repr(rno),repr(bno)))conn.commit() lookall('borrow')elif b=='5':bno=input("输入你想修改的那一行的图书编号:")  rno=input("输入你想修改的那一行的读者编号:")before=input("输入原来的fee:")                after=input("你想修改为:")sql=conn.cursor()sql.execute("update %s set fee=%s where fee=%s and rno=%s and bno=%s" %('borrow',repr(after),repr(before),repr(rno),repr(bno)))conn.commit() lookall('borrow')elif b=='0':print("返回")breakelse:print("请输入正确数字:")continue
#------------------------------------------------------------------------------def selectoperate():while True:print("\n你想查哪个表的数据?1:books;2:reader;3:borrow;0:退出")a=(input("请输入1或2或3或0:"))if a=='1':lookall('books')elif a=='2':lookall('reader')elif a=='3':lookall('borrow')elif a=='0':print("退出成功!")breakelse:print("请输入正确数字:")continue
#------------------------------------------------------------------------------def adminstration():while True:print("你想要做什么?\n 1:增加数据;\n 2:删除数据;\n 3:修改数据;\n 4:查询数据;0:退出管理员系统:")a=(input("请输入1或2或3或4或0:"))if a=='1':addoperate()elif a=='2':deleteoperate()elif a=='3':updataoperate()elif a=='4':selectoperate()elif a=='0':print("退出管理员系统成功!")breakelse:print("请输入正确数字:")continue
#------------------------------------------------------------------------------      def addreader(rno,password,rname,estado=0): #publicuser添加读者------------------------------------------a='2'if a=='2':sql=conn.cursor()# print("INSERT INTO %s VALUES(%s,%s,%s)" %('books',repr(bno),repr(bname),repr(author)) )sql.execute("INSERT INTO %s VALUES(%s,%s,%s,%s)" %('reader',repr(rno),repr(password),repr(rname),repr(estado)) )conn.commit()    sql=conn.cursor()sql.execute("select * from %s where rno=%s" %('reader',repr(rno)))conn.commit() result=sql.fetchall()print("注册成功;你的信息为:",end='\n')for i in result:print(i)#selectoperate()
#addoperate()
#deleteoperate()
#updataoperate()
conn=connecting() #------连接public用户
print("欢迎进入网上图书馆系统请按要求操作:")
print("提示:你未登录,只能查书")
userr='publicuser'#userr记录当前用户是谁,辨别用户
while True:print("请按要求操作:")print('您好%s' %(userr))a=input("1:查书(借阅)(预约);\n2:登录(切换账号);\n3:注册;\n4:修改密码;\n5:查询借阅记录;\n6:管理(数据库管理员专用);\n0:退出系统:\n 请输入1或2或3或4或5或6或0:")if a=='1':cursor=conn.cursor()while  True:b=(input("请输入您要查询的书籍:(支持单字或全称)\n输入0退出查询:"))cursor.execute('select * from books where bname like %s;' %(repr("%"+b+"%")))result=cursor.fetchall()if result:print('查询到的结果:\n')for i in result:print(i)while True:whatwant=input("1:借阅;\n3:返回:请输入1或3:")if whatwant=='1':while True:if_borrow=input("你是否真想借阅这本书?\n 1:借阅;2:不借阅:\n 请输入1或2:")if if_borrow=='1':if userr!='publicuser':cursor.execute('select bno from books where bname like %s;' %(repr("%"+b+"%")))result1=cursor.fetchall()#result1是查询到的图书结果bnoresult1=result1[0][0]cursor.execute('SELECT prestamo_time FROM borrow WHERE bno=%s ' %(repr(result1)))result2=cursor.fetchall()#result2是看这本书有没有被借阅#print(result2)if result2==() or result2=='0':#如果结果是空的,也代表没借result2=()#写这个if的目的是防止返回空值,result2[0]超限报错##-----####时间##时间#时间else:result2=result2[0][0]#得到prestamo-time#print(result2)if result1 and (result2==()):#result==‘0’#代表该书能被查到,并且没有被借阅addhours=datetime.datetime.now()+datetime.timedelta(days=14) time=addhours.strftime('%Y-%m-%d')cursor.execute('insert into borrow VALUES (%s,%s,"0",%s,"0")' %(repr(result1),repr(userr),repr(time)))conn.commit()#注意当前用户有没有对borrow的插入权限,不然插入操作无效print("您已经借阅成功,您只能借阅14天,超时未还将无法登录")cursor.close()breakelif result1 and result2:#一个账号只能借阅一本书print("您无法借阅因为正在被别人借阅,系统已经自动帮您预约")cursor.execute('insert into borrow VALUES (%s,%s,"1","0","0")' %(repr(result1),repr(userr)))conn.commit()cursor.close()breakelse:print("\n您还未登陆,请先登录")breakelse:print("请输入正确数字!")continueelif whatwant=='3':print("返回")breakelse:print("请输入正确数字!")continuebreak   breakelif b=='0':print('\n退出查询成功:')breakelse:print("未找到此书籍,请重新输入或输入0退出查询:")continuecursor.close()elif a=='2':#登录userrr=input("请输入用户名(账号):")if userrr not in administrator:dl=conn.cursor()dl.execute("select rno from reader")r=dl.fetchall()namee=[]for j in range(0,len(r)):namee+=r[j]if userrr in namee:number=0while True:passwordd=input("请输入密码:")dl=conn.cursor()dl.execute("select * from reader where rno=%s and password=%s" %(repr(userrr),repr(passwordd)))if (dl.fetchall()):conn=(connecting(userrr,passwordd))cursor=conn.cursor()cursor.execute('SELECT fee FROM fee WHERE rno=%s' %(repr(userrr)) )#查询是否欠费,若欠费无法借阅书籍fee=cursor.fetchall()if fee!=():fe=fee[0][0] if fe=='1':print('查询到您有一本书过期未还,你可以选择续借或归还图书后联系管理员恢复')while True:xujie=input("是否续借?\n1:是;\n2:否:\n输入数字:")if xujie=='2':breakelif xujie=='1':addhours=datetime.datetime.now()+datetime.timedelta(days=14) time=addhours.strftime('%Y-%m-%d')curso=conn.cursor()curso.execute('update borrow set prestamo_time=%s where rno=%s ' %(repr(time),repr(userrr)))conn.commit() curso.execute('update borrow set fee="0" where rno=%s ' %(repr(userrr)))conn.commit() print("续借成功")curso.close()breakbreakelse:print("用户可借阅")else:print("用户可借阅")userr=userrrprint("欢迎%s" %(userr))breakelse:print("密码错误,已错误次数:")print(number)number+=1if number<=3:    continueelse:print("累积错误三次,请重试!")breakelse:print("无该用户,请检查用户名或返回注册!")elif userrr in administrator:number=0while True:passwordd=input("请输入密码:")if passwordd=='123456':conn=(connecting(userrr,passwordd))userr=userrrprint("欢迎%s" %(userr))breakelse:print("密码错误,已错误次数:")print(number)number+=1if number<=3:    continueelse:print("累积错误三次,若遗忘密码可联系管理员重置!")break# dl=conn.cursor()# dl.execute("select * from reader where rno=%s and password=%s" %(repr(userrr),repr(passwordd)))# if (dl.fetchall()):#     conn=(connecting(userrr,passwordd))#     userr=userrr#     print("欢迎%s" %(userr))#     break# else:#     print("密码错误,已错误次数:")#     print(number)#     number+=1#     if number<=3:    #         continue#     else:#         print("累积错误三次,请重试!")# print(name)elif a=='3':print("注册系统:")if userr == 'publicuser' or userr == 'root':while True:userr_temp=input("请输入用户名(账号);输入0退出注册:")zhuce=conn.cursor()zhuce.execute("select rno from reader")r=zhuce.fetchall()name=[]for j in range(0,len(r)):name+=r[j]# print(name)if userr_temp=='0':print('\n退出成功:')breakelif userr_temp in name:print("提示:已经有用户占用了此名字")continueelse:userr=userr_tempwhile True:passwordd1=input("请输入密码:")passwordd2=input("请再次输入密码:")if passwordd1==passwordd2:passwordd=passwordd2breakelse:print("两次密码不一致!")continue#注册zhuce=conn.cursor()#赋权zhuce.execute("CREATE USER %s@'localhost' IDENTIFIED BY %s" %(repr(userr),repr(passwordd)))zhuce.execute("GRANT INSERT, UPDATE,SELECT ON `estar`.`borrow` TO %s@'localhost'" %(repr(userr)))zhuce.execute("GRANT SELECT ON `estar`.`books` TO %s@'localhost'" %(repr(userr)))zhuce.execute("GRANT SELECT ON `estar`.`reader` TO %s@'localhost'" %(repr(userr)))zhuce.execute("GRANT SELECT ON `estar`.`fee` TO %s@'localhost'" %(repr(userr)))zhuce.execute("GRANT UPDATE ON `estar`.`reader` TO %s@'localhost'" %(repr(userr)))rname=input("输入读者昵称:")addreader(userr,passwordd,rname)breakelse:print("请退出当前用户后再注册")elif a=='4':#改密码if userr=='publicuser':print("\n请先登录账号")else:while True:pre_password=input("请输入之前的密码,输入000放弃修改:")if pre_password!='000':xgmm=conn.cursor()xgmm.execute("select * from reader where rno=%s and password=%s" %(repr(userr),repr(pre_password)))if (xgmm.fetchall()):while True:passwordd1=input("请输入修改后的密码:")passwordd2=input("请再次输入修改后的密码:")if passwordd1==passwordd2:later_passwordd=passwordd2breakelse:print("两次密码不一致!")continue#在表里修改密码before=pre_password           after=later_passworddsql=conn.cursor()sql.execute("update %s set password=%s where password=%s and rno=%s" %('reader',repr(after),repr(before),repr(userr)))#在服务器修改密码mm=conn.cursor()mm.execute("set password for %s@localhost = password(%s)" %(repr(userr),repr(later_passwordd)))conn.commit() print("成功修改%s的密码" %(userr))break#else语句:密码不匹配则提示改不了,输入0放弃修改else:print("密码错误!")else:print("返回成功!")breakelif a=='5':the_user=userrif the_user=='publicuser':print("请登录账号")else:print("你的借阅记录为:")find=conn.cursor()find.execute("SELECT bname FROM books WHERE bno in (SELECT bno FROM borrow WHERE rno=%s)" %(repr(the_user)))out=find.fetchall()print(out)elif a=='6':if userr in administrator:print('\n管理员%s,欢迎进入管理系统:' %(userr))adminstration()else:print('你不是管理员,当前用户是%s' %(userr))continueelif a=='0':print("退出成功!")breakelse:print("请输入正确数字:")continue#lookall('books')
# =============================================================================
#
# def findBno(selectwhat:list,fromwhat:str):  #查找(无where语句)
#     if not(selectwhat):#没有就默认查所有
#         selectwhat='*'
#     if not(fromwhat):#没有就默认为图书表
#         fromwhat='books'
#     cursor = conn.cursor()
#     cursor.execute("select %s from %s" %(selectwhat,','.join(str(i) for i in fromwhat)))
#     result=cursor.fetchall()
#     if result:
#         print(result)
#     else:
#         print("\n         not found")
# a=''
# b=['books','reader','borrow']
# c=''
# findBno(a,b)
#
# def findBno1(selectwhat:str,fromwhat:str,wherewhat:str()):  #查找(有where语句)
#     if not(selectwhat):
#         selectwhat='*'
#     if not(fromwhat):
#         fromwhat='books'
#     cursor = conn.cursor()
#     cursor.execute("select %s from %s where %s" %(selectwhat,fromwhat,wherewhat))
#     result=cursor.fetchall()
#     if result:
#         print(result)
#     else:
#         print("\n         not found")
#
# =============================================================================

python数据库-图书馆借阅相关推荐

  1. 计算机毕业设计django基于python图书馆借阅系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着社会的发展,社会的各行各业都在利用信息化时代的优势.计算机的优势和普及使得各种信息系统的开发成为必需. 图书馆借阅系统,主要的模块包括首页.个人中心.会员管理.会员等级管理.图书分类管理 ...

  2. 基于python+django的图书馆借阅可视化管理系统#毕业设计

    开发环境 项目编号:py235基于python+django的图书馆借阅可视化管理系统#毕业设计 开发语言:Python python框架:django 软件版本:python3.7/python3. ...

  3. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  4. JAVA计算机毕业设计图书馆借阅系统(附源码、数据库)

    JAVA计算机毕业设计图书馆借阅系统(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(I ...

  5. 【数据库课设】图书馆借阅系统

    [数据库][keshe]图书馆借阅系统 系统+报告全家桶 代码: using System; using System.Collections.Generic; using System.Compon ...

  6. 计算机毕业设计django基于python图书馆借阅系统

    随着图书借阅人数的不断增加,而且图书借阅系统也通过网络系统来完成日常借阅信息中的各种需求,所以网上图书借阅系统的开发给用户带来了足够的便利,用户通过系统来满足生活中的需求,因此,由于信息的增加,信息处 ...

  7. 基于JAVA图书馆借阅系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA图书馆借阅系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA图书馆借阅系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  8. 计算机毕业设计Android图书馆借阅系统app(源码+系统+mysql数据库+Lw文档)

    项目介绍 目前,大多数基于Android平台的移动图书馆的主要功能集成了传统的馆藏图书查询.图书预约.图书续借等功能,较好地满足了人们随时随地访问图书馆的需要.但是,整个图书系统仍处在初期阶段,仍存在 ...

  9. Jsp实现图书馆借阅管理系统

    图书馆借阅管理系统分析:该项目的设计主要基于B/S架构,开发技术采用的是JSP技术,数据库选中的的是关系型数据库MYSQL数据库,采用了瀑布式的的系统分析与设计方法,实现了一个用于图书馆图书管理的相关 ...

最新文章

  1. Pytorch张量tensor的使用
  2. java反射实例_关于java反射的一个案例
  3. 软件工程专业(互联网应用开发与优化方向)软件工程实践二环节教学大纲
  4. 玩转GIT系列之【git的分支操作(查看分支/切换分支/新建分支/删除分支)】
  5. nginx开机自启动
  6. linux重启memcache_linux下启动和停止memcached
  7. php ajax跳转,ajax接口的php文件如何实现跳转
  8. Hive Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  9. liferay 6.2 主题开发
  10. pythongui项目实例_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...
  11. 【论文解读】ICLR2021 知识建模与信息抽取
  12. 战舰少女服务器不显示,战舰少女进不去 闪退及连接不上解决方法
  13. 服务器真在运行中,win7电脑服务器正在运行中的解决教程
  14. Java之美[从菜鸟到高手演变]之设计模式四
  15. 企业网站应用模式之—LAMP架构的源码编译超详细步骤,有手就行!
  16. 无线传感网学习笔记(6)—— S-MAC协议 和 Z-MAC协议
  17. python 修改ubuntu 的ip
  18. Vue+elementUI导出xlsl表格,支持复杂表头,自动合拼单元格。xlsx+file-saver插件
  19. python桌面快捷方式不见了怎么办_桌面快捷方式不见了怎么办?桌面快捷方式不见了解决方法...
  20. 失业日记 9月30日

热门文章

  1. CGLib 动态代理Demo
  2. 上海市人才引进落户条件有哪些
  3. android视频教程那个讲的最好,最全的android视频教程推荐 android视频教程怎么学习效果好...
  4. CentOS 7下Nginx安装配置nginx-module-vts 监控模块
  5. 既然岁月留不住,坦然面对后半生。
  6. 字节跳动,华为,阿里巴巴,小米,腾讯2020大厂面试经历系列之(面试题篇)
  7. 振动信号处理 (一)
  8. IntelliJ IDEA 2017 破解过程[详细步骤](Mac OS Windows)
  9. micropython开发idethonny_用ESP32+MicroPython+Thonny点亮WS2812灯带
  10. html5是什么?五大浏览器、网页基本骨架结构与含义、常用标签——学习HTML5第一天的心得总结,若有错误望指正,我将持续更新与大家共同进步。