有一段代码如下
1 | public <T> T get(String key, T def) { |
转自 http://www.ibm.com/developerworks/cn/java/j-jtp06197.html
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。
锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。可见性要更加复杂一些,它必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享变量可能是修改前的值或不一致的值,这将引发许多严重问题。
随着项目不断壮大,使用单一仓库管理的代码就显得有点重,事实上在项目中也的确存在一些比较独立的,可以划分成子模块/子项目的部分,这些子模块/子项目是可以独立于当前业务项目存在,并为其它项目服务。子模块/子项目就需要从当前的git仓库中划分出去,另开炉灶,放在另外的仓库中管理。但同时,当前的业务项目依然会对子项目存在着依赖,如果单纯将子项目划分出去,并重新将子项目的仓库clone下来,与业务项目放在一起,有可能就要修改当前本地的目录结构,当需要修改子项目时,也需要到子项目的目录中commit,略显不便。
而git的subtree功能就是为了应对这种场景诞生的。subtree是git v1.8.0后才有的功能,简而言之,它的主要功能就是将不同仓库的项目以我们自主的方式组织到一块,并允许业务项目与子项目间互相同样同步,互相合并。
more >>要配置一个可以用于学习图片风格并应用于其他图片的深度学习环境,我们使用的是neural-style的一个实现,而neural-style需要依赖深度学习的环境,我们将一步步配置环境。
按官网的介绍,Torch是一个可以利用CPU来进行机器学习算法的一个科学计算框架,拥有易利,效率高的优点,使用了LuaJIT和C/CUDA的技术。
核心特性:
今天下午遇到一个小游戏,游戏内容很简单,就是疯狂地点屏幕,然后看在短时间内次数最多,一般来说我对这种游戏都是不太感冒的,游戏脑残,容易手抽筋,不过突然心血来潮,想试着让页面自动点击来获取高分数,见有点时间,就把页面发到电脑上来了(页面太low了我不想发上来)。
稍微分析发现,这个页面其实是由h5的canvas来承担主要的游戏功能的,包括点击,界面切换等等,都是从一个canvas中来的,那首先想到的就是直接获取到canvas的dom对象,然后就发送点击事件即可。
打开 chrome 的console,我们可以这里进行一些js的调试,先获取canvas的dom对象,可以使用document来做
more >>tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true