12 布道

尚未进行身份认证

我要认证

专注但要有大局观(先大后小,思路为先,实验为辅)

等级
TA的排名 2k+

常见应用系统设计须知

大多优秀的开源的后端程序,通常有三个部分组成,而这些都完全独立开发。协议本质是有对外沟通(通讯)的需求,服务于client与server。大多数情况下,我们采用内置的通用网络协议(http或各种rpc) 也可以自定义网络协议,只需提供序列化和反序列化函数,就可以定义出自己的算法常言道:数据是稳定的,处理是多变的,而算法着手于在稳定的数据结构中,提供高效丰富的计算,评估它的标准在于时间及空间复杂度。通用算法有:sort,merge,map-reduce等任务流任务执行的宿主是线

2020-09-10 18:33:32

Elasticsearch的search之_shards skipped之谜

es从 v5.6 开始引入了 pre-filter 机制(skipped):对于 Date 类型的 Range 查询,在对分片执行搜索之前,先检查一下分片是否包括被查询的数据范围,如果查询的范围与分片持有的数据没有交集,就跳过该分片。"_shards":{ "total": 130, "successful": 130, "skipped": 2, "failed": 0}skipped(Integer) Number of shards that skipp...

2020-07-11 13:28:15

Elasticsearch的copy_to探秘

