自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cgg

  • 博客(15)
  • 收藏
  • 关注

转载 并发编程09_并发安全

什么是线程安全性,怎么才能做到线程安全? 看看大神的总结 保证线程安全有哪些手段_大将黄猿的博客-CSDN博客_哪些可以保证线程安全 线程不安全的原因: Java线程不安全的原因_大将黄猿的博客-CSDN博客_java线程不安全的原因 等我后面通读了大神的博客后再自己总结. ...

2022-03-29 23:57:06 91

转载 并发编程8_线程池

阻塞队列: ArrayBlockQueue和LinkedBlockQueue的区别: 两者在锁上有区别 ArrayBlockQueue的生产者和消费者公用同一把锁 ,并且初始化时要制定容量大小,并且ArrayBlockQueue的数据结构是数组. LinkedBlockQueue的生产者和消费者用的不同的锁, LinkedBlockQueue的数据结构是链表 跳表 其实跳表应该放在ConcurrentHashMap里的, 依旧先上大神博客链接,后续我再借鉴整理 一文搞定跳表 线程池 为

2022-03-29 00:25:21 84

转载 并发编程07_并发容器_ConcurrentHashMap01

Hash: 一般翻译做"散列”,也有直接音译为"哈希的,就是把任意长度的输入(又叫做预映射pre-image )通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。常用HASH函数:直接取余法、乘法取整法、平方取中法。 Hash的优点: 先分类再查找,通过计算缩小范围,加快查找速度。 Hash

2022-03-27 00:45:52 312

转载 并发编程05_Lock/AQS

Lock没啥好说的,个个大神都写烂的东西,直接上链接:显式锁Lock的集大成之作,最细节教程_大将黄猿的博客-CSDN博客 CLH:AQS的前菜—详解CLH队列锁_大将黄猿的博客-CSDN博客_aqs中的clh队列 AQS:最硬核的AQS解析,你啃的下来么?_大将黄猿的博客-CSDN博客 今天因为电脑的原因,只能直接上大神的博客链接了,以后会借鉴大神的经验来完善我的博客的。这三个博客的作者依旧是大神: 大将黄猿。 每一篇都是精品,看完深有启发。 ...

2022-03-21 00:46:50 84

原创 并发编程04_CAS

CyclicBarrier: CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier) 她的作用是使一个线程在到达屏障时被屏障阻拦进入阻塞状态,直到最后一个线程也到达屏障,这时屏障消失,所有被阻塞的的线程一起运行. CyclicBarrier可以用于多线程计算数据,最后合并计算结果的场景。 构造方法: public CyclicBarrier(int parties) 方法: 明确突破屏障需要的线程数,它其实就是下面的构造方法但是BarrierActi..

2022-03-20 01:13:18 219

原创 并发编程03_Fork/Join

等待超时模式 开发人员经常会遇到这样的方法调用场景:调用一个方法时等待一段时间(一般来说是给定一个时间段),如果该方法能够在给定的时间段之内得到结果,那么将结果立刻返回,反之,超时返回默认结果。等待/通知的经典范式,即加锁、条件循环和处理逻辑3个步骤,而这种范式无法做到超时等待。而超时等待的加入,只需要对经典范式做出非常小的改动,改动内容如下所示。假设超时时间段是T,那么可以推断出在当前时间System.currentTimeMillis()+t之后就会超时定义如下变量。 /*获取*/ //

2022-03-18 22:14:48 192

原创 并发编程02_ThreadLocal

今天的重点是ThreadLocal,我看完视频却还是觉得自己理解的不是很清楚,于是我找到了这位大神的博客,写的非常仔细,细节拉满,内容也是诙谐轻松,并且很清晰明了。看完之后我对ThreadLocal的理解一下子提升非常多。 附上链接https://blog.csdn.net/weixin_47184173/article/details/111992933 还有一些视频中有提起的有关JVM的知识: 引用的四种类型: 强引用StrongReference: 当我们new一个对象时,比如Obj..

2022-03-18 00:30:20 727

原创 并发编程01_多线程基础

我的网课的学习笔记总结

2022-03-17 00:31:03 361

转载 JVM内存区域以及程序运行时数据在内存中的变化

