Elasticsearch常常作为日志存储和分析的工具,在企业级应用中常常使用。Elasticsearch提供强大的搜索、分析功能,已经是后端技术栈不可缺少的一部分。 在维护ElastciSearch集群的时候,对Elasticsearch进行了一些调优和分析,现整理成文,纯属拙见,如果有不合理之处,欢迎指出探讨。我所使用的Elasticsearch版本为5.x。
文件句柄优化Elastic...
前言Java 自1.0 版本发布以来,java8 可以说是变化最大的一次。基于函数式编程思想,它本身并没有删除原有的东西,所以就算升级了 java8,好多人的编码方式还是按照以前的来,并没有使用到 java8 的新功能,所以也没意识到 java8 带给我们开发人员的便利。
也有一些人,在了解了 java8 的新特性后,认为其改变了一直以来的编码习惯,对其产生了抵触心理,并未在项目中使用。
但...
幂等性的定义幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多点点击或多次请求产生副作用。
举例:用户购买商品支付,支付扣款成功,但是返回结果时网络异常,这时候钱其实已经扣了,用户以为支付失败了,再次点击支付,会进行第二次扣款,返回结果成功,用户查询产生了两条扣款记录,多扣钱了,这就是非幂等。
幂等性的范围在数据访问层,要求幂等性的往往是对数据写入时。
inser...
前言在电商系统中,经常会遇到这样的场景:当订单未支付超时,需要自动取消订单,否则会一直占用库存等资源。
那么实现订单未支付超时,自动取消的方式有哪些呢?这里列举些我了解的几种方式。
扫表实现
原理: 通过定时任务轮询扫描订单表,超时的批量修改状态
优点: 实现非常简单
缺点: 大量数据集,对服务器内存消耗大。 数据库频繁查询,订单量大的情况下,IO是瓶颈。 存在延迟,间隔短则耗资源,间隔...
根据官网和极客时间丁雪丰老师 Spring 专课,总结归纳下 SpringBoot 加载配置的顺序,以便以后遇到问题了好排查。
外化配置优先级顺序:
开启 DevTools 时,~/.spring-boot-devtools.properties;
测试类上的 @TestPropertySource 注解;
@SpringBootTest#properties 注解;
命令行参数...
前言我们建立一个网站或者应用程序,经常用到搜索功能,我们自己实现复杂的搜索且性能强大、高可用、运行速度快是非常困难的,Elasticsearch 很好地帮助我们解决了这个问题。
百度百科:https://baike.baidu.com/item/elasticsearch/3411206?fr=aladdin
官网地址:https://www.elastic.co/cn/products/...
场景开发中经常遇到将 List 集合转 map 的时候,Java8 的 Stream API 可以简化这一操作,减少代码:
123List<Person> persons = ...// 将 Person 的 id 作为 key, value 是 name, 当 key 重复时,取第一个(不加这个的话如果 key 重复会报错)Map<Integer, String>...
序言错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误。从表面上看,一切皆错误的思路更简单,而异常的引入仅仅增加了额外的复杂度。 但事实并非如此。众所周知,Golang遵循“少即是多”的设计哲学,追求简洁优雅,就是说如果异常价值不大,就不会将异常加入到语言特性中。
错误和异常处理是程序...
序言笔者学习并使用Golang已经有一个多月了,尽管Golang的特性少、语法简单且功能强大,但作为初学者,难免会犯一些大家都犯过的错误。笔者在实践的基础上,将初学者易犯的错误进行了简单梳理,暂时总结了三种错误,先分享给大家,希望对大家有一定的帮助。
资源关闭这里的资源包括文件、数据库连接和Socket连接等,我们以文件操作为例,说明一下常见的资源关闭错误。
文件操作的一个代码示例:
123...