二叉树的迭代遍历
前序遍历123456789101112131415161718class Solution { public List<Integer> preorderTraversal(TreeNode root) { if (root == null) return new ArrayList<>(); List<Integer> res = new ArrayList<>(); Deque<TreeNode> stack = new LinkedList<>(); stack.addLast(root); while (!stack.isEmpty()) { TreeNode cur = stack.removeLast(); res.add(cur.val); //先遍历左子树,所以右子树先进栈 if (cur.right != ...
牛客编码IO工具
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071import java.io.*;// 本地测试和牛客提交代码一致,无须修改相关public class Main { static BufferedReader reader = getReader(); //初始化流 static BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { //此处使用核心函数进行用例测试 close(); //释放流资源 } /** * 核心函数:题目的核心逻辑 ...
Hexo搭建相关
Butterfly官方文档安装文档二安装文档三
文章锚点设置
安装文档四美化特效打字效果网站背景1234# Website Background (設置網站背景)# can set it to color or image (可設置圖片 或者 顔色)# The formal of image: url(http://xxxxxx.com/xxx.jpg)background: url(https://humgimg.oss-cn-hangzhou.aliyuncs.com/img/20210505155803.png)
鼠标点击效果页面美化12345beautify: enable: true field: site # site/post title-prefix-icon: '\f0c1' title-prefix-icon-color: '#F47466'
网站副标题
页面加载动画
其他分类页-设置子目录12345678910title: 二叉树的迭代遍历date: 2021-05-05 20:24:53tags: ...
Java内存模型以及happens-before规则
https://juejin.cn/post/6844903600318054413
JMM屏蔽了不同的硬件和操作系统间的内存访问差异,以实现Java程序在不同的平台下能达到一致的内存访问效果。
内存模型抽象模型出现线程安全的问题一般是因为主内存和工作内存数据不一致性和重排序导致的
在并发编程中主要需要解决两个问题:
1. 线程之间如何通信;
2.线程之间如何完成同步(这里的线程指的是并发执行的活动实体)
通信是指线程之间以何种机制来交换信息,主要有两种:共享内存和消息传递。这里,可以分别类比上面的两个举例。java内存模型是共享内存的并发模型,线程之间主要通过读-写共享变量来完成隐式通信。如果程序员不能理解Java的共享内存模型在编写并发程序时一定会遇到各种各样关于内存可见性的问题。
1.哪些是共享变量
在java程序中所有实例域,静态域和数组元素都是放在堆内存中(所有线程均可访问到,是可以共享的),而局部变量,方法定义参数和异常处理器参数不会在线程间共享。共享数据会出现线程安全的问题,而非共享数据不会出现线程安全的问题。关于JVM运行时内存区域在后面的文章会讲到。
2.J ...