自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 Redis学习十一

Redis的主从同步机制不仅可以让从库服务更多的读请求,分担主库的压力,而且还能在主库发生故障时,进行主从库切换,提供高可靠服务。不过,在实际使用主从机制的时候,我们很容易踩到一些坑。这节课,我就向你介绍3 个坑,分别是。

2022-11-16 11:27:52 210 1

原创 Redis学习十

Redis为了保证并发的正确性,提供的俩种方法,分别是加锁和原子操作。加锁操作和服务器的锁一样,修改和获取数据的时候先获得锁然后进行加锁直到数据更新完才会释放锁原子操作是指执行过程保持原子性的操作。

2022-11-16 09:14:34 183

原创 Redis学习九

在一些场景下,有些数据被访问的次数非常少,甚至只会被访问一次。当这些数据服务完访问请求后,如果还继续留存在缓存中的话,就只会白白占用缓存空间。这种情况,就是缓存污染。

2022-11-15 16:45:04 243

原创 Redis学习八

缓存穿透是指要访问的数据既不在 Redis 缓存中,也不在数据库中,导致请求在访问缓存时,发生缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据。否则,我们就无法实现同步直写。存击穿是指,针对某个访问非常频繁的热点数据的请求,无法在缓存中进行处理,紧接着,访问该数据的大量请求,一下子都发送到了后端数据库,导致了数据库压力激增,会影响数据库处理其他请求。我们假设应用先删除缓存,再更新数据库,如果缓存删除成功,但是数据库更新失败,那么,应用再访问数据时,缓存中没有数据,就会发生缓存缺失。

2022-11-15 13:52:33 102

原创 Redis学习七

把 Redis 用作缓存时,我们会把 Redis 部署在数据库的前端,业务应用在访问数据时,会先查询 Redis 中是否保存了相应的数据。此时,根据数据是否存在缓存中,会有两种情况。缓存命中:Redis 中有相应数据,就直接读取 Redis,性能非常快。缓存缺失:Redis中没有保存相应数据,就从后端数据库中读取数据,性能就会变慢。而且,一旦发生缓存缺失,为了让后续请求能从缓存中读取到数据,我们需要把缺失的数据写入Redis,这个过程叫作缓存更新。

2022-11-15 10:33:07 158

原创 Redis学习六

明明做了数据删除,数据量已经不大了,为什么使用 top 命令查看时,还会发现 Redis 占用了很多内存。这是因为,当数据删除后,Redis 释放的内存空间会由内存分配器管理,并不会立即返回给操作系统。所以,操作系统仍然会记录着给 Redis 分配了大量内存。这种情况主要造成了内存碎片(Redis 每次向分配器申请的内存空间大小不一样,这种分配方式就会有形成碎片的风险,而这正好来源于 Redis 的外因)可以使用INFO 命令来查询内存使用的详细信息。

2022-11-14 16:53:01 182

原创 Redis学习五

前面提到过Redis的对网络IO和键值对的写时在主线程上进行,如果在主线程上进行大的键值对的书写(耗时操作 集合的运算)就会造成主线程的阻塞。我们梳理了会导致 Redis 性能受损的 5 大阻塞点,包括集合全量查询和聚合操作、bigkey 删除、清空数据库、AOF 日志同步写,以及从库加载 RDB 文件。在这 5 大阻塞点中,bigkey 删除、清空数据库、AOF 日志同步写不属于关键路径操作,可以使用异步子线程机制来完成。

2022-11-14 14:18:09 129

原创 Redis学习四

现在的互联网应用基本上都是采用分布式系统架构进行设计的,而很多分布式系统必备的一个基础软件就是消息队列。

2022-11-14 13:42:34 117

原创 Redis学习三

