吸引用户使用你的App技巧
开发者要在智能手机有限的空间发挥无限的创意和价值,这的确不是一件容易的事。为了使用户更有效地使用 app,开发者的 app 必须要做到精简和直观。另外,开发者更要巧妙地引导用户去发现和使用 app 的功能,本文为开发者提供了一些小技巧。 Tip#1:创建安装向导 如果你的 app 对用户输入依赖程度比较高,一个不错的办法是设置安装向导,在用户第一次使用的时候,就可以收集不少有用的信息。创建一个自定义安装向导,你可以把这个单调乏味的过程变得有趣和充满创造力。 Tip#2:提供 app 攻略 通过为用户提供使用攻...
编程中的异常处理
在 软件开发过程中,不可避免的会遇到错误处理,而且这部分对于整个软件的健壮性有非常大的作用,它是软件除了功能性以外最重要的指标了,一个软件成功与否与 其健壮性有很大的联系。我在以前的开发中也时常思考错误处理,因为这部分代码逻辑比较不容易梳理清楚。以异常的处理为例,以前通常就采用比较简单粗暴的处 理方式:用try..catch加Exception把所有异常都包起来,这样简单省事,写的代码最少,相信很多童鞋曾经跟我一样写过这样的代码,很明 显,这样写有很大的问题,最主要的问题在于: Ex...
从SQL语句的角度提高数据库的访问性能
最近公司来一个非常虎的DBA,10几年的经验,这里就称之为蔡老师吧,在征得我们蔡老同意的前提下 ,我们来分享一下蔡老给我们带来的宝贵财富,欢迎其他的DBA来拍砖。 目录 1、什么是执行计划?执行计划是依赖于什么信息 2、 统一SQL语句的写法减少解析开销 3、 减少SQL语句的嵌套 4、 使用“临时表”暂存中间结果 5、 OLTP系统SQL语句必须采用绑定变量 6、 倾斜字段的绑定变量窥测问题 7、 begin tran的事务要尽量地小 8、 一些SQL查询语句应加上nolock 9、加nolock后查询经常发生页分裂的表,容易产生跳读或重复...
oracle数据类型详解
有道是,磨刀不误砍柴工。多了解一些底层的东西,对于Oracle开发、维护大有裨益。个人总结了一些Oracle数据类型集解,相信读者阅读了本文以后,Oracle数据库开发起来会事半功倍! 在Oracle数据库中,每个关系表都由许多列组成。给每一列指派特定的数据类型来定义将在这个列中存储得数据类型。 1、CHAR 最多可以以固定长度的格式存储2000个字符或字节。默认指定为以字符形式进行存储,这个数据类型是固定长度的,并且当位数不够时,需要在其右边添加空格来补满。 例如: CREATE TABLE test (name cha...
CSS重置CSS多浏览器兼容
这一块CSS代码重置适合所有的浏览器以防止你的CSS代码不一致导致的兼容性问题 html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; outline...
DIV高度自适应方法
网站优化(seo)中,提到过网站样式的优化,即在网站的布局设计中,采用DIV+CSS来布局。网站制站中,我们经常要把两个并排显示的div实现一样高的效果,即每列高度(事先并不能确定哪列的高度)的相同,有以下几种方法(方法来源来互联网): 1、JS实现(判断2个div高); 2、纯css方法; 3、加背景图片实现。 div+css基本布局: <div id="mm"> <div id="mm1"></div> <div id="mm2"></div> </div> 1、js实现div自适应高度 代码如下: <script type="text/javascript"> &...
常用的javascript小技巧
字符串转换为数值 常规方法: var var1 = parseInt("2"); var var2 = parseFloat("2"); var var3 = Number("2"); var var3 = new Number("2"); 简便方法: var var1 = +("2"); 将其他类型转换为boolean类型 在JavaScript中,所有值都能隐式的转化为Boolean类型: 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 ""(空字符串) Number 任何非零数字值(包括无穷大) 0、NaN Object 任何对象 null Undefined (不适用) undefined 举...
C#线程之Task任务详解
在上篇最后一个例子之后,我们发现了怎么去使用线程池,调用ThreadPool的QueueUserWorkItem方法来发起一次异步的、计算限制的操作,例子很简单,不是吗? 然而,在今天这篇博客中,我们要知道的是,QueueUserWorkItem这个技术存在许多限制。其中最大的问题是没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成是获得一个返回值,这些问题使得我们都不敢启用这个技术。 Microsoft为了克服这些限制(同时解决其他一些问题),引入了任务(tasks)的概念。顺带说一下我们得通过System.T...
微软放弃 Silverlight?
微软今天关闭了 Silverlight.net 网站,现在访问该网站,会被转到 MSDN 的一个 Silverlight 专题页面。 在新的页面中,你仍然可以找到一些 Silverlight 相关的内容,但不是全部。如果你之前已经收藏了一些 Silverlight.net 域下的网页,现在可能已经失效了。 此外,Silverlight 博客近一段时间发布的也都是一些与 Silverlight 无关的文章。 这些现象预示着 Silverlight 已经逐渐被边缘化,另一侧面也反映了微软内部团队之间的斗争。 “微软放弃 Silverlight”的传闻早在几年前就闹得沸沸扬扬,争论主要围绕 Sil...