自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

World哥

一个程序猿的自我修养

  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 RabbitMQ可靠消息队列实现

RabbitMQ安装架构核心概念ServerConnectionExchangeBindingRouting keyQueueSpringBoot整合SpringBoot版本mvaen生产者ymlRabbitMqConfigMessageProducerConfirmCallbackReturnCallback队列消息信息常量重新投递消费者ymlMqConsumer安装基于Dokcer容器架构核心概念Server又称Broker, 接受客户端的连接,实现AMQP实体服务,这里指RabbitMQ

2020-07-04 19:09:42 477

原创 Redis两种持久化方式RDB与AOF详解

Redis两种持久化方式RDB与AOF详解WHYRDB(Redis DataBase)流程ForkRDB配置触发RDB命令触发快照配置通过RDB恢复数据RDB优点RDB缺点RDB总结AOF(Append Only File)AOF配置启动/修复/恢复正常恢复异常恢复AOF重写原理触发机制优点缺点WHICH ONE性能建议WHYRedis是内存数据库,数据都是存储在内存中的,为了避免进程退出导致数据的永久丢失,要定期将Redis中的数据以某种形式从内存保存到硬盘,当下次Reids重启时,利用持久化文件实现

2020-06-15 16:35:41 183

原创 Redis配置文件详解

Redis配置文件详解配置文件全文UNIT单位INCLUDES包含GENERAL通用daemonizepidfileprotected-modeporttcp-backlogtimeoutbindtcp-keepaliveloglevellogfilesyslog-enabledsyslog-identsyslog-facilitydatabasesSNAPSHOTTING快照save seconds changesstop-writes-on-bgsave-error yesrdbcompression

2020-06-13 15:31:53 415

原创 Docker部署mysql并实现主从复制

Docker部署mysql双主双从mysql多实例概述配置主从复制原理主从搭建节点信息主节点配置文件从节点配置文件docker启动mysql容器主节点创建用于复制操作的用户并授权查看master状态从机配置需要复制的主机启动从服务器复制功能查看从服务器状态从机停止服务mysql多实例概述1.MySql多实例是指安装MySql之后,可以再一台linux服务器上同时启动多个MySql数据库(实例),不需要安装多个MySql;2.如果是有多台Linux服务器,那么我们需要每台服务器分别安装;3.在一台L

2020-06-11 17:39:19 444

原创 使用docker搭建RabbitMQ集群

使用docker搭建RabbitMQ集群docker运行RabbitMQ容器加入RabbitMQ节点到集群添加镜像策略docker运行RabbitMQ容器docker使用参考:Docker、Docker compose实战docker run -d --hostname rabbit01 --name jt_rabbitmq01 -p 5672:5672 -p 15672:15672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -e RABBITMQ_DEFAUL

2020-06-11 16:42:22 849 1

原创 持续集成工具Jenkins实战详解

持续集成工具Jenkins项目开发效率优化自动化部署工作流程前置知识点环境搭建系统结构总述docker-compose创建并启动jenkins容器创建docker-compose.yml文件挂载数据卷配置创建并启动容器初始化解锁jenkins修改插件下载地址全局工具配置系统配置添加凭据gitlab项目构建项目开发效率优化持续部署:项目功能部署至服务器后可以运行,为下一步测试环节 或最终用户正式使用做好准备。持续集成:尽早发现项目整体运行问题,尽早解决。持续交付:研发团队的最新代码能够尽快让最终用户

2020-06-08 21:05:25 1267

原创 Docker、Docker compose实战

Docker及Docker compose使用简介Why docker架构详解三要素工作原理为什么比虚拟机快centos安装docker卸载旧版本安装所需的依赖包配置国内源(阿里云)更新yum缓存安装docker-ce配置阿里云镜像加速设置开启自启docker使用帮助命令镜像命令容器命令docker-compose安装docker-composedocker-compose.yml模板文件docker-compose常用命令简介Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应

2020-06-02 13:48:06 552

原创 Docker-compose搭建redis一主双从三哨兵

Docker-compose搭建redis一主双从三哨兵概述架构图服务器环境docker编排文件masterslaveredis主从配置启动主从容器验证redis主从添加哨兵启动哨兵验证failover(故障转移)填坑springboot连接redis哨兵集群pom添加依赖yml配置连接信息概述Redis哨兵为Redis提供了高可用性。实际上这意味着你可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置。下面是在宏观层

2020-06-01 18:09:17 670

原创 JVM(九)性能监控与调优

