随笔分类 - 技术文章
摘要:最近做关于Windows Server POP3服务器的小项目,翻遍网络,也没能找到接口。 值得庆幸的是最终发现了一个控制台接口winpop.exe,也就是用cmd命令提示符与POP3服务器交互。 这样实属无奈之举,用cmd命令效率低不说,而且获取、分析返回信息相当麻烦。然而这还不算什么,最主要的是:B/S模式下,网页程序有权限调用cmd吗? 这里调用cmd,当然不是调用客户机器上的cmd,而是服务器上的cmd,这样心里还有点底。 小心翼翼的在我电脑上做了实验,成功在aspx页面中调用cmd,并执行了ping命令,而且顺利获取、分析返回信息。 于是我满怀信心的把测试程序发布到了服务器上,也是.
阅读全文
摘要:用三层架构开发项目,经常会遇到如下场景: D层负责与数据库交互,一般是得到DataTable或DataSet对象,然后返回给B层,B层进行类似的处理来读取数据:dt.Rows[0][“xxx”];或者dt.Rows[0][1];(强烈不建议使用)。 有时DataTable也会被传到UI层,与控件进行绑定,显示数据。例如ASP.NET的repeater控件提取数据:<%# Eval(“xxx”)%>。 无论是何种情况,使用DataTable不可避免的要填写读取的字段,这样做的坏处不言而喻: | 非常容易写错,而且编译器不检查。 | 必须了解数据库的结构。 | 不符合面向对象编程思想。
阅读全文
摘要:作为一名IT菜鸟,用PE维护系统已经满足不了我的需求,把windows装进U盘又太俗,只能把目光转向Linux了。 大致从网上搜索了一下教程,尽是些N年前老掉牙的教程。别的不说,那个麻烦劲就让人吐了。 时代在发展,科技在进步,其实简单的方法早就有了,虽然网上也有一些,但是并不全面,造成很多问题。现在,本小菜把它总结出来。 准备工作:| Unetbootin:Linux系统写入U盘工具。| BOOTICE:引导设置工具。| 你自己的Linux系统ISO镜像。| 把U盘格式化成FAT32格式,对着U盘点右键--格式化即可,不需要什么工具。 第一步,使用unetbootin向U盘写入Linux系..
阅读全文
摘要:方法一:通过修改注册表禁用USB原理:只要把注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\USBSTOR路径下的Start值改成4即可禁用USB(默认为3,即允许USB)。优点:简单易行。缺点:地球人都知道,很容易识破。建议:用一个timer或者创建一个线程,来锁定这个值。程序代码:using Microsoft.Win32; /// <summary>
/// 通过注册表启用USB
/// </summary>
/// <returns></returns>
public boo
阅读全文
摘要:俗话说,常在河边走哪有不湿鞋。前些天重新安装了系统,最近需要用IIS发布一下.NET程序。我一向很放心的IIS竟然抛出了莫名其妙的500错误,让我一头雾水。 500错误是服务器内部错误,一般和程序没关系。最终问题算是解决了,可是改动了N个地方,具体是哪的原因也不太清楚,反正跑不了这些地方。 注意:以下图有显示不全的,可以图片另存为,在电脑上看即可! 1. 开启容易被忽略的服务。 进入“控制面板---管理工具---服务---DistributedTransaction Coordinator”。把这个服务设置成自动,并且启动它。2.权限配置。第一步,修改网站应用池进程标识为:NetWorkSe.
阅读全文
摘要:网站静态化一直是SEO重点关注对象。静态化有好有坏,最大的好处是收录迅速,坏处是纯静态的HTML页面难以维护,特别是对于大型的网站。本文将介绍如何将新云CMS网站管理系统静态化。 本文以新云CMS 3.0为例。 1.进入后台控制面板,找到“软件频道基本设置”,点击进入,在右侧窗口找到如下设置: 在这主要是开启静态功能,设置一下静态页面存放的路径。按照图中设置好,很简单,一看就懂。我这只是一个示例,具体可以自己改,图中有关于标签的大致说明,一般情况下按照我这样配置就行了。我把图中的三个写在下边:[InstallDir][channel]downlist/s[classid]_[page].h..
阅读全文
摘要:在使用C#的过程中,难免会用到多线程,而用多线程之后,线程如何与界面交互则是一个非常头疼的问题。其实不仅仅是界面,一般情况下,我们往往需要获得线程的一些信息来确定线程的状态。比较好的方式是用委托实现,看例子: 注:本例利用委托和跨线程访问技术,用界面上的两个label控件实时显示线程的执行次数。网上虽然有很多这方面的文章,但是过于简略,说明很少,刚刚接触这方面的程序员很难理解,故写此文。TestClass类:class TestClass{ //声明一个delegate(委托)类型:testDelegate,该类型可以搭载返回值为空,参数只有一个(long型)的方法。 ...
阅读全文
摘要:本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。 进入正题前首先要知道的是Java程序运行在JVM(Java VirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配原理的基础与前提。 简单通俗的讲,一个完整的Java程序运行过程会涉及以下内存区域: l 寄存器:JVM内部虚拟寄存器,存.
阅读全文
摘要:最近完善图书馆维护系统,遇到了一个小问题: 没办法显示抛出的异常。 由于用户要求不高,所以没有对异常进行处理,直接把异常信息显示给用户,其实这样做是很不恰当的,但是时间有限,还要继续学习,不能做太细了。但是就这么个小小的问题,竟然花费了两个小时!从网上查了很多资料,基本上就没有对的,也可以说没人能给出一个明确的答案。 事情非常简单:用ASP.NET的Response.Write方法向客户端返回一段javascript代码,显示出异常信息,代码如下try{ //….}catch (Exception ex){ Response.Write("<script language=
阅读全文
摘要:一般的CMS(Content Manager System)中,不可避免的会涉及批量操作。比如显示一页数据,一个良好的设计都会加上批量删除、批量推荐等操作。 在ASP.NET中,做这样的批量操作非常简单,以批量删除为例,我们仅需要checkBox控件用来多选,外加一个批量删除按钮。显示数据这里采用repeater控件。 下面是我的工程中一段代码: aspx前台文件代码: <table> <tbody> <tr> <thclass="th_CheckBox"></...
阅读全文
摘要:本小菜在设计数据库的时候,不幸遇到这样一个问题: 数据库中有两个表,分别是小组表和成员表。其中小组表中有一个创建者字段,成员表中有一个所属组字段。 看着挺符合逻辑的设计,却引发了一个哲学问题:先有鸡先有蛋?两个表形成了互相依赖。在数据库刚刚建成的时候,两个表中都没有数据,那么向任何一个表中插入数据都是失败的。 出现问题就要马上解决,于是我便到网上搜索,找到这样一句话:“如果两表互有关联,则为多对多的关系,按照第三范式规定,建立第三个中间表,用于存储两表主键,关联时使用第三表的字段进行关联.”。按照这个规则所说的,建立两个中间表,用来存储组表的主键和成员表的主键(另一个表反之),然后用这两个中.
阅读全文
摘要:这次做图书馆维护系统,首先要解决的问题就是角色权限动态分配,权限分配直接体现就是菜单的动态分配。在此和大家分享一下心得。 大多数系统,都有多种类型的用户,不同的用户权限不同,某一个功能,A类用户是可见的,但是B类用户没有必要或者不应该看见这个功能,这就要涉及到功能的动态分配。要解决这个问题,当然要从数据下手,在学姐的指导下,有了如下的UML设计图:解释一下:MemberType表是用户类型表。SystemFunction表是系统所有功能表,记录了功能的名称和对应的页面URL,思想是一个功能即一个页面。Tab表是菜单表,也就是顶级菜单,SystemFunction表中的功能将被归类到这个菜单中.
阅读全文
摘要:六、概要设计。 数据库分析完了,基础已经搞定,接下来就是对程序的初步设计。如何设计呢?如果是小程序,用脑子想想,也就算设计完了,但是如果是稍微复杂点的系统,恐怕就不行了。概要设计还是要借助于UML图,现在你知道它有多重要了吧?我们先来设计程序的大致结构,可以用UML的包图。作为专业水准的菜鸟,我们要用三层架构来设计程序。所谓三层架构,就是把程序分为基本的三层,分别为:UI层(用户界面层)、BLL层(业务逻辑层)、DAL层(数据访问层)。把程序分成三层,好处不言而喻,从此你就再也见不到所有东西都在一个窗体里混乱的情形,如果什么地方需要修改,再也不用去改动整个工程。每一层都有各自的功能,从UI..
阅读全文
摘要:四、需求分析→数据库设计 从这开始,就真正进入项目实战啦。先说点体会,我刚开始接触编程的时候,都是编写一些小东西,往往都是半天或者一天什么的就编完了,那时候根本没想过做程序之前还要有需求分析。经过快两年的学习,接触的都是比较大的系统,才明白没有需求分析的程序都太业余了,没有任何技术含量。对于一个系统来说,如果需求分析不到位,那么将有灾难性的后果,从这节的小标题就能看出,需求是数据库设计的基石,需求定了,数据库基本上就定了,数据库定了,程序的基本功能也就定了。我们以一个简单的学生管理系统为例子,来分析一下需求。分析需求地球人一般都是用UML图,啥是UML图呢,就是一种把程序用图形表示的标准,它.
阅读全文
摘要:写在前面的话:这个教程本来是想重点介绍SQL数据库,但是写着写着发现已经有很多关于数据的知识了,索性把项目整个开发过程都写了下来。由于时间确实很紧,教程收尾比较匆忙,感觉写的很对不起大家,但是基本上一个项目的流程就这么多了(不包括后期测试),什么时候该做什么,该用什么工具,有什么技巧,都差不多说到了,我的能力也就到这了。补充一点:每个阶段都要产生相应的文档,这可是非常重要的,真正做项目的时候不要忽略了! 直到现在,接触数据库的时间大约有一年了,刚开始用的时候真是一点也不懂,就那么硬生生的用,经过一年的积累,虽然还算是小菜,但是也懂得点东西。为了整理知识,同时帮助更多的人能更好的学习数据库,我.
阅读全文
摘要:最近学习JQuery,用到了它的POST方法向服务器请求数据,服务器返回Json格式的数据。看上去非常简单,但出了很多莫名其妙的问题。主要原因就是第一次学习太生疏,很多地方写的不规范造成的。这方面的资料虽然可以从网上查到,但是百花齐放,怎么写的都有,在此,我就以标准的格式写一个例子,希望对大家有帮助,也给自己留着备用。 本文适合有一定JQuery、ASP.NET基础的读者阅读。 在写例子之前,还要啰嗦些重点内容: 无论何种客户端,向服务器传递数据都有两种方式:GET方法和POST方法。GET方法传递的数据直接写在URL上,比如:http://www.kpdown.com/soft/do...
阅读全文
摘要:学习web开发,使用Cookie是不可避免的,在这就浅显的总结一下。仅供新手参阅,老鸟路过。个人感觉Cookie的使用和ASP.NET中的Session非常像,只不过Cookie是保存在客户端,而Session是在服务器端,两者都以记录信息为目的,作为访问网站的凭据。本文仅仅是实践操作,不涉及理论知识。 本来想画个思维导图,但是想想还是算了,我不太喜欢在博客中贴一个让人眼花缭乱的思维导图,而且思维导图以图片的形式存在也不利于知识的传播。实际操作之前简单的讲一下Cookie吧! Cookie其实就是一些保存在客户端的小文件,为下次访问网站时保存一些信息,比如:是否登录。Cookie的最大优...
阅读全文
摘要:为了避免本文误导大家,首先声明:在面向对象语言中探讨这些没有太大的意义,但是它可以帮助我们更好的理解.NET语言特性。本文以C#为例,会涉及.NET中的克隆(浅复制)。 关于这个讨论,是由合作开发引起的。当时在DBHelper层里使用了new关键字创建一个数据库表对象(DataTable),而我在数据访问层(DAL)接收数据库表对象时没有加关键字new,只是声明了一个类型为DataTable的“对象变量”:DataTable dt;而没有这样声明:DataTable dt = new DataTable();究竟这样写对不对呢? 废话不多说,直接说原理:地球人都知道,要想实例化一个对象,必须用
阅读全文
摘要:很多时候我们需要利用参数在存储过程中重新组织SQL语句,在存储过程中拼接的SQL语句只是一个字符串,不会被直接执行,所以加一个execute执行它就可以了。具体看如下演示代码:代码:set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo-- =============================================-- Author: yy-- Create date: 2012-1-17-- Description: 存储过程SQL字符串拼接示例-- =============================================..
阅读全文
摘要:JavaScript原型概念说不好理解其实没那么难,说好理解其实也没那么简单,关键是你有没有找到一个合适自己的理解方法。预备知识: 我想研究js原型的人肯定对js有一定了解,所以基础的知识不再赘述。但是我还要强调一些变态的知识点:l JavaScript没有类的概念,是基于原型的面向对象。l function这个关键字一定要理解正确!这不是传统意义上的定义函数的关键字,而是类!一定要把function理解成类!所以,在function a(){}时,其实你是在创建一个functio的实例,a不是函数,而是对象!这正好符合一句真理:“一切皆对象”。l new关键字也不是传统的new。后边加的..
阅读全文