自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 springboot【web启动流程-1】

想必大家都体验过springboot的便捷,以前想要运行web项目,我们首先需要将项目打成war包,然后再运行Tomcat启动项目,不过自从有了springboot,我们可以像启动jar包一样简单的启动一个web项目,今天我们就来分析下springboot启动web项目整个流程。分析springboot,万变不离其中,一样从启动方法作为入口public Configu...

2019-11-03 11:27:19 667

原创 自定义ribbon负载均衡策略

虽然ribbon默认为我们提供了多钟负载均衡策略,但有时候我们仍然需要自定义符合自身业务逻辑的规则使用配置文件的方式:我们只需要在配置文件中添加配置    serviceId.ribbon.NFLoadBalancerRuleClassName=自定义的负载均衡策略类其中 serviceId 为具体服务名这样在调用对应服务时候,就会使用我们自定义的负载策略,很方便对于该配置文件springclou...

2018-06-12 20:37:55 2864

原创 @LoadBalanced注解与客户端负载均衡的实现

     在SC项目中,我们需要使用负载均衡方式的restTemplate 只需要在RestTemplate的Bean上加上@LoadBalanced注解即可,非常方便,这个是怎么做到的呢 (笔者之前也很好奇)     首先我们看下@LoadBalanced定义/** * Annotation to mark a RestTemplate bean to be configured to use...

2018-05-29 15:42:58 5712

原创 SPRING源码分析(四)之@Configuration @Bean的方式配置bean

在微服务大趋势下Springboot,Springcloud成为更多公司新项目技术框架的选型 ,Springboot简洁的基本零配置,很重要的一点是将以前通过xml方式配置bean转换为通过@Configuration @Bean的方式来进行,今天主要分析下Spring是如何来实现对这两个注解进行处理的             通过Springboot的启动来跟踪分析容器的启动(这

2017-11-21 14:44:31 9100 1

原创 elasticsearch None of the configured nodes are available遇到的坑

今天在使用 TransportClient时候  execute时候一直 报错           Exception in thread "main" NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{kN4hYC9KTmC-yK1pRDESsQ}{localhost

2017-11-15 18:13:59 2069

原创 SpringMVC源码解析(四)之关于json,xml的自动转换原理

关于json,xml的自动转换原理的核心就在messageConvert,前一篇我们已经分析到通过messageConvert对请求参数进行解析读取,那就续点分析。            本节就以json的转换为例(xml类同只是不同的messageConvert)来进行分析,在我们对请求参数解析时候回顾下readWithMessageConverters方法body = ((

2017-10-03 14:10:13 1081

原创 SpringMVC源码分析(三)之Controller方法参数的工作原理

前一篇博客中,我们分析了springMVC对请求地址解析以及转发执行的原理过程,本节将重点分析下Controller方法中参数的工作原理         分析入口依然是上一篇中提到的 ServletInvocableHandlerMethod 类的 invokeAndHandle方法:       我们知道在创建该handlerMethod实例时候,我们设置了相应的 res

2017-10-03 11:00:01 895

原创 SpringMVC源码分析(二)之请求如何转发到对应的Controller

在前一篇对DispatcherServlet的分析中,初略的过了下请求是如何处理的,本文将重点分析,HandlerMapping与HandlerAdapter是如何工作的                在web容器启动的过程中,会初初始化一系列SpringMVC所需的类,这里我们看看AbstractHandlerMethodMapping类的initHandlerMethods方法

2017-10-01 16:53:14 1889

原创 SpringMVC源码分析(一)之DispatcherServlet

我们知道SpringMVC的入口是DispatcherServlet,想进一步了解springMVC的技术内幕就得从这个servlet着手     首先我们看下DispatcherServlet的Diagram关系图:   HttpServletBean继承自HttpServlet  覆写了 init方法 public final void init() throws

2017-10-01 15:04:27 401

原创 dubbo + jenkins持续集成 shell 脚本样例

当我们使用dubbo分布式服务架构体系以后,由于服务众多导致部署发布比较费力,于是利用jekins来做持续集成 ,可以很好的解决服务发布部署问题   这里记录下  shell脚本样例#!/bin/sh## java optexport JAVA_HOME=/usr/local/java/jdk1.8.0_101export JRE_HOME=$JAVA_HOME/j

2017-08-30 13:58:26 1505

原创 微信支付签名遇到的坑

这两天做了下微信支付,其中也遇到不少问题,记录下,以免下次重复踩坑。        结合我们项目使用场景,我选择了扫码支付 模式二 (具体开发步骤见 官方文档  扫码支付模式二)        微信下单方法:              SortedMap param = new TreeMap(); //公众号ID param.put("appid", ap

2017-06-29 16:10:01 2307

转载 CentOS rpm方式安装jenkins

jenkins下载:http://pkg.jenkins-ci.org/redhat/下载rpm包到本地在linux下使用rpm包安装命令:sudo rpm -ih jenkins-1.562-1.1.noarch.rpm[root@bogon Desktop]# sudo rpm -ih jenkins-2.9-1.1.noarch.rpm warning: jen

2017-04-28 17:02:32 4612

原创 SPRING源码学习之路(三)——<aop:config>自动代理的实现

关于Spring AOP的基本概念这里不作阐述,重点关心autoProxy        对于标签的解析,对应的类 AopNamespaceHandler,ConfigBeanDefinitionParser        ConfigBeanDefinitionParser核心方法parse的具体实现如下:public BeanDefinition parse(Ele

2017-04-27 18:18:22 439

原创 centOS6.5安装rabbitmq

之前一直在window平台下使用rabbitmq,今天尝试着在centos安装,结果遇到很多问题,这里记录下         具体步骤:         1.首先下载rabbitMQ,官方地址 http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.9/ 这里我选择的是    创建一个用来保存软件的目录 例如

2017-04-24 15:49:19 563

转载 RabbitMQ:在Ubuntu14.04下的安装笔记

rn 虽然我们的服务器大多为CentOS,但是有少量Ubuntu的机器,也一并做个交接。 在CentOS的安装,见我另一篇博文,那是相当的方便。 http://blog.csdn.net/sharetop/article/details/49716897安装有两种办法,一是直接从官网下载最新的deb文件,但是在你dpkg -i 时,因为缺少erlang的依赖,只能再通过apt-ge

2017-04-21 11:18:39 346

原创 ubuntu配置SSH远程连接

ubuntu系统默认未安装SSH,需要自己手动安装             安装ssh-server   sudo apt-get install  ssh-server            安装完成 启动服务       /etc/init.d/ssh start            启动完成,可以通过ps -ef | grep ssh命令来查看是否启动成功root

2017-04-17 11:12:23 1624

原创 netty物联网实践之(一)

最近接了个智能手表项目,正好学习实践下netty           对于netty的I/O模型,设计尽量不在在EventLoopGroup线程中处理耗时业务逻辑,这里我引入了MQ(rabbitMQ),netty服务端在接收到客户端指令以后,不作逻辑处理只提取出客户端channel标记信息,就转发指令到MQ,通过业务线程池专门处理业务。当需要向客户端主动推送消息时候,监听MQ队列,解析指令

2017-04-01 16:55:03 8411 8

原创 NAT模式下 宿主机与虚拟机不能Ping通的解决方式

为了方便,一般情况下都会选择远程连接来操作虚拟机系统,但在设置好虚拟机网络模式为NAT以后,虚拟机是可以上网,ping通宿主机,可是宿主机访问不到虚拟机    导致没法远程连接。          在网上查了下资源,居然有人说NAT模式下,宿主机本身就没法ping通虚拟机,(被坑惨了)      其实很简单                          

2017-03-13 14:27:15 25208 20

原创 Hadoop学习之路(一)环境准备

一 .环境准备:VM虚拟机 centos 6.*远程访问工具  SecureCRT                二 .安装系统              关于虚拟机怎么装centos系统 略。。。。        三 .网络配置             网络连接  选择的network adapter 模式(NAT)            

2017-03-11 09:53:39 320

原创 SPRING源码学习之路(二)

上一篇,已经对IOC容器的初始化过程有个大体认识,接着看IOC容器的依赖注入。      依赖注入的触发是在用户第一次向容器索要Bean时才触发,当然也可以设置lazy-init让容器提前完成Bean的预实例化,预实例化是在初始化过程中完成     我们都知道IOC容器提供了很多获取Bean的方法,这里我们以DefaultListableBeanFactory的getBea

2017-03-09 15:13:02 1800

原创 SPRING源码学习之路(一)

结合《Spring技术内幕:深入解析SPRING架构与设计原理》这本书开启Spring学习之路。ps:之前其实已经看过一部分了,但是也就是看过,一看而过了。o(╯□╰)o结合FileSystemXmlApplicationContext来分析  具体实现如下://对象初始化时候 调用refresh(),启动了BeanDifinition载入过程public FileSyste

2017-03-08 09:50:47 2389 1

原创 SQL小技巧--分组排序

半个多月的春节假期不知不觉就过去了,今天公司也正式开工了,可能是在家待着实在太舒服,以至于第一天的各种不适应,这么多天没碰代码,有种莫名的陌生感,相信很多人都有这种感觉  (哈哈  新的一年还是继续努力工作 努力 学习  )第一天给我的惊喜不是各种开门红包,而是积攒了半个多月的各种奇怪的八阿哥(bug),碰巧看到之前写的一段sql,记忆有些模糊,这里记录下以免下次真的忘记了

2017-02-06 11:30:30 652

原创 ELK 5.1.1版本部署搭建

前因:  相信大家好多人也被生产环境莫名的bug所诟病过,本地环境跑起来没有问题的代码,发布到生产环境就会出现各种情况的问题,导致出问题只能上生产看日志(小公司体系不全),而生产环境只有规定的人有权限,艾玛反正就是各种蛋疼,改个bug各种困难         最近碰巧看到ELK,感觉很强大,于是各种百度搭建了个环境,这里记录下以便后续深入学习ELK由elasticsearch,lo

2017-01-05 18:09:15 3192 2

转载 ELK实时日志分析系统

转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-elk/ELK 协议栈介绍及体系结构ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下

2016-12-30 17:20:25 4504

原创 activiti高亮当前节点

有时候为了方便申请人查看当前流程走到哪个节点,比较直观的办法就是高亮当前节点,当然activiti也提供了API供我们调用生成图片示例代码:public byte[] generateImage(String processInstanceId){ //1.创建核心引擎流程对象processEngine ProcessEngine processEngine =

2016-12-16 16:24:39 2925

原创 shiro自定义会话验证调度器

自定义会话验证器,实际上是对Shiro的Quartz升级,使其支持2.0以上版本兼容Spring4对Quartz版本的要求重写SessionValidationJobpublic class QuartzSessionValidationJob implements Job { /** * Key used to store the session mana

2016-12-12 10:54:11 3852

原创 netty简单实例

服务端的创建时序图:步骤:1.创建ServerBootstrap实例2.设置并绑定Reactor线程池3.设置并绑定服务端channel4.TCP链路建立,创建并初始化ChannelPipeline5.初始化ChannelPipeline完成以后,添加并设置ChannelHandler6.绑定监听端口并启动服务端7.Selector轮询,由Reactor线程NioE

2016-12-07 11:32:23 706

原创 java内存模型

1.java内存模型规定所有的变量都存储在主内存中,每个线程有自己独立的工作内存,保存了被该线程使用的变量主内存的复制(简单讲就是主内存变量的一个拷贝),线程对这些变量的操作都在工作内存中进行,不能直接操作主内存和其他线程内存中存储的变量或者拷贝,线程间的变量访问需要通过主内存来完成,关系图:2.8种内存交互操作①.lock:主内存变量,把一个变量标示为某个线程独占状态,也就是给该

2016-12-03 14:48:31 608

转载 synchronized和lock的实现原理

本文转载自http://wenku.baidu.com/view/41480552f01dc281e53af090.html?re=view目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。数据

2016-12-03 14:35:01 393

转载 Java Executor 框架

转自 http://www.cnblogs.com/hzmark/archive/2013/01/21/JavaExecutor.htmlJava Executor 框架     Executor框架是指java5中引入的一系列并发库中与executor相关的功能类,包括Executor、Executors、ExecutorService、Compl

2016-12-01 10:07:36 323

转载 java NIO的模型来源

一、引子    nio是java的IO框架里边十分重要的一部分内容,其最核心的就是提供了非阻塞IO的处理方式,最典型的应用场景就是处理网络连接。很多同学提起nio都能说起一二,但是细究其背后的原理、思想往往就开始背书,说来说去都是那么几句,其中不少人并不见的真的很理解。本人之前就属于此类,看了很多书和博客,但是大多数都只是讲了三件套和怎么使用,很少会很细致的讲背后的思想,那本次我们就来

2016-12-01 09:58:57 763

转载 nginx配置文件详解

Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ;Nginx用户及组:用户 组。window下不指定 worker_processes 8;工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。 error_log  logs/error.log;  error_log  

2016-11-17 10:09:27 316

原创 shiro注解授权源码分析

老问题,要知道注解授权方式为什么能生效,首先得找到入口,相比登录的过程不同,对于这个验证权限的这个过程shiro采用了springAOP的方式首先在spring配置文件中 我们得开启shiro的注解: 那么我们的入门就找到了,AuthorizationAttributeSourceAdvisor类继承了StaticMethodMatcherPoi

2016-11-16 16:26:12 2756

原创 shiro登录过程分析

关于shiro就不用做过多介绍了,今天主要分析下登录过程首先我大致画了个流程图(可能不够详细):第一步:用户登录,根据用户登录名密码生产Token UsernamePasswordToken token = new UsernamePasswordToken(username, password);Subject subject = SecurityUtils.get

2016-11-15 18:03:37 9726

转载 zab协议(zookeeper atomic broadcast)原子广播

ZooKeeper为高可用的一致性协调框架,自然的ZooKeeper也有着一致性算法的实现,ZooKeeper使用的是ZAB协议作为数据一致性的算法,ZAB(ZooKeeper Atomic Broadcast )全称为:原子消息广播协议;ZAB可以说是在Paxos算法基础上进行了扩展改造而来的,ZAB协议设计了支持崩溃恢复,ZooKeeper使用单一主进程Leader用于处理客户端所有事务请求,

2016-11-12 17:48:08 2393

原创 cas添加验证码以及默认错误几次以后才出现验证码

趁着周末加班,抽点时间完善下关于cas服务端的改造,其实过了好久,有些东西不看也想不起来了,当然自己做过的东西熟悉起来那也是相当的快的,废话不多说进入正题获取验证码,其实就是后端返回的一张图片,首先定义获取图片的控制器public class CaptchaImageCreateController implements Controller,InitializingB

2016-11-12 11:42:06 4106 9

原创 cas自定义primaryPrincipalResolver,拓展对用户返回信息复杂查询的支持

前面粗略的介绍了对于返回更多信息的简单配置,但是有些时候业务的需求  不是简单的查询语句就能解决,比如说我查询用户信息需要结合登录凭证中的多个字段例如:我们有个项目的登录用户确定是根据访问域名和登录名同时确定的,这样就不得不进行拓展。primaryPrincipalResolver:解析Credential(用户凭证,简单点就是用户登录信息)处理成用户登录成功以后的返回信息

2016-11-12 09:46:37 3027

原创 activiti超时自动审批

有时候业务需求,我们得定时或者是多久以后处理task,最近项目就有个这种场景,当流程到某个节点以后,过多久未处理自动流转到下一个节点、activiti自身是支持这种业务场景的。这里给个简单的示例流程图:xml文件: ${duTime}

2016-11-10 18:11:56 17821 10

原创 zookeeper数据模型

ZooKeeper的最小数据单元ZNode,ZNode可以保存数据,也可以挂载子节点,依次构成一个层次化的结构,可以看作是树。ZNode的节点路径由一系列使用斜杠(/)进行分割的路径表示,可以向节点中写入数据,也可以在节点下面创建子节点。事务ID:在ZooKeeper中事务是指能够改变服务器状态的操作,也称为事务操作和更新操作,一般包括数据节点的创建与删除,数据节点内容更新和客户端会话

2016-11-03 11:16:32 350

原创 spring tx标签配置事务的解析过程

昨天遇到个问题,同一事务内,前一步插入成功的记录,后面的查询不到这条记录,折腾了我好久,最后发现自己把工具类放错包了 。刚好也顺便看了下tx标签配置方式下 事务的解析过程,参考地址:http://michael-softtech.iteye.com/blog/monthblog/2010-11首先关于spring事务的配置方式,相信大家都知道是有5种,但我们经常使用的应该就是基于注

2016-10-25 10:15:53 12802

空空如也

空空如也

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

TA关注的人

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