Java
文章平均质量分 90
南yue
老掉牙的话,学无止境
展开
-
如何将Java项目生成.EXE可执行文件
1. 工具先电脑上需要安装以下工具备用:eclipse,jre,exe4j(网上可自由下载)。2 将项目文件生成jar包第一步:打开eclipse,找到对应的项目。第二步:右键项目,单击Export。第三步:进入Export页面,打开Java目录。第四步:选择Jar file,单击next。第五步:取消lib文件与.classpath与.project前的√,并设备导出的...原创 2019-10-31 16:17:47 · 753 阅读 · 0 评论 -
选择排序与冒泡排序的时间比较(java)
1.代码实现package sort;import java.util.Arrays;import java.util.Random;import java.util.Scanner;/** * 排序比较 * @author nanyue * */public class Sort { public static void main(String[] args) { ...原创 2018-10-24 23:34:30 · 581 阅读 · 0 评论 -
冒泡排序(java)
冒泡排序概述对N个数进行排序,依次比较相邻两个数,大的数放在后面,小的数放在前面。第一轮:首先比较第一个数和第二个数,将大的数放在后面,接下来比较第二个数和第三个数,大的放后面,一直到最后一个数为止。比较完后最后一个数应该就是最大的数。第二轮:除开最大的那个数,和第一轮一样的方法进行比较,倒数第二个数应该就是第二大的数。...第N-1轮:结束,排序完成。实现代码如下:pack...原创 2018-10-24 22:50:30 · 133 阅读 · 0 评论 -
选择排序(java)
选择排序概述在一个长度为N的数组中,实现其从小到大的顺序排列。第一轮需要比较N个数,将最小的数放在第一个位置,比较次数(N-1)次;第二轮便需要比较除了第一个数之后的(N-1个数),将这轮最小的数放在数组的第二个位置,比较次数(N-2)次;…;依次循环直到只剩下一个数为止,总比较次数(N*(N-1)/2)次。代码分析结合代码分析选择排序的排序过程:package sort;impo...原创 2018-10-24 22:27:53 · 121 阅读 · 0 评论 -
深入理解Java内存模型七————总结
1 处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:...转载 2018-10-16 23:18:23 · 185 阅读 · 0 评论 -
深入理解Java内存模型六————final
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。2)初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的代码来分别说明...转载 2018-10-16 23:12:03 · 117 阅读 · 0 评论 -
深入理解Java内存模型五————锁
1 锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void writer() { //1 a++...转载 2018-10-16 23:05:45 · 188 阅读 · 0 评论 -
深入理解Java内存模型二————重排序
二、 重排序数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。注意,这里所说的数据依赖性...转载 2018-10-08 15:38:08 · 154 阅读 · 0 评论 -
深入理解Java内存模型一————基础
深入理解Java内存模型一 基础并发编程模型的分类在我们并发编程时,常常需要考虑两个问题:线程之间如何通信和线程之间如何同步(此处线程指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过读写内存中的公共状态来隐式通信。在消息传递的并发模型里,线程之间没有...转载 2018-10-08 15:03:55 · 125 阅读 · 0 评论 -
深入理解Java内存模型四————volatile
1 volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile long vl = 0L; ...转载 2018-10-12 23:00:04 · 172 阅读 · 0 评论 -
深入理解Java内存模型三————顺序一致性
1 数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步的多线程程序的内存一致性做了如下...转载 2018-10-12 22:48:00 · 189 阅读 · 0 评论