自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 MySQL主从同步和读写分离实践

MySQL主从同步和读写分离实践1.主从同步机制在多台数据服务器中,分为主服务器和从服务器。一台主服务器对应多台从服务器主服务器只负责写入数据,从服务器只负责同步主服务器的数据,并让外部程序读取数据。主服务器写入数据后,即刻将写入数据的命令发送给从服务器,从而使得主从数据同步。应用程序可以随机读取某一台从服务器的数据,这样就可以分摊读取数据的压力。当从服务器不能工作时,整个系统将不受...

2020-05-06 21:06:28 179

原创 docker、flask、gunicorn、flask-script、nginx部署实践

docker和docker-compose部署flask(flask-script)、gunicorn实践记录这里不介绍docker和docker-compose的工作原理,只真实的记录本次实践。循序渐进的来,先用gunicorn启动,再用Dockerfile启动,最后尝试docker-compose编排1.准备项目目录和模拟代码,先本地用gunicorn启动~/flask-demo 目录,创建好虚拟环境,flask启动文件,我这里用了flask-script的方式# ~/flask-demo

2021-09-03 23:37:07 2155 1

原创 记录一次pipenv虚拟环境实践

没有介绍,直接上流程安装创建环境Profile文件Pipfile.lock安装pip3 install pipenv创建环境# 1. 创建demo目录mkdir flask-demo# 2. 使用当前系统的Python3创建虚拟环境pipenv --three# 3. 激活虚拟环境pipenv shell# 4. 显示环境目录pipenv --where# 5. 显示虚拟环境信息pipenv --venv# 6. 安装想要的包pipenv install flask

2021-08-23 23:11:12 1053

原创 python Namedtuple+pandas实现的数据分析工具

class AnalyticTool: """数据分析工具类 使用示例: aly = AnalyticTool( ("goods_id", "storage"), [ (1, 2), (2, 10), (2, 500) ] ) result = aly.filter("goo

2021-07-09 11:06:04 1158

原创 Sqlalchemy工具,打印原生sql语句

class QueryTools(): @staticmethod def get_page_sum(query_object, primary_key, page_size=20): """ 优化获取页面的查询方法 :param query_object:需要在limit之前的对象 :param primary_key: 用来计数的字段 :param page_size: 每页的数量 :retu

2021-07-09 10:17:19 898

原创 网络与安全基础知识

网络七层协议物理层OSI的物理层规范是有关传输介质的特性,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。数据链路层它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。网络层这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传

2020-09-26 11:22:00 645 1

原创 MySQL必须搞懂的索引

定义MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构索引类型从数据结构的角度B+Tree索引:主要的索引方式,后面详解,查询时间复杂度O(log(n))hash索引:检索效率非常高,仅能满足=,in这些方式查询,不能使用范围查询,只有Memory存储引擎显示支持hash索引FULLTEXT索引:myisam和innodb都支持R-tree索引:用于对GIS数据类型创建SPATIAL索引从物理存储角度索引是通过二叉树的数据结构来描述的,我们可

2020-08-23 20:44:11 128

原创 python中global和nonlocal的区别

global: 一般在函数或者类中使用,在任意位置都可以使用,被声明的变量会变成全局变量,在函数中修该此变量即修改了全局变量nonlocal: 只能在嵌套函数中使用,只在内层函数中使用,在外面使用会报错,被声明的变量即外层函数的变量,修改此变量即修改外层函数的变量...

2020-08-22 18:17:21 180

原创 python中set的去重原理

set的去重是通过两个函数__hash__和__eq__结合实现的。1、当两个变量的哈希值不相同时,就认为这两个变量是不同的2、当两个变量哈希值一样时,调用__eq__方法,当返回值为True时认为这两个变量是同一个,应该去除一个。返回FALSE时,不去重class A: def __hash__(self): print("调用hash_a") return hash(id(self)) def __eq__(self, other):

2020-08-22 15:49:31 656

原创 WSGI,uWSGI,uwsgi三个东西怎么区分

