`
ahua186186
  • 浏览: 561905 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
super(Setter //设置GroupKey 用于dashboard 分组展示 .withGroupKey(HystrixCommandGroupKey.Factory.asKey("Semaphore4UserLotteryLimitingGroup")) //设置commandKey 用户隔离线程池,不同的commandKey会使用不同的线程池 .andCommandKey(HystrixCommandKey.Factory ...
经过1周的源码研究,终于对shiro的原理有了深刻的理解,基于原理我们识别出生产环境落地这个技术的设计复杂度 shiro落地的设计复杂度: (1)自定义CachingSessionDAO,这是核心,因为它存储了session,Principals,AuthenticationState等所有可以持久化的数据。 (2)sessionid无状态化设计:我们就可以通过继承DefaultWebSessionManager,自定义getSessionId逻辑实现无状态的会话,而不需要依赖cookie来获取session.,此方案登陆成功后必须把sessionID传给客户端。 (3)登陆成功后最好初始化 ...
shiro login成功后 保存了Principals 和 AuthenticationState到session中,所以我们每次请求都能从session成功获取到这2个属性。 核心类:DefaultSubjectDAO [code="java"]public Subject save(Subject subject) {         if (this.isSessionStorageEnabled(subject)) {             this.saveToSession(subject);         } else {    ...
1、从哪里获取sessionid每次请求都会尝试获取sessionid 获取流程:DefaultWebSessionManager -->getReferencedSessionId-->getSessionIdCookieValue-->simpleCookie(JSESSIONID)   抛出问题:为什么能从cookie中获取sessionid, 请看第3点的初始化   如果sessionid不为空,则直接从CachingSessionDAO获取session   熟悉这个原理后,我们就可以通过继承DefaultWebSessionManager,自定义g ...
一句话总结:会话域Context一路收集principals, authenticated, host, session(readSession()返回), sessionEnabled, request, response, securityManager ; 最终被存入到了返回的这个Subject中   1.第一步:ShiroFilterFactoryBean的初始化和创建(1)实现BeanPostProcessor接口:具体看源码postProcessBeforeInitialization 实现的功能:将在Spring中注册的Filter并入到ShiroFilterFactory ...
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/1.0/ant-eclipse-1.0.bin.tar.bz2" 更换成如下地址         get src="http://ufpr.dl.sourceforg ...
1.今天没太多事情,挤出点时间,研究了下dubbo的路由规则实现。 首先,看看dubbo消费端的主要调用流程(这里就不画图了),以后补充: 第一步:创建消费端代理:ReferenceConfig.createProxy,这里没什么特别,典型的C/S调用设计, ...
1.总的来说,SecurityUtils.getSubject()是每个请求创建一个Subject, 并保存到ThreadContext的resources(ThreadLocal<Map<Object, Object>>)变量中,也就是一个http请求一个subject,并绑定到当前线程。 问题来了:.subject.login()登陆认证成功后,下一次请求如何知道是那个用户的请求呢? 友情提示:本文唯一可以读一下的就是分析这个疑问,如果你已经明白就不用往下看了。 首先给出内部原理:1个请求1个Subject原理:由于ShiroFilterFactoryBean本 ...
(1)AbortPolicy: java.util.concurrent.RejectedExecutionException (触发条件:线程数=maximumPoolSize 且 queue已满),后果:线程池终止  --非常严重,证明需要流量控制了,或者资源容量需要扩容了 (2)DiscardPolicy :策略会悄悄抛弃新提交的任务 (触发条件:线程数=maximumPoolSize 且 queue已满),后果:丢弃新任务数据 (3)DiscardOldestPolicy :抛弃旧的线程  (触发条件:线程数=maximumPoolSize 且 queue已满),后果:丢弃旧任 ...
基本原理: 通过spring的扩展接口AbstractBeanFactoryAwareAdvisingPostProcessor,初始化自定义的切面AsyncAnnotationAdvisor来实现方法的代理,最后通过自定义方法拦截器AsyncExecutionInterceptor实现异步执行。 核心实现是: 1.继续接口MethodInterceptor 2.获取自定义注解:getExecutorQualifier public abstract class AsyncExecutionAspectSupport implements BeanFactoryAware { ...
1. 今天开发环境重新搭建了一个jenkins,遇到执行远程shell脚本失败。 问题1: java:command not found. 环境变量问题:默认取的是jenkins的环境变量,需要shell脚本配置环境变量PATH。 问题2:nohup 的输出需要重定向,否则执行不了命令(/dev/null 2>&1 &), 完整例子:
  1.这个类执行逻辑: (1)通过构造函数初始化Application Listeners和Application Context Initializers(采用SPI设计,从spring boot源码META-INF/spring.factories配置中抓取实现类)   (2)run方法:这里不做详细展开分析,后续展开 第1步: ...
  一:spring boot定制tomcat容器   1. 首先spring boot 通过注解@EnableAutoConfiguration初始化各种自动装配和bean,其中默认注册 TomcatEmbeddedServletContainerFactory 到 DefaultListableBeanFactory。   2. 转化为java语言:定制一个bean. 第一反应就是借鉴spring aop思想,继承BeanPostProcessor定制bean。   3. spring boot 默认实现是通过EmbeddedServletContainerCustomiz ...
最近看了看开源项目appllo配置中心的源码,发现一个很有意思的东东: (1)原理:由于使用了DeferredResult,根据Spring DispatcherServlet的默认逻辑,数据库连接只有在异步请求真正返回给客户端的时候才会释放回连接池 (2)应用场景:长连接时间很长,对于大部分请求可能都要数小时以上才会返回。在这么长的一段时间内一直占用着数据库连接是不合理的 长连接场景解决: @Component public class EntityManagerUtil extends EntityManagerFactoryAccessor { private stat ...
最近入职一家新公司,然后用了公司的一个框架,碰到一个错误: java.lang.LinkageError: loader constraint violation: loader (instance of cn/openlo/gear/GearClassLoader) previously initiated loading for a different type with name "org/apache/commons/logging/Log" 分析:很明显是Jar包冲突,找了一个上午发现是ClassPathMapperScanner.doScan中的org/apac ...
Global site tag (gtag.js) - Google Analytics