(20)线程池、分布式、Docker、Nginx、MQ:入门
文章平均质量分 84
线程池,ThreadLocal,分布式基础,Docker应用,Nginx,消息队列RabbitMQ;
小懒羊爱吃草
小枯林
展开
-
RabbitMQ入门6:Spring Boot整合RabbitMQ;(入门级演示)
说明:(1)一:创建两个Spring Boot项目,分别充当Producer和Consumer;关于Spring Boot项目的创建,可以参考【Spring Boot入门三:创建Spring Boot项目;(包括【Spring 官网start.spring.io】方式,【IDEA集成的Spring Initializr】方式)】或者【Spring Boot电商项目8:数据库设计与项目初始化三:创建Spring Boot项目;】;1.创建【spring-boot-rabbitmq-pro原创 2022-05-11 18:17:06 · 659 阅读 · 2 评论 -
RabbitMQ入门5:交换机类型;(fanout模式,direct模式,topic模式,headers模式;)
零:RabbitMQ的交换机,在前面粗浅的介绍过: ● 在【RabbitMQ入门1:RabbitMQ简介;(消息队列简介;RabbitMQ简介;)】中,简单介绍了交换机的概念;(1)Producer生产者: ● 自然,在实际项目中,生产者的数量是不受限制的,一个也可以,多个也可以; ● 生产者会生产Message消息;(2)Message消息: ● 消息会经过Exchange交换机,到达Qu...原创 2022-05-10 22:09:56 · 2005 阅读 · 0 评论 -
RabbitMQ入门4:生产者、消费者演示;多个消费者平均压力、公平派遣;
说明:(1)内容说明:这儿我们会创建一个项目,演示RabbitMQ最基础的内容;通过,这个最简单的例子,先了解:如何使用RabbitMQ,如何连接RabbitMQ,如何发送消息,如何接收消息等最最基础的内容;一:第一个生产者和消费者;0.创建一个maven项目rabbitmq,演示用;RabbitMQ支持多语言,其中就包括Java;同时,RabbitMQ的API丰富,我们可以利用RabbitMQ针对Java提供的客户端的一系列API,来完成操作;1.引入R..原创 2022-04-25 09:35:56 · 4234 阅读 · 0 评论 -
RabbitMQ入门3:RabbitMQ管理后台,简介;
说明:(1)本篇博客的内容:简单介绍RabbitMQ的管理后台;目录1.使用【rabbitmq-plugins enable rabbitmq_management】,启动RabbitMQ的管理后台;2.使用【rabbitmqctl add_user admin password】,添加一个名为admin、密码为“password”的用户;3.然后,使用【rabbitmqctl set_user_tags admin administrator】 ,把名为admin的用户,设为管理员.原创 2022-04-23 20:01:52 · 8088 阅读 · 0 评论 -
RabbitMQ入门2:在Linux(CentOS 7)上安装RabbitMQ(3.8.2);
说明:(1)说明:(1)这儿,为了演示安装RabbitMQ,创建了一个新的虚拟机,然后部署了一个CentOS 7.6的实例;(2)官方安装指南:【https://www.rabbitmq.com/install-rpm.html】;我们将要安装的RabbitMQ的版本是3.8.2【https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.2-1.el7.noarc原创 2022-04-23 19:55:38 · 3128 阅读 · 0 评论 -
RabbitMQ入门1:RabbitMQ简介;(消息队列简介;RabbitMQ简介;)
说明:(1)零:RabbitMQ入门部分,内容概述;(1)RabbitMQ简介; ●什么是消息队列;消息队列的好处; ●RabbitMQ的特点和核心组件和概念;(2)RabbitMQ(在CentOS 7上的)的安装、启动; ● RabbitMQ不推荐在Windows下安装; ● 之所以要介绍RabbitMQ的启动,这是因为RabbitMQ有个管理后台,我们在启动完RabbitMQ之后,要启动...原创 2022-04-23 09:26:16 · 476 阅读 · 0 评论 -
Nginx入门5:搭建静态资源服务器;(入门级演示,没多少内容;)
说明:(1)简单演示一下搭建Nginx静态资源服务区;(2)声明:Nginx的内容,虽然不是很多;但是,目前这儿介绍的内容,仅仅是Nginx的一点皮毛;后续还有很多Nginx相关的内容需要去系统的了解;目录(1)准备自己,将要部署的静态文件;(2)在default.conf文件中,root指定【/usr/share/nginx/html】的【/usr/share/nginx】目录下,创建html2目录;同时利用scp命令,把静态文件上传到html2目录下;(3)然后,配置ngin.原创 2022-04-22 12:30:47 · 3573 阅读 · 0 评论 -
Nginx入门4:Nginx配置文件,简介;
说明:(1)Nginx配置文件,简单介绍;说明:nginx的配置文件,是比较重要的;我们在使用nginx的时候,之所以使用起来比较简单,主要是因为Nginx已经帮我们做了很多的工作;我们主要要做的就是,对nginx根据自己的需要进行一些配置;使用【nginx -t】可以看到,nginx的配置文件是【/etc/nginx/nginx.conf】 ;然后,我们进入nginx.conf配置文件,所在的【/etc/nginx/】 目录;然后,我们去查看nginx.con.原创 2022-04-22 11:21:28 · 9353 阅读 · 0 评论 -
Nginx入门3:Nginx常用命令;(启动nginx;启动时,指定配置文件;测试配置文件,查看当前使用的哪个配置文件;显示nginx版本;停止nginx;修改配置文件后,重载配置文件;)
说明:(1)本篇博客介绍nginx常用的一些命令;目录一:启动Nginx:【/usr/sbin/nginx】;1.使用【/usr/sbin/nginx】去启动Nginx;2.可以通过浏览器去访问;(1)首先,Nginx的端口是80,我们在CentOS上启动Nginx后,要想能够访问,需要放开80端口;(2)然后,访问自己Windows系统中,通过虚拟机部署的这个Linux实例;二:查看nginx帮助相关的内容:【nginx -h】;三:启动的时候,使用自己指定的配...原创 2022-04-22 09:39:31 · 5314 阅读 · 0 评论 -
Nginx入门2:在Linux(CentOS 7)上,安装Nginx;
说明:(1)本篇博客比较简单,就是在Linux(CentOS 7)上,安装Nginx;目录一:在Linux(CentOS 7)上,安装Nginx;1.首先,执行【sudo yum install yum-utils】命令;安装yum-utils;2.然后,使用【vim /etc/yum.repos.d/nginx.repo】,在/etc/yum.repos.d/目录下创建nginx.repo,添加Nginx的yum源;3.然后,使用【yum list | grep nginx】,.原创 2022-04-22 07:40:19 · 337 阅读 · 0 评论 -
Nginx入门1:Nginx简介;(使用场景;优点;)
说明:(1)本篇博客简单介绍Nginx是什么,使用场景,有什么有点;目录1.Nginx官网;2.Nginx适用场景;(1)Nginx主要适用场景1:反向代理服务器;(2)Nginx主要适用场景2:静态资源服务器(即动态、静态资源分离);3.Nginx优点;Nginx虽然是个老技术,但是其真正流行起来也没有很旧;(PS:Nginx诞生在俄罗斯)1.Nginx官网;可以进入Nginx官网【nginx.org】2.Nginx适用场景;Ng...原创 2022-04-22 07:07:43 · 640 阅读 · 0 评论 -
Docker入门3:【从仓库中拉取镜像,启动为容器】;【以后台运行的方式,启动docker容器】;【在外部访问docker容器中的程序】;【利用Dockerfile,制作自己的镜像】;(入门级介绍)
说明:(1)一:以为ubuntu为例,生成第一个docker容器;1.【docker -help】命令:查看docker有哪些常用的命令;2.【docker -search redis】命令:查看docker有没有提供redis相关的镜像;使用【docker search redis】去看下,有没有redis相关的镜像;再比如,使用【docker search eureka】去看下,有没有eureka相关的镜像;一般来说,对于一些常用软件,doc...原创 2022-04-21 18:39:09 · 4637 阅读 · 1 评论 -
Docker入门2:在Linux(CentOS 7)中,安装docker;
说明:(1)本案例中,Linux版本是CentOS 7;Docker本身是在Linux上开发出来的,所以在Linux上运行docker会更加的原生、更加的稳定;原创 2022-04-19 22:00:08 · 2408 阅读 · 0 评论 -
Docker入门1:Docker简介;(简单介绍Docker是什么;镜像、容器、仓库是什么;)
说明:(1)本篇博客的内容:Docker的一些入门性介绍;目录1.Dcoker是什么?2.为什么需要Docker;3.Docker的用途;4.Docker的特点;5.Docker架构;1.Dcoker是什么?进入docker的官网:【Home - Docker】;可以查看docker的一些信息;容器:比如在Linux操作系统上,启动一个docker打的镜像,就可以得到一个容器;(1)容器是一个标准的软件单元,其打包了代码以及对应的依赖;(比如re.原创 2022-04-18 08:49:31 · 1170 阅读 · 0 评论 -
分布式基础1:分布式概念性内容简述;(什么是分布式;分布式和单体结构的对比;CAP定理;集群、分布式、微服务的区别;)
说明:(1)对分布式的基本内容,进行一个入门级介绍;(2)该篇博客参考的文章有: ● 【分布式与集群的区别是什么?】专栏中的一条回答,答主是【大闲人柴毛毛】;目录1.什么是分布式;2.分布式的作用;3.分布式和单体结构的对比;4.CAP定理;5.集群、分布式、微服务的差别;1.什么是分布式;(1)分布式这个概念是比较新的,发展时间也不长,而且分布式还正在发展,比如很多新的概念、新的技术也还在不断诞生;(2)分布式目前为止并没有有个官方...原创 2022-04-17 10:01:33 · 709 阅读 · 0 评论 -
ThreadLocal 7:ThreadLocal注意点:【忘记关闭线程,而导致的内存泄露】;【装箱拆箱错误,而导致的空指针异常】;
说明:(1)原创 2022-04-17 04:03:23 · 1194 阅读 · 0 评论 -
ThreadLocal 6:Thread,ThreadLocal,ThreadLocalMap的关系;
说明:(1)本篇博客,主要分析Thread,ThreadLocal,ThreadLocalMap的关系;同时,结合三者的关系,继续深化分析get(),set(),remove()方法;目录一:Thread,ThreadLocal,ThreadLocalMap:三者的关系;二:结合【Thread,ThreadLocal,ThreadLocalMap:三者的关系】进一步分析get(),set(),remove();1.进一步分析:get()方法;2.进一步分析:set()方法;..原创 2022-04-16 13:31:34 · 1773 阅读 · 1 评论 -
ThreadLocal 5:ThreadLocal的主要方法,简介;(initialValue();get();set();remove();)
说明:(1)介绍ThreadLocal的主要方法:initialValue(),get(),set(),remove();(2)声明:本篇博客可能存在理解偏差的地方;目录1.initialValue()方法:返回当前线程对应的“初始值”;2.get()方法:获取对象;3. set()方法:4.remove()方法;1.initialValue()方法:返回当前线程对应的“初始值”;说明:(1)在ThreadLocal的第一种使用场景中,会用到initi..原创 2022-04-16 11:52:56 · 1174 阅读 · 0 评论 -
ThreadLocal 4:ThreadLocal的两个作用;(基于ThreadLocal的两种使用场景,分析一下ThreadLocal的作用和好处;)
说明:(1)在【ThreadLocal 2:ThreadLocal第一种使用场景;】和【ThreadLocal 3:ThreadLocal第二种使用场景;】这两篇博客,我们演示了ThreadLocal的两种使用场景;本篇博客,我们尝试总结一下ThreadLocal的作用和好处;(2)声明:对于本篇博客的内容,没必要太认真;ThreadLocal还是需要在实际应用中,才能更好的加深理解;目录一:ThreadLocal的两个作用;二:由【对象生成的时机,的不同】,来分析ThreadLo..原创 2022-04-16 08:40:45 · 601 阅读 · 0 评论 -
ThreadLocal 3:ThreadLocal第二种使用场景;
说明:(1)一:ThreadLocal第二种使用场景,场景介绍;二:ThreadLocal第二种使用场景,演示;原创 2022-04-16 07:53:36 · 810 阅读 · 0 评论 -
ThreadLocal 2:ThreadLocal第一种使用场景;
说明:(1)一:ThreadLocal第一种使用场景:场景介绍;(1)先看一个案例,我们有一个类,这个类可以完成某种功能; ● 【比如我们定义了一个处理日期的工具类DateFormat类;】→【那么,假设现在突然有10000个日期需要处理,很自然我们需要实例化DateFormat类,然后调用该类中定义的方法去处理日期;】→【同时,因为有10000个任务需要处理,自然可以使用多线程来提高处理效率;】→【假设,我们创建了一个核心线程数和最大线程数都是10的线程池,来帮助处...原创 2022-04-16 02:53:39 · 678 阅读 · 0 评论 -
ThreadLocal 1:ThreadLocal部分,内容概述;
说明:(1)一:原创 2022-04-15 03:40:02 · 389 阅读 · 0 评论 -
线程池11:线程池总结;
说明:(1)线程池总结;一:使用线程池的注意点;(1)尽量手动去创建线程池;虽然,Executors提供了很多快速创建线程池的方法;但,这些方法创建的线程池可能不符合我们的具体需求;我们尽量根据自己的实际需求,去创建符合当前业务要求的线程池;(2)线程池的线程数要设置合理;可以参考【线程池4:JDK提供的4种自动创建线程池的策略(四种线程池的创建;线程池分析;使用的阻塞队列;);实际中,建议根据具体需求自己创建线程池;】;(3)要考虑多个线程池之间的影响;比如,.原创 2022-04-15 01:35:55 · 513 阅读 · 0 评论 -
线程池10:线程池的5种状态;
说明:(1)一:线程池的状态;已知线程有6种状态,这在【Java线程二:线程的状态;线程的生命周期】中有介绍;线程池也有不同的状态;(1)RUNNING;(2)SHUTDOWN:线程池已经被关闭了,不再接收新任务;但是,其还是会处理队列中的剩余的任务;(3)STOP;shutdownNow()方法,就可以带来这种效果;(4)TIDYING:当所有的任务已终止,记录的”任务数量”为0,线程池会变为TIDYING状态。当线程池变为TIDYING状态时,会执行钩子函数.原创 2022-04-15 00:56:19 · 3063 阅读 · 0 评论 -
线程池9:线程池相关的类&方法;(线程池类:ThreadPoolExecutor,ExecutorService,Executor;工具类:Executors;接收任务的方法:execute();)
说明:(1)前面几篇博客,演示了线程池的一些内容;其中用到了很多线程池相关的类;本篇博客,就简单介绍一下这些线程池相关的类;(2)线程池相关的类主要有两方面的: ●线程池类(接口):ThreadPoolExecutor,AbstractExecutorService,ExecutorService,Executor; ●创建线程池的工具类:Executors;目录一:线程池的组成部分;二:线程池相关的类:ThreadPoolExecut...原创 2022-04-14 14:37:46 · 603 阅读 · 0 评论 -
线程池8:线程池(ThreadPoolExecutor)提供的钩子方法;(演示了beforeExecute()方法;)
说明:(1)线程池,可以在每个任务执行前或执行后,做一些事情;比如,日志、统计等;原创 2022-04-14 11:50:57 · 3801 阅读 · 2 评论 -
线程池7:线程池拒绝任务的两个时机;线程池拒绝任务的四种策略简介(AbortPolicy,DiscardPolicy,DiscardOldestPolicy,CallerRunsPolicy;);
说明:(1)本篇博客主要介绍线程池拒绝任务的两个时机;线程池拒绝任务的四种策略;目录一:拒绝任务的时机;(1)当线程池关闭后,新来的任务就会被拒绝;(2)当线程池的最大线程数、队列容量都有接线,并且都满了;继续添加任务时就会拒绝;二:拒绝的策略;(1)AbortPolicy策略;(2)DiscardPolicy策略;(3)DiscardOldestPolicy策略;(4)CallerRunsPolicy策略;一:拒绝任务的时机;(1)当线程池关闭后,.原创 2022-04-13 14:30:38 · 3954 阅读 · 0 评论 -
线程池6:ReentrantLock和Condition;(这篇博客,暂时没必要看……)
说明:(1)声明:有关Java并发和器重你线程锁的内容是很多的,本篇博客介绍的两个内容,仅仅是其中的两个两个概念;所以,本篇博客的内容,会显得孤零零的、突兀、来龙去脉不清晰;所以,本篇博客的内容,可以不看;1.ReentrantLock;ReentrantLock是Java中一种常见的“锁”,可以“锁住”一部分资源,让这部分资源在只有获取锁之后才能被操作;这就保证了线程安全,否则的话,如果有多个线程操作该资源,那么这个数据就可能会出错;1、ReentrantLock和synchroni.原创 2022-04-13 13:53:44 · 587 阅读 · 0 评论 -
线程池5:与停止线程池,相关的五个方法;(shutdown(),isShutdown(),isTerminated(),awaitTermination(),shutdownNow();)
说明:(1)介绍与停止线程池相关的五个方法:shutdown(),isShutdown(),isTerminated(),awaitTermination(),shutdownNow();目录一:与停止线程池,相关的五个方法;1.shutdown方法:关闭线程;(1)shutdown方法,简述;(2)shutdown方法,演示;2.isShutdown方法:查看线程池是否已进入停止状态了;3.isTerminated方法:查看线程池是否已经彻底停止了;4.await..原创 2022-04-13 13:15:32 · 5619 阅读 · 4 评论 -
线程池4:Executors工具类提供的,4种自动创建线程池的策略;实际中,建议根据具体需求自己创建线程池;
说明:(1)本篇博客的主要内容: ●是演示JDK给我们提供的4种自动创建线程的方式;可以得出【不推荐采用自动创建线程的方式,去创建线程】的结论; ●自己根据具体需求,创建线程池时,线程数量的确定原则;目录一:线程池应该手动创建还是自动创建?:应该手动创建;二:我们可以直接调用JDK封装好的构造方法,去自动创建线程池;但这可能会带来一些问题;1.自动创建线程池的策略一:Executors.newFixedThreadPool();2....原创 2022-04-13 11:04:45 · 1005 阅读 · 0 评论 -
线程池3:线程池构造函数;(主要内容是介绍:corePoolSize、maxPoolSize、KeepALiveTime、workQueue、threadFactory、Handler这6个参数;)
说明:(1)本篇博客主要介绍线程池的构造函数,主要是其中的6个参数;一:创建和停止线程概述;(1)我们创建线程池的时,需要线程池的构造函数; ●但是,线程池的构造函数的参数比较复杂;我们需要了解各个参数的含义后,才能更好的使用构造函数去创建线程池;(2)自动创建比较方便; ●但是,对于线程池来说,自动创建有一些弊端;有时,我们手动创建更好;(3)线程池中线程数量,应给怎么设置; ●比如,我们有1000个任务...原创 2022-04-13 06:21:18 · 930 阅读 · 0 评论 -
线程池2:线程池简介;(为什么要使用线程池;线程池的好处和适用场景;)
说明:(1)本篇博客的内容:简单介绍线程池;目录一:什么是“池”?二:为什么要使用线程池?:如果不使用线程池的情况;(1)我们每需要一个任务时,都要新开一个线程,去应对这个任务;比如;(2)那么,我们执行10个任务时(注意,是执行10个,而不是执行10次),就需要开10个线程,去应对这个需求;比如;(3)但是,如果我们要1000个任务呐?:如果没有线程池的话,我们就需要创建1000个线程,去应对这个需求;(4)所以,不使用线程池的话,会有这些问题;三:线程池;1..原创 2022-04-12 15:08:44 · 904 阅读 · 0 评论 -
线程池1:线程池部分,内容概述;
说明:(1)在了解线程池之前,可以先看下【Java线程一:进程和线程;创建线程继承Thread,实现Runnable接口】及后续的几篇博客,回顾一下JavaSE中是线程内容;...原创 2022-04-12 12:33:07 · 436 阅读 · 0 评论 -
多线程与分布式概述
说明:(1)本专栏将要介绍的线程池、ThreadLocal、分布式、Docker、Nginx、RabbitMQ,都比较简单,可以作为一个入门;(1)线程池的基本使用、特点、注意点;(2)ThreadLocal的基本使用、原理、注意事项;(3)分布式基础、核心概念; ● 这儿只是介绍分布式最基础的内容,可以作为分布式的一个入门; ●可以了解什么是分布式、分布式有什么作用和好处、和单体结构相比分布式有什么不同; ●...原创 2022-04-11 22:28:56 · 2492 阅读 · 0 评论