一些开发遇到的"小问题",你能答对多少?
我会把问题先写在前面,答案用白色字体写在后面.所以用鼠标选择文本就可以看到答案啦.
调用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-\.]+@([\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).(好吧,我打脸了).
避免因属性变更导致的强类型视图里的字段没有更新导致的视图编译错误如何防止?
可以在编译时追加编译视图.
一个不是问题的问题
为什么我写这文章的文字符号都用半角(英文标点)
因为用全角符号写程序符号将导致无法通过编译.
之前刘兴国一段时间的揭秘网站:
据说有500关.
如果这些问题你都知道答案,那么恭喜你,你是一个"有经验"的开发人员吧.
因为我也不知道经验这玩意该咋衡量.年?好像不太合适.
这些问题都是我遇到过的,如果用年算的话,你觉得能折算成多少年?
一些开发遇到的"小问题",你能答对多少?的更多相关文章
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
- 带你使用h5开发移动端小游戏
带你使用h5开发移动端小游戏 在JY1.x版本中,你要做一个pc端的小游戏,会非常的简单,包括说,你要在低版本的浏览器IE8中,也不会出现明显的卡顿现象,你只需要关心游戏的逻辑就行了,比较适合逻辑较为 ...
- Android开发效率的小技巧
提高eclipse使用效率(二) 提高Android开发效率的小技巧 XML文件的代码提示 adt中也有xml文件的代码提示,为了让提示来的更加猛烈,我们还要设置一下 打开eclipse - Wi ...
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...
- 开发一个微信小程序项目教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...
- 如何快速地开发一个微信小程序
如何快速地开发一个微信小程序呢?我觉得作为初学者,最好能有一个模板,然后改这个模板. 同样作为初学者,刚开始的时候我有下面的几个问题,后来通过问同学,我弄清楚了. 微信小程序可以连接MySQL或者Sq ...
- Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序
Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...
- 全栈开发工程师微信小程序-中(下)
全栈开发工程师微信小程序-中(下) 微信小程序视图层 wxml用于描述页面的结构,wxss用于描述页面的样式,组件用于视图的基本组成单元. // 绑定数据 index.wxml <view> ...
- 全栈开发工程师微信小程序-中(中)
全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...
随机推荐
- 通过eclipse配置Spring MVC项目
上一篇刚建立了一个简单的Spring项目,其实Spring MVC是一个和Struts2一样的基于MVC设计模式的web框架,并且继承了MVC的优点,是基于请求驱动的轻量级的web框架,spring ...
- SQLServer语句大使
1.创建数据库create database 数据库名字 2.删除数据库drop database 数据库名字3.创建表(identity(1,1)自动增长,倍数为1,primary key设置主键) ...
- 获取Assets目录下的图片并显示
package com.jingle.getlocal; import java.io.InputStream; import android.app.Activity; import android ...
- 解决ubuntu14.04下Qt 5.3.1下的QtCreator fcitx,ibus不能输入中文
http://my.oschina.net/u/219482/blog/341452 感谢作者 ubuntu 14.04从Qt官网下载的最新版qt,安装过程很顺利,但却发现没办法输入中文(我用的是 f ...
- struts2 标签问题----日期显示
对于要显示按照自己的意愿进行显示的话: <s:date name="date" format="yyyy-MM-dd HH:mm:ss.SSS" /> ...
- SPI通信实验---verilog(FPGA作为从机,使用可读可写)
本实验讲究实用性,故设计思想为:主机先向从机发送地址,若是向从机写入数据,则向从机发送数据,若是读取从机数据,则向从机发送时钟,然后在时钟下降沿读取数据即可.cs信号上升沿作为SPI通信的结束信号.r ...
- ping: unknown host www.baidu.com
#注意有很多的DNS服务器 为了防止DDOS攻击 所以都禁止PING [root@86 ~]# ping -c 2 www.baidu.com ping: unknown host www.baidu ...
- charles使用教程指南(抓包工具)
0x01 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等优势!下面来详细介绍下这款强大好用的 ...
- UVa 11524:In-Circle(解析几何)
Problem EIn-CircleInput: Standard Input Output: Standard Output In-circle of a triangle is the circl ...
- Codeforces Gym 100203G G - Good elements 标记暴力
G - Good elementsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...