虽然时间序列数据是按时间递增顺序插入 Hash 集合中的,但 Hash 类型的底层结构是哈希表,并没有对数据进行有序索引。所以,如果要对 Hash 类型进行范围查询的话,就需要扫描 Hash 集合中的所有数据,再把这些数据取回到客户端进行排序,然后,才能在客户端得到所查询范围内的数据。在使用MULTI和EXEC命令时,建议客户端使用pipeline,当使用pipeline时,客户端会把命令一次性批量发送给服务端,然后让服务端执行,这样可以减少客户端和服务端的来回网络IO次数,提升访问性能。

2022-11-14 11:22:07 171

原创 Redis学习二

Set 和 Sorted Set 都支持多种聚合统计,不过,对于差集计算来说,只有 Set 支持。Bitmap 也能做多个 Bitmap 间的聚合计算,包括与、或和异或操作。当需要进行排序统计时,List 中的元素虽然有序,但是一旦有新元素插入,原来的元素在 List 中的位置就会移动,那么,按位置读取的排序结果可能就不准确了。而 Sorted Set 本身是按照集合元素的权重排序,可以准确地按序获取结果,所以建议你优先使用它。

2022-11-04 11:50:36 105

原创 Redis学习一

Redis学习笔记一

2022-11-02 14:54:00 87

原创 不定参数va_arg的理解

简易不定参数主要在printf中实现 主要理解在c/c++里面,主要依靠<stdarg.h>里面va_list,va_start,va_end。# include<stdio.h>#include <stdarg.h>void fun(int a,...){ va_list vsptr; va_start(vsptr,a); ////申明一个va_list类型对象vsptr,用于对参数进行遍历 //在调用va_start之后第一次调用va_ar

2021-06-17 20:05:43 2064

原创 Linux外设的挂载与定时任务

U盘挂载光盘默认挂载到media下 mount /dev/sr0 /需要挂载的路径 挂载umount 挂载的路径 (解除挂载)U盘的挂载使用lsblk查看U盘对应磁盘分区 mount /dev/sdb1 /挂载的路径(必须提前创建挂载的文件)umount 挂载的路径 (先回家)rmp包管理rpm管理就是软件管家(360管家)查询 卸载 更新查询 rpm -qa|grep 文件名卸载 rpm -e 软件包名称 卸载时有依赖关系 需要先卸载依赖的 可以强制卸

2020-12-28 14:08:17 181

原创 主机名的设置和防火墙的作用

主机名的设置hostname 查看主机名临时设置主机名fqdn(全限定域名)主机命名规范 主机名+域名结构 主机名 feng 域名 itcast.cn FQDN = feng.itcast.cn永久修改1.找到在文件/etc/sysconfig/network文件 {主机名的配置文件}2.修改其中的HOSTNAME为自己需要的名字3.修改其服务器中hosts文件 将新的名字指向本地(设置FQDN)域名IP dns的应用文件路径 /etc/hosts127.0.0.1 主机

2020-12-28 10:29:44 357 1

原创 远程配置和用户配置

网络配置超级管理员下 cd /etc/sysconfig/network-scripts/打开eth0文件查看网络状态/开启/重启service network status/start/restartifup 网卡名 启动某个网卡ifdown 网卡名 关闭某个网卡创建快捷方式ln -s 路径 放在的路径 (软连接)远程管理 ssh需要先获取服务器的IP地址端口号ssh 22(端口号默认) 安全外壳协议ftp 21httpd 80

2020-12-27 13:24:59 289

原创 VIM编辑器

Vi编辑器是unix和linux的基本文本编辑器 类似于window下文本的编辑器三种模式命令模式编辑模式末行模式yy 表示复制 dd 剪切或删除p 表示粘贴u 撤销Ctrl+r 恢复set nu 显示行号数字 +G 快速定位 冒号next/ prev 来回切换上下文件末行模式下 /a 表示搜索a noh 取消高亮 :s/搜索替换的内容/替换的内容 只替换这行的开头 :s/搜索替换的内容/替换的内容/

2020-12-26 20:36:00 88

原创 Linux高级命令

