给c#添加SetTimeout和SetInterval函数(转)

Posted by & filed under Uncategorized.

1. Javascript中的SetTimeout和SetInterval函数很方便,把他们移植到c#中来。 调用示例: 执行效果: 2. 实现代码:  

    3. 由于System.Timers.Timer 是“基于服务器的 Timer 是为在多线程环境中用于辅助线程而设计的”,所以在winform中使用时如果要修改UI对象就要注意了,给个在winform中使用的例子: 运行效果: Read more […]

android4.0版本之前和之后编程的一些注意点

Posted by & filed under Uncategorized.

1 首先是菜单Menu 变成了Action Bar来实现相同的功能 2 上下文菜单使用了 变成ActionMode了来实现相同的功能 3 sd卡路径的改变 之前/mnt/sdcard变成了 /storage/sdcard0/,/storage/sdcard1/….N 4 新增了新的布局容器GridLayout 类似表格布局 5 Tab的实现已经有之前的TabActivity改为Fragment实现了 6 不允许在UI主线程中进行网络操作了 7 画廊视图已经有之前的Gallery该由HorizontalScrollView和ViewPage来代替来实现 8 系统通知也使用Notifucation.Builde来代替之前版本创建Notification对象 9 系统的配置文件 不再推荐直接让PreferenceActivity 加载选项设置的布局文件 而是建议将PreferenceActivity与PreferenceFragment结合使用 前者只负责加载选项设置列表的布局文件 Read more […]

自定义简单Ioc框架

Posted by & filed under Uncategorized.

1 概念 之前在我的博文<< java web框架概述>>中sping框架中简单提到了Ioc的观念 http://dev.conris.com/?p=328 Ioc控制反转也叫依赖注入 即依赖对象(控制权)发生转变 由最初的类本身来管理依赖对象转变为Ioc框架来管理这些对象 使得依赖脱离类本身的控制 从而实现松耦合 例如 交女朋友 直接追(问题可能会被拒绝) Ioc方式交给婚介所提供要求 女朋友和追的人松耦合 对于spring框架来说 就是由spring来负责控制对象的生命周期和对象间关系   2 原理 所有的类都会在spring容器中登记 告诉spring你是什么东西 你需要什么东西 然后spring会在系统运行到适当的时候 把你要的东西主动给你 同时也把你交给其他需要你的东西 Read more […]

c#自定义事件以及自定义事件的问题及其解决方案

Posted by & filed under Uncategorized.

1  概念 事件分为事件发布者和事件订阅者 当某个事件发生后 事件发布者发布消息 事件订阅者会收到事件发生的通知 并做出相应处理 事件的触发可能是用户的点击和可能是由程序逻辑触发的 触发事件的对象称为事件发布者 捕获事件并对其做出响应的对象叫做事件订阅者 事件发布者—–>事件<——–事件订阅者1,事件订阅者2…   2 事件和委托的关系 在事件触发以后 事件发布者要发布消息 通知事件订阅者进行事件处理 但事件发布者并不知道要通知哪些事件订阅者 这就需要在发布者和订阅者之间存在一个中介 这个中介就是委托 委托包含一个调用列表 只需要事件发布者有这样一个委托 Read more […]

构建自己的js库和为js对象添加类似c#的拓展方法

Posted by & filed under Uncategorized.

1 构建自己的js库  主要应用js的闭包和伪命名空间 例如 在YuFei.js中定义了两个函数 $() 根据元素的id查找DOM元素 getElementsByClassName()  根据元素的class名称以及标签名查找DOM元素

在html中进行测试

总结 按照上面方式就可以定义自己的js库  这样以后在开发中把自己常用到的js函数封装成js库 以供自己开发使用   2 为js对象添加类似c#的拓展方法 原理是利用js原型 例如为js的String添加trim()拓展方法 去除字符串左边的所有空格

  这样所有的String类型的对象都具有了ltrim()的方法了

[转]android 三种东西永远不要放到数据库里

Posted by & filed under Uncategorized.

图片,文件,二进制数据 既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的!别的先不提,在很多数据库语言里,处理大字段都不是很容易。 把文件存放在数据库里有很多问题: ●对数据库的读/写的速度永远都赶不上文件系统处理的速度 ●数据库备份变的巨大,越来越耗时间 ●对文件的访问需要穿越你的应用层和数据库层 这后两个是真正的杀手。把图片缩略图存到数据库里?很好,那你就不能使用nginx或其它类型的轻量级服务器来处理它们了。 给自己行个方便吧,在数据库里只简单的存放一个磁盘上你的文件的相对路径,或者使用S3或CDN之类的服务。 短生命期数据 使用情况统计数据,测量数据,GPS定位数据,session数据,任何只是短时间内对你有用,或经常变化的数据。如果你发现自己正在使用定时任务从某个表里删除有效期只有一小时,一天或数周的数据,那说明你没有找对正确的做事情的方法。使用redis,statsd/graphite, Riak,它们都是干这种事情更合适的工具。这建议也适用于对于收集那些短生命期的数据。 当然,用挖土机在后花园里种土豆也是可行的,但相比起从储物间里拿出一把铲子,你预约一台挖土机、等它赶到你的园子里挖坑,这显然更慢。你要选择合适的工具来处理手头上的事。 日志文件 把日志数据存放到数据库里,表面上看起来似乎不错,而且“将来也许我需要对这些数据进行复杂的查询”,这样的话很得人心。这样做并不是一个特别差的做法,但如果你把日志数据和你的产品数据存放到一个数据库里就非常不好了。 也许你的日志记录做的很保守,每次web请求只产生一条日志。对于整个网站的每个事件来说,这仍然会产生大量的数据库插入操作,争夺你用户需要的数据库资源。如果你的日志级别设置为verbose或debug,那等着看你的数据库着火吧。 你应该使用一些比如Splunk Loggly或纯文本文件来存放你的日志数据。这样去查看它们也许会不方便,但这样的时候不多,甚至有时候你需要写出一些代码来分析出你想要的答案,但总的来说是值得的。 可是稍等一下,你是那片不一样的雪花,你遇到的问题会如此的不同,所以,如果你把上面提到的三种东西中的某一种放到了数据库里也不会有问题。不,你错了,不,你不特殊。相信我。   Read more […]

