一、重排序 重排序是指为了提高程序的执行效率,编译器和处理器常常会对语句的执行顺序或者指令的执行顺序进行重排。 编译器优化的重排序:编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 指令级并行的重排序:现代处理器采用了指令级并行技术(Instruction-Level Parall ...
分类:
编程语言 时间:
2017-05-06 00:52:58
阅读次数:
209
题目 右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。 提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素。 提示 Comparison Operators 思路 用 for() 循环遍历可得到大数组中的每一项小数组。 解 ...
分类:
编程语言 时间:
2017-05-05 14:21:05
阅读次数:
164
一、基础查询 查询所有列 select * from 表名; 查询指定列 select 字段1, 字段2 from 表名; 二、条件查询 查询时给出where子句,来限定查询的结果符合某些要求 运算符及关键字: =, !=, <>, >=, <=, >, < select * from studen ...
分类:
数据库 时间:
2017-04-30 19:24:02
阅读次数:
273
一、并发中的关键问题及其解决思路 并发中的关键问题:1. 线程之间如何通信 —— 线程之间如何交换信息2. 线程之间如何同步 —— 控制线程的相对执行顺序 两种解决思路: 1. 隐式通信,显示同步 —— 线程之间通过共享内存中的公共状态来隐式通信,那么就必须显示的指定线程见的互斥来实现同步2. 显式 ...
分类:
编程语言 时间:
2017-04-17 21:53:41
阅读次数:
206
Atitit 列表表格按照字段排序数据解决方案 1.1. 排序ui1 1.1.1. C:\Users\Administrator\Desktop\00oa\com.attilax\ui\orderArrow.js1 1.2. 集合的sort方法 (推荐)2 1.3. Linq法 支持sql式多重排序 ...
分类:
编程语言 时间:
2017-04-12 23:02:14
阅读次数:
276
前言: 在做单例模式时 有博客在评论区 推荐使用 volatile 关键字 进行修饰 然后用了两天时间查资料看文档 发现涉及的面太广 虽然已经了解为什么要使用 volatile + synchronized 来写单例模式 但是限于目前的水平有限 无法很好的进行个人总结故 转发一篇 总结得很不错的博客 ...
分类:
编程语言 时间:
2017-04-08 13:52:19
阅读次数:
216
定义 重排序是指编译器和处理器为了优化程序性能而对指令顺序进行重新排序的一种手段。 分类 1)编译器优化重排序 编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 2)指令级并行的重排序 现代处理器采用了指令级并行技术(ILP)来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改... ...
分类:
编程语言 时间:
2017-03-31 18:47:21
阅读次数:
224
happens-before:描述内存可见性as-if-serial:无论怎么重排序,程序的运行结果不会改变 ReentrantLock依赖了队列同步器AQS,其实现方式是volatile变量的读写操作进行线程间通信,通过CAS修改state值,成功,其state值>0,则取锁成功 Concurre ...
分类:
Web程序 时间:
2017-03-29 16:26:45
阅读次数:
249
一.作用: 1. 保证被volatitle修饰的变量对所有的线程是可见的,即当一个线程修改了这个变量 新值对其他线程来说是可以立即得知的,但运算非原子操作,不能保证并发下的安全性 (即i=i++当读出i的值是最新的,但+的过程中i的值被其他线程改变了) 普通变量的值在线程传递需要通过主内存来完成(即 ...
分类:
编程语言 时间:
2017-03-03 23:48:34
阅读次数:
200
在学习volatile语义的可见性和禁止指令重排序的相关测试中,发现并不能体现出禁止指令重排序的特性 实验代码如下 实验步骤: 注意关注代码中flag变量,会分别测试flag变量有volatile修饰和没有volatile修饰时的输出情况 本测试代码主要的功能: 实验步骤: 预期结果: 实际结果: ...
分类:
编程语言 时间:
2017-03-01 15:42:11
阅读次数:
271