JVM(九)性能监控与调优背景说明为什么要调优监控的依据性能优化步骤性能监控(发现问题)性能分析(排查问题)性能调优(解决问题)性能评价/测试指标JVM命令行监控工具jps语法参数jstat语法参数jinfo语法参数jmap(JVM Memory Map)参数导出内存映像文件jhat(JVM Heap Analysis Tool)jstack(JVM Stack Trace)jcmdjstatd背景说明为什么要调优防止出现OOM解决OOM减少Full GC出现的频率监控的依据运行日志异

2021-07-20 22:10:41 492 3

原创 Nginx配置日志文件滚动

Nginx配置日志文件滚动检查服务器是否存在logrotate添加滚动策略测试定时任务nginx的日志文件会随着运行时间的增长越来越大,严重时造成服务器磁盘空间被100%占用。如果发现不及时会因为磁盘不足无法写入造成故障。若人肉定期删除又太麻烦。使用Linux自带的logrotate日志滚动+crontab 定时任务,定期执行日志滚动策略,不但可以将日志文件按日期进行滚动,还能实现过期日志文件删除,一劳永逸。检查服务器是否存在logrotate whereis logrotate添加滚动策略

2021-05-28 17:13:16 595

原创 ELK平台搭建与使用

ELK平台搭建与使用简介docker-compose.ymlkibana.ymllogstash.confnginx代理配置springboot输出日志到logstashpom.xmllogback.xml简介“ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建

2021-03-01 20:07:08 449

原创 JavaCV 通过rtsp拉流并推流到rtmp

JavaCV 通过rtsp拉流并推流到rtmp目录结构pom.xmlVideoRealPlayApplicationIndexControllerVideoDataCacheThreadPoolUtilVideoTimerVideoStreamServiceVideoDTOnginx-rtmp服务搭建目录结构pom.xml<dependency> <groupId>org.bytedeco</groupId> <artifactId>

2021-02-04 18:16:15 3531 12

原创 nginx rtmp服务器搭建

rtmp服务器搭建欢迎使用Markdown编辑器欢迎使用Markdown编辑器#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;pid logs/nginx.pid;events { worker_connections 1024;}rtmp {

2021-02-04 18:01:57 362

原创 MinIO搭建文件服务器

简介MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。Docker-composeversion: '3'services: minio: image: mini

2021-01-27 14:38:36 2635 1

原创 docker-compose 部署nacos单机/集群

nacos容器部署docker-compose.yml创建nacos目录在conf创建application.propertiesdocker-compose.ymlversion: '3'services: mysql-master: image: mysql:5.7 container_name: mysql-master restart: always privileged: true ports: - "3306:3306" en

2021-01-13 15:48:40 1167

原创 详解mysql,java,redis三种地理位置算法

- 获取附近信息,以用户当前位置为中心点,指定范围为半径,查询出在该圆圈内的所有信息。 - 计算两个位置之间的距离。

2020-10-09 15:25:16 1264

原创 JVM(九)垃圾回收器

JVM(九)垃圾回收器概述GC分类性能指标吞吐量暂停时间矛盾点不同的垃圾回收器概述Serial回收器:串行回收ParNew回收器:并行回收Paralle回收器:吞吐量优先CMS回收器:低延迟G1回收器:区域化分代式总结GC日志分析新的发展概述垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同的版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。GC分类按线程数分,可以分为串行垃圾回

2020-09-11 18:36:53 247 1

原创 Java中的引用类型

Java中的引用类型简介强引用(不回收)软引用(内存不足即回收)弱引用(发现即回收)虚引用(对象回收跟踪)简介我们希望能描述这样一类对象:当内存空间还足够时,则能保留在内存中;如果内存空间在进行垃圾手机后还是很紧张,则可以抛弃这些对象。在JDK 1.2版本之后,Java对引用的概念进行了扩充,将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)四种,强度一次逐渐减弱。除强引用

2020-09-11 14:40:34 230

原创 并行与并发

并行与并发并行与并发并发(Concurrent)并行(Parallel)对比并行与并发并发(Concurrent)在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理器上运行。并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几个时间区间之间来回切换,由于CPU处理的速度非常快,只要时间间隔处理得当,即可让用户感觉是多个应用程序同时在进行。并行(Parallel)当系统有一个以上CPU时,当一个C

2020-09-11 09:31:18 113

原创 JVM(八): 垃圾回收

