当前位置: 首页 > news >正文

搜索引擎网站推广法怎么做做养生的网站多吗

搜索引擎网站推广法怎么做,做养生的网站多吗,天津网站建设wangzhii,电商系统的服务商一. 各类数据结构比较及其线程安全问题 1. Array(数组)#xff1a; 分配在连续内存中,不能随意扩展#xff0c;数组中数值类型必须是一致的。数组的声明有两种形式#xff1a;直接定义长度#xff0c;然后赋值#xff1b;直接赋值。 缺点#xff1a;插入数据慢。 优点 分配在连续内存中,不能随意扩展数组中数值类型必须是一致的。数组的声明有两种形式直接定义长度然后赋值直接赋值。 缺点插入数据慢。 优点性能高数据再多性能也没有影响 特别注意Array不是线程安全在多线程中需要配合锁机制来进行如果不想使用锁可以用ConcurrentStack这个线程安全的数组来替代Array。 1 {2 Console.WriteLine(---------------------------01 Array(数组)-----------------------------------);3 //模式一声明数组并指定长度4 int[] array new int[3];5 //数组的赋值通过下标来赋值6 for (int i 0; i array.Length; i)7 {8 array[i] i 10;9 } 10 //数组的修改通过下标来修改 11 array[2] 100; 12 //输出 13 for (int j 0; j array.Length; j) 14 { 15 Console.WriteLine(array[j]); 16 } 17 18 //模式二直接赋值 19 string[] array2 new string[] { 二胖, 二狗 }; 20 } 2. ArrayList(可变长度的数组) 不必在声明的时候指定长度,即长度可变可以存放不同的类型的元素。 致命缺点无论什么类型存到ArrayList中都变为object类型使用的时候又被还原成原先的类型所以它是类型不安全的当值类型存入的时候会发生装箱操作变为object引用类型而使用的时候又将object类型拆箱变为原先的值类型这尼玛你能忍 结论不推荐使用建议使用List代替 特别注意ArrayList不是线程安全在多线程中需要配合锁机制来进行。 1 {2 Console.WriteLine(---------------------------02 ArrayList(可变长度的数组)-----------------------------------);3 ArrayList arrayList new ArrayList();4 arrayList.Add(二胖);5 arrayList.Add(马茹);6 arrayList.Add(100);7 for (int i 0; i arrayList.Count; i)8 {9 Console.WriteLine(arrayList[i] 类型为 arrayList[i].GetType()); 10 } 11 } 3. ListT (泛型集合) 推荐使用 内部采用array实现但没有拆箱和装箱的风险是类型安全的 特别注意ListT不是线程安全在多线程中需要配合锁机制来进行如果不想使用锁可以用ConcurrentBag这个线程安全的数组来替代ListT 1 {2 Console.WriteLine(---------------------------03 ListT (泛型集合)-----------------------------------);3 Liststring arrayList new Liststring();4 arrayList.Add(二胖);5 arrayList.Add(马茹);6 arrayList.Add(大胖);7 //修改操作8 arrayList[2] 葛帅;9 //删除操作 10 //arrayList.RemoveAt(0); 11 for (int i 0; i arrayList.Count; i) 12 { 13 Console.WriteLine(arrayList[i]); 14 } 15 } 4. LinkedListT 链表 在内存空间中存储的不一定是连续的所以和数组最大的区别就是无法用下标访问。 优点增加删除快适用于经常增减节点的情况。 缺点无法用下标访问查询慢需要从头挨个找。 特别注意LinkedListT不是线程安全在多线程中需要配合锁机制来进行。 {Console.WriteLine(---------------------------04 ListLinkT 链表-----------------------------------);LinkedListstring linkedList new LinkedListstring();linkedList.AddFirst(二胖);linkedList.AddLast(马茹);var node1 linkedList.Find(二胖);linkedList.AddAfter(node1, 三胖);//删除操作linkedList.Remove(node1);//查询操作foreach (var item in linkedList){Console.WriteLine(item);} } 5. QueueT 队列 先进先出入队(Enqueue)和出队(Dequeue)两个操作 特别注意QueueT不是线程安全在多线程中需要配合锁机制来进行如果不想使用锁线程安全的队列为 ConcurrentQueue。 实际应用场景利用队列解决高并发问题详见http://www.cnblogs.com/yaopengfei/p/8322016.html 1 {2 Console.WriteLine(---------------------------05 QueueT 队列-----------------------------------);3 Queueint quereList new Queueint();4 //入队操作5 for (int i 0; i 10; i)6 {7 quereList.Enqueue(i 100);8 }9 //出队操作 10 while (quereList.Count ! 0) 11 { 12 Console.WriteLine(quereList.Dequeue()); 13 } 14 } 6. StackT 栈 后进先出入栈push和出栈pop两个操作 特别注意StackT不是线程安全 1 {2 Console.WriteLine(---------------------------06 StackT 栈-----------------------------------);3 Stackint stackList new Stackint();4 //入栈操作5 for (int i 0; i 10; i)6 {7 stackList.Push(i 100);8 }9 //出栈操作 10 while (stackList.Count ! 0) 11 { 12 Console.WriteLine(stackList.Pop()); 13 } 14 } 7. Hashtable 典型的空间换时间存储数据不能太多但增删改查速度非常快。 特别注意Hashtable是线程安全的不需要配合锁使用。 {Console.WriteLine(---------------------------07 Hashtable-----------------------------------);Hashtable tableList new Hashtable();//存储tableList.Add(001, 马茹);tableList[002] 二胖;//查询foreach (DictionaryEntry item in tableList){Console.WriteLine(key:{0},value:{1}, item.Key.ToString(), item.Value.ToString());} } 8. DictionaryK,T字典 泛型的Hashtable 增删改查速度非常快可以用来代替实体只有id和另一个属性的时候大幅度提升效率。 特别注意DictionaryK,T不是线程安全在多线程中需要配合锁机制来进行如果不想使用锁线程安全的字典为 ConcurrentDictionary。 1 {2 Console.WriteLine(---------------------------08 DictionaryK,T字典-----------------------------------);3 Dictionarystring, string tableList new Dictionarystring, string();4 //存储5 tableList.Add(001, 马茹);6 tableList.Add(002, 二胖);7 tableList[002] 三胖;8 //查询9 foreach (var item in tableList) 10 { 11 Console.WriteLine(key:{0},value:{1}, item.Key.ToString(), item.Value.ToString()); 12 } 13 } 强调  以上8种类型除了Hashtable是线程安全其余都不是都需要配合lock锁来进行或者采用 ConcurrentXXX来替代。 详细的请见http://www.cnblogs.com/yaopengfei/p/8322016.html 二. 四大接口比较 1. IEnumerable 是最基本的一个接口用于迭代使用里面有GetEnumerator方法。 2. ICollection 继承了IEnumerable接口主要用于集合内部有Count属性表示个数像ArrayList、List、LinkedList均实现了该接口。 3. IList 继承了IEnumerable 和 ICollection,实现IList接口的数据接口可以使用索引访问表示在内存上是连续分配的比如Array、List。 4. IQueryable 这里主要和IEnumerable接口进行对比。 Enumerable里实现方法的参数是Func委托Queryable里实现的方法的参数是Expression表达式。 实现IQueryable和IEnumabler均为延迟加载但二者的实现方式不同前者为迭代器模式参数为Func委托后者为Expression表达式目录树实现。 三. yield关键字 1. yield必须出现在IEunmerable中 2. yield是迭代器的状态机能做到延迟查询使用的时候才查询可以实现按序加载 3. 例子 测试一在 “var data1 y.yieldWay();”加一个断点发现直接跳过不能进入yieldWay方法中而在“foreach (var item in data1)”加一个断点第一次遍历的时候就进入了yieldWay方法中说明了yield是延迟加载的只有使用的时候才查询。 测试二对yieldWay和commonWay获取的数据进行遍历通过控制台发现前者是一个一个输出而后者是先一次性获取完一下全部输出来证明了yield可以做到按需加载可以在foreach中加一个限制比如该数据不满足100就不输出。 View Code 1 Console.WriteLine(-----------------------下面是调用yield方法-----------------------);2 yieldDemo y new yieldDemo();3 var data1 y.yieldWay();4 foreach (var item in data1)5 {6 Console.WriteLine(item);7 }8 Console.WriteLine(-----------------------下面是调用普通方法-----------------------);9 var data2 y.commonWay(); 10 foreach (var item in data2) 11 { 12 Console.WriteLine(item); 13 }
http://www.zqtcl.cn/news/911314/

