自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker部署Nginx

事先准备nginx配置文件,nginx.conf以及default.conf(conf.d目录下)将Nginx的映射文件都放在。命令查看容器是否已启动。命令查看容器启动日志。

2023-10-27 10:25:07 120 1

原创 Docker部署Redis

将Redis的映射文件都放在。命令查看容器是否已启动。命令查看容器启动日志。

2023-10-27 09:32:31 132

原创 本地环境使用Arthas排查Java程序接口性能问题(Windows)

Arthas命令太多太复杂,每次用的时候去找会比较麻烦,这里推荐一个插件,可以帮助我们快速生成命令,下面还是以Trace命令为例插件 arthas idea使用的话也很简单,直接在方法名上右键,选择Arthas Command,选择我们需要的Trace命令然后去终端上直接粘贴就可以用了。

2023-10-26 10:37:12 706

原创 Docker Compose部署Spring Cloud微服务项目

之所以采取只暴露一个网关端口的方法是为了模拟内网隔离,也就是说业务服务不暴露在公网,所有服务都需要走网关访问使用docker-compose只是为了部署简化,不用docker-compose只用docker run也是能达到同样效果的是否可以用 spring navtive + graalvm 简化上述步骤还在研究中,目前实践下来发现,spring navtive + graalvm 似乎没有什么优势。

2023-10-24 16:33:46 384 5

原创 Nats集群部署

在每个节点上下载并按照nats,可以在以下位置找到各个版本的nats-server:https://github.com/nats-io/nats-server/releases/下载的版本为:v2.9.21也可以用curl命令下载然后解压到/opt/目录下解压后的文件。

2023-08-28 14:22:56 977

原创 服务器之间的文件挂载(Linux、Windows)

文件挂载,是指加载文件系统到指定的加载点,比如:将服务器A上的某个目录与服务器B上的指定路径进行映射,使服务器B通过访问指定路径就能获取到服务器A上的目录详情,此时,A服务器被称为服务端,B服务器被称为客户端;A服务器上被映射的目录被成为挂载源,B服务器上的指定路径被称为挂载点。

2023-08-11 16:56:34 4507

原创 SpringBoot中的@EnableXXX注解是如何生效的?

为了了解@EnableXXX注解的实现原理,我们需要深入到@EnableXXX注解里面,可以看到里面一般都有一个@Import注解,而@Import注解的作用就是导入类,一般是一个配置类,而配置类中的bean就将交由Spring容器进行管理,于是在其他地方就可以注入这些bean来完成我们的扩展功能了。简而言之,@EnableXXX可以通俗的理解为开关,它开启了某项功能,而本质上就是导入了一些bean。这里做一个简单的讲解。下面以@EnableScheduling为例,看一下其内部的一些构造,首先是启动类。

2023-08-11 16:20:19 201

原创 Docker部署MySQL

将MySQL的映射文件都放在。命令查看容器是否已启动。命令查看容器启动日志。

2022-05-07 14:53:24 766 1

原创 23种设计模式之——单例模式

