摘要:
GridFS是MongoDB为存取大型文档(超过4mb)准备的。首先是关于GridFS原理性的介绍。一、GridFS原理This filesystem within MongoDB was designed for … well, holding files, especially files over 4MB … why 4MB?Well BSON objects are limited to 4MB in size (BSON is the format that MongoDB uses to store it’s database information) so GridFS help 阅读全文
摘要:
最近在做一个文档的审批系统,由于系统非常简单,我也承担了其中的设计工作,这是我第一次为一个要实际运营的系统做数据库设计。设计的时候力求满足需求和简单,并没有考虑太多设计理念或力图让数据库设计得优美。在之后的编码过程中,我遇到了不少问题,其中很多我认为是数据库设计的不完善造成的,需要我进行一下反思。暂时没有时间做这个工作了,希望我回到实验室之后,可以再翻出这个系统来看一下。 下面贴我写的200多行的判断当前流程状态的函数,个人感觉十分恶心。View Code public string getFlowState(int applicationDocsID) { ... 阅读全文
摘要:
使用用户控件的目的很简单,就是为了复用。我们渴望把经常在我们页面里出现的东西给封装起来,用起来很方便。从使用控件的角度来讲,我们最主要考虑的是主页面和用户控件之间如何来传递数据。在最初的使用中,我会把控件的所有方法和属性公开(public),这样在主页面中可以随意的修改和调用,不过这种方式显然是不好的,违背了面向对象设计的封装原则,虽然增加了使用的灵活性,但是也使页面和用户控件之间的关系变得复杂,增加了耦合性。 最近看书,学习了一种“正规”的使用方法和原则。首先要理解,页面的Page_Load方法是先于控件的Page_Load方法调用的,所以控件的初始化控件不要放在Page_Load中。 1. 阅读全文
摘要:
对于Web应用的表单身份验证,因为公司有一个类库,采用 Session 实现,所以一直都没有去仔细了解。其实我并不赞成在 .NET 中用 Session 实现身份验证,毕竟 .NET 提供了一个强大的身份验证体系,并且公司的类库也没有实现什么特殊的功能,仅只是保存一个 Session 变量来提供身份识别,在安全性和可用性上与 .NET 的实现相比,个人感觉还是有较大的差距。近期很少加班,就抽空看了一下,理了个大致的思路出来。首先,自然是配置 Web.config,在 <system.web> 下设定:<authentication mode="Forms" 阅读全文
摘要:
Oct.25SQL 关键字order附近有语法错误。原因:由于数据库表order同时又是sql的自带关键字,导致了这个蛋疼的问题。在表名加上[]问题解决。Oct .26按钮事件不提交,页面没有刷新,就是有验证控件没有通过;PageLoad函数是一个页面中最先被调用的函数,自定义控件的pageLoad将后于主页面的Pageload函数被执行。所以一般不在自定义控件的Page_Load方法中进行用户控件的自定义工作。Oct.27存储过程书写和调用若要筛选出某列值最大的某一行记录,需要使用sql嵌套Oct.31要获得刚插入的数据的id值可以使用select @@identity;Nov.1数据库中的 阅读全文
摘要:
近来准备C上机考试,做了一些迷宫搜索的题目,这是我在之前的学习中非常薄弱的地方,经过这次学习之后终于有了一些具体的认识,故记录下来。 宽搜在解决最短路径的问题时使用的比较多,宽搜的概念非常简单,就是一层一层的搜索,直到发现目标。这里主要讲实现上。宽搜的实现主要使用了队列,从起点出发,遇到合法的点,就放入队列尾。每次取队列头进行处理,探索到新元素就放在队尾。如果队列中元素全部处理完也没有发现目标,则不存在这样的路径。遇到目标点之后,搜索结束。 这是每一步只要单位时间的简单搜索。如果在某些特定的点,要花费大于一个单位的时间,那么就要找到所有可能到达目标的路径,选择最短路径。 深搜比较适合解决路径. 阅读全文
摘要:
很久很久之前,我曾经转载过一个由前序遍历和中序遍历来构建二叉树的文章(http://www.cnblogs.com/ITEagle/archive/2010/01/17/1650138.html),但是我最近在准备保研的各种复试的时候,再去写这道题的时候,依然非常的痛苦,几次都不能一次性写对。于是我决定再自己写一篇文章,来分析这个简单的算法,我写的应该和上篇文章有很大不同的,因为那篇文章我完全看不进去。 首先描述算法: 1.在前序遍历中确定根节点,然后在中序遍历中确定左右子树。 2.回到前序遍历,分别确定左右子树的根节点。 3.如此递归,直到完成二叉树的构建。 ... 阅读全文
摘要:
从控制台读取数据,可以用BufferedInputStream(JDK1.4以上),Scanner(JDK1.5以上),Console(JDK1.6)以上。我习惯于用Scanner类。 Scanner类无法自己判断输入是否结束,编码者必须要自己从逻辑上判断,比如输入的最后加个"end"之类的,或者用一个计数器来限制。 String[] inputs = new String[3]; Scanner sc = new Scanner(System.in); int i = 0; while(i<3 && sc.... 阅读全文
摘要:
这是我写的strcpy函数的例程:char* strcpy1(char* strDest,char* strSrc){ int i = 0; if(checkNull(strSrc) == 0) return NULL; while(strSrc[i] != '\0') { strDest[i] = strSrc[i]; i++; } strDest[i] = '\0'; return strDest;}int checkNull(char* str){ int len = strlen(str); if(len == 0) return 0; else ret 阅读全文
摘要:
CodeSmith是一款比较流行的代码生成工具。 http://marlonyao.iteye.com/blog/636579 CodeSmith可以用来生成Insert,Update以及简单的Select可以比较大程度上减少工作量,提高工作效率。上面的连接中介绍了配置的使用情况,整体来说CodeSmith的界面比较类似于Vs所以使用起来还是很习惯的。 阅读全文