自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python 提取域名、根域名

提取url链接根域名topRootDomain = ( '.com', '.la', '.cn', '.io', '.co', '.info', '.net', '.org', '.me', '.mobi', '.us', '.biz', '.xxx', '.ca', '.co.jp', '.com.cn', '.net.cn', '.org.cn', '.mx', '.tv', '.ws', '.ag', '.com.ag', '.net.ag', '.org.ag',

2021-07-09 13:56:47 1320

原创 python3 处理电话号,保留有前缀的电话号

业务场景:方法:def handle_same_phone(phone_list): if not phone_list: return [] phone_list = list(set(phone_list)) phone_list = sorted(phone_list, key=lambda x: len(x), reverse=True) _d = {} __p1 = [] __p2 = [] for i in phone

2021-07-05 11:25:48 299

原创 马甲包简介

了解马甲包1、什么是马甲包马甲包是利用App store 规则漏洞,通过技术手段,多次上架同一款产品的方法。马甲包和主产品包拥有同样的内容和功能,除了icon和应用名称不能完全一致,其他基本一致。2、为什么做马甲包,做马甲包有什么好处?抗风险正常情况下,任何一款产品都是要不断的更新功能的。如果我们直接在主包上更新,一旦新功能不被用户接受那就损失大了,我们前期大量投资带来的用户将会流失,这对很多产品开发者来说是不可承受之痛。如果使用马甲包,则可以随意测试新功能,好的功能就在主包上迭代,不好的也无

2021-07-01 14:31:28 634

原创 python处理html符号转义

Python处理HTML转义字符在抓网页数据经常遇到例如>或者 这种HTML转义符,抓到字符串里很是烦人。比方说一个从网页中抓到的字符串:p =’<abc>’用Python可以这样处理:import htmlp = '&lt;abc&gt;'txt= html.unescape(p)print (txt)#这样就得到了txt= '<abc>'如果还想转回去,可以这样:import cgiq = cgi.escape(html)

2021-06-10 10:09:11 1885 2

原创 git提交规范

git 提交规范说明<feat>(<>): <描述><body><footer># - type: feat(新特性), fix(修改问题), docs(文档修改), style(代码格式修改, 注意不是 css 修改), refactor(代码重构), test(测试), chore(其他修改, 比如构建流程, 依赖管理)# - scope: (可以为空) 影响的的范围

2021-06-10 10:06:21 296

原创 python 去除字符串中的特殊字符

去除字符串中的中英文特殊字符import stringfrom zhon.hanzi import punctuation as pun_zh # 导入zhon.hanzi 这个包(中文字符def replace_symbol(content): '''去除所有符号。''' pat_list = ["₰", "¥", "《", "¥", "€", "$", "₤", "₳", "¢", "¤", "฿", "฿", "₵", "₡", "₫","₲", "

2021-06-10 10:04:43 1722 2

原创 python时间处理相关方法汇总。

# encoding:utf-8import timeimport datetimeimport calendarfrom dateutil import parserfrom datetime import timedeltaclass TimeCore: @classmethod def local_format(self, fmt='%Y-%m-%d %H:%M:%S'): '''获取当前时间格式化 ''' return

2021-03-11 11:56:44 231 2

原创 面试:python面试中手写代码的环节

1.如何反向迭代一个序列#如果是一个list,最快的方法使用reversetempList = [1,2,3,4]tempList.reverse()for x in tempList: print x #如果不是list,需要手动重排templist = (1,2,3,4)for i in range(len(templist)-1,-1,-1): print templist[i]2.如何查询和替换一个文本中的字符串#最简单的方法使用replace()temps

2020-07-01 12:17:56 249

原创 面试:TCP/UDP如何解决丢包问题?

目录TCP传输协议中如何解决丢包问题首先TPC为什么会丢包?如何解决TCP丢包的问题UDP丢包的问题一、主要丢包原因解决UDP丢包的问题TCP传输协议中如何解决丢包问题首先TPC为什么会丢包?TCP是基于不可靠的网路实现可靠传输,肯定会存在丢包问题。如果在通信过程中,发现缺少数据或者丢包,那边么最大的可能性是程序发送过程或者接受过程中出现问题。如何解决TCP丢包的问题TCP协议丢包后,如何解决丢包的问题为了满足TCP协议不丢包。TCP协议有如下规定:数据分片:发送端对数据进

2020-07-01 10:33:55 9993

原创 面试:http请求从客户端到服务器整个链路的过程

浏览器会去请求DNS服务器,获得与域名相对应的IP(HTTP协议&DNS协议)(IP协议)三次握手,建立TCP连接,形成一个Session会话(TCP、UDP协议)浏览器发送request包,服务器接收后对其进行解析。如果请求资源包含动态语言的内容,服务器将会调用动态语言的解释引擎进行解释。请求被转发给一个预定义的Handler(处理器)。并可能从数据库里取出数据。处理器根据取出的数据对Template(模板)进行Rander(渲染)返回Response对象浏览器会渲染Response.

2020-07-01 10:12:15 1650

原创 同步、异步I/O的使用场景以及五种I/O模型

IO模式对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段:等待数据准备 (Waiting for the data to be ready)将数据从内核拷贝到进程中 (Copying the data from the kernel to the process)正式因为这两个阶段,linux系统产生了下面五种网络模式的方案。阻塞 I/O(blocking IO)

2020-06-29 17:25:23 1489 1

原创 Linux之四剑客:find、sed、grep、awk

目录find查找方式1、按名字查找2、按目录查找3、按权限查找4、按类型查找  (b/d/c/p/l/f )5、按属主及属组6、按时间查找7、按文件新旧8、按大小查找sed1.打印显示文本内容2.增加文件内容,向文件中添加或插入行grepfind大海捞针,主要是用于查找Linux 操作系统的某个文件、目录所在路径,查找出满足条件的文件或者目录的路径 【和locate命令很相似】格式:find path -option 【 -print 】 【 -exec -ok |xargs

2020-06-22 22:22:23 1612

原创 MySQL使用自增ID主键和UUID作为主键的优劣

目录一、准备表&数据二、500w级数据测试2.1 录入500W数据,自增ID节省一半磁盘空间2.2 单个数据走索引查询,自增id和uuid相差不大2.3 范围like查询,自增ID性能优于UUID2.4 写入测试,自增ID是UUID的4倍2.5、备份和恢复,自增ID性能优于UUID500W总结1000W总结自增ID主键+步长,适合中等规模的分布式场景UUID,适合小规模的分布式环境一、准备表&数据UC_USER,自增ID为主键,表结构类似如下:CREATE TABLE `UC_USER

2020-06-19 20:23:38 2810 1

原创 Redis的事务&乐观锁

目录Redis的事务操作命令错误处理机制reids的乐观锁机制Redis的事务操作Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务功能, 我们首先讨论使用 MULTI 、 DISCARD 和 EXEC 三个命令实现的一般事务, 然后再来讨论带有 WATCH 的事务的实现。一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。Redis的事务做的很简单,没有像关系型数据库那样把事务的隔离级别划分的那么细,Redis在事务没提

2020-06-17 20:02:32 309

原创 MySQL关于事务的那些事儿

目录什么是事务?关于事务的命令事务的四大特性事务的隔离级别1. Read uncommitted 读未提交2. Read committed 读提交3. Repeatable read 重复读4. Serializable 序列化一图流事务什么是事务?事务就是「一组原子性的SQL查询」,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,

2020-06-17 19:05:55 381

原创 使用redis解决单点登录问题

目录实现流程(穿插在登录流程中)在整理单点登录的实现方式的时候,当时只说了“使用redis作为缓存储存session信息”这样的方式来实现单点登录,今天我们来看看具体的实现流程吧!实现流程(穿插在登录流程中)1、登录页面提交用户名密码。2、登录成功后生成token。Token相当于原来的sessionid,字符串,可以使用uuid。3、把用户信息保存到redis。Key就是token,value就是User对象转换成json。4、使用String类型保存Session信息。可以使用“前缀:to

2020-06-15 20:05:49 1078 1

原创 MyISAM 和 InnoDB 的区别和优缺点

目录MyISAM 和 InnoDB 的区别和优缺点1.1 MyISAM和InnoDB简介1.2 MyISAM特点1.3 InnoDB特点1.4 MyISAM和InnoDB两者的应用场景:MyISAM 和 InnoDB 的区别和优缺点区别MyISAMInnoDB事务不支持支持存储结构每个MyISAM在磁盘上存储成三个文件所有的表都保存在同一个数据文件中存储空间可被压缩,存储空间较小会在主内存中建立其专用的缓冲池(需要更多内存和存储)可移植性跨平台的数据

2020-06-10 19:57:14 1838

原创 常见的几种搜索算法

目录广度优先搜索(BFS)深度优先搜索(DFS)爬山法(Hill Climbing)最佳优先算法(Best-first search strategy)回溯法 (Backtracking)分支限界算法(Branch-and-bound Search Algorithm)A*算法广度优先搜索(BFS)广度优先搜索算法(Breadth-First Search,BFS)是一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。

2020-06-10 17:54:13 8641

原创 Python 判断链表是否有环?

问题描述给定一个链表,如何判断该链表是否成环?解题思路首先,一听到这个问题,脑子一下子映出下面这幅链表成环的图:快慢指针为啥在有环的链表中为啥一定会相遇因为快慢指针的差距不管有多少 他们速度不同在环形结构上会逐渐缩小一步直到相遇代码实现class ListNode: def __init__(self, val): self.val = val self.next = None# 借助辅助空间# class Solution:#

2020-06-09 18:39:47 619

原创 redis五种数据结构的实现及使用场景

目录Redis对象底层数据结构字符串对象列表对象哈希对象集合对象有序集合对象Redis是一种key/value型数据库,其中,每个key和value都是使用对象表示的。类型对象名string字符串对象list列表对象hash哈希对象set集合对象zset有序集合对象但为了提高存储效率与程序执行效率,每种对象的底层数据结构实现都可能不止一种。encoding就表示了对象底层所使用的编码。下面先介绍每种底层数据结构的实现,再介绍每种对象类型都用了什

2020-06-09 18:13:38 722

原创 Python常见的数据类型的底层实现

目录一体式结构与分离式结构的区别:list的基本实现技术dict的实现技术常见的哈希碰撞解决方法Python数据类型之set数据类型决定数据在内存中所占用空间大小一体式结构与分离式结构的区别:如果增加元素超过了列表的最大存储量时,则需要新建一个数据区一体式结构若想更换数据区,则要整体更改分离式结构则只需要更改表信息区中的数据区链接地址即可,顺序表对象不变list的基本实现技术Python标准类型list就是一种元素个数可变的线性表,可以加入和删除元素,并在各种操作中维持已有元素的顺序(即保

2020-06-09 18:13:01 699

原创 django+rest_framework+jwt自带验证系统

目录django rest_frameworker jwtJWT 登录验证的扩充JWT 权限验证JWT权限扩充JWT修改密码:django rest_frameworker jwt首先需要声明,rest_frameworker jwt 是基于django自带的认证系统来实现的(也就是说我们的用户表(user)直接继承django自带的AbstractUser表,在此基础上添加字段)rest_frameworker jwt token的生成:from rest_framework_jwt.set

2020-06-03 08:31:55 482

原创 Django中websocket的实现

目录前言一、使用`dwebsocket`实现二、使用channels实现websocket前言最近在完成项目中需要用到实时技术,项目需求是将后端的一个文件内容实时读取然后发送到前端。这里主要涉及到两个技术:一个是后端如何实时读取一直在更新中的数据,另一点是如何保证web前后端的通讯,能将读取到的数据实时传送给前端。老版本是使用ajax轮询实现即时的,但是,有个很严重的问题就是前端一直在get请求,导致极大的占用带宽,占用服务器的处理资源。后来加入修改,将每次发送的请求间隔1s,发现仍然是十分浪费带宽

2020-06-02 17:59:47 947

原创 Django中,关于中间件的那些事儿

目录中间件(middleware)Django默认的中间件中间件中的方法process_requestprocess_viewprocess_template_responseprocess_exceptionprocess_response中间件(middleware)中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应可以通过中间件,也就是说中间件可以处理request和response。Django默认的

2020-06-02 17:44:14 317

原创 Vue实现父子组件传参

目录前言一、父传子二、子传父前言vue的父子组件传值方式:父传子、子传父引用官网的一句话:父子组件的关系可以总结为 prop 向下传递,事件向上传递父组件通过 prop 给子组件下发数据,子组件通过事件给父组件发送消息,如下图所示:一、父传子父组件:<template> <div id="container"> <input type="text" v-model="text" @change="dataChange">

2020-06-02 11:57:09 794

原创 Django-ORM之自关联表结构+处理平行数据

目录什么是自关联表结构在Django中创建自关联表(一对多)在Django中如何查询什么是自关联表结构表内自关联是指表内数据相关联的对象和表是相同字段,这样我们就直接用表内关联将外键关联设置成自身表的字段。同样表内关联也分一对多字段和多对多字段。例如:对于微博评论,每条评论都可能有子评论,但每条评的字段内容应该都是相同的,并且每条评论都只有一个父评论,这就满足了,一对多的情形。父评论为关联字段,可以对应多个子评论,这就是一对多的自关联。再比方说,我们国家的省市县信息的存储上面,就是一个很典型的自关

2020-06-02 11:23:08 546

原创 前端Vue上传图片到七牛云&后端Django上传图片到七牛云

目录前言上传方式Vue上传图片到七牛云Django上传图片到七牛云前言在开发项目的时候,经常会用到上传图片的功能,如果把图片全都存放在项目路径下,会导致项目越来越臃肿,因此可以考虑把图片上传交给第三方处理,此处采用七牛云进行图片存储。经过测试,通过七牛云获取图片确实比直接通过自己的服务器获取的速度要快得多,赶快去注册七牛云吧。上传方式上传图片的方式有两种:通过服务器:将文件传到服务端,由服务端上传到七牛云通过前端JS:将文件直接从JS上传到七牛云。两种方式都可以完成上传,但

2020-06-01 18:51:53 502

原创 可逆/不可逆加密&对称/非对称加密

目录1、加密种类:1.1、不可逆加密:【Hash加密算法/散列算法/摘要算法】1.2、可逆加密:可逆加密有对称加密和非对称加密。对称加密非对称加密2、一般保证数据传输的安全性措施:3、注意1、加密种类:1.1、不可逆加密:【Hash加密算法/散列算法/摘要算法】一旦加密就不能反向解密得到密码原文,一般用来加密用户密码,app的服务器端数据库里一般存储的也都是加密后的用户密码。在数据传输的过程中,首先把密码类数据经过MD5加密算法加密,然后再在外面使用可逆的加密方式加密一次,这样在数据传输的过程中,即

2020-06-01 18:40:01 2622 1

原创 使用rabbitmq和redis作为celery-broker的优劣势分别是什么?

使用rabbitmq和redis作为celery-broker的优劣势分别是什么?不多BB,先放结论:rabbitMQ:大而全,更安全,数据处理更快速。redis:使用更方便,开发更快速。具体使用rabbitmq还是redis还是要根据项目需求来进行判断:对于消耗资源这方面不是很介意的话,注重性能和体验,同时能够分出专员来维护rabbitmq服务器,那么rabbitmq还是强烈推荐的,毕竟rabbitmq能实现的实在是非常的全面而且效果也好。如果在项目中,只需要实现很简单的功能,同

2020-06-01 11:31:20 1492

原创 Python你必须要了解的一些点——正则表达式

正则1. 正则表达式基础1.1 简单介绍1.2. 数量词的贪婪模式与非贪婪模式1.3. 反斜杠的困扰1.4. 匹配模式2. re模块2.1. 开始使用re2.2. Match2.3. Pattern3. 正则匹配模式match对象方法详细用法1. 正则表达式基础1.1 简单介绍正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是

2020-05-31 17:31:50 367

原创 数据结构——二叉树的python实现

二叉树的python实现一、二叉树的定义与基本性质二叉树的实现&遍历二叉树的实现二叉树的遍历一、二叉树的定义与基本性质二叉树(Binary Tree)是一种特殊的树型结构,它的特点是每个结点至多有两棵子树(即二叉树中不存在度大于2的结点),且二叉树的子树有左右之分,其次序不能任意颠倒(有序树)。  根据二叉树的定义,其具有下列重要性质:在二叉树的第i层上至多有2^{i-1}个结点(i≥1)。深度为k的二叉树至多2^k-1有个结点(k≥1)。对任何一棵二叉树,如果其叶子节点数为n0,度为

2020-05-31 16:58:16 1711

原创 数据结构——栈&队列的python实现

栈&队列的python实现栈的python实现队列的python实现栈的python实现• 栈(也称下压栈,堆栈)是仅允许在表尾进行插入和删除操作的线性表。• 栈是一种后进先出的线性表class Stack(object): def __init__(self): self.stack=[] def tianjia(self,item): self.stack.append(item) def tanchu(self): ifself.stack==[]:

2020-05-31 16:38:30 255

原创 数据结构——链表&双链表的python实现

链表的python实现单链表的实现双链表的实现单链表的实现#定义单链表节点类class Node(object): def __init__(self,value=None,next=None): self.value = value self.next = next#单链表结构类class LinkedList(object): def __init__(self): #初始化链表的头节点以及链表的长度 self.head

2020-05-31 16:32:52 293

原创 Python你必须了解的一些点——深浅拷贝

浅拷贝:不管是多么复杂的数据结构,浅拷贝只会拷贝第一层.浅拷贝是对于一个对象的顶层拷贝通俗的理解是:拷贝了引用,并没有拷贝内容• 浅拷贝注意点: 首先先导入copy模块。import copy 浅拷贝对不可变类型和可变类型的copy不同 copy.copy对于可变类型,会进行浅拷贝 copy.copy对于不可变类型,不会拷贝,仅仅是指向深拷贝:会完全复制原变量的所有数据(递归性质的拷贝),在内存中生成一套完全一样的内容,我们对这两个变量中的一个进行任意修改都不会影响另一个变量。通

2020-05-31 14:40:27 254

原创 JWT完全攻略版

JWT完全攻略一句话介绍JWT!啥时候用JWT啊JWT的组成部分实际项目中的应用分析总结一下优点缺点想必大家对于JWT也是耳熟能详了,但是具体如何实现,就让我们一起来看一下吧。一句话介绍JWT!通俗来讲,JWT 是一个含签名并携带用户相关信息的加密串,页面请求校验登录接口时,请求头中携带 JWT 串到后端服务,后端通过签名加密串匹配校验,保证信息未被篡改。校验通过则认为是可靠的请求,将正常返回数据。啥时候用JWT啊授权!基本上遇到单点登录问题,JWT就完了!毕竟用起来轻便、开销小,而且服务端无

2020-05-31 14:30:17 522

原创 Python你必须了解的一些点——文件操作

文件操作一、文件打开模式二、文件打开方法三、文件读写定位操作一、文件打开模式打开方式指针位置r只读(默认 )指针在文件开头,文件不存在则报错rb二进制只读指针在文件开头,文件不存在则报错r+可读可写指针在文件开头,文件不存在则报错rb+二进制可读可写指针在文件开头,文件不存在则报错w只写文件存在,则覆盖;不存在,则创建wb二进制只写文件存在,则覆盖;不存在,则创建w+可读可写文件存在,则覆盖;不存在,则创建wb+

2020-05-31 14:21:57 238

原创 Python你必须了解的一些点——TCP&UDP区别简述

TCP&UDPTCPTCP 特点TCP 网络程序流程TCP 优缺点TCP 使用场景创建套接字UDPUDP网络程序流程创建套接字总结TCPTCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议.TCP通信需要经过建立连接(三次握手)、数据传送、终止连接(四次挥手)三个步骤。TCP 特点面向连接a. 通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接

2020-05-31 12:53:32 280

原创 Python你必须了解的一些点——垃圾回收机制

Python垃圾回收机制一、引用计数优点:缺点:二、 标记-清除QA: 为什么要搞这两个链表三、分代回收分代回收总结:这个问题也是目前面试中经常被问到的问题了,因此这里想要详细写一下记录一下。这次从以下三点:引用计数、标记-清除、分代回收来详细的介绍一下。一、引用计数引用计数是GC主要方法,意思就是一个对象在它刚被New出来的时候因为被New方法引用了所以他的引用计数就是1,如果它被引用(也就是在之前的基础上,例如:b=a,被丢入函数列表等等被引用就会在引用计数上加1),如果引用它的对象被删除的时候

2020-05-31 12:27:34 271

原创 Python你必须了解的一些点——高阶函数

Python的高阶函数一、map(function, iterable)二、reduce(function, iterable,[ initializer])三、filter(function, iterable)四、sorted(iterable, key=abs, reverse=False)一、map(function, iterable)python2中,返回一个列表python3中,返回一个迭代器用法功能:将第一个参数 function 依次作用在参数可迭代对象中的每一个元素上,返回

2020-05-31 12:24:54 347

原创 Python你必须了解的一些点——魔法方法

Python的魔法方法一、构造&初始化(new&init)二、属性访问(getattr、setattr、delattr)三、容器构造(list/dict/tuple/string)一、构造&初始化(new&init)__init__我们很熟悉了,它在对象初始化的时候调用,我们一般将它理解为"构造函数".实际上, 当我们调用x = SomeClass()的时候调用,__init__并不是第一个执行的, __new__才是。所以准确来说,是__new__和__init__共

2020-05-31 12:02:34 410

空空如也

空空如也

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

TA关注的人

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