尽量保持节奏吧
首先明确一点,SpringBoot自带的ES模板,不建议使用,建议使用Rest Client。如果业务简单,且无特殊要求,可以使用SpringBoot的模板ElasticsearchRepository来搞定。这个非常简单,这里不作介绍,有需要看最底下的连接
ElasticsearchRepository
- 优点: 简单,SpringBoot无缝对接,配置简单
- 缺点: 基于即将废弃的TransportClient, 不能支持复杂的业务
不忘初心,方得始终
尽量保持节奏吧
首先明确一点,SpringBoot自带的ES模板,不建议使用,建议使用Rest Client。如果业务简单,且无特殊要求,可以使用SpringBoot的模板ElasticsearchRepository来搞定。这个非常简单,这里不作介绍,有需要看最底下的连接
ElasticsearchRepository
- 优点: 简单,SpringBoot无缝对接,配置简单
- 缺点: 基于即将废弃的TransportClient, 不能支持复杂的业务
开始看Elasticsearch Java API 的时候,被这段话浇了盆凉水
We plan on deprecating the
TransportClient
in Elasticsearch 7.0 and removing it completely in 8.0. Instead, you should be using the Java High Level REST Client, which executes HTTP requests rather than serialized Java requests. The migration guidedescribes all the steps needed to migrate.The Java High Level REST Client currently has support for the more commonly used APIs, but there are a lot more that still need to be added. You can help us prioritise by telling us which missing APIs you need for your application by adding a comment to this issue: Java high-level REST client completeness.
Any missing APIs can always be implemented today by using the low level Java REST Client with JSON request and response bodies.
from:– https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/java-api.html
大致意思是:我们马上就要不支持TransportClient
这个熊玩意了,你们应该用Java Rest Client,最好是还是高级别的client,用Http方式来访问ES,然后,麻烦帮我们确定这个Client的完整性,如果有发现高级Client缺失功能,可以用低版本的Clientlow level Java REST Client
来发送json请求,查询数据
TransportClient这玩意儿确实很难用,抛开连接池不稳定不说,写完代码之后就是下图视感:
所以写完因为之后,准备用Java Rest Client来重构一下,用于兼容ES 5、6、7、甚至8
四个月没发东西了,说忙是借口,懒才是直接原因。倒不是什么都没写,只是写的都不能发。
不能发的原因是我不想发,不想发基础入门的东西了,网上一查一堆,写的比我好的也数不胜数
技术这个东西,泊来品,越是新的知识,越不容易找到一手的中文文档或资料。只能去外国官网上翻文档,阅读能力奇差的我看英文文档极其慢,过程不亚于啃砖头。写了点笔记,大佬已经翻译出来了。又没办法发一遍。
平时遇到的问题大多是代码逻辑问题,也没啥值得写的。
读书笔记写出来既影响自己读书的效率,又没啥新的东西在文章里,还不如直接发书单
翻源码的还在写……,嗯,有点意思的就是源码,看多了自然自己的代码水平也上去了。看源码也是比较慢的,所以只要懒劲一来,就废了
其实没有更新的4个月里,经历了很多:
算起来,正式从 Android 转 Web 已经1年了。看看躺在自己笔记里的一堆垃圾。看看自己的github,看看别人的薪资,一股惭愧之意骤然而起,所以,老夫得继续写点东西了
我还记得当时做FS计划的初心,但是这个计划执行的速度比蜗牛还慢,所以得上点心了。
越来越多的大佬开始说:但行好事,莫问前程。————《增广贤文》
当下如果不做,又怎会有前程呢?
笔记里列出了自己想写的所有东西,接下来就是用最少的时间把它填满,把自己的脑子填满。
所以:老夫又回来了。
上一篇文章写了流的基本知识,大约知道了流是用来处理序列集合的武功秘籍。
集合关注的是数据存储本身,流关注的数据计算和处理。本篇文章来说明一下适用流时应当注意的几点
不想再用for嵌套for操作了,java8 带来了新的API —— Stream,非常强大!
Stream中文翻译成流,是一个支持串行和并行操作元素的序列,也是Lambda表达式配合使用的强大工具。
源码在java.util.stream中,感兴趣可以阅读阅读。
知道JVM内存模型可以在学习多线程的时候更加了解锁的机制和工作方式。下面是我的学习笔记,比较初级。
第四章讲了类的设计,大部分应该遵守,书中也给出了遵守这些规则的理由, 然后书已经看得差不多了,这样记笔记实在没啥效率,后面就不这么写了。
第三章讲了一些通用的方法。看的时候很快,记笔记的时候慢了
equals 方法是对象判断是否相等的方法,如果一个类具有多实例的需求时,可以重equals方法来判断两个对象是否相等。
除非:
- 类的每个实例都是唯一的
- 不关心实例是否逻辑上相等
- 父类已经重写了equals
- 类是私有的,equals方法永远不会被调用
Thinking in java 太厚了,我不想看,所以先拿EJ开坑。
Effective Java 和 Thinking in java都是java基础评分超高的书,所以有必要看一看。
Effective Java这本书被java之父推荐,所以特意买了本正版。
我很希望10年前就拥有这本书。可能有人认为我不需要任何Java方面的书籍,但是我需要这本书。
——Java 之父 James Gosling
当然,这本书是2009年出版的,已经过去N多个年头,所以带着“批判”的眼光来瞻仰这本巨作。
上次Ansible自动部署入门,最后写了点playbook的项目,了解了一些如task,template,vars等简单的用法。但是真正的Ansible项目并不是通过主机来分Roles的,而是一个Ansible管理多台主机,用Roles来区分项目。
所以这一次,我带来了不一样的使用姿势。
因为公司想对项目逐步转向为自动化部署,所以安排我和一位大佬做起了运维。目前是想先用ansible实现从git上获取code,在ansible主机上编译,配置,打包,发布。所以就有了这篇文章。
多人合作时,代码需要按照规范统一管理,但是早期一个项目很难做到一处编写到处运行。一方面,开发者自己的编写环境不能绝对统一,另一方面,没有一个方案去解决自动构建项目的问题,而手动机械重复构建往往出现各种问题。
后来,Java构建项目工具诞生了Ant,第一代自动化构建工具。通过XML,约束构建流程,达到自动构建的目的。
Ant构建脚本由 一个project ,多个target,以及可用的task构成。
有兴趣的童鞋可用查一下,Ant构建的XML文件的大致写法,这里不作详解。只介绍缺点
ㄟ( ▔, ▔ )ㄏ
Ant虽然实现了自动构建,但是在大型项目中,XML构建脚本异常臃肿庞大;构建脚本逻辑也会越来越复杂,最后难以维护。
而且Ant没有规范项目结构,可能导致每次编译出来的东西都不太一样,特别当依赖被改来改去,易出现重复拷贝。因为Ant自身本来就没有提供依赖管理工具,只能借助Ivy。
构建时也无法监控内存变化,task执行。
我是Mac用户,新公司用PC,为了适应,决定用Linux做主力开发系统,首先需要安装系统
有两种方式:
- 使用EasyBCD 添加引导
- 使用UltraISO制作安装U盘
EasyBCD安装的坑:
|
|
hd(0,1)表示第一个物理分区的第二个盘,当然不一定是C盘。所以ISO文件的位置一定会坑到一堆人。
其实可以安装时更改hd位置,参考:http://www.jianshu.com/p/9b4e4137bc11
UltraISO安装的坑
UltraISO版本一定要新版的,我用的是UltraISO 9,不然U盘启动会报错,老毛桃的刻录工具版本太低。建议自己下载一个。
这段时间一直在面试,没有什么精力写文章,整个人处于一种k于是我把快窒息的状态,所以我把简历发给了一家外包公司。
公司非常热心,帮我推荐了很多家岗位。直到这天,我接到一个电话,彻底让我失望了。于是晚上我就打电话给外包的经理,拒绝了两家的甲方的offer。
这个电话是其实是一家甲方公司打给我的,告诉我公司因为我面试通过了甲方的面试,向甲方提出涨价的要求,而我被我的公司隐瞒了拿到offer的事情,直到甲方给我私人打电话,整个流程内部操作十分不规范。
Java的GC是什么,应该做Java的人都知道。但是其实GC的历史要比Java早,Java出现之前,人们就开始研究:
然后就有了GC,而Java解决的这3件事情,就目前看来,效果还可以。解决了很多的内存问题。但是,GC并不能解决所有内存动态分配的问题,尤其是高并发的软件中,了解GC,方便解决内存溢出问题,更好的控制和调节程序的回收和分配内存。
Spring MVC的工作流程
1 用户请求
2 前端控制器
3 handlerMapping 找到对应的Controller
4 controller 返回执行链
5 前端控制器通过 HandlerAdapter去执行执行链,返回model and view
6 将model and view交给视图渲染器,渲染成视图
一、特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。