随笔分类 -  JAVA 技术相关

Java语言相关
摘要:1)引用的整体组织架构 2)引用类型 强引用:对于强引用对象,即使出现OOM也不会进行回收; 软引用:内存够用就保存,不够用就回收; 弱引用:无论内存是否够用,都回收(WeakHashMap); 虚引用:不能单独使用也不能通过它访问对象,虚引用必须与引用队列(ReferenceQueue)联合使用, 阅读全文
posted @ 2020-03-26 22:25 HappyDeveloper 阅读(198) 评论(0) 推荐(0) 编辑
摘要:1. 分析思路 结合Linux和JDK命令一块分析 1)先用top命令查找cpu占用最高的进程; 2)ps -ef 或者jps进一步定位进程详情(具体什么程序); 3)定位到具体的线程或者代码: ps -mp 进程 -o THREAD,tid,time -m:显示所有的线程 -p:pid进程使用cp 阅读全文
posted @ 2020-03-26 22:23 HappyDeveloper 阅读(543) 评论(0) 推荐(0) 编辑
摘要:1. 锁 1) Lock与synchronized的区别 Lock是接口,而synchronized是java中的关键字; synchronized不会导致死锁现象发生,而Lock可能造成死锁现象; Lock可以让等待锁的线程响应中断,而synchronized却不行; 通过Lock可以知道有没有成 阅读全文
posted @ 2020-03-26 21:56 HappyDeveloper 阅读(221) 评论(0) 推荐(0) 编辑
摘要:1. OOM 1) 常见OOM异常类型 (1) StackOverFlowError 栈内存溢出,用于深度方法调用(循环递归); (2) OutOfMemoryError:Java heap space 用于变量申请的空间大于jvm的最大值; (3) OutOfMemoryError: GC ove 阅读全文
posted @ 2020-03-26 21:55 HappyDeveloper 阅读(366) 评论(0) 推荐(0) 编辑
摘要:1)JVM体系概述 JVM体系结构概览 JVM参数调优及相关参数 JVM的参数类型 标配参数:java-version; java -help X参数:-Xint 解释执行; -Xcomp 第一次使用就编译; -Xmixed 混合模式(先编译再执行) XX参数: Boolean类型:-XX:(+|- 阅读全文
posted @ 2020-03-26 17:29 HappyDeveloper 阅读(354) 评论(0) 推荐(0) 编辑
摘要:(1)HashMap的线程不安全原因一:死循环 原因在于HashMap在多线程情况下,执行resize()进行扩容时容易造成死循环。 扩容思路为它要创建一个大小为原来两倍的数组,保证新的容量仍为2的N次方,从而保证上述寻址方式仍然适用。扩容后将原来的数组从新插入到新的数组中。这个过程称为reHash 阅读全文
posted @ 2020-01-21 16:48 HappyDeveloper 阅读(191) 评论(0) 推荐(0) 编辑
摘要:JAVA8中引入了lamda表达式和Stream接口。其丰富的API及强大的表达能力极大的简化代码,提升了效率,同时还通过parallelStream提供并发操作的支持,本文探讨parallelStream方法的使用。 首先看下java doc中对parallelStream的定义。 既然可以并行的 阅读全文
posted @ 2019-06-26 17:46 HappyDeveloper 阅读(745) 评论(0) 推荐(0) 编辑
摘要:一、同源策略简介 同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。 同源策略是浏览器安全的基石。 什么是源 源[origin]就是协议、域名和端口号。例如:http://www.baidu.com:80 这个URL。 阅读全文
posted @ 2019-05-08 11:51 HappyDeveloper 阅读(388) 评论(0) 推荐(0) 编辑
摘要:为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。 1.同步方法 即有synchronized关键字修 阅读全文
posted @ 2019-04-29 12:33 HappyDeveloper 阅读(6827) 评论(0) 推荐(0) 编辑
摘要:1.启用端点 默认情况下,除了shutdown端点是关闭的,其它的都是启用的。配置一个端点的启用,使用management.endpoint..enabled属性,下面的例子是启用shutdown端点: 如果你个人更喜欢自定义端点的启用和关闭,可以使用如下属性 关闭所有端点启用情况,个人可以单独的通 阅读全文
posted @ 2019-01-10 19:13 HappyDeveloper 阅读(7373) 评论(1) 推荐(1) 编辑
摘要:代码版本 JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 1.7.0_67。源码见这里 1. 时间 HashTable产生于JDK 1.1,而HashMap产生于JDK 1.2。从时间的维度上来看,HashMap要比HashTable出现得晚一些。 2. 作者 以下是 阅读全文
posted @ 2018-12-20 15:58 HappyDeveloper 阅读(258) 评论(0) 推荐(0) 编辑
摘要:Java7 HashMap HashMap 是最简单的,一来我们非常熟悉,二来就是它不支持并发操作,所以源码也非常简单。 首先,我们用下面这张图来介绍 HashMap 的结构。 这个仅仅是示意图,因为没有考虑到数组要扩容的情况,具体的后面再说。 大方向上,HashMap 里面是一个数组,然后数组中每 阅读全文
posted @ 2018-12-20 15:50 HappyDeveloper 阅读(181) 评论(0) 推荐(0) 编辑
摘要:简介 ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。 由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅 阅读全文
posted @ 2018-12-19 11:50 HappyDeveloper 阅读(416) 评论(0) 推荐(0) 编辑
摘要:前言 Java里面的I/O这一部分看过很多遍,每次看完之后特别混乱,又是输入流,又是输出流,又是字符流,又是字节流,还有什么过滤流,缓冲流。每次看得我如入云里雾里,直到后面看了设计模式这一块,才算真正的对Java I/O这一块有了整体的了解,理解起Java流也就容易许多。这篇博客先介绍装饰者模式,然 阅读全文
posted @ 2018-12-12 21:17 HappyDeveloper 阅读(434) 评论(0) 推荐(0) 编辑
摘要:一、字节流 1. 输出流 Java的基本输出流类是java.io.OutputStream; 此类常用的写入数据的基本方法如下: 常见子类(针对流介质): FileOutputStream 针对文件 TelnetOutputStream 针对网络连接 ByteArrayOutputStream 针对 阅读全文
posted @ 2018-12-12 17:39 HappyDeveloper 阅读(237) 评论(0) 推荐(0) 编辑
摘要:一、不可变类简介 不可变类:所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类:相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。 二、不可变类的优点 说完可变 阅读全文
posted @ 2018-12-10 12:23 HappyDeveloper 阅读(733) 评论(0) 推荐(0) 编辑
摘要:前言 今天来介绍下Spring Boot如何配置日志logback,我刚学习的时候,是带着下面几个问题来查资料的,你呢 如何引入日志? 日志输出格式以及输出方式如何配置? 代码中如何使用? 正文 Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志 阅读全文
posted @ 2018-08-10 19:34 HappyDeveloper 阅读(390) 评论(0) 推荐(0) 编辑
摘要:问题 朋友遇到一个问题:他想在Service方法中使用HttpServletRequest的API,但是又不想把HttpServletRequest对象当作这个Service方法的参数传过来,原因是这个方法被N多Controller调用,加一个参数就得改一堆代码。一句话:就是他懒。不过,这个问题该这 阅读全文
posted @ 2018-08-07 20:00 HappyDeveloper 阅读(12340) 评论(1) 推荐(2) 编辑
摘要:今天给大家整理一篇关于Redis经常被问到的问题:缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等概念 一、缓存雪崩 缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间(例如:我们设置缓存时采用了相同的过期时间,在同一时刻出现大面积的缓存过期),所有原本应该访问缓存的请求都去查询数据库 阅读全文
posted @ 2018-03-19 10:16 HappyDeveloper 阅读(2652) 评论(0) 推荐(0) 编辑
摘要:多线程是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是作为一个程序员仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。 1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者 阅读全文
posted @ 2018-03-05 10:40 HappyDeveloper 阅读(811) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示