自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

编程的本质是数学问题

学源码是最快的学习方法

  • 博客(254)
  • 收藏
  • 关注

原创 Java堆外内存泄露分析

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

2018-01-25 14:18:29 15415 2

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

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

2016-10-13 10:47:42 4182

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

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

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

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

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

2016-08-09 16:28:37 16189 1

原创 Spring4实战学习笔记

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

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

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

还是调试源码最好。开发环境  JDK1.8+NetBeans8.1说明:调试HashMap的 public V put(K key, V value) 方法并查看key的值时不能显示变量的值,原因在于oracle提供的jre中rt.jar不带debug信息。orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar的大小。若想正常调试

2016-03-17 10:54:15 9242 5

原创 NetBeans配置Xdebug 远程调试PHP

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

2015-08-18 18:02:37 1192

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

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

2014-04-24 15:39:15 11085 5

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

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

2014-02-08 17:51:46 5001

原创 Linux环境HBase安装与使用

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

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

原创 Redis安装与源码调试

官网下载:http://redis.io/download1.安装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# makemake命令执行完成后,会在src目录下生成5个可执行文件,分别是redis

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

原创 valgrind Massif

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

2013-07-15 12:01:00 9926 2

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

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

2013-04-08 14:01:23 5847

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

linux版本:64位CentOS 6.8Nginx版本:nginx1.17.7php版本:php5.6.40说明:本博不定时更新为新版本1.编译安装Nginx官网:http://wiki.nginx.org/Install下载:http://nginx.org/en/download.html安装GCC安装nginx需要gcc,如果因为需要安装grpc...

2013-01-26 17:22:43 16161

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

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

2012-12-29 13:03:32 8728

原创 GDB查看栈信息

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

2012-12-29 12:53:44 27038 2

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

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

2012-12-29 12:42:22 3297

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

#rpm -qa |grep  gdb下载:安装#tar -zxvf #./configure#make使用GDB以汇编语言调试为例汇编语言实现CPUID指令CPUIDcpuid是Intel  Pentinum以上级CPU内置的一个指令(486级以下的CPU不支持),他用于识别某一类型的CPU,它能返回CPU级别,型号,CPU步进以及CPU字

2012-12-29 11:40:36 5147

原创 Java字节码研究

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

2019-03-05 18:49:39 646

原创 Java字节码instrument研究

MyAgent项目&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocatio...

2018-08-21 15:54:36 908

原创 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官方博客 https://blogs.oracle.com/poonam/==============...

2018-04-08 11:23:51 1434

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

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

2018-04-08 09:54:01 1352

原创 线上java问题排查

0.jps这个输出java进程pid#jps查看java的线程#top -Hp 25448如图25757这个线程比较耗时,看看他在做什么注意需要折算出线程pid的16进制值,然后jstack。可以打印更多信息#jstack pid | grep -A 20 649d参考:JVM调优之jstack找出最耗cpu的线程并定位代码

2018-01-18 11:24:38 843

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

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

2018-01-05 14:12:34 409

原创 Java常用命令及Java Dump

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

2017-12-20 14:19:59 2096

原创 Java的SPI机制

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

2017-03-27 20:45:34 2568

原创 匿名内部类和传接口

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

2017-03-27 17:45:40 574

原创 编程经验

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

2017-02-06 11:06:45 366

原创 SpringBoot使用笔记

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

2017-01-01 14:20:15 577

原创 Tomcat定时任务

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

2016-12-15 13:13:18 1928

原创 String和常量池

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

2016-12-02 13:15:17 471

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

java虚拟机规范定义了两种异常与栈空间有关:StackOverflowError和OutOfMemoryError线程计算过程中 栈深度>最大可用栈深度 抛出StackOverflowError如果栈可以动态扩展,如果扩展过程中没有足够内存空间支持会抛出OutOfMemoryError-Xss设置栈大小,栈大小决定了函数调用的可达深度public class Test

2016-12-02 11:09:22 704

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

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

2016-10-26 13:49:46 1237

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

事务的隔离机制是指:Read Uncommitted(读取未提交内容)Read Committed(读取提交内容)Repeatable Read(可重读)Serializable(可串行化)具体的解释最经典的MySQL书《高性能MySQL(第3版)》以及有了就不在其他地方再引用了:隔离机制的比较其实也有人喜欢用锁来控制并发,书中还提到了“隐式”和

2016-10-18 20:35:04 2630

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

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

2016-10-14 17:49:19 4741

原创 Map和List静态初始化

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

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

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

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

2016-09-09 12:00:55 900

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

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

2016-08-29 18:36:00 856

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

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

2016-08-26 16:58:46 1826

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

org.apache.jasper.JspCompilationContext.compilecreateCompilerisOutDated判断文件是否存在..\Apache\apache-tomcat-8.0.36\work\Catalina\localhost\ROOT\org\apache\jsp\WEB_002dIN

2016-08-16 14:05:22 948

空空如也

空空如也

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

TA关注的人

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