![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试必问
都是底层
这个作者很懒,什么都没留下…
展开
-
java线上CPU100%如何排查
定位耗费CPU的进程top -c 就可以显示进程列表,然后输入P,按照cpu使用率排序,你会看到类似下面的东西2. 定位耗费CPU的线程top -Hp 1500 就是输入那个进程id就好了,然后输入P,按照cpu使用率排序,你会看到类型下面的东西3. 定位那段代码导致cpu过高printf “%x\n” 1531 把线程pid转化为16进制,比如4. 打印出堆栈信息jstack 1500 | grep "5fbn" -C5 -color这个就是用jstack打印进程的堆栈信.原创 2020-08-31 15:08:21 · 3494 阅读 · 1 评论 -
java 迭代器和for循环中可以删除元素 直接上代码
List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add("3"); list.add("4"); System.out.println(list); for (int i = 0; i < list.size(); ) { .原创 2020-08-07 17:35:41 · 3495 阅读 · 0 评论 -
synchronized和lock的区别
Lock和synchronized有以下几点不同:1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不行,lock是通过代码实现的,要保证锁定一定会被释放,就必...原创 2019-04-30 13:29:24 · 3870 阅读 · 0 评论 -
如何接受一个线程的返回值
如何接受一个线程的返回值public class ThreadDemo { public static void main(String[] args) throws Exception { //创建一个线程池 ExecutorService pool = Executors.newFixedThreadPool(2); //创建两个有返回值的任务 Callable c1 ...原创 2019-04-24 20:26:43 · 4152 阅读 · 0 评论 -
Shiro面试必问
Shiro的优点简单的身份认证, 支持多种数据源对角色的简单的授权, 支持细粒度的授权(方法级)支持一级缓存,以提升应用程序的性能;内置的基于 POJO 企业会话管理, 适用于 Web 以及非 Web 的环境非常简单的加密 API不跟任何的框架或者容器捆绑, 可以独立运行简述Shiro的核心组件Shiro 架构 3 个核心组件:Subject: 正在与系统交互的人或某一个第...原创 2019-03-11 08:50:11 · 18180 阅读 · 3 评论 -
Http面试
面试时面试官问你说一下http当时就蒙了,回来以后挥泪写下这个面试总结常用的http方法有那些GET:用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。PUT:传输文件,报文主体中包含文件内容,保存到对应URI位置。HEAD: 获得报文首部,与GET方法类似,只是不返回报...原创 2019-02-22 17:03:01 · 3865 阅读 · 0 评论 -
事务的隔离级别和数据库的事务机制
事务的隔离级别① 脏读: 脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。② 不可重复读:是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个...原创 2019-02-16 17:00:57 · 3783 阅读 · 0 评论 -
spring中自定义注解的流程
可以结合spring的AOP,对注解进行拦截,提取注解。大致流程为:新建一个注解@MyLog,加在需要注解申明的方法上面新建一个类MyLogAspect,通过@Aspect注解使该类成为切面类。通过@Pointcut 指定切入点 ,这里指定的切入点为MyLog注解类型,也就是被@MyLog注解修饰的方法,进入该切入点。MyLogAspect中的方法通过加通知注解(@Before、@Ar...原创 2019-02-16 15:57:12 · 4166 阅读 · 0 评论 -
Java创建对象的过程
类加载检查: 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。分配内存: 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。...原创 2019-02-15 15:03:55 · 3731 阅读 · 0 评论 -
NIO与IO的区别
表扬表扬原创 2019-02-15 13:41:41 · 3685 阅读 · 0 评论 -
Spring mvc处理流程
SpringMVC核心处理流程:1、DispatcherServlet前端控制器接收发过来的请求,交给HandlerMapping处理器映射器2、HandlerMapping处理器映射器,根据请求路径找到相应的HandlerAdapter处理器适配器(处理器适配器就是那些拦截器或Controller)3、HandlerAdapter处理器适配器,处理一些功能请求,返回一个ModelAndVi...原创 2019-02-14 18:49:33 · 3627 阅读 · 0 评论 -
HashMap的底层实现
HashMap概述HashMap实现了Map接口,我们常用HashMap进行put和get操作读存键值对数据。下面介绍基于jdk1.8深入了解HashMap底层原理。HashMap数据结构HashMaop实际是一种“数组+链表”数据结构。在put操作中,通过内部定义的哈希算法找到数组下表,将数据直接放入此数组元素中,若通过哈希算法得到的该数组元素已经有了元素(俗称hash冲突,链表结构的出现...原创 2019-02-14 18:42:32 · 3589 阅读 · 0 评论