自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《Redis开发与运维》---- 哨兵(Redis Sentinel)

文章目录一、基本概念1、主从复制的问题2、传统的高可用3、Redis Sentinel 的高可用二、安装和部署1、具体配置参考自己的命令文档:[https://editor.csdn.net/md/?articleId=108286324](https://editor.csdn.net/md/?articleId=108286324)2、以下是本人的sentinel的配置, Redis文件夹下有个默认的`sentinel.conf` 可以参考。3、启动Sentinel节点4、配置优化5、如何监控多个主节点

2020-08-30 18:26:35 233

原创 《Redis开发与运维》---- 理解内存

内存消耗1、内存使用统计:info memory重点关注:used_memory_rss、used_memory、mem_fragmentation_ratio(比值)当mem_fragmentation_ratio>1时,说明碎片率严重。当mem_fragmentation_ratio<1时,说明Redis内存交换(swap)到硬盘导致,Redis性能会很差,甚至僵死。2、内存消耗划分Redis进程内消耗主要包括:自身内存(消耗非常少)+对象内存+缓冲内存+内存碎片对象内存

2020-08-29 22:55:39 193 1

原创 MyBatis中${}的用法

参考:https://blog.csdn.net/weixin_44142296/article/details/96436951‘${}’ 传列名,使用聚合函数表t_user有如下4 个字段:id 、name、 age 、 consume_amt如果需求是有时候是要age的平均数, 有的是consume_amt的平均数,那么可以把列表传到SQL中查询。如下:mapper.xml <select id="getAvg" parameterType="java.lang.Strin.

2020-08-27 13:52:45 5678

原创 《Redis开发与运维》---- Redis的噩梦:阻塞

发现阻塞常见的做法是在应用方加入异常统计并通过邮件/微信/短信报警,以便及时发现通知问题。1、在实现异常统计时要注意,由于Redis调用API会分散在项目的多个地方,每个地方都监听异常并加入监控代码必然难以维护。这可以借助于日志系统,使用logback或者log4j.当异常发生时,异常信息最终会被日志系统收集到Appender,默认的Appender一般是具体的日志文件,开发人员可以自定义一个Appender,用于专门统计异常和触发报警逻辑。2、记得在代码中打印ip和port信息,因为报错信息里没有

2020-08-25 23:08:20 229

原创 《Redis开发与运维》---- 主从复制

复制功能是高可用Redis的基础,后面的哨兵和集群都是在复制的基础上实现高可用的。一.配置1、建立复制参与复制的Redis实例划分为主节点(master)和从节点(slave)。默认 情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。配置复制的方式有以下三种:1)在配置文件中加入slaveof {masterHost} {masterPort}随Redis启动生效。2)在redis-server启动命令后加入

2020-08-24 22:20:57 135

原创 《Redis开发与运维》----- 持久化

Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。一、RDB(Redis Data Base 数据快照)二、AOF(Append Only File 操作日志)三、问题定位与优化...

2020-08-24 20:32:05 146

原创 简单的mysql存储过程,批量插数据

