WCF入门学习教程演示

作者:小菜 更新时间:2025-03-16 点击数:
简介:Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.

【菜科解读】

Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。

由 .net framework 3.0 开始引入。

WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。

WCF合并了Web服务、.net Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中。

WCF专门用于面向服务开发。

跟着msdn的教程试了一下wcf,比起以前用socket真的简单了许多。

1.先创建一个wcf服务库,是服务类库,远程的lib

2.全部按照默认设置,不修改。

然后点发布,会出现一个wcf测试客户端,可以看有没有发布成功。

3.msdn的wcf教程还要求输出控制台命令,生成一些文件。

如果简单使用其实不需要。

现在创建一个控制台程序,作为客户端。

4.添加服务引用(可以看出vs对wcf的高度集成)

5.然后找到刚刚的wcf测试客户端,把服务器地址放上去。

然后调用服务类库上的类,测试

ok,测试完成了。

WCF,入门,学习教程,演示,Windows,Communi

新手塔罗牌入门教程?几种重要的塔罗牌

塔罗牌相信很多人都已经有所耳闻,身边经常会有用塔罗牌占卜运势的朋友。

市面上大大小小的塔罗牌种类接近千种,但是主流的会更好理解,容易被大众接受。

新手塔罗牌入门教程 一、关于塔罗牌种类的选择目前,市面上流行的塔罗牌非常多,接近千种。

而其中比较常见的塔罗牌有:马赛塔罗牌、伟特塔罗牌、托特塔罗牌和罗宾伍德塔罗牌等。

不同种类的塔罗牌,其中所包含的元素也各不相同,我比较建议使用“罗宾伍德塔罗”和“韦特塔罗”。

特别是罗宾伍德塔罗牌,宗教元素比较少,无论是从色彩、构成还是画风对于沃恩东方人来说更容易被接受。

二、“大卡”和“小卡”的区别无论哪种塔罗牌,均由22张大阿卡那牌和56张小阿卡那牌组成。

大卡主要用来占卜整体运势,用来占卜关系和特质。

小卡更加细腻。

初学者在刚开始接触塔罗牌的时候,阳阳老师建议先从“大卡”开始。

因为相对大卡数量比较少,便于记忆和理解。

待熟练一段时间之后,再在占卜的时候加入“小卡”。

酱才能在不断的实践中增加自信和熟练度。

三、正位和逆位通常,在占卜的过程中我们将正面对着占卜师的牌叫做“正位”,逆向对着占卜师的牌叫做“逆位”。

“逆位”的寓意通常是“正位”的相反、削弱或者负面加强。

四、牌阵不同的牌阵针对“求问者”的不同占卜事情而定。

比方说,有小伙伴找阳阳老师来占卜“爱情”。

这时我通常会再次询问是哪种爱情?这直接决定了,等一会使用哪种牌阵来进行占卜。

比较常见的分类有:单身、有意中人、意中人的选择、正在热恋、已婚等。

这些不同的分类,在占卜的时候对应的塔罗牌阵也各不相同。

塔罗牌阵根据难易程度分为:初级牌阵、中级牌阵和高级牌阵。

解牌的时候,不同难度的牌阵所需要消耗的时间和精力也各不相同。

阳阳老师建议初学者从常见的初中级牌阵开始学起。

五、仪式感仪式感对于塔罗师在占卜时是十分重要的,除了保持神秘感和庄重感之外,也会增加塔罗占卜师“念的感应”,这一点特别是在占卜的过程中式十分重要的。

简单来说,“念”可以增加塔罗占卜师与“求问者”之间的“感应”,增加占卜的准确性和成功率。

最直接的表现就是可以增强占卜师的“自信”,便于占卜师集中精力。

六、解牌就像刚刚阳阳老师说到过的一样,不同的塔罗牌的寓意是不同的。

再加上同一张塔罗牌还有正位和逆位的区别,在解牌的过程中就更加要求占卜师对塔罗牌的理解和诠释。

塔罗牌的核心主要就是“解牌”,结合对“求问者”的占卜事情和塔罗牌阵进行分析和建议。

同时,还可以根据十二星座、四大元素和卡巴拉生命之树等进行解牌。

酱,准确性和成功率才能明显提升。

七、占卜道具塔罗牌占卜除了仪式感之外,道具也十分重要。

通常需要在占卜的时候同时具备火土风水四大元素在场为宜,当然,也可以使用“闪卡”代替。

其它诸如:塔罗牌占卜专用桌布、水晶球、灵摆等可以根据条件选用。

常见道具及与元素对应关系如下:燃烧的蜡烛:火和风元素。

盛水的水晶杯:水和土元素。

