摘要: 视图 对于复杂的查询,在多次使用后,维护是一件非常麻烦的事情 解决:定义视图 视图本质就是对查询的一个封装 定义视图 视图的用途就是查询 事务 当一个业务逻辑需要多个sql完成时,如果其中某条sql语句出错,则希望整个操作都退回 使用事务可以完成退回的功能,保证业务逻辑的正确性 事务四大特性(简称A 阅读全文
posted @ 2018-05-14 21:56 瀛洲小李 阅读(133) 评论(0) 推荐(0)
摘要: 自关联 设计省信息的表结构provinces id ptitle 设计市信息的表结构citys id ctitle proid citys表的proid表示城市所属的省,对应着provinces表的id值 问题:能不能将两个表合成一张表呢? 思考:观察两张表发现,citys表比provinces表多 阅读全文
posted @ 2018-05-14 21:51 瀛洲小李 阅读(175) 评论(0) 推荐(0)
摘要: 关系 创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生表引用过来,关系也是一条数据;根据范式要求应该存储学生的编号,而不是学生的姓名等其它信息 同理,科目表也是关系列,引用科目表中的数据 id 学生 科目 成绩 阅读全文
posted @ 2018-05-14 21:46 瀛洲小李 阅读(299) 评论(0) 推荐(1)
摘要: 分组 按照字段分组,表示此字段相同的数据会被放到一个组中 分组后,只能查询出相同的数据列,对于有差异的数据列无法出现在结果集中 可以对分组后的数据进行统计,做聚合运算 语法: 查询男女生总数 查询各城市人数 分组后的数据筛选 语法: having后面的条件运算符与where的相同 查询男生总人数 对 阅读全文
posted @ 2018-05-14 20:27 瀛洲小李 阅读(193) 评论(0) 推荐(0)
摘要: 查询的基本语法 from关键字后面写表名,表示数据来源于是这张表 select后面写表中的列名,如果是*表示在结果中显示表中所有列 在select后面的列名部分,可以使用as为列起别名,这个别名出现在结果集中 如果要查询多个列,之间使用逗号分隔 消除重复行 在select后面列前使用distinct 阅读全文
posted @ 2018-05-14 20:07 瀛洲小李 阅读(174) 评论(0) 推荐(0)
摘要: 数据完整性 一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中 在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束 字段类型 在mysql中包含的数据类型很多,这里主要列出来常用的几种 数字:int,decimal 阅读全文
posted @ 2018-05-14 19:47 瀛洲小李 阅读(178) 评论(0) 推荐(0)
摘要: E-R模型 当前物理的数据库都是按照E-R模型进行设计的 E表示entry,实体 R表示relationship,关系 一个实体转换为数据库中的一个表 关系描述两个实体之间的对应规则,包括 一对一 一对多 多对多 关系转换为数据库表中的一个列 *在关系型数据库中一行就是一个对象 一对一 一对多 多对 阅读全文
posted @ 2018-05-14 19:30 瀛洲小李 阅读(226) 评论(0) 推荐(0)
摘要: Web动态服务器-1 应用程序示例 Web动态服务器-2-传递数据给应用 阅读全文
posted @ 2018-05-14 19:12 瀛洲小李 阅读(700) 评论(0) 推荐(0)
摘要: Web静态服务器-2-显示需要的页面 Web静态服务器-3-使用类 阅读全文
posted @ 2018-05-14 19:02 瀛洲小李 阅读(734) 评论(0) 推荐(0)
摘要: Web静态服务器-1-显示固定的页面 阅读全文
posted @ 2018-05-14 18:56 瀛洲小李 阅读(916) 评论(0) 推荐(0)
摘要: HTTP协议简介 1. 使用谷歌/火狐浏览器分析 在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以: HTML是一种用来定义网页的文本,会HTML,就可以编写网页; HTTP是在网络上传输HTML的协 阅读全文
posted @ 2018-05-14 18:43 瀛洲小李 阅读(7676) 评论(0) 推荐(0)
摘要: 异步 同步调用就是你 喊 你朋友吃饭 ,你朋友在忙 ,你就一直在那等,等你朋友忙完了 ,你们一起去 异步调用就是你 喊 你朋友吃饭 ,你朋友说知道了 ,待会忙完去找你 ,你就去做别的了。 from multiprocessing import Pool import time import os d 阅读全文
posted @ 2018-05-14 17:43 瀛洲小李 阅读(184) 评论(0) 推荐(0)
摘要: 同步应用 多个线程有序执行 运行结果: 总结 可以使用互斥锁完成多个任务,有序的进程工作,这就是线程的同步 阅读全文
posted @ 2018-05-14 17:37 瀛洲小李 阅读(174) 评论(1) 推荐(1)
摘要: 多线程-非共享数据 对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生 1. 非全局变量是否要加锁呢? 在多线程开发中,全局变量是多个线程都共享的数据,而局部变量等是各自线程的,是非共享的 阅读全文
posted @ 2018-05-14 17:34 瀛洲小李 阅读(211) 评论(0) 推荐(1)
摘要: 同步的概念 1. 多线程开发可能遇到的问题 假设两个线程t1和t2都要对num=0进行增1运算,t1和t2都各对num修改10次,num的最终的结果应该为20。 但是由于是多线程访问,有可能出现下面情况: 在num=0时,t1取得num=0。此时系统把t1调度为”sleeping”状态,把t2转换为 阅读全文
posted @ 2018-05-14 17:27 瀛洲小李 阅读(167) 评论(0) 推荐(1)
摘要: 进程VS线程 功能 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口 定义的不同 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不 阅读全文
posted @ 2018-05-14 16:57 瀛洲小李 阅读(192) 评论(0) 推荐(0)
摘要: 多线程-共享全局变量 列表当做实参传递到线程中 总结: 在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好) 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全) 阅读全文
posted @ 2018-05-14 16:52 瀛洲小李 阅读(163) 评论(0) 推荐(1)
摘要: threading注意点 1. 线程执行代码的封装 通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法 示 阅读全文
posted @ 2018-05-14 16:44 瀛洲小李 阅读(177) 评论(0) 推荐(1)
摘要: 多线程-threading python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用 1. 使用threading模块 单线程执行 多线程执行 2. 主线程会等待所有的子线程结束后才结束 3. 查看线程数量 阅读全文
posted @ 2018-05-14 16:39 瀛洲小李 阅读(234) 评论(0) 推荐(0)
摘要: 进程池Pool 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。 初始化Pool时,可以指定一个最大进程数,当有新 阅读全文
posted @ 2018-05-14 16:25 瀛洲小李 阅读(195) 评论(0) 推荐(0)
摘要: multiprocessing 如果你打算编写多进程的服务程序,Unix/Linux无疑是正确的选择。由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序? 由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就 阅读全文
posted @ 2018-05-14 16:19 瀛洲小李 阅读(309) 评论(0) 推荐(0)
摘要: 多次fork问题 如果在一个程序,有2次的fork函数调用,是否就会有3个进程呢? 父子进程的执行顺序 父进程、子进程执行顺序没有规律,完全取决于操作系统的调度算法 阅读全文
posted @ 2018-05-14 16:12 瀛洲小李 阅读(254) 评论(0) 推荐(0)
摘要: 进程的创建-fork 1. 进程 VS 程序 编写完毕的代码,在没有运行的时候,称之为程序 正在运行着的代码,就成为进程 进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的 2. fork( ) Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中 阅读全文
posted @ 2018-05-14 16:07 瀛洲小李 阅读(682) 评论(0) 推荐(0)
摘要: 协程-greenlet版 为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单 安装方式 使用如下命令安装greenlet模块: 运行效果 gevent greenlet已经实现了协程,但是这个还的人工切换,是不是觉得太麻烦了,不要捉急,pytho 阅读全文
posted @ 2018-05-14 15:53 瀛洲小李 阅读(218) 评论(0) 推荐(0)
摘要: 协程 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 首先我们得知道协程是啥?协程其实可以认为是比线程更小的执行单元。 为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以 阅读全文
posted @ 2018-05-14 12:57 瀛洲小李 阅读(213) 评论(1) 推荐(0)
摘要: epoll版-TCP服务器 1. epoll的优点: 2. epoll使用参考代码 2. 说明 EPOLLIN (可读) EPOLLOUT (可写) EPOLLET (ET模式) epoll对文件描述符的操作有两种模式:LT(level trigger)和ET(edge trigger)。LT模式是 阅读全文
posted @ 2018-05-14 12:53 瀛洲小李 阅读(177) 评论(0) 推荐(0)
摘要: select版-TCP服务器 1. select 原理 在多路复用的模型中,比较常用的有select模型和epoll模型。这两个都是系统接口,由操作系统提供。当然,Python的select模块进行了更高级的封装。 网络通信被Unix系统抽象为文件的读写,通常是一个设备,由设备驱动程序提供,驱动可以 阅读全文
posted @ 2018-05-14 12:52 瀛洲小李 阅读(188) 评论(0) 推荐(1)
摘要: 单进程服务器-非堵塞模式 服务器 客户端 阅读全文
posted @ 2018-05-14 12:47 瀛洲小李 阅读(176) 评论(0) 推荐(0)
摘要: 单进程服务器 1. 完成一个简单的TCP服务器 2. 总结 同一时刻只能为一个客户进行服务,不能同时为多个客户服务 类似于找一个“明星”签字一样,客户需要耐心等待才可以获取到服务 当服务器为一个客户端服务时,而另外的客户端发起了connect,只要服务器listen的队列有空闲的位置,就会为这个新客 阅读全文
posted @ 2018-05-14 12:45 瀛洲小李 阅读(205) 评论(0) 推荐(0)
摘要: 应用:模拟QQ聊天 客户端参考代码 服务器端参考代码 阅读全文
posted @ 2018-05-14 12:28 瀛洲小李 阅读(252) 评论(0) 推荐(0)
摘要: tcp通信模型 tcp服务器 在程序中,如果想要完成一个tcp服务器的功能,需要的流程如下: 一个很简单的tcp服务器如下: tcp客户端 tcp客户端构建流程 tcp的客户端要比服务器端简单很多,如果说服务器端是需要自己买手机、查手机卡、设置铃声、等待别人打电话流程的话,那么客户端就只需要找一个电 阅读全文
posted @ 2018-05-14 12:26 瀛洲小李 阅读(186) 评论(0) 推荐(0)
摘要: udp广播 阅读全文
posted @ 2018-05-14 12:13 瀛洲小李 阅读(191) 评论(0) 推荐(0)
摘要: TFTP客户端 1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: 简单 占用资源小 适合传递小文件 适合在局域网进行传递 端口号为69 基于UDP实现 阅读全文
posted @ 2018-05-14 12:11 瀛洲小李 阅读(226) 评论(0) 推荐(1)
摘要: udp网络通信过程 udp应用:echo服务器 参考代码 udp应用:聊天室 udp总结 1. udp是TCP/IP协议族中的一种协议能够完成不同机器上的程序间的数据通信 2. udp服务器、客户端 udp的服务器和客户端的区分:往往是通过请求服务和提供服务来进行区分 请求服务的一方称为:客户端 提 阅读全文
posted @ 2018-05-14 12:00 瀛洲小李 阅读(291) 评论(0) 推荐(0)
摘要: UDP介绍 UDP 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。 UDP是一种面向无连接 阅读全文
posted @ 2018-05-14 09:40 瀛洲小李 阅读(195) 评论(0) 推荐(0)
摘要: socket简介 1.本地的进程间通信(IPC)有很多种方式,例如 队列 同步(互斥锁、条件变量等) 以上通信方式都是在一台机器上不同进程之间的通信方式,那么问题来了 网络中进程之间如何通信? 2. 网络中进程之间如何通信 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起! 在本地可以通过进程 阅读全文
posted @ 2018-05-14 09:24 瀛洲小李 阅读(315) 评论(0) 推荐(0)
摘要: re模块的高级用法 search 需求:匹配出文章阅读的次数 findall 需求:统计出python、c、c++相应文章阅读的次数 sub 将匹配到的数据进行替换 需求:将匹配到的阅读次数加1 方法1: 方法2: python贪婪和非贪婪 Python里数量词默认是贪婪的(在少数语言里也可能是默认 阅读全文
posted @ 2018-05-14 08:57 瀛洲小李 阅读(216) 评论(0) 推荐(0)
摘要: 表示边界 示例1:$ 需求:匹配163.com的邮箱地址 示例2: \b 示例3:\B 匹配分组 示例1:| 需求:匹配出0-100之间的数字 示例2:( ) 需求:匹配出163、126、qq邮箱之间的数字 阅读全文
posted @ 2018-05-14 08:47 瀛洲小李 阅读(226) 评论(0) 推荐(0)
摘要: 表示字符 示例1: . 示例2:[ ] 示例3:\d 原始字符串 说明 Python中字符串前面加上 r 表示原生字符串, 与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\": 阅读全文
posted @ 2018-05-14 08:21 瀛洲小李 阅读(186) 评论(0) 推荐(1)
摘要: 恢复内容开始 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则 阅读全文
posted @ 2018-05-14 08:07 瀛洲小李 阅读(353) 评论(1) 推荐(1)