drop PROCEDURE IF EXISTS insertLabel;CREATE PROCEDURE insertLabel (in size int) BEGIN DECLARE i int; DECLARE label_name VARCHAR(100); DECLARE label_value VARCHAR(10); set i = 0; WHILE i<size DO set label_value = floor(RAND()

2020-08-20 20:09:35 85

原创 《Redis开发与运维》----- 客户端

客户端通信协议客户端与服务端之间的通讯协议是建立在TCP协议之上的。Redis制定了RESP(REdis Serialization Protocol, Redis序列化协议) 实现客户端与服务端的正常交互。客户端管理客户端API1. client list附图id:客户端连接唯一标识addr: 连接的IP和端口fd:socket的文件描述符name:客户端的名字age:客户端已经连接的时间idle:客户端最近一次的空闲时间,当age等于idle时,说明连接一直

2020-08-20 13:41:44 298

原创 《Redis开发与运维》----- Java客户端Jedis

maven依赖Jedis直连方式JedisPool方式

2020-08-19 22:51:22 132

原创 ELK+MDC追踪日志 ---- Dubbo的Filter实现

由于在项目中,会通过dubbo远程调用其他服务,如果没有唯一标识,要追终被调用的服务执行日志很困难,所以这里实现下dubbo的日志追终。除了Filter实现不一样,其他都同https://editor.csdn.net/md/?articleId=108078745package com.sakura.framework.filter;import com.alibaba.dubbo.common.extension.Activate;import com.alibaba.dubbo.rpc.Fil

2020-08-18 17:06:03 338

原创 ELK+MDC追踪日志 ---- Spring的Filter实现

Maven依赖<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version></dependency>log4j.properties只用看%X{uuid}那里log4j.logger.com.ibatis=debuglog4j.lo

2020-08-18 16:41:29 318

转载 ELK+MDC追踪日志 ---- SpringCloud实现传递

一、背景开发排查系统问题用得最多的手段就是查看系统日志,在分布式环境中一般使用ELK来统一收集日志,但是在并发大时使用日志定位问题还是比较麻烦,由于大量的其他用户/其他线程的日志也一起输出穿行其中导致很难筛选出指定请求的全部相关日志,以及下游线程/服务对应的日志。二、解决思路每个请求都使用一个唯一标识来追踪全部的链路显示在日志中,并且不修改原有的打印方式(代码无入侵)使用Logback的MDC机制日志模板中加入traceId标识,取值方式为%X{traceId}MDC(Mapped Diagnos

2020-08-18 15:41:24 1702

转载 对称加密、非对称加密、散列(哈希)算法

对称加密算法也叫私钥加密算法,其特征是收信方和发信方使用相同的密钥,即加密密钥和解密密钥是相同或等价的。非对称加密算法也叫公钥加密算法。其特征是收信方和发信方使用的密钥互不相同,而且几乎不可能从加密密钥推导解密密钥。用公钥加密的过程叫加密用私钥解密的过程叫解密用私钥加密的消息称为签名,只有拥有私钥的用户可以生成签名用公钥解密签名这一步称为验证签名(验签),所有用户都可以验证签名(因为公钥是公开的)一旦签名验证成功,根据公私钥数学上的对应关系,就可以知道该消息是..

2020-08-17 09:51:16 2637

原创 《Redis开发与运维》----- Pipeline(流水线、管道)、事务与Lua

Pipeline(流水线、管道)Redis客户端执行一次命令,需要经历发送命令、命令排队、命令执行、返回结果四个过程。4个过程统称为一次Round Trip Time (RRT,往返时间)Pipeline(流水线)机制能将一组Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端性能测试:执行速度一般比逐条执行要快,客户端和服务端的网络延迟越大,Pipeline的效果越明显原生批量命令和Pipeline对比。原生批量命令是原子

2020-08-15 16:18:43 382

原创 《Redis开发与运维》----- 慢查询分析、Bitmaps位图、HyperLogLog、发布/订阅、GEO地理信息定位

慢查询分析慢查询两个参数slowlog-log-slower-than 阀值,单位是微秒(1秒=1000毫秒=1000000微秒),默认值是10000slowlog-log-slower-than=0会记录所有的命令slowlog-log-slowerthan<0对于任何命令都不会进行记录实际上Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是列表的最大长度每个慢查询日志有4个属性组成, 分别是慢查询日志的标识id、 发生时间戳、 命令耗时、 执行命令和参数

2020-08-15 11:44:57 107

原创 Redis imgrate迁移键 (error) ERR Target instance replied with error: NOAUTH Authentication required.

当迁移时的目标Redis设置了安全密码时,使用imgrate命令会报错:192.168.164.103:6379> migrate 192.168.164.102 6379 "" 0 1000 keys string hash list set zset(error) ERR Target instance replied with error: NOAUTH Authentication required.可以在migrate中加入auth参数来做权限校验192.168.164.103:6

2020-08-11 15:20:04 1066

原创 VMware15.5安装CentOS7

点图中标红的地方 或 点左上角的 文件 ----》 新建虚拟机选择典型,也可以选自定义,没太大区别自定义名称,存放位置磁盘大小可以修改,这里默认把磁盘拆分成多个文件,如果不需要移机的话,可以改为"将虚拟机磁盘存储为单个文件"。修改ISO镜像文件路径,可以根据主机的大小自定义内存、处理器核心数等。网络选择NAT模式,也可以选择桥接模式,具体如图所示。桥接:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上。NAT:NAT模式就是虚拟机要联.

2020-08-07 23:51:15 740 1

转载 Spring MVC

SpringMVC的执行流程一个请求匹配前端控制器 DispatcherServlet 的请求映射路径(在 web.xml中指定), WEB 容器将该请求转交给 DispatcherServlet 处理DispatcherServlet 接收到请求后, 将根据 请求信息 交给 处理器映射器 (HandlerMapping)HandlerMapping 根据用户的url请求 查找匹配该url的 Handler,并返回一个执行链DispatcherServlet 再请求 处理器适配器(Handler

2020-08-05 20:21:14 79

原创 Spring AOP

参考:https://www.w3cschool.cn/wkspring/omps1mm6.htmlhttps://www.w3cschool.cn/wkspring/k4q21mm8.htmlSpring 声明式事务用到AOP:https://www.w3cschool.cn/wkspring/jcny1mmg.htmlSpring 框架的一个关键组件是面向切面编程(AOP)框架。面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。 跨一个应用程序的多个点的功能被称为横切关注点,这些.

2020-08-05 20:10:26 86 1

原创 Spring 基于Java 的配置Bean

https://www.w3cschool.cn/wkspring/tlbk1icp.html@Configuration 和 @Bean 注解package com.tutorialspoint;import org.springframework.context.annotation.*;@Configurationpublic class HelloWorldConfig { @Bean public HelloWorld helloWorld(){ retur.

2020-08-05 18:46:20 172

原创 Spring 基于注解配置Bean

在Bean实现类中通过一些Annotation来标注Bean类:@Component:标注一个普通的Spring Bean类(可以指定Bean名称,未指定时默认为小写字母开头的类名)@Controller:标注一个控制器类@Service:标注一个业务逻辑类@Repository:标注一个DAO类通过在方法上标注@PostConstrut和PreDestroy注解指定的初始化方法和销毁方法(可以定义任意多个)。通过@Scope(“prototype”)指定Bean的作用范围。通

2020-08-05 18:41:08 107

原创 Spring 基于xml配置Bean

参考https://www.w3cschool.cn/wkspring/t7n41mm7.htmlhttps://www.w3cschool.cn/wkspring/vneb1mm9.htmlhttps://www.w3cschool.cn/wkspring/qujn1icm.htmlhttps://www.w3cschool.cn/wkspring/kp5i1ico.htmlhttps://www.w3cschool.cn/wkspring/fwdz1mmb.htmlhttps://www..

2020-08-05 17:56:47 381

原创 Spring IoC 容器

IoC控制反转是一种思想Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包

2020-08-05 16:02:11 90

原创 Spring体系结构

体系结构核心容器核心容器由spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring表达式语言,Spring Expression Language)等模块组成,它们的细节如下:spring-core模块提供了框架的基本组成部分,包括 IoC 和依赖注入功能。spring-beans 模块提供 BeanFactory,工厂模式的微妙实现,它移除了编码式单例的需要,并

2020-08-05 15:07:45 255

原创 《Redis开发与运维》---- 有序集合ZSet

元素可以排序,每个元素设置一个分数(score)作为排序的依据。集合成员(member)不能重复,但是每个元素的score可以重复命令集合内# 添加成员zadd key score member [score member ...]# Redis3.2为zadd命令添加了nx、 xx、 ch、 incr四个选项:# nx: member必须不存在, 才可以设置成功, 用于添加。# xx: member必须存在, 才可以设置成功, 用于更新。# ch: 返回此次操作后, 有序集合元素和分数

2020-08-05 14:15:52 96

原创 《Redis开发与运维》---- 集合Set

集合(set)。不允许有重复元素,无序,不能通过索引下标获取元素。一个集合最多可以存储2^32-1个元素。支持集合内的增删改查,集合的交集、并集、差集。命令集合内sadd key element [element ...] # 添加元素srem key element [element ...] # 删除元素scard key # 计算元素个数 时间复杂度O(1),不会遍历集合,取的是redis中存储的一个变量sismember key element # 判断元素是否在集合中,在集

2020-08-04 23:31:30 133

原创 《Redis开发与运维》---- 列表List

List 有序,可重复Redis中列表(list)类型是用来存储多个有序的字符串,列表中的每个字符串成为元素(element),一个列表最多可以存储2^32 - 1个元素。命令# 添加操作rpush key value [value ...] # 从右向左插入元素lpush key value [value ...] # 从左向右插入元素linsert key before|after pivot value # 向某个元素前/后插入元素,返回结果为当前列表长度# 查找lrange key

2020-08-03 23:07:31 94

原创 《Redis开发与运维》---- 哈希Hash

命令hset key field value # 设置值hget key field # 获取值hdel key field # 删除值fieldhlen key # 计算field个数hmget key field [field ...] # 批量获取值hmset key field value [field value ...] # 批量设置值hexists key field # 判断field是否存在hkeys key # 获取所有fieldhvals key # 获取

2020-08-02 22:24:50 67

原创 《Redis开发与运维》---- 字符串String

常用命令# 1、设置值set key value [ex seconds] [px milliseconds] [nx|xx]# ex seconds 为键设置秒级过期时间# px milliseconds 为键设置毫秒级过期时间# nx 键必须不存在,才可以设置成功,用于添加# xx 键必须存在,才可以设置成功,用于更新setex key seconds value # 作用同ex seconds setnx key value # 作用同nx# 2、获取值get key#

2020-08-02 19:03:40 85

原创 《Redis开发与运维》---- 预备知识

安装命令tar -zxvf redis-4.0.14.tar.gzln -s redis-4.0.14 rediscd redismake && make installredis-cli -v #查看redis版本号启动关闭redis-server --port 6379 # 启动redisredis-server /usr/local/src/redis-4.0.14/redis.conf # 配置文件方式启动 (推荐的启动方式 可以修改redis.con

2020-08-02 16:48:22 144

空空如也

空空如也

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

TA关注的人

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