第四模块:网络编程进阶&数据库开发 考核实战
MySQL支持事务,其设计目标主要面向联机事务处理(OLTP)的应用。其
特点是行锁设计、支持外键,并支持类似 Oracle 的非锁定读,即默认读取操作不会产生锁。 从 MySQL 5.5.8 版本开始是默认的存储引擎。
进程间通信(IPC)方式主要包括以下几种:
(1)管道,分为有名管道和无名管道,是一种半双工的通信方式。
(2)信号量,信号量是一个计数器,可以用来控制多个线程对共享资源的访问。
(3)信号,信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
(4)消息队列,息队列是消息的链表,存放在内核中并由消息队列标识符标识。
(5)共享内存,共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式。
(6)套接字:可用于不同及其间的进程通信。
索引的本质就是排序。
当然,我们一般不会把原始数据集排序,而是把每条记录的键值和这条记录在数据集中的位置,按键值次序做成一个规模较小的数据集,这也就是索引表了。如果还有其它字段也要用于键值查找,则可以再建立别的索引。原始数据集只有一份,索引可以有多个,如果每个索引都把原始数据集排序,则会使数据集被复制很多遍,占用空间过大。
另外,数据库在建立索引时还要考虑数据会插入删除,简单排序的索引会导致插入删除的成本非常高,这时一般会使用B树以方便快速更新。B树相当于把二叉树扩展成n叉树,本质上仍然是键值有序。(索引如何建立的话题内容不少,我们将另行撰文讨论,这里只研讨索引使用)
还有一种引申出来的方法是HASH索引,计算记录键值的某种HASH值,散列到1...k的自然数范围。这样查找时连二分比较也不必做,直接用HASH值定位了。HASH方法只用来做键值的精确查找,不能用来实现区间查找,因为HASH函数并不单调,已经失去原来键值的大小信息了,不过这在许多场景下也够用(按身份证号找人)。HASH索引本质上也是排序,只是用了键值的HASH值来排序。我们下面的讨论还是以普通键值排序为例,结论也适用于HASH索引。
from threading import Thread,Event,currentThread
import time
event = Event()
def task():
event.wait()
for i in range(3):
print("name:%s ,time:%s"%(currentThread().getName(),time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())))
# print('name:%s time:%s'%(currentThread().getName(),time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()))) if __name__ == '__main__':
for i in range(10):
t =Thread(target=task)
t.start() time.sleep(10)
event.set()
2、写一个程序,利用queue实现进程间通信;
q = Queue()
def producer(q):
for i in range(3):
q.put('name:%s is runing %s'%(current_process().name,i)) def consumer(q):
while True:
res = q.get()
if not res:break
print(res) if __name__ == '__main__':
p1 =Process(target=producer,args=(q,))
p2 = Process(target=producer, args=(q,))
p3 = Process(target=producer, args=(q,)) p4 = Process(target=consumer, args=(q,))
p5 = Process(target=consumer, args=(q,)) p1.start()
p2.start()
p3.start()
p4.start()
p5.start() p1.join()
p2.join()
p3.join()
q.put(None)
q.put(None)
print('main')
3、创建一个表student,包含ID(学生学号),sname(学生姓名),gender(性别),credit(信用卡号),四个字段,要求:ID是主键,且值自动递增,sname是可变长字符类型,gender是枚举类型, credit是可变长字符类型;
create table student1(
id int primary key auto_increment,
sname varchar(16) not null,
gender enum('男','女') default '男',
credit varchar(20)
);
修改ID为1的学生姓名为wupeiqi;
删除该数据;
insert into student1(sname,gender) values('alex','女');
update student1 set sname='wupeiqi' where id =1;
delete from student1 where sname ='wupeiqi';
4、请使用pymysql模块连接你本地数据库,并向student表中插入一条数据;
import pymysql conn = pymysql.connect(host= 'localhost',user='root',password='123',database='db6')
cursor =conn.cursor()
sql = 'insert into student1(sname,gender) values("egon","男")' cursor.execute(sql) conn.commit()
第四模块:网络编程进阶&数据库开发 考核实战的更多相关文章
- 第四模块:网络编程进阶&数据库开发 第1章·网络编程进阶
01-进程与程序的概念 02-操作系统介绍 03-操作系统发展历史-第一代计算机 04-操作系统发展历史-批处理系统 05-操作系统发展历史-多道技术 06-操作系统发展历史-分时操作系统 07-总结 ...
- 第四模块:网络编程进阶&数据库开发 第2章·MySQL数据库开发
01-MySQL开篇 02-MySQL简单介绍 03-不同平台下安装MySQL 04-Windows平台MySQL密码设置与破解 05-Linux平台MySQL密码设置与破解 06-Mac平台MySQ ...
- 第四模块:网络编程进阶&数据库开发 练习
练习题 基于queue模块实现线程池 import threading from multiprocessing import Queue class A(threading.Thread): def ...
- 第四模块:网络编程进阶&数据库开发 口述
进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 子进程死了之后 ,父进程关闭的时候要清理掉子进程的僵尸进程(收尸),孤儿进程是指父进程先死掉了的,交给init管理. join() 等待子进 ...
- 第十三章:Python の 网络编程进阶(二)
本課主題 SQLAlchemy - Core SQLAlchemy - ORM Paramiko 介紹和操作 上下文操作应用 初探堡垒机 SQLAlchemy - Core 连接 URL 通过 cre ...
- 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶
Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...
- nodejs模块——网络编程模块
net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法.dgram模块用于UDP网络编程. 参考链接:https://nodejs.org/api/net.html, ...
- Python编程-网络编程进阶(IO复用、Socketserver)
一.认证客户端的链接合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现. 服务端 from socket import * imp ...
- (四)linux网络编程
一.CS架构,BS架构 (1)CS架构介绍(client server,客户端服务器架构),例如:qq.360网盘(2)BS架构介绍(broswer server,浏览器服务器架构)例如:浏览器 二. ...
随机推荐
- SQA和测试
一.SQA计划 (1)软件工程:设计出云医院页面和其功能. (2)质量保证:进行需求分析,使用户确信产品或服务能满足规定的质量要求. (3)质量控制:采取不断的调试完善代码和程序确保产品质量. (4) ...
- OAuth 2.0协议在SAP产品中的应用
阮一峰老师曾经在他的博文理解OAuth 2.0里对这个概念有了深入浅出的阐述. http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 本文会结合我 ...
- python接口测试-项目实践(二)获取接口响应,取值(re、json)
一 分别请求3个接口,获取响应. 第三方接口返回有两种:1 纯字符串 2 带bom头的json字串 import requests api1 = 'url1' response1 = request ...
- 在文本框输入数据后,因为有历史记录,鼠标点或者敲回车这个历史记录时,请问会触发什么JS事件
非ie触发 oninput事件,ie触发>onpropertychange事件 jquery写法 $("#input").bind("input propertyc ...
- [18/11/11] java标识符及变量
一.标识符规范 1.必须以字母.下划线 .美元符号开头. 即数字不能作为开头,其它位随便 2.不可以是java关键字(即保留字), 如static .class.new 等 . 注:int 年 ...
- o'Reill的SVG精髓(第二版)学习笔记——第五章
第五章 文档结构 5.1 结构与表现 XML的目标之一便是提供一种能将结构从视觉表示中独立出来的方法. 但是不幸的是,关于XML的很多讨论都强调结构而非表现. 我们将通过详细讨论如何在SVG中指定表现 ...
- js邮箱验证,身份证验证,正则表达式
邮箱验证: html部分: 邮箱验证:<input type="text" id="mail" value="" / onkeyup= ...
- Restframework的版本及分页
1.版本 1.1基于url的get传参方式 1.创建django项目(起名我的是version),再创建一个app01应用 创建完成,通过python3 manage.py startapp api ...
- 终于好像懂motan了!!!
我依稀记得,刚到公司的时候,锋哥让我学习Maven,spring,spring MVC,mybatis,RPC:motan,Xdiamond,Jenkins,redis和Kafka.快3个月了,目前只 ...
- JavaScript监控输入框字数变化,超出限制则禁止输入
JavaScript监控输入框字数变化,超出则禁止输入 不废话,给你看看效果: 1.无输入状态: 2.输入三个字符: 3.超出5个后报错: 现在粘出代码,首先是html代码: <body> ...