datadata 获取时间data -s “2020-12-01 10:20:21” 设置时间hwclock 获取硬件的时间 hwclock -w 将系统时间写入硬件中 hwclock -s 将硬件时间写入到系统中 主要cal 输出当前月份的日历引号双引号 为命令 echo “$(命令)”单引号 为字符串`高级命令hostname获取服务器的主机名 hostname 获取主机名 完整域名hosname -f 全限定域名 (例如 **

2020-12-26 10:56:13 120

原创 运维学习(linux的基本命令)

铁三角产品+研发+运维流程走向 产品设计->项目开发->项目测试->项目上线->项目运维上线 是指将项目从测试环境转到对用户开放的过程。生产 上线之后的运行阶段称之 为生产IP地址Ipv4形式:x.x.x.x x的去hi去范围(第一位x的取值范围1-223 第二位以后 0-255)由于资源有限为了保证全球多带的电脑可以使用 ip分为公网/外网/私网/内网ip地址0.0.0.0 表示任何地方 域名就是在浏览器中输入的一串字母和数字的组合 例如www

2020-12-25 17:32:58 199 1

原创 函数对象与适配器

函数对象重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor)其实就是重载"()"操作符,使得类对象可以像函数那样调用。注意1.函数对象(仿函数是一个类,不是一个函数)。2.函数对象(仿函数)重载了"()"操作符使得它可以像函数一样调用。。分类假定某个类有一个重载的 operator(),而且重载的 operator()要求获取一个参数,我们就将这个类称为"一元仿函数(unary functor);相反,如果重载的

2020-12-23 14:35:48 93

原创 容器算法和迭代器的介绍

容器常用的数据结构有:数组(array)链表(list)树(tree)栈(stack)队列(queue)集合(set)映射表(map)容器根据数据在容器中的排列顺序可以分为序列式容器和关联式容器序列式容器序列式容器强调值的排(像数组)序列式容器中的元素都有固定的位置,除非用删除或者插入改变这个位置(Vector)容器(Deque)容器(List)容器等;关联式容器关联式容器时非线性结构的准确的说是二叉树结构,各个数据之间没有物理上的关系(像动态分配)有一个显著的特点:在值中选择一个值作为

2020-12-12 21:01:45 154

原创 STL标准模板库

STL 可重复运用的东西 从函数 类 函数库 类别库各种组件 从模块设计到面向对象位的就是复用性的提升。 STL时一个数据结构和算法的标准 减低了他们的耦合性从而提升可自己的独立性,弹性,交互操作性STL广义分为 容器 算法 迭代器 (桥梁)容器和算法之间通过迭代器无缝连接STL六大组件容器 算法 迭代器 仿函数 适配器 空间配置器容器 如:vector list deque set mao 用来存放数据 实现的角度位 class template(类模板)算

2020-11-20 15:40:28 86

原创 stm32外部中断的配置

f427外部中断的配置void User_Exit_Init(){ GPIO_InitTypeDef GPIO_InitStructure; //定义引脚的结构体 EXTI_InitTypeDef EXTI_InitStructure; //定义中断的结构体 NVIC_InitTypeDef NVIC_InitStructure; //定义NVIC的结构体 ...

2020-11-06 16:58:02 1663

原创 ESP8266串口初始化

/* * uart0.h */#ifndef APP_INCLUDE_UART0_H_#define APP_INCLUDE_UART0_H_#include "ets_sys.h"#include "osapi.h"#include "uart0.h"#include "uart_register.h"#define UART0 0typedef enum{ ...

2020-11-06 16:57:49 1441

原创 ESP8266引脚配置

ESP8266引脚配置输出 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12); //设置GPIO12位IO模式 GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 1) //设置GPIO12为高电平 //GPIO_OUTPUT_SET(GPIO_ID_PIN(12), 0) //设置GPIO12为低电平输...

2020-11-06 16:57:14 3701

原创 ESP8266开发延时

#软件延时##毫秒级别中断os_timer_t test_timer; //定义定时 如同int i 一样;char * buf = "helloworld";void ICACHE_FLASH_ATTR USE_Taxt(void *arg) //定义回调函数{ os_printf("%s",arg); //使用串口0打印数据 }void user_init(void...

2020-11-06 16:56:51 1123

原创 ESP8266学习三

ESP8266学习三软件定时器软件定时器不一定看可以成功得执行 在CPU长期占用得情况下软件定时器不会执行;os_timer_t OS_TIMER_1; //定义定时器结构 必须要全局变量 //不要写成os_timer_t *OS_TIMER_1;// 定时器中断回调函数void ICACHE_FLASH_ATTRTimer_INTERRUPT(){ flag = !flag; GPIO_OUTPUT_SET(GPIO_ID_PIN(4),flag);}/*

2020-09-19 23:59:02 189

原创 ESP8266学习二

ESP8266学习二看门狗函数由于non OS_SDK系统不支持抢占任务和进程切换,用户代码要确保正确执行还要保证用户代码不用长期占用CPU(大约500ms)因此要定时喂狗 如果没有定时喂狗cpu就会复位system_soft_wdt_feed(); //喂狗函数软件延时函数 建议使用硬件定时中断函数微秒函数 最多延时65535微妙 不是很准确void os_delay_us(uint16 us);//延时函数 毫秒级别毫秒延时函数delay_ms(uint16 ms)

2020-09-19 23:58:31 193

原创 ESP8266学习一

ESP8266学习一SDK文件​ 1.在乐鑫官网下载SDK​ ​ 2.下载后解压文件​ 包含以下文件​ bin :编译生成得二进制文件 需要直接下载到esp8266得​ documents :SDK相关得文档和链接​ driver_lib: 外设驱动的文件 像stm32得文件包 包含有usart ,I2C等​ examples: 二次开发得示例代码 没用​ include: SDK自带文件基本包含了所有得API函数以及其他得宏定义

2020-09-19 23:58:20 227

原创 C++的引用

引用int a; //创建一个int 类型的数据a在c语言中可以将int换个名字 用 Typedef (常用于结构体中)(如 Typedef int Myint; Myint a;相当于int a; )而不能对变量a重新取名字在 C++中用到 引用 可以对变量a换个名字(相当于指针 直接对 a 的地址进行操作)void text(){ int a = 10; int b...

2019-12-11 21:32:47 225

原创 枚举的使用

C和C++的枚举的使用###在c语言中enum Season{ A = 0,//10 B,//=1 C,//=2};void text(){ enum Season s = 2;//s代表C 在C语言中可以通过 { ...... }}在C语言中如果s = 2;找了2下 如果找的数过大 就要找好多下(如s = 64000 就要找64000下, 还不能找...

2019-11-10 18:01:30 100

原创 多串口定义printf和接受不定长字符串

多串口定义prrintf接受不定长字符串串口发送16进制[ 多串口的printf]·上篇 写了串口一重新定义为printf但是其他串口无法使用printf 在c语言中有个库为“stdarg.h”标准参数 主要目的是为了函数接收可变参数里面含有4个标准宏...

2019-08-04 16:02:09 912

原创 f1串口的初始化以及重新定义printf

串口一初始化**Bound为串口波特率void USART1_Init(int Bound){ GPIO_InitTypeDef GPIO_InitStruct;//定义引脚的结构体 USART_InitTypeDef USART_InitStruct;//定义串口的结构体 NVIC_InitTypeDef NVIC_InitStruct; RC...

2019-07-24 22:45:31 657

原创 stm32f1的延时

延时方式主要有俩种,他们各有自己的优缺点[软件延时 ][ 系统定时器延时]List item1软件延时.所谓的软件延时就是利用cpu来处理 使cpu不能去处理别的命令这也是他的一个缺点还有他的延时很难精准.优点是不占用硬件资源for(int Delay_s){ int i = 0; for(i = 0; i < Delay_s; i++) { for(int j...

2019-07-24 00:32:53 1152

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除