1黄鹰
码龄17年
关注
提问 私信
  • 博客:307,520
    307,520
    总访问量
  • 103
    原创
  • 暂无
    排名
  • 72
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2008-12-05
博客简介:

黄鹰的专栏

查看详细资料
个人成就
  • 获得104次点赞
  • 内容获得86次评论
  • 获得217次收藏
  • 代码片获得115次分享
  • 博客总排名1,894,385名
创作历程
  • 1篇
    2022年
  • 1篇
    2021年
  • 30篇
    2020年
  • 24篇
    2019年
  • 2篇
    2018年
  • 3篇
    2017年
  • 26篇
    2016年
  • 3篇
    2015年
  • 25篇
    2014年
成就勋章
TA的专栏
  • 云存储
    1篇
  • Elasticsearch系列
    34篇
  • 开发平台
    12篇
  • java se
    16篇
  • 应用框架
    34篇
  • 应用接口
    4篇
  • hibernate
  • 架构设计
  • memcache
    12篇
  • telnet
    1篇
兴趣领域 设置
  • 后端
    架构
  • 搜索
    elasticsearch
创作活动更多

王者杯·14天创作挑战营·第2期

这是一个以写作博客为目的的创作活动,旨在鼓励码龄大于4年的博主们挖掘自己的创作潜能,展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴,那么,快来参加吧!我们一起发掘写作的魅力,书写出属于我们的故事。 注: 1、参赛者可以进入活动群进行交流、分享创作心得,互相鼓励与支持(开卷),答疑及活动群请见https://bbs.csdn.net/topics/619735097 2、文章质量分查询:https://www.csdn.net/qc 我们诚挚邀请你们参加为期14天的创作挑战赛!

79人参与 去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

学一点Ceph知识:初识Ceph

传统的文件存储系统中,文件是通过文件目录进行寻址的,庞大文件目录或深层次目录结构,均会影响文件搜索的效率,Ceph底层并不存在块和文件的管理,而是管理对象并且在对象之上支持基于块和文件的存储,对象的寻址通过唯一的标识符,并存储在扁平的寻址空间中,客户端使用CRUSH算法得到一个存储对象的存储位置,从根本上解决海量文件搜索慢的问题。
原创
发布博客 2022.09.30 ·
668 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

SpringMVC Json自定义序列化和反序列化

需求背景需求一:SpringMVC构建的微服务系统,数据库对日期的存储是Long类型的时间戳,前端之前是默认使用Long类型时间,现在前端框架改动,要求后端响应数据时,Long类型的时间自动变成标准时间格式(yyyy-MM-dd HH:mm:ss)。涉及到这个转换的范围挺大,所有的实体表都有创建时间createTime和修改时间updateTime,目前的主要诉求也是针对这两个字段,并且在实体详情数据和列表数据都存在,需要一个统一的方法,对这两个字段进行处理。需求二:前端请求上传的JSON报文,Str
原创
发布博客 2021.01.28 ·
1998 阅读 ·
1 点赞 ·
1 评论 ·
8 收藏

SpringMVC日期格式属性自动转成时间戳实现源码分析

背景介绍SpringMVC搭建的微服务系统,后端数据库对时间类型的存储使用的是Long类型,而前端框架倾向于使用yyyy-MM-dd HH:mm:ss这种标准显示格式,前端JSON格式的请求报文与后台的接口交互都需要进行格式转换,这部分转换功能由后台实现。使用时我们发现,前端定义的JSON请求,时间格式为yyyy-MM-dd HH:mm:ss,如果后台定义的POJO相应的属性为Long类型,可以自动转换为时间戳,对此非常好奇,框架是如何实现这一功能的?框架选型、版本及主要功能spring boot
原创
发布博客 2020.08.11 ·
1137 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

spring-cloud-gateway聚合swagger文档

需求背景spring cloud搭建微服务系统,每个业务模块使用swagger开放文档接口查询,在业务网关模块提供swagger文档聚合查询接口,可以通过选择业务模块分类查看。框架选型、版本及主要功能spring boot 2.1.6.RELEASEspring cloud Greenwich.SR3spring cloud gateway 2.1.3.RELEASE 网关组件knife4j 2.0.1 增强swagger ui样式,网关使用其starter依赖swagger bootstr
原创
发布博客 2020.08.09 ·
1084 阅读 ·
0 点赞 ·
1 评论 ·
3 收藏

基于SpringCloud的enum枚举值国际化处理实践

背景选用SpringCloud框架搭建微服务做业务后台应用时,会涉及到大量的业务状态值定义,一般常规做法是:持久层(数据库)存储int类型的值后台系统里用阅读性好一点儿的常量将int类型的值做一层映射前端(app或浏览器)同样定义一套常量去映射这些关系前端调用后台系统的接口时,使用常量定义的int类型进行提交源于持久层存储的优化规则,int类型要比varchar类型效率高很多,这套做法也是大家接受度非常高的。只是这里有一个不是很方便的地方:状态值映射的常量定义涉及前端和后台两部分,沟通的成
原创
发布博客 2020.07.31 ·
2309 阅读 ·
0 点赞 ·
0 评论 ·
5 收藏