WSGIWeb Server Gateway Interface 由名字就可以看出,这是一种协议,服务器网关接口,一种规定,遵守WSGI协议能够让web服务器和框架之间解耦,可以混合搭配服务器和框架,互相兼容。是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。描述的是Web服务器如何与Web应用间进行通信,它不是服务器、python模块、框架、API或者任何软件,只是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Dja

2020-08-22 11:38:04 175

原创 Python常用的设计模式(代码实现)和应用场景

三种最基本的设计模式:创建模式,提供实例化的方法,为适合的状况提供相应的对象创建方法。结构化模式,通常用来处理实体之间的关系,使得这些实体能够更好地协同工作。行为模式,用于在不同的实体建进行通信,为实体之间的通信提供更容易,更灵活的通信方法。设计模式的六大原则开闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。里氏(Liskov)替换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。依赖倒置原则:高层模块不应该依

2020-08-09 21:05:10 1476

原创 Redis的一些总结(常用知识,应用场景)

基础常识NoSQL : not only sql 泛指非关系型数据库,存储数据都是KV形式内存型数据库,速度极快,性能极高,每秒大约100000次操作操作原子性,单线程,保证数据安全常用的数据类型:string list set zset hash伪事务:multi 开启事务 + 一串命令 + exec 执行事务,保证者一串命令的原子性,但是某条命令执行错误不会回滚;python客户端用pipeline模拟事务执行;Redis集群中不支持事务watch:监视某个key是否发生变化,

2020-08-05 23:19:04 133

原创 ElasticSearch查询实践(Python)

基本查询 (不安全 弃用)根据文档ID curl -X GET 127.0.0.1:9200/articles/article/1 curl -X GET 127.0.0.1:9200/articles/article/1?_source=title,user_id curl -X GET 127.0.0.1:9200/articles/article/1?_source=false查询所有curl -X GET 127.0.0.1:9200/articles/articl

2020-08-04 21:46:34 250

转载 Python 基于Redis实现分布式锁(转载)

分布式锁:setnx:如果key不存在,则设置成功,返回1;如果key存在,则不做操作,返回0expire: 设置key的过期时间,避免客户端挂机造成死锁设置key对应唯一 value 避免造成线程误删问题。直接上链接:https://blog.csdn.net/biheyu828/article/details/89005866...

2020-07-25 11:17:10 267

原创 秒杀系统设计思考

整体需要解决三个问题高性能高可用一致性高性能动静分离数据拆分动态数据和静态数据区分开来,比如:用户:身份信息,偏好推荐、广告、异步的方式加载。时间:秒杀时间由服务端统一管控,可以通过动态请求进行获取静态缓存url唯一化缓存方式的选择浏览器:第一选择,但是用户不主动刷新,无法实现消息实时推送,简单的业务可以选择此种方式CDN:失效问题和高命中率的问题,选择CDN节点、节点数量都会影响实际效果服务端:使用Redis做缓存,nginx服务小结: 数据量减少,减少没

2020-07-24 17:01:50 113

转载 归并排序(python)

原理归并排序在于把序列拆分再合并起来,使用分治法来实现,这就意味这要构造递归算法首先是一个例子原序先通过一半一半的拆分,然后:然后再一步一步的向上合并,在合并的过程中完成了排序完整代码def merge(s1, s2, s): """将两个列表是s1,s2按顺序融合为一个列表s,s为原列表""" # j和i就相当于两个指向的位置,i指s1,j指s2 i = j = 0 while i+j < len(s): # j==len(s2)时说明s2走完

2020-07-15 21:58:10 300

原创 面试算法题(python)

