ElasticSearch 6.6.1 发布于 2019-02-20,目前以下已知的新特性:
- 6.5.4 开始支持 Java 11,Java 11 是一个 LTS 版本(发布于2018.9,支持到2026),上一个版本是 Java 8(发布于2014.3,支持到2025)
- 支持 G1 GC
- 基于 Lucense 7.6
- 支持索引生命周期特性
建议 6.x 系列直接使用 6.8.x,因为自 6.8.0 和 7.1.0 开始,
X-PACK的安全功能免费提供 HTTP Basic 认证与鉴权。
ElasticSearch 6.6.1 发布于 2019-02-20,目前以下已知的新特性:
建议 6.x 系列直接使用 6.8.x,因为自 6.8.0 和 7.1.0 开始,
X-PACK的安全功能免费提供 HTTP Basic 认证与鉴权。
在编写多线程代码时,往往是通过自己调用 new 实例化出来的线程类(Thread或Runnable)来实现。这时 Spring 无法使用 Autowired 进行自动注入。
原因是在 Spring 中,Spring 只能自动注入由它自己管理(创建)的组件。
实际和多线程并没有太多的关系,但是可以放到一起来看。
很多服务都需要 Linux 关闭透明大页面特性,如 Hadoop、ElasticSearch 等一些大数据组件或数据库等,以下是 CentOS7 开机自动关闭透明大页面方法。
SpringBoot 默认会集成 spring-boot-maven-plugin 这个组件,需要打包成可执行的 jar 包,只需要在其中添加一个配置项 executable:
1 | ... |
接下来就可以使用 java -jar test.jar 直接执行了。
可以讲其连接到 /etc/init.d 目录下,配置成 Linux 服务,并配置开机自启动
1 | ln -s test.jar /etc/init.d/test |
1 | systemctl stop NetworkManager |
1 | vi /etc/locale.conf |
1 | vi /etc/sysconfig/selinux |
1 | yum -y install net-tools bash-completion wget |
1 | cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
1 | yum -y install squid httpd-tools openssl |
1 | htpasswd -c /etc/squid/password squid |
1 | vi /etc/squid/squid.conf |
systemctl start squid
systemctl enable squid
通过 netstat 检查端口监听
观察者模式:定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。
观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。
在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
具有完整的产品接口、产品实现、工厂接口、工厂实现。
在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类(接口)。
具有产品接口、产品实现、工厂实现。没有工厂接口。
简单工厂模式用于生产静态或独立的产品。
抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构,一个工厂等级结构可以负责多个不同产品等级结构中的产品对象的创建。多个产品等级结构构成了一个产品族。
单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。
单例类拥有一个私有构造函数,确保用户无法通过 new 关键字直接实例化它。 除此之外,该模式中包含一个静态私有成员变量与公有的方法,该方法负责检验实例的存在性并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。
对于一个类而言,应该仅有一个引起它变化的原因。
如果一个类承担的职责过多,等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力,这种耦合会导致脆弱的设计。
开放-封闭原则:软件实体(类、模块、函数)应该是可以扩展的,但是不可以修改。
无论模块多么封闭,都会存在一些无法对之封闭的变化,既然不可能完全封闭,设计人员对于模块应该对哪种变化封闭做出选择。等到变化发生时立即采集行动。
面对需求,对程序的改动应该是通过增加新代码进行,而不是更改现有的代码。
抽象不应该依赖细节,细节应该依赖于抽象。
针对接口编程,不要对实现编程。
高层模块不应该依赖底层模块。
ElasticSearch 5.x 要求 JDK 必须为 1.8+,并且目前大部分插件也不支持,截至到目前(2017-05-01),2.x 的版本更稳定一些。
从 CentOS 6 升级到 CentOS 7 有一些变化,如管理服务的 service ,服务启动脚本,以及软件防火墙等。
程序的执行实例称为进程,Unix确保每个进程都有一个唯一的标识,即进程ID。
一个现有的进程可以调用 fork 函数创建一个新进程。
fork函数被调用一次,但返回两次。区别是子进程返回值是0,父进程返回是子进程的进程ID,这样做是因为:
fork 之后,父进程与子进程一起向下执行,子进程获得父进程的数据空间、堆、栈。子进程是父进程的副本。子进程并不共享存储空间部分。但是共享正文段(CPU执行机器指令部分)
父进程先执行还是子进程先执行是不确定的,这取决于内核使用的调度算法。如果要求父子进程之间互相同步,则要求某种形式的进程间通信。
父进程与子进程区别如下:
fork失败的主要原因: