自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(155)
  • 收藏
  • 关注

原创 apache自带的ab压力测试

最近做一个项目数据要存到redis缓存,大概有1800万条数据,value平均在2kb左右,粗略估计36个G,空间很大,而且经济性不好,内存相比硬盘贵多了。所以选择数据压缩存储的方案。压缩解压缩消耗内存,平时在电脑上解压一下看cpu消耗直线升高。为了不上线后把服务搞垮,在测试环境做了压力测试。      ab命令是apache自带的,能模拟请求量和并发量访问接口数据,对apache或者ngin

2017-03-30 18:57:48 977 2

原创 mysql数据库如何支持emoji表情

mysql数据库的默认字符集utf8,只能存储3个字节的数据。标准的emoji表情是4个字节,在APP端输入保存表情是用户的普遍需求和行为。    插入数据库报错如下:   java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xAA",...' for column 'raw_json' at row 1, 异常:o

2017-02-21 18:11:12 18239 3

原创 XA两阶段提交协议

因为事务需要实现ACID,即原子性、一致性、隔离性、持久性,所以需要采用一定的机制来保证,通常采用的是分阶段提交的方式。   XA:XA协议,规定事务管理器和资源管理器接口,采用二阶段提交协议。一阶段提交协议    一阶段提交协议相对简单,如下图:                    当然,前提是开启了事务,然后在应用程序发出提交/回滚请求后,数据库执行操作,而后将成功/

2015-09-29 22:15:28 12301 1

转载 hashmap的存储机制

