自定义博客皮肤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)
  • 资源 (2)
  • 收藏
  • 关注

原创 JVM前世今生之JVM内存模型

JVM内存模型所指的是JVM运行时区域,该区域分为两大块堆内存、方法区,即所有线程都能访问该区域,随着虚拟机和GC创建和销毁虚拟机栈、本地方法栈、程序计数器,即每个线程都有自己独立的区域,该区域随着线程的生命周期创建和销毁。

2023-08-19 22:31:42 959

原创 JVM的前世今生之类加载过程

VM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。它可以实现跨操作系统运行,即一处编译到处运行。下图是JVM的运行过程。

2023-08-19 22:31:19 211

原创 SpringCloud Stream集成rabbitMQ(延时队列)

上节咱们讲了SpringCloud Stream集成rabbitMQ,本章节咱们将实现延时队列功能。在实际开发中我们有些场景用延时队列实现非常方便。下面列举延时队列适合使用的场景:用户下单30分钟后未付款自动关闭订单 用户下单外卖以后,距离超时时间还有 10 分钟时提醒外卖小哥即将超时 邮箱编辑好邮件定时发送等等上节已经讲过SpringCloud Stream集成rabbitMQ步骤,下面就不在重复赘述了,不明白的同学可以去看上节的内容。1.主要的变化是配置文件spring: app

2022-04-08 16:05:12 4770 1

原创 SpringCloud Stream集成rabbitMQ(函数式集成,全网仅此一篇)

1.引入依赖implementation 'org.springframework.cloud:spring-cloud-stream'implementation 'org.springframework.cloud:spring-cloud-starter-stream-rabbit'2.创建yaml配置文件spring: application: name: rabbitmq-dome cloud: function: definition: so

2022-04-08 16:03:45 3165 2

原创 CompletableFuture使用详解(全网看这一篇就行)

CompletableFuture是jdk8的新特性。CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步会点、流式处理、多个Future组合处理的能力,使Java在处理多任务的协同工作时更加顺畅便利。1. supplyAsyncsupplyAsync是带有返回值的异步任务。它有如下两个方法,有一个是带有线程池的重载方法// 带返回值异步请求,默认线程池public static <U> Completa

2022-04-02 14:45:24 69533 24

原创 springboot集成Caffeine实现本地缓存(自定义过期时间)

目录1.导入依赖2.配置yaml文件3.创建CacheConfig类4.创建UserDTO和AdminUserDTO5.创建UserController类6.测试结果7.总结1.导入依赖 implementation 'com.github.ben-manes.caffeine:caffeine:3.0.6' implementation 'org.springframework.boot:spring-boot-starter-cache' .

2022-03-31 14:18:24 6789

原创 EhCache、GuavaCache和Caffeine之间的性能

Guava CacheGoogle Guava工具包是一个非常方便易用的本地化缓存实现,基于LRU算法实现,支持多种缓存过期策略。Guava在每次访问缓存的时候判断cache数据是否过期,如果过期,这时才将其删除,并没有另起一个线程专门来删除过期数据。内部维护了2个队列accessQueue和writeQueue来记录缓存中数据访问和写入的顺序。访问缓存时,先用key计算出hash,从而找出所在的segment,然后再在segment中寻找具体数据,类似于使用ConcurrentHashMap数据结构来

2022-03-31 14:17:57 2699

