觉得有必要来澄清几组重要概念

3gpp协议_NSA组网下SN add/release/delete流程协议学习 NSA组网下SN add/release/delete流程协议学习如3GPP协议37.340第10章节一、第10章10.2 辅节点添加 Secondary Node Addition 辅节点添加:在SN上创建一个UE上下文。完成双链接建立10.2.1 EN-DC主要讲的是辅节点的添加。辅节点添加过程由mn发起,用于在sn处建立ue上下文,以将无线资源... 阅读详情

觉得有必要来澄清几组重要概念

2008-06-04 01:51 by Jeffrey Zhao, 25264 visits, 网摘, 编辑

  承蒙大家厚爱,不少朋友都会把遇到的问题向老赵进行讯问。不过在阅读很多朋友问题的过程中,以及平时和别人讨论中,亦或是园子里的文章中经常发现一些误用概念的情况。如果在概念上没有形成共识,那么在工作和交流上就会造成许多问题。因此,虽然老赵已经在其他一些地方(例如WebCast或一些文章的评论)做过解释,但是现在仍然觉得有必要特地来澄清一些概念,解释一下这些概念之间的区别和联系。希望在明确这些概念之后,大家能够把注意力集中在对于具体问题的分析解决上,而不要让沟通成为瓶颈。

  在这篇文章中,我希望澄清三组概念,它们是:

  • AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX
  • LINQ / LINQ to SQL / LINQ to XXX
  • Lambda Expression / Expression Tree / 匿名方法

AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX

  这是我见过的混淆最多的一组概念。不过当去年AJAX技术如火如荼,AJAX框架层出不穷,而微软又推出ASP.NET AJAX框架之后,这四个概念之间的混淆也愈发严重起来了。我经常能看到这样的问题:

  • 我在用AJAX技术时不知道怎么在UpdatePanel里……
  • 我用AJAX.NET框架调用Web Service时……

  这是非常典型的概念混淆,上面两句话的AJAX与AJAX.NET都应该使用ASP.NET AJAX替换。关于这几个概念的区别我《深入浅出ASP.NET AJAX》系列WebCast多次进行解释,不过收效似乎并不明显。于是我打算在这里再进行一下说明:

  AJAX是Asynchronous JavaScript and XML缩写。这个概念代表的是一种技术,当您在说“我在项目中使用了AJAX技术时”,只是代表了您使用客户端XMLHttpRequest对象与服务器端进行异步通信。不过因为随着AJAX技术的运用往往会带来丰富的客户端效果,因此对AJAX技术的广义理解也可以认为这是一种操作客户端DOM而带来丰富效果的技术(这个“广义”的描述其实并不准确,大家明白老赵的意思就可以了)。

  AJAX框架是一套辅助开发人员使用AJAX技术的代码包(库,etc.)。一个AJAX框架的目的一般是对XMLHttpRequest对象的使用进行封装,并提供一些操作DOM元素或者实现特殊效果的“捷径”。成熟的AJAX框架有很多,它们可以被分为“以客户端为中心”和“面向特定服务器技术”两大类。前者的优秀代表有(排名不分先后):Prototype、jQuery、Mootools、YUI、Dojo等等(最后两个其实更接近一套客户端界面库,也就是“广义”的AJAX框架);而后者的典型代表既是AJAX.NET和ASP.NET AJAX了——当然,也有优秀的AJAX框架面向其他服务器技术,在此不提。

  AJAX.NET (Professional)是ASP.NET平台上著名的AJAX框架,诞生于2005年2月(虽然正式命名为AJAX.NET则是在两个月之后),作者为Michael Schwarz。同年10月,Michael为AJAX.NET提供了更丰富的功能(主要是安全性方面),并将其改名为AJAX.NET Professional。AJAX.NET提供的最主要的(也是唯一)的功能就是异步调用服务器端方法,可谓非常纯粹的“基于数据”的AJAX使用方式。这个框架是一个个人作品,有支持.NET 1.1和2.0的版本,它并不属于微软官方,目前已经停止更新。

  ASP.NET AJAX的Code Name为“Atlas”,在CTP向Beta版转移时曾经发生过翻天覆地的变化。ASP.NET AJAX中包含了UpdatePanel等控件,可以非常透明地为现有的ASP.NET WebForms应用程序添加AJAX效果。此外还提供了客户端异步调用Web Services的方法,使开发人员也能够使用面向数据的方式使用AJAX技术。值得一提的是ASP.NET AJAX的“附属品”相当丰富。例如ASP.NET AJAX名为“Microsoft AJAX Library”的客户端部分是一个纯客户端AJAX框架,提供了面向对象类型系统、浏览器兼容层、异步通信层等多种基础组件;ASP.NET AJAX的开源扩展包“AJAX Control Toolkit”包含了数十个可以直接使用的AJAX服务器端控件,这样开发人员能够轻松地添加丰富的客户端效果。同时,官方还为ASP.NET AJAX提供了“非正式”地扩展包,其中的History等优秀控件也将加入未来版本的ASP.NET AJAX框架中。ASP.NET AJAX是官方出品的AJAX框架,目前已经被集成到ASP.NET 3.5中去了,因此其版本号也从ASP.NET AJAX 1.0一下子“跃升为”ASP.NET AJAX 3.5。如果您看到了这些版本号也请不要疑惑,其实ASP.NET AJAX 3.5相对于ASP.NET AJAX 1.0来说只是修补了一些细小bug,几乎没有任何变化。

