- 博客(134)
- 资源 (17)
- 收藏
- 关注
原创 Scala的泛型,上界和下届、协变和逆变
引子:为了弄懂scala中协变和逆变这两个概念,查阅了不少资料,但是还是要自己总结一下,会记得比较深刻。那就从java和scala的对比说起吧。java中:如果你很理解java的泛型,就会知道:比如给定一个类B,和他的父类A。那么用多态, A a = new B 编译器是允许的。但是如果泛型B的集合直接赋给父类A的集合。List<A> aList = new A...
2019-07-06 00:36:28
1182
2
原创 基于Hadoop CDH进行Spark编译
Spark-2.4.0下载地址:官方地址:https://archive.apache.org/dist/spark/spark-2.4.2/spark-2.4.2.tgz编译Spark源码的文档(参考官方文档)http://spark.apache.org/docs/latest/building-spark.html编译Spark源码的前置要求 软件 ...
2019-05-02 16:17:51
850
1
原创 Scala:Object单例模式分析
Object和Class区别1.object与静态类相似,类名加方法直接调用,不用new对象: Scala比 Java 更面向对象的一个方面是 Scala 没有静态成员。替代品是Scala的单例对象:singleton object。2.Object()调用的是Object里面的apply方法,val a = new ClassA() a() 调用的是Clas...
2019-05-02 11:49:34
1283
1
原创 谈Hive的窗口函数
使用场景:有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这时我们便引入了窗口函数如果只使用partition by子句,未指定order by的话,我们的聚合是分组内的聚合. 使用了order by子句,未使用window子句的情况下,默认从分组内起点到当前行做聚合. window子句是对分组内数据更细粒度的做聚合,比如当前行和前面一行做聚合 序列函数,NTILE做分片,row...
2019-04-22 10:36:12
883
2
原创 HDFS文件的健康检查
文章来源:HDFS DataNode Scanners and Disk Checker Explained以下只简单翻译部分文字,详情看英文原文。简单的概念一个文件包含多个block,一个block有一个或多个副本。block存储在每台机器的磁盘上,并且包含个blk_xxx.meta信息,meta中包含crc校验信息等。这篇文章为了解答以下问题datanode什么时...
2019-04-09 23:35:45
1628
1
原创 Hadoop中的block Size和split Size是什么关系
学习hadoop map reduce过程的时候,第一步就是split。我们知道,hdfs中的数据是按block来存储的。问题来了,那么split和block之间是什么关系呢?我google到了stackoverflow上的这篇文章,我觉得这个帖子应该把关系说清楚了,翻译出来,欢迎大家批评指正!以下:问题hadoop的split size 和 block size 是什么关系? 是否 sp...
2019-04-06 23:14:08
3229
1
原创 Hadoop2.0集群架构设计分析
众所周知Hadoop2.0包括三个部分,分布式存储HDFS、资源调度YARN、分布式计算MapReduce,而MapReduce是基于HDFS、YARN基础之上进行的分布式计算,HDFS和YARN搭建好分布式集群,MapReduce自然也就有了分布式集群环境,所以我们主要来说HDFS和YARN的集群架构。HDFS的集群架构HDFS有三个进程NN、SNN、DN,NN,Yarn是两个进程...
2019-03-30 19:03:22
930
1
原创 同是流行MVC框架,比较Strtus2和SpringMVC的区别
其实用什么技术,这一点真的没有硬性的要求,有人觉得struts好用,有人就觉得springMVC先进。总的来说,实现的功能都是大体一致的。有时候架构师一直使用struts,为了项目的稳定,就一直沿用;而一些先进分子总是喜欢在项目中常识新的技术,也促进了这项技术的发展。单就struts和springMVC来说,都是controller层的框架,作用都是接收request请求,中间调用业务逻辑代码,最后返回reponse响应,不用刻意远离SSH,也不用一味追求Spring MVC。总之,合适的就是最好的。
2014-07-30 21:11:05
20787
19
原创 命令模式在MVC框架中的应用
命令模式在MVC中的应用: Struts中,在模型层都要继承一个Action接口,并实现execute方法,其实这个Action就是命令类。为什么Struts会应用命令模式,是因为Struts的核心控制器ActionServlet只有一个,相当于Invoker,而模型层的类会随着不同的应用有不同的模型类,相当于具体的Command。这样,就需要在ActionServlet和模型层之间解耦,而命令模式正好解决这个问题。
2014-07-30 16:58:47
3844
13
原创 基于CAS实现单点登录(SSO):CAS+LDAP实现单点登录认证
[一]、概述本来主要详细是介绍CAS和LDAP整合实现单点登录的步骤。[二]、详细步骤1、LDAP安装配置 详见:图文介绍openLDAP在windows上的安装配置安装配置,添加部分测试数据如下: 2、CAS的基础安装配置:SSO之CAS单点登录实例演示 3、CAS整合LDAP的配置如果是Mave构建项目的,添加LDAP的相关依
2014-07-22 21:41:26
22070
9
原创 介绍openLDAP在windows上的安装配置
介绍openLDAP在windows上的安装配置 [一]、概述现有的关系型数据库存在的问题是,在操作数据过程中,需要频繁的进行数据类型的验证和事务的完整性的确认,导致系统整体的性能降低。 目录服务的推出主要是解决上述数据库中存在的问题。目录的数据类型主要是字符型,而不是关系数据库提供的整数、浮点数、日期、货币等类型,它主要面向数据的查询服务(查询和
2014-07-22 16:17:00
7647
6
原创 你必须要有目标
近来一直在利用睡觉前的闲暇时间阅读书籍,有所感悟,把心得分享出来,勉励大家。这是一则源自《哈佛家训》中的小故事:有一对年轻的夫妇,他们有两个孩子,一个叫莎拉,一个叫迈克尔。当莎拉6 岁,迈克尔4 岁的时侯,父母决定为他们养一只小狗。小狗抱回来以后,他们专门聘请了一位训兽师来训练它。在第一次训练开始之彰,训兽师问他们:“小狗的目标是什么?”夫妻俩面面相觑,颇感意外,他
2014-06-30 20:43:07
2546
22
原创 【推荐】程序员必读的三十本经典巨作
在浏览博客的时候无意间发现的这篇文章,感觉每本书都是经典的巨作啊。所以想推荐给大家看一下。希望大家共同学习 本文转载于:http://iteye.blog.163.com/blog/static/1
2014-06-30 20:39:12
3582
6
原创 容器学习(二):动手模拟AOP
简单来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。上文已经介绍模拟IoC实现,这篇文章来动手模拟AOP。 AOP简述面向对象强调"一切皆是对象",是对真实世界的模拟。然而面向对象也并非完美无缺的,它更注重于对象层次结构方面的东西,对于如何更好的管理对象行为内部结构,还存在着些许不足。那么我们如何使这个问题的得到更完美的解决呢?答案就是AOP。
2014-06-30 19:28:40
2934
4
原创 容器学习(一):动手模拟spring的IoC
学习经典框架的实现原理以及设计模式在其实际中的运用,是非常有必要的,可以让我们更好进行面向对象。 本篇文章就来模拟Spring的IOC功能,明白原理后,可以更好的使用它,进而为进行面向对象提供一种思路。 点击下载源码:下载 首先我们把我们用的dao、service、entity定义出来:Student.java :package com.bzu.entity;
2014-06-30 17:42:11
3204
8
原创 通过连接池和字段索引,提升单点登录cas的性能
cas是多个系统的中心认证,认证的过程就是用户的登录信息和数据库中的信息匹对的过程,如果某一时刻登录的人数很多,需要频繁的读取数据库,数据库连接的管理就是问题。前天测试评教时无意之中把单点登录的问题暴露出来了,平时通过cas登录管理端是没有问题的,而200人同时通过cas登陆学生端时出现异常org.springframework.jdbc.CannotGetJdbcConnectionEx
2014-05-29 21:25:02
3693
55
原创 Android平台调用Web Service:线程返回值
接上文遗留问题对于Java多线程的理解,我以前仅仅局限于实现Runnable接口或者继承Thread类,然后重写run()方法,最后start()调用就算完事,但是一旦涉及死锁以及对共享资源的访问和随时监控线程的状态和执行顺序和线程返回值等就不行了。 Callable 和 Future 简介Callable接口代表一段可以调用并返回结果的代码;Future接口表示是执行异步任务
2014-05-21 10:28:09
2886
12
原创 Android平台调用Web Service:引入线程
android 3.0+以上 已经不建议在activity中添加耗时操作,要界面和数据脱离。4.0以上的通信都必须放到线程里去做,不能在UI线程。解决办法是另起线程,如果一定要想在UI线程操作
2014-05-19 21:16:36
2885
9
原创 Android平台调用Web Service:示例
最近在学习Android,随着移动设备的流行,当软件走上商业化的道路,为了争夺市场,肯定需要支持Android的,所以开始接触了Android,不过只了解皮毛就好,因为我们要做管理者嘛,懂点Android,管理起来容易些。 Android学起来也简单,封装的更好了,一个个的控件,像是又回到了VB的赶脚。 下面将通过一个示例讲解如何在Android平台调用Web Service。我们
2014-05-18 16:08:31
2944
8
原创 SSO之CAS基础及应用视频教程(2)
本次更新7集视频教程主要讲解,CAS如何实现统一认证,通过转换器配置Server端和Client端通信信息,单点退出。视频地址cas教程4——数据库查询认证01cas教程5——数据库查询认证02cas教程6——数据库查询认证03cas教程7——数据库查询认证04cas教程8——配置转换器返回更多用户信息01cas教程9——配置转换器返回更多用户信
2014-04-27 14:46:05
2785
9
原创 SSO之CAS基础及应用视频教程(1)
这是自己录制的Cas视频教程,是做完项目后,对项目开发做的总结。顺便拿出来晒晒,供大家交流进步。对于不善言辞的我会抓住每次练习的机会,当然也包括这次,而且录视频的过程中,发现要经常进行语言表达才能提升表达能力和理解力。这几天在学习英语,明知道是如何发音,也自以为发音没问题,当自己照着镜子看着自己的口形就原形毕露了。所以做事情涉及到三层次,知道是一回事,做出来一回事,做出来让别人理解你又是另一回事。如果视频中有不理解之处,欢迎交流和指正。
2014-04-24 10:49:13
6176
13
原创 项目中的宏观意识
项目做到现在(各项目已经有稳定版本),除了收获一堆技术知识外,感触最深的是对项目的宏观把控。 这次开发更加让我体会到团队开发的乐趣和团队的重要性。项目做了半年之余,却毫无疲倦之感,对新工具不再是恐惧,更多的是好奇、期待,相信会给我们带来便利。此次分布式开发,如果缺少团队任何一人可能也走不到今天,感谢团队,通过共享让我们快速成长。 也让我逐渐意识到,企业项目和个人应用之间的巨大差距。
2014-04-20 10:14:53
2912
14
原创 性能优化之Hibernate缓存讲解、应用和调优
近来坤哥推荐我我们一款性能监控、调优工具——JavaMelody,通过它让我觉得项目优化是看得见摸得着的,优化有了针对性。而无论是对于分布式,还是非分布,缓存是提示性能的有效工具。 数据层是EJB3.0实现的,而EJB3.0内部也是通过Hibernate实现的,而Hibernate本身提供了很好的缓存机制,我们只需要学会使用它驾驭它就够了。 缓存的机能可以简单理解为将从数据库中
2014-04-10 20:54:30
3890
10
原创 CAS和Shiro在spring中集成
shiro是权限管理框架,现在已经会利用它如何控制权限。为了能够为多个系统提供统一认证入口,又研究了单点登录框架cas。因为二者都会涉及到对session的管理,所以需要进行集成。 Shiro在1.2.0的时候提供了对cas的集成。因此在项目中添加shiro-cas的依赖 org.apache.shiro shiro-cas ${s
2014-03-28 19:56:32
12721
18
原创 关于单点登录中的用户信息存储问题的探讨
因为项目中使用了单点登录,用户信息的存储应该重新被审视,这就是书写本篇文章的原因。项目中没有涉及用户注册的功能,用户信息但是对于企业应用来说,注册是必须的,同时也涉及到cas server到哪个数据源验证的问题(是cas server的,还是cas client的),所以对于这个问题来说说自己的点点见解。 方案一:Cas Server端提供注册功能并维护用户通用信息,Cas C
2014-03-27 20:18:51
11663
12
原创 基于CAS实现单点登录(SSO):cas client端的退出问题
自从CAS 3.4就很好的支持了单点注销功能,配置也很简单。之前版本因为在CAS服务器通过HttpClient发送消息时并未指定为POST方式,所以在CAS客户端的注销Filter中没有收到POST请求(要知道Filter只对Post请求起作用),也就没有做session销毁处理。 两个业务系统APP1和APP2在没有配置单点退出时,效果是这样子的1:登录APP1,然后经过CA
2014-03-27 20:17:25
15677
14
原创 基于CAS实现单点登录(SSO):登录成功后,cas client如何返回更多用户信息
从cas server登录成功后,默认只能从casclient得到用户名。但程序中也可能遇到需要得到更多如姓名,手机号,email等更多用户信息的情况。cas client拿到用户名后再到数据库中查询,的确可以得到关于该用户的更多信息。但是如果用户登录成功后,直接从cas server返回给casclient用户的详细信息,这也是一个不错的做法。这个好处,尤其是在分布式中得以彰显,cas
2014-03-27 11:10:26
15981
13
原创 基于CAS实现单点登录(SSO):自定义登录验证方法
通过配置方式实现数据库查询认证,的确简单但是不够灵活。但是如果登录验证逻辑稍微复杂些,可能通过配置方式就不能满足需求了,比如:当用户登录时,需要判断该用户是否绑定了邮箱,如果未绑定,拒绝登录并给出提示信息。遇到类似的情况,就需要使用自定义登录来完成,并且给出的提示信息也是自定义的。 自定义登录认证CAS内置了一些AuthenticationHandler实现类,如下图所示,在cas
2014-03-25 21:41:02
7191
11
原创 基于CAS实现单点登录(SSO):分享过程中遇到的问题及解决方案,让你少走弯路
在做 单点登录过程中,经历了一些问题及解决方案,分享出来,可以让你少走弯路。主要分为两方面内容:基于CAS实现单点登录(SSO)实例讲解、CAS和Shiro集成基于CAS实现单点登录(SSO)实例讲解 配置完成之后出现的问题404错误首先查看对应应用的tomcat服务器的log日志,报错如下:严重: Exception starting filter CAS Single
2014-02-28 21:17:57
5034
15
原创 基于CAS实现单点登录(SSO):配置CAS服务端的数据库查询认证机制
[一]、概述继前面介绍过基于CAS实现单点登录(SSO)的实例演示,演示过程中服务端认证机制采用的是测试环境的默认配置,本文将重点演示如何通过查询数据库,对用户名和密码进行相关的认证配置。[二]、演示环境基本环境同: 基于CAS实现单点登录(SSO)的实例演示Mysql:5.1.51 [三]、演示步骤1.创建演示的用户数据在mysql数据库中创建Databa
2014-02-28 16:58:47
3690
14
原创 基于CAS实现单点登录(SSO):实例讲解
本文目录:一、概述二、演示环境三、JDK安装配置四、安全证书配置五、部署CAS-Server相关的Tomcat六、部署CAS-Client相关的Tomcat七、 测试验证SSO 一、概述此文的目的就是为了帮助初步接触SSO和CAS的人员提供一个入门指南,一步一步演示如何实现基于CAS的单点登录。CAS的官
2014-02-25 20:47:42
14631
36
原创 基于CAS实现单点登录(SSO):工作原理
单点登录(SingleSign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 SSO的解决方案很多,比如收费的有UTrust、惠普灵动等,开源的有CAS、Smart SSO等,其中应用最为广泛的是CAS。 CAS 介绍CAS(CentralAuthenticat
2014-02-25 20:06:28
5777
14
原创 hibernate应用实例:hibernate validator 验证数据合法性
随着ORM框架的应用,使得开发更加面向对象,不用再专门设计数据库,由编写实体,实体映射代替。所以,实体的编写是非常基础而重要的工作,开发工作能及早做就不要往后拖。比如,验证数据的合法性,我们习惯在action或者controller中做,其实这些工作可以提前在实体做的。 JSR303BeanValidator是数据验证的规范,而hibernate validator 是其中的一
2014-01-27 21:58:54
3822
14
原创 DWZ (JUI) 应用实例(三):修改源码,实现自动刷新当前层
可见在Action中需要设置userListview参数,也就是指明返回数据的目标tab。这样的设计没问题,但是会产生两个问题:实际应用中,我们操作的大都是当前的tab,如果每次向当前tab返回数据时都指定tabId,未免有些过于形式化。如果页面左侧树形菜单是动态的,是从数据库中读取的,并且tabId属性值可以修改,那么outMsg(AjaxObject.newOk("添加用户成功!").setNavTabId("userListview").toString())显然不能满足需求了。
2014-01-24 21:00:05
3358
15
原创 基于AOP实现权限管理:通过shiro认证身份和模拟授权认证
有记录和总结的学习,才是完整的学习。不能总是低头忙于平台项目的开发,更重要的是在学习过程中思考和总结,颗粒归仓,一年之计在于秋。 身份认证和授权认证是权限管理中的核心模块。本文讲讲通过安全框架shiro进行身份认证和模拟授权认证,并可以看到授权之后的效果。 认证登录模块,在完成用户名和密码的匹配基础上,查询该用户具有的操作权限,缓存到本地。该权限系统是基于角色的RBAC模型
2014-01-21 21:31:13
6467
18
原创 基于AOP实现权限管理:访问控制模型RBAC和ACL
权限、日志是系统必不可少的的功能,将这些通用的东西抽出来,以AOP方式切入系统中,可以得到非常高的复用率。在OA中,接触了ACL(access control list)模型的权限设计。在高校平台中,采用RBAC(Role Based Access Control)模型的权限设计。 下面是ACL实体模型ACL的原理非常简单:每一项资源,都配有一个列表,这个列表记录的
2014-01-19 21:39:42
10466
14
原创 将 Shiro 作为应用的权限基础 七:缓存Shiro本地会话
系统通过AOP切入权限认证后,既想保证安全,也想保证访问页面的速度,那就得用到缓存了,或者说是缓冲区。用户第一次登陆后,将该用户所具有的所有权限缓存到本地。这样,频繁的验证用户是否具有操作权限时,不再每次都到数据库拿数据。在OA项目中的权限,是每次用户操作前,先到数据库中取得该用户拥有的权限,然后判断其操作是否合法。这样的频繁的读取数据,必然降低了页面的访问速度。 缓存配置虽然
2013-12-29 20:27:12
4397
20
原创 研发管理篇:项目依赖包不能打入项目jar 引发的思考
近来在做高校云平台,存在着对待开发环境的学习不够,更确切的说,是知道的不够,导致开发效率低下的问题。今天先说说这个问题:maven项目开发中,pom类型如果是war的话,打包时就能自动将项目依赖的jar包打到web-inf下的lib文件夹中。但是,如果pom类型为jar的话,打包过程中不会将依赖的包提取出来。 我们的做法是,在pom文件中引入jar包时,scope定义成pr
2013-12-29 14:38:29
3465
17
原创 DWZ (JUI) 应用实例(二):处理信息回馈的通用规范
在开发过程中,抽象成模型,定义规范是非常有必要的,不仅可以简化代码,提高开发效率。也为自己减少了不少麻烦,在刚开始使用时,因为这DWZ这块是我负责,别人不会用都来问我,导致我经常在解决相同的问题,所以抽象通用模型是很有必要的。 DWZ是客户端框架,自然需要接收后台传来的消息,可能是异常信息,可能是成功信息。返回信息是json格式,其中包括状态码、callbackType类型、navTa
2013-12-10 21:48:18
4708
18
原创 DWZ (JUI) 应用实例(一):通过自定义标签和BaseAction 简化 table 分页排序
前段时间忙于做项目,在使用DWZ过程中,发现有些代码的重复度挺大,所以工作空闲之余,写一下分页排序的Demo,并且使用自定义标签简化重复的代码。(发现越来越多的人关注该框架了,因为是国产,可以更快的上手) 分页思路服务器返回当前页的数据,总条数,再由js来生成分页标签。分页是配合服务器端来处理的, 不是纯js做的分页。 因为如果数据量很大,比如有好几百页,存js分
2013-12-09 08:06:50
3659
14
linux gcc4.4.7以上版本依赖包
2019-04-06
CAS和LDAP整合
2014-07-22
Axis2发布和调用webservice
2014-07-21
android webservice by thread
2014-05-18
CAS单点登录
2014-02-25
struts2shiro(by annotation)
2013-12-29
spring+struts+ejb整合
2013-11-20
SpringMVC+Apache Shiro+JPA(hibernate)整合
2013-11-01
使用JasperReport+iReport进行WEB开发
2013-09-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人