JAVA
LUCAS-LJ
这个作者很懒,什么都没留下…
展开
-
Druid Monitor
Druid Monitor对于数据源,相信大家已经接触了不少了。比如c3p0、dhcp、proxool等,之后又发现使用tomcat-jdbc可以大大的提高性能。但是针对于我们的高并发的系统来说,总希望能找到一个性能更好、更稳定的产品来代替。在开源中国上偶然发现了很多公司都在使用Druid这个数据源,然后搜索了一些相关资料,有人提供了这几个数据源的性能测试报告,突然发现这个数据源以很好的性转载 2017-10-13 09:38:22 · 1279 阅读 · 0 评论 -
基于maven的ssh框架一步一步搭建(一)
目录[-]一、新建maven项目,配置ssh框架pom的最低支持1、新建一个maven项目 2、添加一个web.xml3、基本ssh框架pom.xml配置二、maven webproject 整合struts21、web.xml 加入中心拦截器配置2、加入log4j.xml3、引入struts2.xml 根据约定由于配置原则,将此配置文件放在更目录即可4原创 2016-01-10 15:17:27 · 1172 阅读 · 0 评论 -
Java IO 与NIO的区别
下表总结了Java NIO和IO之间的主要差别,我会更详细地描述表中每部分的差异。复制代码代码如下:IO NIO面向流 面向缓冲阻塞IO 非阻塞IO无 选择器面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流原创 2016-01-10 12:43:57 · 389 阅读 · 0 评论 -
Java面试题全集(A)
1、面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的转载 2016-01-09 16:09:12 · 1499 阅读 · 0 评论 -
Java面试题全集(C)
这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring MVC等,由于Struts 2已经是明日黄花,在这里就不讨论Struts 2的面试题,如果需要了解相关内容,可以参考我的另一篇文章《Java面试题集(86-115)》。此外,这篇文章还对企业应用架构、大型网站架构和应用服务器优化等内容进行了简单的探讨,这些内容相信对面试会很有帮助。转载 2016-01-09 16:13:11 · 976 阅读 · 0 评论 -
Java面试题全集(B)
这部分主要是与Java Web和Web Service相关的面试题。96、阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。补充:Sun Micr转载 2016-01-09 16:11:15 · 1015 阅读 · 0 评论 -
第二十章 无状态Web应用集成
在一些环境中,可能需要把Web应用做成无状态的,即服务器端无状态,就是说服务器端不会存储像会话这种东西,而是每次请求时带上相应的用户名进行登录。如一些REST风格的API,如果不使用OAuth2协议,就可以使用如REST+HMAC认证进行访问。HMAC(Hash-based Message Authentication Code):基于散列的消息认证码,使用一个密钥和一个消息作为输入,生成它们的消转载 2015-11-13 21:59:46 · 515 阅读 · 0 评论 -
第十八章 并发登录人数控制
在某些项目中可能会遇到如每个账户同时只能有一个人登录或几个人同时登录,如果同时有多人登录:要么不让后者登录;要么踢出前者登录(强制退出)。比如spring security就直接提供了相应的功能;Shiro的话没有提供默认实现,不过可以很容易的在Shiro中加入这个功能。 示例代码基于《第十六章 综合实例》完成,通过Shiro Filter机制扩展KickoutSessionControl转载 2015-11-13 21:56:33 · 444 阅读 · 0 评论 -
第十七章 OAuth2集成
目前很多开放平台如新浪微博开放平台都在使用提供开放API接口供开发者使用,随之带来了第三方应用要到开放平台进行授权的问题,OAuth就是干这个的,OAuth2是OAuth协议的下一个版本,相比OAuth1,OAuth2整个授权流程更简单安全了,但不兼容OAuth1,具体可以到OAuth2官网http://oauth.net/2/查看,OAuth2协议规范可以参考http://tools.ietf.转载 2015-11-13 21:55:52 · 1324 阅读 · 0 评论 -
第五章 编码/加密
在涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码。比如之前的600w csdn账号泄露对用户可能造成很大损失,因此应加密/生成不可逆的摘要方式存储。 5.1 编码/解码 Shiro提供了base64和16进制字符串编码/解码的API支持,方便一些编码解码操作。Shiro内部的一些数据的存储/表示都使用了base64和16进制字符串。Java代码转载 2015-11-13 20:55:05 · 840 阅读 · 0 评论 -
基于maven的ssh框架一步一步搭建(二)
目录[-]五、配置profile1、profile是用来做什么的2、配置pom.xml添加properties 和profile3、在根目录加入一个资源属性文件baseconfig.properties4、配置maven pom.xml使得资源属性文件能共享到maven的properties属性5、配置spring配置文件使得spring能够扫描到资源属性文件6原创 2016-01-10 15:21:38 · 883 阅读 · 0 评论 -
DUBBO架构设计明细
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。转载 2016-05-26 11:06:18 · 551 阅读 · 0 评论 -
HYSTRIX熔断器理解
文章初衷为了应对将来在线(特别是无线端)业务量的成倍增长,后端服务的分布式化程度需要不断提高,对于服务的延迟和容错管理将面临更大挑战,公司框架和开源团队选择内部推广Netflix的Hystrix,一是为了推进各部门的服务使用覆盖率,二是为了增加C Sharp语言版本的参与度(目前公司至少三成服务由.NET编写)。该博文属于个人对Hystrix研究和实践经验。什么是Hystrix?Hys转载 2017-03-22 23:36:34 · 6276 阅读 · 0 评论 -
java线程池解析
本文转载自:http://www.cnblogs.com/dolphin0520/p/3932921.html,感谢原文作者。Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线转载 2016-08-30 17:05:09 · 406 阅读 · 0 评论 -
maven本地仓库引入中央仓库方式
**********************************maven本地仓库引入中央仓库方式*************************************************** http://www.sonatype.org upp_server ${mav原创 2016-07-15 15:05:37 · 1198 阅读 · 0 评论 -
Struts2的声明式异常处理
Struts2的声明式异常处理在struts2应用程序中你还在使用try catch语句来捕获异常么?如果是这样的,那你OUT啦!struts2支持声明式异常处理,可以再Action中直接抛出异常而交给struts2来处理,当然需要我们在xml文件中配置,由于抛出同样的异常的处理方法通常都一样,所以如果能在xml中配置全局异常,将会使得开发便捷性大大提高。以前的异常捕获可能是这样的:原创 2016-06-17 16:53:18 · 313 阅读 · 0 评论 -
SOA架构模式
目前,面向服务的架构(SOA)已成为连接复杂服务系统的主要解决方案。虽然SOA的理论很容易理解,但要部署一个设计良好、真正实用的SOA系统却非常困难。本文试图通过解析SOA的模式,提供与架构相关的技术指导,进而对以上问题提供详尽的的解答。在本文中,一共提到了五种模式。表1列出了这五种模式以及各自相关的问题。模式名称相关问题服务托管如何使服务能够适应不同的配置转载 2016-05-18 11:21:16 · 880 阅读 · 0 评论 -
quartz集群调度机制调研及源码分析
quartz2.2.1集群调度机制调研及源码分析引言quartz集群架构调度器实例化调度过程触发器的获取触发trigger:Job执行过程:总结:附: 引言quratz是目前最为成熟,使用最广泛的java任务调度框架,功能强大配置灵活.在企业应用中占重要地位.quratz在集群环境中的使用方式是每个企业级系统都要考虑的问题.早在2006年,在ITey转载 2016-05-26 20:43:38 · 967 阅读 · 0 评论 -
JAVA NIO技术(下)
其余功能介绍看完以上陈述,详细大家对NIO有了一定的了解,下面主要通过几个案例,来说明NIO的其余功能,下面代码量偏多,功能性讲述偏少。Scatter/Gatter分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。原创 2016-05-26 20:17:59 · 453 阅读 · 0 评论 -
JAVA NIO技术(中)
下面将上面的TCP服务端代码改写成NIO的方式(案例5):public class ServerConnect{ private static final int BUF_SIZE=1024; private static final int PORT = 8080; private static final int TIMEOUT = 300原创 2016-05-26 20:17:06 · 448 阅读 · 0 评论 -
JAVA NIO技术(上)
现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。再者,现在互联网的面试中上点level的都会涉及一下NIO或者AIO的问题(AIO下次再讲述,本篇主要讲述NIO),掌握好NIO也能帮助你获得一份较好的offer。 驱使博主写这篇文章的关键是网上关于NIO的文章并不是很原创 2016-05-26 20:15:17 · 3210 阅读 · 0 评论 -
第十五章 单点登录
Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。此处我们使用Jasig CAS v4.0.0-RC3版本:https://github.com/Jasig/cas/tree/v4.0.0-RC3 Jasig CAS单点登录系统分为服务器端和客户端,服务转载 2015-11-13 21:54:29 · 402 阅读 · 0 评论 -
第十四章 SSL
对于SSL的支持,Shiro只是判断当前url是否需要SSL登录,如果需要自动重定向到https进行访问。 首先生成数字证书,生成证书到D:\localhost.keystore使用JDK的keytool命令,生成证书(包含证书/公钥/私钥)到D:\localhost.keystore:keytool -genkey -keystore "D:\localhost.keystore转载 2015-11-13 21:53:49 · 341 阅读 · 0 评论 -
第十章 会话管理
Shiro提供了完整的企业级会话管理功能,不依赖于底层容器(如web容器tomcat),不管JavaSE还是JavaEE环境都可以使用,提供了会话管理、会话事件监听、会话存储/持久化、容器无关的集群、失效/过期支持、对Web的透明支持、SSO单点登录的支持等特性。即直接使用Shiro的会话管理可以直接替换如Web容器的会话管理。 会话所谓会话,即用户访问应用时保持的连接关系,在多次交互转载 2015-11-13 20:58:46 · 334 阅读 · 0 评论 -
第八章 拦截器机制
8.1 拦截器介绍Shiro使用了与Servlet一样的Filter接口进行扩展;所以如果对Filter不熟悉可以参考《Servlet3.1规范》http://www.iteye.com/blogs/subjects/Servlet-3-1了解Filter的工作原理。首先下图是Shiro拦截器的基础类图:1、NameableFilterNameableFilter给Filter起个转载 2015-11-13 20:57:16 · 474 阅读 · 0 评论 -
第七章 与Web集成
Shiro提供了与Web集成的支持,其通过一个ShiroFilter入口来拦截需要安全控制的URL,然后进行相应的控制,ShiroFilter类似于如Strut2/SpringMVC这种web框架的前端控制器,其是安全控制的入口点,其负责读取配置(如ini配置文件),然后判断URL是否需要登录/权限等工作。 7.1 准备环境1、创建webapp应用 此处我们使用了jetty-mav转载 2015-11-13 20:56:42 · 293 阅读 · 0 评论 -
第六章 Realm及相关对象
6.1 Realm【2.5 Realm】及【3.5 Authorizer】部分都已经详细介绍过Realm了,接下来再来看一下一般真实环境下的Realm如何实现。 1、定义实体及关系即用户-角色之间是多对多关系,角色-权限之间是多对多关系;且用户和权限之间通过角色建立关系;在系统中验证时通过权限验证,角色只是权限集合,即所谓的显示角色;其实权限应该对应到资源(如菜单、URL转载 2015-11-13 20:56:00 · 595 阅读 · 0 评论 -
第四章 INI配置
之前章节我们已经接触过一些INI配置规则了,如果大家使用过如Spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即可以理解为是一个IoC/DI容器,但是区别在于它从一个根对象securityManager开始。 4.1 根对象SecurityManager从之前的Shiro架构图可以看出,Shiro是从根对象SecurityManager进行身份验证和授权转载 2015-11-13 20:53:45 · 241 阅读 · 0 评论 -
第三章 授权
授权,也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限(Permission)、角色(Role)。主体主体,即访问应用的用户,在Shiro中使用Subject代表该用户。用户只有授权后才允许访问相应的资源。资源在应用中用户可以访问的任何东西,比如访问JSP页面、查看转载 2015-11-13 20:52:55 · 337 阅读 · 0 评论 -
第二章 身份验证
身份验证,即在应用中谁能证明他就是他本人。一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明。在shiro中,用户需要提供principals (身份)和credentials(证明)给shiro,从而应用能验证用户身份:principals:身份,即主体的标识属性,可以是任何东西,如用户名、邮箱等,唯一即可。一个主体可以有多个principals,但转载 2015-11-13 20:50:52 · 454 阅读 · 0 评论 -
Shiro简介
1.1 简介Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。本教程只介绍基本的Shiro使转载 2015-11-13 20:49:04 · 310 阅读 · 0 评论 -
项目中使用Quartz集群分享
CRM使用Quartz集群分享 一:CRM对定时任务的依赖与问题 二:什么是quartz,如何使用,集群,优化 三:CRM中quartz与Spring结合使用 1:CRM对定时任务的依赖与问题 1)依赖 (1)每天晚上的定时任务,通过sql脚本 + crontab方式执行 #crm 0 2 * * * /opt/***/javafiles/***/转载 2015-10-28 16:11:51 · 860 阅读 · 0 评论 -
第十六章 综合实例
简单的实体关系图 简单数据字典用户(sys_user)名称类型长度描述idbigint 编号 主键usernamevarchar100用户名passwordvarchar1转载 2015-11-13 21:55:03 · 406 阅读 · 0 评论 -
第十九章 动态URL权限控制
用过Spring Security的朋友应该比较熟悉对URL进行全局的权限控制,即访问URL时进行权限匹配;如果没有权限直接跳到相应的错误页面。Shiro也支持类似的机制,不过需要稍微改造下来满足实际需求。不过在Shiro中,更多的是通过AOP进行分散的权限控制,即方法级别的;而通过URL进行权限控制是一种集中的权限控制。本章将介绍如何在Shiro中完成动态URL权限控制。 本章代码基于《转载 2015-11-13 21:57:54 · 837 阅读 · 0 评论 -
第十三章 RememberMe
Shiro提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问,基本流程如下:1、首先在登录页面选中RememberMe然后登录成功;如果是浏览器登录,一般会把RememberMe的Cookie写到客户端并保存下来;2、关闭浏览器再重新打开;会发现浏览器还是记住你的;3、访问一般的网页服务器端还是转载 2015-11-13 21:53:14 · 336 阅读 · 0 评论 -
第十二章 与Spring集成
Shiro的组件都是JavaBean/POJO式的组件,所以非常容易使用Spring进行组件管理,可以非常方便的从ini配置迁移到Spring进行管理,且支持JavaSE应用及Web应用的集成。 在示例之前,需要导入shiro-spring及spring-context依赖,具体请参考pom.xml。spring-beans.xml配置文件提供了基础组件如DataSource、DAO、转载 2015-11-13 21:52:12 · 373 阅读 · 0 评论 -
第十一章 缓存机制
Shiro提供了类似于Spring的Cache抽象,即Shiro本身不实现Cache,但是对Cache进行了又抽象,方便更换不同的底层Cache实现。对于Cache的一些概念可以参考我的《Spring Cache抽象详解》:http://jinnianshilongnian.iteye.com/blog/2001040。 Shiro提供的Cache接口: Java代码转载 2015-11-13 20:59:22 · 392 阅读 · 0 评论 -
第九章 JSP标签
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。 导入标签库Java代码 @taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> 标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。 gu转载 2015-11-13 20:58:02 · 330 阅读 · 0 评论 -
第一章 Shiro简介
1.1 简介Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。本教程只介绍基本的Shiro使转载 2015-11-13 20:52:13 · 484 阅读 · 0 评论 -
第二十四章 在线会话管理
有时候需要显示当前在线人数、当前在线用户,有时候可能需要强制某个用户下线等;此时就需要获取相应的在线用户并进行一些操作。 本章基于《第十六章 综合实例》代码构建。 会话控制器Java代码 @RequiresPermissions("session:*") @Controller @RequestMapping("/sessions") public转载 2015-11-13 22:02:08 · 421 阅读 · 0 评论