LINQ / LINQ to SQL / LINQ to XXX

  LINQ是新生事物,不过从不少文章和讨论上看来,这方面的概念也已经有点混沌不清了。因此我们经常可以看到这样的话:

  • LINQ只能将数据表与实体属性一一对应……
  • LINQ开发指南:在LINQ中进行数据库字段映射……

  以上两句话其实说的都是LINQ to SQL而不是指LINQ。可能由于LINQ to SQL的上镜率最广(连MSDN上About LINQ的第一个示例就是查询数据库的),因此许多人都将LINQ to SQL与LINQ混用,这会给初学者造成误解,认为LINQ就是LINQ to SQL,LINQ to SQL就是LINQ——事实当然不是这样的。

  LINQ是Language-Integrated Query的缩写,是C# 3.0和VB 9.0中新加入的语言特性,可以在编程时使用内置的查询语言进行基于集合的操作。这么做可以大大简化开发过程,提高开发效率。例如:

List<User> userList = GetUserList();
var userWithOddId = from u in userList
                    where u.UserID % 2 == 1
                    select u;
 
foreach (User u in userWithOddId)
{
    Console.WriteLine(u.UserName);
}

  如果没有LINQ,要筛选出ID为奇数的User对象则需要创建一个List,然后遍历整个列表,将符合特定条件的User对象放入新列表。而有了LINQ,这部分的筛选就变得非常容易,甚至只需要一句话就能完成。如果觉得这个例子不够说明LINQ对生产力有重大贡献的话,请关注我接下来的一篇文章(暂定名为《我们为什么要拥抱LINQ》)。LINQ特指形如上面这段代码中from...where...select这样的用法,其返回值是IQueryable<T>或IEnumerable<T>。

  LINQ to SQL是.NET 3.5内置的一个轻量级O/R Mapping解决方案,可以将数据表映射为实体对象,方便开发人员对数据库的操作。可见,LINQ to SQL实只是LINQ的一个实现,提供了一个可以查询SQL Server数据库的LINQ Provider。

  LINQ Provider是LINQ查询的执行器,标准LINQ语法支持许多的操作符,但是某个具体的LINQ实现可能只支持其中的一部分。在.NET 3.5默认提供了三种LINQ Provider,分别是LINQ to Object(即上面的例子),LINQ to SQL以及LINQ to XML。

  LINQ to XXX表示使用LINQ针对XXX这种数据进行查询的解决方案。我们可以自定义LINQ Provider,使用我们自定义的查询规则来处理特定数据集。目前互联网上已经可以找到数十种LINQ Provider(如LINQ to Flickr,LINQ to NHibernate等),而已经处于beta 3阶段的ADO.NET Entity Framework,最终也会提供一个LINQ Provider,叫做“LINQ to Entities”。