[转]Navigation Drawer(官方导航抽屉)

Posted by & filed under Uncategorized.

在2013 google IO当天,Android团的更新了Support库,新版本(V13)的Support库中新加入了几个比较重要的功能。 添加 DrawerLayout 控件,支持创建  Navigation Drawer模式。可以设置从左边划出菜单或者右边,也可以左右菜单同时存在。 添加 SlidingPaneLayout 控件来支持各种屏幕上的摘要、详情界面模式。比如 Gmail邮件列表和单个邮件详情界面。当在手机上显示的时候,邮件列表和详情界面分别为两个界面;当在平板上显示的时候,则为一个界面。 添加 ActionBarDrawerToggle 工具类,方便把 DrawerLayout 和 ActionBar 功能结合起来。 创建一个导航抽屉 导航抽屉是一个位于屏幕左侧边缘用来显示应用程序导航项的一个面板。导航抽屉在大部分时间是不显示的,但两种情况下会进行显示:一是发生从屏幕左侧边缘向右滑的手势,二是点击了工具栏中应用图标。导航抽屉在Support Read more […]

[转]Android中五种常用的menu

Posted by & filed under Uncategorized.

Android中五种常用的menu(菜单)   1、左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新。最早使用左右推出菜单的,听说是Facebook,我不确定消息的真实性。左右推出菜单如图,  2、Path菜单 为什叫Path菜单呢,因为我是最早在path应用中看到的,这里也不知道起什么名字了,就定为Path菜单了。这种散开、收起的小图标很清新,Path菜单出现后,国内就出现了很多仿品。其实实现不难,主要是创意。 3、GridView菜单 GridView菜单,顾名思义,这种Menu是使用gridview实现的,当然使用简单布局也能实现,这种最早出现在Menu的类别比较多的的浏览器中。如下图: 4、popuwindow菜单 这种菜单使用popuwindow加简单的布局实现,出现的比较早,开始时期主要是为了替换丑陋的系统菜单。 5、系统菜单 系统菜单,尤其在3.0以下的系统中长的比较丑陋,有时和我们的应用不匹配,很少使用。 Read more […]

[转]Android 进程生命周期 Process Lifecycle

Posted by & filed under Uncategorized.

进程的生命周期 Android系统会尽力保持应用的进程,但是有时为了给新的进程和更重要的进程回收一些内存空间,它会移除一些旧的进程。 为了决定哪些进程留下,哪些进程被杀死,系统根据在进程中在运行的组件及组件的状态,为每一个进程分配了一个优先级等级。 优先级最低的进程首先被杀死。 这个进程重要性的层次结构有五个等级,下面就列出这五种进程,按照重要性来排列,最重要的放在最前。   一.前台进程 Foreground process 前台进程是用户当前做的事所必须的进程,如果满足下面各种情况中的一种,一个进程被认为是在前台: 1.进程持有一个正在与用户交互的Activity(Activity正处于onResume()的状态)。 2.进程持有一个Service,这个Service和用户正在交互的Activity绑定。 3.进程持有一个Service,这个Service是在前台运行的,即它调用了 startForeground()。 4.进程持有一个Service,这个Service正在执行它的生命周期回调函数(onCreate(), onStart(), Read more […]

(转)android 开源项目

Posted by & filed under Uncategorized.

1、Android团队提供的示例项目 如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发。由Android的核心开发团队提供了15个优秀的示例项目,包含了游戏、图像处理、时间显示、开始菜单快捷方式等。 地址:http://www.apkbus.com/android-13506-1-1.html 2、 Remote Droid RemoteDroid是一个Android应用,能够让用户使用自己的无线网络使用无线键盘、触摸屏操作手机。这个项目为开发者提供了如网络连接、触摸屏手指运动等很好的样例。 地址:http://www.apkbus.com/android-13507-1-1.html 3、 TorProxy和Shadow TorProxy应用实现了Android手机无线电电传通讯(TOR),和Shadow应用一起使用,可以使用手机匿名上网。从该项目源代码中,可以掌握socket连接、管理cookie等方法。 地址:http://www.apkbus.com/android-13510-1-1.html 4、 Read more […]