
JAVA
文章平均质量分 69
Thunder_C
喜欢计算机行业
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么JDK1.8的ConcurrentHashMap 的读操作不需要加锁?
我们知道,在JDK1.8中ConcurrentHashmap这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,为什么它不需要加锁呢?ConcurrentHashMap的简介在JDK1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而JDK1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。...转载 2021-08-06 09:29:39 · 534 阅读 · 0 评论 -
Java项目高CPU占用排查
下列操作在服务器中进行(运行环境 linux)1、通过 "top" 命令查询出JAVA项目进程的 PID2、通过 "top -Hp 进程PID" 命令查询当前进程的线程使用情况 获取线程的 PID3、通过 "printf '%x' 线程PID " 命令把线程PID 转换为16进制4、通过 "jstack 进程PID > 输出文件名" 输出jvm使用信息5、查询第三部获取的线程的使用信息6、通过代码信息排查业务代码问题...原创 2021-07-18 10:24:56 · 130 阅读 · 0 评论 -
数据结构和算法学习(二)-数据结构基础
基本数据结构:数组、链表、栈和队列相关知识原创 2021-06-25 16:44:21 · 490 阅读 · 1 评论 -
Java虚拟机学习-认识JAVA及其虚拟机
一、Java技术体系JCP(Java Community Process,就是人们常说的“Java社区” )官方定义的Java技术体系包括:Java程序设计语言 各种硬件平台上的Java虚拟机实现 Class文件格式 Java类库API 来自商业机构和开源社区的第三方Java类库 二、Java历史1991-04:由James Gosling博士领导的绿色计划(Green Project)开始启动 Java语言前身Oak(得名于James Gosling办公室外的一棵橡树)1原创 2020-09-16 14:09:29 · 338 阅读 · 0 评论 -
JAVA知识整理(一)-JVM
一、基本概念JVM 是可运行 Java 代码的虚拟机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。二、运行过程我们都知道 Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。 也就是如下: Java 源文件—->编译器—->字节码文件—->JVM—->机器码转载 2022-03-12 11:13:57 · 148 阅读 · 0 评论 -
Java8-编程概念
一、流处理什么是流:流是一系列数据项,一次只生成一项。程序可以从输入流中一个一个读取数据项,然后以同样的方式将数据项写入输出流。一个程序的输出流很可能是另一个程序的输入流。 Stream API:Stream<T>就是一系列T类型的项目。你现在可以把它看成一种迭代器。Stream API的很多方法可以链接起来形成一个复杂的流水线 好处: 你可以在一个更高的抽象层次上写Java 8程序 Java 8可以透明地把输入的不相关部分拿到几个CPU内核上去分别执行你的St原创 2020-09-01 16:34:17 · 162 阅读 · 0 评论 -
JAVA知识-java中容易忽视的坑(容易忽视的知识点)
本文转载自https://mp.weixin.qq.com/s/FvTkjaqDUCtEhBpBWtWY-A今天我们就来聊一下 Java 中的 10 大坑爹功能,它们分别是:1.switch必须加上break才结束2.逻辑运算符的“短路”现象3.数组下标从零开始4.ArrayList遍历删除时报错5.字符转成数字的坑6.while循环体的“障眼法”7.Integer类有缓存8.空方法体导致死循环9.神奇的=+10.Java注释能够识别Unicode作为一门面.转载 2020-09-01 09:59:40 · 191 阅读 · 0 评论 -
List 和 Set 的区别
Java中的集合包括三大类,它们是Set(集)、List(列表)和Map(映射),它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayListCollection是最基本的集合接口,声明了适用于JAVA集合的通用方法,list和set都继承自collection接口。Co...转载 2019-05-20 16:16:43 · 410 阅读 · 0 评论 -
List,Set,Map用法以及区别
List,Set,Map是否继承自Collection接口?答:List,Set是,Map不是。Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java JDK不能提供直接继承自Collection的类,Java JDK提供的类都是继承自Collec...转载 2019-05-20 16:33:59 · 196 阅读 · 0 评论 -
List与set集合,Map集合的区别以及它们的实现类有哪些?
List 是可重复集合,Set 是不可重复集合,这两个接口都实现了 Collection 父接口。Map 未继承 Collection,而是独立的接口,Map 是一种把键对象和值对象进行映射的集合,它的每一个元素都包含了一对键对象和值对象,Map 中存储的数据是没有顺序的, 其 key 是不能重复的,它的值是可以有重复的。List 的实现类有 ArrayList,Vector 和 Link...转载 2019-05-21 13:29:38 · 3366 阅读 · 0 评论 -
JAVA中逻辑运算符“|”和“&”与“||”和“&&”的用法
1.使用规则:(1)& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断(2)&& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算...转载 2019-05-21 16:06:17 · 987 阅读 · 0 评论 -
JVM运行时区域详解
我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。线程不共享区域每个线程的数据区域包括程序计数器、虚拟机栈和本地方法栈,它们都是在新线程创建时才创建的。程序计数器(Program Counter Rerister)程序计数器区域一块内存较小的区域,它用于存储线程的每个执行指令,...转载 2019-06-05 10:35:08 · 148 阅读 · 0 评论 -
深入浅出 Java 中 JVM 内存管理
Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点等等。1) JVM内存划分:① 方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放② 堆内存(线程共享) 垃圾回收的主要场地③...转载 2019-06-05 13:06:04 · 156 阅读 · 0 评论 -
JVM-图解 Java 垃圾回收机制
什么是自动垃圾回收?自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没被使用,并且将后者删掉的机制。所谓使用中的对象(已引用对象),指的是程序中有指针指向的对象;而未使用中的对象(未引用对象),则没有被任何指针给指向,因此占用的内存也可以被回收掉。在用 C 之类的编程语言时,程序员需要自己手动分配和释放内存。而 Java 不一样,它有垃圾回收器,释放内存由回收器负责。本文...转载 2019-06-05 09:19:16 · 279 阅读 · 0 评论 -
JVM 与 Linux 的内存关系详解
在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用 了),如下图所示。由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存究竟去哪儿了?...转载 2019-06-05 09:48:13 · 211 阅读 · 0 评论 -
JAVA面试-JAVA基础知识
1. 面向对象和面向过程的区别面向过程 优点:性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发 缺点:没有面向对象易维护、易复用、易扩展 面向对象 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵...转载 2019-06-17 15:02:05 · 436 阅读 · 0 评论 -
JAVA-幂等性(二):高并发的系统如何保证幂等性
转载自:https://www.cnblogs.com/geyifan/p/6128425.html一、什么是幂等性幂等概念来自数学,表示N次变换和1次变换的结果是相同的。这里讨论在某些场景下,客户端在调用服务没有达到预期结果时,会进行多次调用,为避免多次重复的调用对服务资源产生副作用,服务提供者会承诺满足幂等。HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应...转载 2019-03-07 14:27:29 · 18785 阅读 · 2 评论 -
Java-system.exit(0) system.exit(1) 含义与区别
s首先他俩都是退出程序的意思:区别在于:system.exit(0):正常退出,程序正常执行结束退出 system.exit(1):是非正常退出,就是说无论程序正在执行与否,都退出, System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() ...转载 2019-03-14 15:53:47 · 1291 阅读 · 0 评论 -
JAVA-Java基础语法
1、关键字 1.关键字概述 被Java语言赋予特定含义的单词 2.关键字特点 组成关键字的字母全部小写 3.关键字注意事项 goto和const作为保留字存在,目前并不使用 2、标识符 1.标识原创 2016-04-24 08:52:25 · 277 阅读 · 0 评论 -
JAVA-面向对象
1、面向对象思想 1.面向对象思想概述 面向对象是基于面向过程的编程思想 2.面向对象思想特点 是一种更符合我们思想习惯的思想 可以将复杂的事情简单化 将我们从执行者变成了指挥者原创 2016-04-24 09:07:02 · 360 阅读 · 0 评论 -
JAVA-Eclipse
1、Java开发常见工具介绍 A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) 2、Eclipse和MyEclipse介绍 Eclipse是一种可扩展的开放源代码的IDE。原创 2016-04-24 09:11:23 · 357 阅读 · 0 评论 -
JAVA-Java数组
1、数组1.数组概念数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。数组既可以存储基本数据类型,也可以存储引用数据类型。2.数组的定义格式格式1:数据类型[]数组名;格式2:数据类型数组名[];...原创 2019-02-28 18:03:57 · 121 阅读 · 0 评论 -
Java-ClassLoader 知识
下面给出的Java中ClassLoader中的描述,哪些描述是正确的?( )A.ClassLoader没有层次关系B.所有类中的ClassLoader都是AppClassLoaderC.通过Class.forName(StringclassName),能够动态加载一个类D.不同的ClassLoader加载同一个Class文件,所得的类是相同的解析:A选项错误,ClassLoad...转载 2019-03-06 15:30:01 · 1229 阅读 · 0 评论 -
Spring-JavaConfig与常见Annotation
一、JavaConfig我们知道bean是Spring IOC中非常核心的概念,Spring容器负责bean的生命周期的管理。在最初,Spring使用XML配置文件的方式来描述bean的定义以及相互间的依赖关系,但随着Spring的发展,越来越多的人对这种方式表示不满,因为Spring项目的所有业务类均以bean的形式配置在XML文件中,造成了大量的XML文件,使项目变得复杂且难以管理。后...转载 2019-03-05 11:24:32 · 359 阅读 · 0 评论 -
Spring-SpringFactoriesLoader详解
JVM提供了3种类加载器:BootstrapClassLoader、ExtClassLoader、AppClassLoader分别加载Java核心类库、扩展类库以及应用的类路径(CLASSPATH)下的类库。JVM通过双亲委派模型进行类的加载,我们也可以通过继承java.lang.classloader实现自己的类加载器。何为双亲委派模型?当一个类加载器收到类加载任务时,会先交给自己的父加载器...转载 2019-03-05 13:00:17 · 1599 阅读 · 0 评论 -
Spring-Spring容器的事件监听机制
过去,事件监听机制多用于图形界面编程,比如:点击按钮、在文本框输入内容等操作被称为事件,而当事件触发时,应用程序作出一定的响应则表示应用监听了这个事件,而在服务器端,事件的监听机制更多的用于异步通知以及监控和异常处理。Java提供了实现事件监听机制的两个基础类:自定义事件类型扩展自java.util.EventObject、事件的监听器扩展自java.util.EventListener。来看一个...转载 2019-03-05 15:55:18 · 529 阅读 · 0 评论 -
Spring-Spring中的aware接口
Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的。Awareaware,翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义。Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的。即你可以将你的容器替换成别的容器,例如Goggle Guice,这时Bean之间的耦合度很低。但...转载 2019-03-06 13:22:45 · 402 阅读 · 0 评论 -
Spring Boot-自动配置原理
典型的Spring Boot应用的启动类一般均位于src/main/java根路径下,比如MoonApplication类:@SpringBootApplicationpublic class MoonApplication { public static void main(String[] args) { SpringApplication.run(MoonA...转载 2019-03-06 13:58:02 · 326 阅读 · 0 评论 -
Spring Boot-Spring Boot应用启动
一、SpringApplication初始化SpringBoot整个启动流程分为两个步骤:初始化一个SpringApplication对象、执行该对象的run方法。看下SpringApplication的初始化流程,SpringApplication的构造方法中调用initialize(Object[] sources)方法,其代码如下:private void initialize(O...转载 2019-03-06 15:03:45 · 303 阅读 · 0 评论 -
Java-类加载器
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用...转载 2019-03-06 17:31:32 · 260 阅读 · 0 评论 -
Spring Boot-介绍
一、什么是Spring Boot?Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring Boot提供了各种组件的启动器(starters),开发者只要能配置好对应组件参数,Spring Boot 就会自动配置,让开发者能快速搭建依赖于 Spring 组...转载 2019-03-04 16:12:16 · 379 阅读 · 0 评论 -
Spring-容器扩展机制
IoC容器负责管理容器中所有bean的生命周期,而在bean生命周期的不同阶段,Spring提供了不同的扩展点来改变bean的命运。在容器的启动阶段,BeanFactoryPostProcessor允许我们在容器实例化相应对象之前,对注册到容器的BeanDefinition所保存的信息做一些额外的操作,比如修改bean定义的某些属性或者增加其他信息等。如果要自定义扩展类,通常需要实现org.s...转载 2019-03-04 17:16:30 · 1214 阅读 · 0 评论 -
JAVA-幂等性(一):http幂等性
一、什么是幂等性?什么是幂等操作?幂等:是一个数学概念,表示N次变换和1次变换的结果相同。幂等操作:其特点是任意多次执行所产生的影响均与一次执行的影响相同(不会改变资源状态,对数据没有副作用)。幂等性:一系列操作都是幂等操作。幂等接口:幂等接口认为,外部调用者会存在多次调用的场景,为了防止重试对数据状态的改变,需要将接口的设计为幂等的HTTP方法的幂等性是指一次和多次请求某一个...转载 2019-03-07 11:08:51 · 5118 阅读 · 0 评论 -
Java中clone()与new的区别
区别:(1)在java中clone()与new都能创建对象。(2)clone()不会调用构造方法;new会调用构造方法。(3)clone()能快速创建一个已有对象的副本,即创建对象并且将已有对象中所有属性值克隆;new只能在JVM中申请一个空的内存区域,对象的属性值要通过构造方法赋值。注意:(1)使用clone()类必须实现java.lang.Cloneable接口并重写Obj...转载 2019-03-14 15:07:41 · 859 阅读 · 0 评论 -
JAVA-Java概述
1、软件开发 软件 按照特定顺序组织的计算机数据和指令的集合 开发 软件的制作过程 软件开发 借助开发工具与计算机语言制作软件 2、计算机语言 人与计算机之间进行信息交流沟通的一种特殊语言原创 2016-04-24 08:16:31 · 274 阅读 · 0 评论