代码改变世界

BlogEngine中的widget机制

2011-03-19 20:45 by MichaelYin, 435 阅读, 0 推荐, 收藏, 编辑
摘要:BlogEngine中的widget机制支持在页面可添加一些小的widget,这个功能当时还是特别吸引我的,现在简单的说下实现的原理。 所有的widget都在一个WidgetZone的容器内,这个容器继承自PlaceHolder,而这个容器是在自定义theme中的模板页中用到的,当这个控件加载的时候,它从数据库中找到关于widget的配置信息。这个配置信息也是DataStore的方式提取和存储的。... 阅读全文

BlogEngine中的Extensinon实现

2011-03-17 09:28 by MichaelYin, 521 阅读, 0 推荐, 收藏, 编辑
摘要:BlogEngine中提供了比较良好的扩展机制,用户可以通过添加Extension对BlogEngine进行各种功能的添加,而且还可以对各种扩展进行统一的管理,下面就把实现的机制和原理说明一下。 ManagedExtension这个类对应了BlogEngine中的Extension,ExtensionSettings是ManagedExtension中的配置信息,而ExtensionParamet... 阅读全文

BlogEngine中自定义主题的实现

2011-03-13 10:17 by MichaelYin, 437 阅读, 0 推荐, 收藏, 编辑
摘要:BlogEngine中通过一种较灵活的方式实现了可扩展的自定义主题的实现的功能,用户只需要从网上下载相应的样式包,然后放到对应的文件夹下就能够实现对显示主题的切换。 在Web项目的themes文件夹下面有对应的各个主题的文件夹,文件夹里面有相应的主题所需要的CSS,图片等文件,另外还有三个文件,site.master,CommentView.ascx和PostView.ascx。其中除了site.... 阅读全文

char,int转换

2011-03-10 10:42 by MichaelYin, 4615 阅读, 0 推荐, 收藏, 编辑
摘要:写一个Console小程序的时候需要用户输入数字,然后在程序中进行获取,本来以为很简单的,没想到也发生了一些曲折。。 在Console类中,Console.Read获取的用户输入的单个字符,.net内存中的字符的存储都是采用的Unicode编码,所以这个方法返回的是该字符的Unicode编码的十进制值,对于Unicode不是很了解的朋友可以参考我的另外一篇Post字符编码那些事儿,如果我需要得到这... 阅读全文

这不是基础中的基础么

2011-03-03 00:09 by MichaelYin, 2053 阅读, 6 推荐, 收藏, 编辑
摘要:中午在园子里逛的时候看到了一个评论头条的博文,吉日嘎拉纠正了自己的错误认识。里面涉及到的东西说实话确实很基础,不过我看了下评论却没有将问题解释清楚,至于标题借用了老赵的评论。 先说说方法表,方法表位于内存中的Loader Heap,它包含着类对应的方法,在类加载的时候会在Load Heap上创建和相应的类对应的方法表。当类实例化的时候,托管堆上除了将对象实例化所需要的字段分配内存以外,还会给一个叫... 阅读全文

闲话Hashtable与Dictionary

2011-02-14 22:22 by MichaelYin, 5675 阅读, 10 推荐, 收藏, 编辑
摘要:以前对于这两个集合类的认识只是停留在是否支持泛型上,这几天趁着看算法导论的机会,把两个类的内部的实现机制好好的了解了一下。 Hashtable和Dictionary从数据结构上来说都属于Hashtable,都是对关键字(键值)进行散列操作,将关键字散列到Hashtable的某一个槽位中去,不同的是处理碰撞的方法。散列函数有可能将不同的关键字散列到Hashtable中的同一个槽中去,这个时候我们称... 阅读全文

Linux基础知识总结

2011-02-12 15:49 by MichaelYin, 380 阅读, 0 推荐, 收藏, 编辑
摘要:用户和角色 Linux中的用户和角色的概念和一般权限系统中的概念基本差不多,用户可以属于多个角色,从而根据所属的角色在系统中拥有不同的权限。这其中有一个用户拥有系统最大的权限,那就是root. Linux是一个多任务多用户的操作系统,其中的服务在运行的时候会获得一个PID,而这个PID也是有拥有者身份的,换句话说,是这个用户启动的这个服务,有上面我们可以知道,这些服务也就相应的具有这个用户所具... 阅读全文

二叉树的非递归遍历

2010-12-23 21:59 by MichaelYin, 5264 阅读, 1 推荐, 收藏, 编辑
摘要:二叉树的遍历如果使用递归调用基本没什么问题,这里主要是讲如何使用非递归方法实现二叉树的遍历。 由于递归调用程序实际上使用了栈来保存方法中的变量值,在非递归遍历的方法中我们需要基于栈的方法。先来看看这个方法 节点temp在这里是起一个标识的作用,首先沿根节点往左下方进行查找,将存在的节点压入栈,里面的那个while循环结束后栈的最顶端一定是一个null,所以栈pop一下,然后这时进行读取操作,读... 阅读全文

闲话动态KML

2010-12-21 16:06 by MichaelYin, 2498 阅读, 0 推荐, 收藏, 编辑
摘要:最近在Google Map开发中开发中用到了动态生成KML在地图中动态显示数据,下面来简单的把其中的知识点讲一下。 KML是一种采用XML 语法与格式的语言,它被用来描述地理信息,如点,线,多边形等等,可以被Google map和Google Earth等软件识别并显示。我们可以在Google Earth把我们感兴趣的一些地点标识出来,然后生成KML文件,通过分享这个文件来让别人在Google ... 阅读全文

算法学习之快速排序

2010-12-20 22:01 by MichaelYin, 354 阅读, 0 推荐, 收藏, 编辑
摘要:快速排序通常是用于排序的最佳实用选择,因为它的平均性能相当好。 快速排序和先前讲到的合并排序一样,体现了算法设计中的分治的思想。我们首先将问题进行分解,将数组划分成两个部分A[p…q-1]和A[q+1…r],使得A[p…q-1]中的元素小于等于A[q],然后分别解决前面一个数组和后面一个数组的排序,最后进行合并,由于这两个数组是就地排序(in place)的,所以不用像合并排序中一样进行过多的合... 阅读全文