SpringCache的理解与使用
前言缓存相信各位都不陌生,作为开发中非常重要的一个组件。是解决高并发与数据库压力的第一方案,目前使用最多的是redis缓存中间件。但对于一些CRUD的缓存,还是有一些人使用的是redisTemplate。开发中经常重复造车轮,以至于没有太多的时间去理解业务和逻辑。而SpringCache就出现了。只需要一行注解,几个配置,缓存的任务就完成了。我们只需要专心写逻辑就可以。使用也十分简单。本次就SpringCache结合当下最常用的redis来实践理解一下
SpringCache的注解首先是三个常用注解
@Cacheable:获取缓存,如果获取不到缓存则执行本方法 将方法的返回值缓存到redis
@CachePut:更新缓存,无论缓存是否存在,都会执行本方法,并且更新到redis
@CacheEvict:删除缓存,缓存存在则删除,不存在自然不会删
下面来看看Cacheable注解中的值
cacheNames:可以理解为缓存容器的名字,也就是缓存要放进的地方
key:理解为redis的key就可以 表示缓存名字
keyGenerator:缓存key的生成策略 后面会详细说明
cac ...
项目运行时如何拿到控制台上的日志?简单!
前言最近做项目的时候遇到一个问题,那就是程序运行的时候,怎么拿到控制台刚刚打印的日志,来做一些需求。甚至跨服务如何获取别的服务控制台打印的日志。这次我来分享一个非常简单的方法,使用目前最为常用的logback。2分钟即可搞定~
导入依赖依赖只需要导入2个logback的依赖就可以
1234567891011<!--在logback-core基础上扩展的版本--><dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId></dependency><!--logback基础模块--><dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId></dependency>
自定义A ...
评论系统上线辣!
好久不见兄弟们,最近也是好久没更新博文了,一定会补上!!!今晚把之前老想上线的Twikoo评论系统上线了(赞美开源,感谢作者~),用的是MongoDB作数据库。评论上线之后大家就可以留言了。我会在看到的第一时间内回复一起讨论。当然如果对写的地方有疑问欢迎评论区留言,我会认真对待的。
最后也入冬了,看到这篇博文的同学们,注意好保暖哦~
自己对网络的理解
网络分层OSI七层模型
七层模型的结构清晰,每一层该干什么事。降低复杂性,统一标准,模块化。
物理层:很重要的一层,最底层,就像一个地基。保证双向传输,双向通讯。
数据链路层:①提供MAC地址;②负责数据帧的转发;③提供错误检查机制(交换机会对数据进行检测,如果发现有丢失,就会通知发送方重传数据)
网络层:①提供IP地址;②连接不同的媒介类型;③根据路由器运行的不同选择最佳路径;④在选择好的路径上路由数据包
传输层:传输层提供了端口号的概念。建立端口到端口的通信
会话层:在用于程序之间建立并维护会话连接
表示层:负责数据加密。比如对称加密、非对称加密…
应用层:给用户提供一个接口,用户可以通过用于程序来使用6层模型
七层模型虽然结构清晰,但是比较复杂并且不怎么实用,运行效率偏低。于是四层模型出现了
OSI四层模型
应用层:提供两个终端设备上的应用程序信息交换的服务,定义消息交换的格式,将消息交给传输层传输
传输层:使用TCP和UDP协议对消息进行传输
网络层:给分组交换网上不同主机提供通信服务
物理层:使用物理手段将电脑等设备连接起来 比如光纤线路
TCP和UDPTCP(传输控制协 ...
记一次github22端口连接超时
今天一大早发现github的文件推不上去,错误如下,提示22端口连接超时。寻思着前几天也好好的,科学上网也开了,就是连不上。
解决办法也很简单,我们只需要将22改为443就可以
首先我们使用下面这条命令来看一下是否能连接上github
1ssh -T git@github.com
连接不上,还是超时。现在我们去.ssh文件夹下新建config文件**(注意没有后缀名)**,开始修改端口号
config文件里配置好我们的参数
123456Host github.comUser MyEmail(邮箱)Hostname ssh.github.comPreferredAuthentications publickeyIdentityFile ~/.ssh/id_rsaPort 443
再次使用命令查看是否可以连接上
1ssh -T git@github.com
问题解决
手写单例模式以及保证安全性
单例模式的几个特点
为了确保全局只有一个类的实例,所以类的构造器要私有化
单例类必须由自己创建自己的唯一实例
单例类必须给其他对象提供这一个实例
单例模式是一个最简单的设计模式,属于创建型结构。比如我们window中的任务管理器,回收站,操作系统就是一个单例的设计。也就是说我们使用的对象永远是同一个。程序中的单例大致可以分为4大类。饿汉式、懒汉式、双重锁和静态内部类。我们先来说饿汉式
饿汉式饿汉式是一个简单的写法,和名字一样。他很饿,饿的话救急着要东西。所以他会在类加载的时候就初始化。是一个线程安全的操作。但因为不是懒加载,所以不管我们用没用这个实例。他都会实例化。可能会造成一些不必要的内存。浪费内存资源。
1234567891011121314151617/** * @className: Singleton * @description: 饿汉式 * @date: 2022/08/25 * @author: Sora33 */public class Singleton { // 饿汉 private static Singleton singleton; ...
自己写了个一键搭建Redis哨兵脚本
最近在家中无聊写了一个一键搭建Redis哨兵的脚本,是基于Docker搭建的,使用非常简单。
下载地址
https://wwu.lanzout.com/ieaAu09pjrsj
安装脚本流程
先开放阿里云ICMP(Ipv4)端口,让服务器之间可以建立通信
只需要安装Docker,Docker安装跳转https://soora33.github.io/posts/2733575.html
不需要搭建主从,更不需要安装redis,脚本都会帮你完成
复制权限,直接执行,输入三个参数,哨兵搭建完成
1.哨兵介绍大家设想一下,如果我们在生产环境部署一个Redis,宕机了怎么办,一瞬间访问不到缓存的请求全部打在数据库上,数据库表示你行你上啊。很容易数据库就会崩,数据库一崩,用户数据做不了持久化,连锁反应造成了我们的服务崩溃了,所以,Redis官方在2.8版本加入了Sentinel模式,也就是哨兵机制
2.哨兵机制下面是Redis官方对哨兵的描述
监控(Monitoring):哨兵会不断地检查主节点和从节点是否运作正常自动故障转移(Automatic failover):当主节点不能正 ...
RabbitMQ消息确认机制和消息重发机制
一.机制首先我们要知道一条消息的传递过程。
生产者 -> 交换机 -> 队列
我们的生产者生产消息,生产完成的消息发送到交换机,由交换机去把这个消息转发到对应的队列上。这其中我们可能在生产者 -> 交换机丢失消息,也可能在 交换机 -> 队列上丢失消息。因此我们需要引入2个概念。
1: 生产者到交换机的可靠保证 (confirmCallback ) 确认回调机制
2: 交换机到队列的保证 (returnCallback ) 返回回调机制
二. 保证生产者到交换机的可靠传递因为我们的消息都要经过路由,然后去对应的队列,所以第一条线路至关重要。我们使用confirm机制。这个confirm机制是一个异步的,也就是说我们发送一条消息之后可以继续发送下一条消息。比自带的事务好很多。
使用confirm机制首先需要在配置文件中开启confirm机制
12345678rabbitmq: host: localhost port: 5672 virtual-host: / username: admin password: password # 开启生产者消息 ...
docker容器内部设置vim镜像
我们有时候要进入到Docker容器内部修改一些文件,vi用不了,vim更不用说了…这次主要分享下容器内部设置vim镜像,从之前的10分钟缩短到现在的1分钟。
1.首先备份一下我们之前的镜像
1cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
2.接下来,换成国内163的镜像
1sed -i 's#http://deb.debian.org#http://mirrors.163.com#g' /etc/apt/sources.list
3.使用apt-get指令,安装vim
12apt-get updateapt-get install -y vim
安装完成,就可以使用vim了,方便快速的搞定
Docker搭建Nacos高可用集群
使用三台阿里云服务器:
第一台: 47.101.102.10第二台: 47.101.102.20第三台: 47.101.102.30
1.安装dockerdocker的安装可以参考我之前的一篇博客
docker安装
2.拉取nacos镜像使用docker pull 命令拉取镜像。这里使用2.0.4版本
拉取nacos镜像docker pull nacos/nacos-server:v2.0.4查看docker镜像docker images
3.创建nacos的持久化数据库我们只使用三台服务器中其中一台的数据库就可以,这里使用第一台服务器来作为持久化数据库。直接使用可视化工具创建一个数据库,名字叫nacos_config然后运行以下SQL语句
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 ...