JVM(八): 垃圾回收概念什么是垃圾为什么需要GC早期垃圾回收Java垃圾回收机制垃圾回收相关算法标记阶段引用计数算法可达性分析算法对象的finalization机制MAT与JProfiler的GC Roots溯源清除阶段标记-清除算法复制算法标记-压缩算法分代收集算法增量收集算法、分区算法概念什么是垃圾垃圾收集是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、特征的应用场景,对垃圾收

2020-09-10 12:01:37 153

原创 JVM(七): 执行引擎

JVM(七): 执行引擎概述编译执行过程机器码、指令、汇编语言解释器JIT编译器概述执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,区别在于物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码

2020-09-07 18:42:56 283

原创 JVM(六): Java中的对象

JVM(六): Java中的对象对象创建步骤对象内存布局对象头(Header)实例数据(Instance Data)对齐填充(Padding)JVM中对象创建过程对象访问定位对象创建步骤判断对象对应的类是否被加载、链接、初始化:虚拟机遇到new指令时,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化(即判断类元信息是否存在)。如果没有,在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名为key

2020-09-04 16:36:48 133

原创 MySql主从复制模式,在不停服的情况下解决数据不同步的问题

MySql主从复制模式,在不停服的情况下解决数据不同步的问题主从复制搭建主从不同步或从节点无法复制主库数据备份查看备份的文件备份文件传输从库清空从节点配置主从复制搭建Docker部署mysql并实现主从复制主从不同步或从节点无法复制在上一篇《Docker部署mysql并实现主从复制》的末尾,有提到两种关于Slave_SQL_Running不为yes的故障排查及恢复步骤,但是是在主节点锁库或者设置只读的情况下进行恢复,也就意味着此时数据库无法对外提供写服务。在线上生产环境并不合适。因为不锁表或者不设置

2020-08-27 15:37:17 999 2

原创 JVM(五):运行时数据区 方法区 详解

