一、简介 1.1 简介 Elasticsearch 是一个高性能,基于lucene得全文检索服务,是一个分布式restful风格得搜索和分析引擎,也可以作为NoSQL数据库使用 对lucene做了扩展 原型环境和生产环境可以无缝切换 能够水平扩展 支持结构化和非结构化数据 1.2 应用场景 日志搜索和分析、时空检索、时序检索、智能搜索等场景 检索的数据类型复杂:如果需要查询得数据有结构化数据、半结构化数据、非结构化数据等,elasticsearch可以对以上数据类型进行清洗、分词、建立倒排索引等一系列操作,然后提供全文检索能力 检索条件多样化:全文检索条件可以包括词或短语 边写边读:写入的数据可以实时进行检索 1.3 生态圈 ELK/ELKB提供了一整套解决方案,并且都是开源软件,之间相互配合使用,高效得满足了很多使用场景 二、基本概念 2.1 es基本概念 2.1.1 index 索引 index是es中的一个逻辑命名空间,可以理解为MySQL中的数据库。 2.1.2 type 类型 类型是索引的逻辑类别/分区,同一索引中可以存储不同类型的文档。可以理解为数据库里的表,es7以后的..... elasticsearch基础--基本概念 Elasticsearch
参考文档 GitLab Docker 镜像 |吉特实验室 建立目录 mkdir /opt/gitlab mkdir /opt/gitlab/config mkdir /opt/gitlab/data mkdir /opt/gitlab/logs chmod -R 777 /opt/gitlab/ export GITLAB_HOME=/opt/gitlab 拉取镜像 docker pull gitlab/gitlab-ce:latest 运行镜像 运行镜像时,hostname应该是宿主机内网的IP地址 docker run --detach \ --hostname 172.21.97.71 \ --publish 8043:443 --publish 8089:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab \ --volume $GITLAB_HOME/logs:/var/log/gitlab \ --volume $GITLAB...... docker安装gitlab centos
聚合操作 聚合操作由管道和流构成。 聚合操作通过流来处理数据而不是通过集合,流是数据元素的序列,而集合是数据存储的数据结构,流通过管道携带来自源(如集合)得数据,管道是一系列操作,聚合操作接受lambda表达式作为参数。 管道 管道是一系列的聚合操作,包含以下 组件 源:可以是集合,数组,构造函数,输入输出通道 0个或者多个中间操作:部分中间操作会生成一个新的流,如filter 终端操作:终端操作会返回一个非流结果,如原始类型、集合或者没有返回值(如forEach) 流 流是元素序列 流不是存储数元素的数据结构,流通过管道从源携带值 聚合操作和迭代器的区别 聚合操作没有next方法 聚合操作更方便将问题划分为子问题,同时将结果组合到子问题中 聚合操作不直接处理集合中的元素,而是处理流中的元素 聚合操作支持将行为作为参数,如lambda表达式 流的常用操作 流的创建 java.util.stream.Stream public static Stream of(T... values) 产生一个元素为给定值的流 public static Stream empty() 创建空的流 pub.... Java基础--聚合操作 待分类
一、嵌套类 1.1 内部类 1.1.1 概念 内部类是定义在一个类中的类,内部类有以下特点 内部类的方法可以访问该类定义所在的作用域中的数据,包括私有数据 内部类可以对同一个包中的其他类隐藏起来 示例,下述代码中创建了一个类,里面有一个内部类,在内部类定义了一个定时器,定时输出当前时间,在TimerPrint内部类中,我们可以访问到TalkingClock的数据(包括静态变量、静态方法、普通变量、普通方法) class TalkingClock{ private int interval; private boolean beep; public static String NAME = "龙"; public TalkingClock(int interval, boolean beep){ this.interval = interval; this.beep = beep; } public void start(){ ActionListener actionListener = new TimerPrint(); Timer t = new Timer(interval,ac.... Java基础--内部类和lambda表达式 Java基础
一、悲观锁和乐观锁 多线程访问共享资源时,会对共享资源有增删改查的操作; 悲观锁在线程操作共享资源期间,枷锁成功就会禁止其他线程操作共享资源; 乐观锁不限制各个线程对共享资源的操作,但是当线程要更新共享资源时,会先判断该资源有没有被其他线程修改,如果共享资源没有被其他线程更新,则更新共享资源,如果被其他资源更新,则根据自己的需求另作处理; 悲观锁适合写操作较多的场景,加锁可以保证数据正确性,java的synchronized和Lock都是悲观锁实现 乐观锁适合读操作较多的场景,不加锁可以提升性能,java的原子操作类就是基于乐观锁实现 二、自旋锁和非自旋锁 2.1 自旋锁 多线程获取共享资源时,若资源被其他线程占用,该线程就会等待获取锁资源,但是线程不会放弃已经拿到的CPU时间片,通过自旋等待共享资源被释放 2.2 非自旋锁 非自旋锁再等待其他线程施放锁的时候,会让出CPU时间片,使线程进入休眠,所释放后,才会重新获取CPU时间片 三、无锁、偏向锁、轻量级锁和重量级锁 偏向锁通过对比Mark Word处理加锁问题,避免执行CAS操作,轻量级锁通过CAS操作和自旋来解决加锁问题,避免线程.... Java基础--常见的几种锁 Java基础
一、线程的状态 创建(NEW) 创建但是未调用start方法 可运行(RUNNABLE) 可能正在运行,也可能正在等待CPU时间片 阻塞(BLOCKED) 等待获取一个锁 等待(WAITING) 处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒 超时等待(TIMED_WAITING) 处于这种状态的线程不会被分配CPU执行时间,无须无限期等待被其他线程显示地唤醒,在达到一定时间后它们会自动唤醒 终止(TERMINATED) 线程运行结束 1.1 新建(NEW) 创建后尚未启动。 1.2 可运行(RUNNABLE) 可能正在运行,也可能正在等待 CPU 时间片。 包含了操作系统线程状态中的 Running 和 Ready。 1.3 阻塞(BLOCKED) 等待获取一个排它锁,如果其他线程释放了锁就会结束此状态 1.4 无限期等待(WAITING) 等待其它线程显式地唤醒,否则不会被分配 CPU 时间片 进入等待方法退出等待方法 Object.wait()Object.nofity或Object.nofityAll Thread.join()被调用的线程执行完毕 Lock.... Java基础--多线程 Java基础