一些开发遇到的"小问题",你能答对多少?

我会把问题先写在前面,答案用白色字体写在后面.所以用鼠标选择文本就可以看到答案啦.

调用await后因为切换了线程环境(这种说法可能不严谨,但我只能想到这种说法),httpcontext会为null.自然取他的属性(request,response)会出现未将对象引用设置到实例的异常.

虽然据说4.5有"友好线程上下文"的说法,但是呢,当时我试了那个配置,发现装逼失败.最后用临时变量储存,await之后再赋临时变量给当前上下文.

网站

发布网站的时候,全站源代码做成一个压缩包,然后丢到公网的项目根目录里,解压.这个操作有什么问题.

整站源代码都可以下载.好开心耶.(IIS默认没有禁止访问压缩包)

为什么网站发布完第一次访问的时候很慢?

JIT(即时编译)

基础

Dictionary

        public void RandomString(List<int> list)
        {

            Dictionary<int, string> d = new Dictionary<int, string>();
            foreach (var item in list)
            {
                d.Add(item, "");
            }
         }

  上述代码有什么问题?

没有判断字典的添加需要先判断key是否存在.推广一下,其实很多情况下自认为不会重复的数据结果往往都会重复,这时候得去重和判断key,两者选择一个方案.

正则表达式

这个判断正则的方法有什么问题?

  public static bool IsEmail(this string str)
        {
            var reg = new Regex(@"^[\w-\.][email protected]([\w-]+\.)+[\w-]{2,4}$", RegexOptions.Singleline | RegexOptions.ExplicitCapture);
            return reg.IsMatch(str);
        }

  string参数为null的话正则会出错.其实这也是一个很通用的问题.如果各种引用类型为空的话,你调用他们的成员方法是要出异常的.

哪一个if的写法没有问题?

            string[] a;
            if (a.Any() || a == null)
            if (a == null || a.Any())

第二个,因为这涉及到一个程序设计的基本概念:短路.即||/|在条件1为true的话就不会执行后面的判断.

!=null&&XX.Any()同理

而对于null用集合的any方法,显然是不合适的.

ASB.NET MVC

控制器

下图是某个控制器里某个action的写法,不考虑rows的类型和这个异常的出现.此外,这个代码片段有什么问题?

1用request[]绝对差评,不能因为便携性而如此偷懒.并且,要偷懒也是把提交内容作为action参数,模型绑定会帮你转型,如果也不会需要下文的类型转换.

2对于请求的参数类型转换写法有误,理应是tryparse,2个结果皆为true才进行下一步.该coder只考虑了请求参数不为空的问题,没有考虑请求参数的其他合法性问题.

3局部变量的声明声明顺序(list)有误.比如我们需要连接数据库的时候,应该是在所有的验证通过之后,最后调用.

4设计规范问题.很多初学者看了微软模板后认为,控制器负责业务逻辑.然而,实际上控制器应该是最薄的一层,这既是为了方便分开测试.也是MVC本身的规范.

        [HttpGet]
        public ActionResult Des(string json)
        {
            return Json(new { a = "" });
        }

  有什么问题?

应使用其重载,追加参数 JsonRequestBehavior.AllowGet

视图

在视图中使用HTML.action 需要注意什么问题?

该方法会走一遍请求管道,滤器也会跑过去

不能使用异步控制器方法(async Task<ActionResult> .ASB.NET vnext将会有异步组件取代.)

递归调用问题.就是这个A的子action里面返回了一个分部视图,然后这个分部视图调用了A的那个action.

这个问题提醒大家,慎用全局过滤器,慎用html.action.

如何捕捉视图的异常?

用自定义异常过滤器(HandleErrorAttribute).(好吧,我打脸了).

避免因属性变更导致的强类型视图里的字段没有更新导致的视图编译错误如何防止?

可以在编译时追加编译视图.

一个不是问题的问题

为什么我写这文章的文字符号都用半角(英文标点)

因为用全角符号写程序符号将导致无法通过编译.

之前刘兴国一段时间的揭秘网站:

http://cafebabe.cc/nazo/

据说有500关.

如果这些问题你都知道答案,那么恭喜你,你是一个"有经验"的开发人员吧.

因为我也不知道经验这玩意该咋衡量.年?好像不太合适.

这些问题都是我遇到过的,如果用年算的话,你觉得能折算成多少年?

时间: 2024-12-18 10:58:35

一些开发遇到的"小问题",你能答对多少?的相关文章

asp.net 开发时的小问题

