亲测可用:
03
2019
03
03
2019
03
03
2019
03
Axure 注册码
Axure RP 8 注册码(序列号亲测可用)
16
2019
02
synchronized详解
// Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。// // 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。// // 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。// // 三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时,其他线程对object中所有其它synchronized(this)同步代码块的访问将被阻塞。// // 四、第三个例子同样适用其它同步代码块。也就是说,当一个线程访问object的一个synchronized(this)同步代码块时,它就获得了这个object的对象锁。结果,其它线程对该object对象所有同步代码部分的访问都被暂时阻塞。 // 五、以上规则对其它对象锁同样适用. public static void main(String[] args) { Threads ts = new Threads(); Thread ta = new Thread(ts,"A"); Thread tb = new Thread(ts,"B"); ta.start(); tb.start(); } public static class Threads implements Runnable{ @Override public void run() { for (int i = 0;i< 5;i++){ System.out.println(Thread.currentThread().getName()+"synchronized loop "+ i); } } }
输出结果为:
Asynchronized loop 0
Bsynchronized loop 0
Asynchronized loop 1
Bsynchronized loop 1
Asynchronized loop 2
Bsynchronized loop 2
Asynchronized loop 3
Bsynchronized loop 3
Asynchronized loop 4
Bsynchronized loop 4
30
2019
01
Vue生命周期
Vue.js 实例生命周期:
init: 在实例开始初始化时同步调用。此时数据观测、事件等都尚未初始化。 2.0 中更名为 beforeCreate。
created :在实例创建之后调用。此时已完成数据绑定、事件方法,但尚未开始 DOM 编译,即未挂载到 document 中。
beforeCompile: 在 DOM 编译前调用。 2.0 废弃了该方法,推荐使用 created。
beforeMount: 2.0 新增的生命周期钩子,在 mounted 之前运行。
compiled: 在编译结束时调用。此时所有指令已生效,数据变化已能触发 DOM 更新,但不保证 $el 已插入文档。 2.0 中更名为 mounted。
ready :在编译结束和 $el 第一次插入文档之后调用。 2.0 废弃了该方法,推荐使用 mounted。这个变化其实已经改变了ready这个生命周期状态,相当于取消了在$el首次插入文档后的钩子函数。
attached :在 vm.$el 插入 DOM 时调用, ready 会在第一次 attached 后调用。操作 $el必须使用指令或实例方法(例如 $appendTo()),直接操作 vm.$el 不会触发这个钩子。 2.0 废弃了该方法,推荐在其他钩子中自定义方法检查是否已挂载。
detached: 同 attached 类似,该钩子在 vm.$el 从 DOM 删除时调用,而且必须是指令或实例方法。 2.0 中同样废弃了该方法。
beforeDestroy: 在开始销毁实例时调用,此刻实例仍然有效。
destroyed: 在实例被销毁之后调用。此时所有绑定和实例指令都已经解绑,子实例也被销毁。
beforeUpdate: 2.0 新增的生命周期钩子,在实例挂载之后,再次更新实例(例如更新data)时会调用该方法,此时尚未更新 DOM 结构。
updated:2.0 新增的生命周期钩子,在实例挂载之后,再次更新实例并更新完 DOM 结构后调用。
activated : 2.0 新增的生命周期钩子,需要配合动态组件 keep-live 属性使用。在动态组件初始化渲染的过程中调用该方法。
19
2019
01
MongoDB实战 架构、开发与管理
《MongoDB实战架构、开发与管理》首先简要阐述NoSQL数据库的基础知识,然后介绍了MongoDB——业界领先的基于文档的NoSQL数据库,让读者逐步了解MongoDB方方面面的内容。
本书涵盖了数据模型、底层架构、使用Mongo Shell编码、管理MongoDB平台以及其他主题。本书还提供了使用MongoDB平台进行架构、开发与部署应用程序的清晰指导与实践示
19
2019
01
MongoDB update操作
/* 文档的增删改查 • 插入文档 – db.collection.insert() • 查询文档 – db.collection.find() • 删除文档 – db.collection.remove() • 修改文档 – db.collection.update() */ use test; //插入数据内容 db.cols.insert({title:'MongoDB数据库',descripttion:'是个好东西',by:'zhang',url:'www.xxx.com',likes:100}); //查询数据内容 db.cols.find(); //直接update就是把原来的内容替换为后面参数中修改的内容 db.cols.update({by:'zhang'},{title:'这个是修改数据'}); db.cols.insert({name:'eee',age:11}); /* update()函数接受以下四个参数: criteria : update的查询条件,类似sql update查询内where后面的。 objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的 upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 */ //当为false时,查询不到fff的记录,不插入新更新的数据。默认是false,不插入 db.cols.update({name:"fff"},{$set:{age:22,address:'beijing'}},false); //当为true时,查询不到fff的记录,则会将新的记录插入到集合中。 db.cols.update({name:"fff"},{$set:{age:22,address:'shenzhen'}},true); //当第四个参数是false时,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。默认是false,只更新第一条数据。 db.cols.update({age:22},{$set:{age:11,address:'beijing'}},false,false); //当第四个参数是true时。全部都改过来了。 db.cols.update({age:22},{$set:{age:33,address:'tianjing'}},false,true);
19
2019
01
MongoDB4.0安装
官方下载地址:https://www.mongodb.com/download-center/community?jmp=docs
下载最新的4.0版本,MongoDB msi 4.0版本自动添加window service,不用手动配置。
14
2019
01
JavaScript instanceof 深入讲解(转)
JavaScript instanceof 运算符深入剖析
https://www.ibm.com/developerworks/cn/web/1306_jiangjj_jsinstanceof/
12
2019
01
es5 json对象转换
1. JSON.stringify(obj/arr)
js对象(数组)转换为json对象(数组)
2. JSON.parse(json)
json对象(数组)转换为js对象(数组)