基础排序算法总结(一)
摘要:首先当然是我们最简单的冒泡排序了 冒泡排序的原理很简单,就是逐步比较相邻两个元素的大小,最多比较N-1次就能够将序列排好序了 缺点也同样很明显,时间复杂度很高O(n^2),可以做出的优化方案就是,如果在一次冒泡的过程中没有发生值的比较,那么这个序列就已经是有序的了 文中图源于菜鸟教程 1 def m
阅读全文
透明代理、匿名代理、混淆代理、高匿代理
摘要:今天突然想去抓一波代理,结果看到代理分类的时候有点懵,时间有点久了都忘了这些分类有啥区别了,这篇就简单记录一下几种代理的区别。 文中关于几者区别来自这篇文章 文章作者巴拉巴拉说了一大堆,我觉得使用一个表格来说明问题回很直观: REMOTE_ADDR HTTP_VIA HTTP_X_FORWARDED
阅读全文
常见“加密”算法之 base64
摘要:严格意义上来说,base64并不是一种加密算法,不过在不少网站的参数加密中都会使用到atob/btoa,因此将其做一个简单的实现。 base64使用64个字符来对信息进行编码,64个字符依次是ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01
阅读全文
从今天开始看《Redis深度历险》-- SCAN
摘要:场景需求:需要在指定的库里找出符合特定模式的key 首先是keys这个指令,它后面接上一个正则pattern,就能够找出这个实例中所有符合这个pattern的key,但是这个指令有两个缺陷: 1.没有offset和limit参数,一次性返回所有满足条件的key,当符合条件的key很多的时候,想想就头
阅读全文
从今天开始看《Redis深度历险》-- 漏斗限流
摘要:上一篇中写了一个基于zset的简单限流策略,但是很明显的,它的缺陷很明显,因此本篇中将介绍一种更为常用的漏斗限流。 从命名可以看出来,该限流策略的原理就是一个漏斗一样,漏斗将会满足以下三个条件: 如果将漏斗口堵上,那么在里面灌满水之后就无法继续装进去。 将漏斗口放开,如果单位时间内灌进去的水少于流出
阅读全文
从今天开始看《Redis深度历险》 -- 简单限流
摘要:限流问题是分布式系统中无论如何都绕不开的一个话题,缓存穿透、缓存击穿、缓存雪崩这几个问题也是避不开的,这一篇就学习一下如何使用redis实现一个简单的限流。 限流不仅仅是控制流量,还有一点就是控制用户行为,一些很明显的非法请求(比如高并发的爬虫),就得制定相应的策略来处理。 限流的思路容易想到的一点
阅读全文
从今天开始看《Redis深度历险》 -- 布隆过滤器
摘要:应用场景:比如我们在某站看视频的时候,每次我们加载刷新之后看到的都是之前没看过的新闻,这个时候需要用什么结构来实现呢? 第一反应可以使用一个set,每次加载的时候就用exists判断一下,这种方式问题也是很明显的,在高并发量或者set很大的时候会严重拖垮数据库。作者还举例了使用缓存,但是缓存也同样面
阅读全文
一个简单的反反爬~
摘要:爬取的目标是博客园的某博主文章,起因很简单,我就想复制一下文章中的一部分段落,结果右键没反应???人突然就傻了,第一反应,这难不倒我,开发者工具!然后。。然后歇菜了,开发者工具也不好使,虽然简单试了一下Ctrl+U还是好使的,但是这样复制出来让我觉得不爽!研究了一会之后发现。。。果然是只防君子不防小
阅读全文
查缺补漏 -- python 之 and or的优先级
摘要:刚才看到一个很有意思的问题,就是关于and和or的优先级运算,因为平时我自己使用and和or的时候基本都是需要返回的布尔值,印象中需要返回其中一个值的时候基本上都是使用三元表达式,所以对and or的优先级比较就不太明了,最多也就知道短路。 在知乎上看到一个非常简洁明了直观的回答: 其一, 在不加括
阅读全文
从今天开始看《Redis深度历险》--HyperLogLog
摘要:问题背景:如果你负责开发维护一个大型网站,有一天老板找产品经理要网站每个网页每天的UV数据,然后让你来维护这个统计模块,你应该如何实现? 注明一下几个词的意思 UV(unique visitor):指通过互联网访问、浏览这个网页的自然人。访问您网站的一台电脑客户端为一个访客。一天内同一个访客的多次访
阅读全文
从今天开始看《Redis深度历险》--位图
摘要:网页版redis并不支持bitfield这个指令 位图这一概念让我想起来一个算法问题,在N亿个数字中判断某个数是否存在,感兴趣的可以去看一下。 看过上面的问题之后我相信对书中的零存整取、整存零取概念就会理解了,书中的例子是将hello字符串转换为ASCII码进行零存整取、整存零取。 相关指令 set
阅读全文