Redis详解
Redis介绍Redis是C语言编写的开源高性能键值对存储的内存数据库,可以用作数据库、缓存、中间件,是NoSQL(not-only sql,泛指非关系型数据库)的数据库。
Redis作为一个内存数据库。
性能优异,数据在内存中,读写非常快,支持并发10W QPS
单线程但进程,线程安全,采用IO多路复用。 IO 多路复用指的是 Redis 服务器使用一个单线程来处理多个客户端的连接和请求,通过事件驱动和异步非阻塞 IO 来提高系统的效率和可伸缩性。
丰富的数据结构,主要为5种:字符串(String)、哈希表(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)。还有3中新的数据类型:位图(Bitmap)、超日志(HyperLogLog)和地理位置(Geo)。
支持持久化,可以将内存中数据保存在磁盘中,重启时加载。
可以配置主从模式,或者分布式
可以作为消息中间件使用,支持发布订阅。
Redis为啥快官方提供的数据可以达到100000+的QPS(每秒内的查询次数)
Redis确实是单进程单线程的模型,因为Redis完全是基于内存的操作,CPU不是Redis ...
k8s部署mysql 8.0.26
k8s部署创建nas阿里云,文件存储。使用通用性NAS(容量最大10P)
创建k8s volume阿里云 k8s,先创建存储卷,选择NAS,配置挂载点,配置挂载路径
然后创建存储声明,使用刚才创建的存储卷
创建prod使用无状态模式。
镜像使用mysql/mysql-server, Tag使用8.0.26
配置环境变量
12MYSQL_ROOT_PASSWORDMYSQL_ROOT_HOST
配置启动参数
1["--default-authentication-plugin=mysql_native_password"]
使用挂载卷(挂载卷配置路径/var/lib/mysql),对应容器路径/var/lib/mysql
迁移导出原来数据
可以使用export导出,或者使用client工具导出.
由于原数据库使用阿里云RDS,不区分大小写。自己部署的区分大小写。
注意导出的数据库表名为小写,需要手动修改表名为大小。
导入,使用source
12345# 原数据库名称为 weixin-database; 8.0开始不能使用-作为表名c ...
Mqtt介绍及应用
介绍MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,专门设计用于物联网(IoT)和机器对机器(M2M)通信。MQTT 最初由 IBM 的 Andy Stanford-Clark 和 Arlen Nipper 在1999年开发,并于2013年成为 OASIS 标准。
以下是 MQTT 的一些关键特点和优势:
轻量级和低带宽消耗: MQTT 是一种轻量级的协议,具有小型的消息头,因此非常适合于带宽受限或网络连接不稳定的环境。它减少了网络流量和电池消耗,使其成为物联网设备的理想选择。
基于发布/订阅模式: MQTT 使用发布/订阅模式,其中客户端(发布者)发布消息到主题,而其他客户端(订阅者)订阅感兴趣的主题。这种模式使得多个客户端能够实时收到感兴趣的消息,实现了解耦和灵活性。
异步通信: MQTT 支持异步通信,发布者发布消息后不需要等待接收者的响应,从而提高了系统的响应速度和效率。
服务质量(QoS)支持: MQTT 提供了三种不同的服务质量级别(QoS):至多一次(QoS ...
导出mysql查询结果
要将MySQL查询结果导出到文件中,您可以使用以下方法之一:
方法1. 使用SELECT ... INTO OUTFILE语句:12345678vbnetCopy codeSELECT column1, column2, ...INTO OUTFILE '/path/to/output_file.csv'FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'LINES TERMINATED BY '\n'FROM your_tableWHERE your_condition;
在上述语句中,您需要将column1, column2, ...替换为您要导出的列名,/path/to/output_file.csv替换为要输出结果的文件路径,your_table替换为要查询的表名,your_condition替换为查询条件。该语句将查询结果以CSV格式输出到指定文件中。
方法2. 使用MySQL命令行工具的重定向操作符:1mysql -u userna ...
华硕Z170提示cpu over voitage error错误
最近台式机开机时,提示错误信息,无法启动。错误信息如下
1234power supply surges detected during the previous power onASUS Anti-surge was triggered to protect system from uunstable power supply unitcpu over voitage errorpress F1 to Run setup
排查了很久,才解决了问题,特记录整个排查过程。
主板是华硕Z170-pro-gaming。使用华硕Z170芯片组。可以直接搜索z170的解决方法。
问题一次重新插拔了台式电脑电源后,就出现如下异常。
1234power supply surges detected during the previous power onASUS Anti-surge was triggered to protect system from uunstable power supply unitcpu over voitage errorpress F1 to Run s ...
Go设置跨域访问
在 Go 中,监听 0.0.0.0 IP 地址表示监听所有可用的网络接口,允许从任何 IP 地址访问服务。这意味着您的服务将接受来自本地主机以及其他网络上的任何 IP 地址的请求。
以下是一个简单的示例,展示如何在 Go 中监听 0.0.0.0 IP 地址:
1234567891011121314151617package mainimport ( "fmt" "net/http")func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "Hello, World!") }) err := http.ListenAndServe("0.0.0.0:8080", nil) if err != nil { fmt.Println("Failed to start server:", err) ...
React实现大文件分片上传
在本篇博客中,我们将介绍如何使用 React 实现大文件分块上传功能。我们将使用 axios 库来发送 HTTP 请求,以及使用 HTML5 中的 File API 来处理文件操作。
上一篇文章大文件分片上传,我们已经使用python实现了后台功能。现在我们使用React实现前段示例。
背景在 Web 开发中,当需要上传大型文件时,直接将整个文件一次性上传可能会导致性能问题,特别是在网络连接较慢或不稳定的情况下。为了解决这个问题,我们可以将大文件切分成多个小块(分片),分别上传每个小块,然后在服务器端将这些小块合并成完整的文件。
原理
用户选择要上传的文件。
前端根据分片大小将文件切分成多个小块。
逐个上传每个小块到服务器端。
服务器端接收并保存每个小块。
在服务器端,根据上传的小块将它们合并成完整的文件。
实现首先,我们需要安装 axios 库,它将用于发送 HTTP 请求。在项目的根目录下执行以下命令:
12Copy codenpm install axios
接下来,我们创建一个名为 FileUploader.js 的组件,其中包含了分块上传的逻辑。
下面是完整示例
12 ...
大文件分片上传
当处理大文件上传时,分块上传是一种常见的技术。它允许将大文件分成较小的块,并逐个上传这些块,以降低上传过程中的网络负载和内存占用。在本篇博客中,我们将使用Python来实现大文件分块上传的示例。
背景在传统的文件上传过程中,将整个大文件一次性上传可能会导致网络传输较慢和内存占用过高的问题。而使用分块上传可以将大文件划分为多个较小的块,分别上传,从而提高上传效率和系统性能。
原理大文件分块上传的原理是将大文件划分为多个固定大小的块,通常每个块的大小为几兆字节。然后,逐个上传每个块,并在服务器端将这些块合并成一个完整的文件。这种分块上传的方法允许在上传过程中进行断点续传、并行上传等操作。
以下是大文件分块上传的基本流程:
客户端将大文件切分为固定大小的块。
客户端逐个上传每个块到服务器端。
服务器端接收每个块并保存到临时存储位置。
当所有块都上传完成后,服务器端将这些块合并成一个完整的文件。
示例下面是一个使用Python实现大文件分块上传的示例代码:
第一步,确认文件名。/api/upload/init:用于初始化上传会话,返回一个文件 ID。
第二步,上传分片文件。/api/ ...
WebRTC视频通话
WebRTC提供了一套标准API,使Web应用可以直接提供实时音视频通信功能。大部分浏览器及操作系统都支持WebRTC,直接可以在浏览器端发起实时音视频通话,本文以WebRTC初学者的视角去完成一个1V1网页版实时音视频通话。
完成音视频通话需要了解四个模块:
音视频采集、
STUN/TURN 服务器、
信令服务器、
端与端之间P2P连接。
使用WebRTC的API完成音视频采集,配合信令服务器和WebRTC的RTCPeerConnection方法能实现1V1通话,简易流程如下图:
接下来依次讲解它们的作用和核心API。
目前这项Web技术支持的浏览器有chrome, firefox和safari。
WebRTC 有三个主要的API
getUserMedia - 采集本地音频和视频流
RTCPeerConnection - 用来创建对端连接并传输音视频的API
RTCDataChannel - 用于传输二进制数据。
WebRTC提供端对端的音视频通讯,不需要媒体服务器转发媒体数据,架构简化图如下,
WebRTC采集和传输音视频数据的过程可以分为三步进行
...