八、占卜流程首先我们需要得到一套独属于自己的塔罗牌,经过“开牌”后就可以为自己或者身边的小伙伴们进行占卜了~1、询问“求问者”的星座,具体的占卜事项;2、为“求问者”选择对应的塔罗牌阵;3、解牌;4、整体分析;5、结合星座、元素、卡巴拉生命之树进行综合分析;6、互动;在塔罗牌的世界中,有些牌虽然现在已经保存不全或没有人使用了,却有着极高的历史价值,它们曾为塔罗牌的成熟奠定了坚实的基础。

它们现在大多作为文物或者收藏品,被保存在博物馆或者收藏家的手中。

上图是已知的保存至今最早、最完整的一套塔罗牌。

1450年,在意大利米兰地区的索佛萨(Sforza)和维斯康提(Visconti)两家族联姻,新郎索佛萨的朋友、著名的意大利艺术家班宝(BonifacioBembo)手工绘制了这副著名的塔罗牌作为礼物。

画中的人物是当时的著名人物。

虽然此牌号称是迄今为止保存的最早、最完整的一套塔罗牌,但其实也已残缺不全。

现在主要有三套塔罗牌保存得相对比较完整,分别是保存在纽约皮尔庞特·摩根图书馆的“Pierpont-MorganBergamoVisconti-Sforza”,牌的尺寸规格为176mm 87mm,现存74张;保存在美国耶鲁大学图书馆的“Cary-YaleVisconti”,牌的尺寸规格为189mm 90mm,现存67张;收藏于意大利米兰的“Brera-BrambillaVisconti”,牌的尺寸规格为178mm 88mm,仅存48张。

保存在纽约皮尔庞特·摩根图书馆那套最完整的维斯康提塔罗牌缺少了“恶魔”、“塔”、“宝剑三”、“星币骑士”四张牌,现今市面上流通的维斯康提塔罗牌是在此基础上根据十五世纪末在波隆那(意大利的一座城市)印制的“罗宾伍德图稿”重新创作,补齐了遗失的四张牌而成的。

#p#分页标题#e#维斯康提塔罗牌是传统塔罗牌的代表,副牌小阿卡纳的牌面只由简单的宝剑、圣杯、权杖或者星币以不同数量、不同方式排列构成。

维斯康提塔罗牌的小阿卡纳虽然适于冥想,但是牌义并非直观可得,所以并不适合新手使用。

下面介绍的是现今最受塔罗师们欢迎和好评的塔罗牌。

韦特塔罗牌莱德·韦特塔罗牌的画面简单明了,内涵也比较丰富,适合刚刚入门的新手使用。

但是对有一定基础的塔罗师们来说,这种简单在带来方便的同时也束缚了想象和发展的空间,不利于更好地了解事件的深意和全貌。

虽然也不乏大师级人物在使用韦特牌,但韦特牌如小孩子玩具般的看法还是广泛存在于塔罗界的。

至今天出现了80张版本的透特牌。

依据克劳利本人的说法,“魔术师”这张牌的图像应该是虚幻的,包容了许多含义,一张牌无法表述完全。

所以他设计了一张希腊风格的“魔术师”、一张印度风格的“魔术师”,还有一张埃及风格的“魔术师”。

克劳利至死,也未能设计出一张他完全满意的“魔术师”。

据说在这棋牌“魔术师”中,克劳利最满意的是希腊风格的,所以现在市面上78张版本透特塔罗牌的“魔术师”都是釆用希腊风格的那张。

在克劳利与哈里斯女士的有生之年,这副牌都只是他们自己使用,并在不断地完善之中,一直都没有向世人发布。

直到他们相继去世多年后,1969年这副塔罗牌才由克劳利的朋友、他所领导的魔法协会“〇T〇”(OrdoTempli Orientis)的一位重要成员格雷迪少校(GradyL.McMurtry)整理出版。

这副牌出版后,不但广为人知,而且备受尊重,尤其是受到专业塔罗牌师们的喜爱。

这副牌虽然具有丰富的内涵和象征,并蕴含着极高的灵力,但遗憾的是其画面过于深奥,而且市面上关于透特牌的书籍也不多见,所以刚刚入门的新手们只能望而却步,因此这套牌的普及程度也远远不如韦特牌。

诺斯塔罗牌2.麻将洗牌法首先将牌叠放在桌面上,然后双手将牌慢慢抚平,使牌散乱地平铺在桌面上。

这个过程就像打麻将时和牌后将麻将推倒一样,只是动作由推变做抚,由用力变做轻柔。

接下来也如麻将洗牌一样,双手朝一个方向(顺时针或逆时针)轻柔地搓洗,让每张牌都旋转起来,让整副牌作为一个整体也一起旋转起来。

