- 博客(21)
- 资源 (3)
- 收藏
- 关注
原创 java cas底层源码学习
java cas深究问题:cas怎么保证共享变量是原子性的?1、demo演示cas demo代码:public class CasCounter { private volatile int count = 0; private static long offset; private static Unsafe unsafe; static { try { Field f = Unsafe.class.getDecl
2020-09-08 14:18:07
266
原创 【spring源码系列-0】spring源码下载、编译、debug
目录:零、资源准备及环境配置github链接:https://github.com/spring-projects/spring-framework一、二、三、问题1、CoroutinesUtils找不到该类Error:(354, 51) java: 找不到符号符号: 变量 CoroutinesUtils位置: 类 org.springframework.core.Reactiv...
2020-02-22 15:14:20
8122
8
原创 new String("abc")的详细流程
1.代码jdk版本是1.8.0_111代码如下:对Test4.class的代码执行javap命令,如下:执行后截图如下: 2.执行字节码指令的过程第0行:为str分配内存空间,并把该引用放到操作数栈中。第3行:复制操作数栈栈顶的元素,并放到操作数栈中。第4行:把指向常量池中引用(暂时为该引用命名为sym)放到操作数栈栈顶。第6行:...
2018-08-28 14:21:41
7596
原创 自己动手实现远程执行功能(深入理解java虚拟机)
书中的案例自己实现一遍,过程如下文具体是在eclipse中实现,整体截图如下:1.ByteUtils的代码如下:package org.jvm;/** * Bytes数组处理工具 */public class ByteUtils { public static int bytes2Int(byte[] b, int start, int len) { int sum = 0; i...
2018-07-13 12:54:35
1982
1
原创 用一个栈实现另一个栈的排序
题目:一个栈中元素的类型为整型,现在想将该栈从顶到底按从大到小的顺序排序,只许申请一个栈,除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?方法一:我用一个栈实现的,只有一个排序栈,和逆序一个栈思路一样,都是使用递归的方式记录局部变量,然后一个个压入栈中getMaxElement()方法的目的是获取栈中从栈底到栈顶方法遇见的第一个最大值,然后把该元素弹出,其他栈中元素相对位置不变...
2018-07-03 10:32:25
868
原创 如何仅用递归函数和栈操作逆序一个栈
/** * 如何仅用递归函数和栈操作逆序一个栈 * 题目: * 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1。 * 将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。 * @author GPJ * */ 方法一:既然是递归,第一反应是采用两个栈实现该功能实现,依次弹出栈顶元素,然后压入另外一个...
2018-06-26 16:42:26
1191
原创 自己编译jdk
使用的是vm虚拟机,在vmware虚拟机中搭建ubuntu系统,版本是16.04,如下: 1.依赖准备需要依赖的包如下:sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutils libm...
2018-06-04 18:42:26
3651
4
原创 贪婪算法简单总结
贪婪算法的简单总结:贪婪算法就是每步都采取最优的做法,也就是说每步都选择局部最优解,最终得到的就是全局最优解贪婪算法并非适用于任何情况,但它却易于实现有时候可以使用贪婪算法作为近似算法评价近似算法的优劣标准:1. 速度有多快。2. 得到的近似解与最优解的接近程度。 举例:集合覆盖问题,假设你办了个广播节目,要让全美50个州的听众都能收听到。为此你需要决定在哪些广播台播出,在每个广播台播出都需要支付...
2018-03-20 20:43:01
7651
原创 狄克斯特拉算法总结
狄克斯特拉算法的用途:用于在加权图中查找最短路径,但是只能使用在权重为正的图中,如果存在负权边,结果就会出现错误。(负权边可以使用贝尔曼-福德算法)狄克斯特拉算法的基本步骤:1.找出“最便宜”的节点,即可在最短时间内到达的节点。2.更新该节点的邻居的开销。3.重复这个过程,直到对图中的每个节点都这样做了。4.计算最终路径。解析基本步骤:1.从起点开始,比较所有(起点->起点的邻居)的最短距离...
2018-03-19 17:07:16
2805
原创 理解java.util.concurrent.atomic中的compareAndSet
今天在研究卷积神经网络的代码时看到多线程的问题,中间的compareAndSet方法不太理解,举例演示线程1和线程2在运行时,想只让线程1运行if语句,但是如果在someone从false到true过程中线程2也开始运行,那么很可能线程2也会进入if条件体里面,如下所示。示例1:package atomicboolean_test;public class visit impl
2017-04-24 11:55:10
5415
1
原创 求模和取余
取余:遵循让余数的绝对值最小的原则求模:遵循让商最小的原则示例: a=b*c+r 商:c=a/b 余数:r=a-b*c a=4,b=-3时 取余是余数最小原则,即r最小原则,c=-1,r=1,即4rem(-3)=1 求模是商最小原则,即c最小,c=-2,r=-2,即4mod(-3)=-2
2017-04-16 20:21:18
394
原创 ant配置
一.配置说明系统是win10,已配置java。安装的是apache-ant-1.9.9版本,下载地址是http://ant.apache.org/bindownload.cgi点击打开链接即是下图中选中的版本二.安装步骤选择我的电脑图标-->右键-->属性-->高级系统设置-->环境变量(N)...-->系统变量(S)-->选择 新建(W)... 按钮,在Pat
2017-02-26 15:50:57
512
30天自制操作系统光盘内容包含源码
2017-10-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人