
java
文章平均质量分 82
小手冰凉呀
这个作者很懒,什么都没留下…
展开
-
死锁
1.什么是死锁?package com.ljh2.test;/** * @author liang_jiang_hao * @date 2021/3/30 */public class test2 { Object obj1=new Object(); Object obj2=new Object(); public static void main(String[] args) throws InterruptedException { test2 t原创 2021-03-30 23:07:01 · 242 阅读 · 0 评论 -
运行时数据区与
jvm运行时数据区域包括堆,本地方法栈,虚拟机栈,程序计数器,方法区,其中堆内存和方法区是线程共享的,虚拟机栈,本地方法栈,程序计数器是线程私有的。1.程序计数器:程序计数器是一块较小的内存空间,它的作用相当于是当前线程执行到字节码的行号指示器,确定下一条需要执行的字节码指令。Java的多线程是通过轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器只会处理一个线程所执行的指令。为了线程切换后能够回到上次执行的位置,每个线程需要一个独立的程序计数器,各个线程之间的计数器互不影响如果原创 2021-03-08 15:31:26 · 141 阅读 · 0 评论 -
内存屏障
什么是内存屏障(Memory Barrier)?内存屏障(memory barrier)是一个CPU指令。内存屏障有两个作用:阻止屏障两侧的指令重排序;强制把写缓冲区/高速缓存中的脏数据等写回主内存,让缓存中相应的数据失效。编译器和CPU可以在保证输出结果一样的情况下对指令重排序,使性能得到优化。插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执行,后于这个命令的必须后执行。内存屏障另一个作用是强制更新一次不同CPU的缓存。例如,一个写屏障会把这个屏障前写入的数据刷新到缓存,原创 2021-02-28 17:23:18 · 1150 阅读 · 0 评论 -
volatile关键字
java中volatile关键字的作用一.内存模型的相关概念大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是,当程序在运行过程中,会将运算需要的数原创 2021-02-28 17:22:26 · 99 阅读 · 0 评论 -
Eureka
1 Eureka简介 Eureka是Netflix的一个子模块,也是核心模块之一。 Eureka是一项基于REST(代表性状态转移)的服务。主要在AWS云中用于查找服务,以实现负载均衡和中间层服务器的故障转移。 SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现于注册,只需要使用服务的标识符, 就可以访问到服务,而不需要修改服务的配置文件了。功能类似于Dubbo的注册原创 2021-02-26 10:18:10 · 288 阅读 · 0 评论 -
Lombok
Lombok简介Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github地址:https://github.com/rzwitserloot/lombok。注解介绍下面只是介绍了几个常用的注解,更多的请参见https://projectlombok.org/features/index.html。@Data@Data注解在原创 2021-01-27 10:58:53 · 216 阅读 · 0 评论 -
Thread
/* 在某个线程中创建一个新线程,新线程的优先级和创建新线程的线程一致,如果创建线程是守护线程的话,则新线程 是守护线程。 当Java虚拟机启动时,通常有一个非守护线程(即main线程,调用指定类的main方法),Java虚拟机会继续执行这些线程 直到发生如下情形之一: · 调用了类Runtime的exit()方法,并且安全管理器允许发生退出操作。 · 所有非守护线程均已死亡,可以是通过执行完run方法后返回,也可以是执行run方法时抛出了异原创 2021-01-19 13:35:54 · 268 阅读 · 0 评论 -
ThreadLocal
ThreadLocal简介: 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般会在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一个ThreadLocal原创 2021-01-19 13:31:08 · 197 阅读 · 0 评论 -
Reference 类
Reference 引用对象的抽象类直接子类: PhantomReference(虚引用) 、WeakReference(弱引用)、SoftReference(软引用)。package java.lang.ref;import sun.misc.Cleaner;import sun.misc.JavaLangRefAccess;import sun.misc.SharedSecrets;/** * 引用对象的抽象基类。该类定义了所有引用对象共同的操作。 由于引用对象与垃圾收集原创 2021-01-08 16:22:44 · 938 阅读 · 1 评论 -
Java对象生命周期
Java对象生命周期大致可以分为7个阶段:创建阶段(Created)应用阶段(In Use)不可见阶段(Invisible)不可到达阶段(Unreachable)可收集阶段(Collected)终结阶段(Finalized)释放阶段(De-allocated)1.创建阶段(Created) JVM 加载类的class文件 此时所有的static变量和static代码块将被执行 加载完成后,对局部变量进行赋值(先父后子的顺序) 再执行new方法 调用构造函原创 2021-01-06 14:48:21 · 703 阅读 · 0 评论 -
基本数据类型
名称封装类默认赋值占用字节位数范围booleanfalse11bittrue、falsechar0116bit0 ~ 2 ^ 16 - 1byte028bit-2 ^7~2 ^7-1short0216bit-2 ^15~2 ^15-1int0432bit-2 ^31~2 ^31-1long0864bit-2 ^63~2 ^63-1float0.0432bit大约:3.40E38~~1.4E-...原创 2020-12-28 15:09:40 · 302 阅读 · 2 评论 -
位移操作符
java的运算符,分为四类:算术运算符 + - * / % ++ –关系运算符 == != > >= < <=逻辑运算符 && || ! & | ^位运算符 & | ~ ^ >> << >>>逻辑运算符public static void main(String args[]) { int a = 1, b = 3; if (a =原创 2020-12-28 15:08:33 · 229 阅读 · 0 评论 -
Thread构造方法与启动
线程类一共有八种构造方法 public Thread() { init(null, null, "Thread-" + nextThreadNum(), 0); } public Thread(Runnable target) { init(null, target, "Thread-" + nextThreadNum(), 0); } public Thread(ThreadGroup group, Runnable targe原创 2020-12-03 18:21:03 · 249 阅读 · 0 评论 -
String类型长度限制问题
对于字符串可以承受的最大长度,要分为2个阶段,一个是编译时期(也就是你代码定义了一个String字符串,String s= “xiaofang”),一个是运行时期(指在程序运行过程中)编译期String字符串的限制我们都知道JVM里面是包含常量池的,(是一种对字符串的性能优化,不用反复创建新的字符串了)当我们使用字符串字面量直接定义String的时候,是会把字符串在常量池中存储一份的。常量池中的每一项常量都是一个表,都有自己对应的类型。Java中的UTF-8编码的Unicode字符串在常量池中以CONS原创 2020-12-03 18:19:37 · 4886 阅读 · 0 评论 -
LinkedList
LinkedList是一个以双向链表实现的List,它除了作为List使用,还可以作为队列或者堆栈使用。LinkedList继承关系LinkedList是一个继承于AbstractAequentialList的双向链表 。它也可以被当做堆栈、队列或双端队列进行使用 。LinkedList实现了List接口,能让他进行队列操作。LinkedList实现了Deque接口,能让它当作双端队列来使用。LinkedList实现了Cloneable接口,即覆盖了方法clone(),能被克隆。原创 2020-11-25 16:23:19 · 184 阅读 · 0 评论 -
java入门1
一、区分jre和jdk jre:Java runtime environment,Java运行时环境。 其中包含了运行一个Java程序所需要的基本类库,以及最重要的平台jvm(Java虚拟机) 无论在什么设备上面,只要需要运行Java程序,就必须要有jre jdk:Java Development Kit,Java开发工具包。 jdk中包含了一系列开发Java程序所需要的一系列工具,例如:java.exe,javac.exe, javap.exe(反编译工具) ,jar.原创 2020-10-22 08:51:18 · 145 阅读 · 0 评论