diff --git "a/Day01-15/08.\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\345\237\272\347\241\200.md" "b/Day01-15/08.\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\345\237\272\347\241\200.md" index e670a122d7ee6557b3a98b4d5ba45df987f7e7df..d84d3765cdae5b75b53d50de03107b3199244c65 100644 --- "a/Day01-15/08.\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\345\237\272\347\241\200.md" +++ "b/Day01-15/08.\351\235\242\345\220\221\345\257\271\350\261\241\347\274\226\347\250\213\345\237\272\347\241\200.md" @@ -2,7 +2,7 @@ 活在当下的程序员应该都听过“面向对象编程”一词,也经常有人问能不能用一句话解释下什么是“面向对象编程”,我们先来看看比较正式的说法。 -> 把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。 +“把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化(specialization)和泛化(generalization),通过多态(polymorphism)实现基于对象类型的动态分派。” 这样一说是不是更不明白了。所以我们还是看看更通俗易懂的说法,下面这段内容来自于[知乎](https://www.zhihu.com/)。 diff --git "a/Day01-15/09.\351\235\242\345\220\221\345\257\271\350\261\241\350\277\233\351\230\266.md" "b/Day01-15/09.\351\235\242\345\220\221\345\257\271\350\261\241\350\277\233\351\230\266.md" index 956d910644b5c434a101b2e3d552932442500329..4e8cf6ae7fc511a1d68cf1728d6538f7066b6a3d 100644 --- "a/Day01-15/09.\351\235\242\345\220\221\345\257\271\350\261\241\350\277\233\351\230\266.md" +++ "b/Day01-15/09.\351\235\242\345\220\221\345\257\271\350\261\241\350\277\233\351\230\266.md" @@ -276,7 +276,7 @@ def main(): stu = Student('王大锤', 15, '初三') stu.study('数学') stu.watch_av() - t = Teacher('骆昊', 38, '老叫兽') + t = Teacher('骆昊', 38, '砖家') t.teach('Python程序设计') t.watch_av() diff --git "a/Day01-15/11.\346\226\207\344\273\266\345\222\214\345\274\202\345\270\270.md" "b/Day01-15/11.\346\226\207\344\273\266\345\222\214\345\274\202\345\270\270.md" index 3fca86da6a1c76824bf568531f8b7d20e333eafc..6e47437e367f062e07ccd40632afa616ef3952ef 100644 --- "a/Day01-15/11.\346\226\207\344\273\266\345\222\214\345\274\202\345\270\270.md" +++ "b/Day01-15/11.\346\226\207\344\273\266\345\222\214\345\274\202\345\270\270.md" @@ -1,6 +1,6 @@ ## 文件和异常 -在实际开发中,常常需要对程序中的数据进行[持久化](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`函数,我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件还是二进制文件)以及做什么样的操作(读、写还是追加),具体的如下表所示。 diff --git "a/Day01-15/13.\350\277\233\347\250\213\345\222\214\347\272\277\347\250\213.md" "b/Day01-15/13.\350\277\233\347\250\213\345\222\214\347\272\277\347\250\213.md" index befdc4cef8f227b33e6a5e5270ff26657b07c934..b24b5b39f512f8cbc27668e85071bf7f562087e6 100644 --- "a/Day01-15/13.\350\277\233\347\250\213\345\222\214\347\272\277\347\250\213.md" +++ "b/Day01-15/13.\350\277\233\347\250\213\345\222\214\347\272\277\347\250\213.md" @@ -485,5 +485,5 @@ if __name__ == '__main__': main() ``` -比较两段代码的执行结果(在我目前使用的MacBook上,上面的代码需要大概6秒左右的时间,而下面的代码只需要不到1秒的时间,再强调一次我们只是比较了运算的时间,不考虑列表创建及切片操作花费的时间),使用多进程后由于获得了更多的CPU执行时间以及更好的利用了CPU的多核特性,明显的减少了程序的执行时间,而且计算量越大效果越明显。当然,如果愿意还可以将多个进程部署在不同的计算机上,做成分布式进程,具体的做法就是通过multiprocessing.managers模块中提供的管理器将`Queue`对象通过网络共享出来(注册到网络上让其他计算机可以访问),这部分内容也留到爬虫的专题再进行讲解。 +比较两段代码的执行结果(在我目前使用的MacBook上,上面的代码需要大概6秒左右的时间,而下面的代码只需要不到1秒的时间,再强调一次我们只是比较了运算的时间,不考虑列表创建及切片操作花费的时间),使用多进程后由于获得了更多的CPU执行时间以及更好的利用了CPU的多核特性,明显的减少了程序的执行时间,而且计算量越大效果越明显。当然,如果愿意还可以将多个进程部署在不同的计算机上,做成分布式进程,具体的做法就是通过`multiprocessing.managers`模块中提供的管理器将`Queue`对象通过网络共享出来(注册到网络上让其他计算机可以访问),这部分内容也留到爬虫的专题再进行讲解。 diff --git "a/Day01-15/14.\347\275\221\347\273\234\347\274\226\347\250\213\345\205\245\351\227\250\345\222\214\347\275\221\347\273\234\345\272\224\347\224\250\345\274\200\345\217\221.md" "b/Day01-15/14.\347\275\221\347\273\234\347\274\226\347\250\213\345\205\245\351\227\250\345\222\214\347\275\221\347\273\234\345\272\224\347\224\250\345\274\200\345\217\221.md" index 27a6cd57c3f0decb2183eb8c95897668f469b18c..02f2b4a726e6f56125ba8b62006b6a7344fdc650 100644 --- "a/Day01-15/14.\347\275\221\347\273\234\347\274\226\347\250\213\345\205\245\351\227\250\345\222\214\347\275\221\347\273\234\345\272\224\347\224\250\345\274\200\345\217\221.md" +++ "b/Day01-15/14.\347\275\221\347\273\234\347\274\226\347\250\213\345\205\245\351\227\250\345\222\214\347\275\221\347\273\234\345\272\224\347\224\250\345\274\200\345\217\221.md" @@ -38,8 +38,6 @@ TCP全称传输控制协议,它是基于IP提供的寻址和路由服务而建 2. 流量控制(通过滑动窗口匹配数据发送者和接收者之间的传输速度)。 3. 拥塞控制(通过RTT时间以及对滑动窗口的控制缓解网络拥堵)。 - - #### 网络应用模式 1. C/S模式和B/S模式。这里的C指的是Client(客户端),通常是一个需要安装到某个宿主操作系统上的应用程序;而B指的是Browser(浏览器),它几乎是所有图形化操作系统都默认安装了的一个应用软件;通过C或B都可以实现对S(服务器)的访问。关于二者的比较和讨论在网络上有一大堆的文章,在此我们就不再浪费笔墨了。 diff --git "a/Day36-40/36-38.\345\205\263\347\263\273\345\236\213\346\225\260\346\215\256\345\272\223MySQL.md" "b/Day36-40/36-38.\345\205\263\347\263\273\345\236\213\346\225\260\346\215\256\345\272\223MySQL.md" index 2e71e21a6795820d7532a94e054a814c66d2057f..81f870c055d493e683ecd34dec030480ac4ebc2a 100644 --- "a/Day36-40/36-38.\345\205\263\347\263\273\345\236\213\346\225\260\346\215\256\345\272\223MySQL.md" +++ "b/Day36-40/36-38.\345\205\263\347\263\273\345\236\213\346\225\260\346\215\256\345\272\223MySQL.md" @@ -16,14 +16,20 @@ - 编程语言:结构化查询语言(SQL)。 -4. E-R图 / 概念模型图。 +4. ER模型(实体关系模型)和概念模型图。 - ![](./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. 关系数据库产品。 - [Oracle](https://www.oracle.com/index.html) - 目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库,它实现了分布式处理的功能。在Oracle最新的12c版本中,还引入了多承租方架构,使用该架构可轻松部署和管理数据库云。 diff --git a/Day36-40/res/concept-model-graph.png b/Day36-40/res/conceptual_model.png similarity index 100% rename from Day36-40/res/concept-model-graph.png rename to Day36-40/res/conceptual_model.png diff --git a/Day36-40/res/er_diagram.png b/Day36-40/res/er_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e851a30d39dfe373f637cac39c251d2426c87087 Binary files /dev/null and b/Day36-40/res/er_diagram.png differ