java使用synchronized和cas性能对比

摘要: 今天使用synchronized和java unsafe cas接口对比了下同一个操作下的的相关性能, 为后面多线程情况下使用synchronized同步阻塞方式或者是unsafe cas非阻塞做了一个参考。 测试用例: 启用多个线程进行计数相加到一亿,首先是synchronized方式; 计算类如 阅读全文
posted @ 2018-03-12 20:57 willowWind 阅读(3482) 评论(3) 推荐(4) 编辑

算法题之二叉树的锯齿形层次遍历

摘要: 题目描述:给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 解题思路: 1)这里可以先使用第一个栈来保存二叉树第一层扫描的结果,然后弹出结点, 2)接着按左右子节点存入第二个栈;接着依次弹出第二个栈结点,按着右左子节点存入第一个栈; 3)依照上面步骤依 阅读全文
posted @ 2018-02-27 21:11 willowWind 阅读(1323) 评论(0) 推荐(0) 编辑

数据结构之--冒泡排序算法及改进

摘要: 冒泡排序,是我们学习数据结构第一个排序算法,也是一种最常见和简单的排序算法。 排序原理: 我们把一个数组从左到右依次两两元素比较,比较完成一趟后,能确定最大(最小)值,放在最右边(最左边); 剩下的元素重复上述步骤,直到整个数组有序。 该算法时间复杂度一般为n2 。 java实现代码如下: 该算法有 阅读全文
posted @ 2017-08-12 21:18 willowWind 阅读(358) 评论(0) 推荐(0) 编辑

数据结构之--归并排序的实现

摘要: 归并排序,是一种稳定的排序,使用了分治的思想,把一个数组对半划分,分别排序,再合并为一个新的数组。 代码实现如下: 阅读全文
posted @ 2017-08-05 11:04 willowWind 阅读(259) 评论(0) 推荐(0) 编辑

数据结构之--快速排序的实现

摘要: 快速排序是一种常用的算法。 算法原理为选择一个基准数,把要排序的数组划分为两组,一边为小于该基准数,一边为大于该基准数;划分完成后可以得到一个部分有序的数组,接着在划分好的两边重复上述步骤,直到所有数据有序。 算法复杂度一般为 n*log2n。 下面为使用递归实现快排算法: 输出如下: beging 阅读全文
posted @ 2017-07-26 16:54 willowWind 阅读(185) 评论(0) 推荐(0) 编辑

数据结构之--通过数组实现队列

摘要: 自己动手通过数组实现了个线程不安全的队列 代码如下: 测试代码: 后续加入线程安全考虑 阅读全文
posted @ 2017-07-06 21:50 willowWind 阅读(169) 评论(0) 推荐(0) 编辑

JDK源码分析--HashMap

摘要: JDK源码分析之HashMap 阅读全文
posted @ 2017-05-31 22:29 willowWind 阅读(180) 评论(0) 推荐(0) 编辑