1、概述有什么作用?保证一个类只有一个实例,并提供一个访问它的全局访问点实现原理?将构造函数私有化定义一个静态的该类型的变量提供一个方法来构造、获取该变量特点单例类只能有一个实例单例类必须自己创建自己的唯一实例单例类必须提供给其他对象这一实例2、代码饿汉式public class SingleDemo { private static SingleDemo singleDemo = new SinlgeDemo; private SingleDemo(){

2021-10-17 16:51:01 74

原创 SpringBoot底层原理——自动装配

2.1、引导加载自动配置类MainApplication:启动类@SpringBootApplicationpublic class MainApplication@SpringBootApplication:是一个合成组件@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExclud

2021-10-17 16:46:37 245

原创 SpringBoot底层原理——底层注解

本篇博客主要是介绍SpringBoot与底层源码相关的一些注解,只探究其作用,不做底层分析,本篇博客的目的是为之后SpringBoot源码分析做基础,当然其中相当一部分注解在平时使用SpringBoot的时候也经常会用到,这里就作为一个简单的复习。1、底层注解1.1、@Configuration有什么用?告诉SpringBoot,这是一个配置类,等同于配置文件配置类本身也是组件属性@Configuration(proxyBeanMethods = true):如果为true,表示容器中的对

2021-10-16 17:43:06 519

原创 23种设计模式之——工厂模式

一、工厂模式1、概述有什么作用?创建者和调用者分离,也就是说,调用者只需要调用就可以获取到这个对象,而不需要自己创建实现原理本质上是我们不用new关键字来创建对象了,而是用一个工厂类,通过调用里面的特定的方法来创建对象分类简单工厂模式工厂方法模式抽象工厂模式实现的OOP七大原则开闭原则:对扩展开放,对修改关闭依赖倒转原则:要面向接口编程,不要面向实现编程迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话优点实现调用者与实现类的解耦,调用者只需要拿到这个对象,而不需要

2021-10-16 15:11:36 75

原创 HashMap源码分析(JDK1.7)

HashMap的底层结构JDK7:Entry数组+链表JDK8:Node数组+链表+红黑树本文只讨论JDK1.7的HashMap,JDK1.8的HashMap将在另一篇文章中讨论源码分析重要属性// 默认初始化数组长度-16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 默认最大数组长度-2^30static final int MAXIMUM_CAPACITY = 1 << 30;// 默认负载因子

2021-10-06 15:27:07 122

原创 Redis学习笔记——Redis的应用问题(缓存穿透、缓存击穿、缓存雪崩、分布式锁)

1 缓存穿透问题描述key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会压到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库解决方案一个一定不存在缓存及查询不到的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。对空值缓存:如果一个查询返回的数据为空(不管是数据是否不存在),

2021-10-05 11:00:05 122

原创 JVM的各种垃圾收集器详解(CMS、G1)

我们可以把垃圾回收器分为3类串行、吞吐量优先、响应时间优先其中,串行是单线程,吞吐量优先和响应时间优先是多线程本文重点讨论的是分代收集器,ZGC会另外做一个文章专门讲解1 串行(单线程)Serial收集器(复制算法)——新生代Serial Old收集器(标记-整理算法)——老年代单线程对内存较小,适合个人电脑采用复制算法-新生代,标记整理算法-老年代-XX:+UseSerialGC=Serial+SerialOld——开启串行GC回收过程安全点:GC时,所有用户线程都会

2021-10-04 15:44:33 501

原创 ThreadLocal的使用及原理(源码解析)

1、ThreadLocal介绍ThreadLocal能做什么?提供线程内的局部变量,不同线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度总结1. 线程并发:在多线程并发的场景下2. 传递数据:我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量,类似于JavaWeb中的域对象3. 线程隔离:每个线程的变量都是独立的,不会互相影响ThreadLocal的基本使用常用方法方法声明描述Thre

2021-10-03 20:15:47 191

原创 MySQL优化——开启慢查询日志

为什么要使用慢查询日志?在项目中,我们经常会对MySQL进行一些优化,比如增加索引、调整sql语句、设置参数等等。但是在进行优化之前,我们首先要明白哪些地方需要进行优化,也就是分析sql语句。分析的方式有很多,比如explain、性能监控、慢查询日志等等,今天这篇文章主要围绕慢查询日志展开。所谓慢查询,就指执行得很慢的sql语句,一般情况下我们只讨论select的情况。但是,我们怎么才能知道一条sql语句执行的快慢呢?其实,在我们执行sql语句的时候,它就会返回执行时间:但是,在实际生产环境中,

2021-09-24 14:17:32 156

原创 Redis学习笔记——用Java来操作Redis

1、Java与Redis——Jedis1.1 导入jar包<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version></dependency>1.2 注意事项禁用Linux的防火墙:Linux(CentOS7)里执行命令systemc

2021-09-23 08:32:29 117

原创 Redis学习笔记——Jedis常用API

Jedis常用API1、Jedis-API: Keyjedis.set("k1", "v1");jedis.set("k2", "v2");jedis.set("k3", "v3");Set<String> keys = jedis.keys("*");System.out.println(keys.size());for (String key : keys) { System.out.println(key);}System.out.println(jedis.ex

2021-09-23 08:31:36 180

原创 Redis学习笔记——Redis的发布和订阅

1 什么是发布和订阅Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。2 Redis的发布和订阅[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dHH0G6pl-1632301358277)(Redis.assets/image-20210906222430063.png)]3 发布订阅命令行实现打开一个客户端订阅 channel1[外链图片转存失

2021-09-22 19:28:19 110

原创 Redis学习笔记——Redis配置文件介绍

1 ###Units###单位配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit大小写不敏感2 ###INCLUDES###包含类似jsp中的include,多实例的情况可以把公用的配置文件提取出来3 ###NETWORK###网络相关配置bind,默认为bind=127.0.0.1 只接受本机的访问请求,不写则无限制接受任意ip地址的访问protected-mode,如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Re

2021-09-22 17:00:54 65

原创 Redis学习笔记——常用五大数据类型及其指令

字符串String、列表List、集合Set、哈希Hash、有序集合Zset1、Redis键(key)keys * 查看当前库所有key (匹配:keys *1)exists key 判断某个key是否存在type key 查看你的key是什么类型del key 删除指定的key数据unlink key 根据value选择非阻塞删除仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作expire key 10 为给定的key设置过期时间10s

2021-09-22 08:57:02 94

原创 Redis学习笔记——概述、安装、初体验

1、NoSQL数据库简介2、Redis初体验2.1、安装Redis去官网(https://redis.io/)下载最新版的redis(只有Linux环境下的redis)准备工作测试Linux里是否有gcc编译器gcc --version若没有,则安装gccyum install gcc有gcc的结果为:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NkW19XVi-1631931248306)(Redis.assets/img1.png)]

2021-09-22 08:28:44 61

原创 Docker学习笔记——DockerFile

dockerfile 是用来构建docker镜像的文件,它的本质是命令参数脚本构建步骤:编写一个dockerfile文件docker build 构建成一个镜像docker run 运行镜像docker push 发布镜像(Docker Hub、阿里云镜像仓库)1、DockerFile构建过程基础知识每个保留关键字(指令)都必须是大写执行从上到下# 表示注释每个指令都会创建提交一个新的镜像层,并提交DockerFile是面向开发的,我们以后发布项目,做镜像,

2021-09-21 10:31:37 155

原创 RabbitMQ之——写一个Demo(二)

初学RabbitMQ,先简单的写一个Demo,来感受一下RabbitMQ的工作流程。

2021-09-21 10:14:26 78

原创 RabbitMQ之——消息队列(MQ)概述(一)

消息队列(MQ),简单来说就是由“消息”组成的队列,本质就是个队列,遵循FIFO先进先出原则。同时它还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker。

2021-09-19 10:16:20 326

原创 Docker学习笔记——容器数据卷

1、什么是容器数据卷?docker的理念回顾将应用和环境打包成一个镜像引出问题数据也打包的话,容器删了,数据不久没了吗?解决容器之间有一个数据共享技术,Docker容器中产生的数据,可以同步到本地,这就是卷技术,目录的挂载,将我们容器内的目录,挂载到Linux上面也就是说:容器里的数据可以进行持久化和同步操作,并且容器间也是可以数据共享的2、使用数据卷方式一:直接使用命令来挂载 -v# 命令docker run -it -v 主机目录:容器目录 容器名 /bin/bash#

2021-09-19 09:35:19 161

原创 Docker学习笔记——Docker镜像讲解

什么是docker镜像???

2021-09-18 10:12:14 155

原创 Docker学习笔记——Docker的常用命令

1、帮助命令docker version # 显示版本信息docker info # 显示系统信息docker 命令 --help # 万能命令帮助文档地址:https://docs.docker.com/reference/2、镜像命令docker images 查看所有本地的主机上的镜像# 命令docker images [参数]# 测试[root@minami ~]# docker imagesREPOSITORY TAG IMAGE ID

2021-09-15 20:24:22 848

空空如也

空空如也

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

TA关注的人

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