1、什么是进程?什么是线程? 什么是协程?
进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。
线程:在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程
协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。
 
数据库类型有哪些?
1、InnoDB 存储引擎 2、MyISAM 存储引擎 3、NDB 存储引擎 4、Memory 存储引擎 5、Infobright 存储引擎
6、NTSE 存储引擎 7、BLACKHOLE
 
mysql数据库与 MyISAM 存储引擎 的特点。

MySQL支持事务,其设计目标主要面向联机事务处理(OLTP)的应用。其

特点是行锁设计、支持外键,并支持类似 Oracle 的非锁定读,即默认读取操作不会产生锁。 从 MySQL 5.5.8 版本开始是默认的存储引擎。

MyISAM不支持事务、表锁设计、支持全文索引,主要面向一些 OLAP 数 据库应用,在 MySQL 5.5.8 版本之前是默认的存储引擎(除 Windows 版本外)。数据库系统 与文件系统一个很大的不同在于对事务的支持,MyISAM 存储引擎是不支持事务的。究其根 本,这也并不难理解。用户在所有的应用中是否都需要事务呢?在数据仓库中,如果没有 ETL 这些操作,只是简单地通过报表查询还需要事务的支持吗?此外,MyISAM 存储引擎的 另一个与众不同的地方是,它的缓冲池只缓存(cache)索引文件,而不缓存数据文件,这与 大多数的数据库都不相同。
 
进程间的通信方式有哪些?
进程间通信(IPC)方式主要包括以下几种:
(1)管道,分为有名管道和无名管道,是一种半双工的通信方式。
(2)信号量,信号量是一个计数器,可以用来控制多个线程对共享资源的访问。
(3)信号,信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。
(4)消息队列,息队列是消息的链表,存放在内核中并由消息队列标识符标识。
(5)共享内存,共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问.共享内存是最快的IPC(进程间通信)方式。
(6)套接字:可用于不同及其间的进程通信。
 
 
索引的本质?有什么优缺点?

索引的本质就是排序。

当然,我们一般不会把原始数据集排序,而是把每条记录的键值和这条记录在数据集中的位置,按键值次序做成一个规模较小的数据集,这也就是索引表了。如果还有其它字段也要用于键值查找,则可以再建立别的索引。原始数据集只有一份,索引可以有多个,如果每个索引都把原始数据集排序,则会使数据集被复制很多遍,占用空间过大。

另外,数据库在建立索引时还要考虑数据会插入删除,简单排序的索引会导致插入删除的成本非常高,这时一般会使用B树以方便快速更新。B树相当于把二叉树扩展成n叉树,本质上仍然是键值有序。(索引如何建立的话题内容不少,我们将另行撰文讨论,这里只研讨索引使用)

