自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程的本质是数学问题

学源码是最快的学习方法

原创 Java堆外内存泄露分析

查看堆内存占用正常,jvm垃圾回收也没有异常。而top出来显示java占用内存是几个G,那么可能想到了是堆外内存泄漏。 需要安装google-perftools工具进行分析 1.先安装g++ 不然编译会报错:g++: command not found # yum -y install...

2018-01-25 14:18:29 9940 0

原创 Java飞行记录器 JRockit Flight Recorder JFR诊断JVM的历史性能和操作

需要展开子树,复制堆栈跟踪,就可以查看到代码调用链,看到自己的业务代码,从而定位到最耗时的代码位置:

2016-10-13 10:47:42 3568 0

原创 Spring源码分析【8】-MyBatis注解方法不能重载

代码如下: 这是不可以的,会报错: 2016-08-18 11:36:00,267 [main] ERROR [org.mybatis.spring.mapper.MapperFactoryBean] - Error while adding the mapper 'interfac...

2016-08-18 11:48:46 7653 5

原创 Spring源码分析【4】-Spring扫描basePackages注解

代码 @Configuration @Import(MybatisConfig.class) @ComponentScan(basePackages = {"com.xxx.*"}, excludeFilters = {@ComponentScan.Filter...

2016-08-09 16:28:37 12514 0

原创 Spring4实战学习笔记

《Spring4实战 第4版》2016年4月新出版的,之前的第三版看起来还是不错的,所以看到新版就直接买下来。 1.装配Bean 参考【2.2】 1.1接口只有一个现实类可以自动装配 public interface CompactDisc { void play(); } ...

2016-05-04 19:14:16 7193 1

原创 调试JDK源码-一步一步看HashMap怎么Hash和扩容

还是调试源码最好。 开发环境  JDK1.8+NetBeans8.1 说明:调试HashMap的 public V put(K key, V value) 方法并查看key的值时不能显示变量的值,原因在于oracle提供的jre中rt.jar不带debug信息。 orcale在编译src时使用了 ...

2016-03-17 10:54:15 7812 4

原创 NetBeans配置Xdebug 远程调试PHP

很多PHP程序员使用echo,dump等比较原始的方法调试,这是非常落后的。 几年前本人写过一篇: NetBeans配置Xdebug 由于那篇文档还需要引用本人写的其他文档,感觉有些分散,所以这里重新写一篇完整的。 linux版本:64位CentOS 6.4 Nginx版本:ngin...

2015-08-18 18:02:37 895 0

原创 计算机科学精彩帖子收集

linux源码 LXR 源自“the Linux Cross Referencer”,中间的“X”形象地代表了“Cross”。与 Source Navigator 类似,它也是分析阅读源代码的好工具。不同的是,它将源代码借助浏览器展示出来,文件间的跳转过程成了我熟悉的点击超链接动作。 http:/...

2014-04-24 15:39:15 9359 4

原创 ZooKeeper集群环境安装与配置

ZooKeeper版本:3.4.5 约定:3台虚拟机 前提:需要安装JDK,关于Linux环境JDK安装配置参考我的另一帖Linux环境安装卸载JDK以及安装Tomcat和发布Java的web程序 ZooKeeper官网:http://zookeeper.apache.org/ 1.下载解压...

2014-02-08 17:51:46 4602 0

原创 Linux环境HBase安装与使用

Linux环境:CentOS6.5 HBase版本:hbase-0.94.16 1.下载解压安装文件 # wget http://mirror.bit.edu.cn/apache/hbase/stable/hbase-0.94.16.tar.gz # tar xvfz hbase-0.94.1...

2014-01-25 21:49:53 6612 1

原创 Redis安装与源码调试

官网下载:http://redis.io/download 1.安装Redis # wget http://redis.googlecode.com/files/redis-2.6.14.tar.gz # tar xzf redis-2.6.14.tar.gz # cd redis-2.6.14 ...

2013-07-27 09:12:35 10027 4

原创 valgrind Massif

nginx源码学习是一个痛苦又快乐的过程,下面列出了一些nginx的学习资源。   首先要做的当然是下载一份nginx源码,可以从nginx官方网站下载一份最新的。 看了nginx源码,发现这是一份完全没有注释,完全没有配置文档的代码。   现在你最希望要的是一份注释版的nginx源码,可以从下面...

2013-07-15 12:01:00 8264 1

原创 使用valgrind分析C程序调用线路图

Valgrind可以检测内存泄漏和内存违例,但是用Valgrind生成的日志信息结合kcachegrind就可以查看C程序的执行线路图,调用时间,是做性能优化和查看代码的非常好的工具。 下载安装 Valgrind 安装 到www.valgrind.org下载最新版valgrind # wg...

2013-04-08 14:01:23 5247 0

原创 Linux环境Nginx安装与调试以及PHP安装

linux版本:64位CentOS 6.8 Nginx版本:nginx1.17.7 php版本:php5.6.40 说明:本博不定时更新为新版本 1.编译安装Nginx 官网:http://wiki.nginx.org/Install 下载:http://nginx.org/en/...

2013-01-26 17:22:43 13588 0

原创 从寄存器看I386和x64位中函数调用中参数传递

x86_64基本使用寄存器存储函数参数,寄存器不够才入栈; 而i386将所有参数保存在栈上,通过gcc的扩展功能__attribute__((regparm()))即可实现部分参数的寄存器传递。 代码 #include #include int v1 = 1; float v2 = 0.01...

2012-12-29 13:03:32 7064 0

原创 GDB查看栈信息

栈:是程序存放数据内存区域之一,特点是LIFO(后进先出)。 PUSH:入栈 POP:出战 使用场景: 1.保存动态分配的自动变量使用栈 2.函数调用时,用栈传递函数参数,半寸返回地址,返回值 代码sum.c #include #include ...

2012-12-29 12:53:44 20786 0

原创 汇编语言系统调用过程

以printf为例,详细解析一个简单的printf调用里头,系统究竟做了什么,各寄存器究竟如何变化。 如何在汇编调用glibc的函数?其实也很简单,根据c convention call的规则,参数反向压栈,call,然后结果保存在eax里头。注意,保存的是地址。 在汇编里头,一切皆地址。 ...

2012-12-29 12:42:22 2236 0

原创 GDB调试--以汇编语言为例

#rpm -qa |grep  gdb 下载: 安装 #tar -zxvf #./configure #make 使用GDB 以汇编语言调试为例 汇编语言实现CPUID指令 CPUID cpuid是Intel  Pentinum以上级CPU内置的一个指令(486级以下的CPU不支持),他用...

2012-12-29 11:40:36 4224 0

原创 Java字节码研究

本文在本人2个博客https://blog.csdn.net/21aspnet和https://blog.csdn.net/unix21unix21同步发布 1.String和常连池 先上代码: public class TestApp { public static void ...

2019-03-05 18:49:39 221 0

原创 Java字节码instrument研究

MyAgent项目 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0&qu...

2018-08-21 15:54:36 405 0

原创 JVM虚拟机参数配置官方文档

JDK8 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.htmlJDK7 https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html...

2018-04-08 11:23:51 662 0

原创 Linux kernel futex.c的bug导致JVM不可用

JVM死锁导致线程不可用,然后会瞬间起N个线程,当然也是不可用的,因为需要的对象死锁,然后耗尽文件句柄导致外部TCP无法建议拒绝服务,jstack之后就会恢复。解决办法:替换中间件类库 ,比如httpclient的。原因大致是:某个switch分支缺少memory barrier的正确处理,导致外...

2018-04-08 09:54:01 553 0

原创 线上java问题排查

0.jps 这个输出java进程pid #jps 查看java的线程 #top -Hp 25448 如图25757这个线程比较耗时,看看他在做什么 注意需要折算出线程pid的16进制值,然后jstack。 可以打印更多信息 #jstack pid | gre...

2018-01-18 11:24:38 558 0

转载 用“逐步排除”的方法定位Java服务线上“系统性”故障

说明:原文地址已经不可访问,其他地方有转载,不过很多丢失图片,所以,找到一处有图的重新配好图。 用“逐步排除”的方法定位Java服务线上“系统性”故障 Posted on 2014/08/25 李斯宁(高级测试开发工程师) 一、摘要 由于硬件问题、系统资源紧缺或者...

2018-01-05 14:12:34 186 0

原创 Java常用命令及Java Dump

线程Dump,包含所有线程的运行状态。纯文本格式。 堆Dump,包含线程Dump,幵包含所有堆对象的状态。二进制格式。 Java Dump方法 1.使用Java虚拟机制作Dump 指示虚拟机在发生内存不足错误时,自动生成堆Dump -XX:+HeapDumpOnOutOfMemoryError ...

2017-12-20 14:19:59 1165 0

原创 Java的SPI机制

Dubbo等框架使用到必须掌握。 package org.hadoop.java; public interface IService { public String sayHello(); public String getScheme(); } package o...

2017-03-27 20:45:34 2143 0

原创 匿名内部类和传接口

匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 参考:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html...

2017-03-27 17:45:40 427 0

原创 编程经验

1.变量下面多处使用 那么不应该直接在第一处修改 需要另一个变量或者开一个函数 String TypeCode = (String) md.get("TypeCode"); if (!StaticUtil.XXXs.contains(...

2017-02-06 11:06:45 230 0

原创 SpringBoot使用笔记

其实也是参考官方的:http://spring.io/guides/gs/rest-service/ SpringBoot并不神秘,其最大的好处是可以帮你省略引用一堆jar包,需要神秘jar它自动帮你引用,集成tomcat,集成配置等待好处太多,总之就是更方便开发而已。 还是自己体验下比较好。...

2017-01-01 14:20:15 408 0

原创 Tomcat定时任务

原文: The   load-on-startup   element   indicates   that   this   servlet   should   be   loaded   (instantiated   and   have   its   init()   called) ...

2016-12-15 13:13:18 1686 0

原创 String和常量池

String s1 = "abc";// 放在常量池中 String s2 = "abc";// 从常量池中查找 String s3 = new String("abc");//new放在堆中 ...

2016-12-02 13:15:17 337 0

原创 JVM内存溢出的几种情形

java虚拟机规范定义了两种异常与栈空间有关:StackOverflowError和OutOfMemoryError 线程计算过程中 栈深度>最大可用栈深度 抛出StackOverflowError 如果栈可以动态扩展,如果扩展过程中没有足够内存空间支持会抛出OutOfMemoryError...

2016-12-02 11:09:22 392 0

原创 MySQL常用性能分析方法-profile,explain,索引

1.查版本号 无论做什么都要确认版本号,不同的版本号下会有各种差异。 >Select  version(); 2.执行状态分析 显示哪些线程正在运行 >show processlist; 下面是完整的信息

2016-10-26 13:49:46 839 0

原创 事务隔离机制原理分析以及是否可以防止订单超卖

事务的隔离机制是指: Read Uncommitted(读取未提交内容) Read Committed(读取提交内容) Repeatable Read(可重读) Serializable(可串行化) 具体的解释最经典的MySQL书《高性能MySQL(第3版)》以及有了就不在其他地方再引用了: ...

2016-10-18 20:35:04 2170 0

原创 Spring源码分析【8】-分布式环境SpringSecurity保持用户会话

1.SpringSecurity的权限控制流程是这样的: 用户登录,基础信息UserInfo存在SpringSecurity的ThreadLocal里。 下面是contextHolder对象: final class ThreadLocalSecurityContextHolderStra...

2016-10-14 17:49:19 3902 0

原创 Map和List静态初始化

public final static Map ServerIPMap = new HashMap() { { put("redis", "127.0.0.1"); put("solr...

2016-10-13 10:20:24 7994 3

原创 在jsp调试后端绑定对象

在jsp调试后端绑定对象,这个调用层次非常深

2016-09-09 12:00:55 640 0

原创 Spring源码分析【9】-SpringSecurity密码Remove原理

很明显代码已经说了认证完成移除credentials和其他某些安全数据 // Authentication is complete. Remove credentials and other secret data // from authentication org.springframewo...

2016-08-29 18:36:00 623 0

原创 request.getSession(false)到底返回什么

HttpSession session = request.getSession(false); 很明显传false如果session不存在返回Null。

2016-08-26 16:58:46 1263 0

原创 Spring源码分析【7】-Spring 模板页和JSP文件的编译

org.apache.jasper.JspCompilationContext.compile createCompiler isOutDated判断文件是否存在 ..\Apache\apache-tomcat-8.0.36\work\Catalina\localho...

2016-08-16 14:05:22 748 0

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