随笔分类 - python
摘要:pymysql 对MySQL数据库进行简单数据操作python模块主要是:MySQLdb、pymsql,MySQLdb模块主要用于python2.X,而python3.X则使用pymsql,pymysql的使用方法和MySQLdb几乎一样,习惯用MySQLdb的,只需 import MySQLdb
阅读全文
摘要:MySQL简介、安装、操作 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存
阅读全文
摘要:Redis简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key
阅读全文
摘要:RabbitMQ RPC模型 RPC(remote procedure call)模型说通俗一点就是客户端发一个请求给远程服务端,让它去执行,然后服务端端再把执行的结果再返回给客户端。 1、服务端 2、客户端 3、输出 服务端: 客户端:
阅读全文
摘要:RabbitMQ RabbitMQ Publish\Subscribe(消息发布\订阅) 1对1的消息发送和接收,即消息只能发送到指定的queue里,但这样使用有些局限性,有些时候你想让你的消息被所有的Queue收到,类似广播的效果,这时候就要用到exchange了 Exchange在定义的时候是有
阅读全文
摘要:RabbitMQ 队列消息持久化 假如消息队列test里面还有消息等待消费者(consumers)去接收,但是这个时候服务器端宕机了,这个时候消息是否还在? 1、队列消息非持久化 服务端(producer): 客户端(consumers): 上面的服务端和客户端声明queue的方式都是非持久的 ①服
阅读全文
摘要:RabbitMQ MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列中的消息。RabbitMQ是MQ产品的典型代表,是一款基于AMQP协议可复用的企业
阅读全文
摘要:IO多路复用(select、poll、epoll)介绍及select、epoll的实现 IO多路复用中包括 select、pool、epoll,这些都属于同步,还不属于异步 一、IO多路复用介绍 1、select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来
阅读全文
摘要:事件驱动介绍 一、前言 通常,我们写服务器处理模型的程序时,有以下几种模型: (1)每收到一个请求,创建一个新的进程,来处理该请求; (2)每收到一个请求,创建一个新的线程,来处理该请求; (3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求 上面的几种方式,各有千秋, 第
阅读全文
摘要:协程介绍及基本示例 协程,又称微线程,纤程。英文名Coroutine。一句话说明什么是协程:协程是一种用户态的轻量级线程。 协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局
阅读全文
摘要:多进程 进程之间是相互独立的,python是启动进程的时候,是启动的是原生进程。进程是没有GIL锁的,而且不存在锁的概念,进程之间的数据式不能共享的,而线程是可以的。 1、进程的定义 用muliprocessing这个包中的Process来定义多进程,跟定义多线程类似 2、进程中加入线程 3、父子进
阅读全文
摘要:队列(Queue) 在多个线程之间安全的交换数据信息,队列在多线程编程中特别有用 队列的好处: 一、队列的类型: 1、lass queue.Queue(maxsize=0) 先进先出,后进后出 2、class queue.LifoQueue(maxsize=0) 是先进后出,后进新出规则,last
阅读全文
摘要:信号量(Semaphore) 之前讲的线程锁(互斥锁) 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去。 1、信号量 说白了就是在同一时间,可以只允许设定的数量的线程去执行 上面程
阅读全文
摘要:GIL锁 计算机有4核,代表着同一时间,可以干4个任务。如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的。但是单核永远肯定时串行的,它肯定是串行的,cpu真正执行的时候,因为一会执行1,一会执行2.。。。。正常的线程就是这个样子的。但是,在pyth
阅读全文
摘要:继承式多线程 1、定义 继承式多线程是自己自定义类,去继承theading.Tread这个类,通过类实例.start()启动,去执行run方法中的代码。 2、通过for循环来启动线程 上面的例子只启动了一个2个线程,还是用那种古老的方式t1,t2。要是一下子起10个或者100个线程,这种方式就不适用
阅读全文
摘要:进程与线程 一、概念 1、简述: 计算机,所有的指令的操作都是有CPU来负责的,cpu是来负责运算的。OS(操作系统) 调度cpu的最小单位就是线程。程序启动后,从内存中分一块空间,把数据临时存在内存中,因为内存比较快,内存比磁盘快,而CPU又比内存还要快很多。进程之前的的内存是不能访问的,默认是要
阅读全文
摘要:socketserver SocketServer服务端内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求。即:每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进 程” 专门负责处理当前客户端的所有请求。 一、sockets
阅读全文
摘要:上一篇随笔:“socket 接收大数据”,在win系统上能够运行,并且解决了大数据量的数据传输出现的问题,但是运行在linux系统上就会出现如下图所示的情况: 就是服务端两次发送给客户端的数据(第一次发送是时准备发送数据的字节大小,第二次是数据内容)粘在一起了,这是socket中的粘包: 查看服务端
阅读全文
摘要:Socket接收大数据 上一篇博客中的简单ssh实例,就是说当服务器发送至客户端的数据,大于客户端设置的数据,则就会把数据服务端发过来的数据剩余数据存在IO缓冲区中,这样就会造成我们想要获取数据的完整性。 解决思路: 1、改大客户端接收的数据的大小,因为官方建议最多只能接收8k的数据,那服务端发送过
阅读全文
摘要:socket socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递。 我们知道网络 通信 都 是基于 ip+port 方能定位到目标的具体机器上的具体服务,操作系统有0-65535个端口,每个端口都可以独立对外提供服务,如果 把一个公司比做一台电脑
阅读全文

浙公网安备 33010602011771号