摘要: 上一篇实例讲解遗传算法——基于遗传算法的自动组卷系统【理论篇】讲了遗传算法的原理及在自己动组卷系统中的应用,本篇将给出上一篇中所述理论的实践。 先上两张运行后的效果图吧:基于遗传算法的自动组卷系统运行效果图(1)基于遗传算法的自动组卷系统运行效果图(2)一、准备工作1、问题实体 问题实体包含编号、类型(类型即题型,分为五种:单选,多选,判断,填空,问答,分别用1、2、3、4、5表示)、分数、难度系数、知识点。一道题至少有一个知识点,为简单易懂,知识点用List<int> 表示(知识点编号集合)。 代码如下:publicclassProblem{ publicProblem()...阅读全文
posted @ 2011-05-20 18:27 artwl 阅读(1757) 评论(41) 编辑
摘要: 一、遗传算法介绍 1.1 遗传算法概要 遗传算法(Genetic Algorithm,简称GA)是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法,由美国的J.Holland教授1975年首先提出。遗传算法是一种模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,通过模拟自然进化过程搜索最优解,它常用来解决多约束条件下的最优问题。 遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,它决定了个体的形状的外部表现。因此,...阅读全文
posted @ 2011-05-19 23:35 artwl 阅读(2149) 评论(13) 编辑
摘要: 像诗一样的 Javascript 代码。1. 取整同时转成数值型:'10.567890'|0//结果: 10'10.567890'^0//结果: 10-2.23456789|0//结果: -2~~-2.23456789//结果: -22. 日期转数值:var d = +new Date(); //12956984167923. 类数组对象转数组:var arr = [].slice.call(arguments)4. 漂亮的随机码:Math.random().toString(16).substring(2); //14位Math.random().toStri阅读全文
posted @ 2012-05-04 12:40 artwl 阅读(274) 评论(0) 编辑
摘要: String.replace( ) 简介语法:string.replace(regexp, replacement)regexp:您要执行替换操作的正则表达式,如果传入的是一个字符串,那就会当作普通字符来处理,并且只会执行一次替换操作;如果是正则表达式,并且带有 global (g) 修饰符,则会替换所有出现的目标字符,否则,将只执行一次替换操作。replacement:您要替换成的字符。返回值是执行替换操作后的字符串。String.replace( ) 的简单用法var text = "javascript 非常强大 !";text.replace(/javascript阅读全文
posted @ 2012-05-04 11:51 artwl 阅读(151) 评论(0) 编辑
摘要: 下载地址 jQuery1.7.2正式发布了,下载地址:http://code.jquery.com/jquery-1.7.2.min.js(minified, production)http://code.jquery.com/jquery-1.7.2.js(unminified, debug) 注:如果你正在使用jQuery Mobile,请使用最新的jQuery 1.7.2和jQuery Mobile 1.1这两个版本,因为之前的jQuery Mobile版本还基于jQuery core 1.7.1或更早的版本。更新内容Ajax#4624: Charset in default aja..阅读全文
posted @ 2012-04-23 17:40 artwl 阅读(456) 评论(3) 编辑
摘要: 问题的产生 在写JS的过程中,为了调试我们常常会写很多 console.log、console.info、console.group、console.warn、console.error代码来查看JS的运行情况,但发布时又因为IE不支持console,又要去掉这些代码,一不小心就会出错。 本文分享自己昨晚写的一个console类来试图解决这一问题。当然,更好的做法是把测试代码分开写,那样就不会有这个问题。解决思路 如何解决IE下不兼容的问题呢,那就是我们自己定义一个console类来覆盖浏览器提供的console功能,这样只要在页面中引用此JS文件就可以了。 另外,此类还提供了查看输出...阅读全文
posted @ 2012-04-18 19:10 artwl 阅读(1149) 评论(3) 编辑
摘要: 检测浏览器的方式 1、对象特征检测法:判断浏览器能力的通用方法。如果更关注浏览器的能力而不在乎它的实际身份,就可以使用这种检测方法。常见的原生Ajax写法中就用这种方法来创建XMLHttpRequest:IXHR: function(){ if(window.ActiveXObject){ XHR=new ActiveXObject('Microsoft.XMLHTTP'); }else if(window.XMLHttpRequest){ XHR=new XMLHttpRequest(); }else{ ...阅读全文
posted @ 2012-04-16 21:47 artwl 阅读(202) 评论(0) 编辑
摘要: Levenshtein算法Levenshtein算法定义及算法原理见这篇文章:一个快速、高效的Levenshtein算法实现JavaScript实现function levenshteinDistance(s,t){ if(s.length>t.length){ var temp=s; s=t; t=temp; delete temp; } var n=s.length; var m=t.length; if(m==0){ return n; } else if(n==0){ ...阅读全文
posted @ 2012-04-15 20:58 artwl 阅读(111) 评论(1) 编辑
摘要: 今早在https://attachments.me/hirehack/public/computer.html做题,有一题是递归求嵌套数组中最大值:/*This challenge requires that, given as input an array which may contain: - integer values. - inner-arrays of integer values. - any recursive combination thereof. Return the largest value contained in the array or any of its 阅读全文
posted @ 2012-04-15 10:30 artwl 阅读(123) 评论(2) 编辑
摘要: Window对象窗口操作 Window对象对操作浏览器窗口非常有用,开发者可以移动或调整浏览器窗口的大小。可用四种方法实现这些操作: moveBy(dx,dy):把浏览器窗口相对当前位置水平移动dx个像素,垂直移动dy个像素。dx值为负左移,dy为负上移。 moveTo(x,y):移动浏览器窗口,使它的左上角位于用户屏幕的(x,y)处。可以使用负数,不过这样会把部分窗口移出屏幕的可视区域。 resizeBy(dw,dh):相对浏览器窗口当前大小,把窗口的宽度调整dw个像素,高度调整dy个像素。dw、dy为负时缩小窗口。 resizeTo(w,h):把窗口的宽度调整为w,高度调整为h,...阅读全文
posted @ 2012-04-14 12:51 artwl 阅读(182) 评论(0) 编辑
摘要: 早上看到《JavaScript 每周导读》【第三期】一文,里面发现一篇文章(Extending JavaScript – The Right Way),觉得还不错,翻译过来跟大家共享,本文并不是逐字逐句进行翻译,尽量说得通俗易懂。 原文地址:Extending JavaScript – The Right Way以下是译文 JavaScript已经内置了很多强大的方法,但有时你需要的某个功能在内置的方法中没有,我们怎么来优雅地扩展JavaScript功能呢。 例如我们想增加一个capitalize()方法来实现首字母大写,通常我们这样写:if(!String.prototype.ca...阅读全文
posted @ 2012-04-12 11:01 artwl 阅读(1669) 评论(6) 编辑
摘要: 前言 当前,在软件开发中单元测试越来越受到开发者的重视,它能提高软件的开发效率,而且能保障开发的质量。以往,单元测试往往多见于服务端的开发中,但随着Web编程领域的分工逐渐明细,在前端Javascript开发领域中,也可以进行相关的单元测试,以保障前端开发的质量。 在服务器端的单元测试中,都有各种各样的测试框架,在JavaScript中现在也有一些很优秀的框架,但在本文中,我们将自己动手一步步来实现一个简单的单元测试框架。 JS单元测试有很多方面,比较多的是对方法功能检查,对浏览器兼容性检查,本文主要谈第一种。 本文检查的JS代码是我以前写的一个JS日期格式化的方法,原文在这里(jav...阅读全文
posted @ 2012-04-09 15:41 artwl 阅读(971) 评论(3) 编辑
摘要: 继承 继承是面向对象语言的必备特征,即一个类能够重用另一个类的方法和属性。在JavaScript中继承方式的实现方式主要有以下五种:对象冒充、call()、apply()、原型链、混合方式。 下面分别介绍。对象冒充 原理:构造函数使用this关键字给所有属性和方法赋值。因为构造函数只是一个函数,所以可以使ClassA的构造函数成为ClassB的方法,然后调用它。ClassB就会收到ClassA的构造函数中定义的属性和方法。 示例:function ClassA(sColor){ this.color=sColor; this.sayColor=function(){ ...阅读全文
posted @ 2012-04-01 14:37 artwl 阅读(191) 评论(0) 编辑
摘要: 最近在博问中看到一个问题,问在MVC中如何用AJAX方式上传图片,这里做了一个DEMO,详细解释一下。 本DEMO代码非常简单,就是一个页面上有一个上传图片按钮,点击后弹出一个层,在这个弹出层里上传图片,然后把图片地址更新到页面上。在获得上传的图片地址后你可以做其他处理(如插入到文本编辑器中)。Controllerpublic class ImageController : Controller{ public ActionResult Index() { return View(); } [HttpPost] public void Uplo...阅读全文
posted @ 2012-03-31 14:52 artwl 阅读(658) 评论(1) 编辑
摘要: 工厂方式 创建并返回特定类型的对象。 function createCar(sColor,iDoors,iMpg){ var oTempCar=new Object(); oTempCar.color=sColor; oTempCar.doors=iDoors; oTempCar.mpg=iMpg; oTempCar.showColor=function(){ alert(this.color); }} 调用示例:var oCar1=createCar("red",4,23);var oCar2=createCar("blue",3,25...阅读全文
posted @ 2012-03-30 21:48 artwl 阅读(174) 评论(2) 编辑
摘要: 前言一直比较喜欢收集网页特效,很多时候都会遇到CSS被压缩过的情况,这时查看起来就会非常不方便,有时为了减少文件大小,也会对自己的CSS进行压缩,网上提供这样服务的很多,但都不尽如人意,因此打算自己动手写一个JS来进行CSS的格式化和压缩原理CSS的结构如下:选择器{ css属性声明:值;}所以对CSS格式化也就比较简单,大致分为以下几步;1、把多个空格合并成一个,去掉换行2、对处理后的字符串按"{"进行分组3、遍历分组,对含有"}"的部分再次以"}"进行分组4、对分组后的数据进行处理,主要是加上空格和换行对CSS压缩就比较简单了,把阅读全文
posted @ 2012-03-25 19:16 artwl 阅读(2191) 评论(7) 编辑
摘要: Math对象的属性E:值e,自然对数的底LN10:10的自然对数LN2:2的自然对数LOG2E:以2为底E的对数LOG10E:以10为底E的对数PI:值派SQRT1_2:1/2 的平方根SQRT2:2的平方根Math对象的方法:最大值与最小值min()&&max()用于取一组数中的最小值跟最大值。示例:var iMax=Math.Max(1,2,3);alert(iMax);//outputs 3var iMin=Math.Min(1,2,3);alert(iMin);//outputs 1约对值abs()用于返回数字的绝对值。示例:var iNegOne=Math.abs(-阅读全文
posted @ 2012-03-18 21:16 artwl 阅读(182) 评论(0) 编辑
摘要: 在博问中看到一个问题(为什么说这段JavaScript代码存在循环引用)中有一篇好文章,特转过来学习下。 原文地址:JavaScript 中的内存泄露模式 本文地址:JavaScript 中的内存泄露模式【转】 JavaScript 是用来向 Web 页面添加动态内容的一种功能强大的脚本语言。它尤其特别有助于一些日常任务,比如验证密码和创建动态菜单组件。JavaScript 易学易用,但却很容易在某些浏览器中引起内存的泄漏。在这个介绍性的文章中,我们解释了 JavaScript 中的泄漏由何引起,展示了常见的内存泄漏模式,并介绍了如何应对它们。 注意本文假设您已经非常熟悉使用 Ja...阅读全文
posted @ 2012-03-13 16:29 artwl 阅读(237) 评论(0) 编辑
摘要: 混乱的URI编码 JavaScript中编码有三种方法:escape、encodeURI、encodeURIComponent C#中编码主要方法:HttpUtility.UrlEncode、Server.UrlEncode、Uri.EscapeUriString、Uri.EscapeDataString JavaScript中的还好,只提供了三个,C#中主要用的就有这么多,还没有列出其他编码(HTML),一多就弄不明白,弄不明白就心生恐惧,心生恐惧就变得苦逼,本文就向大家详细解释在JavaScript及C#中如何对URI进行编码的方法(注:本文不涉及到其他编码)。escape:不推荐使...阅读全文
posted @ 2012-03-07 00:24 artwl 阅读(5199) 评论(38) 编辑
摘要: 内置对象 定义:由ECMAScript实现提供的、独立于宿主环境的所有对象,在ECMAScript程序开始执行时出现。 由定义可知开发者不必明确实例化内置对象,它已被实例化了。在ECMAScript-262只定义了两个内置对象,即Global和MathGlobal Global对象是ECMAScript中最特别的对象,因为实际上它根本不存在。 由于在ECMAScript中不存在独立的对象,所有函数都必须是某个对象的方法,如前面提到的isNaN()、isFinite()、parseInt()和parseFloat()等,都是Global对象的方法。 escape()、encodeURI...阅读全文
posted @ 2012-03-06 22:48 artwl 阅读(249) 评论(0) 编辑
摘要: 最终效果:插件原理 所有弹出层的原理都差不多,就是用一个全屏半透明DIV做遮罩层,在这个遮罩层上再显示出一个层放要显示的内容,其他的就是CSS的运用了。 本插件为了使用简单,把JS跟CSS封装在了一个JS文件(插件)中,所以使用起来非常方便,做到了一行代码调用。插件源代码 插件(jquery.artwl.thickbox.js)的源码如下:/* File Created: 三月 1, 2012 Author:artwl blog:http://artwl.cnblogs.com */;(function ($) { $.extend({ artwl_bind...阅读全文
posted @ 2012-03-01 19:36 artwl 阅读(1000) 评论(2) 编辑
摘要: 背景 今天在博问中看到一个问题:用canvas 的 lineto方法画对角线,但画出来的图形不对? 这是一个很常见的误区,这里给大家细说一下。原理 在w3网站上是这样解释的:Thecanvaselement has two attributes to control the size of the coordinate space:widthandheight. These attributes, when specified, must have values that arevalid non-negative integers.Therules for parsing non-ne...阅读全文
posted @ 2012-02-28 18:23 artwl 阅读(129) 评论(2) 编辑
摘要: 创建var d=new Date();要注意的是在JavaScript中月份的值是从0到11(0表示1月)。设置日期和时间值设置日期和时间值有两种方法:1、只声明距离1970年1月1日凌晨12点的毫秒数 a、直接用距离1970年1月1日凌晨12点的毫秒数 var d=new Date(0); b、parse方法: parse方法接受字符串为参数,把该字符串转换成日期值,返回的是毫秒数。 例如为2012年2月27日创建Date对象:var d=new Date(Date.parse("Feb 27,2012")); 如果传给parse方法的字符串不能转换成日期,该函数返回Na阅读全文
posted @ 2012-02-27 21:33 artwl 阅读(205) 评论(0) 编辑
摘要: 代码如下:function numInstring(str){ str=str.replace(/ /ig,""); var strArr=str.split(""); var result=[],beforeLength,afterLength,reg; for(var i=0;i<strArr.length;i++){ if(str.indexOf(strArr[i])!=-1){ beforeLength=str.length; reg=new RegExp(strArr[i],"ig"); ...阅读全文
posted @ 2012-02-26 22:53 artwl 阅读(158) 评论(3) 编辑
摘要: 创建Array对象//onevar aValues=new Array();//twovar aValues=new Array(20);//threevar aColors=new Array();aColors[0]="red";aColors[1]="green";aColors[2]="blue";//fourvar aColors=new Array("red","green","blue");//fivevar aColors=["red",&阅读全文
posted @ 2012-02-26 16:09 artwl 阅读(153) 评论(0) 编辑
摘要: 需求 把含有rowspan、colspan的table还原。 例如原table为: 还原后的table为:代码原理 对table进行遍历,如果td的rowspan属性值大于1,则给当前的td的父元素的兄弟元素添加td,如果td的colspan属性值大于1,则在当前的td元素后添加td完整代码//本文首发博客园:http://artwl.cnblogs.com(2012/02/08)jQuery.fn.RevertTable=function(){ $("tr",this).each(function(trindex,tritem){ $(tritem).find("阅读全文
posted @ 2012-02-08 22:55 artwl 阅读(274) 评论(0) 编辑
摘要: 前言 上一篇文章(详解强大的jQuery选择器之基本选择器、层次选择器)介绍了jQuery四类选择器中的基本选择器、层次选择器,本文将介绍剩下的两种选择器:过滤选择器、表单选择器。 本文仍使用上一篇文章中的示例页面。一、过滤选择器 过滤选择器主要是通过特定的过滤规则来筛选出所需要的DOM元素,过滤规则与CSS中的伪类选择器语法相同。 按照不同的过滤规则,过滤选择器可以分为以下几种: 1、基本过滤选择器 2、内容过滤选择器 3、可见性过滤选择器 4、属性过滤选择器 5、子元素过滤选择器 6、表单对象属性过滤选择器 下面就对这几种过滤选择器分别加以介绍。1.1基本过滤选择器 ...阅读全文
posted @ 2012-02-07 23:48 artwl 阅读(1701) 评论(7) 编辑
摘要: 前言 自从接触了jQuery后就为其强大的选择器所震撼,这也正是jQuery的优势所在。 jQuery允许开发者使用从CSS1到CSS3几乎所有的选择器,以及jQuery独创的高级而复杂的选择器。另外还可以加入插件使其支持XPath选择器,甚至开发者可以编写属于自己的选择器(即选择器插件,参考上篇:jQuery插件原来如此简单——jQuery插件的机制及实战)。正是jQuery强大的选择器功能,让它很容易上手,吸引了大批的开发者,本文就来介绍一下强大的jQuery选择器。jQuery选择器类型 jQuery选择器主要分为四类: 1、基本选择器 2、层次选择器 3、过滤选择器 4、...阅读全文
posted @ 2012-02-06 22:51 artwl 阅读(1987) 评论(11) 编辑
摘要: jQuery插件的种类1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进行操作,是最常见的一种插件。此类插件可以发挥出jQuery选择器的强大优势,有相当一部分的jQuery的方法,都是在jQuery脚本库内部通过这种形式“插”在内核上的,例如parent()方法,appendTo()方法等。2、封装全局函数 可以将独立的函数加到jQuery命名空间下。如常用的jQuery.ajax()方法、去首尾空格的jQuery.trim()方法,都是jQuery内部作为全局函数的插件附加到内核上去的。3、选择器插件 虽然jQuery的选择器十分强大,但在少数情...阅读全文
posted @ 2012-02-05 21:39 artwl 阅读(2153) 评论(3) 编辑
摘要: Function类定义 Function类可以表示开发者定义的任何函数,用Function类直接创建函数的语法如下:var function_name=new Function(agrument1,agrument2,...,argumentN,function_body); 每个argument都是一个参数,最后一个参数是函数主体(要执行的代码)。 示例:function sayHi(sName,sMessage){ alert("Hello "+sName+","+sMessage);} 还可以如下定义它:var sayHi=new Function阅读全文
posted @ 2012-02-04 12:53 artwl 阅读(316) 评论(3) 编辑
摘要: 默认行为 默认为SETXACT_ABORTOFF,没有事务行为。SETXACT_ABORTON SETXACT_ABORTON分为两种: 1、总体作为一个事务,整体提交或整体回滚,格式为:SET XACT_ABORT ONBEGIN TRAN --要执行的语句COMMIT TRANGO 2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:SET XACT_ABORT ONBEGIN --要执行的语句ENDGO测试--创建测试表use MyDBCREATE TABLE student( stuid int NOT NULL...阅读全文
posted @ 2012-01-12 17:35 artwl 阅读(146) 评论(0) 编辑
摘要: if语句 语法:1 if(condition){2 statement1;3 }4 else{5 statement2;6 }迭代语句 1、do-while语句 语法:1 do{2 statement3 }while(expression); 2、while语句 语法:1 while(expression){2 statement3 } 3、for语句 语法:1 for(initialization;expression;post-loop-expression){2 statement;3 } 4、for-in语句 语法:1 for(...阅读全文
posted @ 2012-01-02 15:34 artwl 阅读(166) 评论(0) 编辑