- 博客(95)
- 资源 (3)
- 收藏
- 关注
原创 mac下安装thrift
使用brew安装使用brew install thrift会安装最新版本的thrift,目前是0.9。手动安装安装基本组件1、安装BOOST下载:http://www.boost.org/./bootstrap.shsudo ./b2 threading=multi address-model=64 variant=release stage inst
2016-02-27 16:00:46
1478
原创 问题分析-无界线程池误用导致OOM:java.lang.OutOfMemoryError:unable to create new native thread
背景在对线上查询接口进行压测时,当并发量上去后报出无法创建线程池的异常。分析之前的博客里提到,线程创建使用的不是堆内存,而是实际物理内存。由于没有对应用的线程数资源进行监控,同时也没有对当时的内存资源进行监控,所以只能根据应用的日志进行分析。通过查看异常栈,发现是某个线程池在开启一个新的线程时会报出该异常,并且该线程池使用的是无界线程池,也就是说,当执行的任务一直没有完成时,线程池会持
2015-12-27 17:20:22
5081
原创 kafka消息无法正常消费,且报异常:java.lang.IllegalArgumentException: Path must not end with / character
背景昨天同事在重启消费者进程后,导致后台消息无法正常消费,看日志,有报数据库的异常:org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;另外偶尔还有kafka异常:java.lang.IllegalArgumentException: Path must not end
2015-12-02 15:04:46
12706
原创 [OOM]记一次线上OOM的问题
监控到系统OOM问题后,我们应该怎么去定位问题,怎么去解决问题呢?本篇文章以实际的场景为例,详细描述了解决问题的思路,供大家参考。各位读者可以进行评论,咱们一块探讨。
2015-10-29 16:59:41
1757
原创 spring同名bean覆盖问题
默认情况下,spring在处理同一个ApplicationContext中名称相同的bean时,分为两种情况处理:1、如果两个bean是在同一个配置文件中,那么spring会报错。2、如果两个bean是在不同的配置文件中,默认情况下,spring会覆盖先前的bean。在配置文件很多时,如果在启动时,对于同名的bean加载没有异常信息,出现问题后会比较难以定位。在spring中,处理
2015-10-22 16:19:04
13553
2
原创 问题分析:java.lang.OutOfMemoryError:unable to create new native thread
我们经常遇到的是堆内存、持久代内存溢出,今天将介绍一种新的OOM类型。同时附上分析问题以及解决问题的一些思路。
2015-09-08 09:52:35
2425
原创 线上问题分析:The target server failed to respond(目标服务器返回失败)
The target server failed to respond。问题分析的思路,理解HTTP协议、TCP协议等相当有帮助。
2015-09-07 17:57:13
57222
2
原创 Eclilpse导入maven项目,无法自动构建为java项目的问题
从git上下载一个maven项目后,按步骤导入后,发现无法正常展现为java项目。导入后只生成了.project文件,并没有生成.classpath文件。最后发现问题出在没有设置eclipse的maven的配置信息:settings.xml。设置一下就好了。
2015-09-07 08:57:34
1454
原创 kafka无法发送消息问题处理
往kafka发送消息时失败,抛出错误信息:kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries。列出分析过程和解决方案,遇到问题的朋友可参考。
2015-08-27 10:56:10
8190
转载 Linux上的free命令详解
原文地址:http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 解释一下Linux上free命令的输出。 下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:FO[2][1] = 24677460
2015-08-04 15:36:27
437
原创 maven项目调试Junit类
maven项目提供了对单元测试类的批量执行功能,但有时我们想针对某个类进行调试,尽管这些类的配置可能依赖filter属性,也是可以进行测试的。方法:执行mvn install,将项目打包,然后再执行debug->junit,就可以正常调试了。
2015-07-24 15:42:25
1008
原创 java.lang.UnsupportedClassVersionError
今天在用eclipse调试maven项目时,启动应用报错:java.lang.UnsupportedClassVersionError: **************** : Unsupported major.minor version 51.0****************为某个类路径。该问题是因为jdk版本原因造成的。class文件是以jdk1.7编译的,而我本地的环境是jdk1.
2015-06-11 17:01:05
675
原创 web应用导致系统负载过高问题排查
在linux服务器上,用uptime、top查看系统的负载明显过高,经过排查,发现是因为代码中死循环造成的。具体的排查过程请参照本文。 使用top命令,发现load average指标值都在1附近,偏高。当然也可以用uptime。用top的好处是可以看到各个进程使用资源的一个排名。在top结果页面,输入P,以cpu消耗进行排名,发现有个java进程占用了98%的cpu资源。记下该进程的p
2014-12-26 11:35:36
5069
原创 hibernate---java.lang.UnsupportedOperationException: The user must supply a JDBC connection
hibernate抛出java.lang.UnsupportedOperationException: The user must supply a JDBC connection 异常处理
2014-12-21 18:46:35
2731
原创 memcached协议及命令详解(一)
在memcached协议中有两种类型的数据:文本行,非结构化数据。文本行用于从客户端发送命令或者从服务器端返回应答。非机构化数据是客户端想要存储或获取的数据。对于非结构化的数据,对于字符长度没有限制。但是这些数据的读取者(不管是服务器还是客户端)都需要知道数据块的长度(通过之前文本行传递该信息)。 文本行和非结构化数据均以\r\n为结束标记。数据块中可以记录\r、\n以及
2014-12-14 20:12:16
2525
原创 memcached内存管理机制详解
我们知道,memcached是一个内存缓存系统,因此对于内存的管理是需要使用者了解的。本文将对memcached的内存模型及管理机制做一个详细的描述。
2014-12-06 20:12:20
5319
原创 java对象锁
在进行多线程开发时,经常会用到同步锁:synchronized。该关键字可以使用在普通方法上,也可以使用在static方法上。这里叙述下这两种方式的区别,避免以后忘记。 我们都知道,每一个对象都有一个监视器。对于每一个类,有一个Class对象,也可以有该类的实例对象。如果synchronized放在普通方法上,线程在同步访问时,就会查看该类实例对象上的监视器;如果synchronized
2014-11-17 11:12:14
856
原创 redis预分片技术及实现
通常情况下,我们会建立多个redis实例来缓解单个redis实例的压力。但是,随着缓存数量的增加,对redis进行扩容是一件非做不可的事情。对redis进行扩容可以有多种办法,比如增加每个redis实例的最大内存。这只是解决办法之一,而且缺乏灵活性和可扩展性。在redis官网上,提到了预分片技术。本文将对预分片技术进行讲解,同时讲解jedis对分片是如何支持的。 一、redis预分片技术
2014-10-17 21:25:29
3306
原创 maven可选依赖(Optional Dependencies)和依赖排除(Dependency Exclusions)
我们知道,maven的依赖关系是有传递性的。如:A-->B,B-->C。但有时候,项目A可能不是必需依赖C,因此需要在项目A中排除对A的依赖。在maven的依赖管理中,有两种方式可以对依赖关系进行,分别是可选依赖(Optional Dependencies)以及依赖排除(Dependency Exclusions)。本文将对这两种方式进行讲解,以理解这两者的区别、使用场景以及如何配置。
2014-09-25 11:37:36
50064
4
原创 jconsole监控远程weblogic和tomcat
jconsole可以对远程主机上的java进程的内存使用情况进行监控。本文将主要讲解如何监控安装在sunos上的weblogic和安装在redhat上的tomcat。
2014-09-14 12:15:33
2227
原创 eclipse使用maven插件(m2e)配置及运行web项目
maven是一个项目管理工具,它可以方便对项目进行管理。本文将介绍如何在eclipse环境下,使用maven对web项目进行配置,并在tomcat容器下进行运行及调试。
2014-09-08 19:10:40
8303
原创 jedis实现redis的消息队列、发布对象消息、字节数组与字符串相互转换
redis支持发布、订阅的功能,基本的命令有publish、subscribe等。在jedis中,有对应的java方法,并且只能发布字符串消息。为了传输对象,需要将对象进行序列化,并封装成字符串进行处理。将对象序列化后,只能成为字节流,如何封装成字符串是一个难点。
2014-09-04 15:31:17
8961
1
原创 单机部署redis主从备份
redis为了避免单点故障,也支持主从备份。个人在做主从备份的实验时,由于机器数量有限,一般很少有多台机器做支撑。本文就将叙述如何在一台电脑上实现redis的主从备份。
2014-08-31 14:40:36
1696
原创 AbstractQueuedSynchronizer(AQS)源码解析(一)
在JDK1.5版本,新增了并发包,其中包含了显示锁、并发容器。在这些锁和容器里,都有同步器(AQS)的身影。在AQS中,有三个组件:1、原子管理同步状态;2、阻塞线程或恢复线程;3、维护队列,其中包括同步队列及条件队列。为了更好地理解JDK的并发包,我会用三个主题来详细描述AbstractQueuedSynchronizer的实现。
2014-07-28 20:31:23
1626
原创 ExecutorCompletionService原理详解
在JDK并发包中有这么一个类ExecutorCompletionService,提交任务后,可以按任务返回结果的先后顺序来获取各任务执行后的结果。
2014-07-14 12:30:25
2487
转载 memcached缓存失效时的高并发访问问题解决
memcached一般用于在访问一些性能相对低下的数据接口时(如数据库),为了保证这些数据接口的稳定性,加上memcached以减少访问次数,保证这些数据接口的健壮性。一般memcached的数据都是定时失效的,当数据失效时一般会再次去访问取数据接口,然后将其更新至memcached中。这时就会有一个问题,当某个数据失效时,恰好同时有大量的客户端访问该数据,这时这些客户端都
2014-04-03 13:49:36
1199
原创 java基本类型
在java中,有八种基本类型,本文对这些类型做个介绍。1、布尔型boolean2、字符型char 占2个字节3、整型byte 占1个字节short 占2个字节int 占4个字节long 占8个字节4、小数型float 占4个字节double 占8个字节注意:1、因为java的平台无关性,所以这里能够明确指出每个类型占用字节数;2、
2014-03-21 11:48:13
1233
ibatis一对一、多对一示例
2013-02-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人