自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(202)
  • 资源 (3)
  • 收藏
  • 关注

原创 hystrix属性描述

[code="java"]super(Setter //设置GroupKey 用于dashboard 分组展示 .withGroupKey(HystrixCommandGroupKey.Factory.asKey("Semaphore4UserLotteryLimitingGroup")) ...

2018-10-08 11:44:39 312

原创 shiro落地的设计复杂度(最后总结)

经过1周的源码研究,终于对shiro的原理有了深刻的理解,基于原理我们识别出生产环境落地这个技术的设计复杂度shiro落地的设计复杂度:(1)自定义CachingSessionDAO,这是核心,因为它存储了session,Principals,AuthenticationState等所有可以持久化的数据。(2)sessionid无状态化设计:我们就可以通过继承DefaultWe...

2018-06-19 17:22:30 344

原创 shiro login成功后保存了哪些数据

shiro login成功后 保存了Principals 和 AuthenticationState到session中,所以我们每次请求都能从session成功获取到这2个属性。 核心类:DefaultSubjectDAO[code="java"]public Subject save(Subject subject) { if...

2018-06-19 17:05:58 2990

原创 shiro 会话原理分析

1、从哪里获取sessionid每次请求都会尝试获取sessionid获取流程:DefaultWebSessionManager -->getReferencedSessionId-->getSessionIdCookieValue-->simpleCookie(JSESSIONID) 抛出问题:为什么能从cookie中获取sessionid, 请看第3点的初始化...

2018-06-19 12:40:51 737

原创 shiro内部原理分析

一句话总结:会话域Context一路收集principals, authenticated, host, session(readSession()返回), sessionEnabled, request, response, securityManager ; 最终被存入到了返回的这个Subject中 1.第一步:ShiroFilterFactoryBean的初始化和创建(1)实现B...

2018-06-15 17:07:22 621

原创 Zookeeper入门-001 源码环境搭建

1.到github下载源码:https://github.com/apache/zookeeper  2.使用ant对源码编译成eclipse工程:ant eclipse ant eclipse执行失败的问题解决:         get src="http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse...

2018-03-15 11:47:26 110

原创 dubbo服务治理之路由规则研究

1.今天没太多事情,挤出点时间,研究了下dubbo的路由规则实现。首先,看看dubbo消费端的主要调用流程(这里就不画图了),以后补充:第一步:创建消费端代理:ReferenceConfig.createProxy,这里没什么特别,典型的C/S调用设计,都是通过JAVA动态代理或是Javassist的代理实现,比如mybatis mapper。思考:假如我想实现API网...

2018-01-31 15:50:42 1189

原创 shiro SecurityUtils.getSubject()深度分析

1.总的来说,SecurityUtils.getSubject()是每个请求创建一个Subject, 并保存到ThreadContext的resources(ThreadLocal)变量中,也就是一个http请求一个subject,并绑定到当前线程。问题来了:.subject.login()登陆认证成功后,下一次请求如何知道是那个用户的请求呢?友情提示:本文唯一可以读一下的就是分析...

2018-01-12 17:38:58 6273

原创 线程池拒绝策略分析

(1)AbortPolicy:java.util.concurrent.RejectedExecutionException (触发条件:线程数=maximumPoolSize 且 queue已满),后果:线程池终止 --非常严重,证明需要流量控制了,或者资源容量需要扩容了(2)DiscardPolicy :策略会悄悄抛弃新提交的任务 (触发条件:线程数=maximumPoo...

2018-01-09 16:35:33 270

原创 @Async核心实现1 --------AsyncExecutionAspectSupport

基本原理:通过spring的扩展接口AbstractBeanFactoryAwareAdvisingPostProcessor,初始化自定义的切面AsyncAnnotationAdvisor来实现方法的代理,最后通过自定义方法拦截器AsyncExecutionInterceptor实现异步执行。核心实现是:1.继续接口MethodInterceptor2.获取自定义注解:g...

2017-12-27 10:34:02 762

原创 今天开发环境重新搭建了一个jenkins,遇到执行远程shell脚本失败

1. 今天开发环境重新搭建了一个jenkins,遇到执行远程shell脚本失败。问题1: java:command not found.环境变量问题:默认取的是jenkins的环境变量,需要shell脚本配置环境变量PATH。问题2:nohup 的输出需要重定向,否则执行不了命令(/dev/null 2>&1 &),完整例子:[code="java"]...

2017-11-07 10:10:51 1688

原创 spring boot 核心类:SpringApplication--003

 1.这个类执行逻辑:(1)通过构造函数初始化Application Listeners和Application Context Initializers(采用SPI设计,从spring boot源码META-INF/spring.factories配置中抓取实现类) (2)run方法:这里不做详细展开分析,后续展开第1步:执行应用监听器(listeners.started...

2017-09-07 17:25:17 105

原创 初学spring boot (定制tomcat容器)--002

 一:spring boot定制tomcat容器 1. 首先spring boot 通过注解@EnableAutoConfiguration初始化各种自动装配和bean,其中默认注册 TomcatEmbeddedServletContainerFactory 到 DefaultListableBeanFactory。 2. 转化为java语言:定制一个bean. 第一反应就...

2017-09-06 17:18:43 145

原创 解决了DeferredResult请求长时间占用数据库连接的问题

最近看了看开源项目appllo配置中心的源码,发现一个很有意思的东东:(1)原理:由于使用了DeferredResult,根据Spring DispatcherServlet的默认逻辑,数据库连接只有在异步请求真正返回给客户端的时候才会释放回连接池(2)应用场景:长连接时间很长,对于大部分请求可能都要数小时以上才会返回。在这么长的一段时间内一直占用着数据库连接是不合理的长连...

2017-08-04 09:55:43 1039

原创 解决 java.lang.LinkageError: loader constraint violation: loader (instance of cn/o

最近入职一家新公司,然后用了公司的一个框架,碰到一个错误:java.lang.LinkageError: loader constraint violation: loader (instance of cn/openlo/gear/GearClassLoader) previously initiated loading for a different type with name "org...

2016-12-26 13:56:37 4348

原创 与大师面对面交流:Chris Richardson 来华布道微服务架构

http://www.daocloud.io/microservices.html

2016-11-28 21:28:56 123

原创 spring boot最全配置

http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

2016-09-29 01:20:06 108

原创 初学spring boot(扫盲)---001

1.这2天学了一下spring boot,为了扫盲spring cloud,记录学习心得。2. 第一天简单回答几个问题:(1)spring boot是如何内嵌tomcat容器的。解答:这个我没看代码也大概猜到了,因为以前看ClassPathXmlApplicationContext源码的时候,AbstractApplicationContext的refresh()方法是有很多预...

2016-08-31 15:38:58 158

原创 mysql sequence

-- 序列表DROP TABLE IF EXISTS sequence;CREATE TABLE sequence (name VARCHAR(50) NOT NULL,current_value INT NOT NULL,increment INT NOT NULL DEFAULT 1,PRIMARY KEY (name)) EN...

2016-08-09 13:56:22 111

原创 Permission Denied(publickey) 解决

1.生成公钥和私钥放到C:\Users\itservice\.ssh,并在oschina添加公钥http://blog.crazyphper.com/?p=34722.添加本地仓库到远程仓库:http://blog.csdn.net/xdonx/article/details/88603101. git init2. git add .3. git commit...

2016-07-14 19:18:28 639

原创 mybatis3源码核心类5--SimpleStatementHandler

SimpleStatementHandler : 真正做业务处理的类。 如果想从ORM层实现分库分表,StatementHandler接口是最佳切入点。(1)通过MappedStatement,DynamicSqlSource,DynamicContext进行SQL解析,路由,插件增强等。(2)执行JDBC操作,如果是查询则需要转换ResultSet为配置文件中的配置的resultMap属...

2016-02-02 16:32:04 161

原创 mybatis3源码核心类4--BaseExecutor

1.update: 清除缓存,然后委托给StatementHandler实现类处理[code="java"] @Override public int update(MappedStatement ms, Object parameter) throws SQLException { ErrorContext.instance().resource(ms.getReso...

2016-02-02 16:25:01 77

原创 mybatis3源码核心类3--DefaultSqlSession

DefaultSqlSession任务:获取MappedStatement,然后委托给相关的executor处理。DefaultSqlSession中executor属性的初始化,会根据Configuration中的cacheEnabled(二级缓存开关)来初始化问题:mybatis是如何控制解决并发问题的。解答:通过SqlSession管理员类SqlSessionManage...

2016-02-02 16:16:38 117

原创 mybatis3源码核心类2--MapperProxyFactory

1.MapperProxyFactory是Mapper接口的动态代理工厂类:经典的C/S架构同步访问模型的实现方法代理类MapperProxy, 其他:MapperMethod[code="java"]/** * Copyright 2009-2015 the original author or authors. * * Licensed under th...

2016-02-02 16:08:05 115

原创 mybatis3源码核心类1--Configuration

最近没什么事,花了一周的时间把mybatis源码看完了,现自我总结一下,尽可能的用一句话总结,方便自己理解和回顾。出名的框架几乎都是从初始化配置文件开始的,mybatis也一样。mybatis的配置文件是通过工具类XMLConfigBuilder,XMLMapperBuilder,XMLStatementBuilder解析后都存在Configuration中[code=...

2016-02-02 16:02:14 90

原创 spring AOP何时添加AnnotationAwareAspectJAutoProxyCreator

1.spring AOP的原理都知道是从解析自定义标签时注册一个beanDefiniton到beanFactory,然后在bean加载过程中做动态代理(initializeBean时会做一些最后的初始化,包括aware接口的调用,applyBeanPostProcessorsBefore/AfterXXX,initMethod,InitializingBean接口的调用)2.但是真正添加A...

2015-12-27 00:46:07 159

原创 问题排查:connnection proxy not usable after transaction completion

1. 今天发现一个和奇怪的问题:org.hibernate.HibernateException: connnection proxy not usable after transaction completion.这个问题很难重现,看了看HibernateTransactionManager源码也没有头绪,最后还是无意中看到一个疑点猜出来。原因是在一个BIZ业务中有10几...

2015-12-23 17:33:34 3435

原创 大批量数据修改时发现有一行数据被锁住了,一直处于等待状态的问题解决

最近写了个多线程任务处理组件用来处理大批量的业务数据, 从业务监控数据中发现少量业务数据修改时一直处于等待状态,很明显是出现类似 for update 锁表,锁行的情况。这种问题是系统设计(复杂的业务逻辑)导致的,暂时只能从数据库层次解决,因为修改系统设计比较复杂,也没有那么多时间。解决思路:1.查出锁住该表的会话id,serial#[code="java"]SE...

2015-12-21 16:25:10 994

原创 JAVA 实现大批量数据的分组统计

[code="java"]package com.xxx;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * * 使用demo * * group(data,new String[]{"c...

2015-12-18 11:37:57 3115

原创 单线程锁数据单线程执行任务+单线程锁数据多线程执行任务+quartz

注: 这种锁数据的做法虽然比较稳定,但感觉有点弱智,性能也低,以后准备考虑生产数据的时候给数据分配一个机器号(随机算法即可),然后通过一个配置表配置机器号节点,消费数据的应用进程通过竞争机器号消费或处理数据相关逻辑即可。一:单线程锁数据单线程执行任务(即当包工头和又当工人,即拉皮条又接客)[code="java"]package xxx.thread;i...

2015-12-09 15:39:13 315

原创 解决生产环境接口应用包jboss数据库连接池满的问题

以前只排查过DHCP连接池泄露的问题,思路是通过btrace脚本收集日志排查问题,jboss用的是自带的连接池,不熟悉,经过查看官方文档终于找到jboss连接池的核心类,如下:(1)Jboss连接池核心类:InternalManagedConnectionPool :包含2个核心方法:returnConnection (),getConnection()方法。(2) 当应用需要进...

2015-09-15 18:22:16 467

原创 解决生产环境quartz 部分定时任务没有启动的问题

1.最近生产环境问题比较多,服务端连接池,接口包连接池各种泄露,监控报警,并且quartz 部分定时任务最近也出现问题:问题描述:部分quartz定时任务没有启动。定时任务:[code="java"] ...

2015-09-15 18:09:22 2229

原创 IDEA14+JREBEL+TOMCAT成功

1. idea安装和jrebel破解:JRebel是一款JAVA虚拟机插件,它使得JAVA程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。JRebel使你能即时分别看到代码、类和资源的变化,你可以一个个地上传而不是一次性全部部署。 Intellij JRebel安装、破解 1.下载文章底部的附件,包含官方插件zip文件以及破解需要的zip文件。 2....

2015-08-25 23:19:40 147

原创 netty 3.10.4.Final 源码学习总结

提示:个人理解并且只针对NIO模式总的来说,包括1个“核心接口”和2个“核心接口帮助类”:(1)ChannelFactory(NioClientSocketChannelFactory和 NioServerSocketChannelFactory)作用:初始化boss,work线程(2)Channels,DefaultChannelPipeline作用:...

2015-08-20 18:08:24 146

原创 GAEA-58服务端初始化生成的服务“动态代理类”和“代理工厂类”

以服务实现类NewsService为例:思考:不明白作者为什么要这样生成服务代理类,根据服务名用反射获取服务实例不行吗?性能貌似也不低啊。 还是说为了热部署才这么做的,我能想到的只有这么个需求才会这么做。ProxyFactoryCreater类动态生成的代码:[code="java"]//动态代理工厂类public class ProxyFac...

2015-08-17 15:26:49 257

原创 GAEA-58客户端同步模型

[b]1.核心思路:[/b](1)动态代理就不用说啦,本质就是通过字节码增强技术来代理对象的行为。(2)通过在客户端对每个请求都保存一个计数为1的CountDownLatch对象实现同步模型。[b]2.细节:[/b]客户端的每个请求1个SessionID,每个SessionID持有一个WindowData对象,每个WindowData持有一个AutoResetEvent...

2015-08-13 11:08:21 249

原创 oceanus-58总体框架理解

1.总体思路:通过约定的XML规则(分表分库规则)和 封装jdbc的Connection和PreparedStatement来实现SQL解析,sql路由和sql重写。2. 3个核心类:ConnectionWrapper(JDBC Connection包装),PreparedStatementWrapper( JDBC PreparedStatement包装),SimpleExecut...

2015-08-12 18:30:12 296

原创 MySQL分库分表环境下全局ID生成方案

1.最简单的方案就是UUID.2.flicker的方案:(一种极为优秀的主键生成策略)http://my.oschina.net/u/142836/blog/1744653.最常用的是:twitter的snowflake方案以及它的变种,拼方案的话这个完胜。...

2015-08-12 17:17:17 125

原创 今天面试总结:INSERT并发过大导致锁死表(新数据无法insert)问题解决

今天去面试被这个问题问挂啦,只怪数据库知识太弱,准备买本高性能MYSQL补补,多看看沈询的视频。 现总结下如何解决这个问题:问题分析和思考:(1)现在数据库的事务隔离级别都是快照级别(MVCC),理论上写写操作是不是不会产生死锁的?(2)表锁了,查看session,关联出SQL,然后执行看看,基本也可以定位下问题。1.临时方案1:”查询是否是SQL的问题,查看锁...

2015-08-01 16:41:41 6878

原创 阿里云各种产品使用索引(更新2015.07.24)

阿里云各种产品使用索引(更新2015.07.24)http://bbs.aliyun.com/read/251196.html?spm=5176.7189909.0.0.RbMAQJ常见问题>云服务器ECS>linux操作指南:http://help.aliyun.com/knowledge_list/8314850.html?spm=5176.788314869.186338...

2015-07-28 13:24:36 90

dfsdfsdffds

fsdfsdafdsafasdfsd

2007-10-19

sql学习21天.rar

sql学习21天.rar

2007-10-19

aaadsadsds

aasddfsdsdsadsadsdsds

2007-10-19

空空如也

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

TA关注的人

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