精华内容
下载资源
问答
  • java常用工具类使用

    热门讨论 2012-03-19 20:11:37
    Java程序设计过程中,对应日期和时间的格式化,还有一个简单的格式化方式,就是java.text.SimpleDateFormat,该类中用字符串指定日期和时间的格式,字符串中的字符称为模式字符,模式字符区分大小写。常见的模式...
  • 说明: 此参数指定链接程序 (如: UNIX 中的 ld, 或用于将目标文件链接到共享对象或 DLL 的 GNU ld) 的完整路径名。此参数是可选的。随每个平台附带的特有的 make 文件中包含此参数的默认值。如果为此参数指定了一个值...
  • 对象中,所以,访问对象中的数据只有一种途径,那就是利用一个公开的接口。 实际上,封装在程序和数据之间设置了一道栅栏,它可以阻止一部分的设计错误,不至 于涉足应用程序其他部分的数据。 2.2.3 消息 ...
  •  结果,就像光到底是波还是粒子问题一样,Java 方法的参数什么传递问题,其答案就只能是:即是值传递也是引用传递,只是参照物不同,结果也就不同。  4. 正确看待传值还是传引用问题  要正确...
  • 子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...
  • 对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...
  • java 面试题 总结

    2009-09-16 08:45:34
    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...
  • Java程序员面试宝典pdf

    热门讨论 2013-02-21 13:06:13
    面试题025 简述Java派生类中的构造方法如何为父类传递参数 47 面试题026 简述接口和抽象类的区别 48 面试题027 简述一下内部类的实质是什么 50 3.3 包和访问控制 52 面试题028 包应该如何被创建及使用 53 面试题029 ...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    5.Java中的分页、效率考虑。 6.简单介绍您所了解的structs。 1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一...
  • Java EE常用框架.xmind

    2020-06-19 16:08:35
    FormAuthenticationFilter拦截住取出request中的username和password(两个参数名称是可以配置的) FormAuthenticationFilter 调用realm传入一个token(username和password) realm认证时根据username...
  • java为数据结构中的列表定义了一个接口类java.util.list同时提供了3个实现类,分别是ArrayList、Vector、LinkedList使用; 生成不重复的随机数序列;列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口...
  • 面试题025 简述Java派生类中的构造方法如何为父类传递参数 47 面试题026 简述接口和抽象类的区别 48 面试题027 简述一下内部类的实质是什么 50 3.3 包和访问控制 52 面试题028 包应该如何被创建及使用 53 面试...
  • java基础题 很全面

    2009-05-09 09:24:24
    39. Java中的异常处理机制的简单原理和应用。 11 40. 垃圾回收的优点和原理。并考虑2种回收机制。 11 41. 你所知道的集合类都有哪些?主要方法? 12 42. 描述一下JVM加载class文件的原理机制? 12 43. char型变量中能不...
  • 达内 coreJava 习题答案

    2010-02-10 19:49:01
    1,编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年。 (2)若某个年份能被400整除,则也是闰年。 import java.util.Scanner; class ...
  • MYSQL中文手册

    2013-03-11 21:21:34
    6.12. 多服务器复制中的Auto-Increment 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. MySQL基准套件 7.1.5. 使用自己的基准 ...
  • 6.12. 多服务器复制中的Auto-Increment 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. MySQL基准套件 7.1.5. 使用自己的基准 7.2. 优化...
  • 本文学习自:深入浅出 Java 虚拟机-李国 排查JVM内存,CPU问题 首先突然出现这种问题,大多都是程序代码问题造成的,比如死...(2)再次使用 top 命令,加 -H 参数,查看某个进程使用 CPU 最多的某个线程,记录线程

    本文学习自:深入浅出 Java 虚拟机-李国

    排查JVM内存,CPU问题

    首先突然出现这种问题,大多都是程序代码问题造成的,比如死循环,大对象,数据库或缓存查询数据量过大。再者就是swap区,可能会导致gc执行过久,导致cpu飙高。

    排查cpu飙高问题

    (1) 使用 top 命令,查找到使用 CPU 最多的某个进程,记录它的 pid。使用 Shift + P 快捷键可以按 CPU 的使用率进行排序。

    top
    

    (2)再次使用 top 命令,加 -H 参数,查看某个进程中使用 CPU 最多的某个线程,记录线程的 ID。

    top -Hp $pid
    

    (3)使用 printf 函数,将十进制的 tid 转化成十六进制。

    printf %x $tid
    

    (4)使用 jstack 命令,查看 Java 进程的线程栈。

    jstack $pid >$pid.log
    

    (5)使用 less 命令查看生成的文件,并查找刚才转化的十六进制 tid,找到发生问题的线程上下文。

    less $pid.log
    

    保留故障现场信息

    (1)系统当前网络连接

    ss -antp > $DUMP_DIR/ss.dump 2>&1
    

    其中,ss 命令将系统的所有网络连接输出到 ss.dump 文件中。使用 ss 命令而不是 netstat 的原因,是因为 netstat 在网络连接非常多的情况下,执行非常缓慢。

    后续的处理,可通过查看各种网络连接状态的梳理,来排查 TIME_WAIT 或者 CLOSE_WAIT,或者其他连接过高的问题,非常有用。

    线上有个系统更新之后,监控到 CLOSE_WAIT 的状态突增,最后整个 JVM 都无法响应。CLOSE_WAIT 状态的产生一般都是代码问题,使用 jstack 最终定位到是因为 HttpClient 的不当使用而引起的,多个连接不完全主动关闭。

    (2)网络状态统计

    netstat -s > $DUMP_DIR/netstat-s.dump 2>&1
    

    此命令将网络统计状态输出到 netstat-s.dump 文件中。它能够按照各个协议进行统计输出,对把握当时整个网络状态,有非常大的作用。

    sar -n DEV 1 2 > $DUMP_DIR/sar-traffic.dump 2>&1
    

    上面这个命令,会使用 sar 输出当前的网络流量。在一些速度非常高的模块上,比如 Redis、Kafka,就经常发生跑满网卡的情况。如果你的 Java 程序和它们在一起运行,资源则会被挤占,表现形式就是网络通信非常缓慢。

    (3)进程资源

    lsof -p $PID > $DUMP_DIR/lsof-$PID.dump
    

    这是个非常强大的命令,通过查看进程,能看到打开了哪些文件,这是一个神器,可以以进程的维度来查看整个资源的使用情况,包括每条网络连接、每个打开的文件句柄。同时,也可以很容易的看到连接到了哪些服务器、使用了哪些资源。这个命令在资源非常多的情况下,输出稍慢,请耐心等待。

    (4)CPU 资源

    mpstat > $DUMP_DIR/mpstat.dump 2>&1
    vmstat 1 3 > $DUMP_DIR/vmstat.dump 2>&1
    sar -p ALL  > $DUMP_DIR/sar-cpu.dump  2>&1
    uptime > $DUMP_DIR/uptime.dump 2>&1
    

    主要用于输出当前系统的 CPU 和负载,便于事后排查。这几个命令的功能,有不少重合,使用者要注意甄别。

    (5)I/O 资源

    iostat -x > $DUMP_DIR/iostat.dump 2>&1
    

    一般,以计算为主的服务节点,I/O 资源会比较正常,但有时也会发生问题,比如日志输出过多,或者磁盘问题等。此命令可以输出每块磁盘的基本性能信息,用来排查 I/O 问题。在第 8 课时介绍的 GC 日志分磁盘问题,就可以使用这个命令去发现。

    (6)内存问题

    free -h > $DUMP_DIR/free.dump 2>&1
    

    free 命令能够大体展现操作系统的内存概况,这是故障排查中一个非常重要的点,比如 SWAP 影响了 GC,SLAB 区挤占了 JVM 的内存。

    (7)其他全局

    ps -ef > $DUMP_DIR/ps.dump 2>&1
    dmesg > $DUMP_DIR/dmesg.dump 2>&1
    sysctl -a > $DUMP_DIR/sysctl.dump 2>&1
    

    dmesg 是许多静悄悄死掉的服务留下的最后一点线索。当然,ps 作为执行频率最高的一个命令,它当时的输出信息,也必然有一些可以参考的价值。

    另外,由于内核的配置参数,会对系统和 JVM 产生影响,所以我们也输出了一份。

    (8)进程快照,最后的遗言(jinfo)

    ${JDK_BIN}jinfo $PID > $DUMP_DIR/jinfo.dump 2>&1
    

    此命令将输出 Java 的基本进程信息,包括环境变量和参数配置,可以查看是否因为一些错误的配置造成了 JVM 问题。

    (9)dump 堆信息

    ${JDK_BIN}jstat -gcutil $PID > $DUMP_DIR/jstat-gcutil.dump 2>&1
    ${JDK_BIN}jstat -gccapacity $PID > $DUMP_DIR/jstat-gccapacity.dump 2>&1
    

    jstat 将输出当前的 gc 信息。一般,基本能大体看出一个端倪,如果不能,可将借助 jmap 来进行分析。

    (10)堆信息

    ${JDK_BIN}jmap $PID > $DUMP_DIR/jmap.dump 2>&1
    ${JDK_BIN}jmap -heap $PID > $DUMP_DIR/jmap-heap.dump 2>&1
    ${JDK_BIN}jmap -histo $PID > $DUMP_DIR/jmap-histo.dump 2>&1
    ${JDK_BIN}jmap -dump:format=b,file=$DUMP_DIR/heap.bin $PID > /dev/null  2>&1
    

    jmap 将会得到当前 Java 进程的 dump 信息。如上所示,其实最有用的就是第 4 个命令,但是前面三个能够让你初步对系统概况进行大体判断。

    因为,第 4 个命令产生的文件,一般都非常的大。而且,需要下载下来,导入 MAT 这样的工具进行深入分析,才能获取结果。这是分析内存泄漏一个必经的过程。

    (11)JVM 执行栈

    ${JDK_BIN}jstack $PID > $DUMP_DIR/jstack.dump 2>&1
    

    jstack 将会获取当时的执行栈。一般会多次取值,我们这里取一次即可。这些信息非常有用,能够还原 Java 进程中的线程情况。

    top -Hp $PID -b -n 1 -c >  $DUMP_DIR/top-$PID.dump 2>&1
    

    为了能够得到更加精细的信息,我们使用 top 命令,来获取进程中所有线程的 CPU 信息,这样,就可以看到资源到底耗费在什么地方了。

    (12)高级替补

    kill -3 $PID

    有时候,jstack 并不能够运行,有很多原因,比如 Java 进程几乎不响应了等之类的情况。我们会尝试向进程发送 kill -3 信号,这个信号将会打印 jstack 的 trace 信息到日志文件中,是 jstack 的一个替补方案。

    gcore -o $DUMP_DIR/core $PID
    

    对于 jmap 无法执行的问题,也有替补,那就是 GDB 组件中的 gcore,将会生成一个 core 文件。我们可以使用如下的命令去生成 dump:

    ${JDK_BIN}jhsdb jmap --exe ${JDK}java  --core $DUMP_DIR/core --binaryheap
    
    1. 内存泄漏的现象

    稍微提一下 jmap 命令,它在 9 版本里被干掉了,取而代之的是 jhsdb,你可以像下面的命令一样使用。

    jhsdb jmap  --heap --pid  37340
    jhsdb jmap  --pid  37288
    jhsdb jmap  --histo --pid  37340
    jhsdb jmap  --binaryheap --pid  37340
    

    heap 参数能够帮我们看到大体的内存布局,以及每一个年代中的内存使用情况。这和我们前面介绍的内存布局,以及在 VisualVM 中看到的 没有什么不同。但由于它是命令行,所以使用更加广泛。

    展开全文
  • MySQL 5.1中文手冊

    2009-12-11 09:43:12
    6.12. 多服务器复制中的Auto-Increment 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. MySQL基准套件 7.1.5. 使用自己的基准 7.2. 优化...
  • 微软JavaScript手册

    2009-04-08 22:54:53
    getVarDate 方法 返回 Date 对象中的 VT_DATE。 getYear 方法 返回 Date 对象中的年份。 Global 对象 是一个固有对象,目的是将全局方法集中在一个对象中。 global 属性 返回一个 Boolean 值,标记正则表达式使用...
  • mysql5.1中文手册

    2008-01-09 09:54:20
    多服务器复制中的Auto-Increment 7. 优化 7.1. 优化概述 7.1.1. MySQL设计局限与折衷 7.1.2. 为可移植性设计应用程序 7.1.3. 我们已将MySQL用在何处? 7.1.4. MySQL基准套件 7.1.5. 使用自己...
  • 他的主要研究方向是工程设计、生物(特别是人类基因组)数据库、文档及文本数据库等新兴应用中的数据库建模。设计和集成,此外,他对知识表示、数据挖掘和知识发现等也非常感兴趣。 目录 封面 -17 封底 -16 扉页 -15 ...
  • 本工程包含了 SpringAOP,死锁,JUC同步锁,读-写同步锁,ThreadLocal使用,JUC线程池和Spring提供的线程池,jdk 1.8 中的日期时间API,数据结构中 图的实现及操作和广度优先遍历/深度优先遍历(其他待完善),生成XML...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

java按对象中的某个参数排序

java 订阅