原创 解决监听redis key过期事件出现ERR unknown command `CONFIG`, with args beginning with: `GET`, `notify-keyspace-e

监听redis key过期事件出现ERR unknown command `CONFIG`, with args beginning with: `GET`, `notify-keyspace-events`这个错误,主要是因为redis配置禁用了CONFIG命令,一些云服务出于安全考虑都会禁用CONFIG命令。解决办法有两种,一种就是改配置,一种是基于代码层面解决。方案一:改redis配置文件注释掉rename-command CONFIG ""方案二:代码层面只要设置keys

2022-03-26 14:42:53 11963

原创 SpringBoot集成Minio搭建自己的分布式文件服务器(Minio集成篇)

1.导入依赖implementation 'io.minio:minio:8.2.2'2.创建spring boot工程,工程名为springboot-minio3.配置minio配置文件minio: endpoint: http://10.0.1.140:9002 accessKey: minio secretKey: minio123 bucketName: test4.创建配置类MinioConfigpackage com.springboot....

2022-03-03 10:09:05 3299

原创 SpringBoot集成Minio搭建自己的分布式文件服务器(Minio安装篇)

1.创建挂载目录mkdir /usr/local/minio/datamkdir /usr/local/minio/config2.查询镜像docker search minio3.拉取镜像docker pull minio/minio4.启动容器docker run -d -p 9002:9000 --name minio \-e "MINIO_ACCESS_KEY=minio" \-e "MINIO_SECRET_KEY=minio123" \-v /

2022-03-03 10:07:57 678

原创 一文带你认识redis的缓存穿透、缓存击穿、缓存雪崩以及解决方案

目录1.前言2.缓存穿透3.缓存击穿4.缓存雪崩1.前言在一些高并发场景的项目中,用户的请求是我们底层数据库往往扛不住的,例如淘宝双十一用户抢购商品,这样的大数据、高并发场景使用单一的数据库是很可能造成服务请求过慢,严重的会直接导致服务器宕机。为了解决这些问题,项目中通常会引入缓存技术。缓存技术是将数据缓存到内存中,减少服务与数据库的IO操作。本文介绍的redis缓存技术,但是使用到了缓存,我们将会面临三种问题:缓存穿透、缓存击穿、缓存雪崩。下面主要介绍这个三种问题产生的场景以及解决

2022-02-28 16:30:45 876 2

原创 redis之监听redis key过期事件

1.创建springboot工程2.导入redis依赖implementation 'org.springframework.boot:spring-boot-starter-data-redis'3.创建RedisListenerConfig配置类/** * @author zsx */@Configurationpublic class RedisListenerConfig { @Bean RedisMessageListenerContainer c

2022-02-28 16:29:55 1892

原创 nginx之负载均衡

nginx负载均衡全网只需要看一篇就够了

2022-01-23 09:25:23 262

原创 nginx之反向代理

一文带你搞清楚nginx的反向代理,无需看其他的文章

2022-01-23 09:23:44 3701

原创 nginx之配置文件niginx.conf(全网看这一篇就行)

一文带你了解nginx的配置信息

2022-01-20 10:14:13 643 2

原创 nginx之安装过程

1.安装makeyum -y install gcc automake autoconf libtool make2.安装gccyum install gcc gcc-c++3.安装PCRE库https://ftp.pcre.org/pub/pcre/下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:cd /usr/local/src/wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.4.

2022-01-20 10:13:47 196

转载 阿里云Redis开发规范

一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:idugc:video:1(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mid}。(3)【强制】:不要包含特殊字符反例:包含空格、换行、单双引号以及其他转义字符详细解析2.

2022-01-14 08:55:01 93

原创 Redis之redis-cluster集群

1.哨兵模式的缺陷在哨兵模式中,仍然只有一个Master节点。当并发写请求较大时,哨兵模式并不能缓解写压力。2.Redis-cluster集群概念(1)由多个Redis服务器组成的分布式网络服务集群;(2)集群之中有多个Master主节点,每一个主节点都可读可写;(3)节点之间会互相通信,两两相连;(4)Redis集群无中心节点。3.集群节点复制在Redis-Cluster集群中,可以给每一个主节点添加从节点,主节点和从节点直接遵循主从模型的特性。当用户需要处理更多读请求

2022-01-14 08:53:51 1664

原创 Redis集群之哨兵模式

1.主从模式的缺陷当主节点宕机了,整个集群就没有可写的节点了。2.哨兵的做用Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic fail

2022-01-07 10:18:39 546

原创 Redis集群之主从复制模式

1.概念主从复制模型中,有多个redis节点。其中,有且仅有一个为主节点Master。从节点Slave可以有多个。只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步。2.特点主节点Master可读、可写. 从节点Slave只读。(read-only)因此,主从模型可以提高读的能力,在一定程度上缓解了写的能力。因为能写仍然只有Master节点一个,可以将读的操作全部移交到从节点上,变相提高了写能力。3.环境准备准备3个redis服务,一主两从主节点

2022-01-04 10:59:34 1060

原创 全网最详细的Redis配置文件详解(下)

全网最详细的Redis配置文件详解

2021-12-30 09:58:56 703

原创 全网最详细的Redis配置文件详解(上)

全网最详细的Redis配置文件详解

2021-12-30 09:57:43 1325

原创 Redis之基础数据类型

1.字符串类型(String)set [key] [value] 插入一个kv键值对get [key] 获取key对应的value值del [key] 删除key对应的kv键值对append [key] [value] 在key的value后面追加值strlen [key] 查询key对应的value长度incr [key] 使key对应的value值递增加1,前提使value必须使数字decr [key] 使key对应的value值递减1,前提使value必须使数字

2021-04-23 16:12:10 76

原创 Redis之安装过程

1.安装redis$ wget https://download.redis.io/releases/redis-6.2.1.tar.gz$ tar -zxvf redis-6.2.1.tar.gz$ cd redis-6.2.1$ make && make install启动redis后台启动./bin/redis-server& ./redis.conf显示启动./bin/redis-server ./redis.conf2.redis基础

2021-04-23 16:09:17 56

原创 目前为止MySQL8.0最全面的安装教程,没有之一

下载MySQL下载地址:https://dev.mysql.com/downloads/mysql/选择安装的操作系统,我们这选择windows选择正式版本然后会跳到登录页面,我们这时候选择下面的不登录下载 2. 安装MySQL下载完成后解压出文件如下通过dos系统进入解压MySQL安装目录的 bin 目录下执行命令:mysqld --initialize --console执行完成后,会打印 root 用户的初始默认密码,比如:root@loca.

2021-02-02 17:06:48 2332

原创 小程序WXML之引用

引用WXML提供两种文件引用方式import和include。importimport可以在该文件中使用目标文件定义的template,如:在item.wxml中定义了一个叫item的template:template name="item"> text>{{text}}text>template>在index.wxml中引用了item.wxml,就可以使用it

2016-10-21 14:09:43 1859 2

原创 小程序WXML之事件

什么是事件事件是视图层到逻辑层的通讯方式。 事件可以将用户的行为反馈到逻辑层进行处理。 事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。 事件对象可以携带额外信息,如id, dataset, touches。

2016-10-21 12:02:10 1545 1

原创 小程序WXML之模板

WXML提供一种比较特殊的标签模板(template),可以在模板中定义代码片段,然后在不同的地方调用。这个有点类似C和java里面的函数方法。定义模板我们怎样去定义一个模板呢?模板的标签是,使用name属性,作为模板的名字。然后在内定义代码片段,如:<!-- index: int msg: string time: string-->template na

2016-10-19 17:02:53 4057

原创 微信小程序WXML之列表渲染

这一章节我们来学习一下我们在程序中另一个重要的语法结构循环结构,在java或C中是用for关键字的,在微信小程序中也是for关键字,但是不同的是语法结构有点不同,下面我们介绍一下。wx:for在组件上使用wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为item下面我们来分析一下一个实

2016-10-19 11:23:29 17466

原创 小程序WXML之条件渲染

wx:if在MINA中,用来判断是否需要渲染该代码块,这个和java、C中if条件判断是一样的,语法格式:wx:if="{{condition}}",双重大括号中是条件表达式除了wx:if还可以用wx:elif和wx:else来添加一个else块,我们来看一个实例:1.test.wxml文件2.test.js文件3.运行结果大家可以去更换条件表达式的

2016-10-14 16:55:24 21579

原创 小程序WXML之数据绑定

WXML(WeiXin Markup Language)是MINA设计的一套标签语言,结合基础组件,事件系统,可以构建出页面的结构。简单的说就是微信团队自己设计出来一种xml标签语言,在小程序中扩展名为*.wxml,主要有数据绑定、列表渲染、条件渲染、模板、事件、引用功能。数据绑定语法结构:数据绑定使用"Mustache"语法(双大括号)将变量包起来。例如:{{ message }}下

2016-10-13 11:16:41 8285

原创 微信小程序页面生命周期解说

生命周期这个词在程序里面是很常见的一个词。像java web中servlet生命周期,Android中activity生命周期一样,微信小程序也有自己的生命周期。我们开始创建项目时,创建一个.js文件,输入page时,小程序会附带的显示出page的生命周期,如图:1.data属性是用来初始化页面数据的;2.onLoad函数是生命周期函数,也是生命周期的开始;3.onReady函

2016-10-09 10:19:29 430

原创 微信小程序环境搭建

微信小程开发工具的下载破解以及使用方法。

2016-10-08 10:54:42 1952

springboot集成minio完成自己的分布式文件系统

springboot集成minio完成自己的分布式文件系统,在也不需要付费的了

2022-02-28

监听redis过期key,做对应业务处理

1.springboot集成redis,并监听redis过期key做相应的业务处理

2022-02-25

空空如也

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

TA关注的人

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