一些开发遇到的"小问题",你能答对多少?
我会把问题先写在前面,答案用白色字体写在后面.所以用鼠标选择文本就可以看到答案啦.
调用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" 时生效, ...
随机推荐
- 在SQLServer处理中的一些问题及解决方法 NEWSEQUENTIALID()
一.DBLINK性能问题select * from dbsource.dbname.dbo.table where guid in (select guid from tablechangelog w ...
- Java for LeetCode 031 Next Permutation
Next Permutation Total Accepted: 33595 Total Submissions: 134095 Implement next permutation, whi ...
- C语言字符串处理
一. C语言中,为什么字符串可以赋值给字符指针变量 char *p,a='5';p=&a; //显然是正确的,p="abcd"; ...
- Android实现支持缩放平移图片
本文主要用到了以下知识点 Matrix GestureDetector 能够捕捉到长按.双击 ScaleGestureDetector 用于检测缩放的手势 自由的缩放 需求:当图片加载时,将图片在屏幕 ...
- 关于Android中RemoveView的错误理解
我以前一直以为,一个View被removeView了之后,就会被回收.其实不是这样的.如果有人引用它. 它还是会存在的.removeView和View被回收没有必然的关系.一个View被removeV ...
- Android Dev Guides
Android Dev Guides Google Java编程风格指南中文版 英文地址:http://google-styleguide.googlecode.com/svn/trunk/javag ...
- Java Hour 39 Maven ( 1 )
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. Hour 39 Maven 1 Perhaps you are running ...
- J2EE面试题集锦(附答案)
转自:http://blog.sina.com.cn/s/blog_4e8be0590100fbb8.html J2EE面试题集锦(附答案)一.基础问答 1.下面哪些类可以被继承? java.lang ...
- Android R文件相关问题
今天遇到的问题,gen下没有自动生成文件,而大部分java文件中错误是找不到R.java.“R cannot be resolved to a variable” 这就一定有别的原因造成错误, ...
- Centos升级内核 --已验证
Docekr 对内核由要求,3.10以上 Centos 6.5内核达不到要求 [linux@localhost Desktop]$ sudo service docker statusdocker d ...