- 博客(135)
- 资源 (11)
- 收藏
- 关注
原创 Nginx+tomcat搭建高性能web服务器集群
Nginx是目前应用广泛的web服务负载均衡器,相较于Apache来讲nginx属于轻量级的web负载均衡器,运行过程中占用更少内存及资源。nginx能够支持上万并发,这得益于nginx处理请求是异步非阻塞型的,而apache 则是阻塞型,在高并发下nginx仍 能保持较低的资源消耗,其中核心区别于apache同步多进程模型连接对应进程;nginx异步多连接(万级别)对应进程。nginx确实在某些方面性能上优于Apache,尤其是在处理静态文件上,Nginx 静态处理性能比 Apache 高 3倍上,但这并
2015-09-17 17:55:35 5004 1
原创 Condidtion实现多线程之间的线程通信
前面讲到当多个线程共享一个变量的时候,为保证线程安全必须通过加锁的方式实现线程之间的互斥,那么问题来了,当某个线程执行完毕之后满足了另外一个线程的执行条件时如何通知另外一个线程执行呢?听起来似乎比较难理解,举一个生产者和消费者的例子,一个面包箱内能盛放20个面包,有一个生产者负责生产面包然后放到这个容器中,有一个消费者从面包箱内取出然后吃掉面包,逻辑上的执行应该是这样的,首先生产者生产一箱面包然后通知消费者吃掉面包,当消费者吃光这一箱面包之后通知生产者再生产一箱面包,然后消费者再次吃光面包,循环执行。映射到
2015-09-01 16:29:39 946 1
原创 java多线程编程之读写锁设计高性能缓存器
解决多线程线程安全问题的主要方法是通过加锁的方式来实现,当多个线程对某个变量进行读取或写入的时候通过加锁来限定只有当前获取锁权限的线程才可以对数据进行读写,当该线程访问完毕释放锁之后其他阻塞线程才拥有访问权限,当下一个线程得到执行权限的时候同样进行上述操作步骤。而实现加锁的方式最简单的有两种,一个是通过关键字synchronized来对整个方法或部分代码块进行加锁,另外一种是用Lock对象来实现线程互斥,保证线程安全。对于一般系统来讲,加锁的方式在很大程度上已经满足了系统需要,但是当系统面临高并发请求的时候
2015-08-31 17:52:15 1699 1
原创 多线程编程并发解决之道-线程锁技术
实际项目中多线程技术的应用十分的广泛,但如果程序中涉及到多个线程对同一变量的写操作,那么就会涉及到线程安全的问题,如何解决多个线程对同一数据的并发操作呢?毫无疑问采用加锁的方式解决线程并发问题是目前解决多线程并发问题的主要技术,下面来介绍一下java传统加锁方式和java5的线程锁技术。在java传统的加锁技术中synchronized是实现线程互斥的关键,根据加锁粒度的粗细,该关键字可以加在方法级别上,也可以加在代码块级别上,根据业务需要可以自定义加锁范围,它的实现代码可以是这样的:
2015-08-25 20:41:10 798 1
原创 Spring容器装饰者模式应用之实现业务类与服务类自由组合的解决方案
在任何一个项目中都不可或缺的存在两种bean,一种是实现系统核心功能的bean,我们称之为业务类,另外一种是与系统核心业务无关但同时又提供十分重要服务bean,我们称之为服务类。业务类的bean根据每个系统自身核心功能的不同可以有任意多个,但是服务类的种类在各个系统之间的差异却并不是很大。在系统中经常用到的服务有以下几种,权限服务,日志服务,缓存服务以及预警服务等。在整个系统的不断进化过程中,服务
2015-08-16 21:49:51 4441 1
原创 java版根据权重抽奖算法
根据权重进行抽取的算法应用比较广泛,其中抽奖便是主要用途之一。正好这几天也正在进行抽奖模块的开发,整个抽奖模块涉及到的地方大概有三处,分别是后台进行奖品的添加(同时设置权重和数量),前台根据后台配置生成抽奖队列并根据指令开始抽奖活动,最后一部分是后台统计中奖情况并设置物流状态。本文主要针对前台抽奖算法进行介绍如何根据权重设置每个奖品被抽到的概率。抽奖算法的核心是根据权重设置随机数出现的概率,在此我将它封装成一个生成随机数的随机类,代码如下:
2015-08-04 15:19:56 12956 1
原创 linux权限控制机制
linux对于用户权限的分配有着很严格的约束,在linux中一切皆文件的概念已深入人心,它通过对不同的文件定义其属主及所属用户组的方式控制着文件的访问权限。在linux中站在文件的角度来考虑,系统角色大概分为四种,分别第一种超级用户,第二种文件或目录的属主也就是文件的所有者,第三种角色是属主的同组人,第四种便是其他人,这也就是Linux基于UGO的权限控制模型,U代User,G代表Group,O代表Other,每一个文件的权限基于UGO进行设置。权限三个一组(rwx),对应UGO分别设置每一个文件拥有一个所
2015-07-29 20:46:01 1525
原创 解决https无法缓存的问题
火狐弃用http,转而大力推广https的动作一石激起千层浪,很多没有安装安全证书的网站使用新版火狐浏览器已经打不开了。之前我们网站只有涉及需要加密的部分连接为https协议,目前看来不得不将整个网站的连接均加装https。原本运行正常的功能就这样出现了问题。详细情况是,产品列表页面使用ajax加载产品的时候不能再像从前那样缓存之前加载好的数据了。造成这种情况的原因主要有两点,第一点是在后台设置的
2015-07-13 17:39:03 7147 1
原创 简单实用的移动端js-mobile layer
公司触屏版的开发已经完成,本篇文章跟大家介绍一个简单实用的移动端js以实现遮罩效果,mobile layer。这个移动端js实现的效果简洁,体积较小非常适合移动端开发,并且可以自定义提示的样式。下面介绍几个简单demo1.普通信息框,并设置2秒自动关闭,代码如下:layer.open({ content: '通过style设置你想要的样式', style: 'backgro
2015-06-30 20:00:41 9715 1
原创 微信jssdk已无力吐槽
微信强大的整合能力让企业公众号的开发迅速窜红,尤其是企业需要个性化定制的一些功能,公司在同时上线的app和触屏版的应用中,微信分享自然是不可或缺的重要一环。纵观现在大多数的微信公众号,分享大都是弹出二维码或者干脆直接使用微信右上方的分享功能分享网页链接,对于自定义分享内容这个功能就显得力不从心了,所以在公司伟大领袖的号召下,我们要自定义分享内容,分享标题,分享链接。好的,领导的精神已经发布了,接下
2015-06-30 17:50:28 6495 1
原创 restful webservice实战
上篇文章介绍了什么是restful风格的webservice,本片文章通过一个demo着重介绍如何发布一个restful风格的web service.1.建立接口
2015-01-16 18:02:28 5471 1
原创 restful webservice简介
最近的工作涉及到与第三方平台的数据交互问题,所以很自然而然的选择了webservice,基于SOAP的webservice是一直在使用的方式,但对方所给的接口文档上都同时提供了两种方式,一种是SOAP的方式,另外一种就是restful风格的webservice,本文简单介绍一下什么是restful风格的webservice以及它与基于SOAP的webservice的优势,下篇文章通过一个小例子介绍如何发布restful风格的webservice。
2015-01-16 16:12:06 2283 1
原创 ireport+jasperreport+jfreechart完成数据分析
最近在做报表的时候需要对数据进行分析并以饼形图,折线图等形式进行展示,为此使用jfreechart配合ireport和jasperreport配合使用,以达到生成PDF文档,并同时在文档中显示数据以及对数据进行分析后的各种图(主要为饼形图,折线图,柱状图等)的效果。jasperreport+ireport在前文已经讲述过,这里就不在多说了,重点说一下如何配合jfreechart生成分析图吧。主要思路是在jrxml文件中添加图片控件,图片空间引用变量打到将生成的图片画到pdf文件中的目的。我们需要做的步骤如下
2014-11-23 16:08:58 4909 3
原创 jasperReport+ireport实现报表导出和数据分析
jasperReport + ireport组合实现报表文件(各种文件格式xsl.pdf,rtf等)的生成导出是目前开源报表中使用的最为广泛的。在平台一期完成之后,而且功能中报表以及数据分析这块是必不可少的,一下展示如何使用JasperReport + ireport导出excel报表。1.需要.jasper文件作为生成报表的模板,这个文件是由ireport文件编译.jrxml文件之后生成的。这个需要注意的是JasperReport和ireport的版本一定要对应,否则很可能出问题。下面的文件就是.jr
2014-11-15 13:46:45 5563 5
原创 FreeMarker静态化文件解决SEO推广问题
1.问题背景SEO一直是网站对外推广的一个重要手段,如何能够让搜索引擎快速搜索到网站对于增强网站的浏量,提升网站对外形象有着重要意义。那么怎样能够对SEO进行优化呢?一个非常常用的手段就是在网页的关键字部分多增加能够表示本网页的关键字,并且这些关键字在接下来的网页正文中能够多次出现,另外一个重要的方法就是如果在本网页中存在文章链接,最好是每个链接的地址是不一样的,这种不一样不是指同一个链接传的参数不一样,而是每个链接对应的都是一个新的html页面,如果你的页面是jsp那么我们所需要做的就是将将其进行伪静
2014-11-15 11:34:12 4218 5
原创 走进企业级批处理框架--Springbatch
Springbatch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作业处理统计工作重新启动、跳过,和资源管理等重要功能。它能使业务人员专注于核心业务的开发,而将重复性的耗时工作交给系统自动处理。如数据的倒入,导出,数据的复制等工作。本文将通过一个简单的文件复制的小例子介绍SpringBatch的工作原理。首先来看相关的核心代码和配置:
2014-09-12 11:52:13 4434 5
原创 Spring整合定时任务调度框架Quartz实战
定时的任务处理在程序开发中应用的相当普遍,之前一直使用JDK的Timer类库来做任务调度功能不是很方便,因为它不能像cron服务那样可以指定具体年、月、日、时和分的时间,我们只能将时间通过换算成微秒后传给它,而在quartz中我们只需要设置cronExpression就可以完成定时的周期性的方法调用。Quartz中最核心的是任务调度器Scheduler,它负责管理Job,Trigger和 Calendar,而每一个Job就是一个需要执行任务的java类,在Schelduler调度任务时 执行的就是这个类的e
2014-09-12 11:51:16 13077 6
原创 Mule Esb实现WebService代理
基于SOA的系统开发越来越成为了分布式系统开发的提纲,在系统继承平台项目中,我们也很好的实现了这一理念。在这个项目中,各个系统之间的交互主要依赖的是webservice,由其是基础系统为考试系统,评教系统提供数据支持的情况,并且随着业务的不断扩展,我们将提供越来越多的webservice,在这种情况下如果依然让各个系统之间持有webservice的wsdl以此访问webservice在后期会造成严重的维护问题,并且考虑到继承以前遗留的异构系统我们最终选择了使用ESB来成立一个webservice管理中心,所
2014-09-12 11:50:28 8059 4
原创 提高系统性能之多线程编程
多线程编程技术在实际编程应用中十分广泛,多线程技术的应用通过提高CPU的利用率来帮助系统提升性能,那么究竟多线程编程在什么情况下使用?怎样使用多线程呢?多线程的应用一定要适应特定的环境,线程开多了会大大增加Cpu的负担,而线程数目开少了又很难提高cpu的利用率,为此我们使用线程池来管理线程。线程池用来限制线程的数量,减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务,同时可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存使得服务器宕机。那究竟什么是多线程呢?举
2014-08-29 15:44:08 2443 1
原创 JMS中间件--ActiveMQ
java系统之间的消息通讯使用最多的是基于RMI的RPC和基于JMS的RPC,这两种的消息传输方式虽然都能够起到通讯的作用,但是在笔者看来,二者之间的差别还是非常大的。首先RMI是同步传输,而JMS是异步传输,另外二者的使用场景也是大不相同。在系统集成平台这个项目中让我能够有机会更加深入的认识这两种消息通讯机制。基础系统与考试系统之间的数据传输我们采用的是将ejb发布成webservice,然后再通过esb将客户端和webservice进行连接,这种方式在本质上是ejb之间的相互调用,属于RMI方式的消息通
2014-08-28 11:21:51 1239
原创 spring+ehcache实战--性能优化之道
在做系统集成平台项目的时候遇到了一个比较麻烦的问题,原因是使用考试系统的时候所依赖的是基础系统发布的webservice来获取基础数据,webservice的跨网络传输本身或多或少会对系统性能产生一定影响再加上传输的数据量比较大这样对系统性能的影响就更大了,但是导致系统性能下降的另外一个原因就是频繁的打开关闭数据库。针对这两个问题我们采取了两个解决方案以期将性能影响降至最低第一就是webservice由原先的传输序列化对象改为传输json串,第二个就是针对数据库连接的开闭问题作了缓存处理。本文我们主要探讨第
2014-08-27 18:09:28 8179 4
原创 shiro权限框架实战
shiro框架作为一种开源的权限框架,通过将身份认证和授权从具体的业务逻辑中分离出来极大地提高了我们的开发速度,它的易用性使得它越来越受到人们的青睐。与之前的ACL权限框架相比,shiro能更容易的实现权限控制,而且作为基于RBAC的权限管理框架通过与shiro标签结合使用,能够让开发人员在更加细粒度的层面上进行控制。举个例子来讲,之前我们使用基于ACL的权限控制大多是控制到连接(这里的连接大家可以简单的认为是页面,下同)层面,也就是通过给用户授权让这个用户对某些连接拥有权限,这种情况显然不太适合具体的项目
2014-08-27 11:26:31 17367 8
原创 Cxf WebService实战
在前一篇转载的关于cxf webservice的实现思路中向大家介绍了实现webservice的思路,但并没有给出具体的实现代码,在本文中我将通过介绍借助于spring实现webservice的方式,在本文中同时将向大家介绍在我实现的过程中遇到的一些问题。1.搭建webservice服务端:(1.1)新建java web工程,同时在web.xml中进行spring的相关配置,如下:<
2014-08-25 15:28:29 2394 1
原创 Maven实战(一)搭建Nexus伺服器
在搭建伺服器之前我们先要说明一下为什么要搭建伺服器以及伺服器的作用是什么。在进行分布式开发中maven工具的使用能够极大的提高我们管理项目颗粒的效率,既然是管理颗粒那总得有地方存放才行,而伺服器扮演的就是这么一个角色,它相当于一个中型仓库,上联Maven的中央仓库,下联我们的本地仓库,当我们在本地编程的时候,如果需要引用jar包,maven首先会在本地仓库进行查找,如果在本地仓库找不到则会去伺服器
2014-05-30 11:53:42 4033 10
原创 搭建高性能Jboss负载均衡集群
负载均衡集群是由两台或者两台以上的服务器组成。分为前端负载调度和后端服务两个部分。负载调度部分负载把客户端的请求按照不同的策略分配给后端服务节点,而后端节点是真正提供营养程序服务的部分。与双机热备不同的是,负载均衡集群中,所有的后端节点都处于活动动态,它们都对外提供服务,分摊系统的工作负载。负载均衡集群可以把一个高负荷的应用分散到多个节点共同完成,适用于业务繁忙、大负荷访问的应用系统。负载均衡
2014-05-25 08:09:19 8805 10
转载 CXF_WebService实现思路
1.安装CXF。 进入网址:http://cxf.apache.org/download.html,出现版本列表,下载
2014-05-12 11:22:13 2245 3
原创 JWS-webservice 与Axis2-webservice的快速实现
在具体介绍这两种框架下的webservice之前,先跟大家交流一下SOA认识,也就是面向服务的体系结构。SOA所要解决的主要问题是在现有基础环境的前提下,通过对现有应用程序和基础结构进行重新的组合以应对不断变化的业务需求。SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,而其对外提供服务的主要方式之一就是我们今天所要介绍的webservice。目
2014-05-03 08:03:49 16963 7
原创 springMVC框架下JQuery传递并解析Json数据
json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位。Json的语法非常简单,采用的是键值对表示形式。JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序,也可以从服务器端程序传递json格式的字符串给前端并由前端解释。这个字符串是符合json语法
2014-04-23 10:20:49 36153 10
原创 springMVC两种方式实现多文件上传及效率比较
springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传。这两种方式对于实现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方式,同时比较一下在效率上到底存在着多大的差距。
2014-04-20 16:04:24 196278 42
原创 使用Javamelody验证struts-spring框架与springMVC框架下action的访问效率
在前文中我提到了关于为何要使用springMVC的问题,其中一点是使用springMVC比起原先的struts+spring框架在效率上是有优势的,为了验证这个问题,我做了两个Demo来验证到底是不是这个原因。在展示具体的测试数据之前,先来介绍下如何使用javamelody测试工具来测试我们的系统。1.需要拿到javamelody.war,并将其放在Tomcat的webapps下进行发布。
2014-04-18 14:42:57 4176 6
原创 初识springMVC
Spring框架提供了构建 Web应用程序的全功能 MVC模块。使用 Spring可插入的 MVC架构,可以选择是使用内置的 Spring Web框架还可以是 Struts这样的 Web框架。另外,Spring框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(jsp)技术、Velocity、Tiles、iText 和PIO。S
2014-04-15 19:22:43 1218 4
原创 中间件技术发展概述
中间件技术主要用来支撑分布式软件的开发,在大型分布式软件系统中中间件技术发挥着极其重要的作用。但是中间件技术也并不是一夜成名的,像任何其他技术一样它的发展也是经历了一个比较漫长的过程的,本文将带你走进中间件技术的世界,让你了解中间件技术的发展过程,以及为什么要使用中间件?为什么会出现中间件集群?希望本文能够让你体会到中间件技术的魅力。 1. 分布式软件的三层/多层结构:最早的
2014-04-11 14:57:27 6235 4
原创 分布式系统架构实例剖析
分布式系统的出现主要用来解决大型项目中的大数据以及系统性能的问题。它是一种基于网络的系统互联,通过将多台服务器(web服务器和数据库服务库)配置在联通的网络中实现各个系统的互操作,然后通过负载均衡将大数据均匀的分摊到各个服务器,从而缓解单独服务器的压力,达到提高系统性能的目的。下面我们来分析分布式系统开发的整个过程,所需要解决的问题以及解决问题的方法。1.选择开发模式。以高效平台项目为例,
2014-04-01 11:36:06 3752 6
原创 Ajax提交form表单
高校平台项目中采用的UI框架为DWZ框架,这个框架有一个很灵活又很让人头疼的问题,那就是它的div碎片。 所谓的div碎片指的是每一个jsp页面不再是一个单纯的jsp了,此时的jsp只不过是一个div,通过dwz框架本身的ajax技术,可以将任何一个jsp作为一个div嵌入到任意另外一个jsp中,说白了也就是将多个jsp页面的放到同一个页面显示。这样做有一个很大的好处就是它避免了刷新问题,通过其自
2014-03-12 20:54:00 30021 7
原创 时光略过的2013~2014
不知不觉又过了半年,又到了该做半年总结的时候了。自2013年8月开始至2014年3月,期间的酸甜苦辣让我真心感觉到生活真的是这样,一会让你笑一下,一会让你哭一下,或许这就是生活的魅力所在。经历了这半年的风风雨雨感觉自己成长了很多,也知道了自己存在的很多缺点。总之一句话,痛并快乐着仍然是这半年的主旋律。1.我的OA。OA视频是这半年开始的第一个学习视频,很长有时候也很枯燥无聊,但就是在这样看似枯
2014-02-26 09:58:17 1032 9
struts实现多文件上传
2013-08-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人