最近公司老板让我用asp.net开发公司的小的ERP系统,在用jquery ajax访问aspx.cs文件中的[WebMethod]的静态方法时老是遇到身份验证的错误信息,头疼了好久找不到方法,终于在一个外国的外码分享网站找到了解决的方法,就是把APP_Code里的RouteConfig.cs文件中的 settings.AutoRedirectMode = RedirectMode.Permanent 改为 settings.AutoRedirectMode = RedirectMode.Off

程序开发的一点小总结

程序开发的一点小总结, 给要学习一门新语言的朋友一些帮助, :P 1.多项条件下的处理 第一种方法: 每个需要执行A函数的条件下都写一边A函数调用, 这种方式也是最中规中矩的写法, 代码相对臃肿, 如果A有任何变动, 就要修改多处, 这种代码块写多了, 容易漏掉 if(b==1) a() else if(b==2) else if(b==3) a() else a() 第二种写法: 在B条件筛选前, 创建一个临变量布尔c, 用来监控需要A函数需要的条件, 需要就为true, 不需要就不写(默认初

开发中各种小经验或技巧

1.js.jsp种判断list长度 js  :  list.length jsp: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>            list的长度是:${fn:le

微信公众平台功能开发(微信小店接口)

微信公众平台本次更新增加了微信小店功能,微信小店基于微信支付,包括添加商品.商品管理.订单管理.货架管理.维权等功能.不过此功能只能服务号才有,支付方式有微信支付和支付宝支付,唯一缺点就是所有的模块全部是一样的,容易产生视觉疲劳,上下架商品不是很方便,不过听适合想在微信开店的朋友们. 微名汇:http://weixin.zgtuango.com 联系QQ:44653139 开发者可以通过小店接口来实现快速开店,目前支持以下接口: 1.商品管理接口 开发者可通过商品管理接口,来增加商品.删除商品.

javascrpit开发连连看记录-小游戏

工作之余,总想做点什么有意思的东西.但是苦于不知道做什么,也就一直没有什么动作.在一个午饭后,跟@jedmeng和@墨尘聊天过程中,发现可以写一些小东西来练练手,有以下几点好处: 1. 加强巩固前端相关知识 2. 可以用一些平时项目中想用但没用的新东西 3. 一块儿做相同的东西,可以分享各自不同的想法 先来一张效果图,也可以来这里玩玩~      接下来就介绍一下做这个小游戏,自己的一些步骤和思路: 首先就是熟悉连连看的规则,为此还专门下载了一个app感受了一下,规则简单的说就是:找到两个相同的

Chromium开发--入门C++小例子

开始做Chromium开发的时候,都是从代码去摸索的,现在有几个例子了.希望看到的同学能有帮助,比直接在大量代码里领悟要快很多了. C++ in Chromium 101 - Codelab http://www.chromium.org/developers/cpp-in-chromium-101-codelab 0) hello world - https://codereview.chromium.org/23567011/ 1) command line arguments - http

spring+springmvc+hibernate架构、maven分模块开发样例小项目案例

maven分模块开发样例小项目案例 spring+springmvc+hibernate架构 以用户管理做測试,分dao,sevices,web层,分模块开发測试!因时间关系.仅仅測查询成功.其它的准备在ext上做个完整的案例来的,可惜近期时间非常紧. 高级部分也没做測试,比方建私服,其它经常使用插件測试之类的,等用时间了我做个完整ext前端和maven 完整的样例出来,在分享吧. 只是眼下这些撑握了.在项目中做开发是没有问题的,其它高级部分是架构师所做的. 之前我有的资源都加上了积分,有些博友

Linux以及Android开发中的小技巧和长繁命令记录收集

不断更新收集中.... 2014071743 ssh以nx_guest的身份登录到172.24.221.137,然后在172.24.221.137与172.24.61.252的8080端口建立网络连接,同时创建端口为5678的本地代理服务 ssh -C -f -N -o 'TCPKeepAlive=yes' -L 5678:172.24.61.252:8080 [email protected] 反编译android下的二进制程序 ./prebuilts/gcc/linux-x86/arm/ar

带你使用h5开发移动端小游戏

带你使用h5开发移动端小游戏 在JY1.x版本中,你要做一个pc端的小游戏,会非常的简单,包括说,你要在低版本的浏览器IE8中,也不会出现明显的卡顿现象,你只需要关心游戏的逻辑就行了,比较适合逻辑较为简单的小游戏,在JY官网也写了很多的小游戏demo,但后来由于工作的缘因,一直没太去维护他,真是一转眼,已经是移动互联网的时代了,5年后的今天,有了重新构思JY框架的冲动,于是全新的JY2.0开始构建了.它将只适用于h5的移动端游戏开发,它将更多的去关注更复杂的js游戏,不在局限于红白机时代. 在使