JUC核心知识点
Spring源码学习笔记
Spring源码学习笔记
Spring IoC介绍
IoC 全称为 Inversion of Control
,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection
),即依赖注入。
所谓 IoC ,就是由 Spring IoC 容器来负责对象的生命周期和对象之间的关系
- 谁控制谁:在传统的开发模式下,我们都是采用直接 new 一个对象的方式来创建对象,也就是说你依赖的对象直接由你自己控制,但是有了 IoC 容器后,则直接由 IoC 容器来控制。所以“谁控制谁”,当然是 IoC 容器控制对象
- 控制什么:控制对象。
- 为何是反转:没有 IoC 的时候我们都是在自己对象中主动去创建被依赖的对象,这是正转。但是有了 IoC 后,所依赖的对象直接由 IoC 容器创建后注入到被注入的对象中,依赖的对象由原来的主动获取变成被动接受,所以是反转。
- 哪些方面反转了:所依赖对象的获取被反转了。
Docker安装morunchang/fastdfs
Docker安装morunchang/fastdfs
FastDFS简介
FastDFS是一款开源的分布式文件系统,功能主要包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了文件大容量存储和高性能访问的问题。FastDFS特别适合以文件为载体的在线服务,如图片、视频、文档等等。
FastDFS作为一款轻量级分布式文件系统,版本V6.01代码量6.3万行。FastDFS用C语言实现,支持Linux、FreeBSD、MacOS等类UNIX系统。FastDFS类似google FS,属于应用级文件系统,不是通用的文件系统,只能通过专有API访问,目前提供了C和Java SDK,以及PHP扩展SDK。
FastDFS为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性。FastDFS可以看做是基于文件的key value存储系统,key为文件ID,value为文件内容,因此称作分布式文件存储服务更为合适。
ZooKeeper极简入门及部署
MacOS开启端口转发
在/etc/pf.anchors/目录下新建一个名为com.pow文件,内容如下
1 | rdr pass on en0 inet proto tcp from any to any port 8080 -> 127.0.0.1 port 8080 |
上面的配置标表示的意思是将从en0和en5,目的端口为8080的包转发到8080端口上
使用pfctl
命令检测配置文件
1 | sudo pfctl -vnf /etc/pf.anchors/com.pow |
修改/etc/pf.conf
配置文件
pf
启动时会自动装载/etc/pf.conf
文件,因此将anchor
文件链接到/etc/pf.conf
,转发规则就会自动建立了。
1 | #在rdr-anchor "com.apple/*"下面增加: |
修改后的配置如下:
1 | scrub-anchor "com.apple/*" |
导入并运行pf
命令
一定要导入并允许运行pf
的命令
1 | sudo pfctl -evf /etc/pf.anchors/com.pow |
设置pf
开机自动打开
1 | sudo pfctl -e |
如果想要关闭pf
,命令是
1 | sudo pfctl -d1 |
Spring Boot使用ELK收集日志
ELK简介
ELK是有Elastic公司的三个组件配合进行日志收集,分别是:
- ElasticSearch:用于存储日志信息。
- Logstash:用于收集、处理和转发日志信息。
- Kibana:提供可搜索的Web可视化界面。
ELK也可以配合Beats进行使用,后续会写一篇文章来介绍。
环境搭建
之前文章分别介绍了ELK环境的搭建以及Spring Boot与之的整合。
Spring boot整合Elasticsearch
环境与版本
Elasticsearch版本
服务端:elasticsearch 7.5.1 单节点
客户端:elasticsearch 6.8.5
Logstash获取MySQL数据的配置
1 | input { |
Elasticsearch整合Kibana和Logstash环境搭建
Install Elasticsearch with Docker
Pulling the image
1 | docker pull docker.elastic.co/elasticsearch/elasticsearch |
Starting a single node cluster with Docker
采用Docker启动一个单节点的Elasticsearch
集群:
1 | # -d:后台启动 -p:开放端口 --name:设置名称 |
Git开发规范
分支介绍及命名规则
master 分支
- master 为主分支,也是用于部署生产环境的分支,一定要确保master分支稳定性
- master 分支一般从develop或bugfix分支合并,任何时间都不能直接修改master分支的代码
develop 分支
- develop 为开发分支,始终保持最新完成以及bug修复后的代码,
- 一般开发的新功能时,feature分支都是基于develop分支下创建的
feature 分支
- feature 为开发新功能时创建的分支,并且一般是由develop为基础来创建feature分支
- 分支命名: feature/ 开头的为特性分支, 命名示例: feature/user_module、 feature/vacation_plan_module