还有一种引申出来的方法是HASH索引,计算记录键值的某种HASH值,散列到1...k的自然数范围。这样查找时连二分比较也不必做,直接用HASH值定位了。HASH方法只用来做键值的精确查找,不能用来实现区间查找,因为HASH函数并不单调,已经失去原来键值的大小信息了,不过这在许多场景下也够用(按身份证号找人)。HASH索引本质上也是排序,只是用了键值的HASH值来排序。我们下面的讨论还是以普通键值排序为例,结论也适用于HASH索引。

 
 1、写一个程序,包含十个线程,子线程必须等待主线程sleep 10秒钟之后才执行,并打印当前时间;

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,学生姓名为alex,性别女;
     修改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. 第四模块:网络编程进阶&数据库开发 第1章·网络编程进阶

    01-进程与程序的概念 02-操作系统介绍 03-操作系统发展历史-第一代计算机 04-操作系统发展历史-批处理系统 05-操作系统发展历史-多道技术 06-操作系统发展历史-分时操作系统 07-总结 ...

  2. 第四模块:网络编程进阶&数据库开发 第2章·MySQL数据库开发

    01-MySQL开篇 02-MySQL简单介绍 03-不同平台下安装MySQL 04-Windows平台MySQL密码设置与破解 05-Linux平台MySQL密码设置与破解 06-Mac平台MySQ ...

  3. 第四模块:网络编程进阶&数据库开发 练习

    练习题 基于queue模块实现线程池 import threading from multiprocessing import Queue class A(threading.Thread): def ...

  4. 第四模块:网络编程进阶&数据库开发 口述

    进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 子进程死了之后 ,父进程关闭的时候要清理掉子进程的僵尸进程(收尸),孤儿进程是指父进程先死掉了的,交给init管理. join() 等待子进 ...

  5. 第十三章:Python の 网络编程进阶(二)

    本課主題 SQLAlchemy - Core SQLAlchemy - ORM Paramiko 介紹和操作 上下文操作应用 初探堡垒机 SQLAlchemy - Core 连接 URL 通过 cre ...

  6. 进击的Python【第七章】:Python的高级应用(四)面向对象编程进阶

    Python的高级应用(三)面向对象编程进阶 本章学习要点: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 一.面向对象高级语法部分 静态方法 ...

  7. nodejs模块——网络编程模块

    net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法.dgram模块用于UDP网络编程. 参考链接:https://nodejs.org/api/net.html, ...

  8. Python编程-网络编程进阶(IO复用、Socketserver)

    一.认证客户端的链接合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现. 服务端 from socket import * imp ...

  9. (四)linux网络编程

    一.CS架构,BS架构 (1)CS架构介绍(client server,客户端服务器架构),例如:qq.360网盘(2)BS架构介绍(broswer server,浏览器服务器架构)例如:浏览器 二. ...

随机推荐

  1. QT学习之文件系统读写类

    #QT学习之文件系统读写类 QIODevice QFileDevice QBuffer QProcess 和 QProcessEnvironment QFileDevice QFile QFileIn ...

  2. IOS 多媒体 使用总结

    一.音频播放 1.音效播放(短时间的音频文件)1> AudioServicesCreateSystemSoundID2> AudioServicesPlaySystemSound 2.音乐 ...

  3. 安装配置MySQL

    安装yum install mysql-server设置开机启动chkconfig mysqld on启动mysql服务器service mysqld start 设置root的初试密码mysqlad ...

  4. fast、faster中ap值的计算

    def voc_ap(rec, prec, use_07_metric=False): """ ap = voc_ap(rec, prec, [use_07_metric ...

  5. js前端解析excel文件

    使用纯Javascript解析excel文件. 使用的是开源的解析excel的js库:sheetjs.github地址:https://github.com/SheetJS/js-xlsx 首先引用J ...

  6. 关于Echarts的原生js获取DOM元素与动态加载DOM元素的冲突问题

    1.前言: 最近在做的看板项目,因为需要循环加载后台数据,并且用Echarts做数据呈现,所以jQuery和angular等库统统靠边站,Echarts用的是原生js获取DOM元素,至于诸多不兼容等深 ...

  7. Django-rest-framework(一)简单入门使用

    简单的使用 Django-rest-framework 建成DRF,可以帮助我们快速构建出 django的rest full 风格的api接口. 其源码容易理解,所以我们可以很方便的使用. 安装 pi ...

  8. js事件委托代码优化【感悟总结】

    前两天接手了同事的一个项目,是一个网站首页,其中有段代码很累赘,要实现的功能就是, 通过给父元素添加鼠标移入移出事件,来控制子元素显示隐藏. html代码,一共有四个父元素div,每个父元素嵌套一个子 ...

  9. App 分辨率相关 - iOS

    针对现有 Apple 设备分辨率小归总,方便日常查看; 顺便推荐一款图片生成工具,个人感觉挺方便好用,放置一张高分辨率大图可自动生成一套配图,软件名称(App Icon Gear). 具体设备分辨率如 ...

  10. 如何使用Xcode的Targets来管理开发和生产版本的构建

    如何使用Xcode的Targets来管理开发和生产版本的构建 想象一下,你已经完成了应用程序的开发和测试,现在准备提交正式版本.问题是,一些web服务的url指向了测试服务器,同时API密钥被配置用于 ...