volatile和synchronized volatile让变量每次在使用的时候,都从主存中取。而不是从各个线程的“工作内存”。 volatile具有synchronized关键字的“可见性”,但是没有synchronized关键字的“并发正确性”,也就是说不保证线程执行的有序性。 也就是说,volatile变量对于每次使用,线程都能得到当前volatile变量的最新值。但是volatile变量并不保证并发的正确性。Volatile一般
HashMap浅析 HashMap和Hashtable的区别HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。1.HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value)
单例及double check lock ex1:public class Singleton { private static final Singleton singleton = null; private Singleton() { } public static Singleton getInstance() {
RabbitMQ第三篇:java实现HelloWorld 一:”Hello RabbitMQ”下面有一幅图,其中P表示生产者,C表示消费者,红色部分为消息队列 二:项目开始2.1:首先引入rabbitMQ jar包 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <ve
RabbitMQ:简介及安装配置 1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ
RabbitMQ报错Error: unable to connect to node rabbit@xxx: nodedown的解决方式 RabbitMQ报错Error: unable to connect to node rabbit@xxx: nodedown的解决方式环境:Win10x64+erlang_otp_19.1x64+RabbitMQ3.6.6刚开始研究RabbitMQ,就遇到问题:安装好之后,按照官方安装向导执行rabbitmqctl status命令检查状态时,报如下错误:Bash
web service和rpc的区别 Web 服务已经出现很久了。首先是 SOAP,但 SOAP 仅描述消息的情况,然后是 WSDL,WSDL 并不会告诉您如何使用 Java 编写 Web 服务。在这种情况下,JAX-RPC 1.0 应运而生。经过数月使用之后,编写此规范的 Java Community Process (JCP) 人员认识到需要对其进行一些调整,调整的结果就是 JAX-RPC 1.1。该规范使用大约一年之后,JCP 人
常量池、栈、堆的比较 JAVA中,有六个不同的地方可以存储数据: 1.寄存器:最快的存储区,位于不同于其他存储区的地方——处理器内部。寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。 2. 栈:存放基本类型的变量数据和对象的引用。位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那
JavaScript学习手册(二) JavaScript语法细节: 1、JavaScript区分大小写,也就是说Test和test是两个变量 2、标识符:所谓标识符就是指变量、函数、属性的名字,或者函数的参数,标识符可以是字母、下划线、$、数字,数字不能打头。按照惯例, 标识符采用驼峰命名法,首字母小写,剩下的每个单词首字母大写。需要注意的是,不能把关键字、保留字、true、false和null做标识符。 3、注释://单行注
BootStrapValidator初使用 bootstrap:能够增加兼容性的强大框架.因为项目需要数据验证,看bootstrapValidator 还不错,就上手一直,完美兼容,话不多说。 bootstrapValidator的github地址 需要引用css:bootstrap.min.cssbootstrapValidator.min.cssjs:jquery-1.10.2.min.jsbootstrap.min.jsbootst
JavaScript进阶学习(一) 学习了JavaScript基础语法,感觉掌握还不够,所以正在看:JavaScript高级程序设计。本书很基础,又有高级特性部分,深入浅出,值得一看 历史就不记了,一大堆 JavaScript事一种专为与网页交互而设计的脚本语言,由以下三个不停地部分组成: 1.ECMAScript,由ECMA-262定义,提供核心语言功能; 2.稳当对象模型(DOM),提供访问和操作网页内容的方法和接口;
bootstrapValidator 做输入校验的时候如果你前端框架用的是bootstrap的话,首推bootstrapValidator校验方式,具体流程如下: 一、下载,导入js文件<link type="text/css" rel="stylesheet" href="${ctx}/components/validate/css/bootstrapValidator.css" /><script type="text/java
JavaScript学习手册 入门 document是整个界面JS创建对象: 1、创建直接的实例 person=new Object(); person.firstname="Bill"; person.lastname="Gates"; person.age=56; person.eyecolor="blue";或 2、替代语法(使用对象 literals): per
Knockout.js学习之mapping插件使用 Knockout设计成允许你使用任何JavaScript对象作为view model。必须view model的一些属性是observable的,你可以使用KO绑定他们到你的UI元素上,当这些observable值改变的时候,这些UI元素就会自动更新。绝大多数程序都需要从服务器端获取数据,但是由于服务器不知道observable的概念是什么,它只支持简单的JavaScript对象(通常是序列化以后的