java基础
单纯的玩玩
这人很懒
展开
-
高并发之抢红包实战
抢红包实战文章目录抢红包实战整体架构发红包流程抢红包流程二倍均值算法数据库表的设计发红包自测抢红包自测jmeter高并发压测高并发下的优化(待续)整体架构整体业务主要包括发红包,抢红包和点红包其整体架构如图所示:发红包流程发红包如微信,输入红包个数和金额,生成红包,之后就能抢红包了抢红包流程当在群里看到红包图案开始抢红包流程,开始判断账号合法性,如通过则从缓存中判定红包个数是否大于0,如果小于0,则表示红包被抢光了;否则表示缓存中有红包,可以抢然后是拆红包,从缓存中随机弹出一个金额,如果原创 2020-11-09 23:20:39 · 950 阅读 · 0 评论 -
JVM3:实战:内存分配与回收策略
实战:内存分配与回收策略对象优先在Eden分配试分配三个2MB大小和一个4MB大小的对象,在运行时通过-Xms20M、-Xmx20M、-Xmn10M这三个参数限制了Java堆大小为20MB,不可扩展,其中10MB分配给新生代,剩下的10MB分配给老年代。-XX:Survivor-Ratio=8决定了新生代中Eden区与一个Survivor区的空间比例是8∶1,从输出的结果也清晰地看到“eden space 8192K、from space 1024K、tospace 1024K”的信息,新生代总可用空间原创 2020-11-03 23:05:25 · 141 阅读 · 0 评论 -
JVM2:垃圾收集器与内存分配策略
垃圾收集器与内存分配策略文章目录垃圾收集器与内存分配策略对象回收引用计数算法可达性分析算法四种引用类型生存与死亡回收方法区垃圾收集算法标记清除法复制算法标记-整理算法HotSpot的算法细节实现根节点枚举安全点安全区域记忆集写屏障并发的可达性分析经典的垃圾收集器Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器Garbage First收集器(G1收集器)对象回收引用计数算法在对象中添加一个引用计数器,每当原创 2020-11-02 22:13:28 · 85 阅读 · 0 评论 -
JVM1:Java内存区域
Java内存区域文章目录Java内存区域运行时数据区程序计数器Java虚拟机栈Java堆方法区运行时常量池直接内存HotSpot虚拟机对象探秘对象的创建对象的内存布局对象的访问定位为什么使用元空间替换永久代OutOfMemoryError异常方法区/常量池OutOfMemoryError此文档基本上是参考周志明老师的深入理解JVM虚拟机第三版运行时数据区Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如图所示。程序计数器程序计数器(Program Counter Register原创 2020-10-31 18:21:47 · 117 阅读 · 1 评论 -
JUC多线程理解
JUC多线程及高并发文章目录JUC多线程及高并发一、请你谈谈对volatile的理解1、volatile是java虚拟机提供的轻量级的同步机制2、JMM(java内存模型)3、你在那些地方用过volatile二、CAS你知道吗1、compareAndSet----比较并交换2、CAS底层原理?对Unsafe的理解3、CAS缺点三、原子类AtomicInteger的ABA问题?原子更新引用?1、ABA如何产生2、如何解决?原子引用3、时间戳的原子引用四、我们知道ArrayList是线程不安全的,请编写一个不原创 2020-10-29 19:37:29 · 178 阅读 · 0 评论 -
LockSuport原理
LockSuport文章目录LockSuport1. 几种让线程等待和唤醒的方法Object类中的wait和notify方法实现线程等待和唤醒:Condition接口中的await后signal方法实现线程的等待和唤醒LockSupport类中的park等待和unpark唤醒源码分析1. 几种让线程等待和唤醒的方法方式1: 使用Object中的wait()方法让线程等待, 使用Object中的notify()方法唤醒线程方式2: 使用JUC包中Condition的await()方法让线程等待,使原创 2020-10-29 19:25:57 · 335 阅读 · 0 评论 -
AbstractQueuedSynchronizer(AQS)详解
AbstractQueuedSynchronizer(AQS)详解文章目录AbstractQueuedSynchronizer(AQS)详解什么是AQSAQS初步**AQS自身有:state+CLH**内部类NodeAQS内部基本结构ReentrantLock解读AQS模拟抢锁(非公平锁)A线程抢锁成功过程B线程抢锁失败A线程释放锁B线程抢锁成功更新队列什么是AQS是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石, 通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个in原创 2020-10-29 18:07:50 · 90 阅读 · 0 评论 -
java8-Stream流
一 创建Streampackage stream;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.stream.Stream;import org.junit.Test;import com.dhy.boot.Employee;/** ...原创 2019-07-12 11:39:45 · 150 阅读 · 0 评论 -
java基础——方法参数(值传递和引用传递)
本文参考java核心卷1首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。按 值调用(call by value)表示方法接收的是调用者提供的值。而按引用调用(call by reference) 表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值,而 不能修改传递值调用所对应的变量值。“按……调用”(call by)是一个标准的计算机科学术语...原创 2019-07-08 16:51:24 · 3284 阅读 · 0 评论