自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

布道

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

  • 博客(32)
  • 资源 (15)
  • 收藏
  • 关注

原创 Spring4.1新特性 SmartInitializingSingleton在Ribbon中应用

SmartInitializingSingleton是spring 4.1中引入的新特效,与InitializingBean的功能类似,都是bean实例化后执行自定义初始化,都是属于spring bean生命周期的增强。但是,SmartInitializingSingleton的定义及触发方式方式上有些区别,它的定义不在当前的bean中(a bean's local construction ph...

2019-03-31 19:39:38 2338

原创 Springboot中HandlerInterceptor与HttpMessageConverter异常冲突

为何要讲HandlerInterceptor与HttpMessageConverter异常冲突呢?其实社区也有不少文章讲过(没有讲清楚),很多时候也存在滥用的情况,这里更多是从源码分析他们,并从中学习spring在请求处理这块优秀之处。目录示例代码HandlerInterceptor基础知识源码HttpMessageConverter基础知识:HandlerAdapte...

2019-03-30 19:46:08 2141

原创 Spring Cloud的 Feign和Ribbon重试机制的误区

在spring cloud项目中,因为用了feign肯定会用到ribbon,二者都提供了重试功能。引入的重试机制保证了高可用的同时,也会带来一些其它的问题,如幂等操作或一些没必要的重试。但很多人对其重试机制经常混淆,接下来将分析Feign和 Ribbon 重试机制的实现原理和区别。结论Feign和 Ribbon重试,其实二者的重试机制相互独立,并无联系。如果一个http请求,如果fe...

2019-03-28 19:16:01 4823

原创 spring cloud的Feign Hystrix Ribbon配置详解及原理

在之前的文章,分享了Feign、Hystrix、Ribbon的基本原理及源码实现,其中最让人头痛的就是配置,这也是很多开发者在使用spring-cloud-netflix组件最烦心的事(netflix的Archaius和相互交织),有时候感叹:见鬼了,我的配置怎么没生效,配置读取的好像不太对....诸如此类的问题!不过随着Spring Cloud Netflix项目进入维护模式,说实话Spring...

2019-03-27 23:14:13 10051 1

原创 经度算法:逆转单向链表

逆转单向链表,听上去是一个非常简单的题目,但如果在面试中遇到它,能够将它完完整整没有 bug 的写出来是着实需要费一番功夫的。期望在那急短的笔试题环节就轻松搞定这道题,那真是非常有算法天赋的人才能做到的事。天才总是极少数的,多数都是像我这样的庸才。单向的链表,不同于 Java 里面的 LinkedList(双向的链表)。链表中每个节点之间通过 next 指针串接起来,会有一个链表头和链表尾指针 h...

2019-03-26 22:07:05 560

原创 Spring Cloud Ribbon源码解析

负载均衡就是用来帮助我们将众多的客户端请求合理的分配到各个服务器,以达到服务端资源的充分利用和更少的请求时间,它是日活亿级用户的网站架构中最重要的手段。而Ribbon实现正向代理的软负载均衡,Spring cloud Feign默认集成Ribbon,所以注解@FeignClient的类,默认实现了ribbon的功能,在之前的spring cloud-feign源码中已经提过LoadBalancer...

2019-03-24 22:12:10 5136

原创 Spring Cloud Hystrix 源码系列:熔断器

circuit-breaker,circuit表示电路,译为熔断器非常精准,而Hystrix属于自动恢复的智能熔断器,它保护的着你的系统,宿主在调用方的应用系统中,避免因为依赖系统的异常或宕机而引发一系列连锁反应。Hystrix原理也比较简单,在一个时间窗口下,通过不断收集依赖服务(第三方)请求指标信息(sucess、failure、timeout、rejection),当达到设定熔断条件时(...

2019-03-23 17:20:08 1078

原创 经度算法:磁盘多路归并排序

如果说语言的基础语法和业务逻辑编码的经验积累是术,那么数据结构与算法思想、设计模式就是道。就好像笑傲江湖里面华山派的剑宗、气宗一样,在最前期的时候剑宗的门人一般要比气宗的门人厉害,因为他们剑法精炼,但是到了后期,当其中的门人把内你练上去之后,他们则会比剑宗的人更加厉害。当然只偏向于剑法而忽略内力修为,或者只注重内力修为而不注重剑法修为都是不对的,我们应该两者并重。多路归并排序在大数据领域也是常...

2019-03-22 23:10:35 954

原创 Spring Cloud Hystrix 源码系列:Metrics 收集

在 Hystrix Command 执行过程(开始执行、结束执行、异常、超时)时会不断发出各类事件,通过收集这些数据,提供给消费者。如断路器、Hystrix Dashboard可以统计分析这些数据,从而完成特定的功能。本文基于hystrix-core1.5.18(近年来几乎很少更新,建议升级)。目录1. rxjava1.2Observable.share1.3 Subject...

2019-03-21 21:40:40 1215

原创 spring boot中慎用@EnableWebMvc

什么情况?我为了自定义了一个HandlerInterceptor,非常普通的做法,先是继承了WebMvcConfigurerAdapter,再添加了@EnableWebMvc。注:本篇基于spring-webmvc 4.3.9版本。@EnableWebMvc@Configurationpublic class XXXAutoConfiguration extends WebMvcConf...

2019-03-21 20:53:11 8469 1

原创 Spring Cloud Hystrix 源码系列:HystrixCommandAspect 入口解析

在前面的文章已经基本上讲过Hystrix的由来,功能介绍及工作原理。本篇开始正式进入Hystrix 源码分析阶段,将带你深入简出的理解HystrixCommandAspect、HystrixCommand、HystrixObservableCommand的内部构建。本文基于hystrix-core1.5.18(近年来几乎很少更新,建议升级)。目录1. HystrixCommandAspe...

2019-03-21 17:49:46 2698

原创 MyBatis缓存机制

MyBatis的前身是iBATIS,它是一款优秀的支持自定义SQL查询、存储过程和高级映射的持久层框架,消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。在日常工作中,它是常见的Java数据库访问层框架,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。目录1. 基本功1.1 整体架构...

2019-03-20 23:14:20 6281

原创 window7下同时使用github和gitlab

最近公司的代码管理慢慢从svn迁移至gitlab(可参阅相关笔记),而个人也一般会采用github托管一些开源代码代码。如何能在本机环境下二者切换自如,免密,无冲突提交,这个分享下。注:个人环境是window7,TortoiseGit 2.5.0.,git.exe2.15.11.生成密钥打开git-bash.exe,生成公钥和私钥,生成后的目录为:C:\Users\fei.chen...

2019-03-19 17:17:22 2274 1

原创 nginx gzip带来的启示

网站的流量越来越多大,对于使用nginx的优化变得非常重要,经过gzip(GNU-ZIP)压缩后页面大小可以变为原来的30%甚至更小,当用户浏览页面的时候速度会块得多。gzip是规定的三种标准HTTP压缩格式之一,目前绝大多数的网站都在使gzip传HTML、CSS、JavaScript等资源文件。目录1. gzip交互流程2. 任何内容都可以开启gzip压缩?3. ngi...

2019-03-18 16:08:40 1409

原创 spring cloud 系列之Netflix Archaius

在之前的系列讲过Hystrix的核心实现源码,多次提及到Archaius(Netflix公司开源项目之一),其实Netflix的所有组件都是通过它获取配置。Archaius主要用于多配置存储的动态获取,基于对apache common configuration类库的扩展。本文基于hystrix-core1.4.26(最新的1.5.18会有些差别)。//比如Hystrix有使用publi...

2019-03-17 16:32:49 1972 1

原创 ElasticSearch update_by_query

项目中需要定时对ElasticSearch的某些数据进行更新,数据量十几万,采用RestClient更新,在没有设置超时的情况下,报错如下:java.io.IOException: listener timeout after waiting for [30000] ms一般通常的做法都是修改超时时间设置:restClient = RestClient.builder( ...

2019-03-16 19:37:38 6324 2

原创 微服务框架 spring-cloud 绝非你唯一的选择

Spring Cloud全家桶的构建是建立在Spring Boot基础上的,特别上容器化技术已经成熟,以快而著称,号称3秒内启动。其实企业级的docker容器一般内存低于4g(快),如何解决SpringBoot巨耗内存,构建慢,启动也很慢,这确实是每个架构师一个很值得思考的问题!当然,Spring Cloud的工艺水平有多优秀,更新速度之快,稳定性,成熟度,早已在很多大型的企业级的应用中得到验证。...

2019-03-14 22:22:46 1271

原创 那些年我们追过的异步骚操作:ListenableFuture、CompletableFuture、RxJava(Observable)

Futures在Java 5(2004)中引入。它们是承诺在操作完成后保留操作结果的对象。调用者可以使用future对象来检查操作isDone(),或者等待它完成使用get()。Future模式一个最大的问题是何时调用问题(过早地阻塞Future.get(),这消除了异步执行的好处)。guava的 ListenableFuture、java8的CompletableFuture、RxJava的...

2019-03-13 22:07:26 6192 1

原创 自研数据聚合组件

随着服务化越来越多,单个VO或BO属性拆分之痛已成为业务系统日益突出的问题。大量重复的代码逻辑都是用来处理依赖(查询方面的数据聚合操作),而通讯方式通常都是rest-http。功能特性多数据源支持:springBean和普通类(理论上包含http-eureka、esb) 后置填充(目标方法执行后介入) 单VO及List支持 并发填充支持 List开启性能优化 接入方的参数传...

2019-03-13 09:53:02 881

原创 屏蔽来自CSDN的垃圾广告

CSDN 上的垃圾广告太多了,特别这种百度推广的广告特别恶心!!如果你使用的是windows,可以轻松屏蔽掉,只需要 改一下 hosts 文件(位于 C:\Windows\System32\drivers\etc)127.0.0.1 cpro.baidu.com127.0.0.1 pos.baidu.com127.0.0.1 wangmeng.baidu.com127.0.0.1 ...

2019-03-12 22:49:35 963 1

原创 ElasticSearch 源码之Guice

es 使用google开源的依赖注入框架guice,这个项目号称比spring快100倍,不过由于其代码比较简洁,这样的结论是很有可能的。es 是直接把guice的源码放到自己的包内(es把很多开源项目的代码都直接集成到自己项目中,省得依赖一堆的jar包,也使es的jar包达到差不多10M),它位于org.elasticsearch.common.inject目录下。es 里面的组件基本都...

2019-03-12 17:13:58 950

原创 Elasticsearch 谜之null values

很多时候,我们需要面临null值的烦扰,查询es时传入null值是要查询出null的数据还是不查这个field呢,稍有不慎就会引发新的bug,这的确是个问题!null_value 意味着无法索引或搜索空值。当字段设置为 null , [] ,和 [null] (这些null的表示形式都是等价的),它被视为该字段没有值。null_value 意味着它将不会被表示为一个反向索引数据结构,它们根...

2019-03-12 11:10:18 4592

原创 elasticsearch 数组的注意事项

我都知道lucene是不区分数组类型的,而elasticsearch中没有专用的数组类型,对Array datatype支持不需要专用类型(理解为动态的字符串或object类型)。默认情况下,任何字段都可以包含零个或多个值,但数组中的所有值都必须具有相同的数据类型。本文基于es 6.2,比如:["one","two"] [1,2] [{ "name": "Mary"...

2019-03-11 18:39:49 8337

原创 基本功:你不知道StringJoiner

StringJoiner是Java8新出的一个类,用于构造由分隔符分隔的字符序列,并可选择性地从提供的前缀开始和以提供的后缀结尾。StringJoiner nameJoiner = new StringJoiner(":", "[", "]");nameJoiner.add("George").add("Sally").add("Fred");System.out.println(nam...

2019-03-11 12:28:45 2541

原创 spring boot @SpringBootApplication @EnableAutoConfiguration 的工作原理

在spring boot中@SpringBootApplication、@EnableAutoConfiguration是最常见Annotation,且最为重要,所以本文将展开对此的解读。@SpringBootApplication在spring框架中的处理尤为复杂,然后能将它的来龙去脉(加载机制)讲清楚的文章非常少。说实话你要完全理解及解读它,需要对spring3.x的源码有一定程度了解,主要...

2019-03-10 18:07:30 1493

原创 Spring Boot 容器启动原理揭秘

不得不讲SpringBoot 使用起来太方便了,它的外表轻巧简单,在企业级的应用系统中非常流行,已经成为java开发者必备技能。而它采用的one-jar的方案已经深入人心,其实one-jar技术早在2004年就已经被提出,除此之外spring boot的强大的自动配置类也是非常的受用,总之用过的童靴都会很感觉一个字“爽”。但是 SpringBoot它内部实现却非常的复杂,它常常把爱研究源码的读者绕...

2019-03-08 21:50:20 16262

转载 elasticsearch PB级规模数据的深度好文

这里推荐一些大厂的深度好文,对Elasticsearch的实践。阿里云PB级规模数据的Elasticsearch分库分表实践 滴滴Elasticsearch多集群架构实践 有赞Elasticsearch的索引和集群隔离实践 滴滴Elasticsearch Query DSL分析系统 ES在蚂蚁金服的中台实践经验 更多 ...

2019-03-07 23:07:00 2334

原创 Spring boot 源码分析-Conditional

在Spring Boot中大量的应用到@Conditional条件注解,Condition接口是spring4.0增加的条件判断接口,用于判断条件满足情况,主要集中在Bean的定义和使用。当前文章基于spring boot1.5.4.RELEASE,spring-core4.3.9.RELEASE。目录1. 用法演示1.1 小结1.2 spring Condtion拓展集2...

2019-03-07 17:01:06 947

原创 Elasticsearch 模糊查询 wildcard、regexp、prefix选型

之前讲过Elasticsearch 的wildcard(通配符查询)、regexp(正则查询)、prefix(前缀查询),他们都是致力于模糊搜索,然后在实际的项目中该如何选择,稍不注意就可能到很大性能问题。使用方式这里就不再赘述了,他们都是基于词条查询,它们也需要遍历倒排索引中的词条列表来找到所有的匹配词条,然后逐个词条地收集对应的文档ID。针对Numeric datatypes(long...

2019-03-07 13:40:21 33819

原创 java冷知识:javac AbstractProcessor

Annotation Processor是javac的一个工具,它用来在编译时扫描和处理注解,通过Annotation Processor可以获取到注解和被注解类的相关信息,然后根据注解自动生成Java代码,省去了手动编写,提高了编码效率。目录它可以做什么?ProcessorAbstractProcessor源码实现一个打印可以API的功能google的 auto-se...

2019-03-06 22:11:53 15060 7

原创 Spring Cloud Hystrix 源码系列:HystrixRequestContext

在讲HystrixRequestContext之前,先了解下Hystrix 跨线程传递数据的知识,我们都知道ThreadLocal、InheritableThreadLocal跨父子线程传递数据。本文基于hystrix-core1.5.18(近年来几乎很少更新,建议升级)需求描述服务A 通过 Feign + Hystrix 调用服务B,服务间调用时需传递 JWT Token,希望在Fei...

2019-03-02 22:18:15 3709

原创 spring mvc的DataBinder、Validator、BeanWrapper、ConversionService、Formatter

很多人对spring mvc的请求处理流程都不陌生,今天我们要展开讲解的是请求体数据body的绑定、验证、格式化、类型转换,它是怎样实现的呢?其实就是大家熟悉的HandlerAdapter干的事情。为何要讲这个呢?其实和我最近的工作内容是分不开的,刚好在设计开发一个数据聚合组件(它主要是解决微服务化后vo 拆分之疼),当然后续会开源出来的。目录spring mvc知识回顾BeanW...

2019-03-02 16:57:28 3776

autojs-debug-4.1.1 Alpha2.apk

Auto.js 是个基于 JavaScript 语言运行在Android平台上的脚本框架,常用的用于自动化场景,最新打包打包的 autojs-debug-4.1.1 Alpha2.apk

2020-09-18

OWASP测试指南(中文)

OWASP测试指南(中文)

2016-09-21

一种简单,轻量,高性能Json对象设计方案

做过性能优化,超越JavaScriptSerializer与Newtonsoft.Json

2013-08-24

C++数据加密工具

提供DES(单倍长)、3DES(双倍长)、3DES(三倍长)、MAC运算、XOR运算、分散运算、ECB算法、CBC算法,很好用的,值得收藏的!

2013-04-19

Oracle系统函数

数学运算函数 字符串函数 日期函数 统计函数

2010-05-26

jquery的帮助文档,比较权威的API

本文档旨在帮助广大javascript爱好者快速了解jquery库,以及供广大应用jquery进行开发的人员 提供一个速查手册!

2009-12-24

jvascript的调试插件

Javascript的debuy跟踪,调试,轻松解决javascript的脚本错误! 这个可以安装到任何浏览器上,对于从事web开发人员而言十分的实用,安装后,打开工具-高级-取消禁用脚本调试的两个选项的选择

2009-12-24

winform窗体皮肤包

里面提供了很多已经做好的皮肤包,你可以替换成你喜欢的窗体风格(demo程序),另外还附带有免费的制作皮肤的软件和dll,非常实用!

2009-12-24

免费的恶意软件清理助手

很好用的插件,不休要安装,就可以杀毒、修改ie浏览器、注册表、卸载软件等

2009-09-09

动态制作gridview

如果你不想使用服务器空件gridview或是datalist或是repeart等显示的,原因:这些服务器空间占用服务器资源,页面源码中还有许多的加密字符串,你就可以采用我那种技术。

2009-09-09

asp.net制作中英文网站

这个资源文件很很适用的,可以在web.config中配置默认的语言

2009-09-09

asp.net的session和cookie的应用

这个对于web开发很有用途,这个是我总结下来的.............

2009-05-17

Javascript里的String原来不能用双引号括起来.jpg

javascript常常会出现"缺少对象"

2009-05-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除