J2EE 企业级框架
文章平均质量分 89
主要介绍目前流行的java web开发框架。
水田如雅
不生产代码,只是代码的搬运工
展开
-
Dubbo入门简单示例
之前用过EJB做分布式系统,前段时间跟人闲聊,发现还是Dubbo+ZK用的比较多,so,自己玩玩儿。 先安装一个zk作为服务注册中心,之后,建个maven工程,pom里面加入如下配置: com.alibaba dubbo 2.0.13 org.apache.zookeeper zookeeper 3.3.6原创 2016-06-22 13:51:09 · 5862 阅读 · 3 评论 -
Shiro Review——使用ini文件进行授权测试
一,shiro授权授权流程: 跟用户的认证流程类似,shrio在用户授权的时候,最后还是去Realm获取信息。 shiro的三种授权方式: Shiro 支持三种方式的授权:编程式:通过写if/else 授权代码块完成:Subject subject = SecurityUtils.getSubject();if(subject.hasRole(“admin”)) {//有权限} else原创 2016-06-09 16:54:06 · 4544 阅读 · 0 评论 -
Shiro Review——Shiro介绍
一,Shiro整体介绍 shiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。 spring中有spring security (原名Acegi),是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。shiro不依赖于spring,shiro不仅可以实现 web应用的权限管理,还可以实现c/s系统,分布式系统权限管理,shi原创 2016-06-09 13:06:09 · 4642 阅读 · 0 评论 -
Shiro Review——自定义Realm实现认证
在之前,使用过下面的ini文件进行认证测试:#对用户信息进行配置[users]#用户名跟密码zhangsan=111111lisi=111111 里面用户的认证信息是写死的,so,now ,来测试下使用自定义Realm来从我们的DB读取User信息,完成用户认证。 首先大致看下Realm的类层级关系: 比如,我们之前使用ini文件中的users配置用户名跟密码的时候,认证和时候使用原创 2016-06-09 14:19:38 · 4045 阅读 · 0 评论 -
Spring事务管理回顾——基本概念
BackGround: 最近一直在面试,感觉spring的事务配置问的挺多的,再扯出来好好瞅瞅,争取做到秒杀面试官。一,事务的基本概念 什么是事务? 逻辑上的一组操作,这组操作要么全都成功,要么全都失败。例如,我购买完一个课程,要进行支付,需要首先去我的账户表中减去需要支付的金额,然后更新订单状态,支付才算是成功,那么支付跟更新订单状态就要原创 2016-05-26 17:07:29 · 3235 阅读 · 1 评论 -
MyBatis分页插件的使用——PageHelper
一,配置plugin 在myBatis的配置文件中,加入如下配置: PS: 该插件目前支持以下数据库的物理分页:OracleMysqlMariaDBSQLiteHsqldbPostgreSQLDB2SqlServer(2005,2008)InformixH2SqlServer2012 配置dialect属性时,可以使用小写形式: or原创 2016-05-29 21:05:48 · 5676 阅读 · 3 评论 -
kafka入门(二)——kafka的逻辑结构
一,组成部分概要 Producer:消息生产者 Consumer:消息消费者 Topic:特指kafka处理的消息源的不同分类 Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offs原创 2016-06-04 11:05:14 · 3300 阅读 · 0 评论 -
Kafka的安装测试
在安装kafka之前,确保你的服务器上面JDK配置正确,最好用1.7的。下载地址: http://kafka.apache.org/downloads.html下载完成之后执行解压命令: tar -zxvf kafka_2.10-0.8.1.1.tgz 启动服务 首先启动zookeeper服务 bin/zookeeper-server-start.sh c原创 2016-06-04 15:28:46 · 2865 阅读 · 0 评论 -
FastDFS+Nginx搭建分布式文件系统
一,关于FastDFS FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 如上图,其中tracker并不保存实际的图片,而是起到一个协调的作用,具体的图片存储在storage里面。但我们页原创 2016-06-05 17:02:14 · 2114 阅读 · 0 评论 -
Kafka入门(一)
一,消息队列的分类 1,点对点 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息。 注意:1,消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息。 2,Queue支持存在多个消费者,但是对一个消息而言,只会有一个原创 2016-06-08 16:56:17 · 3783 阅读 · 0 评论 -
Shiro Review——权限管理基础知识
只要是有用户参与的系统一般都会有权限管理,权限管理实现对用户的访问控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理包括用户认证和授权两部分。一,用户认证 用户去访问系统,系统要验证用户身份的合法性。比较常见的认证方法:1,用户名密码方式;2,指纹识别,比如我们上班打卡;3,基于证书方式; 当系统验证了用户身份的合法性,用户方可访问原创 2016-06-08 16:58:46 · 3756 阅读 · 0 评论 -
使用负载均衡之后的Session处理思路
一,引入Session问题 在网站的演进过程中,当我们的单一应用服务器无法再负担众多请求跟响应的时候,这时候,我们就会考虑,要不要搞个服务器集群,这时候,我们又加了台服务器,为了按照一定权重分发请求跟响应,我们又加上了负载均衡设备,本来以为,完美!但是,就像改bug那样,修复掉一个bug,很有可能就产生了新的 bug。...原创 2016-04-29 21:15:25 · 15616 阅读 · 4 评论 -
Spring源码解析——配置文件读取相关的类
一,整体结构图 在Spring中,定义了如下类来处理经过经过验证的Document对象,并且对文档元素及属性进行解析。二,各个类基本介绍 1,ResourceLoader public interface ResourceLoader { /** Pseudo URL prefix for loading from the原创 2016-05-11 21:31:24 · 1948 阅读 · 2 评论 -
Nginx配置负载均衡
一,Nginx常用命令 1) 启动Nginx:start nginx2) 停止Nginx:nginx -s stop3) 修改配置后重启:nginx -s reload二,以Tomcat服务器为例进行负载均衡设置 为了简单,我直接在windows解压了个nginx-1.10.0.zip。 之后再myeclips原创 2016-05-15 13:55:00 · 4122 阅读 · 0 评论 -
Redis——java代码读写redis
一,简单Jedis读写 Jedis jedis=new Jedis("127.0.0.1",6379);//连接的是我本地的服务 System.out.println("成功连接到服务器=="); /*存取string类型*/ jedis.set("name", "lhc"); model.addAttribute("name",jedis.get("name"))原创 2016-05-16 15:11:40 · 10434 阅读 · 0 评论 -
Solr在Tomcat上的搭建
一,关于Solr 1,From Where apache lucene是apache下一个著名的开源搜索引擎内核,基于Java技术,处理索引,拼写检查,点击高亮和其他分析,分词等技术。 nutch和solr原来都是lucene下的子项目。但后来nutch独立成为独立项目。nutch是2004年由俄勒冈州立大学开源实验室模仿google搜索引擎创立的开源搜索引擎,后归于apache旗原创 2016-05-21 09:43:01 · 13735 阅读 · 2 评论 -
MyBatis review(一)——常见配置及方法
一,#{} 与 ${}#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。 #{}可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。${}表示拼接sql串,通过${}可以将parameterType 传入的内原创 2016-05-21 15:22:41 · 1842 阅读 · 1 评论 -
MyBatis整体Review
一,整体结构 mybatis是一个持久层的框架,是apache下的顶级项目。 mybatis托管到goolecode下,再后来托管到github下(https://github.com/mybatis/mybatis-3/releases)。 中文手册:http://www.mybatis.org/mybatis-3/zh/index.html mybatis让程序将主要精力放在sql上原创 2016-05-21 15:37:19 · 2512 阅读 · 0 评论 -
MyBatis Review——开发Dao的方法
一,原始Dao开发方法 需要编写的类:Dao接口及Dao接口的实现类。 使用逻辑:通过向Dao实现类中注入SqlSessionFactory,在方法体内部通过SqlSessionFactory创建SqlSession对象,再通过SqlSession对象操作statement。 例如:Dao接口:/** * @author LiuHuiChao * 用户管理dao接口 * */p原创 2016-05-21 18:23:24 · 3325 阅读 · 0 评论 -
MyBatis Review——加载mappers映射文件的三种方式
一,通过resource加载映射文件 二,通过mapper接口加载映射文件 <!-- 遵循规范:需要将mapper接口类名与xml文件映射名称保持一致,且在一个目录中 上边规范的前提是:使用的是mapper代理的方法 --> 三,批量加载映射文件 <!-- 批量加载 指定接口的包名原创 2016-05-22 11:54:01 · 7967 阅读 · 0 评论 -
MyBatis Review——输入输出映射
一,输入映射 mybatis的输入映射通过parameterType指定,可以为简单类型,包装类型,hashmap类型。 1,简单类型 SELECT * FROM `user` where username like '%${value}%' 2,定义包装类型po select * from user where原创 2016-05-22 15:31:09 · 1244 阅读 · 0 评论 -
MyBatis Review——动态sql
MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 通常使用动态 SQL 不可能是独立的一部分,MyBatis 当然使用一种强大的动态 SQL 语言来改进这种情原创 2016-05-22 16:21:13 · 1689 阅读 · 0 评论 -
MyBatis Review——使用resultType和resultMap实现一对一查询
例如: 查询订单信息,关联查询创建订单的用户信息。 查询语句: SELECT orders.*, USER .username ,USER .sex, USER .addressFROM orders, USERWHERE orders.user_id = USER .id 查询结果: 1,使用resu原创 2016-05-23 13:15:30 · 2528 阅读 · 0 评论 -
MyBatis Review——一对多关系映射配置
示例: 查询订单表及订单明细信息。编写sql查询语句:SELECT orders.*, USER .username ,USER .sex, USER .address, orderdetail.id as orderdetail_id, orderdetail.items_id, orderdetail.items_num, orderdetail.orders原创 2016-05-23 14:56:29 · 1961 阅读 · 0 评论 -
MyBatis Review——多对多映射
示例: 查询用户及用户购买商品信息。sql语句:SELECT orders.*, USER .username ,USER .sex, USER .address, orderdetail.id as orderdetail_id, orderdetail.items_id, orderdetail.items_num, orderdetail.orde原创 2016-05-23 17:00:11 · 2225 阅读 · 0 评论 -
MyBatis Review——延时加载
在MyBatis中使用resultMap可以实现延迟加载,在collection和association标签可以配置延迟加载功能。 1,开启延迟加载配置 2,示例association配置 <!-- select:指定延时加载需要执行的statement的id(根据user_id查询用原创 2016-05-23 20:08:54 · 7549 阅读 · 0 评论 -
MyBatis Review——查询缓存
一,查询缓存简介 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。 mybaits提供一级缓存,和二级缓存。 一级缓存是SqlSession级别的缓存。在操作数据库时候,需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域是互相不影响的。原创 2016-05-24 20:37:55 · 9509 阅读 · 1 评论 -
MyBatis Review——整合ehcache
ehcache是一个分布式缓存框架,是hibernate中二级缓存的默认实现。 一,整合的思路 mybatis提供了一个cache接口,如果要实现自己的缓存逻辑,实现cache接口开发即可: mybatis和ehcache整合:mybatis和ehcache的整合包中提供了一个cache接口的实现类: 1,加入jar2,整合ehcache原创 2016-05-24 21:13:38 · 5450 阅读 · 0 评论 -
Java反射整理
无论是在C#还是Java(平常常玩儿的就这俩,所以这么举例,别的语言也雷同!),为了获取类的灵活性,我们会时常使用反射,将类的信息写入配置,通过运行时候动态获取类,类的方法,字段,等等。 在Java中,我们通常是一个思路来动态访问类信息的,先获取类的Class 类,这个Class指明了是哪个类,然后通过获取到的Class get各种类信息。一,获取Class类 public cla原创 2016-04-05 15:19:32 · 1129 阅读 · 5 评论 -
Java——自定义注解
一,自定义注解类 @Target({ElementType.METHOD,ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited //继承对接口是无用的;继承的时候只会集成到类上面的注解,不会继承到方法上的注解@Documentedpublic @interface Description { Strin原创 2016-04-05 19:28:53 · 1298 阅读 · 0 评论 -
MyBatis-Generator自动生成基本代码
一,MyEclipse中安装Generator 可以在MyEclipse中,选择install from site:http://mybatis.googlecode.com/svn/sub-projects/generator/trunk/eclipse/UpdateSite/原创 2016-04-09 19:19:11 · 7046 阅读 · 1 评论 -
CAS(Central Authentication Service)——windows上简单搭建及测试
一,服务端搭建 我使用的服务端版本为:cas-server-3.4.11-release.zip。解压之后,将\cas-server-3.4.11-release\cas-server-3.4.11\modules\cas-server-webapp-3.4.11.war文件改名为cas.war,放置到tomcat的Tomcat\webapps目录下,之后启动tomcat。原创 2016-03-22 09:52:03 · 4559 阅读 · 4 评论 -
SpringMvc——进行注解开发的基本配置
入手文章,spring大神请绕行。零,jar包引入这个是我的myeclipse项目中的截图,如果使用idea进行开发的话,记得要在librities中引入web容器的部分jar包。一,配置前端控制器 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.o原创 2016-03-22 10:03:38 · 2514 阅读 · 6 评论 -
Spring Mvc——Controller中常规方法示例
一,简单无参数地址访问 首先来看下类标记:/** * Created by LiuHuiChao on 2016/3/21. */@Controller@RequestMapping("/hello")public class HelloMvcController { 简单进行类中方法的访问:/*简单访问示例*/ @RequestMapping("/mvc") public原创 2016-03-23 08:50:41 · 2221 阅读 · 4 评论 -
Spring源码导入MyEclipse
一,安装Gradle 解压之后,配置GRADLE_HOME: 之后在Path中加入: cmd监测是否安装成功:输入 gradle 出现上面结果表示安装成功。原创 2016-03-27 17:20:10 · 3463 阅读 · 2 评论 -
Rest ful API的一些基本概念
0,应用背景 Rest ful api是 Fielding(楼下那叔叔) 在他的论文《Architectural Styles and the Design of Network-based Software Architectures》中提出的,论文地址:http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm。(。。。)原创 2016-03-28 10:26:02 · 3591 阅读 · 8 评论 -
MyBatis——入门select
前两天一直在搞AngularJs,各种看代码,昨天晚上要逼近崩溃的时候,决定看点儿别的调解下心情,就换到了MyBatis。 一,基本配置 1,引入myBatis的jar包(github地址:https://github.com/mybatis/mybatis-3/releases),我使用的是3.3.1这个版本。原创 2016-02-24 16:08:33 · 2429 阅读 · 4 评论 -
EJB远程调用和本地调用
一,远程调用@Stateless//一般定义成无状态的@Remotepublic class UserManagerBean implements UserManager { @Override public void addUser(User user) { System.out.println("User["+user.getUsername()+"] is saved...");原创 2016-02-14 15:54:06 · 3703 阅读 · 12 评论 -
有状态的EJB对象和无状态的EJB对象
一,定义有状态Bean和无状态Bean有状态Bean:@Stateful@Remotepublic class StatefulEjbBean implements StatefulEjb{ private int state; @Override public void compute(int i) { state=state+i; } @Override publi原创 2016-02-14 14:20:32 · 2429 阅读 · 6 评论 -
EJB对象的部署及客户端调用简单示例
一,EJB对象的写法及部署 1,新建一个EJB Project,在包里加入接口及实现类: 实现类通常以Bean结尾,并且通过注解方式指定EJB类型:之后,部署到JBoss服务器上。二,客户端调用 1,将EJB项目中的接口类打包,并把这个jar包加入到client项目中。原创 2016-02-09 18:26:33 · 3425 阅读 · 4 评论