源码剖析@ApiImplicitParam对@RequestParam的required属性的侵入性

问题起源使用SpringCloud构建项目时,使用Swagger生成相应的接口文档是推荐的选项,Swagger能够提供页面访问,直接在网页上调试后端系统的接口, 非常方便。最近却遇到了一个有点困惑的问题,演示接口示例如下(原有功能接口带有业务实现逻辑,这里简化了接口):/** * @description: 演示类 * @author: Huang Ying **/@Api(tags = "演示类")@RestController@Slf4jpublic class DemoControl
原创
发布博客 2020.07.09 ·
3540 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

实战SpringCloud通用请求字段拦截处理

背景以SpringCloud构建的微服务系统为例,使用前后端分离的架构,每个系统都会提供一些通用的请求参数,例如移动端的系统版本信息、IMEI信息,Web端的IP信息,浏览器版本信息等,这些参数可能放在header里,也可以放在参数里,如果这些参数需要在每个方法内声明定义,一来工作量太大,二是这些通用参数与业务接口方法耦合过紧,本身就是一个不好的设计。这个问题该如何优雅地解决呢?最佳实践实现思路利用SpringMVC提供拦截器,对匹配的请求,抽取通用的header信息(假设通用字段全部放在hea
原创
发布博客 2020.07.08 ·
536 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Elasticsearch系列---性能调优最佳实践

概要性能调优是系统架构里所有组件必不可少的话题,Elasticsearch也不例外,虽说Elasticsearch内的默认配置已经非常优秀,但这不表示它就是完美的,必要的一些实践我们还是需要了解一下。开启慢查询日志慢查询日志是性能诊断的重要利器,常规操作是设置慢查询的阀值,然后运维童鞋每天对慢日志进行例行巡查,有特别慢的查询,立即报备事件处理,其余的定期将慢日志的top n取出来进行优化。慢日志的配置在elasticsearch 6.3.1版本下是通过命令配置的,读操作和写操作可以单独设置,阀值的定
原创
发布博客 2020.06.24 ·
685 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Elasticsearch系列---生产集群的索引管理

概要索引是我们使用Elasticsearch里最频繁的部分日常的操作都与索引有关,本篇从运维人员的视角,来玩一玩Elasticsearch的索引操作。基本操作在运维童鞋的视角里,索引的日常操作除了CRUD,还是打开关闭、压缩、alias重置,我们来了解一下。创建索引[esuser@elasticsearch02 ~]$curl -XPUT 'http://elasticsearch02:9200/music?pretty' -H 'Content-Type: application/json' -
原创
发布博客 2020.06.22 ·
386 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Elasticsearch系列---生产数据备份恢复方案

前言生产环境中运行的组件,只要有数据存储,定时备份、灾难恢复是必修课,mysql数据库的备份方案已经非常成熟,Elasticsearch也同样有成熟的数据备份、恢复方案,我们来了解一下。概要本篇介绍Elasticsearch生产集群数据的数据备份、恢复和升级的常规操作。curl命令curl是Linux操作的必备工具,Elasticsearch生产环境的搭建,不能保证都能使用kibana访问到,而Elasticsearch Restful API都可以使用curl工具来完成访问。使用curl还有一
原创
发布博客 2020.06.12 ·
680 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Elasticsearch系列---生产集群部署(下)

概要本篇继续讲解Elasticsearch集群部署的细节问题集群重启问题如果我们的Elasticsearch集群做了一些离线的维护操作时,如扩容磁盘,升级版本等,需要对集群进行启动,节点数较多时,从第一个节点开始启动,到最后一个节点启动完成,耗时可能较长,有时候还可能出现某几个节点因故障无法启动,排查问题、修复故障后才能加入到集群中,此时集群会干什么呢?假设10个节点的集群,每个节点有1个shard,升级后重启节点,结果有3台节点因故障未能启动,需要耗费时间排查故障,如下图所示:整个过程步骤如下
原创
发布博客 2020.06.05 ·
445 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Elasticsearch系列---生产集群部署(上)

概要本篇开始介绍Elasticsearch生产集群的搭建及相关参数的配置。ES集群的硬件特性我们从开始编程就接触过各种各样的组件,而每种功能的组件,对硬件要求的特性都不太相同,有的需要很强的CPU计算能力,有的对内存需求量大,有的对网卡要求高等待,下面我们讨论一下ES集群对几种硬件的特性需求。CPUES集群对CPU的要求相对低一些,毕竟纯计算的比重要小一些,选用主流的CPU,2核到8核的都可以。如果有两种CPU可以挑选,一种是主频高但核数少的CPU,另一种是主频一般核数多的CPU,肯定选后一种,
原创
发布博客 2020.05.30 ·
550 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Elasticsearch系列---Java客户端代码Demo

前言前面历经33篇内容的讲解,与ES的请求操作都是在Kibana平台上用Restful请求完成的,一直没发布Java或python的客户端代码,Restful才是运用、理解ES核心功能最直接的表达方式,但实际项目中肯定是以Java/python来完成ES请求的发起与数据处理的,前面理解了ES的核心功能,后面Java API的使用将会非常简单,剩余的未覆盖的功能API,自行查阅文档即可。概要本篇讲解Elasticsearch的客户端API开发的一些示例,以Java语言为主,介绍一些最常用,最核心的API
原创
发布博客 2020.05.23 ·
717 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Elasticsearch系列---几个高级功能

概要本篇主要介绍一下搜索模板、映射模板、高亮搜索和地理位置的简单玩法。标准搜索模板搜索模板search tempalte高级功能之一,可以将我们的一些搜索进行模板化,使用现有模板时传入指定的参数就可以了,避免编写重复代码。对常用的功能可以利用模板进行封装,使用时更简便。这点类似于我们编程时的接口封装,将一些细节处理的东西封装成接口,供别人调用,使用者就只需要关注参数和响应结果就行,这样可以更好地提高代码复用率。下面我们来看看最基本的几种用法参数替换GET /music/children/_se
原创
发布博客 2020.05.16 ·
607 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Elasticsearch系列---Term Vector工具探查数据

概要本篇主要介绍一个Term Vector的概念和基本使用方法。term vector是什么?每次有document数据插入时,elasticsearch除了对document进行正排、倒排索引的存储之外,如果此索引的field设置了term_vector参数,elasticsearch还会对这个的分词信息进行计算、统计,比如这个document有多少个field,每个field的值分词处理后得到的term的df值,ttf值是多少,每个term存储的位置偏移量等信息,这些统计信息统称为term vec
原创
发布博客 2020.05.09 ·
596 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Elasticsearch系列---实现分布式锁

概要Elasticsearch在文档更新时默认使用的是乐观锁方案,而Elasticsearch利用文档的一些create限制条件,也能达到悲观锁的效果,我们一起来看一看。乐观锁与悲观锁乐观锁ES默认实现乐观锁,所有的数据更新默认使用乐观锁机制。document更新时,必须要带上currenct version,更新时与document的version进行比较,如果相同进行更新操作,不相同表...
原创
发布博客 2020.04.30 ·
1036 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

Elasticsearch系列---数据建模实战

概要本篇以实际案例为背景,介绍不同技术组件对数据建模的特点,并以ES为背景,介绍常用的联合查询的利弊,最后介绍了一下文件系统分词器path_hierarchy和嵌套对象的使用。数据模型对比实际项目中,电商平台系统常见的组合Java、Mysql和Elasticsearch,以基础的部门-员工实体为案例。JavaBean类型定义如果是JavaBean类型,会这样定义public class...
原创
发布博客 2020.04.25 ·
523 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Elasticsearch系列---聚合查询原理

概要本篇主要介绍聚合查询的内部原理,正排索引是如何建立的和优化的,fielddata的使用,最后简单介绍了聚合分析时如何选用深度优先和广度优先。正排索引聚合查询的内部原理是什么,Elastichsearch是用什么样的数据结构去执行聚合的?用倒排索引吗?工作原理我们了解到倒排索引对搜索是非常高效的,但是在排序或聚合操作方面,倒排索引就显得力不从心,例如我们举个实际案例,假设我们有两个文档...
原创
发布博客 2020.04.17 ·
1252 阅读 ·
0 点赞 ·
0 评论 ·
10 收藏

Elasticsearch系列---聚合查询(二)

### 概要### 近似聚合算法上一篇我们演练的聚合算法,在Elasticsearch分布式场景下,其实是有略微区别的,简单来说我们可以把这些聚合算法分成两类,易并行算法和不易并行算法。#### 易并行算法比如max,min,就是多个node或shard可以单独并行计算,并且可以随着机器数的线性增长而横向扩展,没有任何协调操作,得到的结果返回给Coordinate Node时的数据...
原创
发布博客 2020.04.10 ·
734 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Elasticsearch系列---聚合查询(一)

概要Elasticsearch的聚合查询,跟数据库的聚合查询效果是一样的,我们可以将二者拿来对比学习,如求和、求平均值、求最大最小等等。基础概念bucket数据分组,一些数据按照某个字段进行bucket划分,这个字段值相同的数据放到一个bucket中。可以理解成Java中的Map<String, List>结构,类似于Mysql中的group by后的查询结果。metric:...
原创
发布博客 2020.04.03 ·
1054 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏
加载更多