1 | //当前副本 |
WatchService监控目录和文件变化
两种监控文件和目录方式
Commons-io
- 在Apache的Commons-io提供文件的监控功能。
- 由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver。
- 如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改。(默认为1000毫秒执行一次扫描)
WatchService
- Java1.7中提供了NIO WatchService来监控系统中文件的变化。
- 该监控是基于操作系统的文件系统监控器,可以监控系统是所有文件的变化,这种监控是无需遍历、无需比较的,是一种基于信号收发的监控。
整个监控目录文件操作的流程大致如下:
- 获取 WatchService
- 注册指定目录的监视器
- 等待目录下的文件发生变化
- 对发生变化的文件进行操作
RPC框架 - Thrift协议定义
rpc
RPC 是远程过程调用(Remote Procedure Call)。
RPC 是指计算机 A 上的进程,调用另外一台计算机 B 上的进程,其中 A 上的调用进程被挂起,而 B 上的被调用进程开始执行,当值返回给 A 时,A 进程继续执行。调用方可以通过使用参数将信息传送给被调用方,而后可以通过传回的结果得到信息。
远程过程调用采用客户机/服务器(C/S)模式。请求程序就是一个客户机,而服务提供程序就是一台服务器。和常规或本地过程调用一样,远程过程调用是同步操作,在远程过程结果返回之前,需要暂时中止请求程序。使用相同地址空间的低权进程或低权线程允许同时运行多个远程过程调用。
Lucene利用Hanlp分词索引和检索
包引入
- pom引入lucene和hanlp
- lucene版本为7.4
hanlp分词器版本为1.1.6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-queryparser</artifactId>
<version>7.4.0</version>
</dependency>
<dependency>
<groupId>com.hankcs.nlp</groupId>
<artifactId>hanlp-lucene-plugin</artifactId>
<version>1.1.6</version>
</dependency>
Maven配置Profile
- 项目根据环境不同,设置不同参数
- 实现在代码中无需改动,以防误提交
在pom中添加以下配置1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<profiles>
<profile>
<id>dev</id>
<properties>
<profile.active>dev</profile.active>
<resource.exclude>-</resource.exclude>
</properties>
</profile>
<profile>
<id>prod</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.active>prod</profile.active>
<resource.exclude>*.yml</resource.exclude>
</properties>
</profile>
</profiles>
- 默认prod
- 本地开发时,在Idea中Maven插件的Profiles中选择dev即可
Docker部署和配置Nginx
获取镜像
1 | docker search nginx |
安装官方版本
name: docker.io/nginx
OFFICIAL: ok
1 | docker pull nginx |
拉取并查看镜像
Java Lambda Stream原理
举例
1 | List list = new ArrayList(1); |