Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
陌上花开7
Python-100-Days
提交
ed6777ea
P
Python-100-Days
项目概览
陌上花开7
/
Python-100-Days
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Python-100-Days
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ed6777ea
编写于
7月 25, 2019
作者:
J
jackfrued
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新了部分文档
上级
48758e07
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
13 addition
and
9 deletion
+13
-9
Day01-15/08.面向对象编程基础.md
Day01-15/08.面向对象编程基础.md
+1
-1
Day01-15/09.面向对象进阶.md
Day01-15/09.面向对象进阶.md
+1
-1
Day01-15/11.文件和异常.md
Day01-15/11.文件和异常.md
+1
-1
Day01-15/13.进程和线程.md
Day01-15/13.进程和线程.md
+1
-1
Day01-15/14.网络编程入门和网络应用开发.md
Day01-15/14.网络编程入门和网络应用开发.md
+0
-2
Day36-40/36-38.关系型数据库MySQL.md
Day36-40/36-38.关系型数据库MySQL.md
+9
-3
Day36-40/res/conceptual_model.png
Day36-40/res/conceptual_model.png
+0
-0
Day36-40/res/er_diagram.png
Day36-40/res/er_diagram.png
+0
-0
未找到文件。
Day01-15/08.面向对象编程基础.md
浏览文件 @
ed6777ea
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
活在当下的程序员应该都听过“面向对象编程”一词,也经常有人问能不能用一句话解释下什么是“面向对象编程”,我们先来看看比较正式的说法。
活在当下的程序员应该都听过“面向对象编程”一词,也经常有人问能不能用一句话解释下什么是“面向对象编程”,我们先来看看比较正式的说法。
> 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。
“把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。”
这样一说是不是更不明白了。所以我们还是看看更通俗易懂的说法,下面这段内容来自于
[
知乎
](
https://www.zhihu.com/
)
。
这样一说是不是更不明白了。所以我们还是看看更通俗易懂的说法,下面这段内容来自于
[
知乎
](
https://www.zhihu.com/
)
。
...
...
Day01-15/09.面向对象进阶.md
浏览文件 @
ed6777ea
...
@@ -276,7 +276,7 @@ def main():
...
@@ -276,7 +276,7 @@ def main():
stu = Student('王大锤', 15, '初三')
stu = Student('王大锤', 15, '初三')
stu.study('数学')
stu.study('数学')
stu.watch_av()
stu.watch_av()
t = Teacher('骆昊', 38, '
老叫兽
')
t = Teacher('骆昊', 38, '
砖家
')
t.teach('Python程序设计')
t.teach('Python程序设计')
t.watch_av()
t.watch_av()
...
...
Day01-15/11.文件和异常.md
浏览文件 @
ed6777ea
## 文件和异常
## 文件和异常
在实际开发中,常常需要对程序中的数据进行
[
持久化
](
https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96
)
操作,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于
[
文件系统
](
https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F
)
的知识,对于这个概念,维基百科上给出了很好的诠释,这里不再浪费笔墨
。
实际开发中常常会遇到对数据进行
[
持久化
](
https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%8C%81%E4%B9%85%E5%8C%96
)
操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于
[
文件系统
](
https://zh.wikipedia.org/wiki/%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F
)
的知识,但是这里我们并不浪费笔墨介绍这个概念,请大家自行通过维基百科进行了解
。
在Python中实现文件的读写操作其实非常简单,通过Python内置的
`open`
函数,我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件还是二进制文件)以及做什么样的操作(读、写还是追加),具体的如下表所示。
在Python中实现文件的读写操作其实非常简单,通过Python内置的
`open`
函数,我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件还是二进制文件)以及做什么样的操作(读、写还是追加),具体的如下表所示。
...
...
Day01-15/13.进程和线程.md
浏览文件 @
ed6777ea
...
@@ -485,5 +485,5 @@ if __name__ == '__main__':
...
@@ -485,5 +485,5 @@ if __name__ == '__main__':
main()
main()
```
```
比较两段代码的执行结果(在我目前使用的MacBook上,上面的代码需要大概6秒左右的时间,而下面的代码只需要不到1秒的时间,再强调一次我们只是比较了运算的时间,不考虑列表创建及切片操作花费的时间),使用多进程后由于获得了更多的CPU执行时间以及更好的利用了CPU的多核特性,明显的减少了程序的执行时间,而且计算量越大效果越明显。当然,如果愿意还可以将多个进程部署在不同的计算机上,做成分布式进程,具体的做法就是通过
multiprocessing.managers
模块中提供的管理器将
`Queue`
对象通过网络共享出来(注册到网络上让其他计算机可以访问),这部分内容也留到爬虫的专题再进行讲解。
比较两段代码的执行结果(在我目前使用的MacBook上,上面的代码需要大概6秒左右的时间,而下面的代码只需要不到1秒的时间,再强调一次我们只是比较了运算的时间,不考虑列表创建及切片操作花费的时间),使用多进程后由于获得了更多的CPU执行时间以及更好的利用了CPU的多核特性,明显的减少了程序的执行时间,而且计算量越大效果越明显。当然,如果愿意还可以将多个进程部署在不同的计算机上,做成分布式进程,具体的做法就是通过
`multiprocessing.managers`
模块中提供的管理器将
`Queue`
对象通过网络共享出来(注册到网络上让其他计算机可以访问),这部分内容也留到爬虫的专题再进行讲解。
Day01-15/14.网络编程入门和网络应用开发.md
浏览文件 @
ed6777ea
...
@@ -38,8 +38,6 @@ TCP全称传输控制协议,它是基于IP提供的寻址和路由服务而建
...
@@ -38,8 +38,6 @@ TCP全称传输控制协议,它是基于IP提供的寻址和路由服务而建
2.
流量控制(通过滑动窗口匹配数据发送者和接收者之间的传输速度)。
2.
流量控制(通过滑动窗口匹配数据发送者和接收者之间的传输速度)。
3.
拥塞控制(通过RTT时间以及对滑动窗口的控制缓解网络拥堵)。
3.
拥塞控制(通过RTT时间以及对滑动窗口的控制缓解网络拥堵)。
#### 网络应用模式
#### 网络应用模式
1.
C/S模式和B/S模式。这里的C指的是Client(客户端),通常是一个需要安装到某个宿主操作系统上的应用程序;而B指的是Browser(浏览器),它几乎是所有图形化操作系统都默认安装了的一个应用软件;通过C或B都可以实现对S(服务器)的访问。关于二者的比较和讨论在网络上有一大堆的文章,在此我们就不再浪费笔墨了。
1.
C/S模式和B/S模式。这里的C指的是Client(客户端),通常是一个需要安装到某个宿主操作系统上的应用程序;而B指的是Browser(浏览器),它几乎是所有图形化操作系统都默认安装了的一个应用软件;通过C或B都可以实现对S(服务器)的访问。关于二者的比较和讨论在网络上有一大堆的文章,在此我们就不再浪费笔墨了。
...
...
Day36-40/36-38.关系型数据库MySQL.md
浏览文件 @
ed6777ea
...
@@ -16,14 +16,20 @@
...
@@ -16,14 +16,20 @@
-
编程语言:结构化查询语言(SQL)。
-
编程语言:结构化查询语言(SQL)。
4.
E
-R图 /
概念模型图。
4.
E
R模型(实体关系模型)和
概念模型图。
!
[](
./res/concept-model-graph.png
)
**ER模型**
,全称为
**实体关系模型**
(Entity-Relationship Model),由美籍华裔计算机科学家陈品山先生提出,是概念数据模型的高层描述方式,如下图所示。
!
[](
./res/er_diagram.png
)
-
实体 - 矩形框
-
实体 - 矩形框
-
属性 - 椭圆框
-
属性 - 椭圆框
-
关系 - 菱形框
-
关系 - 菱形框
-
重数 - 1:1 / 1:N / M:N
-
重数 - 1:1(一对一) / 1:N(一对多) / M:N(多对多)
实际项目开发中,通常绘图的方式来辅助设计。在设计数据库时,我们可以利用数据库建模工具(如:PowerDesigner)绘制概念数据模型(其本质就是ER模型),然后再设置好目标数据库系统,将概念模型转换成物理模型,最终生成创建数据表的SQL。
!
[](
./res/conceptual_model.png
)
5.
关系数据库产品。
5.
关系数据库产品。
-
[
Oracle
](
https://www.oracle.com/index.html
)
- 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。
-
[
Oracle
](
https://www.oracle.com/index.html
)
- 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。
...
...
Day36-40/res/concept
-model-graph
.png
→
Day36-40/res/concept
ual_model
.png
浏览文件 @
ed6777ea
文件已移动
Day36-40/res/er_diagram.png
0 → 100644
浏览文件 @
ed6777ea
987.1 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录