分类目录归档:云计算

《Redis 设计与实现》读书笔记(二) 链表


链表

​ 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。

​ 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为 Redis 使用的 C 语言并没有内置这种数据结构,所以 Redis 构建了自己的链表实现。

​ 链表在 Redis 中的应用非常广泛,比如列表键的底层实现之一就是链表:当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis 就会使用链表作为列表键的底层实现。

​ 举个例子,以下展示的 integers 列表键包含了从 11024 共一千零二十四个...

阅读全文 →

创建swapfile


Linux中的swap分区是一种虚拟内存,主要作用如下:

1、扩展内存容量:通过将不常用的内存数据移动到swap分区,可以为系统提供更多的可用内存空间。

2、提高系统性能:当物理内存不足时,系统可以使用swap分区作为额外的内存资源,从而提高系统的性能。

3、管理内存碎片:通过将不常用的内存数据移动到swap分区,可以避免物理内存中出现大量的内存碎片,从而提高内存的使用效率。

创建swap文件

#使用dd创建swap文件/data/swapfile,大小为1G
dd if=/dev/zero of=/data/swapfile bs=1M count=1024
#---或---
#使用f...

阅读全文 →

《Redis 设计与实现》读书笔记(一)简单动态字符串


Redis 设计与实现

_images/cover.png

《Redis 设计与实现》一书全面而完整地讲解了 Redis 的内部运行机制, 对 Redis 的大多数单机功能以及所有多机功能的实现原理进行了介绍, 展示了这些功能的核心数据结构以及关键的算法思想。 通过阅读本书, 读者可以快速、有效地了解 Redis 的内部构造以及运作机制, 从而学会如何更高效地使用 Redis 。

购买本书请访问: 京东商城互动出版网(china-pub)亚马逊当当网 , 另外本书的 Kindle 版本多看阅读版本豆瓣阅读版本 也已有售。

第一部分:数据结构与对象

Redis 数据库里面的每个键值对(key-...

阅读全文 →

mysql简单备份脚本


mysql备份shell脚本

vim /root/mysql_bak.sh
#!/bin/bash

#保存备份个数,备份7天数据
number=7
#备份保存路径
backup_dir=/data/bak
#日期
dd=`date +%Y-%m-%d-%H-%M-%S`
#备份工具
tool=mysqldump
#地址
database_ip=127.0.0.1
#用户名
username=xxx
#密码
password=xxx
#将要备份的数据库
database_name=xxx

#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then
    ...

阅读全文 →

ubuntu下编译安装vim最新版


# 克隆vim源码
git clone https://github.com/vim/vim.git
cd vim

./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/lib/python3.10/config-3.10-x86_64-linux-gnu \
--enable-perlinterp=yes \
--enable-luainterp=yes...

阅读全文 →

k8s基础


概述(官网)

Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。

Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在 Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。

时光回溯

让我们回顾一下为何 Kubernetes 能够...

阅读全文 →

Docker 容器的备份与迁移


Docker 容器的备份与迁移

1.将容器保存为镜像

我们可以通过以下命令将容器保存为镜像

docker commit 容器名 镜像名

2.镜像备份与恢复

我们可以通过以下命令将镜像保存为tar 文件

docker  save -o 镜像.tar 镜像名

然后执行load命令进行恢复

docker load -i xxxx.tar
# -i 输入的文件

我们可以基于这个镜像来创建一个容器,例如

docker run -di --name=容器名 -p 81:80 镜像名

阅读全文 →

Nginx基础教程


Nginx简介

Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

延伸版本:tengine(淘宝)、openresrt(章亦春)等

Ngnix 特点

  • 模块化设计:良好的扩展性,可以通过模块方式进行功能扩展。
  • 高可靠性:主控进程和 worker 是同步实现的,一个 worker 出现问题,会立刻启动另一个 worker。
  • 内存消耗低:一万个长连接(keep-alive),仅消耗 2.5MB 内存。
  • 支持热部署:不用停止服务器,实现更新配置文件,更换日志文件、更新服务器程序版本。
  • 并发能力强:官方数据每秒支持 5...

阅读全文 →

DockerFile


1.Dockerfile简介

Dockerfile是一个包含了一系列命令的文本文件,这些命令可以用于自动化地创建一个Docker镜像。通过编写Dockerfile,可以将环境配置、应用程序代码、依赖关系等打包成一个镜像,便于快速创建容器。

用户可以将自己的应用打包成镜像,从而让应用在容器中运行。还可以对官方镜像进行扩展,打包成适合生产环境的应用镜像。

2.Dockerfile常用指令

2.1 FROM:指定基础镜像

指定构建新镜像时使用的基础镜像,通常必须是Dockerfile的第一个有效指令

# 格式
FROM <image:[版本标签]>

# 指定基础镜像
FROM c...

阅读全文 →

源码包安装LNMP环境


源码包安装LNMP环境

(本文转载自https://www.linuxprobe.com/)

一般来讲,在安装软件时,如果能通过软件仓库来安装,就用yum命令搞定它;反之则去寻找合适的RPM软件包来安装;如果实在没有资源可用,那就只能使用源码包来安装了。使用源码包安装服务程序的过程看似复杂,其实在归纳汇总后只需要4~5个步骤即可完成安装。接下来会对每一个步骤进行详解。

第0步: 关闭防火墙和SELinux

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disabled firewall...

阅读全文 →