JVM内存区域 JVM运行时数据区 定义: JVM在执行JAVA程序的时候会把它所管理的区域划分为若干个不同的虚拟区域进行管理. JAVA引以为豪的就是他的自动化内存管理机制. 相比于C++的手动管理以及难以理解的指针来说, JAVA程序写起来就方便很多. 所以要深入理解JVM就要先深入理解内存虚拟化的概念. 在JVM中, 内存主要划分为堆, 栈, 方法区. 同时以线程的角度来划分也可以划分为线程私有区与线程共享区. 线程私有区: 单独的一个线程对应单独的一片区域. 线程与线程之间互不打扰.

2022-01-04 22:01:09 450

转载 从历史了解JVM,以及JVM的学习方向

JVM从编译到执行 JAVA程序执行过程: 一个Java程序, 首先经过编译成class文件, 然后JVM将其加载到方法区. 执行引擎会执行这些字节码文件. 执行时,会翻译成操作系统相关的函数. JVM作为翻译 .class 文件的存在. 输入字节码, 调用操作系统函数. 过程:JAVA文件==>编译器==>字节码==>机器码. JVM全程JAVA Virtual Machine, 也就是我们常说的Java虚拟机. 虚拟机只识别class文件,.并且可以把class文件解析成机

2022-01-04 16:03:42 91

原创 Java内存处理流程

执行流程图 第一步:JVM申请内存 堆30m,元空间30m,(隐藏)虚拟机栈1m等。此内存向操作系统申请。 第二步:初始化运行时数据区 当JVM启动时,方法区和堆先出来。因为此两个区域与运行无关。虚拟机栈当运行需要时申请。 第三步:类加载 (1)此时我们程序中自己写的类(JVMObject.class,Teacher.class),以及jre自带(Math.class)的类开始加载进入方法区 (2)静态变量与常量也会进入方法区(MAN_TYPE,WOMAN_TYPE) 第四步:执行方法

2022-01-04 00:03:34 875

原创 深入理解JVM内存区域 笔记

java的内存处理流程: 第一步:JVM申请内存 第二步:初始化运行时数据区 第三步:类加载 第四步:执行方法 第五步:创建对象 GC概念 Java中GC会自动回收堆中的垃圾 可以主动触发垃圾回收:System.gc(),非常影响性能,不推荐 内存可视化工具HSDB HSDB,jdk下的一个检测jvm运行时的可视化工具。 可以查看堆信息,如查看堆中对象的地址 也可以查看栈信息,如查看局部变量表. JVM对栈的优化技术: 当形参(局部变量表)和实参(操作数栈)进行值

2022-01-03 23:58:50 73

原创 JVM笔记

JVM 是一个虚拟化的操作系统,类似于 Linux 或者 Windows 的操作系统,只是它架在操作系统上,接收字节码也就是 class,把字节码翻译成操作系统上的 机器码且进行执行。 过程如下:Java 文件->编译器>字节码->JVM->机器码。 个人理解就相当于在操作系统中嵌套了一个专门用来识别class字节码的操作系统. 我们的操作系统分为CPU+缓存+ 主内存. CPU来计算, 缓存从主内存中提取资源并传给CPU. JVM 分为 执行引擎+操作数栈+栈堆, ..

2022-01-02 23:37:44 469

原创 Tomcat笔记

一. 网络协议包: 在互联网通信过程中, 网络传输资源都是二进制形式的, 接收方需要在接收完毕后一次性解析完毕.但是因为传递信息数量庞大, 增加了接收方解析难度, 所以用到了网络协议包 网络协议包: 一组有规律的二进制数据, 网络协议包中内置了固定空间, 固定空间专门用来存放指定资源, 降低接收方解析难度. Http网络协议包是B/S通讯结构唯一的网络协议包,在B/S通讯结构中所有的请求和接受数据都是用过Http网络协议包进行传递的. 二. Http网络协议包分类: 1. Http请求协议包:

2021-12-31 20:42:35 1268

转载 Java——类变量和实例变量的区别

成员变量:把类内、方法体外定义的变量称为成员变量。 Java中的成员变量分为两种: 一是没有static修饰的,这些成员变量是对象中的成员,称为实例变量。 二是有static修饰的,称为类变量(静态变量)。 静态变量(类变量)具备以下特点: 随着类的加载而加载 优先于对象存在 被所有对象所共享 可以直接被类名调用 类变量和实例变量的区别是: 1,存放位置。 类变量随着类的加载而存在于方法区中。 实例变量随着对象的建立而存在于堆内存中。 2,生命周期: 类变量生命周期最长,随着类的.

2021-08-07 12:57:25 342

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除