Lambda Expression / Expression Tree / 匿名方法

  Lambda Expression从定义上讲是指带有“=>”符号的表达式,例如:

  • x => x + 1
  • (x, y) => x > y
  • () => 5
  • (x, y) => { return x > y; }

  Lambda Expreesion本身并不会在概念上引起混淆,不过由于在C# 3.0中Lambda Expression有两种截然不同的使用方式,有些朋友就会产生疑问,究竟Lambda Expression是做什么用的?

  Lambda Expression的一个重要作用就是提供一种使用匿名方法的新语法,在《您善于使用匿名函数吗?》一文中您可以看到这种使用方式。利用Lambda Expression表示匿名函数的一个重要的缺点就是无法使用带out或ref关键字的参数,不过它比使用delegate关键字的表示法略为简单一点,因为无需提供参数类型,例如:

public static bool CallMethod(Func<int, bool> method)
{
    return method(0);
}
 
static void Main(string[] args)
{
    CallMethod(delegate(int a) { return false; });
    CallMethod(a => { return false; });
}

  可见,使用Lambda Expression表示的匿名方法无需指定参数类型,因为这一切都已经交给编译器来判断了。这一点在参数类型长而复杂的情况下(例如并行库中的方法)非常重要。因此现在要不是会涉及到out/ref参数,我都会使用Lambda Expression来表示匿名方法。

  Lambda Expression的另一个作用自然就是构造一个LambdaExpression对象。任意一个Expression对象都表示了一个Expression Tree的根节点,而开发人员可以通过解析这个Expression Tree来实现特定的功能。我们编写的方法可以接受一个Lambda Expression作为参数,但是我们还必须对这个参数的形式进行限制,这个参数才能有意义。这时候我们就会使用Expression<TDelegate>类型作为方法的参数类型,这样在使用这个方法时就必须使用满足TDelegate的签名及返回值的Lambda Expression才能编译通过。例如:

public static void CallMethod(Expression<Func<int, bool>> prediect) { ... }
 
static void Main(string[] args)
{
    CallMethod(a => a > 0);
}

  解析一个Expression Tree并不是一件简单的事情,一定程度上这相当于在进行编译工作,只是最终生成的结果不是机器码或IL,而是一个执行结果,并且语法解析的过程已经由C#编译器帮我们完成了。我在《扩展LINQ to SQL:使用Lambda Expression批量删除数据》一文中曾经提到过这一点,并且给出了一个实例,感兴趣的朋友们可以参考一下。

  需要注意的是,如果在构造一个Expression对象时,Lambda Expression的Body部分不能是Statement;而在表示一个匿名对象时Lambda Expression的Body既可以是Expression也可以是Statement。无论是使用Expression还是Statement作为Body,只要表示的含义相同,编译器都会生成一样的匿名函数。例如以下两种写法其实是等价的:

  • (x, y) => x > y
  • (x, y) => { return (x > y); }

 

  最后,我留给大家一个问题:以下两个做法的结果是相同的,而代码也非常接近。不过它们其实有着非常大的区别,您能指出吗?

var intList = new List<int>() { 1, 2, 3, 4, 5 };
foreach (int i in intList.Where(i => i % 2 == 1))
{
    Console.WriteLine(i);
}

var intList = new List<int>() { 1, 2, 3, 4, 5 }.AsQueryable();
foreach (int i in intList.Where(i => i % 2 == 1))
{
    Console.WriteLine(i);
}