相关文章:

  • 公司注册流程聊城网站优化案例
  • 化妆品网站建设实施方案杭州seo代理公司
  • 网站小图片素材高质量外链
  • 福州个人建站模板有没有一些有试卷做的网站
  • 教你如何建设网站阿里去旺道seo优化
  • 想做一个个人网站怎么做网站组成部分
  • 旅游门户网站模板下载全国最新产品代理商
  • 老河口网站设计中企动力科技做什么的
  • 如何建立网站管理系统甘孜州住房和城乡规划建设局网站
  • 阿里网站建设新闻门户网站什么意思
  • 桂林微信网站wordpress 连接信息
  • 电商网站开发简历跨境电商怎么搞
  • php小型网站开发百度知道小程序
  • 风铃网站具体是做那方面的contact form7 v2.1.2 wordpress
  • 临沂网站建设举措网站数据不变重新安装wordpress
  • 外贸网站建设双语网站建设红色大气网络公司企业网站源码_适合广告设计
  • 温州哪里有做网站的阳朔到桂林机场
  • 商务网站建设详细流程小程序商城服务好的商家
  • 苏州建站模板搭建南京地铁最新消息
  • wordpress建网站教程威海建设招聘信息网站
  • 如何制作一网站企业中标信息查询网
  • 百度推广咨询seo搜索引擎优化平台
  • 建设网站要不要投资钱哪里建设网站最好
  • 长沙网站制作公司地址农业推广作业
  • 网站创意设计公司定制网站开发价格
  • 专业网站建设加盟合作怀化seo快速排名
  • 房山区网站建设wordpress自动采集翻译插件怎么用
  • 郴州做网站 郴网互联网站制作公司起名
  • 织梦做的的网站首页显示空白查企业营业执照的网站
  • 葫芦岛公司做网站外贸西班牙语网站建设