- 博客(6)
- 收藏
- 关注
原创 一种不到万不得已就绝不用的线程锁
没错,我说的就是静态类型的变量作为线程锁。我在lab6的Monkey对象设计的时候,给Monkey了一个静态的rep:ladders,用于存储所有梯子的信息。然后,在很多地方用了ladders作为线程锁来追求threadsafe,结果发现吞吐率很低。上课的时候特意讲了如果把静态类型的变量作为线程锁的话,相当于对整个类上锁,即一个对象线程拥有这把锁的时候,其他所有这类对象的线程都不能动(如果也要...
2019-06-23 21:40:52 172
原创 eclipse调试多线程程序时,一种发现死锁的方式。
在主线程中,等待所有线程结束的语句处,设置断点。运行debugger调试工具,并在提示是否切换到debugger界面时,选择switch。在右侧explorer中,全选所有线程,选择suspend。然后,依次点开所有线程,下面会显示一些关于此线程中线程锁的信息。比如:waiting for…:等待其它线程释放这个锁。owning…:正在拥有这个锁。若是两个线程一个waiting fo...
2019-06-19 09:25:51 574
原创 spotbugs遇到的一些问题以及解决办法举例
1.错误类型:错误原因:DLS问题指的是给本地变量赋了一个值,但随后的代码并没有用到这个值。删除死引用即可。修改前:修改后:2.错误类型:错误原因:未指定文件的编码和解码方式,这就导致在不同的机器上运行时可能会产生乱码现象。修改前:修改后:3.错误类型:错误原因:装箱和拆箱的问题,把一个字符串装箱,解析获取箱子中原始值。更有效率就是使用静态方法,parseXX...
2019-05-21 16:46:25 3951
原创 几种基本的摊还分析方法
1.聚合分析这种方法用来确定一个n个操作的序列的总代价的上界T(n)。因而每个操作的平均代价为T(n)/n。我们将平均代价作为每个操作的摊还代价,因此所有操作具有相同的摊还代价。聚集方法的目的• 分析平摊代价的上界分析方法• 分析操作序列中每个操作的代价上界ci• 求得操作序列的总代价的上界T(n)=c1+c2+…+cn• 将T(n)平摊到每个操作上得到平摊代价T(n)/n特点•...
2019-04-13 20:28:08 1208
原创 动态规划技术的基本要素 以及 矩阵链乘法典型问题
分治技术的问题子问题是相互独立的–如果子问题不是相互独立的,分治方法将重 复计算公共子问题,效率很低• 例如,计算斐波那契数列的第n项 – F(0)=F(1)=1 – F(n)=F(n-1)+F(n-2)分治技术的问题– 子问题是相互独立的– 如果子问题不是相互独立的,分治方法将重复计算公共子问题,效率很低• 分治算法 算法F(n)输入:非负整数n输出:斐波那契数列第n项1.I...
2019-03-24 14:59:48 226
原创 Java “···cannot be resolved”/“···cannot be resolved to a variable”问题解决方法参考
本人在使用eclipse IDE编写MIT软件构造lab1时,遇到了这两个问题。具体情况是我在两重for each循环中分别定义了两个String,结果在用这两个对象时,出现了标题上的这种情况。于是,我用eclipse自带的纠错功能,每个推荐的解决方法都试了一遍。发现最好的是:Create a field···仅供各位参考,具体问题还需具体分析。...
2019-03-11 14:00:55 3824 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人