- 博客(33)
- 收藏
- 关注
原创 【大厂必备】系列之Redis过期策略、内存淘汰策略及LRU
上期文章我们聊了聊【大厂必备】系列之Redis布隆过滤器的相关知识点,相信大家一定收获满满,布隆过滤器是极为优秀的算法,在一些特定场景有奇效,如果没看的记得获取瞧瞧,顺便点个赞哈!回首掏截止目前有关Redis的一些重要知识点我们已经聊了不少,如果没看的小伙伴记得回去看看【大厂必备】系列之聊聊Redis基础【大厂必备】系列之Redis之主从复制、持久化、哨兵【大厂必备】系列之Redis雪崩、击穿、穿透【大厂必备】系列之Redis分布式锁【大厂必备】系列之Redis布隆过滤器正文我们知道,Re
2021-08-12 10:26:57
363
原创 【大厂必备】系列之Redis布隆过滤器
上期文章我们聊了聊Redis分布式锁的相关知识点,相信大家一定收获满满,分布式锁是极其重要的知识,大家一定要掌握啊,要不然可连大厂的门都进不去的,哈哈哈……之前在介绍Redis基本数据结构的那篇文章中,我提到过布隆过滤器,在大数据面前,布隆过滤器有着很棒的性能,也有着很广泛的应用场景,比如垃圾邮件的过滤加粗样式,缓存雪崩、击穿、拦截器等。什么是布隆过滤器布隆过滤器(Boolm Filter)是1970年由布隆提出的一种算法。实际上是一个很长的二进制向量和一系列随机映射函数。其实就是一种数据结构,.
2021-08-04 22:10:43
404
原创 【大厂必备】系列之Redis分布式锁
上期文章我们聊了一下**【大厂必备】系列之Redis雪崩、击穿、穿透**,相信大家一定收获满满,这些可是进入大厂的必备板砖啊,这期我们接着放大招,来聊聊让人胆颤心惊的Redis分布式锁,哈哈哈……生活中,锁一般是被用于隔离两个空间或物体,比如,你用一把锁把你的心爱的宝贝锁起来,以防别人窃走。而在计算机世界里,因为资源往往是有限的,多个用户或请求同时请求某一资源,就会出现资源竞争问题,所以,锁主要是用来解决资源共享的问题。分布式锁就是专门用来解决分布式应用之间共享资源的高并发问题。目前业界主流的实现方式
2021-08-01 16:05:40
319
原创 【大厂必备】系列之Redis雪崩、击穿、穿透
上期文章我们聊了一下Redis的主从复制、持久化以及哨兵机制,相信大家一定收获满满,这些可是进入大厂的必备板砖啊,这期我们接着放大招,来聊聊Redis的雪崩、击穿和穿透,哈哈哈……作为合格的搬砖人员,我们知道一般都会把热点数据,尤其像某宝某东什么什么啦等首页数据,提前缓存下来,这样用户打开首页时加载的速度就会快很多,体验会好一点,而且对系统存储层的MySQL也是安全的。然后用定时任务去定时刷新数据。只有当缓存系统失效获取不到数据时,才会降级直接到MySQL请求数据。像我之前做过的一个产品的首页推荐数
2021-08-01 15:44:01
198
原创 【大厂必备】系列之Redis雪崩、击穿、穿透
上期文章我们聊了一下Redis的主从复制、持久化以及哨兵机制,相信大家一定收获满满,这些可是进入大厂的必备板砖啊,这期我们接着放大招,来聊聊雪崩、击穿和穿透,哈哈哈……作为合格的搬砖人员,我们知道一般都会把热点数据,尤其像某宝某东什么什么啦等首页数据,会提前缓存下来,这样用户打开首页时加载的速度就会快很多,体验会好一点,而且对系统存储层的MySQL也是安全的。然后用定时任务去定时刷新数据。只有当缓存系统失效获取不到数据时,才会降级直接到MySQL请求数据。像我之前做过的一个
2021-07-27 09:41:09
151
原创 【大厂必备】Redis之主从、持久化、哨兵
上篇文章写了Redis的基础,算是开胃小菜,后面我就要开始放大招了,是真正的大招啊!哈哈哈……想想这些干货,本来你要花点银子别人才会告诉你的,但是在我这里完全可以白嫖,是真正白嫖的那种哈!唉,谁叫大叔如此爱你呐,咳咳我们知道Redis是基于内存的单进程单线程模型的工作模式,单机可以轻松达到10w+QPS,因为是基于内存操作的,所以极快,标准的秒男,哈哈哈……主从复制但是光快也不行啊,因为随着业务的发展,一个机器是完全不足以支持业务发展的,毕竟,没有老
2021-07-25 09:24:14
196
2
原创 基于索引搜索的动态分区分配算法
由于当一个系统很大时,系统内的内存分区可能会很多,相应的空闲分区链就可能很长,这时采用顺序搜索分区的方法可能会很慢。为了提高搜索空间的分区的速度,在中大型系统中往往会采用基于索引搜索的动态分区分配算法,比如我们所熟知的哈希算法、快速适应算法以及伙伴系统。1)哈希算法由于分类搜索算法和伙伴系统算法中,都是将空闲分区根据分区大小进行分类,对于每一类具有相同大小的空闲分区,单独设立一个空闲分区链...
2018-09-11 09:35:50
8274
原创 Matplotlib库扩展之Seaborn实现柱状图和热力图
第一步:导入所需库import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom pandas import Series, DataFrame%matplotlib inlineimport seaborn as sns第二步:生成数据s1 = Series(np.random.randn...
2018-08-21 12:33:04
1680
原创 python数据科学之阿里巴巴股票数据分析
第一步:先导入所需要的库 import numpy as npimport pandas as pdfrom pandas import Series, DataFrameimport pandas_datareader as pdrimport matplotlib as pltimport seaborn as sns%matplotlib inlinefrom datet...
2018-08-21 12:25:16
1134
原创 Python编程之理解对象
1、python中的函数和类均是对象,体现在以下几方面:1)都可以赋值给一个变量2)可以添加到集合对象中3)可以作为参数传递给函数4)可以当作函数的返回值如果一个函数没有return语句,则默认返回None2、type,class,object之间的关系我们在python中定义的所有class(类)均继承至Object,及Object是python中所有类继承的基类...
2018-08-15 17:36:28
249
原创 Python编程之Django2.0+xadmin填坑过程
1)问题如图解决方法:将django.core.urlresolvers 改为django.urls即可2)问题如下图 解决方法:点击进入languagr.py文件中,将MIDDLEWARE_CLASSES改为MIDDLEWARE即可3)问题如下图 解决办法:此问题出现在Django2.1以上版本,暂无法解决,目前的方法是将Django版本下降为2.0后然后将改为下...
2018-08-09 18:58:09
728
原创 机器学习之支持向量机(SVM)
支持向量机可用于分类、回归和异常检测,比如垃圾邮件检测等应用。SVM的优势:1)在高维空间中非常有效 2)在数据维度比样本数量大的情况下仍然有效 3)高效利用内存 4)通用性:不同的核函数与特定的决策函数一一对应SVM的缺点:1)在特征数量远大于样...
2018-08-07 15:55:42
260
原创 Python学习之pandas库
# 导入相关库import numpy as npimport pandas as pd# 生成10行3列的0到60的数据矩阵df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc')) 查看生成的矩阵: 获取数据方式1:如果知道矩阵的列名和下标则使用.loc库。基本使用如下:获取数据方式...
2018-08-07 11:25:17
240
原创 PHP复习之数组和字符串函数(一)
一、常用数组函数1、array_change_key_case(array, CASE_UPPER|CASE_LOWER) 将array数组中的所有键名改为大写或者小写2、array_chunk(array, size, bool) 将array数组分割成多个数组,分割后的数组元素个数由size规定,bool设为 TRUE,可以使 PHP 保留输入数组中原来的键名。如果你指定了 FAL...
2018-08-04 22:24:35
203
原创 机器学习之线性模型
一、基本形式线性模型形式简单、易于建模,但它却蕴含着机器学习中一些重要的基本思想,许多功能强大的非线性模型可能就是在线性模型的基础上通过引入层级结构或高维映射而得,此外,由于w直观表达了各属性在预测中的重要性,因此线性模型有很好的可解释性。定义:给定由d个属性描述的示例x=(x1; x2;……;xd)。其中xi是x在第i个属性上的取值,线性模型试图学得一个通过属性的线性组合来进行预测的函数...
2018-08-04 19:27:42
583
原创 Python Socket编程之文件上传
socekt_file_upload.pyimport socket# 文件上传类# 实例化sk = socket.socket()# 定义连接的ip和端口ip_port = ("127.0.0.1", 8888)# 连接服务器sk.connect(ip_port)# 打开文件with open('socket_server.py', 'rb') as f: for ...
2018-08-03 19:18:56
459
原创 Python Socket编程之UDP服务
socket_server_udp.pyimport socket# 创建UDP实例sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 定义绑定的ip和端口ip_port = ("127.0.0.1", 8888)# 绑定监听sk.bind(ip_port)# 不断循环接受数据while True: # 接收数据...
2018-08-03 19:17:29
186
原创 Python Socket编程之TCP服务
socket_server_tcp.py import socketimport random#创建实例sk = socket.socket()#定义IP和端口ip_port = ("127.0.0.1", 8888)#绑定监听sk.bind(ip_port)# 设置最大链接数sk.listen(5)# 轮询,不断的接收数据while True: # 提示信息 ...
2018-08-03 19:15:58
599
1
原创 对技术的一点思考
剑的三重境界:第一重是手中有剑,心中无剑,第二重是手中无剑,心中有剑,最高层是手中无剑,心中亦无剑。个人觉得无论什么技术,都只是一种生产工具,就像斧子、铲子一样,而所有的开发语言、框架属于技术范畴,努力学习大都是可以掌握的。而思想或者称之为思维才是我们应该重视的东西,它来自于长年累月的技术积累和理解,合理的设计、编码、架构经验都来自于不断的技术实践和总结。当我们的技术经验和思想积累的达...
2018-08-03 16:58:23
276
原创 千万级弹幕系统架构
一、技术难点1)内核瓶颈推送量大:加入100万用户在线,1s推送10条信息,相当于1000万条每秒的推送量而Linux内核推送TCP的极限包频约为100万条每秒2)锁瓶颈加入需要维护100万在线用户的集合,一般使用字典结构进行存储推送消息既遍历整个集合,顺序发送消息,耗时极长而且要求推送期间客户端正常上下线,所以集合需要上锁3)CPU瓶颈因为浏览器与服务端通常采...
2018-08-03 16:42:57
3889
原创 秒杀系统之缓存、队列、锁
一、秒杀系统为什么难?1)短时间内的高流量和高并发状态对数据库产生的巨大压力2)短时间内的高流量和高并发状态下如何精确处理库存量二、解决办法1)使用缓存处理秒杀数据,避免直接操作数据库,常用缓存有Redis、MemCache等三、常见架构浏览器——>站点——>服务器——>数据1)浏览器:最上层,js加载数据2)站点层:访问后台数据,拼接html页面...
2018-08-02 17:14:41
1355
翻译 PHP框架之Laravel5——安装Whoops错误处理
第一步:首先安装whoops:composer require filp/whoops:~1.0.第二步:打开 app/Exceptions/Handler.php, 在render()方法中添加一个Whoops样式的处理情况,像下面这样/** * Render an exception into an HTTP response. * * @param ...
2018-08-02 16:36:29
1512
原创 PHP之swoole扩展学习一(后期整理)
Swoole Task任务使用使用场景:执行耗时的操作(发送邮件,广播等)swoole定时器常规定时器:crontab(linux自带)swoole定时器:swoole_timer_tick:每隔一定时间去执行(轮询)swoole_timer_after:一段时间后执行tail -f 文件名 实时查看文件swoole异步redis1.redis源码编译安装:第一步:下载...
2018-08-02 16:29:18
817
原创 PHP之PHP7源码安装(后期的整理)
安装依赖库:libxml2-dev autoconfphp.net下载php源码并解压,进入php源码目录执行:./configure --prefix=/home --参数,按需添加prefix:指定安装到那个目录check完以后使用make进行编译然后使用make install 进行安装php -m查看扩展设置别名:设置别名的文件:一般在/home/你的用户...
2018-08-02 16:27:46
234
原创 PHP框架之Laravel基本使用一
1、安装composer安装第一步:切换至国内镜像composer config -g repo.packagist composer https://packagist.phpcomposer.com第二步:安装Laravel composer global require "laravel/installer"第三步:创建项目 laravel new 项目名第三步:开启服务(...
2018-08-02 16:25:56
641
原创 机器学习之降维方法简介
1、为什么要使用降维?如果拿特征选择后的数据直接进行模型的训练,由于数据的特征矩阵维度大,会存在数据难以理解、计算量增大、训练时间过长等问题2、什么是降维?降维是指把原始高维空间的特征投影到低维度的空间,进行特征的重组,以减少数据的维度。降维与特征最大的不同在于,特征选择是进行特征的剔除、删减,而降维是做特征的重组构成新的特征,原始特征全部“消失”了,性质发生了根本的变化。3、常见...
2018-08-02 16:06:54
729
原创 推荐系统简介及其面临的主要问题和目前主要使用的推荐算法简介
如果我有100万个用户,我就为他们做100万个亚马逊网站 ——Jeff Bezos说到推荐系统,可能大家首先会想到个性化推荐,如淘宝、亚马逊等网站都在使用个性化商品推荐系统。进一步可能会想到基于用户推荐、基于内容推荐、基于关联规则推荐、协同过滤等等,可以说现在我们经常用的各种在线服务都或多或少的使用了这项技术来提高他们的服务。二、面临的问题数据稀疏:数据规模越大越稀疏,冷启动:主要...
2018-08-02 15:32:43
5343
原创 第一章 循环神经网络简介
1)简单介绍我们知道在机器学习领域中,传统的神经网络模型是从输入层到隐藏层再到输出层,层与层之间是全连接的,而每层之间的节点是无连接的,它的弊端我在这里就不再赘述。我们主要介绍RNN,他为什么称为循环神经网络呢?因为它的每一个输出序列都与前面的输出序列有关。具体表现在该网络会记录前面的信息并应用到当前输出的计算中,也就是说各隐藏层之间是有连接的,它的模型如下:2)RNN能做什么?...
2018-08-02 14:36:06
990
原创 第二章 git的基本使用之linux系统下新建提交仓库(复习)
大约在一年以前,当时由于和一个前辈合作开发一个系统,前辈教我使用git进行版本控制管理,由于从未接触过版本控制工具,开始学习的时侯还是很兴奋的。反正有前辈带,有什么不会就找前辈啦,当然这是我的意淫。那时也是刚接触linux不久,但前辈要求我必须使用linux进行开发,也由此踏上了linux开发这条不归路。当然学习的过程是难忘的,无论做什么事都是这样,过程永远是痛苦与煎熬的,尤其是你进入一片未知领域...
2018-08-02 12:32:55
146
原创 第一章 git的基本使用(复习)
第一步:使用git init把目录变成git可以管理的仓库第二步:使用git add + 文件名 将文件添加到仓库(正常情况下执行该命令后不会有任何反馈信息,UNIX哲学)第三步:使用git commit -m "提交说明“ 将文件提交到仓库上面三步就是主要的操作步骤了,在我们的日常工作中也是使用最多的git命令,下面急需介绍一些常用的git命令:1)git status 查看...
2018-08-02 11:22:21
112
原创 操作系统之多路复用IO总结
1)Libevent Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络。支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级,内部使用select、epoll、k...
2018-07-07 16:50:56
1179
原创 操作系统之1.1习题解答
1.在1.7节中,perror的参数是用ISO C的属性const定义的,而strerror的整形参数没有用此属性定义,为什么?char *strerror(int errnum);void perror(const char *msg);2.若日历存放在带符号的32位整形数中,那么哪一年它将溢出?可用什么方法扩展溢出的浮点数,采用的策略是否与现有的应用相兼容?UTC起始时间...
2018-07-07 10:54:20
403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人