Perkins4j2的技术博客

一个人,一根烧火棍,面对整个世界.


  • 首页

  • 标签91

  • 分类8

  • 归档123

  • 搜索

Java双份对象数据热切换

发表于 2019-08-21 | 更新于 2020-08-31 | 分类于 架构
本文字数: 1.4k | 阅读时长 ≈ 1 分钟
1
2
3
4
5
6
7
//当前副本
public List<String> r1 = null;

//第二个副本
public List<String> r2 = null;

public AtomicBoolean replicationIsEmpty = new AtomicBoolean();
阅读全文 »

WatchService监控目录和文件变化

发表于 2019-08-21 | 更新于 2019-09-05 | 分类于 架构
本文字数: 4.5k | 阅读时长 ≈ 4 分钟

两种监控文件和目录方式

Commons-io

  • 在Apache的Commons-io提供文件的监控功能。
  • 由文件监控类FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver。
  • 如果有文件的变化,则根据相关的文件比较器,判断文件时新增,还是删除,还是更改。(默认为1000毫秒执行一次扫描)

WatchService

  • Java1.7中提供了NIO WatchService来监控系统中文件的变化。
  • 该监控是基于操作系统的文件系统监控器,可以监控系统是所有文件的变化,这种监控是无需遍历、无需比较的,是一种基于信号收发的监控。

整个监控目录文件操作的流程大致如下:

  • 获取 WatchService
  • 注册指定目录的监视器
  • 等待目录下的文件发生变化
  • 对发生变化的文件进行操作
    阅读全文 »

RPC框架 - Thrift协议定义

发表于 2019-08-19 | 更新于 2019-11-14 | 分类于 架构
本文字数: 2.6k | 阅读时长 ≈ 2 分钟

rpc

RPC 是远程过程调用(Remote Procedure Call)。

RPC 是指计算机 A 上的进程,调用另外一台计算机 B 上的进程,其中 A 上的调用进程被挂起,而 B 上的被调用进程开始执行,当值返回给 A 时,A 进程继续执行。调用方可以通过使用参数将信息传送给被调用方,而后可以通过传回的结果得到信息。

远程过程调用采用客户机/服务器(C/S)模式。请求程序就是一个客户机,而服务提供程序就是一台服务器。和常规或本地过程调用一样,远程过程调用是同步操作,在远程过程结果返回之前,需要暂时中止请求程序。使用相同地址空间的低权进程或低权线程允许同时运行多个远程过程调用。

阅读全文 »

Lucene利用Hanlp分词索引和检索

发表于 2019-08-19 | 更新于 2019-11-29 | 分类于 架构
本文字数: 4.1k | 阅读时长 ≈ 4 分钟

包引入

  • 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>
    阅读全文 »

Java线程池 - ThreadPool自定义封装

发表于 2019-08-16 | 更新于 2019-11-29 | 分类于 并发编程
本文字数: 5.7k | 阅读时长 ≈ 5 分钟
  • 自定义线程池,便于调试和控制线程
  • 自定义线程数、拒绝策略、关闭等
    阅读全文 »

Java线程池 - ThreadFactory封装

发表于 2019-08-16 | 更新于 2019-11-29 | 分类于 并发编程
本文字数: 2.3k | 阅读时长 ≈ 2 分钟
  • 自定义ThreadFactory,便于创建自定义线程
  • 自定义ThreadGroup,便于对线程分组管理
    阅读全文 »

Java线程池 - Callable和Runnable封装

发表于 2019-08-16 | 更新于 2019-11-29 | 分类于 并发编程
本文字数: 2k | 阅读时长 ≈ 2 分钟
  • 对Callable和Runnable封装,提供自定义执行接口
  • 补充异常处理

    阅读全文 »

Maven配置Profile

发表于 2019-08-15 | 更新于 2019-10-12 | 分类于 架构
本文字数: 842 | 阅读时长 ≈ 1 分钟
  • 项目根据环境不同,设置不同参数
  • 实现在代码中无需改动,以防误提交

在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

发表于 2019-08-14 | 更新于 2019-11-29 | 分类于 架构
本文字数: 2.8k | 阅读时长 ≈ 3 分钟

获取镜像

1
docker search nginx

安装官方版本
name: docker.io/nginx
OFFICIAL: ok

1
2
3
docker pull nginx

docker images nginx

拉取并查看镜像

阅读全文 »

Java Lambda Stream原理

发表于 2019-08-07 | 更新于 2019-08-14 | 分类于 并发编程
本文字数: 4.3k | 阅读时长 ≈ 4 分钟

举例

1
2
3
4
5
6
7
List list = new ArrayList(1);
list.add(1);
list.add(2);

list.stream().forEach(
System.out::println
);
阅读全文 »
1…8910…13
Perkins

Perkins

123 日志
8 分类
91 标签
RSS
0%
© 2020 Perkins | 站点总字数: 335k | 站点阅读时长 ≈ 5:04
|