最后
很多程序员,整天沉浸在业务代码的 CRUD 中,业务中没有大量数据做并发,缺少实战经验,对并发仅仅停留在了解,做不到精通,所以总是与大厂擦肩而过。
我把私藏的这套并发体系的笔记和思维脑图分享出来,理论知识与项目实战的结合,我觉得只要你肯花时间用心学完这些,一定可以快速掌握并发编程。
不管是查缺补漏还是深度学习都能有非常不错的成效,需要的话记得帮忙点个赞支持一下
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523204703753.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dfd2hhbmc=,size_16,color_FFFFFF,t_70)
获取一个docker image命令如下:
后面可以加上版本号,如果不加默认就是最新版的
docker pull tomcat
docker pull redis:4014-alpine3.10
删除image[该image不能有正在使用的container]
docker rmi -rf imageid[imagername]
**Docker 镜像加速**
docker image 下载速度太慢,此时可以配置镜像加速器
* 科大镜像:https://docker.mirrors.ustc.edu.cn/
* 网易:https://hub-mirror.c.163.com/
* 阿里云:https://<你的ID>.mirror.aliyuncs.com
* 七牛云加速器:https://reg-mirror.qiniu.com
[阿里云镜像获取地址](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了
然后到:vi /etc/docker/daemon.json文件里面
输入:
{
“registry-mirrors”:[“https://hub-mirror.c.163.com/”]
}
保存退出,之后重新启动服务:
systemctl daemon-reload
systemctl restart docker
**container基本操作**
已经有了image,那么可以基于image创建container,如果没有docker run这个命令就会去远端进行拉取
container的创建
以tomcat为例
docker run – name tomcat
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523210051460.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dfd2hhbmc=,size_16,color_FFFFFF,t_70)
可以看到tomcat 已经启动成功了
再重新打开一个连接
查看当前正在运行的container
docker ps
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523210258928.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dfd2hhbmc=,size_16,color_FFFFFF,t_70)
查看所有的container:
docker ps -a
删除container
docker rm -f containerid[containername]
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523210442801.png)
再查看已经没有正在运行的container
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021052321051231.png)
希望该container能够在后台运行
docker run -d – name tomcat
批量删除全部的container
docker ps -a 所有的container
docker rm -f $(docker ps -a) 先查出所有的然后再进行删除
进入到指定的container中
docker exec -it containerid/name bash
再次启动tomcat
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021052321082838.png)
可以发现进入到了一个linux的目录
conclusion:发现tomcat的container是运行在linux机器上的
tomcat的container 有1个ip :172.12.0.2
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523210937314.png)
退出container 所在的linux机器
exit
将container里面的port8080映射到centos的8888端口
再启动一个tomcat 的镜像取名为tomcat2
docker run -d --name tomcat2 -p 8888:8080 tomcat
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523211314351.png)
输入命令
curl localhost:8888
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523211421629.png)
本地物理机是可以访问的
得出结论:
container 实际上底层就是一个linux系统,只不过linux系统占用资源特别小
image —>linux
container -->基于image运行起来的一个个可读可写的环境
image可以从仓库拉取,也可以手动创建就是基于dockerfile 文件创建的
所有的镜像都是基于dockerfile文件创建,我们可以看下开源出来的dockerfile文件[地址](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)
DockerFile简介
FROM 制作该image的基础镜像 layer
RUN 运行一条指令
ENV 定义常量
COPY 拷贝内容
ENTRYPOINT 设置容器启动时运行的指令
CMD 容器启动时运行的指令 参数的设置
EXPOSE 暴露在外面的端口是什么
本地创建简单dockerfile镜像
找一个目录然后 vi 编辑一个dockerfile文件
FROM centos
ENV name test
CMD echo “hello word $name”
很简单就是输出一句话
保存好文件后输入命令
docker build -t test .
build 完成以后就可以查看本地镜像是否存在了
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523212442281.png)
然后运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523212506704.png)
**image仓库搭建**
我们再实际开发过程中,可能得共享镜像给其他人用,这个时候就需要搭建一个仓库了
注册账号 到[官网](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)
输入命令登录
docker login
输入用户名和密码以后
docker images 查看本地镜像
然后tag 一下
docker tag test gwh2020/test
push 上去类似于git命令
docker push 登录名/本地镜像
如果要拉取仓库中的镜像就输入
docker pull 登录名/远程镜像
**docker 网络**
创建docker 网络
docker network create --subnet=172.18.0.0/24 tomcat-net
查看docker 网络
docker network ls
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210523213444786.png)
查看创建好的网络
docker network inspect tomcat-net
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021052321361777.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0dfd2hhbmc=,size_16,color_FFFFFF,t_70)
**docker 数据持久化**
例如mysql 数据库创建,连接,销毁之后数据就没了,为了防止这种情况的发生,使用了
volume 目录来进行数据保存
1.在centos中要新建一个目录volume
docker volume create --name v1
2.查看一下当前v1的信息
docker volume inspect v1
3.以mysql 数据库为例,使用该v1
docker run -d -p 3301:3306 mysql
# Kafka实战笔记
> **关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图**
![image.png](https://img-blog.csdnimg.cn/img_convert/c1c7a753bfb75d593a59728dd589da53.webp?x-oss-process=image/format,png)
* **Kafka入门**
* **为什么选择Kafka**
* **Karka的安装、管理和配置**
![image.png](https://img-blog.csdnimg.cn/img_convert/913c9bf868dff3ea41c3a88881420029.webp?x-oss-process=image/format,png)
* **Kafka的集群**
* **第一个Kafka程序**
* ![image.png](https://img-blog.csdnimg.cn/img_convert/c27b03800460b28d010401a0fce1eba9.webp?x-oss-process=image/format,png)
afka的生产者
![image.png](https://img-blog.csdnimg.cn/img_convert/fe07f3386c4f1bc8fff813d68c5bc911.webp?x-oss-process=image/format,png)
* **Kafka的消费者**
* **深入理解Kafka**
* **可靠的数据传递**
![image.png](https://img-blog.csdnimg.cn/img_convert/dce22b7f9493b1aa50e73b384b2bcdd0.webp?x-oss-process=image/format,png)
![image.png](https://img-blog.csdnimg.cn/img_convert/3868e04cd5fbfbc532bc6b9e25e0d15e.webp?x-oss-process=image/format,png)
* **Spring和Kalka的整合**
* **Sprinboot和Kafka的整合**
* **Kafka实战之削峰填谷**
* **数据管道和流式处理(了解即可)**
![image.png](https://img-blog.csdnimg.cn/img_convert/dfb22880bc63310249be879b3ce803f6.webp?x-oss-process=image/format,png)
* **Kafka实战之削峰填谷**
![image.png](https://img-blog.csdnimg.cn/img_convert/ef9737179b1cf7ddfe45c68e22818fe0.webp?x-oss-process=image/format,png)
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
ka的整合**
* **Kafka实战之削峰填谷**
* **数据管道和流式处理(了解即可)**
[外链图片转存中...(img-N1SLX2lQ-1715070892982)]
* **Kafka实战之削峰填谷**
[外链图片转存中...(img-FWrvnLwk-1715070892982)]
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**