王者荣耀

    今天这是第五天玩王者荣耀了,平时战绩一般,不能老玩,要歇着玩,今天这一局简直开挂,还是用我的后羿,出装用的打野,另外又掌握了躲草丛战术和迂回打击战术,并且使用了疾走的技能,卧槽,简直开挂啊,就发现越来越屌,来一个打一个,有时候一个人单挑俩15级英雄都没问题,直接碾压啊,哈哈哈哈,然后见到英雄都不用逃跑,刷刷刷,一会儿就干死一个满血英雄,打得见着我就跑,哈哈哈哈哈哈,开心死我了,战绩32杀,2卦,6助攻,装备全顶级,还剩4000多块钱花不出去,头疼,哈哈哈,最后必然赢了,要是失误输了,太可惜太丢人了,而且敌人其实也好多次打到我方基地来,最后还是我自己一个人带小兵中路一路屠杀,其他人上下两路打英雄,当然没有我打的快,到了地方水晶没花多长时间就赢了!✌️OH YEAH!好久没这么开心了!



    把遮光窗帘挂上了,果然就像晚上一样,做事会比较认真,不知道用久了会不会黑白颠倒啊。
    放假回来这段时间状态还是可以的,至少比以前强,稍微踏实点儿了,希望能继续保持下去。另外帮人找房子也终于落定了,也省了不少心,而且说是也没赔钱。

February 07th, 2017

   新的一年第一篇日志,很不想拖到这么晚才写,春节期间焦虑的毛病也没少发作,原来焦虑是一种状态,而不会因为特定的目标消失而消失,而是会自动寻找到下一个让你焦虑的目标然后发作,但至少这次是这样。
    时常告诉自己,不好的状态只是一种“心情”,并不是真实的,叫自己去克服。每年回家都会听到谁谁谁又怎么样了,混的多么不错,年年也会暗自下决心好好干,可是一回北京上几天班,就又回到老样子了,其实今年也是如此,暗下决心。但是今年有些不同的是,时间在前进,年龄在增大,其实在这段时间,自己已经做了一些以往做不到的事情,这些事情对我来说意义还是蛮大的,排除干扰,少磨叽,不再拖拉,有些已经提到日程上来了。往年,都会因为那些事搞得很烦,今年就好很多。
    在家看书的时候,认真的分析了为什么看不进去,就是阅读困难症啦,这次我狠狠的反省了一下,读字的时候“漏字”“串行”的毛病,发现其实就是焦虑的毛病引起的,很多藏在潜意识里的焦虑元素原来一直影响着我生活的方方面面,就像收音机里的杂音波,一直影响自己,问题找到了,说白了就是要排除杂念,别墨迹,相信自己的判断,也不要骗自己,就这样就好。

December 24th, 2016

冬日的中午,小睡了一会。醒来后,跑到外面的阳台上,外面的冬日暖阳照着身上格外的舒服。
初冬的阳光,没有春光的绚丽俏皮,也没有夏日阳光的热烈,更不似秋日阳光的明媚,然而冬日的阳光却有它独特的美丽,它在温暖柔美中略显明媚,悠远绵长里蕴含着淡泊从容,它有着春日阳光的神韵有着夏日阳光的妩媚更有秋日阳光的深邃。
冬日暖阳带给我的是一份美好的回忆。一轮暖阳,犹如一把开启我记忆大门的钥匙,让我在尽情享受温暖的同时,无法不忆起定格在记忆画屏中那一幕幕。
不知是大学的时光对我来说缺失了什么,回到这里就似乎一把钥匙打开心扉,坐在教室里晒晒太阳,小憩一会儿,似乎又回到了八年前的冬天

December 03rd, 2016

    以前公司的一个朋友来杭州有段时间了,周三才抽出时间来聚一聚,这次是有六年没见了,约好在河坊街麦当劳见面,其实之前在微信朋友圈也有看过照片,没想到,第一面,艾玛,胖了。。居然我也是变胖了。。。真是醉了,难道任何人多年不见都会发福吗,真是岁月是把刀啊。他们公司在这边开了两家店,他是来帮忙的,去了店里看了看,装修还真是不错的,应该说是是这附近最有特色的店了,怪不得买东西的人很多,想也不用想老板很赚钱的了。
     后来就去西湖逛了逛,逛完又吃饭喝酒,回到酒店就快十二点了,哈哈

November 26th, 2016

  今天同屋的阿凯跑去上海跟冯俊伟他们聚会去了,我在酒店一个人待着,也到不无聊,打打游戏,中午吃了顿海鲜大餐,下午看电视洗澡洗衣服,就这么过去了,明天约好和来杭州的旧同事出去逛逛吃个饭什么的。杭州最近也真的是很冷了,白天才五六度,这次来也没带什么衣服,天天冻得嘶哈嘶哈的,后来终于明白这就是导致闹肚子的原因。
   去普华永道面试完也没消息了,虽然对那个让人生厌的面试官很讨厌,但是多少还是期待这次面试有下文的,也许是为了一次工作机会,也许是对自己能力的一种证明,下周再没消息就不再盼了,等出差回去好好找工作。
   有些事还是犹犹豫豫,不能干净利索,哎╮(╯▽╰)╭