JVM(四):运行时数据区 方法区 详解栈、堆、方法区数据交互关系概念方法区的演进方法区的大小(JDK8)栈、堆、方法区数据交互关系从内存分配角度来看从线程共享与否角度来看概念《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择区进行来及收集或者进行压缩。”但对于HotSpot JVM而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开。所以,方法区看做是一块独立于Java堆的内存空间。方法区(Method Are

2020-08-25 17:45:37 602

原创 JVM(四):运行时数据区 堆 详解

JVM(四):运行时数据区 堆 详解概述设置大小内存细分年轻代与老年代对象分配过程GCMinor GCMajor GCFull GC概述一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动时即被创建,其空间大小也是确定的。是JVM管理的最大一块内存空间。堆的大小是可以调节的。《JVM虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。所有的线程共享JAVA堆,在这里还可以划分线程私有的缓存区(Thread Local Allo

2020-08-21 15:08:17 335

原创 JVM(三):本地方法接口

本地方法接口概述关键字为什么要使用Native Method现状概述一个Native Method就是一个Java调用非Java代码的接口,一个Native Method是这样一个java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,有很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。在定义一个Native method时,并不提供实现体(有些像定义一个Java interface),因为其实现体是由非java

2020-08-20 09:42:13 368

原创 记解决项目部署在CentOS中文变成?的问题

SpringBoot项目部署到生产环境后查看日志发现所有中文字符变成了???。。。。。。记录一下排错思路和解决方式,,,警钟长鸣首先想到的就是日志输出到文件时没有设置编码,造成日志内容输出时乱码,因为项目在本地idea控制台的日志是正常的。查看项目的logback-spring.xml文件中输出到文件时的encoder的charset为UTF-8,不是日志配置的问题,继续排查。。。接下来排查一下是否是系统的原因本地开发win10系统,查看本地日志文件的内容,发现本地日志文件是正常的,那就肯

2020-08-17 17:05:54 429

原创 SpringBoot整合WebSocket

SpringBoot整合WebSocket简介特点SpringBoot整合pomWebSocketConfig配置类ServerEncoder自定义编码器WebSocketServer实现类application.yml测试nginx配置客户端心跳简介WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一

2020-08-17 16:01:44 263

原创 JVM(二):运行时数据区详解

JVM(二):运行时数据区概述概述

2020-08-15 11:58:45 247

原创 JVM(一):Java虚拟机、类加载器

JVMJava虚拟机作用特点JVM位置JVM的生命周期启动执行退出JVM整体结构类加载器作用类的加载过程加载阶段链接阶段初始化新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Java虚拟机Java技术的核心就是Java

2020-08-14 22:12:39 446

原创 TOP、jstack、jmap

jstackjstack命令CPU高jstack主要是用来查看某个java进程内的线程堆栈信息命令jstack [-l] <pid> (to connect to running process) 连接活动线程jstack -F [-m] [-l] <pid> (to connect to a hung process) 连接阻塞线程jstack [-m] [-l] <executable> <core> (to conne

2020-07-09 10:44:53 334

原创 Java中的Lock详解

Java中的Lock详解简介Lock和syncronized的区别Lock接口抽象方法ReentrantLocksynchronized重入测试ReentrantLock重入测试NonReentrantLockReentrantReadWriteLock公平锁与非公平锁如何实现优缺点简介java.util.concurrent.locks.Lock 是一个类似于synchronized 块的线程同步机制。但是 Lock比 synchronized 块更加灵活。Lock是个接口,有个实现类是Reentra

2020-07-08 12:01:37 9082 3

原创 并发编程工具CountDownLatch、CyclicBarrier、Semaphore详解

并发编程工具CountDownLatch、CyclicBarrier、Semaphore详解CountDownLatchCyclicBarrierawaitawait(long timeout, TimeUnit unit)Semaphoreacquire()、release()acquire(int permits)、release(int permits)tryAcquire()tryAcquire(long timeout, TimeUnit unit)CountDownLatchCountDow

2020-07-07 18:44:53 248

原创 ThreadPoolExecutor线程池使用

ThreadPoolExecutor线程池使用简介ThreadPoolExecutor线程添加策略提交任务executesubmitinvokeAnyinvokeAllshutdownshutdownNowisShutdownisTerminatedawaitTermination简介线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。

2020-07-07 17:25:56 246

原创 SpringBoot自动配置原理

SpringBoot自动配置原理简介开箱即用SpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguration自动配置实现原理简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid ap

2020-07-05 22:02:44 586 1

原创 分布式消息队列对比

分布式消息队列对比使用场景系统解耦异步流量削峰多个分布式消息队列比较资料文档开发语言支持的协议管理界面可用性消息存储消息事务负载均衡集群方式消息重复吞吐量TPS订阅形式和消息分发顺序消息消息确认消息回溯消息重试并发度使用场景系统解耦系统间耦合性太强,上游系统需要调用下游系统的接口,如果后期继续增加其它下游系统,上游系统还需要增加调用接口的代码。将消息写入消息队列,只需要下游系统自己从队列中订阅,而上游系统不需要做任何修改。异步非强一致的业务逻辑(允许数据延迟,最终达到一致即可),如果上游系统调用多

2020-07-04 13:04:30 375

原创 Sharding-JDBC多数据源配置并实现读写分离

Sharding-JDBC多数据源配置并实现读写分离官方简介hikari数据源pom.xmlapplication.ymldruid数据源pom.xml官方简介官方文档定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。适用于任何基于JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接

2020-06-17 19:10:58 3266

原创 centos磁盘分区与挂载

Centos磁盘分区与挂载查看该设备未挂载的磁盘(如/dev/sdb)对该磁盘进行分区格式化磁盘挂载磁盘至指定目录查询是否挂载成功设置开机自动挂载重启服务器查看该设备未挂载的磁盘(如/dev/sdb)[root@localhost ~]# parted -lModel: VMware Virtual disk (scsi)Disk /dev/sda: 107GBSector size (logical/physical): 512B/512BPartition Table: msdosDis

2020-06-11 16:32:51 323 2

原创 Docker将Springboot项目打包为镜像一

Docker将Springboot项目打包为镜像一DockerfileDockerfile中使用的命令编写自己项目的Dcokerfile创建镜像Dockerfile官网描述镜像信息的文本文件,其内容包含四个部分:基础镜像信息、发布者信息、镜像操作指令和容器启动时执行的指令。Dockerfile中使用的命令FROMFROM指定一个基础镜像, 一般情况下一个可用的 Dockerfile一...

2019-12-25 16:37:02 635

原创 Docker for windows安装Elasticsearch

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-11-20 10:08:35 989

harbor-offline-installer-v2.1.5.tgz

harbor 离线安装包,linux

2021-05-10

docker-compose-Linux-v1.25.5.rar

下载后解压rar,将内部的docker-compose-Linux-x86_64上传到服务器指定目录。 重命名:mv docker-compose-Linux-x86_64 docker-compose 授予可执行权限:chmod +x docker-compose 查看版本,验证安装成功:docker-compose -v

2020-06-02

空空如也

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

TA关注的人

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