网址:http://ldsea.cn/wap/
手机通过此网址可以访问本站,看日志、发评论等
网址:http://ldsea.cn/wap/
手机通过此网址可以访问本站,看日志、发评论等
[quote]A strange man uses holographic tools to build a world for the woman he loves. This is a short by filmmaker Bruce Branit known also as the co-creator of 405. [/quote]
想给女朋友或者男朋友一个惊喜的,去照着视频试试看吧[emot]cool[/emot]
转载自:[url=http://fujiangyun.com.cn/article_view.asp?id=41]http://fujiangyun.com.cn/article_view.asp?id=41[/url]
本题目源自我之前写的一篇日志:[url=http://www.ldsea.cn/java_PrintCircle/]http://www.ldsea.cn/java_PrintCircle/[/url]
付兄用js实现了该算法
[code]
<!–
程序功能:利用js在一个方框内打印一个圆
程序制作:付江云
算法来源:梁栋
说明:本程序中相关的html和js编程不重要,重要的是希望大家能理解到这个算法,利用这种方式打印一个纵向100个点的实验需要执行近15秒,网页打开时打开会卡会儿后出现一个圆,除了上下两头比较稀疏,其他地方点看起来都还密集。
测试环境:T5450 @1.66GHZ,1G内存
–>
<html>
<head>
<title>用JS在正方形方框内打印一个圆</title>
<!–下面定义打印点的颜色–>
<style>
.dian{background-color:red;}
</style>
</head>
<body>
<script>
<!–
//定义几个需要用的变量,x1和x2是横线和圆的两个交点,y是定义的纵向坐标数,borderwidth是整个正方形的边框厚度,danwei是每个点的象素,banjing是以象素为单位的半径值。
var x1,x2,y,borderwidth=1,danwei=1,banjing=100;
//定义画园主函数,主要功能有画一个边框,以及在每一行根据圆的方程计算出圆上的两点横坐标,并且调用huadian()函数将两点用生成红色span块的方式“打印”出来,如此循环直到打印完所有行的点,结束。
function huanyuan()
{
bw=2*(banjing*danwei+borderwidth);
bh=2*(banjing*danwei+borderwidth);
document.body.innerHTML+='<div id=MainMap style=position:absolute;left:'+(document.body.clientWidth-bw)/2+';top:'+(document.body.clientHeight-bh)/2+';width:'+bw+';height:'+bh+';border-width:'+borderwidth+';border-style:outset;border-color:#00ff00></div>';
for(y=0;y<2*banjing;y++)
{
x1=parseInt(banjing-Math.sqrt(banjing*banjing-(y-banjing)*(y-banjing)));
x2=parseInt(banjing+Math.sqrt(banjing*banjing-(y-banjing)*(y-banjing)));
huadian(x1*danwei,y*danwei);
huadian(x2*danwei,y*danwei);
}
}
//定义画点函数,根据传递过来的参数确定生成的span块(即圆上的点)的位置。
function huadian(zuo,gao)
{
MainMap.innerHTML += '<span style=position:absolute;left:'+zuo+';top:'+gao+';width:'+danwei+';height:'+danwei+';overflow:hidden class=dian></span>';
}
onload=huanyuan;//窗口加载时运行画圆主函数。
//–>
</script>
</body>
</html>
[/code]
下面的图是我运行后的截图
[img][attach]176[/attach][/img]
一个很标准的圆。
这时,可能有人会问了,原先那个java的算法,要1000个点才大概像个圆,即使是1000了也没有像这个js函数画的圆标准,这段js,纵向只有100个点,如上图所示,就已经相当圆了
关键地方就在于画点的方式不一样,我在用java程序实现时,用的是System.out.println(),这个打出的一个空格或者*号,这样占据的一个字符的位置。而付兄在这段js代码中,用的画点的方式如下:
[code]function huadian(zuo,gao)
{
MainMap.innerHTML += '<span style=position:absolute;left:'+zuo+';top:'+gao+';width:'+danwei+';height:'+danwei+';overflow:hidden class=dian></span>';
}[/code]
是用html中的像素点描述的,这样一个点其实只占一个像素点,这样的话,不需要很大的半径,就可以画出很精细的圆形了:)
流行的 JavaScript 库不胜枚举,jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富,加上它们的插件,几乎能胜任任何工作,然而这是有代价的,这些库往往导致你的网页尺寸臃肿。在某些场合,如果你只想完成特定的工作,可以使用一些功能更专一的轻量库,本文介绍了40个非常出色的轻量级 JavaScript 库。
这是本文的第二部分,第一部分参见40 个轻量级 JavaScript 库 (上)。
Date.js
和日期打交道不是件容易事,有很多格式要处理。Datejs 可以很好地处理简单或复杂的日期函数。可以将日期解析出诸如“Next thursday”,“+2 years”一类的格式,也支持所有日期形式,如 2009.01.08, 12/6/2001。
Sylvester
一个处理矢量和点阵的数学 JavaScript 库,包含多维矢量和点阵建模类,以及在3D空间的一些模型。
Pretty Date
一个很出色的 JavaScript 库,用一种很漂亮,很友好的方式显示日期,如下图所示。
XRegExp
JavaScript 中的 RegExp 对象已经支持正则表达式,XRegExp 增加了更多未来浏览器可能包含的功能(ECMAScript 4 – ES4)。该库对 RegExp 对象进行缓存,重用并增加了众多新功能。
JavaScript URL Library
一个用来处理 URL 的 JavaScript 库,可以对 URL 中的任意部分进行处理。
typeface.js
这个库可以让你在网页中使用任意字体,但和 sIFR 以及 FLIR 这些基于 Flash 的方案不一样,typeface.js 100% 基于 JavaScript,只需将你的字体文件上传到一个基于 Web 的生成器那里,再将生成的 JavaScript 文件下载回来包含到网页中即可。
Cufón
和 typeface.js 很相像,Cufón 也可以让你在网页中使用任意字体,同样,它也是使用一个生成器,将字体转换成 VML,将生成的 .js 文件包含到网页即可。
Blackbird
人们经常使用 Alert() 调试 JavaScript 程序,Blackbird 提供了一个漂亮的控制台记录,查看,过滤程序的运行。
NitobiBug
基于浏览器的跨浏览器 javaScript 对象记录与检查工具。
Firebug Lite
目前最好的 JavaScript 调试工具非 Firebug 莫属,然而该工具只支持 FireFox,将 Firebug Lite .js 文件插入你的网页,就可以在所有浏览器都实现 FireBug 功能。
swfobject
这是一个最受欢迎的对 Flash 对象进行引用的方法。可以生成标准 swf 引用代码,并探测用户播放器版本。如果用户版本不支持,会显示备用内容。
sorttable 与 dragtable
不管你喜欢与否,table 仍然是最好的表现数据的方式,但可以更好地利用。sorttable 可以让表格数据排序,只需在 table 上加一个 class="sortable" 标志,还可以排除指定的栏。dragtable 让表格的栏可以拖动,在表格上加上 class="dragable" 标志即可,这两个类可以结合起来使用,只需加上 class="sortable dragtable" 即可。
DD_roundies 与 DD_belatedPNG
DD_roundies 可以不依赖图片实现圆角功能,只面向 IE, 通过 VML 实现,其它浏览器会被略过,因为那些浏览器本身支持 CSS 圆角。
DD_belatedPNG 是为了解决 IE6 对 PNG 支持不好问题而开发的,不管 PNG 图片用于 src 还是 background-image,DD_belatedPNG 都能提供修补。
Custom JavaScript Dialog Boxes
一个只有 4.5K 的轻量 JavaScript 库,可以创建用户定制对话框,可显示4种类型的消息框,alerts, warnings, prompts, success。可以设定消息框标题,内容,以及过多长时间显示。
GameJS
GameJS 是微软的 XNA 游戏框架在 JavaScript 上的移植,使用 canvas 对象作为输出设备。JavaScript 不是最佳游戏平台,但对那些帧率较低的游戏也没有问题。
Shortcuts.js
从 Google Reader 和 Gmail 开始,Web 程序中的快捷键开始流行起来。Shorcuts.js 让快捷键的处理变得简单。
Mapstraction
有不少地图提供商都提供不同 API,如果你要更换提供商,比如从 Google Maps 到 MapQuest,需要更新代码,Mapstraction 提供了常用地图提供商的 API,只需该一行代码就能完成转换。
Amberjack
一个只有 4K 的微型 JavaScript 库,可以为你的网站添加漂亮的教程功能,一个模式窗口会以教程的形式显示任意内容,教程中的步骤可以通过手工编码实现或在线自动生成。可以使用主题或 CSS 控制内容的格式。
JsLoad
JsLoad 可以从 Google server 远程加载各种 JavaScript 库,可以自动加载各种版本的支撑库。
本文国际来源:http://www.smashingmagazine.com/2009/03/02/40-stand-alone-javascript-libraries-for-specific-purposes/
中文翻译来源:COMSHARP CMS 官方网站
流行的 JavaScript 库不胜枚举,jQuery, MooTools, Prototype, Dojo, YUI。这些 JavaScript 库功能丰富,加上它们的插件,几乎能胜任任何工作,然而这是有代价的,这些库往往导致你的网页尺寸臃肿。在某些场合,如果你只想完成特定的工作,可以使用一些功能更专一的轻量库,本文介绍了40个非常出色的轻量级 JavaScript 库。
wForms
一个低调的开源项目,简化了绝大多数常用 JavaScript 表单功能,包含可以直接使用的表单验证功能,另外,还包含强大的表单同步以及表单条件判断功能。
Validanguage
又一个低调的 JavaScript 表单验证框架。它拥有集成逻辑,一些设置可以针对全局,单个表单或单个对象。提供两个API,集成 AJAX 支持,缓存,以及回调函数。它提供类似 HTML 的 API 语句,以及面向对象的 JavaScript API 。
LiveValidation
一个轻量的表单验证库。除了传统的验证功能,还提供实时验证,可以一边输入一遍验证。Ruby on Rails 用户可能会发现这个库非常好用,因为他们的命名规则和参数十分近似。该库既有独立版本,又有一个 Prototype 版本。
yav
一个强大,灵活,可扩展的表单验证库。支持各种场合,从简单的如日期,电子邮件地址以及整数的验证,到复杂的,如正则表达式。内置 AJAX 支持,输出的错误消息可以定位到对象级。
qForms
处理表单的整套方案。功能包括各种验证规则,防止多次发布的机制,以及锁定或解锁制定输入框。
formreform
不基于 table 的多栏设计向来是一个挑战。这个微型库将传统的表单变成漂亮的多栏形式。
$fx()
一个用来让 HTML 对象运动的轻量库。你可以在一个时间轴上改变任何 CSS 属性,对于复杂动画,你可以将各种效果结合起来,将对象分组,让它们并行运动。
JSTweener
一个生成中间帧的 JavaScript 库,它的 API 类似著名的中间帧引擎 Tweener。你可以指定动画时间,定义切换效果以及时延。在几乎任何点都可以触动事件。
Facebook Animation
一个强大的,用来创建可定制的,基于 CSS 的动画。在 Facebook 动画中,几行代码就可以改善 UI。语法和 FBJS (用于 Facebook 的库)一样。
FX
一个语法类似 YUI 的轻量 JavaScript 库,可以为几乎任何 CSS 属性创建中间帧。支持颜色和滚动动画,为对象设置 to 和 from 值就可以了。
JS charts
支持柱状图,圆饼图以及简单的曲线图。直接将这个库插入网页,然后从 XML 文件或 JavaScript 数组变量调用数据。PNG 格式,兼容所有主要浏览器。
Canvas 3D JS Library (C3DL)
C3DL 使 3D 程序的编写变得简单。提供一套数学,场景与 3D 对象类,可以直接在浏览器中开发 3D 内容,不需要很深的 3D 知识。
Processing.js
这是 Processing 语言在 JavaScript 的移植。2D输出功能丰富。提供了绘图,色彩处理,字体,对象等处理函数。
Rapha?l
一个让人惊叹的 JavaScript 库,可以在 Web 上实现矢量图。使用 SVG, VML 创建的图形可以被更改或绑定事件。功能极其丰富,包括旋转,动画,缩放等。
ImageFX
该 JavaScript 库为图片添加效果,如虚化,锐化,浮雕,加亮等。ImageFX 使用画布对象实现这些效果,兼容所有主流浏览器。这个库非常容易使用,只要将 .js 库文件插入网页,调用那些函数即可。
Pixastic
Pixastic 使用 HTML5 画布对象,允许对原始像素进行操作。效果包括去饱和度,灰度级,反转,亮度,对比度调整,色调,饱和度调整,以及浮雕,虚化等效果。因为用到了 HTML 5 的画布对象,因此还无法兼容所有浏览器。
Reflection.js
一个很低调的 JavaScript 自动实现倒影效果。倒影的高度,透明度可以调整。支持所有主流浏览器,文件尺寸小于5K。
Taffy DB
一个 JavaScript 库,可以看作浏览器中的 SQL Server,或高级数组管理器。在使用了 AJAX 的程序中,可以用作数据库层,可以创建,读取,编辑,删除数据,使用循环,排序以及高级查询。
ActiveRecord.js
这个库支持 Google Gears 以及 Chrome,Aptana Jaxer, Adobe AIR 以及任何支持 HTML 5 SQL 细则的平台(目前有 Webkit 以及 iPhone)。可以自动创建表,验证和同步数据。

本文国际来源:http://www.smashingmagazine.com/2009/03/02/40-stand-alone-javascript-libraries-for-specific-purposes/
中文翻译来源:COMSHARP CMS 官方网站
[code]
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* 如何遍历Map。<br>
* 第一步,得到keySet,也就是键值的集合<br>
* 第二步,循环每个键,可以用迭代器<br>
* 第三步,对每个键进行读取<br>
*
* @author 老紫竹研究室(laozizhu.com)
*/
public class Test {
public static void main(String[] args) {
Map map = new HashMap();
map.put("1 ", "2 ");
map.put("2 ", "3 ");
Iterator i = map.keySet().iterator();
while (i.hasNext()) {
System.out.println(map.get(i.next()));
}
}
}
[/code]
[quote]题目要求:一个桶中有12斤油,要求倒出6斤,可现在另外只有两个桶,分别可装8斤与5斤,请问应如何来倒。补充:这里的12,6,8,5都是变量,应该可以自己设置,输出是每一次分油的步骤。[/quote]
题目可理解为对8和5进行加减,使之能产生6即可。
其中,+代表往改桶里倒满油。-代表将该桶的里油全部倒出。
此题的一个简单结果是8+8-5-5=6,这意味着,只要连续2次将8的桶灌满然后2次将5的桶灌满则8斤的桶里面剩下的刚好是6斤的油。
由此可以归纳出来算法就是找到满足x*8+y*5使之满足最后所求即可,x和y是可正可负的一个系数。
[code]
import java.util.ArrayList;
import java.util.List;
public class SplitOil {
/**
* 题目要求:一个桶中有12斤油,要求倒出6斤,可现在另外只有两个桶,分别可装8斤与5斤,请问应如何来倒?
* 补充:这里的12,6,8,5都是变量,应该可以自己设置,输出是每一次分油的步骤。
*
* 题目可理解为对8和5进行加减,使之能产生6即可。
* 其中,+代表往改桶里倒满油。-代表将该桶的里油全部倒出。
* 此题的一个简单结果是8+8-5-5=6,这意味着,只要连续2次将8的桶灌满然后2次将5的桶灌满则8斤的桶里面剩下的刚好是6斤的油。
* 由此可以归纳出来算法就是找到满足x*8+y*5使之满足最后所求即可,x和y是可正可负的一个系数。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
List<OilQuestion> resultList = new ArrayList<OilQuestion>();
int a=8;//桶1的容量
int b=5;//桶2的容量
int c=6;//要求的结果
resultList=getXY(a,b,c);
for(int i=0;i<resultList.size();i++){
OilQuestion o = (OilQuestion)resultList.get(i);
System.out.println("x="+o.getA()+";"+"y="+o.getB());
}
}
public static List<OilQuestion> getXY(int a ,int b,int result){
//考虑到可能有多种结果,所以把结果OilQuestion放到一个List当中,每一个OilQuestion是一个由a,b系数组成的对象
//选出一个结果 为 result=x*a+y*b ,这里的x,y可正可负
List<OilQuestion> resultList = new ArrayList<OilQuestion>();
int max=50;
int x=0;
int y=0;
for(int i=-max;i<max;i++)
for(int j=-max;j<max;j++){
if((i*a+j*b)==result) {
x=i;
y=j;
OilQuestion o = new OilQuestion();
o.setA(x);
o.setB(y);
resultList.add(o);
}
else continue;
}
return resultList;
}
}
class OilQuestion{//定义一个内部类,该内部类有两个属性a和b
int a;
int b;
public void setA(int a)
{
this.a=a;
}
public void setB(int b)
{
this.b=b;
}
public int getA(){
return a;
}
public int getB(){
return b;
}
}
[/code]
[code]class StaticTest{
int x=1;
static int y=1;
}
class StaticTester{
public static void main(String args[]){
int i;
StaticTest.y= StaticTest.y +1;
StaticTest m=new StaticTest();
StaticTest n=new StaticTest();
m.x= m.x +3;
m.y= m.y+3;
n.x= n.x+5;
n.y= n.y+5;
System.out.println("m.x="+m.x+" "+ "m.y="+m.y);
System.out.println("n.x="+n.x+" "+ "n.y="+n.y);
}
}[/code]
输出结果为:
m.x=4 m.y=10
n.x=6 n.y=10
m.x=4和m.x=6都是好理解的
下面是一个简短的说明:
[quote]static可以修饰类中的属性和方法。
静态属性在类定义时静态地分配空间。它属于类,不属于某个特定的对象,因此可以通过类进行访问。往往将属于类的公共属性说明成static。[/quote]
也就是说一个声明为static的变量,你改变多少次,它的值只是唯一的一个,就像前面引用的说的
[quote]静态属性在类定义时静态地分配空间。它属于类,不属于某个特定的对象[/quote]
如果最后把StaticTest.y打印出的,也是10