![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 73
停5s
这个作者很懒,什么都没留下…
展开
-
java进程CPU占用高如何排查-案例二
java进程CPU占用高如何排查?原创 2022-04-06 14:10:13 · 14423 阅读 · 0 评论 -
HashMap、HashTable、ConcurrentHashMap区别
一、HashMap数组+链表参考博客:https://blog.csdn.net/Jae_Peng/article/details/79562432二、HashTablesynchronized+HashMap,线程安全,但多线程争抢同一把锁,耗性能二、ConcurrentHashMapjdk1.7:segment数组(固定大小,使用ReentrantLock可重入锁)+数组+链表jdk1.8:node(可扩展,使用synchronized+CAS)+链表/红黑树(超过8位用红黑原创 2020-06-07 18:35:27 · 128 阅读 · 0 评论 -
基于spring boot实现webservice接口
x原创 2019-11-28 20:31:37 · 3365 阅读 · 4 评论 -
递归函数优缺点
递归函数的优点是定义简单,逻辑清晰。理论上,所的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。解决递归函数缺点的方法:解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。尾递归是指,在函数原创 2020-07-15 16:56:15 · 4035 阅读 · 0 评论 -
java内存泄露如何排查
问题:某jboss服务器经过一段时间运行后内存使用率持续增长至90+%,根据现象判断可推断出存在内存泄露一、heapdump文件分析java heapdump文件获取命令:/xxx/openjdk-1.8.0_92/bin/jmap -dump:format=b,file=/xxx/my.hprof使用 EclipseMemory Analyzer 内存分析工具解析 my.hprof 文件(1)点击“Leak Suspects”查看内存泄露报告(2)内存泄露报告显示有17..原创 2021-05-12 19:37:36 · 1149 阅读 · 0 评论 -
java静态代理和动态代理区别和实现
静态代理:代理类和服务对象实现了同样的接口,限制了代理类只服务于一种类型的对象动态代理:代理类用Object接收,并应用反射机制,可以代理多种类型对象静态代理:(1)接口public interface Network { public void browse();}(2)接口实现类public class Realnet implements Network { @Override public void browse() { Sy.原创 2021-04-26 15:32:38 · 177 阅读 · 0 评论 -
java进程cpu占用高如何排查
1、ps -ef | grep java 找到java进程id2、ps -mp [java_pid] -o THREAD,tid,time | sort -n 找到cpu占用最大的线程id或 top -H -p [java_pid] 找线程id3、printf "%x\n" [线程_id] 计算线程id的十六进制 值4、jstack [java_pid] | grep [线程id十六进制值] -A 30 (-A 30 表示 限制30行输出,如果日志截断,可加大输出...原创 2021-04-07 11:07:52 · 13580 阅读 · 2 评论 -
java logback.xml详解
一、java日志输出演进(0)控制台输出System.out.println()(1)java标准库内置日志包:java.util.loggingLogger logger = Logger.getGlobal();logger.info("...");局限性:Logging系统在JVM启动时读取配置文件并完成初始化,一旦开始运行main()方法,就无法修改配置;配置不太方便,需要在JVM启动时传递参数:-Djava.util.logging.config.file=<原创 2021-03-19 20:17:30 · 1253 阅读 · 1 评论 -
java问题笔记
redis 学习思考:1、redis自增数2、redis分布式锁3、缓存穿透4、缓存雪崩原创 2021-03-19 20:14:57 · 167 阅读 · 0 评论 -
JVM问题笔记
1、java对象创建的过程? 1)jvm先检查类是否已被加载、解析和初始化,若未初始化,需要执行类加载 2)为新生对象分配 堆 内存 对象内存分配方法: “指针碰撞”:假设内存规整,一边是空闲内存,一边是使用中内存,中间是指针,分配时将指针向空闲内存移动一个对象大小的距离。 “空闲列表”:假设内存不规整,jvm维护一个可用空闲内存列表,分配时从列表中选择一块划分给对象 分配内存可能存在的问题: 并发情况下,存在A对象移动指针后,...原创 2021-03-19 17:29:03 · 147 阅读 · 0 评论 -
记录两篇讲logback的文章
1、https://www.liaoxuefeng.com/wiki/1252599548343744/1264739436350112看这篇可对日志的演进有个直观的理解。2、https://my.oschina.net/u/928852/blog/1841371看这篇可对logback.xml标签作用有个了解。原创 2021-01-12 09:51:50 · 71 阅读 · 0 评论 -
HttpClient用法小纪
特性:1. 基于标准、纯净的Java语言。实现了Http1.0和Http1.12. 以可扩展的面向对象的结构实现了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。3. 支持HTTPS协议。4. 通过Http代理建立透明的连接。5. 利用CONNECT方法通过Http代理建立隧道的https连接。6. Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos认原创 2020-07-15 17:42:01 · 126 阅读 · 0 评论 -
java基础知识小纪
1、java源程序的扩展名必须是.java2、通常情况下,java程序源文件的主文件名可以是任意的,但当程序源代码里定义了一个public类,则该源文件的文件名必须与该public类的类名相同。3、一个java源文件里最多只能定义一个public类4、增强可读性的三个建议:(1)一个java源文件只定义一个类,不同类使用不同的源文件定义(2)将每个源文件中单独定义的类都定义成public(3)保持java源文件的主文件名,与该源文件中定义的public类同名5、任何一种垃圾回收机制一般要做两件原创 2020-07-15 17:41:05 · 174 阅读 · 0 评论 -
java中的native是什么
native主要用于方法上一个native方法就是一个Java调用非Java代码的接口。一个native方法是指该方法的实现由非Java语言实现,比如用C或C++实现。 在定义一个native方法时,并不提供实现体(比较像定义一个Java Interface),因为其实现体是由非Java语言在外面实现的主要是因为JAVA无法对操作系统底层进行操作,但是可以通过jni(java native interface)调用其他语言来实现底层的访问。参考链接:https://www.jianshu.com转载 2020-07-06 19:01:55 · 6461 阅读 · 0 评论