0
0
(请您对文章做出评价)
addition过程 sgnb_5G ENDC架构中PSCell更换流程 继续协议学习,应该说NSA的各个方面的规范文本及实现都要比SA过程复杂的多。今天的topic是anchor MeNB不变的情况下,SgNB cell的变换流程。此场景也是在ENDC网络下经常遇到的情况,处于ENDC双连接情况的UE在移动过程中不但要测量MeNB邻区的信号(以备MeNB cell之间的切换),同时也需要测量除当前双连接之外其他邻接SgNB cell的信号强度,以备更换到信号更好的双连... 阅读详情

相关推荐

正弦稳态功率计算:从基础概念到工程实践全解析

在电气工程与电力系统领域,功率计算是评估能量转换与传输效率的核心基础。其原理基于电压、电流及其相位关系的分析,通过定义有功功率、无功功率和视在功率,构建了描述能量流动的完整理论框架。这项技术的核心价值在于能够精确量化设备的实际能耗、评估电网负载能力,并为系统优化提供关键数据支撑。其应用场景广泛覆盖了电机效率分析、供电系统设计、电能质量治理以及实验数据解读等多个工程实践环节。本文聚焦于**正弦稳态功率计算**这一主题,深入探讨了在电压电流均为同频率正弦波的条件下,如何运用**功率因数**、**视在功率**等核

weixin_33671935的博客 462

5G的一些术语全称

本文来自各种3GPP协议,以及部分平时积累,为方便查询所作。按首字母顺序分类,以及常用分类(核心网网元功能、信道及信号包括sidelink、各种RNTI、协议层)。不定时更新。

You can do more than just get by. 2万+

PointNet/PointNet++模型调参实战:如何用PyTorch让你的点云分割精度再涨5个点?

本文深入探讨了PointNet/PointNet++模型在点云分割中的调参技巧,通过PyTorch实现精度提升5个点的实战方法。重点分析了点云密度自适应策略、感受野与细节保留的平衡,以及训练加速与稳定性技巧,适用于电力巡检、自动驾驶等场景的激光点云数据处理。

weixin_30836759的博客 476

5G NR MCG,SCG,PCell,PSCell,SCell,sPCell 概念澄清

5G NR MCG,SCG,PCell,PSCell,SCell,sPCell 概念澄清 2018/12/23   在看5G NR协议或者研究5G项目时,我们经常看到MCG,SCG,PCell,PSCell,SCell和sPCell等概念。新手往往很难区分这些概念,今天来给大家梳理一下。   首先澄清MCG和SCG两个概念。MCG和SCG的全称如下: MCG:Master Cell g...

Wei Xingguang 8万+

【PLC】三菱PLC控件安装疑难解析:Error Number:-119的全面解决方案

本文针对三菱PLC控件安装过程中常见的Error Number:-119错误,提供了深度解析与实战解决方案。该错误通常源于Windows系统权限限制或文件冲突。文章从理解错误本质入手,逐步介绍了以管理员身份运行、手动注册DLL文件、采用新版环境搭配旧版控件的黄金组合以及系统环境修复等四大招法,帮助用户彻底解决这一安装难题,确保工控软件稳定运行。

jj890的博客 494

Python 爬取新浪财经 7x24(1): 下载数据

前言 最近在做一个需要很多财经数据的项目。于是想到可不可以通过爬虫来解决(尝试白嫖)。 提供财经数据的网站有很多个,其中比较靠谱和更新比较及时的应该是新浪7x24 live数据。 http://finance.sina.com.cn/7x24/?tag=0 这个问题有一定的难度,因为这个网页是动态加载的。每一次只会加载部分数据,而只有拉到底部才可以加载新的数据。 于是乎,我们要做的事情是: 下载数据 保存到数据库 本篇介绍如何下载数据。 代码 闲言少叙书归正文,代码的实现如下: import reque

