- 博客(96)
- 资源 (2)
- 收藏
- 关注
原创 LeetCode第156场周赛--5206. 删除字符串中的所有相邻重复项 II
给你一个字符串s,「k倍重复项删除操作」将会从s中选择k个相邻且相等的字母,并删除它们,使被删去的字符串的左侧和右侧连在一起。你需要对s重复进行无限次这样的删除操作,直到...
2019-09-29 22:53:25
187
原创 教你用python高效刷leetcode
由于Python语法的简洁性,用python来刷leetcode往往能用比别的语言更少的代码量AC。但是如果不是对python很熟悉就会比较尴尬了,如果有些功能明明有高效的内置方法因为不知道要自己实现、或者不了解其复杂度提交时出现超时。我总结了一下自己在刷leetcode时关于python这个语言的经常被使用的数据结构和内置方法。基础离开数据结构,算法就是空中楼阁,所以了解pyth...
2019-08-24 17:07:37
9187
1
原创 redis-py连接池的实现
说起连接池,可能很多人直接望而却步,觉得好复杂,还是直接调用别人现成的好了,其实都是连接池也是扮猪吃老虎。但是之前看redis-py连接池的实现,觉得好简单,但是却又很巧妙,正好最近又在研究redis-py的连接池,将连接池相关的实现抽象出来,接单说明一下。class Connection: def __init(self, **db_info): """初始化需...
2019-07-16 22:14:55
640
翻译 git --help(中文翻译)
翻译一下git的帮助文档,帮助记忆首先在命令行输入git --help会得到下面的帮助信息下面是逐行翻译These are common Git commands used in various situations:下面是各种情况下比较常见的git命令start a working area (see also: git help tutorial)开...
2019-06-24 20:36:58
2148
原创 XSS与CSRF
XSS和CSRF是黑客进行Web攻击的两个常用手段,主要目的是绕过浏览器同源策略,非法获取信息资源XSS(Cross Site Scripting):跨站脚本虽然名字里带“跨站”,但是可以略过,直接看“脚本”。XSS时发生在浏览器渲染HTML时执行了不被预期的脚本指令的一种安全漏洞。XSS的主要类型:反射型XSS:利用动态网页特性,将恶意代码的数据提交到服务器,服务器又返回到...
2019-06-10 12:09:08
1225
原创 浏览器同源策略
定义不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源关键词解读不同域:同域要求两个站点同协议、同域名、同端口客户端脚本:目前主要指JavaScript授权:目前浏览器支持CORS来实现跨域授权,需要目标网站是否同意授权的响应头为Access-Control-Allow-Origin读写:读写权限资源:HTTP消息头、DOM树、C...
2019-06-09 18:26:29
232
原创 设计模式——命令模式
意图:将一个请求封装为一个对象,从而可以使用不同的请求对客户进行参数化;支持请求排队、记录请求日志,以及撤销操作场景:调用者不需要知道响应者具体做了什么,而只需要一个统一的接口时 需要用到队列执行、取消操作、日志恢复的时候类图:图片来自《设计模式之禅》优点:Command易于通过继承拓展新功能,并且可以在单个子类中实现复合功能缺点:容易产生子类爆炸...
2019-05-19 18:35:26
133
原创 设计模式——单例模式
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点场景:当一个类只能有一个实例,并且客户可以从一个众所周知的访问点访问它时类图:图片来自《设计模式之禅》优点:全局变量虽然能够提供全局化的实例访问,但是需要在初始化时就实例化,并且并不能控制实例化新的实例,而单例模式解决了这一问题 单例模式并非严格限制只能有一个实例,可以根据需要方便的控制实例数量缺点:由于某些语言...
2019-05-19 18:13:19
129
原创 设计模式——抽象工厂模式
意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类场景:一个系统要独立于它的产品的创建、组合和表示时 一个系统要有多个产品系列中的一个来配置时 当你要强调一系列祥光的产品对象的设计以便进行联合使用时 当你提供一个产品类库,而只想显示他们的接口而不是实现时类图:图片来自《设计模式之禅》优点:对抽象依赖而不是实现依赖,维护代码一致性,使得代码便于相互替换...
2019-05-09 21:20:56
177
原创 设计模式——工厂方法模式
意图:定义一个用于创建对象的接口,使一个类的实例化延迟到子类场景:当一个类不知道他所必须创建的对象的类的时候 当一个类希望有它的子类来指定它所创建的对象的时候 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望根据不同的需求确定不同的子类的时候类图:图片来自《设计模式之禅》优点:将抽象与实现隔离,有利于代码解耦,易于拓展缺点:稍不留神就会产生大量的子类...
2019-05-09 20:44:24
128
原创 设计模式——装饰者模式
意图:动态的给一个对象添加额外的职责。场景:不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责 处理那些可以撤销的职责 当不能采用子类继承的方法扩展时类图:图片来自《设计模式之禅》优点:相比编译时的继承,运行时的装饰者更加灵活 避免在层次高层的类有太多的特征缺点:装饰器会改变原有对象类型,可能出现类型错误 会产生大量的对象,导致理解困难 装饰链条可能会...
2019-05-07 22:45:41
138
原创 设计模式——观察者模式
定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变是,所有依赖于它的对象都能得到通知并被自动更新场景:当一个抽象模型有两个方面,其中一个方面依赖于另一个方面 当对一个对象的改变需要同时桶盖其他对象,而不知道具体有多少个待改变对象 当一个对象必须通知其他对象,而它又不能假设其他对象是谁类图:图片来自《设计模式之禅》优点:降低主题和观察者之间的耦合 支持...
2019-05-04 17:36:35
130
原创 设计模式大纲
设计原则: 《设计模式六大原则关系图》 设计模式: 《策略模式》 《观察者模式》 《装饰者模式》 《工厂方法模式》 《抽象工厂模式》 《单例模式》 《命令模式》 ...
2019-05-04 17:08:30
100
原创 设计模式——策略模式
定义:定义一系列算法,将他们封装起来,并使他们可以相互替换。场景:许多相关的类仅仅是行为有异 需要使用同一个算法的不同变体 算法使用主体不应该知道的数据 一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现类图: 优点:使得算法可重用 使用组合代替继承,易于拓展 消除了大量的条件语句 同一个算法可以有不同的实现缺点:主体必须了解不...
2019-05-04 17:03:54
113
原创 WEB服务优化
〇、简单完整的web服务模型上图是一个简单完整的web服务模型,看似简单,但是包含大量的知识点,其拓展优化也需要很多技巧。一、DNS层面的优化增加DNS轮询,一个域名对应多个服务器ip...
2019-02-23 12:32:34
182
原创 WEB优化技巧
〇、简单完整的web服务模型上图是一个简单完整的web服务模型,看似简单,但是包含大量的知识点,其拓展优化也需要很多技巧。 一、DNS层面的优化增加DNS轮询,一个域名对应多个服务器ip,多个服务器均衡的响应client的请求二、反向代理层的优化所有请求到达一个反向代理,由反向代理来分发请求。同DNS轮询类似,各有优缺点三、服务层的缓存优化增加cac...
2019-02-23 12:01:24
297
原创 Django模型层文档笔记——Meta
abstract——为True时,该模型类为基类,不生成数据表,可被继承app_label——如果模型类定义在INSTALLED_APPS的外面,则需要显式指定app名base_manager_name——db_table——显式指定数据表的名,缺省值为app_label+“_“+类名db_tablespace——default_manager_name——default_...
2019-02-13 22:20:55
174
原创 Django模型层文档笔记——字段选项
通用型字段选项 primary_key 是否设置为主键 db_column 显式设置字段名 null 在数据库层面能否为空 blank 在前端层面能否为空 choices 可选范围,e.g. [(A, B), (A, B) ...] default 设置缺省值 help_te...
2019-02-12 22:17:22
234
原创 Django模型层文档笔记——字段类型
字段类型整数类型 BigIntegerField (Django支持的取值范围:-2××63~2××63-1) PositiveIntegerField(Django支持的取值范围:0~2××31-1) IntegerField(Django支持的取值范围:-2××31~2××31-1) SmallIntegerField...
2019-02-12 21:45:02
412
原创 Django中的QueryDict元素为数组的坑
一般在Django的视图函数中使用request.POST来获取请求体,request.POST是QueryDict类,通常作为dict来使用。正常如下图但是昨天在使用的时候遇到一个错误,提示从QueryDict里面pop出来的值类型为list。一脸懵逼 在命令行敲代码,发现了这个坑, 如下图可以看到,pop出来的值被放在的一个list里面。关键这个不同版本之间,行...
2018-11-10 17:19:59
1933
原创 python爬虫知识梳理——requests库的使用
requests库是如此的简洁好用,以至于爬虫神器。我也用过urllib2,保持了python的文件操作的接口,使用操作过文件、数据库之类的,使用urllib2会感到很熟悉,但是不可否就是繁琐。我也用过scrapy,高度抽象了爬虫的编写流程,以框架的形式提供,讲道理,在我用习惯了requests之后,每次想要尝试scrapy都半途而废。 requests的使用手册有官方文档,支持中...
2018-07-10 18:40:15
345
原创 python爬虫知识梳理——HTTP协议(响应)
三、HTTP响应1、一个完整的请求可以分为响应行、响应头 、响应数据 1.1 响应行 响应行又可以分为协议版本、状态码、状态描述。 协议版本并非一定会对应请求的版本。 状态描述简短的描述了状态码,其中常用的状态码有200(响应正常)、404(页面找不到)、502(服务器内部错误)。开发爬虫的过程中经常还会见到302(重定向)、40...
2018-05-21 20:25:59
805
原创 python爬虫知识梳理——HTTP协议(请求)
二、HTTP请求 1、一个完整的请求可以分为请求行、请求头 、请求数据(非必要) 1.1、请求行 请求行位于整个请求的开头,请求行自身又可以分为请求方式、请求的URI、请求采用的HTTP协议版本号, 相互之间以空格划分。 目前HTTP协议版本为HTTP1.1、HTTP1.0、HTTP0.9,主流版本为1.1 。 HTTP1.1版本中支...
2018-05-21 19:49:54
338
原创 python爬虫知识梳理——HTTP协议(概述)
我们写爬虫是为了爬取网站数据,而网站的数据传输都是基于HTTP的。HTTP协议不同于我们平常所见HTML页面,HTML页面只是HTTP协议里面一个可视化的子集。HTTP(HyperText Transfer Protocol,超文本传输协议)是基于TCP的C/S架构的一种用于传输超文本的网络协议。掌握了HTTP协议,后面爬虫遇到的很多问题都可以迎刃而解了。 一、HTTP之...
2018-05-21 19:44:53
410
原创 python爬虫知识梳理——大纲
做了一些爬虫项目,想通过博客来梳理一下爬虫思路,总结一下经验,计划用一个系列若干博文来完成计划从 一、http协议 1、python爬虫知识梳理——HTTP协议(概述) 2、python爬虫知识梳理——HTTP协议(请求) 3、python爬虫知识梳理——HTTP协议(响应) 二、request...
2018-05-06 22:16:22
1083
原创 关于sqlalchemy中键值以双下划线开头导致Unknown column错误的问题
在开发中遇到了一个奇葩的问题,设计的数据库其中有Column以双下划线开头,导致在运行中出现错误。现在以例子来复现并解决错误。 首先创建数据表CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, __name VARCHAR(16), age INT);该表为包含主键id,和另外两个col...
2018-04-15 00:04:57
1586
转载 ios10越狱后无法通过ssh连接的问题
以下内容转载自Bingo's Blog———————————————————————————————————————————————yalu2 beta 8 此次越狱工具默认安装了 SSH,所以越狱后就要去更改 root 密码,更改方法打开 Cydia 首页就有,切记不需要再安装 openssh 插件了。越狱开发者作者为了增强越狱后的 ssh 安全防护性,采用了 Dropbear
2017-09-27 15:45:50
2635
原创 茶馆人物表(按字母顺序)
B报童--男。十六岁。 C崔久峰--男。四十多岁。作过国会议员,后来修道,住在裕泰附设的公寓里。 C常四爷--男。三十来岁。松二爷的好友,都是裕泰的主顾。正直,体格好。 C春梅--女。十九岁。庞四奶奶的丫环。 C茶房一两个,都是男的。 C车当当--男。三十岁左右。买卖现洋为生。 D丁宝--女。十七岁。女招待。有胆有识。 D大兵三
2017-09-26 15:21:36
5813
原创 解析IOS二进制格式的bplist
关于二进制格式的plist,搜到一篇博客《详解Binary Plist格式》,介绍的很详细,但是结合github上关于一份解析bplist的代码通过结果实际来看,博客中解析对象表的说明出现了问题,同原文不同处贴在下面 类型 HEX 说明 单字节 0X X=0:空值 X=8:布尔假 X=9:布尔真 整数 1X 后面跟的2^X个字节就是这个数字...
2017-07-18 14:13:40
7026
1
原创 cmd下文件md5查看插件
文件md5可以帮助我们检测文件是否被篡改或者比较两个文件是否含有完全相同的内容,在linux及mac系统之中,都可以在终端窗口使用md5命令查看指定文件的md5值,然而在微软window系统的cmd下却没有简单的命令帮助我们查看文件md5值。本程序利用python实现输出指定文件的md5值,在添加环境变量之后可以方便的在cmd下使用,用例如下:附录
2017-05-03 18:28:41
3619
原创 越狱iOS访问限制忘记密码
iOS》》设置 》》 访问限制的密码独立于锁屏密码,在忘记密码多次输入错误之后会强制一小时尝试一次以越狱iOS9为例,解决在忘记密码后如何重置密码通过iFunbox或者其他工具连接越狱设备之后,进入文件管理选项找到./private/var/mobile/Library/Preferences/com.apple.restrictionspassword.plist
2017-04-01 14:11:23
1563
原创 文本长度与字符长度不一致的问题
做练习的时候发现用python读取文件,同一个文件读取相同长度在文本模式和字符模式下输出不一致,很奇怪。测试文件如下:通过python的open函数,指定不同的读模式:文本模式下输出长度为11,字节模式下输出长度为12可以看出来区别就在于换行符,用notepad++的二进制模式查看一下文件不同的操作系统有着不同的换行符,也是源远流长了,有些坑要亲自趟过了才能记得牢...
2017-01-01 14:55:10
3185
原创 c语言的函数参数传递机制
看《深入理解计算机系统》觉得深入理解了函数之间的参数传递,但是今天一写代码就出错了。函数对接收进来的参数都会在自己的运行时间和空间内(栈段和寄存器)有一个拷贝,所有都是,指针也是,只不过指针指向地址还是那个。代码一,参数为普通变量 void foo(int a){ a= 1;}int main(){ int x = 6; ...
2016-12-16 23:57:01
1312
原创 elf文件格式解析
《深入理解计算机系统》看到第七章链接那一块用linux的可执行格式elf为例讲解,因为没有看过elf的文件格式所以一开始看的很迷茫,啥~啥~这是啥~找了一些elf的讲解看了一下,觉得需要自己分析一个简单的elf才能加深理解。首先ELF的整个结构如下图:本文以一个带有static 变量的hello.c为例 nt main(){ static int a =...
2016-12-14 23:05:57
2036
原创 python字典的hashtable实现
python字典的key-value原理属于hashtable的范畴。关于hashtable的一篇博客关于python字典实现原理的一篇博客需要注意的是python字典解决hash冲突的方法为开放地址法,但是采用伪删除的方式避免元素删除后对可能存在的冲突元素造成不可寻址的影响。...
2016-12-09 16:13:48
5325
原创 《汇编语言》学习笔记
《汇编语言第三版》豆瓣链接根据目前读的情况来看,这本书设计的还是面向初学的,又没有翻译书的那些语句毛病,循序渐进,图文并茂,好书!!! 第一章:基础知识计算机的核心是cpu,cpu通过总线(地址总线、数据总线、控制总线)与各内存设备(RAM、ROM)连接。cpu只能识别二进制,通过总线将数据或者指令在内存中的读写,再由各内存将指令映射(output/input)到各种设备。cpu...
2016-11-04 17:13:55
497
原创 f(n){return n==5||n&&f(n/10);}
在知乎上看到一个回答里的代码当时就惊呆了,写一下我对这一行代码的理解过程。(原地址)问题描述:编出一个程序能够找出1~n之间含有5这个数字的数?Milo Yip 的回答:f(n){return n%10==5||n&&f(n/10);}一开始我理解不了这段代码, 然后我尝试按照我自己的方式去解决这个问题思路就是写一个函数判断一个数n是...
2016-10-29 12:09:39
739
转载 LC_CODE_SIGNATURE格式分析
通常.LC_CODE_SIGNATURE为最后一个seg在macho中.LC_CODE_SIGNATURE开头4字节为特点的数字关于签名标示的数字定义在codesign.h中.(CSMAGIC开头)程序的嵌入式签名标示通常为为0xfade0cc0然后接着后面的顺序为:1.全部Blob的总大小.2.Blob的数量3.第一个Blob的type(定义在codesign.h中,CS
2016-10-25 17:44:46
2150
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