前言

上周去面试,跪了,这一年没什么长进,还是挺惭愧的。

得到的评语是:想的太多,做的太少。

做了一份面试题,最后一题是数据库的,写个查询。要查出Score有两次及两次以上超过79的Name和他的最高得分,同时显示超过79分的次数。

表内容如下:

直接上Sql答案了。

两种写法:

1. 最简单的方法,好像是万能的,表不断嵌套

select * from (
select Name, max(Score) as maxScore,count (name) as cnt from (
select * from Student where Score>79)
as S1 group by Name)
as S2 where S2.cnt>=2

最内层筛选出分数大于79的,取个别名S1,然后把S1结果用Name分组,然后得到每组的Name,max Score, count(name),然后结果取别名S2,然后用cnt过滤S2的cnt,得到超过2次的结果集合。

2. 用个with 来写CTE,然后用一下having关键字。

with S1
as
(
select * from Student where Score >79
) select name, MAX (score) as maxScore, COUNT (name) as cnt from s1 group by name having COUNT (name)>=2

写法好看了点,效率我也不知道怎么分析。。。有同学愿意帮忙分析一下效率吗。。。

执行上面两个查询,结果如下:

好了,言归正传,WCF入门。

第14集 实现IExtensibleDataObject接口所冒的风险 Risks of implementing IExtensibleDataObject interface

上一集,我们给DataContract 实现了IExtensibleDataObject接口,这个接口的ExtensionData属性可以用来保存客户端传过来的额外的内容,当服务端把实体类序列化成xml回传给客户端时,会一并序列化这个属性里面的内容,就可以避免客户端的数据丢失。但是,这样做有个缺点:

  容易被DoS攻击,因为这些额外的数据是保存在内容中的,如果客户端传过来一个较大的Object,那样就会在服务器上占用大量的内存,服务器会因为内存不够而无法提供正常的服务。

所以,现在的问题就是如何关闭这个特性。有下面几种方法。

1. 最简单的,DataContract类不实现IExtensibleDataObject接口,或者说移除DataContract类的IExtensibleDataObject接口实现,这样做可以是可以,但是假如我们有很多个DataContract都实现了这个接口,那么就要所有的都移除,比较麻烦。

2. 改配置文件的方式。 如下:

    <behaviors>
<serviceBehaviors>
<behavior name="mexBehavior">
<serviceMetadata httpGetEnabled="true" />
<dataContractSerializer ignoreExtensionDataObject ="true"/>
</behavior>
</serviceBehaviors>
</behaviors>

给behaviors节点dataContractSerializer 增加一个ignoreExtensionDataObject ="true".

3.同理,也可以通过编程的方式实现。

[ServiceBehavior(IgnoreExtensionDataObject=true)]
public class EmployeeService : IEmployeeService
{...}

这集就这么点东西,Thank you。

WCF入门 (14)的更多相关文章

  1. WCF入门教程(图文)VS2012

    WCF入门教程(图文)VS2012 上一遍到现在已经有一段时间了,先向关注本文的各位“挨踢”同仁们道歉了.小生自认为一个ITer如果想要做的更好,就需要将自己的所学.所用积极分享出来,接收大家的指导和 ...

  2. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  3. 【转】WCF入门教程六[一个简单的Demo]

    一.前言 前面的几个章节介绍了很多理论基础,如:什么是WCF.WCF中的A.B.C.WCF的传输模式.本文从零开始和大家一起写一个小的WCF应用程序Demo. 大多框架的学习都是从增.删.改.查开始来 ...

  4. 学习WCF入门的第一个实例

    一.概述 WCF说白了就是一个基于终结点的通信手段!就是Service端提供一定的功能实现,然后暴露出一个或多个终结点,Client端调用Service端的功能(可以理解为调用一个函数),那么Clie ...

  5. WCF入门教程(五)配置文件

    WCF入门教程(五)配置文件 服务协定以及实现写好后,需要将相关服务公布出去,就需要HOST来承载,供客户端来调用. 承载服务有两种方式,一种通过配置文件,一种通过代码进行配置.上一章已经介绍了代码方 ...

  6. WCF入门教程(四)通过Host代码方式来承载服务

    WCF入门教程(四)通过Host代码方式来承载服务 之前已经讲过WCF对外发布服务的具体方式. WCF入门教程(一)简介 Host承载,可以是web,也可以是控制台程序等等.比WebService有更 ...

  7. WCF入门教程(三)定义服务协定--属性标签

    WCF入门教程(三)定义服务协定--属性标签 属性标签,成为定义协议的主要方式.先将最简单的标签进行简单介绍,以了解他们的功能以及使用规则. 服务协定标识,标识哪些接口是服务协定,哪些操作时服务协定的 ...

  8. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  9. WCF入门教程(一)简介

    WCF入门教程(一)简介 1.WCF是什么? WCF( Windows Communication Foundation), 是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NE ...

随机推荐

  1. Lighttpd

    一.简介 Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全.快速.兼容性好并且灵活的web server环境.具有非常低的内存开销,cpu占用率 ...

  2. php redis 获取指定前缀的所有key

    php redis 获取指定前缀的所有key 以laravel框架为例: $key = $this->redis->keys('db:shipping:shippingId:' . &qu ...

  3. log4j日志优先级导致的不输出日志

    在sae部署微信代码的时候,发现它的默认日志很不友好,看起来很费劲,详细看了一下说明发现它可以根据log4j的输出级别而分类输出,就拖了一个log4j的xml文件扔进项目代码,然后部署运行,发现没有日 ...

  4. tika提取pdf信息异常

    org.apache.tika.sax.WriteOutContentHandler$WriteLimitReachedException: Your document contained more ...

  5. MVC+AjaxFileUpload文件上传

    来源:微信公众号CodeL 本次给大家分享的是ajaxfileupload文件上传插件,百度一大堆功能超炫的文件上传插件,为什么我们会选择这个插件呢? 原因是在此之前,我们尝试使用过很多基于flash ...

  6. runc的detach, console, tty等相关问题

    runc 端解析: 1. runc/utils_linux.go func (r *runner) run(config *specs.Process) (int , error) 在该函数中第一次对 ...

  7. 边工作边刷题:70天一遍leetcode: day 84-1

    Verify preorder sequence of Binary Search Tree 要点:simulating preorder sequence: 根据preorder的特点,首先会一直向 ...

  8. mac os利用xampp实现apache下的cgi

    折腾了两天终于把问题解决了,mac os是10.10.3..够新了吧 系统原生的apache配置cgi老是配不好,突然发现xampp也有macos版的,准备下下来试试. 安装完成后,打开apache服 ...

  9. SVN代码的回滚二

    SVN代码的回滚: 不丢失新建的文件,获得最新的SVN版本控制.TortoiseSVN-ShowLog-选中你要回滚的版本-右键-Export,之后将修改的文件覆盖到你的最新版本,commit即可. ...

  10. js模拟手机触摸屏

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...