es从6.7开始提供了copy来提高搜索的效率。它源于_all的,假如我们要经常对这三个字段进行搜索,那么一种方法我们可以在must子句中使用should子句运行bool查询。这种方法写起来比较麻烦。有没有一种更好的方法呢?copy_to可以将它们合成一个字段,这样可以方便我们的搜索。{ "city" : "北京", "province" : "北京", "country" : "中国", "location" : { ...

2020-07-11 12:52:05

spring-core:内省之MethodIntrospector

关于java bean的内省模式与spring bean的关联在之前的章节已经讲过。接下来要分享下方法内省MethodIntrospector,自从spring 4.2.3中开始支持,如果有热剩饭的感觉那你完全可以跳读了。//源自package org.springframework.core;public final class MethodIntrospector { public ...

2020-04-30 18:37:49

spring boot:日志系统源码深度解析

总所周知,spring boot对各类日志组件进行了集成,使用起来非常便捷,让我们需要定义对应日志框架的配置文件,比如LogBack、Log4j2等,代码内部便可以直接使用。话不多说,接下来让我们来领略spring这块的奥秘吧。目录spring如何集成日志组件LoggingSystemLogFile是什么LoggingSystem的实例化logback.xml的加载优先级...

2020-04-30 16:08:55

Java 开发者福利:aliyun java initializr和Cloud Toolkit

今天给大家分享2个国产优秀的开源工具,aliyun java initializr(spring脚手架)和Cloud Toolkit (idea plugin),工具是个好东西,比如PanDownload,可以让你在百度云盘上快速裸奔。1.aliyun java initializr近日阿里巴巴中间件发布不久的定制版Spring Initializr,熟悉Spring Initializr...

2020-04-21 11:52:23

spring5的那些事:@Indexed 解密

随着云原生的发展,很多技术会被重新掂量,重新定义,历来技术的发展也是遵循天时地利,以其势尽享其利。再云原生下,jdk的最大的问题在于笨重(几百mb),启动慢,而像Serverless架构,NodeJS技术栈可谓更完美。其实在jdk9中倡导模块化本质在于减少JVM的体积,不需要资源(Jar)不用再加载,而启动慢的问题其实也有解决方案GraalVM (一款类似于HotSpot VM),它的先进之处在于...

2020-02-29 18:27:58

ElasticSearch update api 和 update_by_query哪家强

很久没有怎么随记笔记了,今天这里是为了纠正一个一直以来我们使用es的一个误区,这个误区很大的可能你会就范。很多童靴会把update_by_query拿mysql的语法特性来用,那你就大错特错了,这里有必要温习下我之前的一篇update_by_query,理论上讲es的准实时的仅限于search,而get id则是实时的。实践往往是检验真理的唯一标准,看下面演示吧<!--1.关闭re...

2020-02-21 12:33:00

spring core:@AliasFor的派生性

spring对Annotation的派生性应用可谓炉火纯青,在spring core:@Component的派生性讲过支持层次上派生性,而属性上派生的需求则借助了@AliasFor,它是从spring4.2中开始支持的。@AliasFor注解用于声明注解元素的别名,应用于方法上(别忘了注解本质是接口)。Spring框架在内部使用大量的使用这个注解,例如,@Bean,@ComponentScan...

2019-12-31 19:15:03

spring core:@Component的派生性

spring对注解的拓展,早已超越J2EE的规约。通过注解可以实现其派生性(Annotation Hierarchy)。自从spring2.5开始,每个大版本都对其进行了增强。何为派生?没错一般能想到的就是属性派生,直接上代码,其实Parent和Child看似是派生的关系,但实则并无关系!它们是两个毫无关联的接口(我在面试的时候会提问:注解和接口的关系),通过javap -v .\Ch...

2019-12-31 15:13:29

再谈elasticsearch下的深度分页

Elasticsearch 在业务系统中使用也越来越广,一些开发规范也需要慢慢重视起来。 我们知道在关系型数据库中,我们被告知要注意甚至被明确禁止使用深度分页,在es中也应该尽量避免使用深度分页。es提供的分页查询是通过from和size参数来完成,from默认是0,size默认为10,比如:{ "from" : 100000, "size" : 50, "query" : { "ter...

2019-12-06 18:22:55

spring boot之maven-wrapper

Spring Boot有很多功能特性值得借鉴和学习,很多玩Spring Boot的人知道不需要安装Tomcat很方便,其实并没有发现Maven也是不需要提前安装。它这样做的好处在于解决了开发环境maven版本不一致导致的各种问题,spring boot中集成了maven-wrapper的确比较务实。它是什么相信大家都用到spring的脚手架:https://start.spring.io/...

2019-11-23 14:32:00

论spring事务下的消息发送

最近一直疲于重构canal consumer的客户端,近期也会陆续分享下一些开发同学常见的问题。其实很多时候发现问题并快速的解决问题并不难,难得时候是否有引起你的深度思考。谈起spring事务下发MQ消息,一般人都是直接撸面条式的硬代码,也有些高级的玩法会采用spring的ApplicationEvent来拓展实现,而spring中的@TransactionEventListener则是最高端的玩...

2019-11-15 15:30:16

再谈elasticsearch 高cpu问题

首先要阐述一个观点,任何技术都是为解决某一个领域的问题而存在的,我们在使用它的时候,尽可能使用它的优势(亮点),去发挥它应具备的业务价值。es在很多公司应用非常广泛,它已经成为玩大数据的必备的技能,在之前的章节我吐槽过es写方面的问题,今天将吐槽下es查询-terms语法的那些坑,这里探讨两点:一个是多terms并发带来高CPU,另一个是terms使用不当会导致bug。业务场景我们基于门店...

2019-09-19 18:05:58

畅谈Java模块化与微服务

微服务这2年的发展太热门了,这阵势很容易导致开发者一叶障目,首先微服务是需要一些技术沉淀的,其次和业务体量、开发团队的规模有关,这里不展开探讨微服务之殇。业务的复杂度继续堆积犹如潘多拉魔盒,本文将从依赖、模块化的视角来展开探讨。提前模块化,要从大神毕玄的osgi模块化中国社区谈起,模块对代码进行了更高一级的抽象作为一个基本单位,表现形式通常为一个jar或一个fat-jar。众所周知的,我们一般...

2019-09-03 23:08:08

es6.x下的filter query

说实话玩es的同学一般都会痛苦,为何api又变了?确实,明明按资深专家的建议来,但好像API完全找不到或被移除了,对,只能说es太热了。一般提到查询优化,就避不开filter query。我们query查询的时候会去计算下查询表达式和文档的匹配程度得分,得分越高的排的越靠前,而filter不会,filter是仅仅做过滤。filter主要通过bitset(类似于布隆过滤器,为每个倒排索引搜索...

2019-09-03 21:10:02

Redis工具列表

Redis tool listHere is a Redis tool list. I hope you will find one or two of them that you’d like to try out.Table of ContentsRedis ClusterRedis VarietyRedis ProxyRedis ModuleRedis ClientRedi...

2019-09-01 15:31:55

选 Zookeeper 作为注册中心我们还要注意些什么

Zookeeper是一个分布式协调框架,而在它的基本用法在上一节讲过了,很多同学可能会Zookeeper这么好,直接做微服务的注册中心也没啥问题的,其实关于这样点社区里也喋喋不休,几乎在dubbo的每届大会中有大篇幅的讲解。接下来将针对大牛在大厂大集群的实践中去探讨一些坑:1.注册中心是CP还是AP在之前的章节分享过关于Consul、zooKeeper、etcd、eureka作为注册中心的...

2019-09-01 15:00:09

再谈DDD和Microservices

面对高复杂度的时候我们会做关注点分离,这是一个最基本的哲学原则。技术维度分离,类似MVC这样的分层思想是我们广泛接受的 业务维度分离,根据不同的业态来划分系统,比如按售前、销售、售后划分微服务的架构更强调从业务维度的关注点分离来应对高复杂度。这是显著区别于传统SOA架构的特质之一,比如诞生于传统SOA时代的ESB(工业服务总线)就是一个典型的从技术关注点分离出来的中间件。业务和技术渐进...

2019-08-31 22:36:51

fastDFS精讲

在一般大中型的企业对文件的存储需求多种多样,特别是在容器化技术非常流行的时代下,依然有很多采用fastDFS,Distributed file system, DFS,又叫做网络文件系统,Network File System。一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。分布式文件系统是被设计用在局域网,而分布式数据存储,则是泛指应用分布式运算技术的文件...

2019-08-30 22:06:07

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享精英
    分享精英
    成功上传11个资源即可获取