我们如果要保存一组对象,用我们之前学过的知识,会使用对象数组,但鉴于数组的局限性,数组长度一经定义就不能改变,所以我们使用链表、队列等数据结构操作,但是很麻烦。类集框架就是一个动态的数组,但不受数组长度的限制。   HashMap允许key值为空,(在方法containsValue(Object value):如果指定值key==null,并且在键值对中有value为null时,也返回true

2015-09-29 21:59:46 2335 1

原创 SpringMVC的处理流程

1. 当DispatcherServlet接到请求时,他先回查找适当的处理程序来处理请求。DispatcherServlet通过一个或者多个处理程序映射,将每个请求映射到处理程序中。处理程序映射配置在web应用程序的上下文中,是实现了HandlerMapping接口的Bean。它负责为请求返回一个适当的处理程序(也就是Controller)。处理程序映射通常根据请求的URL将请求映射到处理程序(C

2015-09-29 21:42:26 936 1

转载 java垃圾回收

理解java垃圾回收机制有什么好处呢?作为一个软件工程师,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java应用程序。这是我个人的主观观点,但我相信一个人精通了GC,往往会是一个更好的Java程序员。如果你对GC感兴趣,那就意味着你有一定大规模应用开发的经验。如果你已经仔细过考虑选择合适的GC算法,这意味着你完全理解你开发的应用程序的功能。当然,这

2015-09-29 21:27:17 929 2

原创 [ActiveMQ实战]基于JMS的pub/sub传播机制

上篇博客介绍了activemq基于JMS的点对点消息传播机制的实现,这里介绍另一个发布/订阅方式实现。一、发布订阅模型    就像订阅报纸。我们可以选择一份或者多份报纸,比如:北京日报、人民日报。这些报纸就相当于发布订阅模型中的topic。如果有很多人订阅了相同的报纸,那我们就在同一个topic中注册,对于报纸发行方,它就和所有的订阅者形成了一对多的关系。如下: 二、发布者的实

2015-08-20 20:27:59 2977 2

原创 [ActiveMQ实战]基于JMS的点对点消息传播

ActiveMQ是基于JMS实现的,JMS是J2EE规范中的一个。它有两种消息传播方式:点对点和发布/订阅模式。其中EJB的MDB(消息驱动bean)也是基于JMS实现的。ActiveMQ是一个开源的消息服务总线。下面通过一个实例逐步认识它。这里主要讲解点对点的方式。一、启动avtivemq服务1.首先下载avtivemq的压缩包2.解压(E:\apache-activemq-5.

2015-08-20 20:05:39 2247 2

原创 [Dubbo实战]Dubbo声明式缓存

缓存的应用非常广泛,为了提高数据访问的速度。Dubbo也不例外,它提供了声明式缓存,以减少用户加缓存的工作量。一、Dubbo中缓存策略lru 基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。threadlocal 当前线程缓存,比如一个页面渲染,用到很多portal,每个portal都要去查用户信息,通过线程缓存,可以减少这种多余访问。jcache 与JSR107集成,可以

2015-08-19 16:16:39 8260 3

原创 [dubbo实战] dubbo+zookeeper伪集群搭建

zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待。所以可以通过zookeeper集群解决。一、为什么需要zookeeper呢?   大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。目前,大多数都要开发私有的协调程序,缺乏一个通用机制,协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器,zookeeper提供通用的分布式锁服务

2015-08-17 21:52:51 16841 5

原创 [Dubbo实战]dubbo + zookeeper + spring 实战

这里最熟悉的就是spring了,项目中应用很多。dubbo是一个实现分布式的框架,zookeeper是注册中心。给我的感觉就像多对多关系的两者表,zookeeper相当于第三张表维护关系。下面通过一个小程序加深认识。一、安装zookeeper     去官网下载zookeeper,然后解压到目录中,我解压到了E:\zookeeper-3.3.6,在启动zookeeper之前,首先找到con

2015-08-17 15:46:18 6597 2

原创 IO模型

在学习nginx的时候咱们知道,它处理请求的方式是异步非阻塞的,这就是一种IO模型,这里简单介绍四种基本的IO模型。  IO模型:同步阻塞,同步非阻塞,异步阻塞,异步非阻塞。  同步和异步:相对于用户线程和内核,同步是用户线程发起IO调用,内核处理,等内核处理完后用户线程才继续执行。异步:用户线程发起请求了,继续执行,内核调用后通知用户线程。  阻塞和非阻塞:阻塞是IO操作彻底完成后才

2015-08-16 16:21:53 783 1

原创 web service—底层调用本质+WSDL文档解析

前面两篇博客已经实现了两个小例子,大致了解了整个流程。那么这里讲讲webservice底层调用的本质和wsdl文档具体的含义。一、底层调用的本质    说白了就是xml文档的生成、传递、解析的过程。    客户端生成xml文件后通过网络传送给服务器,服务器解析xml,获取参数执行方法得到返回值,之后生成xml文件,再传输给客户端,客户端解析xml后显示数据。   二、WSD

2015-08-13 22:26:45 3132 3

原创 webservice如何处理返回值是list集合

在上篇博客中介绍了入门实例,并搭建的基本的框架和引入jar包,下面在原来的基础上学习webservce如何处理返回值是list集合。一、服务端1.建pojo类(Cat和User)public class User { private int id; private String name; private String pass; private String addres

2015-08-13 12:19:55 26559 2

原创 web Service入门实例

web service大家都知道它的扩展性很好,提供接口,跨平台的服务。下面用cxf框架搭建一个入门小实例。一、准备工作1.下载apache-cxf-2.4.0包2.配置环境变量CXF_HOME :E:\apache-cxf-2.4.0CLASSPATH:%CXF_HOME%\lib;Path:%CXF_HOME%\bin;二、服务端1.建一个java项目,导入jar包

2015-08-13 11:14:52 986 1

原创 Nginx+Tomcat集群搭建

上篇博客写了nginx作为反向代理的作用,它能作为一个收集器,收集客户端请求,然后分发给集群的服务器处理。这种方式降低了访问压力。今天介绍怎么在windows下搭建集群(nginx+2个tomcat)。一、准备工作1.Nginx下载(我用的nginx-1.4.7)2.tomcat(我用的6.0.28)二、配置1.首先修改nginx的配置文件,在conf/nginx.conf

2015-08-11 11:44:56 1061 1

原创 Redis——持久化机制(RDB和AOF)

redis将所有数据保存在内存中,为了记录数据和操作需要持久化机制保存到磁盘。redis中用到了两种方式:RDB和AOF。持久化有什么用?重启后进行数据恢复。redis在进行数据恢复的时候都会读取rdb或者aof文件,将数据重新加载到内存。一、RDB也叫snapshotting方式1、机制    以快照的方式将内存中的数据写入二进制文件中,在磁盘中会生成一个.rdb的文件。这种方式可以

2015-08-06 11:55:23 1235 1

原创 Redis——乐观锁控制事务

redis对事务的支持比较简单。redis只能保证一个客户端发起的事务命令可以执行,中间不会插入其他事务。因为redis是单线程的,所以做到上面这点很容易。一般redis接受到客户端的命令后会立即执行,但是如果客户端发起multi命令,redis不会立即执行,而是让当前连接进入事务上下文,把命令放到队列中,接受到exec命令后,redis会顺序执行队列中的命令。并把执行结果打包到一起返回客户端,之

2015-08-06 10:06:41 8678

原创 MongoDB——分片

MongoDB支持自动分片技术。它相当于sql server中的表横切,当一个表太大时数据库服务器已经吃不消了,所以出现了分片技术。它也是一种集群。一、什么是分片?      有一个集合collection,其中存储大量数据,当要分片时,根据一个条件将它分成几个部分,每个部分都是连续的数据。这样的每个部分叫做块。集合分块后,将它们分配到不同的服务器上。这就是分片。分片的依据是片键,即根据哪

2015-08-05 16:05:40 1343 1

原创 MongoDb复制-副本集

上篇博客介绍了主从复制,它虽然能做到备份、数据恢复,但是同样存在问题。下面看看MongoDb设计的副本集。主从模式其实就是一个单副本的应用,没有很好的扩展性和容错性。而副本集具有多个副本保证了容错性,就算一个副本挂掉了还有很多副本。如图:              从图中可以看到客户端连接到整个副本集,不关心具体哪台机器是否挂掉。主服务器负责整个副本集的读写,副本集定期同步数据备份

2015-07-31 16:58:16 763

原创 MongoDb复制-主从复制

MongoDB是一种强大的、灵活、可扩展的数据存储方式。它扩展了关系型数据库的众多功能。而且在大数据时代下,高并发和海量的数据存储让关系型数据库有些力不从心,NoSql应运而生。而MongoDb是典型的NoSql数据库。下面看看利用主从复制如何搭建mongodb的分布式集群。  主从复制是MongoDb最常用的复制方式。这种方式非常灵活,可用于备份、故障恢复、读扩展等。一、mongodb单

2015-07-31 15:35:48 1092

原创 mybatis和hibernate的异同

最近学习了mybatis,它也是一个ORM的持久层框架,但是它和hibernate还是有很大区别的,而且各有优缺点。一、映射关系    hibernate实现了pojo和数据库表之间的映射,以及sql的自动生成和执行,程序员只需定义好了pojo和数据库的映射关系,就能通过hibernate提供的方法完成持久化的操作。程序员不需要对sql掌握熟练。    mybatis实现了pojo和s

2015-07-30 11:02:59 1086

原创 JPA EntityManager详解

持久化上下文(Persistence Contexts)的相关知识,内容包括如何从Java EE容器中创建EntityManager对象、如何从Java SE中创建EntityManager对象、持久化上下文与事务(Transction)的关系,以及实体管理器工厂(Entity Manager Factory)的相关内容。通过本章的学习,读者将深入掌握JPA中有关持久化上下文、事务处理的相关知

2015-07-24 11:21:14 2144 1

转载 JPA入门

(1)、JPA介绍:      JPA全称为Java Persistence API ,Java持久化API是Sun公司在Java EE 5规范中提出的Java持久化接口。JPA吸取了目前Java持久化技术的优点,旨在规范、简化Java对象的持久化工作。使用JPA持久化对象,并不是依赖于某一个ORM框架。     为什么要使用JAP?      在说为什么要使用JPA之前,我们有必

2015-07-24 11:16:14 498 1

原创 ztree点击事件加载树

1.导入三个文件       *  zTreeStyle.css       * jQuery-1.4.2.js       * jquery-ztree.2.5.js2.在页面上准备树的容器         3.js代码加载树的根节点              var tree = { zTree:'', pNode:'', se

2015-06-24 16:32:18 17287 1

原创 Activiti部署流程报错

刚研究工作流运行了一个demo,在部署流程实例的时候报错,如下:org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.activiti.engine.ActivitiException: Error parsing XML org.sp

2015-06-24 11:08:58 25541 6

原创 js删除提示的插件实现

做项目对数据的增删改查是必不可少的,项目组的成员负责的模块都有这个功能,如果每个人遇到删除都写一遍提示代码,那就不好维护了,保不准谁写的有错,所以,提取出来,写一个插件供大家使用。1.jsp <!-- 在struts2标签中只能用ognl表达式 在html只能用el表达式 --> 删除

2015-06-17 21:40:48 1200

原创 zTree—一次性加载树

zTree是一个很好的js插件实现加载树形结构,今天介绍怎么一次性加载?1.建实体/** * 菜单项 * @author xx * */public class Menuitem implements Serializable { private Long mid; private Long pid;//父节点ID private String name;//树上的节点

2015-06-17 20:59:23 5025 1

原创 OpenSessionInViewFilter的作用及原理

Hibernate 允许对关联对象、属性进行延迟加载,但是必须保证延迟加载的操作限于同一个 Hibernate Session 范围之内进行。如果 Service 层返回一个启用了延迟加载功能的领域对象给 Web 层,当 Web 层访问到那些需要延迟加载的数据时,由于加载领域对象的 Hibernate Session 已经关闭,这些导致延迟加载数据的访问异常 (eg: org.hibe

2015-05-31 16:53:31 12169 4

原创 java动态代理和静态代理

代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定http://write.blog.csdn.net/postedit的服务。

2015-05-31 16:14:59 567 1

原创 CGLib动态代理

JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢,这就需要CGLib了。CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理与CGLib动态代理均是实现Spring AOP的基础。   简单的实现举例: 这是一个需要被代理的类,也就是父类,

2015-05-31 15:25:36 545

原创 struts2和springMVC框架的比较

struts2和SpringMVC同是mvc框架,它们有什么不同?

2015-04-29 17:36:31 2383 20

原创 servlet filter和springMVC拦截器的区别

在struts2中用过filter过滤器,在springmvc中还有拦截器,它们都能过滤请求,但是到底有什么区别呢?一、定义拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业

2015-04-28 21:29:06 21228 26

原创 SpringMVC拦截器的使用

SpringMVC能用拦截器对请求进行拦截。

2015-04-28 08:59:06 1420 16

原创 listener 监听器

监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。一、listener分类和使用1、ServletContext监听ServletContextListener:用于对Servlet整个上下文进行监听(创建、销毁)。public void contextInitialized

2015-04-26 20:40:54 911 16

原创 servlet的生命周期和工作原理

servlet的定义:服务器上运行的小程序。servlet和jsp的关系呢?jsp经过编译后成为了servlet,jvm只能识别java的类,不能识别jsp,所以jsp的本质就是servlet。这里跟大家说说servlet的生命周期和工作原理       servlet的生命周期:初始化--->服务--->销毁  1.  初始化时Servlet容器装载Servlet:Servlet

2015-03-31 16:56:06 5125 8

原创 Filter的调用顺序

filter顾名思义就是过滤器,大家都知道配置过滤器是为了对一个请求进行预处理,然后交给servlet,filter再对响应后处理。filter就像漏斗,对能通过的放行,拦截不能通过的。那么如果有两个过滤器呢?执行顺序是怎么的?     百度百科上对filter的功能描述:它使用户可以改变一个request和修改一个response. Filter 不是一个servlet,它不能产生一个res

2015-03-29 11:56:34 9633 6

原创 微信企业号开发—通讯录

上篇博客介绍了聊天功能,这里介绍通讯录是如何实现的。首先要加载公司的所有部门,树形结构,然后点击进入部门的人员列表,点击人员能查看详细信息。一、界面二、代码实现1.controller /** * 加载部门列表 */ @RequestMapping("/addressListDepartmentjsp.do") public void addre

2015-03-17 08:55:49 8831 9

原创 微信企业号开发—发送消息(文本、图片、语音)

上篇文章介绍了开启回调模式,开始回调模式后我们就要实现聊天功能了。平时使用微信聊天可以发送文本消息、语音、图片、视频等,这里只实现了其中的一些功能和大家分享。一、与微信企业号建立连接 1、企业应用调用企业号提供的接口,管理或查询企业号后台所管理的资源、或给成员发送消息等,以下称主动调用模式。 2、企业号把用户发送的消息或用户触发的事件推送给企业应用,由企业应用处理,以下称回调模式。

2015-03-14 14:15:06 29461 14

原创 微信企业号开发—开发模式的开启

首先说微信企业号的开发模式分为:编辑模式(普通模式)和开发模式(回调模式),在编辑模式下,只能做简单的自定义菜单和自动回复消息,要想实现其他功能还得开启开发者模式。一、编辑模式和开发模式对消息的处理流程 1.编辑模式下,所有的业务流程都配置在微信服务器上,由它处理  2.开发模式,消息通过第三方服务器处理,最后经过微信服务器把消息发送给用户       开发模式能处理的消息

2015-02-28 16:02:08 7888 9

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除