01 2021 档案

摘要:数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序。 我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅 阅读全文
posted @ 2021-01-30 23:46 山风有耳 阅读(282) 评论(1) 推荐(2)
摘要:进程池与线程池 在刚开始接触多进程或多线程时,我们迫不及待地基于多进程或多线程实现并发的套接字通信,然而这种实现方式的致命缺陷是:**服务的开启的进程数或线程数都会随着并发的客户端数目地增多而增多,这会对服务端主机带来巨大的压力,甚至于不堪重负而瘫痪。**于是我们必须对服务端开启的进程数或线程数加以 阅读全文
posted @ 2021-01-26 21:22 山风有耳 阅读(198) 评论(0) 推荐(0)
摘要:信号量 信号量Semaphore:管理一个内置的计数器 每当调用acquire()时内置计数器-1; 调用release() 时内置计数器+1; 计数器不能小于0;当计数器为0时,acquire()将阻塞线程直到其他线程调用release()。 实例:(同时只有5个线程可以获得semaphore,即 阅读全文
posted @ 2021-01-22 21:33 山风有耳 阅读(230) 评论(0) 推荐(0)
摘要:线程相关概念 什么是线程? 线程:一个流水线的运行过程 进程内代码的运行过程 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合), 线程线程是一个执行单位,cpu执行的就是线程 多线程(即多个控制线程)的概念是,在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间,相当于 阅读全文
posted @ 2021-01-21 22:18 山风有耳 阅读(147) 评论(0) 推荐(0)
摘要:补充知识点:关于查看父进程子进程pid from multiprocessing import Process import os import time def task(): print("父进程pid:%s,自己的pid:%s" %(os.getppid(),os.getpid())) tim 阅读全文
posted @ 2021-01-20 22:23 山风有耳 阅读(298) 评论(0) 推荐(1)
摘要:操作系统介绍 为什么要有操作系统 现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其他输入输出设备组成。 一般而言,现代计算机系统是一个复杂的系统。 其一:如果每位应用程序员都必须掌握该系统所有的细节,那就不可能再编写代码了(严重影响了程序员的开发效率: 阅读全文
posted @ 2021-01-19 23:21 山风有耳 阅读(489) 评论(0) 推荐(0)
摘要:socketserver模块实现并发 基于tcp的套接字,关键就是两个循环,一个链接循环,一个通信循环 socketserver模块中分两大类:server类(解决链接问题)和request类(解决通信问题) socketserver模块的使用 基于TCP协议的套接字--支持并发 拿之前通信的例子, 阅读全文
posted @ 2021-01-19 22:46 山风有耳 阅读(215) 评论(0) 推荐(0)
摘要:基于TCP协议的粘包问题 让我们基于tcp先制作一个远程执行命令的程序(1:执行错误命令、2:执行ls、3:执行ifconfig/ps -ef) 注意注意注意: import subprocess # 提交系统命令模块 res=subprocess.Popen(cmd.decode('utf8'), 阅读全文
posted @ 2021-01-18 21:48 山风有耳 阅读(172) 评论(0) 推荐(0)
摘要:Socket套接字编程 为何学习socket套接字一定要先学习互联网协议: 1、首先:要想开发一款自己的C/S架构软件,就必须掌握socket编程 2、其次:C/S架构的软件(软件属于应用层)是基于网络进行通信的 3、然后:网络的核心即一堆协议,协议即标准,你想开发一款基于网络通信的软件,就必须遵循 阅读全文
posted @ 2021-01-15 21:36 山风有耳 阅读(237) 评论(0) 推荐(0)
摘要:软件开发的架构 1、C/S架构 这里的Client客户端一般泛指客户端应用程序,程序需要先在用户的电脑或手机上安装后,才能运行在用户的电脑或手机上 c/s架构 c:client 客户端 s:server 服务端 腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频 """ 将客户端看成是 阅读全文
posted @ 2021-01-14 23:00 山风有耳 阅读(400) 评论(0) 推荐(1)
摘要:多态与多态性 多态:同一种事物有多种形态 动物有多种形态:如狗、猫、猪 class Animal: # 同一类事物:动物 def talk(self): pass class Dog(Animal): # 动物的形态之一:狗 def talk(self): print("汪汪汪") class Ca 阅读全文
posted @ 2021-01-13 21:53 山风有耳 阅读(148) 评论(0) 推荐(0)
摘要:继承应用 类与类之间的继承指的是什么’是’什么的关系(比如人类,猪类,猴类都是动物类)。子类可以继承/遗传父类所有的属性,因而继承可以用来解决类与类之间的代码重用性问题。比如我们按照定义Student类的方式再定义一个Teacher类 class Student: # 定义学生类 school = 阅读全文
posted @ 2021-01-12 20:00 山风有耳 阅读(154) 评论(0) 推荐(0)
摘要:封装 封装指的就是把数据与功能都整合到一起,听起来是不是很熟悉,没错,我们之前所说的”整合“二字其实就是封装的通俗说法。 除此之外,针对封装到对象或者类中的属性,我们还可以严格控制对它们的访问,分两步实现:隐藏与开放接口. 隐藏属性 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) 阅读全文
posted @ 2021-01-11 20:22 山风有耳 阅读(169) 评论(0) 推荐(0)
摘要:面向对象编程 核心是对象二字,对象就是盛放相关数据与功能的容器,也可以说是把数据与功能整合到一起的产物 基于该思想编写程序就是在创造一个个的容器 优点:扩展性强() 缺点:编程的复杂度提升 应用场景:需要经常变化的软件,一般需求的变化都集中在用户层,互联网应用,企业内部软件,游戏等都是面向对象的程序 阅读全文
posted @ 2021-01-08 19:26 山风有耳 阅读(163) 评论(0) 推荐(0)
摘要:hashlib模块 加密:将明文数据通过一系列算法变成密文数据(目的就是为了数据的安全) 加密算法:md系列、sha系列、base系列、hmac系列 hash加密算法:传入一段内容会得到一串hash值 hash值有三大特点: 1.如果传入的内容与采用的算法一样,那么得到的hash值一定一样 2.只要 阅读全文
posted @ 2021-01-07 18:22 山风有耳 阅读(155) 评论(0) 推荐(0)
摘要:random模块 import random print(random.random()) # 随机产生一个0-1之间的小数 print(random.randint(0, 9)) # 随机产生一个0-9之间的整数 print(random.uniform(1, 3)) # 大于1小于3的小数,如1 阅读全文
posted @ 2021-01-06 22:55 山风有耳 阅读(147) 评论(0) 推荐(0)
摘要:面向过程编程 强调: 面向过程编程绝对不是用函数编程这么简单,面向过程是一种编程思路、思想,而编程思路是不依赖于具体的语言或语法的。言外之意是即使我们不依赖于函数,也可以基于面向过程的思想编写程序 定义: 核心是 “过程” 二字,过程就是解决问题的步骤,即先干什么、再干什么、后干什么。所以基于该思想 阅读全文
posted @ 2021-01-05 16:39 山风有耳 阅读(178) 评论(0) 推荐(0)
摘要:生成器 生成器就是一种自定义的迭代器 生成器对象 # 定义阶段就是一个普通函数 def func(): print('first') yield 111 print('second') yield 222 print('third') # 报错,抛出异常 StopIteration 取到这里就取干净 阅读全文
posted @ 2021-01-04 23:36 山风有耳 阅读(227) 评论(0) 推荐(0)
摘要:迭代器 什么是迭代器 迭代器指的是迭代取值的工具 什么是迭代 迭代即更新换代,每次的更新都必须依赖于上一次的结果 l = [111, 222, 333] # 遍历列表,索引,迭代取值 nums = "hello" def get(l): # 函数就是取值工具 i = 0 while i < len( 阅读全文
posted @ 2021-01-02 13:07 山风有耳 阅读(280) 评论(0) 推荐(0)