某公司内有 4 个项⽬目组,项⽬目组 A、B、C、D,项⽬目组A现有10⼈人,项⽬目组B现有7⼈人,项⽬目组C现 有5⼈人,项⽬目组D现有4⼈人。为了了实现跨项⽬目组协作,公司决定每⽉月从⼈人数最多的项⽬目组中抽调 3 ⼈人 出来,到其他剩下 3 组中,每组 1 ⼈人,这称之为⼀一次调整优化(亦即经过第⼀一次调整后,A组有7 ⼈人,B组有8⼈人,C组有6⼈人,D组有5⼈人)。 那么请问,经过⼗十年年的优化调整后,各项⽬目组各有⼏几⼈人? 编程求解该问题,并思考是否为最优解。# 假设list存放4个AB.

2020-07-14 22:10:39 2805 1

原创 SQL性能优化必备工具explain详解

是什么(查看执行计划)使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句,分析查询语句或者表结构的瓶颈。用法explain + SQL查询语句eg: explain select * from tb_1;可以实现的功能表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些所以被实际使用表之间的引用每张表有多少行被优化器查询执行计划包含的字段详解(重点)id: 表的执行顺序,id值越大,优先级越高,越先执行。id如果相同,可以认

2020-07-12 18:04:28 166

原创 MySQL面试题(python版本)

Python操作MySQL步骤importSQL的select语句完整的执行顺序MySQL数据库存储的原理事务的特性数据库的索引数据库怎么优化查询效率MySQL集群的优缺点MySQL各引擎之间的区别数据库的优化MySQL如何分区分表如何对查询命令进行优化SQL注入是如何产生的,如何预防NoSQL和关系数据库的区别MySQL如何实现分页SQL语句怎么看效率优化数据库,提高数据库的性能提取数据库中倒数10条数据数据库的负载均衡MySQL数据库的操作数据库的设计.

2020-07-09 23:31:37 615

原创 Python实现二叉树(遍历)

直接上代码class Node: """ 节点类 """ def __init__(self, value): self.value = value self.lchild = None self.rchild = Noneclass Tree: """ 二叉树类 """ def __init__(self): self.root = None def add(self, value): node = Node(value) if not self.roo

2020-07-08 23:03:48 135

原创 常用的分布式ID生成方案汇总

UUIDUUID是通用唯一识别码(Universally Unique Identifier)的缩写,开放软件基金会(OSF)规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素。利用这些元素来生成UUID。UUID是由128位二进制组成,一般转换成十六进制,然后用String表示。优点:通过本地生成,没有经过网络I/O,性能较快无序,无法预测他的生成顺序。(当然这个也是他的缺点之一)全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更等情况下,可.

2020-07-06 22:20:29 1081

原创 Python冒泡,快速,插入排序

冒泡def bubble_sort(d): for i in range(0, len(d)-1): flag = True for j in range(1, len(d)-i): if d[j] < d[j-1]: d[j-1], d[j] = d[j], d[j-1] flag = False if flag: return d return d快速def quick_sort(d, start, end): if start >= e

2020-07-06 21:36:34 59

原创 初探Elasticsearch(强大的开源搜索引擎)

简介与原理简介Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多用户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。所有其他语言可以使用 RESTful API 通过端口 9200 和 Elasticsearch 进行通信Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-En

2020-05-24 20:44:18 424

原创 Python利用Socket.IO实现消息实时推送

Python利用Socket.IO实现消息实时推送即时通讯简介即时通讯(Instant Messaging)是一种基于互联网的即时交流消息的业务类型:在线push:适用于web页面和app,自己构建的IM服务器(socket.io框架,大佬可以自己封装socket)离线push:适用于app,成本高,大厂可以自己用服务器做业务,小厂可以用第三方IM服务商:网易云信,融云,环信传统的推送实现轮询:客户端定时发出HTTP请求,查询服务器有没有新消息,效率低下,消耗资源Comet

2020-05-24 19:27:34 14551 5

原创 Java学习之路-(异常、多线程)