ZJ_11701的博客 2905

[转]觉得有必要来澄清几组重要概念

在这篇文章中,我希望澄清三组概念,它们是: AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX LINQ / LINQ to SQL / LINQ to XXX Lambda Expression / Expression Tree / 匿名方法 AJAX / AJAX框架 / AJAX.NET (Professiona...

weixin_30530939的博客 117

碳化硅外延层厚度测量:红外干涉光谱与FFT技术详解

薄膜厚度测量是半导体制造中的关键工艺控制环节,其核心原理基于光的干涉现象。当光在薄膜上下界面反射并叠加时,会产生与厚度相关的干涉条纹。通过分析这些条纹,可以非接触、无损地获取薄膜的精确厚度信息。这项技术的核心价值在于实现了对关键工艺参数的在线、快速监控,对于提升器件性能与生产良率至关重要。在第三代半导体,尤其是碳化硅功率器件的制造中,外延层厚度直接决定了器件的击穿电压和导通电阻等核心性能。红外干涉光谱法因其对碳化硅材料在红外波段的良好透过性,成为该领域主流的厚度测量方案。通过快速傅里叶变换(FFT)对采集到

weixin_29032489的博客 306

澄清几组.NET相关的重要概念

  在这篇文章中,我希望澄清三组概念,它们是: AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAXLINQ / LINQ to SQL / LINQ to XXXLambda Expression / Expression Tree / 匿名方法 AJAX / AJAX框架 / AJAX.NET (Profess...

weixin_30852367的博客 88

如何使用C#自带的GDI+双缓冲类BufferedGraphics实现双缓冲功能

小白摸索着编写一个上位机界面,将遇到的问题及解决方法记录下,以供后来的小白使用哈。这篇文章解决的问题是在绘图时候的闪烁问题。其中网上有些介绍的设置控制方式controlstyle的方法,这个方法我的理解是比较适合于在一个完整的窗口当中绘图。如果要在一个窗口当中的内部容器或者控件内画图的话就不太适合,通常按照前述的方法设置后没有任何效果。对于在窗口内部的绘图的来说,比较有效的方法是在内存当中开辟一块

z20110411的博客 4794

基于HPM5E00的EtherCAT从站开发实战:从硬件解析到软件调试

实时工业以太网通信是工业自动化与运动控制领域的核心技术,它通过硬件与协议栈的协同,实现了微秒级的高确定性数据交换。其技术价值在于为多轴同步、机器人控制等复杂场景提供了高实时性、高同步精度的通信基础。在应用场景上,广泛服务于数控机床、包装机械、半导体设备等高端制造领域。本文聚焦于EtherCAT从站开发,深入解析了基于先楫HPM5E00高性能MCU与专用从站控制器(ESC)的硬件架构设计,并详细阐述了开源协议栈SOES的移植、对象字典配置以及过程数据(PDO)映射等核心软件实践,为开发者快速构建稳定可靠的实时

weixin_30915951的博客 501

几组重要概念

在这篇文章中,我希望澄清三组概念,它们是: AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX  LINQ / LINQ to SQL / LINQ to XXX  Lambda Expression / Expression Tree / 匿名方法 AJAX / AJAX框架 / AJAX.NET (Professiona...

weixin_33725807的博客 98

总结一下:电源设计 ≠ 画个电路图就完了

如果你面对一块电源板时,只知道输入输出是多少伏,那你离真正懂它还差十万八千里。你要懂拓扑、理解工作原理、看懂波形、会分析环路、熟练选型,还得懂调试、EMC和热设计——才能自信地说:“我会搞电源了。电源不是一个人能独挑的“电”,而是控制、模拟、热、EMC 多学科交融的“多面体”。这也是为什么它既复杂又迷人✨。

weixin_43199439的博客 143

[转]几组概念(AJAX框架,LINQ ,Lambda Expression)

承蒙大家厚爱,不少朋友都会把遇到的问题向老赵进行讯问。不过在阅读很多朋友问题的过程中,以及平时和别人讨论中,亦或是园子里的文章中经常发现一些误用概念的情况。如果在概念上没有形成共识,那么在工作和交流上就会造成许多问题。因此,虽然老赵已经在其他一些地方(例如WebCast或一些文章的评论)做过解释,但是现在仍然觉得有必要特地来澄清一些概念,解释一下这些概念之间的区别和联系。希望在明确这些概念之后...

weixin_30306905的博客 75

NVIDIA Jetson之交叉编译工具

参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&amp;tid=33630 用TX2做红外热成像仪的识别,厂家不提供源码,只能提供对应版本的SDK,但是需要我们自己提供交叉编译器 由于之前没有做过交叉编译相关工作,对编译工具不太了解,因此查找相关资料学习下 交叉编译知识 一般来说,针对嵌入式平台的开发有两种编译模式:原生编译和交叉编译。原生编...

ZONGXP的博客 8383

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

影墨·今颜辅助游戏开发:快速生成概念原画与场景素材

本文介绍了如何利用星图GPU平台,自动化部署AI图像生成镜像“🎨 影墨·今颜 (Ying Mo Jin Yan)小红书”,以辅助游戏美术开发。该工具能快速将文字描述转化为视觉概念图,其核心应用场景之一是高效生成游戏角色、场景的概念原画与素材草图,从而大幅缩短前期美术设计周期。

weixin_28888459的博客 380

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

摄像头的像素与分辨率之间的关系

转发自:https://blog.csdn.net/q199502092010/article/details/80255843 最近在看摄像头的驱动,一直没搞懂像素和分辨率之间的关系,特收集来学习一下: 我们买数码相机或是评价相机功能的时候,常常提到相机的“像素”这一概念,认为像素大的相机就好,就能拍出精细的图片来,现在有的高档数码相机的像素数高达上千万,一般的家庭用相机的像素达到了四百...

a573233077的专栏 892

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

AJAX / AJAX框架 / AJAX.NET (Professional) / ASP.NET AJAX

====================================================== 注:本文源代码点此下载 ====================================================== 学习或者研究一个东西,前提至少得先明白它是一个什么东西。 用过ajaxpro,了解过asp.net ajax,最近在学习jquery,为了理清楚

javazhuanzai的专栏 424

饿了么2018秋招笔试试题及其答案

  单选题  1.如果a===a为false,则说明a是:B A.Infinity B.NaN C.Undefined D.Null      2.页面文档完全加载并解析完毕之后会触发的事件是:C  A.ready B.load C.DOMContentLoaded D.DOMContentReady      3.‘string’instanceof String的结果是:B ...

十年互联网开发老兵,陪你一起学技术 5082

SQL学习 之SQL基础

<br />本文转载至: http://topic.csdn.net/u/20100826/18/08132ed8-a383-46ea-b08f-6794702ff236.html<br /> <br />第一部分:SQL基础<br /><br /><br />1. 为什么学习SQL<br /><br />自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献、档案、资料、数据等);在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到前所未有的广度和深度。如何管好和用好信息,是(

金 色 的 草 棚 549

c语言-20补码多少,C语言 关于补码的几个小知识

加法器计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。 即:减去某个数字(或者说加上某个负数)的运算,都应该研究如何用加法来完成。模、补数 在日常生活当中,可以看到很多这样的事情: 把某物体左转 90 度,和右转 270 度,在不考虑圈数的条件下,最终的效果是相同的; 把分针倒拨 20 分钟,和正拨 40 分钟,在不考虑时针的条件下,效果也是相同的; 把数字 87,减去 25...

weixin_42453050的博客 1853
上一篇: 常用简易JavaScript函数
下一篇: 正式发布 .Net2.0 大文件上传服务器控件
sqlmlm
博客等级 码龄19年 12粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值