- 博客(43)
- 收藏
- 关注
原创 Python 可迭代对象,迭代器,生成器
最近温习Python基础知识,简单记录下,也帮自己巩固下基础知识。一、容器,可迭代对象,迭代器首先理解下什么是容器,列表(list: [0, 1, 2]),元组(tuple: (0, 1, 2)),字典(dict: {0:0, 1:1, 2:2}),集合(set: set([0, 1, 2]))都是容器。对于容器,你可以很直观地想象成多个元素在一起的单元;而不同容器的区别,正是在于内部数据结构的实现方法。然后,你就可以针对不同场景,选择不同时间和空间复杂度的容器。...
2021-07-13 12:25:59
348
原创 docker镜像和容器的区别
一、镜像 假设Linux内核是第0层,那么无论怎么运行Docker,它都是运行于内核层之上的。这个Docker镜像,是一个只读的镜像,位于第1层,它不能被修改或不能保存状态。一个Docker镜像可以构建于另一个Docker镜像之上,这种层叠关系可以是多层的。第1层的镜像层我们称之为基础镜像(Base Image),其他层的镜像(除了最顶层)我们称之为父层镜像(Parent Image)。这些镜像继承了他们的父层镜像的所有属性和设置,并在Dockerfil...
2021-07-02 11:20:14
2800
1
原创 ClickHouse 表引擎
一、引擎分类MergeTree系列 LogTree系列 集成引擎 特定功能引擎 适用于高负载任务的最通用和功能最强大的表引擎。可以快速插入数据并进行后续的后台数据处理 1. MergeTree 2. ReplacingMergeTree 3. SummingMergeTree 4. AggregatingMergeTree 5. CollapsingMergeTree 6.VersionedCollap.
2020-11-10 17:42:07
1636
原创 IO多路复用哪些方式
I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态(对应空管塔里面的Fight progress strip槽)来同时管理多个I/O流. 发明它的原因,是尽量多的提高服务器的吞吐能力。在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流, (学过EE的人现在可以站出来义正严辞说这个叫“时分复用”了)。什么,你还没有搞懂“一个请求到来了,nginx使用epoll接收请求的过程是怎样的”, 多..
2020-09-16 23:20:06
105
原创 Mac 安装mongodb之Bug解决
根据流程安装:https://www.jianshu.com/p/7241f7c83f4a遇到问题以及解决办法:1)安装到创建mongodb存放数据文件夹时bug:
2020-07-29 14:14:50
452
1
原创 RabbitMq +Celery(三)
一、Celery简介Celery 本身不是任务队列, 是管理分布式任务队列的工具. 它封装了操作常见任务队列的各种操作, 我们使用它可以快速进行任务队列的使用与管理.Celery是一个专注于实时处理和任务调度的分布式任务队列。同时提供操作和维护分布式系统所需的工具,它的基本工作就是管理分配任务到不同的服务器,并且取得结果。至于说服务器之间是如何进行通信的?这个Celery本身不能解决。Celery在执行任务时需要一个消息中间件来接收和发送任务消息,以及存储任务结果,一般使用RabbitMQ 或 Re
2020-06-02 23:14:57
4475
4
原创 RabbitMq +Celery(二)
前面我们基本了解了rabbitmq的相关概念,接下来我们就Rabbitmq的demo一、安装正常安装比较麻烦,这里推荐使用docker安装,关于docker的使用,请看我之前写过的一篇文章==>传送门注意获取镜像的时候要获取management版本的,不要获取last版本的,management版本的才带有管理界面1.获取官方镜像:docker pull rabbitmq:management2.启动镜像:# 方法一 后台启动, 默认用户名密码 guest:guest.
2020-06-01 23:13:06
618
原创 RabbitMq +Celery(一)
本文共三篇,看完之后,使用RabbitMq + Celery进行日常业务是没问题的。一、背景介绍在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量,目前项目中一直在用RabbitMq + Celery进行分布式异步调度任务,最近抽出时间从头整理一下。二、RabbitMq简介首先,我们看下RabbitMq的发展史1、RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多
2020-06-01 22:29:48
1416
2
转载 OSI 七层模型和TCP/IP模型及对应协议(详解)
完成中继功能的节点通常称为中继系统。在OSI七层模型中,处于不同层的中继系统具有不同的名称。一个设备工作在哪一层,关键看它工作时利用哪一层的数据头部信息。网桥工作时,是以MAC头部来决定转发端口的,因此显然它是数据链路层的设备。具体说:物理层:网卡,网线,集线器,中继器,调制解调器数据链路层:网桥,交换机网络层:路由器网关工作在第四层传输层及其以上集线器是物理层...
2020-04-18 23:29:44
9368
2
转载 python 队列、栈、堆
1. 栈与队列的基础知识栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征队列(queue)是一种具有先进先出特征的线性数据结构,元素的增加只能在一端进行,元素的删除只能在另一端进行。能够增加元素的队列一端称为队尾,可以删除元素的队列一端则称为队首。python库from collections...
2020-04-16 23:23:57
500
原创 mysql(四)索引失效分析
mysql索引会失效的情况要想分析MySQL查询语句中的相关信息,如是全表查询还是部分查询,就要用到explain.关于explain,可以查看我另一篇文章一、索引优缺点索引的优点大大减少了服务器需要扫描的数据量 可以帮助服务器避免排序或减少使用临时表排序 索引可以随机I/O变为顺序I/O索引的缺点需要占用磁盘空间,因此冗余低效的索引将占用大量的磁盘空间 降低DML性能,对...
2020-04-13 12:08:00
3099
2
原创 mysql (三)查询优化
SELECT * FROM news n0_ inner join news_translations n1_ ON n0_.id = n1_.translatable_id inner join channels_news c3_ ON n0_.id = c3_.news_id WHERE ( ( n0_.unpublished_at IS NOT NULL AN...
2020-04-12 00:20:31
175
原创 mysql(二)explain
先来看下explain效果explain select * from django_session;expain出来的信息有12列,分别是id、select_type、table、type、partiyions(mysql5.7新增)、possible_keys、key、key_len、ref、rows、filtered(mysql5.7新增)、Extra,下面对这些字段出现的可能进...
2020-04-07 22:48:44
144
原创 mysql(一)了解索引以及所以类型
一、索引采用哪种数据结构?Hash索引和B+ Tree索引,mysql默认的是InnoDB引擎,默认的是B+树。优缺点:B+ Tree索引和Hash索引区别 哈希索引适合等值查询,但是不无法进行范围查询 哈希索引没办法利用索引完成排序 哈希索引不支持多列联合索引的最左匹配规则 如果有大量重复键值得情况下,哈希索引的效率会很低,因为存在哈希碰撞问题。二、索引类型1、聚簇索引(聚集索引...
2020-04-06 02:30:18
299
原创 Python位运算符(二进制)
了解位运算符之前首先要了解二进制。&(按位与),|(按位或),|(按位异或),|(按位反转),|(按位左移),|(按位右移),|()按位与 :& ----------(同为1,才是1)5&3 = 1 ----------------> 101011 001 相同位仅为个位1 ,故结果为 1按位或 :| ----------(一个为1,就为1)...
2020-04-05 15:05:57
480
原创 Python SortedContainers Module 对字典排序
对字典排序:推荐使用:Python SortedContainers Module一款纯python写的对列表、字典、集合排序的模块Sorted Containers是Apache2许可的Sorted Collections库,用纯Python编写,并且速度与C扩展一样快。在需要排序的集合类型之前,Python的标准库非常有用。许多人会证明,即使没有排序,您也可以真正走得很远,但是,当...
2020-04-03 10:55:28
5748
1
原创 Python Sorted
Python列表具有一个内置的sort()方法和一个sorted()内置函数,该方法可以就地修改列表,而内置函数可以从一个可迭代对象构建一个新的排序列表。有很多方法可以使用它们对数据进行排序,并且在描述它们的各种手册中似乎没有一个单一的中心位置,花点时间彻底搞清楚它。一、排序基础简单的升序排序非常容易-只需调用sorted()函数即可。它返回一个新的排序列表:>>>...
2020-04-03 10:29:56
966
原创 Python os.path、sys.path
一、sys.path我们首先了解下PATH、PYTHONPATH 和 sys.path 的区别PATH在PATH中的 python module 不能被 import,在 PATH 中的一些命令,例如 *.exe,可以直接在cmd中运行,而不用明确的路径,我们在给 python 安装一些 packages 的时候,有一些 Scripts 被安装到 /Scripts 文件夹中,如果 /S...
2020-03-14 10:28:34
1488
原创 Python元类浅析
课程介绍 1.高级语法 2.探究细节 3.面向对象进阶 3.1.python是动态语言 3.2.__slots__ 3.3.私有化 3.4.属性property 3.5.元类(了解) 4.补充话题 本書使用 GitBook 釋出python高级语法元类1. 类也是对象在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段...
2020-03-05 10:19:44
135
原创 Python私有化
解释:xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__, __ 不要自己发明这样的名字 xx_:单后置下划线,用于避免与...
2020-02-29 11:16:41
147
原创 Python函数式编程
一、简介1、首先看下函数、函数式、面向对象的区别:面向对象:类==>class面向过程:过程==>def函数式编程:函数==>def2、函数和过程的基本认识def func1(): """testing1""" print('in the func1') return 0 # 这是一个函数def func2():...
2020-02-20 17:56:20
567
原创 Python 单例模式
使用场景:1)在我们的windows桌面上,我们打开了一个回收站,当我们试图再次打开一个新的回收站时,Windows系统并不会为你弹出一个新的回收站窗口。,也就是说在整个系统运行的过程中,系统只维护一个回收站的实例。这就是一个典型的单例模式运用。 继续说回收站,我们在实际使用中并不存在需要同时打开两个回收站窗口的必要性。假如我每次创建回收站时都需要消耗大量的资源,而每个回收站之间资源是...
2019-12-25 17:49:01
220
原创 Django2.0日志服务(logging)结合阿里云日志
公司Django项目的log之前都是写到项目下面的特定文件,然后通过url下载日志文件,再进行分析。现在是通过logging模块直接连接到阿里云日志服务,可以实时直观的访问日志信息,还可以进行各种查询分析。一、Django中使用日志模块。1)模块介绍:主要包括以下四个组件:Loggers 向应用程序提供log接口Handlers 将log记录发送到指定的目的地(控制台输出,或写...
2019-10-25 13:37:13
123
原创 Mac Jmeter安装与使用(一)---安装
最近工作中有用到Jmeter压测,开发中经常会用到Jmeter对自己接口进行压测,所以简单记之。截止2019年7月,JMeter的最新版本是5.1,JMeter 5.1需要Java 8、Java 9,所以我们最终选择的版本是Java8,下面是安装步骤:一、安装Java1)下载jdkJava8 官网下载地址如上图,需要点击 Accept License Agreement按钮...
2019-07-12 17:40:11
6695
3
原创 Python使用阿里云对象存储OSS--服务器端上传文件
一直在使用阿里云对象存储Oss,今天来总结一下基本用法,主要写个逻辑,具体操作都有详细的文档,会附链接1 开通服务首先需要开通oss服务以及创建存储空间,需要注意的是开通完oss服务之后默认的是按流量计费的,如需包年包月可以购买oss服务2 python服务器端上传文件到阿里云oss 1)需要登录阿里云,然后创建Access Key,如果有子用户可...
2019-04-09 16:36:46
12952
原创 Python-Django使用apidoc接口文档
最近工作中有用到apidoc,感觉很方便,记录一下...都是链接地址,比较懒...1)参照:安装apidoc2)将docs文件夹(包括apidoc.json和header.md)拷贝到自己方便的位置,没有的话就创建两个文件,比如我的就是放在了static静态文件夹下3)按照要求书写接口文档,参照:使用apidoc 生成Restful web Api文档4)在docs文件夹下...
2019-04-09 16:35:09
8291
2
原创 Docker总结(配合阿里云容器镜像服务)
Docker是个很好的工具,刚开始用觉得还没虚拟环境好用,随着深入了解,越发觉得Docker好用,今天就来总结一下使用心得。一、Docker基础1、背景知识1)docker是什么? Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个...
2019-04-09 16:34:40
97630
9
原创 微信公众号开发之自带debug结合postman调试
最近有涉及到微信公众号的开发,其中调试过程挺好玩,记录之...需求:由于自带的debug平台没法访问本地局域网,本地想调试代码可以使用postman调试,但是需要符合微信服务器接收规则的xml。首先附上微信自带的debug平台:https://mp.weixin.qq.com/debug/,,所以使用它的调试信息xml,放到postman调试,可以满足需求。1、首先选择接口类型,这里以...
2018-10-12 17:41:35
3657
原创 Win10安装并同时运行两个Mysql实例(5.7.22)
一、安装第一个mysql实例1)mysql安装包下载官网下载地址:https://dev.mysql.com/downloads/mysql2)解压mysql,将下载的mysql压缩包解压,如下图3)在解压完成后的文件夹里面创建my.ini文件,为数据库配置文件my.ini文件内容如下,其中需要注意的有端口port,不同实例端口需要不同,例如下面我们创建第二个实...
2018-08-29 15:56:01
16219
原创 Python使用阿里云对象存储OSS--前端JS获取服务端签名后直传
1)背景使用OSS上传会有种场景,网页上传,其中包括一些APP里面的h5页面,对上传的需求很强烈,很多人采用的做法是用户在浏览器/APP上传到应用服务器,然后应用服务器再把文件上传到OSS,如下图:这种方法有三个缺点:第一:上传慢。先上传到应用服务器,再上传到OSS,网络传送多了一倍。如果数据直传到OSS,不走应用服务器,速度将大大提升,而且OSS是采用BGP带宽,能保证各地各运营商的速度。第二:...
2018-06-15 16:12:43
112
翻译 Celery4.1中文文档-用户指南(User Guide)
ApplicationCelery 库在使用之前必须初始化,一个celery实例被称为一个应用(或者缩写 app)。Celery 应用是线程安全的,所以多个不同配置、不同组件、不同任务的 应用可以在一个进程空间里共存。下面创建一个 celery 应用:>>> from celery import Celery>>> app = Celery()>>...
2018-05-25 16:07:40
14523
原创 windows10安装docker以及挂在在pycharm
最近一直在使用Docker,之前摸索的时候,网上教程都是零零散散的,索性自己总结一下,本部分是windows10安装docker以及配置,pycharm(IDE)挂载docker。1)安装1.1 windows10版本选择 docker在win10的新版本中已经不需要安装虚拟机了,直接可以运行在Windows的Hyper-V技术上,但是对win10的版本是有要求的,win10版本必须...
2018-05-11 18:32:27
8350
2
原创 time, loacltime, strftime, mktime
1)time.time()返回的是时间戳,# 时间戳:1459994552.512)time.localtime()# 本地时间time.struct_time(tm_year=2016, tm_mon=4, tm_mday=7, tm_hour=10, tm_min=3, tm_sec=27, tm_wday=3, tm_yday=98, tm_isdst=0)3)Pyth...
2018-03-30 13:16:43
674
原创 Django ORM 一对一,一对多,多对多关系
关联的对象¶当你在一个模型中定义一个关联关系时(例如,ForeignKey、 OneToOneField 或ManyToManyField),该模型的实例将带有一个方便的API 来访问关联的对象。利用本页顶部的模型,一个Entry 对象e 可以通过blog 属性e.blog 获取关联的Blog 对象。(在幕后,这个功能是通过Python 的描述器实现的。这应该不会对你有什么真正的影响,但是这里我们...
2018-03-13 14:12:58
3796
原创 Filter的Q对象,以及对应的SQL语句
使用Q 对象进行复杂的查询¶filter() 等方法中的关键字参数查询都是一起进行“AND” 的。 如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象。Q 对象 (django.db.models.Q) 对象用于封装一组关键字参数。这些关键字参数就是上文“字段查询” 中所提及的那些。例如,下面的Q 对象封装一个LIKE 查询:from django.db.models import ...
2018-03-13 11:43:53
1575
原创 django_filter的values / values_list
from django.db import modelsclass Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): # __unicode__ on Python 2 ...
2018-03-12 16:43:53
10318
原创 python sql cursor用法
python 操作数据库,可以使用pymysql包。操作步骤如下:1)首先导入pymysqlimport pymysql2)建立连接def connectDB(): conn = pymysql.connect(host='localhost', port=3306, user='root', ...
2018-01-11 17:42:29
38806
4
原创 Selenium+python-多窗口、句柄(handle)
前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了。获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了。一、认识多窗口1.打开赶集网:http://bj.ganji.com/,点击招聘求职按钮会发现右边多了一个窗口标签2.我们用代码去执行点击的时候,发现界面上出现两个窗口,
2017-12-14 14:12:57
17123
原创 Python3实现163邮箱SMTP发送邮件
SMTP协议首先了解SMTP(简单邮件传输协议),邮件传送代理程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送邮件,不能用来接收邮件,而大多数的邮件发送服务器都是使用SMTP协议。SMTP协议的默认TCP端口号是25。发送邮件之前的配置:上面说了是使用SMTP协议发送的邮件,所以需要先查看你的发件人邮箱是否有开启SMTP协议,如没有,则需要开启,我测
2017-12-02 10:49:13
36777
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人