作者文章归档:zuojie@88.com

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


Redis 设计与实现

_images/cover.png

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

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

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

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

Read more

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
    ...

Read more

1Panel替代宝塔的简单运维面板


1Panel 现代化、开源的 Linux 服务器运维管理面板

1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括:

  • 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定;
  • 高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等;
  • 安全可靠:基于容器来管理和部署应用,最小漏洞暴露面,提供防火墙和日志审计等功能;
  • 一键备份:支持一键备份和恢复,备份数据到各类云端存储,永不丢失;
  • 应用商店:精选各类高质量开源工具和应用软件,助力您轻松安装和升级。

快速开始...

Read more

epoll案例


C语言版

#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/epoll.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>

#define MAX_EVENTS 10
#define BUFFER_SIZE...

Read more

C语言简单无向图实现


//
// Created by ZJ on 2023/11/21.
//
#include <stdio.h>

#define MAX 100

// 定义图的结构体
typedef struct {
  int n;            // 图中顶点的个数
  int am[MAX][MAX]; // 邻接矩阵
} Graph;

// 初始化图
void init_graph(Graph *g, int n) {
  g->n = n;
  int i, j;
  for (i = 0; i < n; i++) {
    for (j = 0; j ...

Read more

C++protobuf基础


简介

protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python 等,每一种实现都包含了相应语言的编译器以及库文件。 由于它是一种二进制的格式,比使用 xml 、json进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

安装

# 下载
wget https://github.com/protocolbuffers/...

Read more

C网络编程(一)


操作系统Ubuntu 22.04 编译器gcc-11

server.c

//
// Created by ZJ on 2023/11/20.
//
#include <arpa/inet.h> // linux中ip地址port端口类型转换库 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h> // linux socket 相关函数库
#include <unistd.h> // read wri...

Read more

常见排序算法


Python版本

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
    return arr

def insertion_sort(arr):
    n = len(arr)
    for i in range(1, n):
       key = arr[i]...

Read more

C++ STL之自制map


#include <cassert>
#include <iostream>
#include <string>

template <typename K, typename V>
class Map
{
private:
    class KeyValuePair
    {
    public:
        KeyValuePair(K k, V v) : key(k), value(v), next(nullptr) {}
        K key;
        V value;
        KeyValuePai...

Read more

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...

Read more