0%

一、前言

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。
在全文检索领域, Lucene可谓是独领风骚数十年。倒排索引构成全文检索的根基。

阅读全文 »

前言

SSH Key 是一种方法来确定受信任的计算机,从而实现免密码登录。

一、生成ssh-key

1、首先需要检查你电脑是否已经有 SSH key

1
2
3
4
5
# 进入ssh-key 目录
cd ~/.ssh

# 查看是否生成了ssh-key
ls
阅读全文 »

一、Condition是什么?有什么用?

Tip: 本文源码基于JDK8

我们知道 wait()notify()是和synchronized关键字配合使用的。如果使用了显示锁Lock,就不能用了,所以Condition应运而生。
Condition是一个接口,主要功能就是提供了与 wait()notify()一样的等待/唤醒功能。
全部接口如下:

  • await()
    线程在调用condition.await()后处于await状态,此时调用thread.interrupt()会报错
  • awaitUninterruptibly()
    但是使用condition.awaitUninterruptibly()后,调用thread.interrupt()则不会报错
  • awaitNanos(long nanosTimeout)
    等待到nanosTimeout纳秒
  • await(long time, TimeUnit unit)
    等待到单位时间
  • awaitUntil(Date deadline)
    等待到特定日期
  • signal()
    唤醒一个等待在condition上的线程
  • signalAll()
    醒所有等待在condition上的线程
阅读全文 »

一、AQS是什么

AQS(AbstractQueuedSynchronizer):顾名思义是一个抽象队列同步器。在JDK5 之后的 java.util.concurrent 下的的很多常用的多线程工具类都依赖这个类。
面试常考的点,也是学习多线程必掌握的知识点。
看JDK源码注释说,AQS是基于CLH自旋锁变种的一个虚拟的双向队列,而队列一般都是先进先出(First Input First Output)。

阅读全文 »

前言

本篇内容大部分均来自周志明老师的《深入理解Java虚拟机》与网络上的资料。JVM 看这篇就差不多了。

一、跨平台

刚学Java的时候,听得最多的就是Java是跨平台的,编写一次到处运行(Write Once,Run Anywhere)。

  • 平台:Windows、Mac、Linux等平台系统
  • Java跨平台指的是:编译过后的 .class文件(字节码文件)可以跨平台。
  • Java编译的结果是字节码文件,而其他语言如C/C++编译过后的是机器码文件,机器码文件可以直接运行,但是字节码文件还要经过JVM翻译一遍成为机器码文件才能被运行。
  • 不同的平台有不同的JVM,同一.class文件就会编译成不同的机器码文件。
  • 重点结论:就是不同的平台他的机器码文件不同。
阅读全文 »

Anki是一个辅助记忆软件,它非常利于复习记忆,它可以按照艾宾浩斯遗忘曲线,给你安排合理的复习频率,就像你使用背单词软件时的操作一样。 一次记忆一个卡片上的一个小知识点,记得牢,而且能够充分利用碎片时间。容易忘记、重复复习过于熟悉的,这些小问题都可以解决。

阅读全文 »

简介

  • Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以往里面保存多个对象的类,存放的是对象,不同的集合类有不同的功能和特点,适合不同的场合,用以解决一些实际问题。
  • Java中的集合类可以分为两大类:一类是实现Collection接口;另一类是实现Map接口
  • Collection中的集合称为单列集合(单身狗),Map中的集合称为双列集合(情侣)。
  • 分析环境:JDK1.8
阅读全文 »

一、Quartz简介

用过Quartz的都懂,Quartz就是一个完全由java编写的开源作业调度框架。

1、组件简介

需要使用这个框架需要知道几个词。

Job

  • Job是一个任务接口,开发者定义自己的任务须实现该接口,并重写execute(JobExecutionContext context)方法.
  • Job中的任务有可能并发执行,例如任务的执行时间过长,而每次触发的时间间隔太短,则会导致任务会被并发执行。
  • 为了避免出现上面的问题,可以在Job实现类上使用@DisallowConcurrentExecution,保证上一个任务执行完后,再去执行下一个任务
阅读全文 »

安装GitLab

官网有挺详细的安装步骤:
官网地址: https://about.gitlab.com/install/#centos-7

一、Centos7 Yum安装Gitlab

  • 需要联网

1、安装依赖

1
sudo yum install -y curl policycoreutils-python openssh-server

2、安装邮件服务

注册发送邮件通知,如果您想使用其他解决方案发送电子邮件。
可跳过此步骤并在安装GitLab后配置外部SMTP服务器
如果关闭注册功能方法不需要发邮件的话这步可以跳过

阅读全文 »