异常异常的处理/*throw: 作用:可以使用throws在指定的方法中抛出指定的异常 注意:必须写在方法内部,后面的new对象必须是Exception或者是子类对象 格式:throw new xxxException("异常产生的原因")*/public class DemoThrow{ pubulic static void main() { int[] arr = null; getElement(arr, 0); } public static int getEl

2020-05-17 21:53:20 93

原创 Java学习之路-(数组,集合)

数组数组就是存储数据且长度固定的容器,数据的数据类型要一致// 格式一:存储数据类型[] 数组名称 = new 存储数据类型[长度]int[] arr = new int[3];// 格式二:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};int[] arr = new int[]{1,2,3,4,5};// 格式三:最常用的int[] arr = {1,2,3,4,5};// 数组的遍历:我们通过索引来访问数组public static voi

2020-05-16 22:39:58 102

原创 Java学习之路-(流程控制语句)

流程控制语句if…else…// 常用的if...elsepublic static void main(String[] args){ // 判断给定的数据是奇数还是偶数 // 定义变量 int a = 1; if(a % 2 == 0) { System.out.println("a是偶数"); } else{ System.out.println("a是奇数"); }

2020-05-13 21:39:35 78

原创 Java学习之路-(数据类型、运算符、修饰符)

1.数据类型数据类型分类基本数据类型:整数、浮点数、字符、布尔引用数据类型:类、数组、接口基本数据类型数据类型关键字内存占用取值范围字节型byte1个字节-128~127短整型short2个字节-32768~32767整型int(默认)4个字节-2的31次方~2的31次方-1长整型long8个字节-2的63次方~2的63次方-1单精度浮点数float4个字节1.4013E-45~3.4028E+38双精度浮点数

2020-05-13 21:16:44 137

原创 使用Git的应知应会

简介Git 是目前世界上最先进的分布式版本控制系统(没有之一)作用:源代码管理 — 方便多人协同开发和版本控制简化工作图工作区暂存区和仓库区工作区对于添加、修改、删除文件的操作,都发生在工作区中暂存区暂存区指将工作区中的操作完成小阶段的存储,是版本库的一部分仓库区仓库区表示个人开发的一个小阶段的完成仓库区中记录的各版本是可以查看并回退的但是在暂存区的版本一旦提交就再也没有了Git单人本地仓库操作以Ubuntu为例安装gitsudo apt-get

2020-05-12 22:33:27 113

原创 Flask超强入门总结

Flask常用扩展包Flask-SQLalchemy:操作数据库;Flask-script:插入脚本;Flask-migrate:管理迁移数据库;Flask-Session:Session存储方式指定;Flask-WTF:表单;Flask-Mail:邮件;Flask-Bable:提供国际化和本地化支持,翻译;Flask-Login:认证用户状态;Flask-OpenID:认证;Flask-RESTful:开发REST API的工具;Flask-Bootstrap:集成前端Twitte

2020-05-11 23:08:14 552

原创 MySQL查询语句最强总结

1.基础查询where 条件查询select * from table_name where 条件;# 比较运算符查询等于: =大于: >大于等于: >=小于: <小于等于: <=不等于: != 或 <>select * from students where id > 3;select * from students where name != 'xx';select * from sutdents where gender = 0;

2020-05-10 20:40:50 133

原创 学好MySQL的常用知识总结

1.MySQL的数据类型和约束1.数据类型整数:int,bit小数:decimal字符串:varchar,char日期时间: date, time, datetime枚举类型(enum)数据类型说明decimal表示浮点数,如 decimal(5, 2) 表示共存5位数,小数占 2 位.char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ',...

2020-05-07 22:08:15 93

原创 关于Docker的知识

Docker基础知识1、docker是什么Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。 源代码托管在Github上,并遵从Apache2.0协议。Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。 简单来说:Docker就是一种快速解决生产问题的一种技术手段。优点:多: 适用场景多快: 环境部署快、更新快好: ...

2020-04-25 22:06:38 115

原创 Django最全最新的指导

Django就是这么容易1、开始一个django工程安装Django:pip install django创建django工程django-admin startproject django_demo 工程目录说明 1、settings.py --> 项目整体的配置文件 2、urls.py --> 项目的URL配置文件 3、wsgi.py --> 项...

2020-04-25 13:56:31 129

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除