武培轩

其他

Elasticsearch 之聚合分析入门

Aggregation?首先举一个生活中的例子,这个是京东的搜索界面,在搜索框中输入“华为”进行搜索,就会得到如上界面,搜索框就是我们常用的搜索功能,而下面这些,比如分类、热点、操作系统、CPU
2020年3月23日
其他

一文搞懂 Elasticsearch 之 Mapping

false,并且不可以被搜索。范围类型范围类型可以用来表达一个数据的区间,可以分为5种:integer_range、float_range、long_range、double_range
2020年3月18日
其他

看完这篇还不会 Elasticsearch 搜索,那我就哭了!

还有如下参数:df:默认字段,不指定时会对所有字段进行查询sort:根据字段名排序from:返回的索引匹配结果的开始值,默认为
2020年3月13日
其他

ElasticSearch 文档的增删改查都不会?

中指定索引,也可以在请求的方法体中进行。同时多条操作中如果其中有一条失败,也不会影响其他的操作,并且返回的结果包括每一条操作执行的结果。比如输入如下代码:当我们执行命令后,结果如下:took
2020年3月11日
其他

一篇文章带你搞定 ElasticSearch 术语

集群有三种颜色来表示健康程度:Green:主分片与副本都正常分配Yellow:主分片全部正常分配,有副本分片未能正常分配Red:有主分片未能分配(例如,当服务器的磁盘容量超过
2020年2月28日
其他

手把手教你搭建 ELK 实时日志分析平台

https://github.com/sivasamyk/logtrail/releases/download/v0.1.31/logtrail-7.1.0-0.1.31.zip
2020年2月27日
其他

全文搜索引擎 Elasticsearch 入门:集群搭建

安装与配置官网下载地址:https://www.elastic.co/downloads/ElasticSearch打开官网后根据自己的系统选择对应文件,因为我用的是
2020年2月26日
其他

给初学者的技巧,只有3条,不看后悔

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!在这篇文章中,我想向初学者和初级开发人员分享我的三个技巧。虽然开发可能真的很难……但是有了这些技巧,将会助你成功!一、不要害怕失败我认为最重要的是:不要害怕失败。如果你害怕失败,你将永远不会尝试新事物,你将永远不会学习新事物。如果你害怕失败,你将永远不会尝试新事物。经验丰富的开发人员所经历的失败多于成功!这就是使他们成长的原因,他们会从失败中学习成长。如果你接受失败是成长或生活的一部分,那么你将接受并非一切都按计划进行。如果你接受失败,那么你也将拥抱学习,因为失败可以变成一个教训。那我们作为一名开发人员,你应该是一个灵活的学习者,你应该尝试新的东西来训练你的大脑或建立专业知识。倘若自己失败了,检查一下可以从失败中学到什么,并将其作为下一次学习的教训!二、成为灵活的学习者作为开发人员,灵活地学习是必要的,这样做的主要原因是,你认为可以学到一切是一种错觉!在开发人员的世界中,有太多不同的东西需要考虑,有些东西你可能不需要去学习!新技术和新框架层出不穷,因此,你经常需要作出更改或调整。三、不要害怕寻求帮助有时,你可能会被一个
2020年2月25日
其他

深入源码分析SpringMVC执行过程

的四大组件:前端控制器(DispatcherServlet)、处理器映射器(HandlerMapping)、处理器适配器(HandlerAdapter)以及视图解析器(ViewResolver)
2020年2月21日
其他

什么是栈?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!本文将介绍一个重要的数据结构—栈,和之前讲到的链表、数组一样也是一种数据呈线性排列的数据结构,不过在这种结构中,我们只能访问最新添加的数据。栈就像是一摞书,拿到新书时我们会把它放在书堆的最上面,取书时也只能从最上面的新书开始取。栈如上就是栈的概念图,现在存储在栈中的只有数据
2020年2月12日
其他

什么是数组?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!今天要介绍的主角就是-数组,数组也是数据呈线性排列的一种数据结构。与前一节中的链表不同,在数组中,访问数据十分简单,而添加和删除数据比较耗工夫。这和什么是数据结构那篇文章中讲到的姓名按拼音顺序排列的电话簿类似。数组如上就是数组的概念图,Blue、Yellow、Red
2020年2月10日
其他

什么是链表?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!在了解完什么是数据结构之后,让我们一起来探索下数据结构中常见的一种—链表。链表链表是数据结构之一,其中的数据呈线性排列。在链表中,数据的添加和删除都较为方便,就是访问比较耗费时间。如上图所示就是链表的概念图,Blue、Yellow、Red
2020年2月9日
其他

什么是数据结构?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!本篇文章主要来介绍什么是数据结构。首先让我们来看一张图片:数据结构数据存储于计算机的内存中。内存如上图所示,形似排成
2020年2月7日
自由知乎 自由微博
其他

Full GC 和 Minor GC,傻傻分不清楚

45%(-XX:InitiatingHeapOccupancyPercent:设置触发标记周期的
2020年1月15日
其他

ZooKeeper 入门看这篇就够了

使用文件系统模型主要基于以下两点考虑:1.文件系统的树形结构便于表达数据之间的层次关系。2.文件系统的树形结构便于为不同的应用分配独立的命名空间(namespace)。ZooKeeper
2019年12月23日
其他

如何优雅地在Stack Overflow提问?

版本,软件/工具版本等可能和问题相关的信息•问题描述:描述要解决的问题和思路。可能要解决的问题或者思路本身就有问题。如果问题和程序执行的错误有关,则要把错误信息描述详尽,包括
2019年12月4日
其他

为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!在阅读《阿里巴巴Java开发手册》时,发现有一条关于在
2019年12月3日
其他

Java异常处理只有Try-Catch吗?

System.out.println(numbers[6]);在这里,我们有一个具有5个值(0-4位)的整数数组。当我们尝试检索绝对超出范围的值(索引=
2019年12月2日
其他

Java线程的生老病死

使用权。当等待的事件出现了,线程就会从休眠状态转换到可运行状态。5.线程执行完或者出现异常就会进入终止状态,终止状态的线程不会切换到其他任何状态,进入终止状态也就意味着线程的生命周期结束了。Java
2019年11月27日
其他

对于注册中心,ZooKeeper、Eureka哪个更合适?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!简介Eureka本身是Netflix开源的一款提供服务注册和发现的产品,并且提供了相应的Java封装。在它的实现中,节点之间相互平等,部分注册中心的节点挂掉也不会对集群造成影响,即使集群只剩一个节点存活,也可以正常提供发现服务。哪怕是所有的服务注册节点都挂了,Eureka
2019年11月26日
其他

代码重构有什么意义?为什么重构有用?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!所谓重构就是在不改变代码外在行为的前提下,对代码进行修改,以改进程序的内部结构。本质上说,重构就是在代码写好之后改进它的设计。前几个月完成了一个模块的功能重构,之前代码中的“坏味道”很多,例如:重复代码、过长函数和过大的类、魔法数以及各种if-else判断,阅读性极差并且代码效率也不高,因此通过提炼函数、类,用字面常量取代魔法数,用多态取代条件表达式等,采用多线程充分利用CPU资源等方式进行重构,虽然重构绝对不是所谓的“银弹”,不过的确有价值,可以帮助你始终良好地控制代码。今天来说一下为什么重构有用呢?程序有两种价值:"今天可以为你做什么"和"明天可以为你做什么"。大多数时候,我们都只关注自己今天想要程序做什么。不论是修复
2019年11月25日
其他

PageHelper分页插件的原理是什么

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件,其实我并不想加上好用两个字,但是为了表扬插件作者开源免费的崇高精神,我毫不犹豫的加上了好用一词作为赞美。原本以为分页插件,应该是很简单的,然而PageHelper比我想象的要复杂许多,它做的很强大,也很彻底,强大到使用者可能并不需要这么多功能,彻底到一参可以两用。但是,我认为,作为分页插件,完成物理分页任务是根本,其它的很多智能并不是必要的,保持它够傻够憨,专业术语叫stupid,简单就是美。我们将简单介绍PageHelper的基本使用和配置参数的含义,重点分析PageHelper作为Mybatis分页插件的实现原理。1.
2019年11月22日
其他

数据库分库分表,何时分?怎样分?

InnoDB,以获取更高的性能。MyISAM使用的是表级别的锁,对表的读写是串行的,所以不用担心在并发时两次读取同一个ID值。当需要全局唯一的64位ID时,执行:REPLACE
2019年11月21日
其他

领域驱动设计 (DDD) 的思考

中涉及到的数据、流程、规则等都弄明白了,然后以面向对象的观点为其建立一个模型(即领域模型),而这个模型,决定了你将用什么技术、什么架构、什么平台来实现这个系统。所以技术在这个过程中是
2019年11月20日
其他

聊聊API网关的作用

API平台的入口的其他方案。2、对于作为微服务网关的API网关,业界的选择可以选择的解决方案比较多,也取决于微服务器的实现方案,有一些微服务架构的实现方案是不需要微服务网关的。•Service
2019年11月19日
其他

一个秒杀系统的设计思考

Cookie,入口层路由到不同的服务接口中;再比如,域名保持一致,但后端调用不同的服务接口;又或者在数据层给数据打标进行区分等等,这些措施的目的都是把已经识别的热点请求和普通请求区分开来。2.2.3
2019年11月17日
其他

不同场景下,如何选择数据库?

等等。可以看到爱奇艺的数据库种类是很多的,这可能会造成业务开发不太清楚在他的业务场景下,应该选用哪种数据库系统。所以,我们先对这些数据库按照接口(SQL,NoSQL)和面向的业务场景(OLTP,
2019年11月16日
其他

分布式唯一ID生成方案总结

Redis生成当使用数据库来生成ID性能不够要求的时候,我们可以尝试使用Redis来生成ID。这主要依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。可以用Redis的原子操作
2019年11月15日
其他

程序员如何精确评估开发时间?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!一个程序员能否精确评估开发时间,是一件非常重要的事情。如果你掌握了这项技能,你在别人的眼里就会是这样:•靠谱•经验十足•对需求很了解•延期风险小•合格的软件工程师•正规军,不是野路子评估开发时间的重要性首先,在一个项目中,所有的环节都是承上启下的,上一个环节结束的时间节点正是下一个环节开始的节点。那么在一个项目或者一次迭代正式启动前,所有的环节都应该有个时间评估。以一次APP需求迭代为例,项目计划像这样:UI设计图
2019年11月14日
其他

Nginx 的进程结构,你明白吗?

CPU核数一致以外,还需要把每一个worker进程与某一颗CPU核绑定在一起,这样可以更好的使用每颗CPU核上面的CPU缓存来减少缓存失效的命中率。以上就是
2019年11月13日
其他

Nginx 的请求处理流程,你了解吗?

运行在企业内网的最外层也就是边缘节点,那么他处理的的流量是其他应用服务器处理流量的数倍,甚至几个数量级,我们知道任何一种问题在不同的数量级下,他的解决方案是完全不同的,所以在
2019年11月12日
其他

一图了解 Google 工具栈

GC算法●JVM内存模型●Java中Set集合是如何实现添加元素保证不重复的?●为什么不建议使用Date,而是使用Java8新的时间和日期API?●Spring
2019年11月10日
其他

Java 8:一文掌握 Lambda 表达式

表达式的“->”的右边要执行的表达式是调用的“->”的左边第一个参数的某个实例方法,并且从第二个参数开始(或无参)对应到该实例方法的参数列表时,就可以使用这种方法。可能有点绕,假如我们的
2019年11月7日
其他

Code Review 最佳实践

Review才能合并,但有时候确实会存在一些紧急情况,比如说线上故障补丁,而又没有其他人在线,那么这种情况下,最好是在任务管理系统中,创建一个Ticket,用来后续跟踪,确保后续补上Code
2019年11月6日
其他

RESTful API 最佳实践

body,但是一些网络服务器并不能很好的支持,应该慎重使用。另外对于复杂的资源获取,应该提供通用的资源筛选、排序、分页、字段选择等功能支持,并统一参数规范。例如://
2019年11月5日
其他

你编写的Java代码是咋跑起来的?

Detection):虚拟机会周期的对各个线程栈顶进行检查,如果某些方法经常出现在栈顶,这个方法就是热点方法。优点是实现简单、高效,很容易获取方法调用关系。缺点是很难确认方法的
2019年11月4日
其他

使用 Nginx 搭建静态资源 web 服务器

个最佳实践,你知道几个?●Java中Set集合是如何实现添加元素保证不重复的?●为什么不建议使用Date,而是使用Java8新的时间和日期API?●Spring
2019年11月3日
其他

Nginx 热部署和日志切割,你学会了吗?

old_error.log经过上面的操作,我们就完成了日志的切割,以上操作只是为了了解日志切割的操作流程,不建议直接生产这么使用。推荐先写成一个
2019年11月2日
其他

Nginx 了解一下?

需要面对几十万、几百万链接的时候,它没有办法去开几十万、几百万的进程;而进程间切换的代价成本又太高了,当并发的连接数越多,这种无谓的进程间切换引发的性能消耗也就越大,而
2019年11月1日
其他

你真的了解 volatile 关键字吗?

值未变),最后将运算结果刷新到主存中。数据运算是在执行线程的私有内存中进行的,线程执行完运算后,并不一定会立即将运算结果刷新到主存中(虽然最后一定会更新主存),刷新到主存动作是由
2019年10月31日
其他

为什么阿里巴巴Java开发手册中强制要求整型包装类对象值用 equals 方法比较?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!在阅读《阿里巴巴Java开发手册》时,发现有一条关于整型包装类对象之间值比较的规约,具体内容如下:这条建议非常值得大家关注,
2019年10月30日
其他

Java 中的 final、finally、finalize 有什么不同?

binlog●Java中Set集合是如何实现添加元素保证不重复的?●为什么不建议使用Date,而是使用Java8新的时间和日期API?●Spring
2019年10月29日
其他

深入理解 Java 中的 final 关键字

修饰方法可以让对这个方法的调用变快”的流言:曾经有一种广为流传的说法是用final修饰方法可以让对这个方法的调用变快。这种说法在现代主流的优化JVM上都是不成立的(例如Oracle
2019年10月28日
其他

如何定制 Spring Boot 的 Banner?

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-banner
2019年10月27日
其他

Java 异常处理的 20 个最佳实践,你知道几个?

NullPointerException,那么它不会给用户任何相关的信息。相反,如果这种异常被包裹在自定义异常中,则会更好。NoSuchFileFoundException
2019年10月26日
其他

MySQL 日志系统之 redo log 和 binlog

之前我们了解了一条查询语句的执行流程,并介绍了执行过程中涉及的处理模块。一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。
2019年10月25日
其他

为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

StringBuilder()).append(boy).append(girl).toString();通过查看反编译以后的代码,可以发现,在字符串常量在拼接过程中,是将
2019年10月24日
其他

Java 8 Optional:优雅地避免 NPE

空指针异常是一个运行时异常,对于这一类异常,如果没有明确的处理方式,那么最佳实践在于让程序早点挂掉。当异常真的发生的时候,处理方式也很简单,在存在异常的地方添加一个
2019年10月22日
其他

在 Java 中如何比较日期?

并发、JVM、Elasticsearch、Zookeeper、Nginx、微服务、消息队列、源码解析、数据库、设计模式、面经等,助你编程之路少走弯路。
2019年10月18日
其他

Spring Boot 定时任务 @Scheduled

并发、JVM、Elasticsearch、Zookeeper、Nginx、微服务、消息队列、源码解析、数据库、设计模式、面经等,助你编程之路少走弯路。
2019年10月17日