自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 apache自带的ab压力测试

最近做一个项目数据要存到redis缓存,大概有1800万条数据,value平均在2kb左右,粗略估计36个G,空间很大,而且经济性不好,内存相比硬盘贵多了。所以选择数据压缩存储的方案。压缩解压缩消耗内存,平时在电脑上解压一下看cpu消耗直线升高。为了不上线后把服务搞垮,在测试环境做了压力测试。 ...

2017-03-30 18:57:48 707 1

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

mysql数据库的默认字符集utf8,只能存储3个字节的数据。标准的emoji表情是4个字节,在APP端输入保存表情是用户的普遍需求和行为。      插入数据库报错如下:    java.sql.SQLException: Incorrect string value: '\xF...

2017-02-21 18:11:12 16361 2

原创 XA两阶段提交协议

因为事务需要实现ACID,即原子性、一致性、隔离性、持久性,所以需要采用一定的机制来保证,通常采用的是分阶段提交的方式。    XA:XA协议,规定事务管理器和资源管理器接口,采用二阶段提交协议。 一阶段提交协议     一阶段提交协议相对简单,如下图:              ...

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

转载 hashmap的存储机制

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

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

原创 SpringMVC的处理流程

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

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

转载 java垃圾回收

理解java垃圾回收机制有什么好处呢?作为一个软件工程师,满足自己的好奇心将是一个很好的理由,不过更重要的是,理解GC工作机制可以帮助你写出更好的Java应用程序。 这是我个人的主观观点,但我相信一个人精通了GC,往往会是一个更好的Java程序员。如果你对GC感兴趣,那就意味着你有一定大规模应用...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

原创 IO模型

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

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

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

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

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

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

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

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

原创 web Service入门实例

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

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

原创 Nginx+Tomcat集群搭建

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

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

原创 Nginx入门

nginx是一个高性能的http和反向代理的服务器。它在高并发量、吞吐量的网上应用广泛。比如百度、网易、新浪。 一、什么是正向代理和反向代理 正向代理:咱们平时想访问外网资源,可以用翻墙软件,或者在浏览器配置代理。它作用在客户端。我们要访问原始服务器,先向代理发送请求并指定目标,...

2015-08-09 17:04:54 652 3

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

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

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

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

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

2015-08-06 10:06:41 7043 0

原创 MongoDB——分片

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

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

原创 MongoDb复制-副本集

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

2015-07-31 16:58:16 647 0

原创 MongoDb复制-主从复制

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

2015-07-31 15:35:48 884 0

原创 mybatis和hibernate的异同

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

2015-07-30 11:02:59 964 0

原创 JPA EntityManager详解

持久化上下文(Persistence Contexts)的相关知识,内容包括如何从Java EE容器中创建EntityManager对象、如何从Java SE中创建EntityManager对象、持久化上下文与事务(Transction)的关系,以及实体管理器工厂(Entity Manager F...

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

转载 JPA入门

(1)、JPA介绍:       JPA全称为Java Persistence API ,Java持久化API是Sun公司在Java EE 5规范中提出的Java持久化接口。JPA吸取了目前Java持久化技术的优点,旨在规范、简化Java对象的持久化工作。使用JPA持久化对象,并不是依赖于某一个O...

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

原创 ztree点击事件加载树

1.导入三个文件        *  zTreeStyle.css        * jQuery-1.4.2.js        * jquery-ztree.2.5.js 2.在页面上准备树的容器          3.js代码 加载树的根节点  ...

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

原创 Activiti部署流程报错

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

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

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

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

2015-06-17 21:40:48 1015 0

原创 zTree—一次性加载树

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

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

原创 OpenSessionInViewFilter的作用及原理

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

2015-05-31 16:53:31 8296 3

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

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

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

原创 CGLib动态代理

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

2015-05-31 15:25:36 463 0

原创 struts2和springMVC框架的比较

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

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

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

在struts2中用过filter过滤器,在springmvc中还有拦截器,它们都能过滤请求,但是到底有什么区别呢? 一、定义 拦截器 :是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前...

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

原创 SpringMVC拦截器的使用

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

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

原创 listener 监听器

监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。 一、listener分类和使用 1、ServletContext监听 ServletContextListener:用于对Servl...

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

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

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

2015-03-31 16:56:06 4078 7

原创 Filter的调用顺序

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

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

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

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

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

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

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

2015-03-14 14:15:06 24929 14

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