8 9_张晓

尚未进行身份认证

java高级开发

等级
TA的排名 4k+

apache自带的ab压力测试

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

2017-03-30 18:57:48

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

XA两阶段提交协议

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

2015-09-29 22:15:28

hashmap的存储机制

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

2015-09-29 21:59:46

SpringMVC的处理流程

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

2015-09-29 21:42:26

java垃圾回收

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

2015-09-29 21:27:17

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

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

2015-08-20 20:27:59

[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

[Dubbo实战]Dubbo声明式缓存

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

2015-08-19 16:16:39

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

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

2015-08-17 21:52:51

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

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

2015-08-17 15:46:18

IO模型

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

2015-08-16 16:21:53

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

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

2015-08-13 22:26:45

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

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

2015-08-13 12:19:55

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

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

Nginx入门

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

2015-08-09 17:04:54

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

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

2015-08-06 11:55:23

Redis——乐观锁控制事务

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

2015-08-06 10:06:41

MongoDB——分片

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

2015-08-05 16:05:40

查看更多

勋章 我的勋章
    暂无奖章