November 19th, 2016

     今天是生日吼,这一天会觉得有那么一点点的放松,但是并没有怎么过,中午泡面凑合一顿,晚上一顿驴火。最近出差很忙,今天是周日,我周四才从杭州赶回来,在那边已经呆了三周了。这次回来主要是因为有一个面试,普华永道的,越临近日期反而开始期待。对于这次面试并没有什么准备。去了之后,环境不错的,面试一共两个人,第一个人主打技术,第二个人,妈嘞,问题非常刁钻,咄咄逼人,因为并没有思想准备所以一上来还是挺蒙的,至于结果如何,也不重要了,等出差完了再认真投简历吧。
      还一件事儿,就是一冲动买了罗技G29,很多游戏不配套啊,麻烦死了,折腾好久才能玩,但是玩起来的感觉真的just so so啊,好无聊,装了一个尘埃拉力,太难了!玩不起来!!现在已经被我装箱子,打算卖掉…哭😭花了钱也很伤心…..
       下面的图是楼顶拍的哟,很适合烧烤party,浙江信息院楼顶。
      

Web Api 2 中关于Action返回值的详细介绍

原创文章转载请注明出处

本文介绍WebApi2如何将action中的结果返回至Http输出中。
 
一个WebApi Controller可以返回以下任意一种类型:
   1.void
   2.HttpReponseMessage
   3.IHttpActionResult
   4.其他类型
 
依据不同返回类型,WebApi会选择不同的机制来创建Http Reponse
 

例子:
 
 
1.void
WebApi会简单的返回空消息,状态码为204
 
public class ValuesController : ApiController
{
    public void Post()
    {
    }
}
 
HTTP 返回:
HTTP/1.1 204 No Content
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 02:13:26 GMT
 
2.HttpResponseMessage
WepApi会直接将值写入到Http响应中去。你可以使用一些选项在输出之前对http响应做一些控制,例如,可以控制Cache-Control头。
public class ValuesController : ApiController
{
    public HttpResponseMessage Get()
    {
        HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, “value”);
        response.Content = new StringContent(“hello”, Encoding.Unicode);
        response.Headers.CacheControl = new CacheControlHeaderValue()
        {
            MaxAge = TimeSpan.FromMinutes(20)
        };
        return response;
    }
}
 
Response:
HTTP/1.1 200 OK
Cache-Control: max-age=1200
Content-Length: 10
Content-Type: text/plain; charset=utf-16
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 08:53:35 GMT
hello
 
如果你将一个领域模型对象传递给CreateReponse方法,WebApi会自动调用media formatter将模型序列化后写入到Http响应中。
public HttpResponseMessage Get()
{
    // Get a list of products from a database.
    IEnumerable<Product> products = GetProductsFromDB();
         // Write the list to the response body.
    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, products);
    return response;
}
WebApi根据Http请求中的Accept头来选择具体使用哪个序列化器,更多信息参见 Content Negotiation.
 
3.IHttpActionResult
该接口本质上,定义了一个HttpReponseMessage工厂,使用IHttpActionResult有一些优势如下:

  • 简化Controller的单元测试 unit testing 
  • 将创建Http响应的通用逻辑移动到单独的类中(Moves common logic for creating HTTP responses into separate classes)
  • 通过隐藏创建响应的底层代码,使Controller、aciton的变得更清晰。

 
该接口定义了一个方法ExecuteAsync,用来创建HttpReponseMessage实例
public interface IHttpActionResult
{
    Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken);
}

所以,当Action返回一个IHttpActionResult接口的时候,WebApi会调用ExecuteAsync方法生成HttpReponseMessage实例,然后HttpReponseMessage实例会将信息写入到Http响应中返回给用户。
下面是一个简单的继承IHttpActionResult接口,返回给客户端一个文本信息的例子:
继承:
public class TextResult : IHttpActionResult
{
    string _value;
    HttpRequestMessage _request;
         public TextResult(string value, HttpRequestMessage request)
    {
        _value = value;
        _request = request;
    }
    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        var response = new HttpResponseMessage()
        {
            Content = new StringContent(_value),
            RequestMessage = _request
        };
        return Task.FromResult(response);
    }
}
Controller:
public class ValuesController : ApiController
{
    public IHttpActionResult Get()
    {
        return new TextResult(“hello”, Request);
    }
}
Response:
HTTP/1.1 200 OK
Content-Length: 5
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 08:53:35 GMT
hello
 
但是,通常情况下我们会使用System.Web.Http.Results命名空间中的IHttpActionResult实现类。并且ApiController的一些内建辅助类可以返回这些实现类。
在下面的例子中,如果没有找到对应的产品ID,则会调用ApiController.NotFound返回一个404的IHttpActionResult的实例。否则的话,调用ApiController.OK返回一个包含产品信息的200状态的结果。
public IHttpActionResult Get (int id)
{
    Product product = _repository.Get (id);
    if (product == null)
    {
        return NotFound(); // Returns a NotFoundResult
    }
    return Ok(product);  // Returns an OkNegotiatedContentResult
}
 
4.Other Return Types其他返回类型
对于其他返回类型,WepApi会调用media formatter来序列化对象,还记得前面讲的吗,WebApi会根据请求中ACCEPT头来自动选择formatter(Content Negotiation)。然后将序列化结果写入到响应信息中。
public class ProductsController : ApiController
{
    public IEnumerable<Product> Get()
    {
        return GetAllProductsFromDB();//将会序列化
    }
}

注意:因为返回的是自定义类型,所以你不能直接指定返回错误代码404等,但是你可以通过抛出HttpResponseException 异常来指定错误代码,更多信息请看
 Exception Handling in ASP.NET Web API.
 
请求信息:
GET http://localhost/api/products HTTP/1.1
User-Agent: Fiddler
Host: localhost:24127
Accept: application/json
 
相应信息:
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
Date: Mon, 27 Jan 2014 08:53:35 GMT
Content-Length: 56
[{“Id”:1,”Name”:”Yo-yo”,”Category”:”Toys”,”Price”:6.95}]

October 23rd, 2016

    十分的矛盾,没想到事情好转之后自己会走的这么快,矛盾,近了不行远了也不行,而又没有那么多时间,却因为这个性格不得不犹犹豫豫的,下不了决心。