线程安全的集合

  1. ConcurrentDictionary 线程安全的字典。
  ConcurrentDictionary<string, string> dic = new ConcurrentDictionary<string, string>();
  1. ConcurrentBag 线程安全的List。
  ConcurrentBag<UserModel> userList = new ConcurrentBag<UserModel>();
  1. Concurrent—
 ConcurrentQueue<UserModel>;
 ConcurrentStack<UserModel>
  1. 在C#中,赋值和简单的数字运算都不是原子型操作。在多线程环境下,会产生数据安全的问题。
    在多线程环境下,我们可以通过使用System.Threading.Interlocked类来实现原子型操作当个数据,使用它比使用Monitor类跟简单。

    在c#里面,实现线程同步方法有很多种。我了解到的至少有8种。这里先讲下,一种比较简单的同步方法——-轻量级同步Interlock。
    为什么说它是轻量级呢?因为它仅对整形数据(即int类型,long也行)进行同步。如果你学过操作系统里面的PV操作(即信号量),那么你对它已经了解了一般。它实现的正是如同信号量的功能。下面是它提供的方法:

Vue开发实战之组件核心概念:事件

  1. 事件绑定指令:v-on ,简写:@
 <button v-show="!del" @click="handleClick">删除</button>
  1. 子组件把触发父组件事件用:$emit(‘事件名’,参数)
 this.$emit("delete", this.title);

子组件为什么要触发父组件事件呢,因为子组件拿的值是自己范围的数据,如果需要通知父组件传过来的数据,需要在父组件修改

3.事件修饰符:可以更精确控制事件的触发

Vue开发实战之组件基础之组件注册

  1. 组件是为了代码复用
  2. 全局注册:
Vue.component('全局组件名称',{});
//例子
Vue.component('todo-item',{
props:{
  title:String,
  del:{
      type:Boolean,
      default:false
  }
}
template:'<span v-if="!del">{{title}}</span>',
data:function(){return {}},
methods:{}
});
  1. 使用
<todo-item v-for="item in list" :title="item.title" :del="item.del"></todo-item> 

Vue开发实战之第一个Vue程序

  1. 不使用组件时的使用方式:cdn开发引用js包
  2. mustache语法:普通文本域中使用
<div>{{message}}</div>
<ul>
<li v-for="item in list">
{{item.title}}
</li>
</ul>
  1. 指令指令:可理解为占位符,不需要使用mustache语法,mustache语法是一般是为了显示文本信息。
    v-bind,v-for,v-if
  • {{item.title}}
    {{item.title}}

注意v-bind与v-model区别:
v-bind是单向绑定,只能是m绑定到v中
v-model是双向绑定,但只能在表单元素中使用

地图服务常见术语

  1. 地图底图:可理解为组成的瓦片地图,基础地图,可能没任何图层,https://help.aliyun.com/document_detail/147274.html

  2. 地图瓦片:金字塔格式

  3. 坐标系格式:百度09、国测局02(火星)、wgs84

  4. OpenLayer:用于开发WebGIS客户端的JavaScript包,渲染引擎

  5. 地图图层(map coverage):
    对于栅格模型(瓦片图)来看,图层的概念就很重要的,由于图层是生成制作出来,每个图层内包含的元素相对是固化的,因此要引入一个底图的概念。也就是说,这是一个包含了最基本,最常用的地图数据元素的图层,例如:道路,河流,桥梁,绿地,甚至有些底图会包含建筑物或者其他地物的轮廓。在底图的基础上,可以叠加各种我们需要的图层,以满足应用的需要,例如:道路堵车状况的图层,卫星图,POI图层等等