当牌洗净后,双手再将牌汇聚一拢,横向整理成一叠。

OpenCV是什么OpenCV入门级教程

首先声明,这一系列博文是本人在学习 OpenCV 的过程中对自身学习的一个总结而已,仅作为 OpenCV 入门级参考,并没有什么内容值得高手参考,所以,只适合和我一样正值学习状态者阅读,高手无意者请飘过,但欢迎留言指教。

OpenCV 是一个开源的计算机视觉库,其采用 C/C++ 编写,被设计为可移植的库,OpenCV 的设计目标是执行速度尽可能的快,其主要关注的是实时应用,同时,OpenCV 的另一个目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关的应用程序。

OpenCV 的结构和内容上面这幅截图是 OpenCV 源码的文件组成结构,可以看出其中包括 cv ,cvaux , cxcore , highgui , ml 这 5 个模块。

如果以库来体现这几个模块之间的关系的话,可以采用下面的结构图来展现:CV: 包含了基本的图像处理函数和高级的计算机视觉算法,包括图像处理,图像结构分析,运动描述和跟踪,模式识别和摄像机标定。

ML: 是机器学习库,包含一些基于统计的分类和聚类工具。

HighGUI: 包含图像和视频的输入/输出函数。

CXCORE: 包含了 OpenCV 的一些基本的数据结构和相关函数。

CVAUX: 该模块则是一般用存放即将被淘汰的算法和函数,同时也包含一些新出现的实验性的函数和算法。

关于 OpenCV 的介绍到此介绍,下面呢,就是通过一个 Demo 来学习一些常用的 API 的使用。

Demo 学习 Demo01下面的 Demo 将介绍如何显示一张图片,具体 API 的使用请注意注释。

//在HighGUI 模块中包含了图像和视频的输入/输出的基本函数 #include "highgui.h" //使用了命令行下运行的形式,其中要在命令行下传递参数 int main(int argc,char ** argv){//通过cvLoadImage 将一幅指定路径的图片加载到内存中 //同时会生成一个IplImage 类型的结构 //这个结构会指向图片所在的内存区域 IplImage * image=cvLoadImage(argv[1]); //通过cvNamedWindow 来建立一个窗体 //因为图片必须在指定的窗体中才能显示 cvNamedWindow("Demo01",0); //通过cvShowImage 函数来指定在指定的窗口中显示指定的图片 cvShowImage("Demo01",image); //暂停程序的执行 //只有当用户按下任意键后才执行后面的代码 cvWaitKey(0); //释放掉加载到内存中的图片所占的内存资源 cvReleaseImage( //销毁窗口 cvDestroyWindow("Demo01"); } 至于程序的执行的话,必须到命令行下执行,同时还需要将一张图片拷贝到 exe 文件所在的目录,然后再在命令行中指定该图片作为参数传递到 Main 函数中。

Demo02下面继续看下一个 Demo,这个 Demo 将展示播放视频文件: //图像和视频的输入/输出均在HighGUI 模块中 #include "highgui.h" //播放视频文件只需要循环的顺序的读取视频中的每一帧 //读到帧后,便可以将这个帧作为普通的图像一样显示即可 int main(int argc,char **argv) { //首先需要建立一个窗口来容纳视频的播放 cvNamedWindow("Demo02",CV_WINDOW_AUTOSIZE); //打开一个视频文件,返回的 CvCapture 结构中包含了视频文件的信息 CvCapture *capture=cvCreateFileCapture(argv[1]);IplImage *frame; //循环顺序的读取视频中的帧 while(1){ //获取当前播放帧的下一个帧,并且将获取到的帧加载到内存中,覆盖掉前面帧所占的内存控件frame=cvQueryFrame(capture); if(!frame) { //如果没有读取到帧的话则说明播放完毕了 //从而退出播放 break; } //将读取到的帧显示在窗口中 cvShowImage("Demo02",frame); //每播放一个帧就在此等待30 毫秒 char c=cvWaitKey(30); //如果在30 ms 中用户按下了ESC 键 //(ESC 的ASCII 为27)则退出播放 if(c==27) { break; } } //分配的内存需要手动释放 cvReleaseCapture(&capture); //销毁窗口 cvDestroyWindow("Demo02"); } Demo03上面呢,确实是可以成功的播放视频了,但是一般的视频播放器都是有个滚动条的,允许用户手动拖动滚动条从而定位到视频指定的帧上,下面我们就要实现这个功能了。

