![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机软件
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 · 469 阅读 · 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 · 91 阅读 · 0 评论 -
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 · 1238 阅读 · 0 评论 -
JAVA-幂等性(二):高并发的系统如何保证幂等性
转载自:https://www.cnblogs.com/geyifan/p/6128425.html一、什么是幂等性幂等概念来自数学,表示N次变换和1次变换的结果是相同的。这里讨论在某些场景下,客户端在调用服务没有达到预期结果时,会进行多次调用,为避免多次重复的调用对服务资源产生副作用,服务提供者会承诺满足幂等。HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应...转载 2019-03-07 14:27:29 · 18562 阅读 · 2 评论 -
Redis-介绍
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制...转载 2019-03-12 14:17:59 · 159 阅读 · 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 · 149 阅读 · 0 评论 -
List与set集合,Map集合的区别以及它们的实现类有哪些?
List 是可重复集合,Set 是不可重复集合,这两个接口都实现了 Collection 父接口。Map 未继承 Collection,而是独立的接口,Map 是一种把键对象和值对象进行映射的集合,它的每一个元素都包含了一对键对象和值对象,Map 中存储的数据是没有顺序的, 其 key 是不能重复的,它的值是可以有重复的。List 的实现类有 ArrayList,Vector 和 Link...转载 2019-05-21 13:29:38 · 3279 阅读 · 0 评论 -
JAVA中逻辑运算符“|”和“&”与“||”和“&&”的用法
1.使用规则:(1)& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false b、无论第一个判断条件是否成立,逻辑运算符前后两个条件都会进行判断(2)&& 可以用作逻辑与的运算符,表示逻辑与(and) a、当运算...转载 2019-05-21 16:06:17 · 894 阅读 · 0 评论 -
Docker
Docker的应用场景 Web 应用的自动化打包和发布。 自动化测试和持续集成、发布。 在服务型环境中部署和调整数据库或其他的后台应用。 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。 Docker 的优点 1、简化程序: Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后...转载 2019-05-22 10:15:29 · 97 阅读 · 0 评论 -
JVM运行时区域详解
我们知道的JVM内存区域有:堆和栈,这是一种泛的分法,也是按运行时区域的一种分法,堆是所有线程共享的一块区域,而栈是线程隔离的,每个线程互不共享。线程不共享区域每个线程的数据区域包括程序计数器、虚拟机栈和本地方法栈,它们都是在新线程创建时才创建的。程序计数器(Program Counter Rerister)程序计数器区域一块内存较小的区域,它用于存储线程的每个执行指令,...转载 2019-06-05 10:35:08 · 115 阅读 · 0 评论 -
深入浅出 Java 中 JVM 内存管理
Java岗位面试,JVM是对程序员基本功考察,通常会问你对JVM了解吗?可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义 | 有哪些GC算法 以及年轻代和老年代各自特点等等。1) JVM内存划分:① 方法区 (线程共享) 常量 静态变量 JIT(即时编译器)编译后代码也在方法区存放② 堆内存(线程共享) 垃圾回收的主要场地③...转载 2019-06-05 13:06:04 · 121 阅读 · 0 评论 -
【设计模式学习】一、简介
1、什么是设计模式设计模式是指在软件开发中,经过验证的,用于解决在特定环境下、重复出现的、特定问题的解决方案。2、如何学习设计模式准确理解每个设计模式的功能、基本结构、标准实现,了解适合使用它的场景及使用的效果 实际的开发中,尝试着使用这些设计模式,并反复思考和总结是否使用得当,是否需要做一些变化 再回头去看设计模式的理论,有了实际的模式应用经验再看设计模式,会有不同的感悟,一边看...转载 2019-06-03 11:16:32 · 117 阅读 · 0 评论 -
JVM 与 Linux 的内存关系详解
在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用 了),如下图所示。由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存究竟去哪儿了?...转载 2019-06-05 09:48:13 · 168 阅读 · 0 评论 -
分布式
要点:数据一致性 在任意时间、任意位置看到的同一个事物是完全一致的。 对不同级别的一致性汇总概述如下: 共识 一致性问题是结果,共识是为达到这个结果所要经过的过程,或者说一种手段。 想要更严谨的一致性,那么就需要增加相互通讯确认的次数,但是这会导致性能低下,正如PBFT和Paxos一样。但是分布式系统就是这样,到处都需要Balance,找到最适合的才是最重要的。 事务...转载 2019-06-17 14:16:07 · 278 阅读 · 0 评论 -
JAVA面试-JAVA基础知识
1. 面向对象和面向过程的区别面向过程 优点:性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发 缺点:没有面向对象易维护、易复用、易扩展 面向对象 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵...转载 2019-06-17 15:02:05 · 306 阅读 · 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 · 806 阅读 · 0 评论 -
JAVA-幂等性(一):http幂等性
一、什么是幂等性?什么是幂等操作?幂等:是一个数学概念,表示N次变换和1次变换的结果相同。幂等操作:其特点是任意多次执行所产生的影响均与一次执行的影响相同(不会改变资源状态,对数据没有副作用)。幂等性:一系列操作都是幂等操作。幂等接口:幂等接口认为,外部调用者会存在多次调用的场景,为了防止重试对数据状态的改变,需要将接口的设计为幂等的HTTP方法的幂等性是指一次和多次请求某一个...转载 2019-03-07 11:08:51 · 5037 阅读 · 0 评论 -
oracle 存储过程的基本语法
1.基本结构CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGINEND 存储过程名字2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条...转载 2019-03-14 14:01:54 · 199 阅读 · 0 评论 -
JAVA-Java基础语法
1、关键字 1.关键字概述 被Java语言赋予特定含义的单词 2.关键字特点 组成关键字的字母全部小写 3.关键字注意事项 goto和const作为保留字存在,目前并不使用 2、标识符 1.标识原创 2016-04-24 08:52:25 · 224 阅读 · 0 评论 -
JAVA-面向对象
1、面向对象思想 1.面向对象思想概述 面向对象是基于面向过程的编程思想 2.面向对象思想特点 是一种更符合我们思想习惯的思想 可以将复杂的事情简单化 将我们从执行者变成了指挥者原创 2016-04-24 09:07:02 · 320 阅读 · 0 评论 -
JAVA-Eclipse
1、Java开发常见工具介绍 A:操作系统自带的记事本软件 B:高级记事本软件 C:集成开发环境 IDE (Integrated Development Environment) 2、Eclipse和MyEclipse介绍 Eclipse是一种可扩展的开放源代码的IDE。原创 2016-04-24 09:11:23 · 316 阅读 · 0 评论 -
Java-ClassLoader 知识
下面给出的Java中ClassLoader中的描述,哪些描述是正确的?( )A.ClassLoader没有层次关系B.所有类中的ClassLoader都是AppClassLoaderC.通过Class.forName(StringclassName),能够动态加载一个类D.不同的ClassLoader加载同一个Class文件,所得的类是相同的解析:A选项错误,ClassLoad...转载 2019-03-06 15:30:01 · 1097 阅读 · 0 评论 -
Spring-JavaConfig与常见Annotation
一、JavaConfig我们知道bean是Spring IOC中非常核心的概念,Spring容器负责bean的生命周期的管理。在最初,Spring使用XML配置文件的方式来描述bean的定义以及相互间的依赖关系,但随着Spring的发展,越来越多的人对这种方式表示不满,因为Spring项目的所有业务类均以bean的形式配置在XML文件中,造成了大量的XML文件,使项目变得复杂且难以管理。后...转载 2019-03-05 11:24:32 · 302 阅读 · 0 评论 -
Spring-SpringFactoriesLoader详解
JVM提供了3种类加载器:BootstrapClassLoader、ExtClassLoader、AppClassLoader分别加载Java核心类库、扩展类库以及应用的类路径(CLASSPATH)下的类库。JVM通过双亲委派模型进行类的加载,我们也可以通过继承java.lang.classloader实现自己的类加载器。何为双亲委派模型?当一个类加载器收到类加载任务时,会先交给自己的父加载器...转载 2019-03-05 13:00:17 · 1476 阅读 · 0 评论 -
Spring-Spring容器的事件监听机制
过去,事件监听机制多用于图形界面编程,比如:点击按钮、在文本框输入内容等操作被称为事件,而当事件触发时,应用程序作出一定的响应则表示应用监听了这个事件,而在服务器端,事件的监听机制更多的用于异步通知以及监控和异常处理。Java提供了实现事件监听机制的两个基础类:自定义事件类型扩展自java.util.EventObject、事件的监听器扩展自java.util.EventListener。来看一个...转载 2019-03-05 15:55:18 · 469 阅读 · 0 评论 -
Spring-Spring中的aware接口
Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的。Awareaware,翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义。Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的。即你可以将你的容器替换成别的容器,例如Goggle Guice,这时Bean之间的耦合度很低。但...转载 2019-03-06 13:22:45 · 345 阅读 · 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 · 288 阅读 · 0 评论 -
Spring Boot-Spring Boot应用启动
一、SpringApplication初始化SpringBoot整个启动流程分为两个步骤:初始化一个SpringApplication对象、执行该对象的run方法。看下SpringApplication的初始化流程,SpringApplication的构造方法中调用initialize(Object[] sources)方法,其代码如下:private void initialize(O...转载 2019-03-06 15:03:45 · 247 阅读 · 0 评论 -
Java-类加载器
类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用。一般来说,Java 应用...转载 2019-03-06 17:31:32 · 210 阅读 · 0 评论 -
Spring Boot-介绍
一、什么是Spring Boot?Spring Boot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。Spring Boot提供了各种组件的启动器(starters),开发者只要能配置好对应组件参数,Spring Boot 就会自动配置,让开发者能快速搭建依赖于 Spring 组...转载 2019-03-04 16:12:16 · 332 阅读 · 0 评论 -
[转]推荐:深入研究ITL阻塞与ITL死锁
1、什么是ITLITL(Interested Transaction List)是Oracle数据块内部的一个组成部分,用来记录该块所有发生的事务,一个itl可以看作是一个记录,在一个时间,可以记录一个事务(包括提交或者未提交事务)。当然,如果这个事务已经提交,那么这个itl的位置就可以被反复使用了,因为itl类似记录,所以,有的时候也叫itl槽位。如果一个事务一直没有提交,那么,这个事务将一...转载 2019-03-14 11:48:04 · 276 阅读 · 0 评论 -
Oracle序列
Oracle序列创建和使用 创建序列 语法 CREATE SEQUENCE 序列名 [相关参数] 参数说明 INCREMENT BY :序列变化的步进,负值表示递减。(默认1) START WITH:序列的初始值 。(默认1) MAXvalue:序列可生成的最大值。(默认不限制最大值,NOMAXVALUE)...转载 2019-03-14 13:55:40 · 140 阅读 · 0 评论 -
JAVA-Java概述
1、软件开发 软件 按照特定顺序组织的计算机数据和指令的集合 开发 软件的制作过程 软件开发 借助开发工具与计算机语言制作软件 2、计算机语言 人与计算机之间进行信息交流沟通的一种特殊语言原创 2016-04-24 08:16:31 · 235 阅读 · 0 评论