精华内容
下载资源
问答
  • 于开涛
    千次阅读
    2018-11-06 20:50:00

    开涛者,姓张,名开涛,齐鲁山东人氏也;任职于知名互联网公司京东,因其对人和蔼,是以众人亲切称其为”涛哥”。

     

    尚记初次见涛哥于总部某会议室,其讨论主导项目之无人便利店,当时并不知其人。于休憩之时,翻阅旁边之书籍《亿级流量网站架构核心技术》。

     

    次日晨,开涛赠吾昨日于总部所阅之书。再阅之,见作者为张开涛,随查其名于百度。其下为百度简介。

    张氏开涛者,撰有”开涛的博客”于博客园,其所写Java、SpringMVC等相关博文,访问量不下千万次;更兼著《亿级流量网站架构核心技术》一书。

     

     

     

    随对其肃然起敬,佩服其才学

     

    不久,吾亦被派遣于无人便利店之项目,负责相关之任务,有幸在其带领下学习。某次周会,亦是总部会议室初次见涛之地,已忘会议内容,但仍记开涛之语——“与他人合作之时,尽力做好所做之事,既是对已之负责,亦可增他人之信任,是以养好口碑于众人也。”

    因参与无人便利店之项目,而后与涛哥接触良多。仍记其一次与公司其他部门项目沟通,沟通良久,不得,终查为其他部门之缘由,随解决之,总耗费时日近一天。已亦心烦气燥,涛哥知前后缘由,道曰“辛苦尔,此来跨部门沟通之难也”。

    其后首次与涛哥私聊乃项目完结之时,聚于北辰新奥某海鲜餐厅。知其乃山东人氏,估其身长一米八不止,不禁在心叹曰“涛者,修长一米有八,生于齐鲁之地,不仅七尺男儿之躯,更兼才貌人品卓绝,吾不如也”。而后多次遇涛哥,其多次主动与吾问好,吾甚感惶恐亦感激之。

    “涛者何其高位也,吾新进于京东,其主动问好于吾,毫不以已位之高而斜视他人。” 随后每次见其,皆上前道好。

     

    随对其肃然起敬,佩服其人品

     

    现互联网公司跳槽何其频繁也,国外某知名互联网公司统计曰”九五后者,跳槽周期仅七月尔”。在今跳槽之风盛行,况跳槽于互联网涨薪百分之二十有亦,何乐而不为乎。 随叹曰,若遇领导、同事者皆如于开涛者,何其幸乎?

     

    转载于:https://www.cnblogs.com/zgzf/p/9917954.html

    更多相关内容
  • Shiro提供了与Web集成的支持,其通过一个ShiroFilter入口来拦截需要安全控制的URL,然后进行相应的控制,ShiroFilter类似如Strut2/SpringMVC这种web框架的前端控制器,其是安全控制的入口点,其负责读取配置(如...
  • 前边IoC一章我们已经了解了Bean依赖容器,那容器 如何注入Bean的依赖资源, Spring IoC 容器注入依赖资源 主要有以下两种基本实现方式: ...:就是容器实例化Bean时注入那些依赖,通过在在Bean...,其等价。  

    前边IoC一章我们已经了解了Bean依赖容器,那容器如何注入Bean的依赖资源,

    Spring IoC容器注入依赖资源主要有以下两种基本实现方式:

    •      构造器注入:就是容器实例化Bean时注入那些依赖,通过在在Bean定义中指定构造器参数进行注入依赖,包括实例工厂方法参数注入依赖,但静态工厂方法参数不允许注入依赖;

    •      setter注入:通过setter方法进行注入依赖;

    •      方法注入:能通过配置方式替换掉Bean方法,也就是通过配置改变Bean方法 功能。

     

    构造器注入

    构造器注入可以根据参数索引注入参数类型注入或Spring3支持的参数名注入。

        使用构造器注入通过配置构造器参数实现,构造器参数就是依赖。除了构造器方式,还有静态工厂、实例工厂方法 可以进行构造器注入。

     

    构造器注入 实现接口实例化(依赖注入实例化)传统实例化的区别*:

                                              

    可以根据 索引,参数类型,参数名字 三种方式注入

     

    ____________________________________________________________________________

    实例

    让我们来用具体的例子来看一下构造器注入怎么使用吧。

    (1)首先准备Bean类,在此我们就使用“HelloImpl3”这个类。(Bean类

    (2)有了Bean类,接下来要进行Bean定义配置,我们需要配置三个Bean来完成上述三种依赖注入测试,其中Bean ”byIndex”是通过索引注入依赖;Bean ”byType”是根据类型进行注入依赖;Bean ”byName”是根据参数名字进行注入依赖,具体配置文件(constructorDependencyInject.xml)如下:

     

    构造器注入

    静态工厂方法注入和实例工厂注入

           测试代码和构造器方式完全一样,只是配置文件不一样,大家只需把测试文件改一下就可以了。还有一点需 要大家注意就是静态工厂方式和实例工厂方式根据参数名字注入的方式只支持通过在class文件中添加“变量调试信息” 方式才能运行,ConstructorProperties注解方式不能工作,它只对构造器方式起作用,不建议使用根据参数名进行构 造器注入。

    ____________________________________________________________________________

    setter注入**

    在通过构造器、静态工厂或实例工厂实例好Bean后,

    通过调用Bean类的setter方法进行注入依赖,  

    (property name=“ ”  value=“ ” )的形式

     

    setter注入方式:

    setter注入方式只有一种根据setter名字进行注入

        

     

    实例

    (2)配置Bean定义,具体配置文件(setterDependencyInject.xml)片段如下:

     

    知道如何配置了,但Spring如何知道setter方法?如何将值注入进去的呢?

    其实方法名是要遵守约定的,setter注 入的方法名要遵循“JavaBean getter/setter 方法命名约定”

    JavaBean:是本质就是一个POJO类,但具有一下限制:

    • 该类必须要有公共的无参构造器,如public HelloImpl4() {};

    • 属性为private访问级别,不建议public,如private String message;

    • 属性必要时通过一组setter(修改器)和getter(访问器)方法来访问;

    • setter方法,以“set” 开头,后跟首字母大写的属性名,如“setMesssage”,简单属性一般只有一个方法参 数,方法返回值通常为“void”;

    • getter方法,一般属性以“get”开头,对于boolean类型一般以“is”开头,后跟首字母大写的属性名,如 “getMesssage”,“isOk”;

    ___________________________________________________________________________

    注入常量

    注入常量是依赖注入中最简单的。配置方式如下所示:

        以上两种方式都可以,从配置来看第一种更简洁。注意此处“value”中指定的全是字符串,由Spring容器将此字 符串转换成属性所需要的类型,如果转换出错,将抛出相应的异常。

    Spring容器目前能对各种基本类型把配置的String参数转换为需要的类型。

    注:Spring类型转换系统对于boolean类型进行了容错处理,除了可以使用“true/false”标准的Java值进行注入,还 能使用“yes/no”、“on/off”、“1/0”来代表“真/假”,所以大家在学习或工作中遇到这种类似问题不要觉得是人 家配置错了,而是Spring容错做的非常好

    注入集合、数组和字典

    Spring不仅能注入简单类型数据,还能注入集合(Collection、无序集合Set、有序集合List)类型、数组(Array)类 型、字典(Map)类型数据、Properties类型数据,接下来就让我们一个个看看如何注入这些数据类型的数据。

    一、注入集合类型:包括Collection类型、Set类型、List类型数据:

    (1)List类型:需要使用<list>标签来配置注入,其具体配置如下:

     

    测试:  

     

          

     

     

    (2)Set类型:需要使用<set>标签来配置注入,其配置参数及含义和<lsit>标签完全一样,在此就不阐述了:

    二、注入数组类型:需要使用<array>标签来配置注入,其中标签属性“value-type”和“merge”和<list>标签含义 完全一样,具体配置如下:

    三、注入字典(Map)类型:字典类型是包含键值对数据的数据结构,需要使用<map>标签来配置注入,其属性 “key-type”和“value-type”分别指定“键”和“值”的数据类型,其含义和<list>标签的“value-type”含义一 样,在此就不罗嗦了,并使用<key>子标签来指定键数据,<value>子标签来指定键对应的值数据,具体配置如下:

    ___________________________________________________________________________

    引用其它Bean

        上边章节已经介绍了注入常量、集合等基本数据类型和集合数据类型,本小节将介绍注入依赖Bean及注入内部 Bean。

    引用其他Bean的步骤与注入常量的步骤一样,可以通过构造器注入setter注入引用其他Bean,只是引用其他 Bean的注入配置稍微变化了一下:

    可以将“<constructor-arg index="0" value="Hello World!"/>”和“<property name="message" value="Hello World!"/>”中的value属性替换成bean属性,其中bean属性指定配置文件中的其 他Bean的id或别名。另一种是把<value>标签替换为<.ref bean=”beanName”>,bean属性也是指定配置文件中的 其他Bean的id或别名。那让我们看一下具体配置吧:

     

    一、构造器注入方式:

    (1)通过” <constructor-arg>”标签的ref属性来引用其他Bean,这是最简化的配置:(此方法简单)

    (2)通过” <constructor-arg>”标签的子<ref>标签来引用其他Bean,使用bean属性来指定引用的Bean:

     

    二、setter注入方式:

    ____________________________________________________________________________

    配置简写

    让我们来总结一下依赖注入配置及简写形式,其实我们已经在以上部分穿插着进行简化配置了:

    一、构造器注入:

    1)常量值

    简写:<constructor-arg index="0" value="常量"/>

    全写:<constructor-arg index="0"><value>常量</value></constructor-arg>

    2)引用

    简写:<constructor-arg index="0" ref="引用"/>

    全写:<constructor-arg index="0"><ref bean="引用"/></constructor-arg>

     

    二、setter注入:

    1)常量值

    简写:<property name="message" value="常量"/>

    全写:<property name="message"><value>常量</value></ property>

    2)引用

    简写:<property name="message" ref="引用"/>

    全写:<property name="message"><ref bean="引用"/></ property>

     

    3)数组:<array>没有简写形式

    4)列表:<list>没有简写形式

    5)集合:<set>没有简写形式

    6)字典

     

    简写:<map>

    <entry key="键常量" value="值常量"/>

    <entry key-ref="键引用" value-ref="值引用"/>

    </map>

    全写:<map>

    <entry><key><value>键常量</value></key><value>值常量</value></entry>

    <entry><key><ref bean="键引用"/></key><ref bean="值引用"/></entry>

    </map>

     

    7)Properties:没有简写形式

     

    三、使用p命名空间简化setter注入:

    使用p命名空间来简化setter注入,具体使用如下:

     

    • xmlns:p="http://www.springframework.org/schema/p" :首先指定p命名空间;

    • <bean id="……" class="……" p:id="value"/> :常量setter注入方式,其等价于<property name="id" value="value"/>;

    ▪ <bean id="……" class="……" p:id-ref="bean1"/> :引用setter注入方式,其等价于<property name="id" ref="bean1"/>。

     

    展开全文
  • 相当SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心脏;所有具体的交互都通过SecurityManager进行控制;它管理着所有Subject、且负责进行认证和授权、及会话、缓存的管理。 ...

    1.1  简介

    Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。

    本教程只介绍基本的Shiro使用,不会过多分析源码等,重在使用。

    Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。这不就是我们想要的嘛,而且Shiro的API也是非常简单;其基本功能点如下图所示:

    Authentication:身份认证/登录,验证用户是不是拥有相应的身份;

    Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;

    Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;

    Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

    Web Support:Web支持,可以非常容易的集成到Web环境;

    Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;

    Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

    Testing:提供测试支持;

    Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

    Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

     

    记住一点,Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro即可。

     

    接下来我们分别从外部和内部来看看Shiro的架构,对于一个好的框架,从外部来看应该具有非常简单易于使用的API,且API契约明确;从内部来看的话,其应该有一个可扩展的架构,即非常容易插入用户自定义实现,因为任何框架都不能满足所有需求。

     

    首先,我们从外部来看Shiro吧,即从应用程序角度的来观察如何使用Shiro完成工作。如下图:

     

    可以看到:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject;其每个API的含义:

    Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;

    SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;

    Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。

     

    也就是说对于我们而言,最简单的一个Shiro应用:

    1、应用代码通过Subject来进行认证和授权,而Subject又委托给SecurityManager;

    2、我们需要给Shiro的SecurityManager注入Realm,从而让SecurityManager能得到合法的用户及其权限进行判断。

     

    从以上也可以看出,Shiro不提供维护用户/权限,而是通过Realm让开发人员自己注入。

     

    接下来我们来从Shiro内部来看下Shiro的架构,如下图所示:


      

    Subject:主体,可以看到主体可以是任何可以与应用交互的“用户”;

    SecurityManager:相当于SpringMVC中的DispatcherServlet或者Struts2中的FilterDispatcher;是Shiro的心脏;所有具体的交互都通过SecurityManager进行控制;它管理着所有Subject、且负责进行认证和授权、及会话、缓存的管理。

    Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得Shiro默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了;

    Authrizer:授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能;

    Realm:可以有1个或多个Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是JDBC实现,也可以是LDAP实现,或者内存实现等等;由用户提供;注意:Shiro不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的Realm;

    SessionManager:如果写过Servlet就应该知道Session的概念,Session呢需要有人去管理它的生命周期,这个组件就是SessionManager;而Shiro并不仅仅可以用在Web环境,也可以用在如普通的JavaSE环境、EJB等环境;所有呢,Shiro就抽象了一个自己的Session来管理主体与应用之间交互的数据;这样的话,比如我们在Web环境用,刚开始是一台Web服务器;接着又上了台EJB服务器;这时想把两台服务器的会话数据放到一个地方,这个时候就可以实现自己的分布式会话(如把数据放到Memcached服务器);

    SessionDAO:DAO大家都用过,数据访问对象,用于会话的CRUD,比如我们想把Session保存到数据库,那么可以实现自己的SessionDAO,通过如JDBC写到数据库;比如想把Session放到Memcached中,可以实现自己的Memcached SessionDAO;另外SessionDAO中可以使用Cache进行缓存,以提高性能;

    CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能

    Cryptography:密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密的。

     

    到此Shiro架构及其组件就认识完了,接下来挨着学习Shiro的组件吧。

    展开全文
  • 在Spring容器中存储如图3-5所示,Spring不仅会缓存单例对象,Bean定义也是会缓存的,对于惰性初始化的对象是在首次使用时根据Bean定义创建并存放单例缓存池。  惰性初始化 的目的是延迟对象的初始化,直到...

    Bean的作用域

    Spring提供“singleton”和“prototype”两种基本作用域,

    另外提供“request”、“session”、“global session”三种web作用域;Spring还允许用户定制自己的作用域。

     

    基本的作用域

    一、singleton  (按照 单例设计模式)

        指“singleton”作用域的Bean只会在每个Spring IoC容器中存在一个实例,而且其完整生命 周期完全由Spring容器管理。对于所有获取该Bean的操作Spring容器将只返回同一个Bean。

     

    GoF单例设计模式指“保证一个类仅有一个实例,并提供一个访问它的全局访问点”,介绍了两种实现:通过在 类上定义静态属性保持该实例和通过注册表方式。

     

    1)通过在类上定义静态属性保持该实例

        一般指一个Java虚拟机 ClassLoader装载的类只有一个实例,一般通过类 静态属性保持该实例,这样就造成需要单例的类都需要按照单例设计模式进行编码;Spring没采用这种方式,因为 该方式属于侵入式设计;代码样例如下:

    以上定义个了个单例类,首先要私有化类构造器;其次使用InstanceHolder静态内部类持有单例对象,这样可以得 到惰性初始化好处;最后提供全局访问点getInstance,使得需要该单例实例的对象能获取到;我们在此还提供了一 个counter计数器来验证一个ClassLoader一个实例。具体一个ClassLoader有一个单例实例测试请参考代码 “cn.javass.spring.chapter3. SingletonTest”中的“testSingleton”测试方法,里边详细演示了一个 ClassLoader有一个单例实例

     

    2) 通过注册表方式

     首先将需要单例的实例通过唯一键注册到注册表,然后通过键来获取单例,让我们直接看实 现吧,注意本注册表实现了Spring接口“SingletonBeanRegistry”,该接口定义了操作共享的单例对象,Spring 容器实现将实现此接口;所以共享单例对象通过“registerSingleton”方法注册,通过“getSingleton”方法获 取,消除了编程方式单例,注意在实现中不考虑并发:

    ____________________________________________________________________________

    接下来让我们看看在Spring中如何配置单例Bean吧,在Spring容器中如果没指定作用域默认就是“singleton”, 配置方式通过scope属性配置,具体配置如下:

     

    Spring管理单例对象在Spring容器中存储如图3-5所示,Spring不仅会缓存单例对象,Bean定义也是会缓存的,对于惰性初始化的对象是在首次使用时根据Bean定义创建并存放于单例缓存池。

        惰性初始化的目的是延迟对象的初始化,直到程序真正使用它,同时确保它只初始化一次

     

    二、prototype  (原型设计模式

    即原型,指每次向Spring容器请求获取Bean都返回一个全新的Bean,相对于“singleton”来说 就是不缓存Bean,每次都是一个根据Bean定义创建的全新Bean。

    GoF原型设计模式,指用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    ____________________________________________________________________________

    Web应用中的作用域

    一、request作用域:表示每个请求需要容器创建一个全新Bean。比如提交表单的数据必须是对每次请求新建一个 Bean来保持这些表单数据,请求结束释放这些数据。

    二、session作用域:表示每个会话需要容器创建一个全新Bean。比如对于每个用户一般会有一个会话,该用户的 用户信息需要存储到会话中,此时可以将该Bean配置为web作用域。

    三、globalSession:类似于session作用域,只是其用于portlet环境的web应用。如果在非portlet环境将视为 session作用域。配置方式和基本的作用域相同,只是必须要有web环境支持,并配置相应的容器监听器或拦截器从而能应用这些作 用域,我们会在集成web时讲解具体使用,大家只需要知道有这些作用域就可以了。

    展开全文
  • 相当Subject.getPrincipals().oneByType(String.class)。    Java代码   type= "java.lang.String" />  相当Subject.getPrincipals().oneByType(String.class)。   ...
  • 授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。...
  • zhangkaitao(张开涛) 参赛感言: 写博客是一种分享态度。 开博一年多,主要写java框架spring相关内容,一年多让我收获很多,也让我喜欢上了写博客。好记性不如烂笔头,把工作中、学习中遇到的记录下来,方便...
  • 第一次脑海中闪过写书的念头,源于张开涛大佬的经历。开涛大神分享了很多篇博客,我关注了他,也经常看这些文章。2016年11月22日,开涛大神发布了一篇文章,简单地说了一下写书的背景,然后介绍了他即将出版的那...
  • 一个码砖的码农,在CSDN写一年博客,出书了?

    千次阅读 多人点赞 2021-04-23 09:39:14
    在20年10月1日放假起,我开始重新整理设计模式稿件,重新整理文章、收集粉丝反馈、绘制技术图稿,一点点的完成所有内容并添加新的章节,11月左右交给出版社,接下来的路漫漫长… 一本书的出版要选题、交稿、审稿、...
  • 一个项目两部电脑 ...张开涛亲笔签名 ...* 文中部分内容来源网络。 Java我最强 关心Java人成长的技术内容社区 快速关注
  • 当时他们找不到适用应用程序级别的合适 Java 安全框架,同时又对 JAAS 非常失望,于是就搞了这个东西。 2004 年到 2008 年期间,JSecurity 托管在 SourceForge 上,贡献者包括 Peter Ledbrook、Alan Ditzel 和 Tim...
  • ini配置文件类似Java中的properties(key=value),不过提供了将key/value分类的特性,key是每个部分不重复即可,而不是整个配置文件。如下是INI配置分类:  Java代码  [main]  #提供了对根...
  • AdviceFilter提供了AOP风格的支持,类似SpringMVC中的Interceptor: Java代码  boolean  preHandle(ServletRequest request, ServletResponse response)  throws  Exception  void  ...
  • Shiro提供了类似Spring的Cache抽象,即Shiro本身不实现Cache,但是对Cache进行了又抽象,方便更换不同的底层Cache实现。对于Cache的一些概念可以参考我的《Spring Cache抽象详解》:...
  • Shiro提供了与Web集成的支持,其通过一个ShiroFilter入口来拦截需要安全控制的URL,然后进行相应的控制,ShiroFilter类似如Strut2/SpringMVC这种web框架的前端控制器,其是安全控制的入口点,其负责读取配置(如...
  • Account相当我们之前的User,SimpleAccount是其一个实现;在IniRealm、PropertiesRealm这种静态创建帐号信息的场景中使用,这些Realm直接继承了SimpleAccountRealm,而SimpleAccountRealm提供了相关的API来动态...
  • 通过梳理大型网站技术发展历程,剖析大型...张开涛,现就职京东,“开涛的博客”公众号作者。写过《跟我学Spring》《跟我学Spring MVC》《跟我学Shiro》《跟我学Nginx Lua开发》等系列教程,博客现有1000多万访问量。
  • Subject是初学者比较难于理解的对象,很多人以为它可以等同User,其实不然。Subject中文翻译:项目,而正确的理解也恰恰如此。它是你目前所设计的需要通过Shiro保护的项目的一个抽象概念。通过令牌(token)与项目...
  • 以 PROPAGATION_NESTED 启动的事务内嵌外部事务中(如果存在外部事务的话),此时,内嵌事务并不是一个独立的事务,它依赖外部事务的存在,只有通过外部的事务提交,才能引起内部事务的提交,嵌套的子事务不能...
  • 分层不仅可以使彼此之间边界清晰、职责分离、共享复用,而且可以进行进一步的信息处理、流程控制、行为控制,还有助后期的移植扩展、维护管理。最为常见的有交换机、路由器、计算机主板、缓存、队列、虚拟内存管理...
  • shiro 会话管理

    千次阅读 2016-04-01 16:11:28
    此文章是分享于开涛写的shiro,本人只是用来作为学习笔记,如果觉得我不尊重原创者,请点击此处:http://jinnianshilongnian.iteye.com/blog/2018936,谢谢开涛的无私分享,我觉得讲的很好! Shiro提供了完整的...
  • 上半年看了一些书,简单总结一下 坚持阅读 古人云:“活到老,学到老。” IT技术发展太快,行业...1.《亿级流量-高并发高可用架构实战》张开涛 江湖人称”涛哥”,京东大牛,一次偶然的机会,通过中生代...
  • shiro 与spring集成

    2016-04-01 17:35:32
    此文章是分享于开涛写的shiro,本人只是用来作为学习笔记,如果觉得我不尊重原创者,请点击此处:http://jinnianshilongnian.iteye.com/blog/2018936,谢谢开涛的无私分享,我觉得讲的很好! Shiro的组件都是...
  • shiro 的web集成使用

    2016-04-01 15:04:44
    此文章是分享于开涛写的shiro,本人只是用来作为学习笔记,如果觉得我不尊重原创者,请点击此处:http://jinnianshilongnian.iteye.com/blog/2018936,谢谢开涛的无私分享,我觉得讲的很好! Shiro提供了与Web...
  • shiro 编码解码

    2016-04-01 13:37:44
    此文章是分享于开涛写的shiro,本人只是用来作为学习笔记,如果觉得我不尊重原创者,请点击此处:http://jinnianshilongnian.iteye.com/blog/2018936,谢谢开涛的无私分享,我觉得讲的很好! 在涉及到密码...
  • shiro身份认证

    2016-04-01 10:05:03
    此文章是分享于开涛写的shiro,本人只是用来作为学习笔记,如果觉得我不尊重原创者,请点击此处:http://jinnianshilongnian.iteye.com/blog/2019547,谢谢开涛的无私分享,我觉得讲的很好! 身份验证,即在应用中...
  • 原文出处:张开涛 本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章将同步到我的个人博客: ...
  • shiro Realm及相关对象

    2016-04-01 14:37:36
    此文章是分享于开涛写的shiro,本人只是用来作为学习笔记,如果觉得我不尊重原创者,请点击此处:http://jinnianshilongnian.iteye.com/blog/2018936,谢谢开涛的无私分享,我觉得讲的很好! 6.1 Realm 【2.5 ...
  • shiro 授权

    2016-04-01 13:11:27
    此文章是分享于开涛写的shiro,本人只是用来作为学习笔记,如果觉得我不尊重原创者,请点击此处:http://jinnianshilongnian.iteye.com/blog/2018936,谢谢开涛的无私分享,我觉得讲的很好! 授权,也叫访问...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 541
精华内容 216
关键字:

于开涛