//CV 模块中包含了图像处理,图像结构分析, //运动描述和跟踪,模式识别和摄像机标定 #include "cv.h" //包含了图像和视频的输入/输出 #include "highgui.h" //用来标定滚动条当前的位置 int g_Pos=0; //将打开的视频文件作为一个全局变量使用 CvCapture * g_Capture=NULL; //当拖动滚动条后,会回调这个函数 //同时会将当前滚动条的位置以32 位形式传递过来 void CallBackTrackBarSlide(int pos) { //这里便是重新设置视频文件当前播放的帧 cvSetCaptureProperty(g_Capture,CV_CAP_PROP_POS_FRAMES,pos); }int main(int argc,char **argv) { cvNamedWindow("Demo03",CV_WINDOW_AUTOSIZE); //根据参数打开指定的视频文件 g_Capture=cvCreateFileCapture(argv[1]); //获得总的帧数int totalFrames= (int)cvGetCaptureProperty(g_Capture,CV_CAP_PROP_FRAME_COUNT); if(totalFrames!=0) { //创建滚动条,在这里指定了滚动条拖动后的回调函数 cvCreateTrackbar("TrackBar","Demo03", &g_Pos,totalFrames,CallBackTrackBarSlide); } IplImage * frame; //循环的顺序的遍历所有的帧 while(1){ //获取当前帧的下一个帧,并将其加载到内存中frame=cvQueryFrame(g_Capture); if(!frame) { break; } cvShowImage("Demo03",frame); char chKeyCode=cvWaitKey(30); if(chKeyCode==27) { break; } } cvReleaseCapture(&g_Capture); cvDestroyWindow("Demo03"); return 0; }在测试的时候需要注意,有一些视频文件时不支持动态指定帧的操作,所以有可能拖动时会失败。

然后就可以拖动滚动条来定位帧了 Demo03上面的 Demo 呢确实是实现了可以通过拖动滚动条来实现对视频帧的动态控制,但是有一个问题就是滚动条并不会跟随视频的播放而自带增加,也就是,随时时间流逝,视频会一直播放,但是滚动条如果不人为地拖动的话是不会发生改变的,而我们要是实现的就是当视频播放到哪一个帧了,滚动条就应该位于相应的位置上,所以下面的 Demo 就来实现这个功能。

//CV 模块中包含了图像处理,图像结构分析, //运动描述和跟踪,模式识别和摄像机标定 #include "cv.h" //包含了图像和视频的输入/输出 #include "highgui.h" //用来标定滚动条当前的位置 int g_Pos=0; //将打开的视频文件作为一个全局变量使用 CvCapture * g_Capture=NULL; //当拖动滚动条后,会回调这个函数 //同时会将当前滚动条的位置以32 位形式传递过来 void CallBackTrackBarSlide(int pos) { //这里便是重新设置视频文件当前播放的帧 cvSetCaptureProperty(g_Capture,CV_CAP_PROP_POS_FRAMES,pos); g_Pos=pos; } int main(int argc,char **argv) { //建立一个名字叫做Demo04 的窗体 cvNamedWindow("Demo04",CV_WINDOW_AUTOSIZE); //根据参数打开指定的视频文件 g_Capture=cvCreateFileCapture(argv[1]); //获得总的帧数 int totalFrames= (int)cvGetCaptureProperty(g_Capture,CV_CAP_PROP_FRAME_COUNT); if(totalFrames!=0) { //创建滚动条,在这里指定了滚动条拖动后的回调函数 cvCreateTrackbar("TrackBar","Demo04", &g_Pos,totalFrames,CallBackTrackBarSlide); } IplImage * frame; //循环的顺序的遍历所有的帧 while(1) { //获取当前帧的下一个帧,并将其加载到内存中 frame=cvQueryFrame(g_Capture); if(!frame) { break; } cvShowImage("Demo04",frame); char chKeyCode=cvWaitKey(30); if(chKeyCode==27) { break; } g_Pos++; //当播放完200 个帧的时候才触发滚动条滚动 if(g_Pos%200==0) { cvSetTrackbarPos("TrackBar","Demo04", g_Pos); } } cvReleaseCapture(&g_Capture); cvDestroyWindow("Demo03"); return 0; }从而实现了滚动条随着视频的播放而自动滚动的效果。

这一篇博文就写到这里了,从上面可以看出,主要是随着逐步的深入来介绍一些 OpenCV 的常用的 API ,其主线是首先是加载一张图片,而后再是加载视频,再在视频中加入滚动条,最后是滚动条和视频联动的效果,随着一步一步的深入,可以更好的熟悉 OpenCV 的几个常用的 API 。

OpenCV,是什么,入门,级,教程,首先,声明,这,

加入收藏
               

WCF入门学习教程演示

点击下载文档

格式为doc格式

  • 账号登录
社交账号登录