- 博客(561)
- 资源 (50)
- 收藏
- 关注
原创 增改删(python 版)
增加创建testInsert.py文件,向学生表中插入一条数据#encoding=utf-8import MySQLdbtry: conn=MySQLdb.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8') cs1=conn.cursor()
2017-10-29 09:26:38 292
原创 交互(python 版)
安装引入模块安装mysql模块sudo apt-get install python-mysql在文件中引入模块import MysqldbConnection对象用于建立与数据库的连接创建对象:调用connect()方法conn=connect(参数列表)参数host:连接的mysql主机,如果本机是'localhost'参数port:连接的
2017-10-29 09:25:07 628
原创 事务
事务当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回使用事务可以完成退回的功能,保证业务逻辑的正确性事务四大特性(简称ACID)原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致隔离性(Isolatio
2017-10-28 10:10:13 198
原创 视图
视图对于复杂的查询,在多次使用后,维护是一件非常麻烦的事情解决:定义视图视图本质就是对查询的一个封装定义视图create view stuscore as select students.*,scores.score from scoresinner join students on scores.stuid=students.id;视图的用途就是查询select
2017-10-28 10:09:11 238
原创 内置函数
字符串函数查看字符的ascii码值ascii(str),str是空串时返回0select ascii('a');查看ascii码值对应的字符char(数字)select char(97);拼接字符串concat(str1,str2...)select concat(12,34,'ab');包含字符个数length(str)select length('abc');截取字符串
2017-10-28 10:05:17 814
原创 子查询
子查询查询支持嵌套使用查询各学生的语文、数学、英语的成绩select sname,(select sco.score from scores sco inner join subjects sub on sco.subid=sub.id where sub.stitle='语文' and stuid=stu.id) as 语文,(select sco.score from sco
2017-10-28 10:04:11 267
原创 自关联
自关联设计省信息的表结构provincesidptitle设计市信息的表结构citysidctitleproidcitys表的proid表示城市所属的省,对应着provinces表的id值问题:能不能将两个表合成一张表呢?思考:观察两张表发现,citys表比provinces表多一个列proid,其它列的类型都是一样的意义:存储的都是地区信息,而且每种信息的数据量有
2017-10-28 10:02:24 340
原创 连接查询
先看个问题问:查询每个学生每个科目的分数分析:学生姓名来源于students表,科目名称来源于subjects,分数来源于scores表,怎么将3个表放到一起查询,并将结果显示在同一个结果集中呢?答:当查询结果来源于多张表时,需要使用连接查询关键:找到表间的关系,当前的关系是students表的id---scores表的stuidsubjects表的id---scores表的sub
2017-10-28 10:00:22 257
原创 关系
关系创建成绩表scores,结构如下id学生科目成绩思考:学生列应该存什么信息呢?答:学生列的数据不是在这里新建的,而应该从学生表引用过来,关系也是一条数据;根据范式要求应该存储学生的编号,而不是学生的姓名等其它信息同理,科目表也是关系列,引用科目表中的数据创建表的语句如下create table scores(id int primary key a
2017-10-28 09:57:48 253
原创 分页查询
获取部分行当数据量过大时,在一页中查看数据是一件非常麻烦的事情语法select * from 表名limit start,count从start开始,获取count条数据start索引从0开始示例:分页已知:每页显示m条数据,当前显示第n页求总页数:此段逻辑后面会在python中实现查询总条数p1使用p1除以m得到p2如果整除则p2为总数页如果不整除则p2
2017-10-28 09:56:30 266
原创 排序查询
排序为了方便查看数据,可以对数据进行排序语法:select * from 表名order by 列1 asc|desc,列2 asc|desc,...将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推默认按照列值从小到大排列asc从小到大排列,即升序desc从大到小排序,即降序查询未删除男生学生信息,按学号降序select * from stud
2017-10-28 09:55:22 323
原创 分组查询
分组按照字段分组,表示此字段相同的数据会被放到一个组中分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中可以对分组后的数据进行统计,做聚合运算语法:select 列1,列2,聚合... from 表名 group by 列1,列2,列3...查询男女生总数select gender as 性别,count(*)from studentsgroup by ge
2017-10-28 09:53:19 302
原创 聚合查询
聚合为了快速得到统计数据,提供了5个聚合函数count(*)表示计算总行数,括号中写星与列名,结果是相同的查询学生总数select count(*) from students;max(列)表示求此列的最大值查询女生的编号最大值select max(id) from students where gender=0;min(列)表示求此列的最小值查询未删除的学生最小编号select
2017-10-27 10:14:23 340
原创 条件查询
条件使用where子句对表中的数据筛选,结果为true的行会出现在结果集中语法如下:select * from 表名 where 条件;比较运算符等于=大于>大于等于>=小于小于等于不等于!=或查询编号大于3的学生select * from students where id>3;查询编号不大于4的科目select * from subjects where
2017-10-27 10:09:53 483
原创 使用命令连接
使用命令连接命令操作方式,在工作中使用的更多一些,所以要达到熟练的程度打开终端,运行命令mysql -uroot -p回车后输入密码,当前设置的密码为mysql连接成功后如下图退出登录quit或exit登录成功后,输入如下命令查看效果查看版本:select version();显示当前时间:select now();注意:在语句结尾要使用
2017-10-27 10:06:07 366
原创 使用图形窗口连接(navicat)
使用图形窗口连接下发windows的navicat点击“连接”弹出窗口,按照提示填写连接信息,如下图连接成功后,会在连接名称下面显示出当前的数据库双击选中数据库,就可以编辑此数据库下次再进入此软件时,通过双击完成连接、编辑操作数据库操作在连接的名称上右击,选择“新建数据库”,弹出窗口,并按提示填写在数据库上右击,选择“删除数据库”可以完成删除操作表操作
2017-10-27 10:00:14 1062
原创 数据完整性(python 版)
数据完整性一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束字段类型在mysql中包含的数据类型很多,这里主要列出来常用的几种数字:int,decimal字符串:varchar,text日期:datetime布尔:bit约束主键pr
2017-10-27 09:58:40 915
原创 安装(python 版)
安装安装sudo apt-get install mysql-server mysql-client然后按照提示输入管理服务启动service mysql start停止service mysql stop重启service mysql restart允许远程连接找到mysql配置文件并修改sudo vi /etc/my
2017-10-27 09:57:24 224
原创 数据库简介(python 版)
数据库简介人类在进化的过程中,创造了数字、文字、符号等来进行数据的记录,但是承受着认知能力和创造能力的提升,数据量越来越大,对于数据的记录和准确查找,成为了一个重大难题计算机诞生后,数据开始在计算机中存储并计算,并设计出了数据库系统数据库系统解决的问题:持久化存储,优化读写,保证数据的有效性当前使用的数据库,主要分为两类文档型,如sqlite,就是一个文件,通过对文件的复制完成数据
2017-10-27 09:56:36 300
原创 单进程gevent版-TCP服务器(python 版)
gevent版-TCP服务器import sysimport timeimport geventfrom gevent import socket,monkeymonkey.patch_all()def handle_request(conn): while True: data = conn.recv(1024) if not data:
2017-10-27 09:38:17 753 2
原创 协程-gevent(python版)
geventgreenlet已经实现了协程,但是这个还的人工切换,是不是觉得太麻烦了,不要捉急,python还有一个比greenlet更强大的并且能够自动切换任务的模块gevent其原理是当一个greenlet遇到IO(指的是input output 输入输出,比如网络、文件操作等)操作时,比如访问网络,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。
2017-10-27 09:35:32 2187
原创 协程-greenlet版(python 版)
协程-greenlet版为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单安装方式使用如下命令安装greenlet模块:sudo pip install greenlet#coding=utf-8from greenlet import greenletimport timedef test1(): while
2017-10-27 09:33:59 633
原创 多任务实现-协程(python 版)
协程协程,又称微线程,纤程。英文名Coroutine。协程是啥首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元。 为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息
2017-10-26 09:41:10 591
原创 单进程epoll版-TCP服务器(python 版)
epoll版-TCP服务器1. epoll的优点:没有最大并发连接的限制,能打开的FD(指的是文件描述符,通俗的理解就是套接字对应的数字编号)的上限远大于1024效率提升,不是轮询的方式,不会随着FD数目的增加效率下降。只有活跃可用的FD才会调用callback函数;即epoll最大的优点就在于它只管你“活跃”的连接,而跟连接总数无关,因此在实际的网络环境中,epoll的效率就会远远高
2017-10-26 09:39:25 621
原创 单进程select版-TCP服务器(python 版)
select版-TCP服务器1. select 原理在多路复用的模型中,比较常用的有select模型和epoll模型。这两个都是系统接口,由操作系统提供。当然,Python的select模块进行了更高级的封装。网络通信被Unix系统抽象为文件的读写,通常是一个设备,由设备驱动程序提供,驱动可以知道自身的数据是否可用。支持阻塞操作的设备驱动通常会实现一组自身的等待队列,如读/写等待队列用
2017-10-26 09:37:39 516
原创 单进程服务器-非堵塞模式(python版)
单进程服务器-非堵塞模式服务器#coding=utf-8from socket import *import time# 用来存储所有的新链接的socketg_socketList = []def main(): serSocket = socket(AF_INET, SOCK_STREAM) serSocket.setsockopt(SOL_SOCKET,
2017-10-26 09:36:05 380
原创 多线程服务器(python 版)
多线程服务器#coding=utf-8from socket import *from threading import Threadfrom time import sleep# 处理客户端的请求并执行事情def dealWithClient(newSocket,destAddr): while True: recvData = newSocket.recv(
2017-10-26 09:34:53 647
原创 多进程服务器(python 版)
多进程服务器1. 多进程服务器from socket import *from multiprocessing import *from time import sleep# 处理客户端的请求并为其服务def dealWithClient(newSocket,destAddr): while True: recvData = newSocket.recv(10
2017-10-26 09:33:44 844
原创 单进程服务器(python版)
单进程服务器1. 完成一个简单的TCP服务器from socket import *serSocket = socket(AF_INET, SOCK_STREAM)# 重复使用绑定的信息serSocket.setsockopt(SOL_SOCKET, SO_REUSEADDR , 1)localAddr = ('', 7788)serSocket.bind(localA
2017-10-26 09:32:47 338
原创 异步(python 版)
异步同步调用就是你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了。from multiprocessing import Poolimport timeimport osdef test(): print("---进程池中的进程---pid=%d,ppid
2017-10-26 09:28:32 235
原创 生产者与消费者模式(python 版)
1. 队列先进先出2. 栈先进后出Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语(可以理解为原子操作,即要么不做,要么就做完),能够在多线程中直接使用。可以使用队列来实现线程间的同步。用FIFO队列
2017-10-26 09:23:19 4170
原创 同步应用(python 版)
同步应用多个线程有序执行from threading import Thread,Lockfrom time import sleepclass Task1(Thread): def run(self): while True: if lock1.acquire(): print("------Task 1
2017-10-25 10:56:27 323
原创 死锁(python 版)
死锁现实社会中,男女双方都在等待对方先道歉如果双方都这样固执的等待对方先开口,弄不好,就分搜了1. 死锁在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。尽管死锁很少发生,但一旦发生就会造成应用的停止响应。下面看一个死锁的例子#coding=utf-8import threadingimport timeclass
2017-10-25 10:52:12 709
原创 多线程-非共享数据(python 版)
多线程-非共享数据对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生1. 非全局变量是否要加锁呢? #coding=utf-8 import threading import time class MyThread(threading.Thread): # 重写 构造方法 def __init__(self,nu
2017-10-25 10:43:07 547
原创 互斥锁(python 版)
互斥锁当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态:锁定/非锁定。某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而
2017-10-25 10:40:41 1057
原创 同步的概念(python 版)
同步的概念1. 多线程开发可能遇到的问题假设两个线程t1和t2都要对num=0进行增1运算,t1和t2都各对num修改10次,num的最终的结果应该为20。但是由于是多线程访问,有可能出现下面情况:在num=0时,t1取得num=0。此时系统把t1调度为”sleeping”状态,把t2转换为”running”状态,t2也获得num=0。然后t2对得到的值进行加1并赋给num,使得n
2017-10-25 10:38:51 380
原创 多线程-共享全局变量(python版)
多线程-共享全局变量from threading import Threadimport timeg_num = 100def work1(): global g_num for i in range(3): g_num += 1 print("----in work1, g_num is %d---"%g_num)def work2():
2017-10-25 10:34:47 1621
原创 threading注意点(python 版)
threading注意点1. 线程执行代码的封装通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法示例如下:#coding=utf-8import threadingimport tim
2017-10-25 10:31:42 459
原创 多线程-threading和进程VS线程(python 版)
多线程-threadingpython的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用1. 使用threading模块单线程执行#coding=utf-8import timedef saySorry(): print("亲爱的,我错了,我能吃饭了吗?") time.sleep(1)
2017-10-25 10:29:32 259
原创 进程间通信-Queue(python版)
进程间通信-QueueProcess之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。1. Queue的使用可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理:#coding=utf-8from multiprocessing import Queueq=Queu
2017-10-25 10:26:32 695
ida sdk70与73
2020-05-13
ida sig.zip
2020-05-13
《Android深度探索(卷1) HAL与驱动开发》.(李宁).[PDF]@ckook.pdf.zip
2019-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人