什么是缓存雪崩、击穿、穿透?
用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。 当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔溃的了,所以为了避免用户直接访问数据库,会用 Redis 作为缓存层。 因为 Redis 是内存数据库,我们可以将数据库的数据缓存在 Redis 里,相当于数据缓存在内存,内存的读写速度比硬盘快好几个数量级,这样大大提高了系统性能。 引入了缓存层,就会有缓存异常的三个问题,分别是缓存雪崩、缓存击穿、缓存穿透。 这三个问题也是面试中很常考察的问题,我们不光要清楚地知道它们是怎么发生,还需要知道如何解决它们。 话不多说,发车! 缓存雪崩通常我们为了保证缓存中的数据与数据库中的数据一致性,会给 Redis 里的数据设置过期时间,当缓存数据过期后,用户访问的数据如果不在缓存里,业务系统需要重新生成缓存,因此就会访问数据库,并将数据更新到 Redis 里,这样后续请求都可以直接命中缓存。 那么,当大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大量的用户请求,都无法在 Redis 中处...
Crypt 加密密码
crypt是个密码加密函数,它是基于Data Encryption Standard(DES)演算法。 crypt只适用于密码的使用,不适合用于资料加密。 crypt()将参数key所指的字符串加以加密,key字符串长度仅取前8个字符,超过此长度的字符没有意义 1、我们可以用mkpasswd命令:这个命令就是用来生成crypt格式的密码的:mkpasswd 输入命令后,程序会要求输入一个密码,然后生成crypt格式的字符串。 2、如果用Apache Web服务器,那么也可以用htpasswd:htpasswd -nd user 这个命令会输出一个user:password格式的字符串,直接把password字段复制下来 3、openssl命令:openssl passwd -crypt myPassword 4、Perl:perl -e "print crypt('password','salt');" Perl需要一个加密盐,salt。 5、Ruby:ruby -e 'print "pa...
Python 安装 cv2
$ curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py$ python get-pip.py $ sudo yum install libXrender-0.9.10-1.el7.x86_64 --setopt=protected_multilib=false$ sudo yum install libXext-1.3.3-3.el7.x86_64 --setopt=protected_multilib=false$ sudo yum install libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=false$ pip2 install opencv-python==4.1.1.26$ pip install requests$ pip install Pillow 检测 安装 cv2 是否成功 [root@xxx xxx]# pythonPython 2.7.5 (default, Nov 16 2020, 22:23:17) ...
php sha256 获取 Java sha256 数据
public String toBase58() { byte[] data = new byte[25]; data[0] = COIN_VERSION; System.arraycopy(toArray(), 0, data, 1, 20); byte[] checksum = Digest.sha256(Digest.sha256(data, 0, 21)); System.arraycopy(checksum, 0, data, 21, 4); return Base58.encode(data);} 上面可以看到 java toBase58 方法是凉了两次 sha256 对应PHP连续两次sha256 如果想和java 实现的一样就需要 hex2bin(hash('sha256', hex2bin(hash('sha256', hex2bin($hexstr))) 每次sha256前 都需要先 二进制 hex2bin查了很多问题, 给出的都不理想, java sha256 对比...
PHP 过滤表单输入的 emoji 表情
1.过滤emoji表情的原因在我们的项目开发中,emoji 表情是个麻烦的东西,即使我们可以能存储,也不一定能完美显示,因为它的更新速度很快:在iOS以外的平台上,例如PC或者android。如果你需要显示emoji,就得准备一大堆emoji图片并使用第三方前端类库才行。即便如此,还是可能因为emoji图片不够全而出现无法显示的情况在大多数业务场景下,emoji也不是非要不可的。我们可以适当地考虑干掉它,节约各种成本。 2.php过滤emoji原理 Emoji (絵文字,词义来自日语えもじ,e-moji,moji在日语中的含义是字符)是一套起源于日本的12x12像素表情符号,由栗田穣崇(Shigetaka Kurit)创作,最早在日本网络及手机用户中流行。自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。近期,更是有不少网友用emoji图案玩猜字游戏,享受这种表情文化带来的乐趣。 关于emoji的发音:很多人第一眼见到emoji便会下意识将...
APISIX: 国产微服务网关
APISIX: 国产微服务网关APISIX是一个基于OpenResty和etcd构建的国产微服务API网关。它具有高性能、可扩展性和丰富的功能,可以帮助开发者构建强大的微服务架构。本文将介绍APISIX的概述、安装步骤以及控制台的使用。 概述APISIX是一个云原生的微服务API网关,它基于OpenResty和etcd实现。OpenResty是一个可伸缩的Web平台,通过Lua扩展了Nginx的功能。etcd是一个键值存储系统。APISIX利用插件机制,提供了动态负载均衡、身份验证、限流限速等功能,并支持开发者自定义插件进行拓展。 APISIX的特点包括: 动态负载均衡:支持跨多个上游服务的动态负载均衡,目前已支持轮询和一致性哈希算法。 身份验证:支持多种认证方式,如key-auth、JWT、basic-auth和wolf-rbac等。 限流限速:可以基于速率、请求数和并发数等维度进行限制。 高级功能:支持A/B测试、金丝雀发布、蓝绿部署、监控报警、服务可观测性和服务治理等。 APISIX的文档非常齐全,由于是国人开源,所以文档也非常中文友好。开发者可以通过以下...
Python 定时器
Python 定时器在Python开发中,经常需要执行定时任务。Python提供了多种方式来实现定时器功能,使我们能够按照指定的时间间隔执行代码。本文将介绍如何在Python中使用定时器。 使用 time 模块Python的time模块提供了一些用于处理时间的函数和类,其中包含了定时器的功能。下面是一个使用time模块实现简单定时器的示例代码: import timedef task(): print("定时任务执行")# 设置定时器,每隔5秒执行一次任务while True: task() time.sleep(5) 在上述示例中,我们定义了一个名为task的函数,用于执行定时任务。通过使用time.sleep(5)函数,我们实现了每隔5秒执行一次任务的定时器功能。 使用 sched 模块Python的sched模块是一个基于事件驱动的定时调度器,提供了更高级的定时器功能。下面是一个使用sched模块实现定时器的示例代码: import schedimport timedef task(): print("定时任务执行...
Beyond Compare for Mac 无限试用方法
Beyond Compare for Mac 无限试用方法 原理: 删除注册文件即可永久保持30天免费 在官网下载最新的 Beyond Compare 把 Beyond Compare 复制到应用程序中. 显示隐藏文件 MAC中显示隐藏文件有很多种方法,最简单的是通过在Mac终端输入命令。 显示隐藏文件(注意空格和大小写): defaults write com.apple.finder AppleShowAllFiles -bool true 或 defaults write com.apple.finder AppleShowAllFiles YES 重启finder 确认注册文件位置,一般在 电脑磁盘->用户->用户名->资源库(隐藏文件夹)->Application Support->Beyond Compare->registry.dat或者电脑磁盘->资源库->Application Support->Beyond Compare->registry.dat 选中图标,右键点击“显...
python将图片转base64
# -*- coding: utf-8 -*- import base64 with open("/tmp/img/1.png","rb") as f: # b64encode是编码,b64decode是解码 base64_data = base64.b64encode(f.read()) # base64.b64decode(base64data) print(base64_data)
Python Base64 保存为图片文件
Python Base64 保存为图片文件在Python开发中,我们经常会遇到需要将Base64编码的字符串保存为图片文件的情况。Base64编码是一种将二进制数据转换为文本格式的方法,而将其保存为图片文件可以方便地进行后续处理和展示。本文将介绍如何使用Python将Base64编码保存为图片文件。 使用 base64 和 PIL 模块Python的base64模块提供了Base64编码和解码的功能,而PIL(Python Imaging Library)模块则是一个强大的图像处理库。结合这两个模块,我们可以将Base64编码的字符串解码并保存为图片文件。下面是一个示例代码: import base64from PIL import Imagefrom io import BytesIOdef save_base64_image(base64_string, output_path): # 解码Base64字符串 image_data = base64.b64decode(base64_string) # 创建Image对象 image = Image...




