( Fri, 8 May 2009 16:13:37 +0800 )
Description:
1. 标准工时制定
2. 生产流程制定
3. 生产绩效评核及追踪
4. 规划生产线,制作生产线配置图
5. 教导领班、作业员以能确实执行组装或测试动作
6. 制作MPI(作业指导书)
7. 制作人力需求表、工具表、辅料表等,以供工具室、物管备料及厂部领用之依据
8. 依据需求向ME提出要求与构想,要求设计治、夹具,并跟催治、夹具上线
9. 依据工程变更命令(ECO)发出MN,通知并指导生产线采取应有之行动以符合工程变更要求
10. 发出MN以通知相关单位对某些特殊要求之遵循或对不正确动作之修改
11. 对生产现场之工具、仪器、设备及人员之动作进行检查,遇有不符合规定之处,马上提出,要求改正
12. 规划并提供生产线应有之生产设备,并改善之
13. 随时掌握生产设备之状况,并要求FE /FM /PE尽一切可能维持生产设备于堪用状况
14. 进行方法改善,降低工时使生产更顺利
15. 推动成本降低行动(COST DOWN)
16. 仲裁生产与品管间之争执
17. 工厂布置设计与执行
18. 生产线与品管人员训练
19. 负责提供申请进口批文所需之数据
20. 参与协力厂商之评鉴工作
21. 主导样品机,提供作业
22. 协助寻找第二货源
23. 担任业务与工厂间之沟通桥梁
24. 主导厂内未来生产技术之走向
25. 消耗性材料需求用量之估算及消耗性材料厂商之评鉴
26. 不良材料报告书之会签及决策
27. 对于向外承包之工程进行成本估算,对于外包工程进行报价审核
28. 参与制定BOM架构并跟催BOM之建立
29. BOM核对及提出对BOM之修改且跟催R&am D RELEASE ECR
30. 成本估算
31. 新产品导入之主导,各单位之协调、联系及排程之跟催
32. 主导旧产品结束生产之动作
33. 协助物管、采购跟催材料
34. 主导量产前试产行动
35. 召开试产会议及检讨会议
36. 跟催α、B或C TEST所发生之问题反应与解决
37. 担任OEM产品之PROJECT LEADER,掌握通盘事项并主导整个项目之进行
38. 控制主机板的版本、采购量及下单时间
39. 主导工程变更要求之签核与执行
40. 协助安规及EMI***之申请
41. 在量产前对于前置期较长之零件跟催采购申请单
42. 协助新产品之技术转移事宜
IE/ME-工业工程师/制造工程师的工作精神 一. 定义
IE:Industrial Engineering 工业工程
ME:Mechanical Engineering 机械工程
二. 分类
IE:古典(传统)I.E.:偏向动作研究 现代I.E.:偏向方法改善
M.E. / I.E.:适合于任何一个行业
三. 如何扮演工程师的角色?
1. 工程师应具备的质量:
自信,主动积极,尊重劳力、能力与人性,公平,仕奉,专业,敬业,不推诿,诚实,守信。
2. 工程师完全明白该做些什么及如何做?(工作职掌的深入了解)
3. 自己要有能力去做并让人信服 动手能力 消除对立,把产量、质量的提升、追踪看作自己的一部分 清楚了解每一个设备 找到原因谈极限,碰到极限怎么办?
4. 建立工程单位的权威 认清自己的目标,别太理会别人的目标 很多事情可能只需要想“需不需如此做”,少一些“太麻烦了,不要那么做”,多一些“不如这样, 这样做可简单些”来达到等效或超效的目的
5. 日检讨,时间的合理分配,工作目标
6. 生产线的益师益友
7. 专业的权威
8. 沟通协调能力
9. 如何show performance
10.如何面对过失 ( Wed, 6 May 2009 18:26:42 +0800 )
Description:
我认为19寸够用了,太大没意思
机箱:酷冷毁灭者 300 太贵了,一般都250以下,厉害的有220拿的!!!
电源:航嘉磐石400 320 坚决不用这个!!!
显卡 昂达 9800GT 1GB 1 699 建议上MSI 的 9600GSO 384M 或 9600GT 512M
CPU:AMD 9650 870 都是淘汰的东西了,这价格建议上AMD 720
主板:技嘉770-VDS 680 建议 技嘉 GA-MA770-UD3 网上才卖600,实际稍微贵点 再好点就 技嘉 GA-MA780G-UD3H 650
技嘉品质非常不错。。我用过MA770-S3。。。我看那款MA770-UD3H非常不错。。做工比别的牌子要好上很多。贵上几十块钱。。绝对物有所值。。。显卡。。我个人觉得。。昂达的牌子。非常垃圾来形容。。优如像本本神州一样。。呵呵。。N卡。。。索泰。。。做工方面都挺不错的。。A卡。。。蓝宝石。。迪兰恒近也不错。。。。差不多价钱型号很多。。就不说了。我朋友卖昂达了都怕了。。现在都不做那牌子。。反修率超高。。。 ( Wed, 6 May 2009 18:23:32 +0800 )
Description:
【图文】攒机完成已久,交份迟到的作业。(济南科技市场二期) 从3月8号装机到现在已经快有2个月了,本来想马上买了
,拍了照片,然后再发帖的,可是在这段时间里,买相机的钱全被老婆买了化妆品,看来相机无望,只好发点截图吧,因为
是山寨货,拍出来的效果还不如我画的好,所以不照了,大家见谅,下面说一下装机的过程和这两个月来的测试结果和使用感受。 我是济南的,从去年10月开始在论坛泡,当时老机器跑不动魔兽世界了准备换机器,于是每天在论坛学习6个小时以上,从硬件参数、行情到如何对付JS都做了系统的研究,直到3月才敢出手。8号这天,做好了被黑的思想准备来到科技市场,因为之前来过一次,看好了要装的铺子,直接进门,一个30岁左右的女的接待,交谈一会,可能她也觉得我也懂点,所以之后少了很多忽悠,直接我报件,她报价,配置如下
CPU E5200(原盒) 480 主板 蓝光P43 399
内存 宇瞻2G/800 125
显卡 昂达9600GSO384/192 499
硬盘 硬盘西数320G企业级 340
光驱 明基185 125
电源 航嘉冷钻超静音2.31 260
机箱 大水牛0609(无电源) 170 一共 2398 她建议内存
窄版115元,西数320G非企业级的290元,航嘉2.3的220元,我没同意,她可能没黑我,只不过我那套配置已经研究了很久,即使贵点也不想变了。 我这人本来就嘴笨,又懒的讲价,之前跟她说过利润会给你留出来,但东西要实在(这句话是在论坛里学的),再加上论坛上说要给商家利润,最后她说2390,我也没还价,就同意了(是不是傻了)。对于价格,我觉得硬盘贵了,其他的都和zol上的报价一样,但我是在济南也没法和中关村的比,所以就忍了,如果砍的话,我觉得2300拿下没问题 写完单子,确定都有货后,开始打***送货,这里要说的是,之前我忘了说不交押金的事(第一次干这事太紧张,有些东西都忘了),等他们把货都拿来,我也检查没问题后,她要我交200块押金,我顿时一惊,骗子,可看到东西都拿来也拆开了,不好意思走人,于是咬咬牙交了100押金,并且要了收据,还让她在上面写了如有故障问题,必须换同型号部件(这也是论坛里学的),然后开始上楼装机,这之后一起都很顺利,系统是XP***版的,装机的也挺实在,说GHOST的不稳定,装完后我用U盘里的软件检查了一下,这点也是在论坛里学的,一来看一下USB接口有无问题,再者看下硬件有无错误。最后装箱交钱走人。 下面说一下使用感受 CPU是盒装,2电容的,但没有代理商标签(当时忘了这事),不像是正规渠道的货,但风扇是原装的,体质一般,默电1.208,内存是CL6的,有点遗憾,买回家过了一个星期,才舍得超频,CPU 266*12.5(3.3G)内存1064进系统后,提示加载程序失败,姑且这么叫吧,我判断是内存不行,于是重启,cpu不变,内存设为800,正常进入使用,OR没时间跑,只跑完06,应该算稳定吧,温度和不超基本没有多大变化。内存960可以,再高没试过,cpu只试过3.3的,3.6G无法开机,其他主频没试过 显卡温度确实很高,现在室温20+,待机51,玩魔兽世界,效果全部最高不包括阴影(其实我发现开不开阴影,帧数都一样,但显存消耗增加150M),维持在58度左右,因为到59度时风扇转速上升,控制住温度了,不过75%转速时噪音明显变大。 那天看了总督的帖子,现在考虑是否换风扇,不过这样性价比没了,不如直接9600GT了 硬盘噪音太大,当初多花钱选它,是因为传说企业级硬盘性能稳定,数据安全,但这噪音像嚼冰块一样,吱吱嘎嘎,无法忍受,最后用HD Tune Pro调,声音明显变小了,在能接受的范围。 这块硬盘检测通电时间是50多小时,再加当时是散包的,心里有点怀疑,看到论坛里有朋友也是种情况,而且换了两块还是,最后打***问***,***回答是,企业级硬盘比普通出厂检测时间长,不知道是真是假 电源确实有声音,就所说的电流声,平时声音小点,玩孤岛危机弹头时(可能满载),声音变大,不过平时,不靠近电源听不太出来,风扇挺安静 机箱后悔没加点钱上毁灭者,这机箱做工还行,就是后面不能加12CM风扇,前面能加,但进风口太小,基本没用 用了快两个月了,CPU没超,都是默认状态,每天开机15小时,没出现过问题,偶尔有一次开机蓝屏,重启后又正常了,现在机箱加了两个风扇,侧板显卡位置一个8CM的,对显卡作用明显,使温度降了4-5度,后面一个9CM的,噪音有点大,晚上安静的时候把风扇拔了,白天插上,现在考虑前面是否加一个12CM的 本来买机器是为了玩魔兽世界的,但是在论坛上泡了近半年,开始对硬件有兴趣了,没多少兴趣玩游戏了,即使玩游戏也是为了看一下机器跑的效果如何,孤岛危机、使命召唤、侠盗猎车手、全面战争,这些游戏测试有时间再发,希望能测试到CWOW版的WLK 最后上点测试图,没有相机,实物图不上了。因为测试温度everest和优化大师数值一样,所以为了方便有些时候用的是优化大师,有些图可能没截到点子上,希望大家指出,我再修改。 希望这些能给像我一样想攒机的菜鸟们一点帮助,虽然配置可能已淘汰,但攒机过程还是可以借鉴的,最后还要感谢论坛上各位朋友热心的帮助 1. cpu、内存、显卡 参数
2. 温度 今天太热,机器温度也比平时高了几度
3. 硬盘
4.硬盘噪音 这一项可以调小声音
5. 这是不超频的 6. 不超频的分数 1024*768
7. 超频后的分数,显卡没超,默电1.208,内存800,这时候室温低
( Wed, 6 May 2009 17:10:21 +0800 )
Description:
Atom到i7 AMD/Intel 31款CPU年度评测
揪出游戏瓶颈 14款主流CPU轮战GTX285 ( Wed, 6 May 2009 16:55:31 +0800 )
Description:
超频就P45 不超就P43。
P45可以支持SLI P43不可以
P45无外频墙 P43有
P45一般搭配的南桥支持RAID P43搭配的不支持
我知道的就这么多了
HA03-Ultra采用AMD 790X+SB750芯片组
支持下一代K10处理器
HA03-GT2采用AMD 770+S700芯片组
用100块来衡量芯片组和升级空间 我想是不用说了
790X+SB750比770+S700肯定要高 最大的区别在于HA08 COMBO同时支持DDR2和DDR3内存,但不能同时使用;而HA08仅支持DDR3内存。 微星的p43 NEO3-F 和P43 NEO3-F LV版有什么区别?两款产品没有本质的区别。P43 NEO3-F LV更新一些,主要改进是使用了VRD 11.1的CPU供电标准。另外,加入了简易超频开关,避免复杂的 BIOS 超频设定,获得更好的 CPU 性能
参数好像差不多,前者599,后者499.悍马HZ01与X-blue 790gx有什么差别?HZ01集成的是三星DDR3显存,X-BLUE集成的是DDR2显存,这是主要的差别,HZ01用笔记本内存且送内存条,其他基本相同。
根据MSI以往的惯例,不带任何参数的型号一般是标准版,带“M”的实际上是“Micro”的意思,大多是用了MicroATX规格。从外观上看比标准版的短,整个板型更趋向于正方形,而标准版的ATX主板大概是16:10的长方形。
小板相对于同型号的大板来说主要功能不会有什么变化,通常只是减少1-2个扩展卡插槽而已,极个别的会缩减内存或SATA接口的数量,价格差距一般100块左右。
MSI的主板一般在显卡旁边以及内存条旁边的位置都印刷了产品的商品型号和厂家编号,只要看仔细,一般不会买到缩水的产品。
技嘉GA-MA770-US3与技嘉 GA-MA770-DS3P啥区别?这2款主板所才用的芯片组跟性能上都是一样的.区别就是在于GA-MA770-US3是才用超耐久3代技术.超耐久3代是在2代的基础上,增强了主板的温度控制能力,简单的说就是PCB电源层加厚2盎司,纯铜降低了PCB的阻抗,使得热量降低。在节能方面更加出现色.还有一点区别就是GA-MA770-US3的电容不是全部才用固态的,只是供电部分才用了固态电容,GA-MA770-DS3P的电容是全固态的. 主板的做工用料也是一大卖点.
所以这2款主板各有个的好,GA-MA770-US3用超耐久3代技术,主板温度更低更节能.GA-MA770-DS3P做工用料更好.性能上都是一样是喜欢哪款就看你拉.如果有钱的话(加多几十块)建议你选用技嘉 GA-MA770-UD3 这款主板也是采用超耐久3代技术的,全固态电容.
技嘉主板代号:其中D代表全固态,P代表增强型,S代表不是全固态电容,U代表超耐久3代技术.
这几款主板都能很好支持 AMD9550.
HA07-ULTRA好一点,但是因为不提供DDR3的内存插槽,所以未来升级到AM3接口CPU的时候只能用回DDR2内存,不过AM3接口CPU全部都集成有DDR2内存控制,所以可以放心使用。
不过,如果是想着用AM2系列,以后再换上新主板用AM3的话,那么建议是HA03-ULTRA,能省不少,只是在K10支持上,HA03-U的完整性是没有HA07-U这么强,因为HA07-U是用来给未来的45nmCPU的K10用的,而且在主板处理上,HA07-U是6层PBC板,而HA03-U是5层来的,少一层PBC板,那么布线也同时要紧密很多,这样的布线容易引起主板不稳定。
而HA07-U的升级版,HA08-COMBO就是服务器型8层PBC板,而且还支持单条4G的内存,还有两条DDR3插槽,如果是考虑未来升级需要的话,我是强烈建议购买HA08-COMBO的,我这里刚刚过了新品促销期,回到了正常价格的900元,我上两个星期买的时候是新品促销,700块有交易,如果有需要的话去找找看还有没有新品HA08-COMBO的新品促销活动,比HA07-U多花20元就能搬回家了。
790fx是顶级平台,不带集成显卡,支持cro fire X模式互联,最多支持4卡交火。在双卡模式时为16X+16X,在三卡模式时为16X+8X+8X,在四卡模式下则为8X+8X+8X+8X
790gx是主流级平台,带集成显卡,支持8X+8X交火和混合交火
不过由于7系列主板已经是pci-e2.0标准了,是之前的pci-e1.1标准的2倍带宽,所以8X模式下就相当于以前的16X。
即使在8X模式下,对于gtx260、hd4850、4870这样的高端级别显卡也是完全能够满足其带宽要求的,没必要很在意是否为16X模式。
当然,遇到诸如9800gx2、hd4870X2或者新晋为显卡之王的gtx295这类单卡双核的“怪兽”级显卡,全速的16X模式就应该是必须的了 ( Mon, 27 Apr 2009 17:06:30 +0800 )
Description:
进入 cmd
输入CONVERT *: /FS:NTFS /X
*代表你要转化的盘符
windows信息
将 FAT 卷转换成 NTFS。
CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]
volume 指定驱动器号(后面跟一个冒号)、
装载点或卷名。
/FS:NTFS 指定要被转换成 NTFS 的卷。
/V 指定 Convert 应该用详述模式运行。
/CvtArea:filename
将根目录中的一个接续文件指定为
NTFS 系统文件的占位符。
/NoSecurity 指定每个人都可以访问转换的文件
和目录的安全设置。
/X 如果必要,先强行卸载卷。
该卷的所有打开的句柄则无效。
( Wed, 22 Apr 2009 12:36:55 +0800 )
Description:
说实话,P43和P35还真是不好选,首先要说的是所谓P43是过渡产品不准确,芯片组这东西怎么才算过渡产品?我想除了当年配合423接口奔4忽悠大家的850E以外都不能算过渡产品,当然了,P4*系列是最后一代775平台芯片组,之后INTEL只会在775平台发布低端处理器,不过那都是很久以后的事情了,从几大主板厂商数量众多的P4*主板就可以看出对这末代775平台的重视,同时也可以预见这代芯片组的寿命会相当长的。从规格来说P43相对于P35其实相差并不大,南桥就不说了,因为现在南桥鲜有新技术,AHCI从ICH8开始就支持了,性能相差都不大,主要就是不断的增加SATA和USB接口而已。北桥来说P43由于是新工艺,具有更低的发热量和更高的理论超频能力。同时相对P35最大的进步就是支持PCI-E 2.0,其实现在P35降价甩货,买P43的价格应该可以买到很多一线大厂的中端P35或者二线高端P35主板,对于中端甚至中高端P35与P43比较来看,由于这些P35一般做工出色,超频性能也十分强悍,对于华硕、微星、技嘉等等实力厂商来说,早已在P965上超频支持几乎所有775处理器,因此P35主板也可以预见可以支持基本上所有775处理器,加上P43也只支持北桥的PCI-E 16显卡通道和南桥能够提供的PCI-E 4速通道实现交火,这点也和P35相同。因此其实P35和P43最主要的区别也就只剩下PCI-E 2.0接口了。个人认为如果你是玩家,对游戏性能有着执着的追求,选择P43当然是不二的选择,同时有着更好的升技性。不过会考虑P43说明楼主的钱包也不是很鼓,因此估计其他的配件并不会使P35成为性能的瓶颈,所以选择名牌大厂做工出色的P35主板在稳定性和超频性上也会给楼主一个满意的结果。另外不可忽视的是这类P35主板大多配备ICH9R南桥,而大多数P43主板仅使用ICH10南桥,现在硬盘这么便宜,而且磁盘性能一直是PC中最大的瓶颈,因此选择使用ICH9R的P35主板搭配两块硬盘的RAID0对使用愉悦的提升远大于PCI-E 2.0大多数时候仅仅10%左右的游戏性能提升,毕竟电脑大多数时候并不是打游戏。所以楼主可以根据自己的实际需求和已有配件理性的选择。
( Fri, 17 Apr 2009 10:52:24 +0800 )
Description:
统一渲染架构
统一渲染架构(Unified Shader)是相对于分离式渲染架构而言的.以往显卡由顶点
和像素渲染管线组成,生成图像的过程都是先由顶点渲染管线中的Vertex Shader(顶点着色器)生成基础的几何图形骨架(由三角形构成),然后再由像素渲染管线中的Pixel Shader(像素着色器)进行填色,最后才是像素渲染管线中的纹理单元进行贴图。而新的统一渲染架构,
器和像素着色器被合二为一,成为流处理器,它将同时负责顶点着色和像素着色,避免了附载不均衡的情况。
统一渲染架构中还增加了Geometry Shader(几何着色器),也就是说现在每条渲染管线都有流处理器和纹理贴图单元组成,其中
身兼顶点着色、像素着色和几何着色三职。
最早提出统一渲染架构的是微软的
而不是NVIDIA或ATI,也就是说,目前所有支持DX10的显卡都是采用统一渲染架构。
非统一架构
显卡的渲染管线是显示核心(也就是显卡的CPU,显卡的心脏,学名叫显示处理单元)的重要组成部分。现阶段的显卡(主要是针对微软DIRECTX(驱动和操作系统的接口技术)的版本来说的)都是非统一架构的,也就是分为顶点渲染和像素渲染。那么在显示核心的内部就分为两大区域,一个区域就是顶点渲染单元(也叫顶点着色或顶点着色引擎),主要负责描绘图形,也就是建立模形。一个就是像素渲染管线(也叫像素渲染管道),主要负责把顶点绘出的图形填上填色。然后再加上纹理贴图单元贴上纹理,一个精美的图形就出来了。如果你还不懂,那我举个简单的例子吧:比如现在要显卡绘出一个茶壶。当这个茶壶的顶点信息从显存传到顶点着色单元后,顶点着色单元就会依据这些信息绘出这个茶壶的轮廓。接下来像素渲染管线就会依据这个轮廓,把从显存中的有关这个茶壶的颜色信息读出来,给这个茶壶上色,如果这个茶壶是白色的,就上白色的。然后再由纹理贴图单元贴上精美的图案,最后这个精美的茶壶就出来了。你想一下,你平时画画,是不是也是先画个大概,然后再进行修改,上色,画上图案,最后才画好呀,其实显卡工作起来,也和我们画画差不多,只不过他的效率很高,每秒可以画上亿个罢了。
从上面我的解答中你就可以发现,渲染管线就是显示核心中负责给图形配上颜色的一组专门通道。它是显示核心中单独设计的一组电路,拥有单独的晶体管。渲染管线越多,那么所绘出的图形它的填充效率就越高,自然我们看到的画面也就越流畅越精美。这就是为什么渲染管线越多越好的原因。如果少了,那么自然就会使显卡的性能下降。当然渲染管线越多,显示核心就会越大,因为它所使用的晶体管数目增加了。
不过在微软的DIRECTX10出来后,顶点渲染和像素渲染将淡出我们的视线,因为它将采用统一架构。也就是一个核心中是由一组专门的通道既负责顶点渲染又负责像素渲染的。也就是只会有贴图单元。这个时候是贴图单元越多越好,画面越好,越流畅,性能越高。
在非统一架构时代,像素渲染管线中还有一个概念,就是我前文中说到的纹理贴图单元,一般来说,一条像素渲染管线只有一个贴图单元,当然也有2个,3个甚至4个的。比如NVIDIA的GEFORCE5800ULTRA就是2个,ATI的X1900GT就是3个,ATI的X1900XTX就是4个。这也就是为什么ATI的X1900系列发布后,都是16条渲染管线,但贴图单元却是48个的原因。那么X1900GT是36个贴图单元也就不难得出了,因为它有12条渲染管线,每个管线中有3个纹理贴图单元。其实这又引出了一个概念,就是纹理填充率,这也是显卡的一个重要性能指标,和渲染管线一样也是越多越好,这两者是相辅相成的。
最后告诉你一下计算像素填充率和纹理填充率的方法,单位分别是GB Pixel/s.GB texture/s.
像素填充率=显卡的显示核心频率乘以像素渲染管线数量。
纹理填充率=核心频率乘以像素渲染管线数量再乘以纹理贴图单元数量。
在有的游戏中会有材质这个词,实际上也就是纹理。
( Mon, 13 Apr 2009 13:42:53 +0800 )
Description:
马化腾的QQ功能全开,一辈子竟然花掉惊人的两亿!别吃惊
不少人看到这个结果肯定都吓了一跳,但事实就是你真的没有看错!
你感到惊讶笔者也十分惊讶,仔细一查才知道马化腾回收了大量5位,6位,7位,8位的号码重新命名为“亮号”
马化腾手里到底有多少亮号!我登陆QQ亮号行发现除了5位,6位,7位,8位亮号,还有手机亮号,生日亮号,
亮号,年度亮号,此外还有等级亮号(这批号是网友帮马化腾挂高等级三个月未使用以后马化腾收回去的)
亮号具有什么性质呢?亮号必须付钱,每个月10块钱,一年就是120块钱,一辈子就是一万两千块钱!一个QQ号竟然要付出一万两千块的代价才能使用!我X
马化腾的骗钱功底真的是很不一般,粗略计算就可得知亮号数量起码以百万计!一百万个亮号每个要付出一万两千块的代价,那上百万个号呢?上百亿啊,朋友们!!!
马化腾除了QQ亮骗钱还有哪些骗钱方式呢? QQ秀其实就是一张网络图片,三个月就过期了,本人一件衣服少说要穿一年半载,马化腾的一个QQ图片竟然三个月就过期了!!! 细数马化腾的收费项目竟达数百样之多!
那么算每三个月过期马上换上新的QQ图片,一生当中将花掉四千元!
腾讯以前只有红钻,蓝钻,现在出到7钻了,7套全开每套一万二,如果再开会员,那又将是9万2的开销!
QQ宠物无限次死亡,无限次买复活药,每次2元,每礼拜死一次,每天生病买一次所谓的药,光此一项目少说10万人民币!
4个手机图标全开又将是4万8!
QQROOM一首歌两块钱!背景图片等等的开销,装扮饰物等,一辈子弄好一个QQ ROOM少说20万!
腾讯图书VIP又是一万二!QQ播放器也是收费的!
3D用户一万二!
以上好吧我们都算是毛毛雨,加合一下一共是:48万而已!
下面我们来看看腾讯的大头
QQ旋舞一套虚拟衣服3000!我们算一个礼拜一套,一个月就是一万二!一辈子将花掉120万!还不包括你的发型,一个发型200!~如果每天换一个发型是多少900万!
光是QQ旋舞你一生当中就将花掉近千万了!
QQ斗地主,公开||赌博赌金不设上限,从几块人民币到几万不等,我们假设一个赌棍每天1000块涉赌,一天下来他将赢多少钱呢?事实上他一分钱都没赢,腾讯每局抽取高达20%的手续费用,1000块第一局结束变800,第二局就变640了!
一天下来两个玩家谁都没赢钱,钱全部被腾讯的手续费抽走了,所以他尽输!
一天1000,一年就是365000,一辈子就是36500000!三千六百五十万什么概念!!!!!!!!
掉线城与虚弱勇士一辈子少说5000千万!到底这款游戏有多坑钱,玩过的玩家都很清楚!
腾寻手下的所有游戏统统都是收费的!每个游戏我们只算他一千万玩一套!其他游戏总和就已经上亿了!
腾讯手下所有游戏,所有功能全开一生当中节约一点也将花掉2亿元人民币,什么概念!
腾讯的游戏实在是太贵了,一个千万富翁,100年间平均每天可支配的人民币也不过333.3元!
腾讯游戏如此骗钱为什么还有如此多玩家呢?事实上一个偏远地区的玩家从小不认识什么网络游戏,每天只上上QQ,上面有什么他就玩什么,叫交多少钱就交多少钱,他哪知道这些游戏都是盗版的!
比如泡泡堂,连连看这些游戏,正版都是纯免费游戏!
观马化腾近些年的发展思路那就是抄袭天下一切人气高之游戏为我所用,免费游戏变收费是他的第一概念!
那我们说马化腾需要用这么多钱吗?马化腾每年发完工资自己还能剩近百亿,我们再来看看马化腾的老婆王丹婷,我们应该表扬王丹婷,从外面根本看不出是一个亿万富翁的太太,你要不认识她还以为他是农村的大妈,一个不追求时尚,每天只求温饱的马化腾老婆根本就不需要上百亿,上万亿的财富!
马化腾把赚取网民的人民币当成了他的乐趣!
腾讯用QQ等级绑住了网民,我们说它很高明!真的那么高明吗?升到6个太阳需要多少时间呢,粗算一下少说20年!一个18岁的青年升到6个太阳已经38岁近40岁了,你以为6个太阳很荣耀!那是岁月流逝的赤裸裸的写真!一个17,8岁的小姑娘会不会和6个太阳的用户打成一片天呢?恐怕有点难度的!
反观国外MSN,没有等级,纯免费聊天工具所以人家老外才会交流畅通无阻!人人都是公平的
再看看马化腾的盗版聊天工具,不交钱个人形象就是浑身赤裸,交钱才能穿上好看的衣服,否则就是很便宜很农民的衣服!
马化腾以羞辱他人的方式胁迫你消费!真的是可耻可恨!
腾讯在3月15电视节目自暴的腾讯监视系统更是让人胆寒,谁能保证不犯点错误,你腾讯凭什么监视网友的一举一动!
腾讯宣称只要你交钱我们就给你安全保障,事实上2008年平安夜腾讯被黑客攻击,我们看到的只是腾讯的毫无办法和玩家的心痛和无赖,腾讯似乎已经走到头了~
再比如我想和一个太弯的美女交流,人家用的是MSN,而我用的是腾讯盗版的QICQ,我将一辈子错失和太弯美女交流的机会!多么痛心的事情啊!
为了等级而挂Q,不经意的就落入腾讯的骗局!中国真的有那么多有钱人吗?
( Thu, 9 Apr 2009 10:50:40 +0800 )
Description:
P3 1G为参照,Fritz Che Benchmark成绩得出的CPU大排名
ritz Che Benchmark成绩清单(20090217),大部分来源于网络
,部分为我实际测试。希望给升级的人一些参考。有关二级缓存对性能的影响,可查看《系统性能之二级缓存 从512K到12M》一文。http://www.je .tauchclub-krems.at/diverses/Schach/fritz9_benchmarks.html
http://www.vmodtech.com/modules.php?name=Forum am file=viewtopic&am t=13089上面的网址是国外玩家统计的部分数据,说明一下,我试过在英文XP中的成绩要比中文XP高一些(大约5%-10%)成绩测试平台的关系会有10%以内的误差,并且普通人超频一般能有20%-60%PentiumIII866M0.84Tualatin1G1(本人实测)PentiumIII1G1
PentiumIII 866M 0.84
Tualati 1G 1(本人实测)
PentiumIII 1G 1 1-2倍 Celero 1.8G 1.13(本人实测)
Athlo 64 2000+ 1.0G 1.19
Celero 2.4G 1.3
Tualati 1.33G 1.34
1600+ 1.4G 1.39
Pentium4 2.0G 1.43
1800+ 1.53G 1.52
Atom N230 1.6G 1.59----看这成绩可以这样理解Atom是节能版图拉丁
Celero 2.8G 1.61
Pentium4 2.4G 1.63
Celero 220 1.2G 1.64
Pentium505 2.66G 1.64(本人实测)
Pentium506 2.66G 1.63(本人实测)
Celero D335 2.8G 1.7
Athlo XP 2500+ 1.83G 1.76
VIA Nano L2100 1.8G 1.81
Pentium4 2.6G 1.85(本人实测)
2800+ 1.6G 1.9
Celero D365 3.6G 1.94
Pentium4 2.8G 1.95
Celero M 360 1.4G 1.95 2-4倍 Pentium 4 520 2.8G 2.03
Pentium4 2.8E 2.05
MP 2800+ 2.13G 2.08
LE-1100 1.9G 2.09
Pentium4 3.0E 2.17
Sempro 3200+ 1.8G 1.8G 2.17
PentiumM 1.6G 2.18
LE-1150 2.0G 2.2
Pentium 4 540 3.2G 2.2
Athlo 64 3000+ 1.8G 2.21
Pentium 4 650 3.4G 2.3
Pentium 4 540 3.2G 2.32
Celero 420 1.6G 2.35
CeleronM 1.86G 2.38
Sempro 3500+ 2.0G 2.42
PentiumM 1.86G 2.46
Pentium4 2.6C 2.47
Celero 430 1.8G 2.59
Pentium 4 560 3.6G 2.6
2500+(Barton) OC 2.5G 2.61--------K7架构Barton核心性能比PIII略高一点。
Athlo 64 3500+ 2.2G 2.67
LE-1600 2.2G 2.74
Pentium 4 570 3.8G 2.76
Celero 440 2.0G 2.8
Athlo 64 3800+ 2.4G 2.92
LE-1620 2.4G 2.93
Athlo 64 4000+ 2.6G 3.14
Atom 330 1.6G 3.18-----双核心
Dual MP 2000+ 1.66G 3.2
Athlo 64 FX 55 2.6G 3.24
Pentium D820 2.8G 3.38
Pentium D920 2.8G 3.43
Pentium D830 3.0G 3.67
Pentium D840 3.2G 3.92 4-8倍 X2 6400+单核心 3.2G 4-------这个成绩是6400+减半得到,估计是AMD K8架构单核心的极限,还行!相当于Core架构的85%(上下5%),说明K8架构2003年9月发布。
Celero 480 2.8G 4.01
Dual MP 2800 2.13G 4.11
T2050 1.6G 4.26
X2 2100+ 1.8G 4.38
T2300 1.66G 4.53
Pentium EE 840 3.2G 4.56
X2 BE-2300 1.9G 4.62
E1200 1.6G 4.68
LE-1620 Overclocked 3.88G 4.78-----这是网上能找到最高超频成绩。
E2140 1.6G 4.79
X2 3600+ 2.0G 4.79
X2 3800+ 2.0G 4.85
Core2 Duo T5500 1.66G 4.88
T2400 1.83G 4.93
X2 4000+ 2.0G 4.97
X2 BE-2350 2.1G 5.09
E2160 1.8G 5.28
E4300 1.8G 5.29
T2500 2.0G 5.34
Celero 430 Overclocked 3.7G 5.34------这是网上能找到最高超频成绩。估计是Intel Core架构 Conroe-L单核心处理器的极限了,Core架构于2006年3月发布,比K8慢了二年半。
X2 4200+ 2.2G 5.36
X2 4600+ 2.4G 5.59
E6300 1.86G 5.71
T2600 2.16G 5.75
E2180 2.0G 5.83(本人实测)
T7200 2.0G 5.85 E4400 2.0G 6
X2 5000+ BE 2.6G 6.01
E2200 2.2G 6.34
5200+ 2.6G 6.34
T7400 2.16G 6.34
E6400 2.13G 6.41
E6420 2.13G 6.47
X2 5400+ BE 2.8G 6.54
E4500 2.2G 6.6
X2 7750 2.7G 6.67---新的K10架构与K8相比,性能提升很小,有3级缓存
X2 5600+ 2.9G 6.74
T7600 2.33G 6.75
E2220 2.4G 6.83
E6550 2.33G 7.1
X2 6000+ 3.0G 7.32------双核心K8架构也相当于Core2架构的85%(上下5%)
E5200 2.5G 7.57
E7200 2.53G 7.7
X3 8450 2.1G 7.77
E6700 2.66G 7.96 8-16倍 X2 6400+ 3.2G 8.01
E6750 2.66G 8.1
E8200 2.66G 8.18
Phenom X3 8750 2.4G 8.49
E6800 2.93G 8.63
X3 8750 2.4G 8.93
X4 9150 1.8G 9
E8400 3.0G 9.12(X58 8.23)
Phenom X3 8750 2.5G 9.16
E8500 3.16G 9.55
X4 9550 2.2G 10.6
Phenom II X3 720 2.8G 11
X4 9650 2.3G 11.1
X4 9750 2.4G 11.6
X4 9850 2.5G 12.1------四核心K8架构也相当于Core架构的83%(上下3%)
X4 9950 2.6G 12.6
Q8200 2.33G 13.7
Q6600 2.4G 14
Phenom II X4 920 2.8G 14.3
Q9300 2.5G 14.7
Q6700 2.66G 14.8
Q9400 2.66G 15.2
Phenom II X4 940 3.0G 15.3 16-32倍 Q9550 2.83G 17
QX6850 3.0G 17.3
QX9650 3.0G 17.7
QX9770 3.2G 18.8
i7 920 2.66G 21.3
i7 940 2.93G 23.1
i7 965XE 3.2G 25.3
数据收集了那么多,就要分析一下,下面是CPU架构功效分析 功效最差的CPU:NetBurst架构Pentium D双核心的Smithfield与Presler,及Pentium4的Prescott其性能都只相当于PIII的60%。 功效最好的单核心CPU:冠军是Core架构Conroe-L核心,其性能是PIII的140%;亚军是Pentium M的Dothan核心,是PIII的130%;季军K8架构Lima核心,为PIII的122%。 功效最好的双核心CPU:Core 2架构E系列相当于PIII的152%;K8的双核三核心是PIII的125%,提前了点。 功效最好的四核心CPU:最新的i7是PIII的200%,成绩提高很多;Core 2架构因核心增加平均功效略降一点,是PIII的145%;K8的成绩也有所下降,是PIII的120%。 结论:我们普通人不要盲目的看数据,当我们消费时需要了解,它是否是最好的,或是最适合自己的
( Fri, 3 Apr 2009 14:04:06 +0800 )
Description:
如果想彻底删除输入法文件可以用以下方法
到windowsxp的***目录下的\ime\文件夹下直接删除chtime、imjp8_1、imkr6_1三个目录即可,分别是繁体中文、日文、韩文,如果你只用一种输入法那恭喜你,又可以节约80MB硬盘空间了。(注:管理员在安全模式下可以删除)
也可以删除一下文件
全拼:Wi y.ime、Wi y.mb、Wi y.hlp、Wi y.cnt。
双拼:Wi .ime、Wi .mb、Wi .hlp、Wi .cnt。
微拼:Pintllime.dll、Pintlgab.imd、Pintlgai.imd、Pintlgb.imd、Pintlgd.imd、 Pintlgdx.imd、
Pintlgie.imd、Pintlgnt.cnt、Pintlgnt.hlp、Pintlgnt.i96、 Pintlgnt.ime、Pintlgrb.imd、
Pintlgri.imd、Pintlgs.imd、Pintlgsi.imd、Pintlgsx.imd、Pintlgu.imd、Pintlguc..imd、Pintlphr.exe。
智能ABC:Winabc.cwd、Abcsda.dll、Abcwin.exe、Winabc.ime、Winabc.ovl、tmmr.rem、user.rem
(Hi , i&apo am ricky~~ 戎马倥偬一生 多少失败成功 试看大千世界 依旧海阔天空
( Mon, 25 Apr 2011 19:37:16 +0800 )
Description:
江门过去,GPS话百几公里,不过我地去用佐3个钟,明显行错路啦,翻黎先用个半钟。去果阵有D觉得好坑人,去完一个收费站问闸坡点去,D友话前面再行10几公里,跟住见倒收费站,又叫向前行10几公里。。。。。跟住又10几公里,觉得好稳笨咯。中途仲扑街D,有够石头系公路中间,直接开过去撞倒个车轮,bang一声,直接吓晕我,后面两个车轮仲漏黄油,我X。边个甘扑街订够甘X大GA石头系路中间。跟住去到闸坡稳间酒店放低D野之后就稳修车厂整车啦,好采咩事都无,D黄油系开得太耐热得挤熔佐出黎姐,无咩问题。甘又浪费佐成个钟啦,本来咪可以系沙滩玩多个钟咯,依个时候未到旺季,沙滩唔系好多人,不过好鬼大风,D浪系我见过最高GA,近海滩D足足有两米高,直接高个成个人甘坎过黎,好爽,系D浪到打翻个关斗仲可以啊,哈哈。
酒店都好爽啊,5楼,阳台对住无敌大海景,真系好有FEEL GA,晚上训觉D海浪声好大,关佐阳台都听倒。早上起身行出阳台就可以睇日出啦,几方便。不过果边D海鲜真系又贵又唔好吃,可能专门稳D游客笨咯,点几个海鲜就几百元啦,又少又难吃。所以话去果边D旅游注意下,要稳D熟饭店,唔系真系好稳笨咯。
今次当视察下先啦,因为有个赶住走,所以无玩耐,好多地方都无去,准备7月份再去过啦。
( Wed, 13 Apr 2011 22:11:12 +0800 )
Description:
自从有佐导航依样野之后,真系去边都唔洗惊唔识路啦,今次我地琳住去广海果边个浪琴湾到玩,问人借佐个导航黎用,发觉手机个导航比人家个正版导航仲好,买佐N8甘耐,依家先体现倒距个用途。。。
今次我地旅途来回大概400公里啦,跑西岸沿海高速,景色唔系讲笑,真系好型,而且车非常之少,跑起高速好舒服,D海风吹落黎凉GA,浪琴湾位于北陡镇,风景一样好靓,虽然有D落后,但系D山好有特色,而且旁边靠大海,条山路有D似头文字D里面果跳秋名山甘,都好型。因为依家仲处于开发阶段,所以门票免费GA,人都好少,好多配套仲起紧,所以基本上去到可以讲包场啦,十公里海岸线长GA沙滩,比晒你慢慢游啦,下次仲可以自己带D帐篷去露营又得。去依D地方真系多D人去先好玩,今次当开路先啦,下次叫多D人先过去玩。
( Thu, 31 Mar 2011 23:37:07 +0800 )
Description:
曾经有很多次机会摆在我面前,我都没有珍惜。
当机会错过以后,让我后悔莫及。
已经惩罚了我7年了。
今年还会继续吗?
如果上天再给我一次机会。
我一定要毫不犹豫的抓住。
7年了。
给我一次机会吧!
( Mon, 17 Jan 2011 21:33:50 +0800 )
Description:
经常听到人说做人要低调啊,做人要低调啊。我觉得当一个人低调久了,就会有一种自卑感,不知道有没人有这种感觉。
有时自己照镜子,都觉得自己很好笑,很可悲,有时觉得自己挺可怜的,又觉得自己很傻B,这些都是自己的内心感受,有时自己照着镜子都会笑自己。人家说童年无畏,真的觉得那时挺好的,想说什么就说什么,想做什么就做什么,可以做回自己,活得很自在。现在无论是接触学校,还是接触社会,都不可以这样的,说话要看人眼色,说人家喜欢听的,做事也要做人家喜欢的。当然有人会说,社会就是这样,这样做人才成熟。我觉得可能是这些原因吧,可以发现很多人出来社会工作一段时间后性格变了很多,谈吐成熟了,很多事情都看得很淡了,很多事情都觉得无所谓了,感觉生活也缺少一些激情了。不知道大家会不会,当你低调习惯后,现在有些事情觉得自己很自卑,当你有些事不说久了,有些东西低调久了,有时自己会怀疑自己,不知道大家会不会,我就有这种感觉。一直很羡慕以前的程文,呵呵~~ 以前人家就是这样叫我,那时很自在,会的就会,不会的就不会,想做什么就做什么,不会做什么都有顾忌。有人可能会说,那你就做回小孩吧。我觉得其实想一下,我们现在有很多事都会顾忌这个,顾忌那个,喜欢犹豫,经常会后悔怎么不去做这件事,因为你长大了,你考虑的事情就多,想法就多,又要顾及面子啊什么的。 其实吧,我觉得就算长大了也应该像小孩时的那样,想到的,喜欢的,就去做。不要去考虑失败啊,面子啊,或者什么的,你越是这样,我觉得做人也做得不高兴。走自己的路,让别人说去吧,人生只有一次,为什么处处要考虑啊,遇到喜欢的就去做,做好自己。可能说的话会比较容易,毕竟社会是有给你压力的,所以有时候我们会发现自己做了一个别人喜欢的人,而不是自己喜欢的人。毕竟走自己的路成功的人也太多了,就算不成功,起码自己也没有遗憾了。我觉得自己很多事情,都需要一颗自信的心才能做好,你自卑,你犹豫,你就已经输了,而且是输了自己。做人嘛,一辈子一次,就高傲的活着,也不要卑微的为别人而活。其它要考虑的事情,下辈子再说吧。
( Fri, 10 Dec 2010 17:05:25 +0800 )
Description:
其实很多事情都是自己逼自己去做的,做的好,就会让人以为我对这个事情很感兴趣,其实根本不是,现在才发现我连自己喜欢做什么也不清楚。
就像编程一样,我花很多时间去学习,花很多时间去敲代码,可能就大三一年我就敲了有十万行代码以上,说我自己喜欢吧,其实我自己知道,自己并不喜欢这样,只是自己学计算机,感觉自己不可以比别人差吧,其实就是不服输,想做得最好,到现在来自己去找计算机的工作,当拿到OFFER时,才发现自己并不喜欢搞IT,真的很矛盾,自己读这个,花时间去学,学好了自己又不喜欢这样的工作。
也有一个原因吧,就是想证明自己,大学读完出来是很有实力,现在证明了,自己又不知道想干什么了,其实一直都有发现自己,是多么犹豫不决,其实之前也感觉到了,只是没有现在那么强烈。
还有几个月就毕业了,结束自己的学生时代了,不过有一样我是很肯定的,我一直都不喜欢上学,以前也是,现在读大学也是,所以当面对考研和考***这些问题上,还是比较确定的,那就是不可能,大学生我都不想上课了,不想看书了,再读我会崩溃的。
男怕入错行, 听得够多了, 现在还不知道自己喜欢做些什么, 挺纠结的, 就算想去找, 也不知道找什么工作好。主要是自己没有特别喜欢的,也没有特别不喜欢的,就像读书一样,没有哪一门特别差,也没有哪一门特别好,搞理科类的吧,也可以,搞文科类的吧,更加不用说了,到头来就变成不知道想搞什么了~~~ 入学前就规划好毕业后,现在快毕业了,才发现自己的规划有问题,又得从新规划,只是现在不知道如何规划了, 现在还不用急吧,先等等, 观察一下吧,现在也只能这样啦,我不喜欢等待,不喜欢被动,可是现在觉得,有时候等一等,观察观察一下,也是有好处的,只是不太喜欢这种感觉。
( Thu, 2 Dec 2010 16:35:29 +0800 )
Description:
除了使用Javascript進行Data Binding外,ASP.NET AJAX Templates也支援透過標籤宣告完成設定,試圖再次實現搞AJAX不用寫Javascript的目標。實作重點如下:
1. 使用宣告法時,取消元素隱藏的工作由Client Template Library函數完成,而自動取消的關鍵在於樣版元素要指定名為"sys-template"的CSS Cla 。
2. 在body上要註冊sys與dataview兩個命名空間(Name ace),如:「body xml :sys="javascript:Sys" xml :dataview=" javascript:Sys.UI.DataView" sys:activate="*"」,其中sys:activate可以指定文件載入後要自動啟用的元素有哪些,指定方式是傳入元件的ID,如有多個則以 逗號分隔,「*」則代表全部。
3. 要設為Template的元素可指定以下屬性:
●data:資料來源為Javascript物件時,直接用此宣告,但因為嵌入Javascript語法,記得加上雙層大括號,寫成{{ objName }}。
●datasource:如資料來源是Web Service或ADO.NET Data Service時,在此指定Javascript中的代理資料物件。
●serviceuri:提供資料來源服務的URI。(可能是Web Service,WCF或ADO.NET Data Service)
●query:指定取得資料的函數名稱,它會被組合成呼叫服務的URI中。也就是說,WCF函數如果需要傳入參數,得改成可透過URI方式傳入。
●itemtemlate:適用於要指定另一個元素做為樣版時。
●selecteditemcla :當支援選取模式,被選取項目的CSS Cla 名稱。
4. 要使用選取功能,可在要當作點選目標的元素加入sys:command="select"宣告,點選後就會發現它的CSS變成上述指定的 selecteditemcla 。同時為增加友善度,提示User可以點選,我們透過CSS為讓元素加上底線、改變Cursor。
把全部的東西組在一起,我們得到如程式1的結果。
程式1
點選每一列的Id欄可以選取該列改變其背景色,進一步,我們還可以將「選取」動作擴充成為Master-Detail連動。(圖1)
圖1:宣告式AJAX Templates執行結果。
Data Binding與Master Detail連動
之前的ASP.NET AJAX Templates介紹都集中在如何將資料反應到顯示元素上。在WebControl Template中,我們可以選擇用Eval或Bind來連結資料,當使用Bind時,更改Template裡的資料,會反應回原始的資料來源上,這在 ASP.NET AJAX Client Templates也做得到!
進一步來說,ASP.NET AJAX Client Templates的Binding寫法有三種:
1. One-Way, One-Time:即先前示範的{{ propName }}表示法,set_data時會將資料值寫入,之後就不再有任何互動。
2. One-Way:要寫成{binding propName},set_data後,若當初提供資料來源的Javascript物件變動,該值亦會自動更新。 最主要應用於Master-Detail的情境。
3. Two-Way:一樣是寫成{binding propName},但若同一屬性用在兩個HTML元素上,則更改其中一個,另一個也會跟著變化。
接下來,我們將前述宣告式AJAX Templates的例子做些修改,改裝成Master-Detail形式,並透過Two-Way Binding加上酷炫的編輯功能。
首先,原本的Table維持不變,但要多加一個dataview:sys-key="dataViewObjName"的屬性,如此,便可利用這個變數名稱存取背後的Sys.UI.DataView物件。而這個物件,也將會是Detail View要Bind的對象。
我們建立一個div內包fieldset做為簡陋的Detail View展示:
值得注意的是,Score分數的部分,我們用了i ut,value則寫成{binding Score},如此,當數字內容修改,就會反映回來源物件的Score屬性。但原先Table中我們寫的是「td style="text-align: right;"{{Score.format("N2")}} /td」,這是One-Time Binding,不會即時反應資料值的變化,因此得改成{binding Score}的格式。
但問題來了,原來我們對數字做了格式化,加上千位號以及限定小數兩位,binding表示法裡必須直指Score,而不能用 Score.format("N2")。要解決這個問題,要靠convert函數,其表示法為{binding propName, convert=convertFuncName}。在範例裡,我們新增一個函數fmtNum,原本的Binding語法則改寫成「td style="text-align: right;"{binding Score, convert=fmtNum} /td」:
如圖2所示,按了Id欄位,下方Detail View就會即時顯示所選取的項目,而修改Score後,修改後的分數會立即回饋到上方的Master View。
圖2:Master-Detail連動效果與資料同步更新。
由WCF提供資料來源
到目前為止,我們示範的ASP.NET AJAX Client Templates寫法,為了簡化起見,資料來源都是以Javascript [ { ... }, { ... } ]的方式就地打造物件陣列。在實務上,我們多半會另外撰寫一個Web Page、Web Service或WCF作為資料來源。
在微軟構築的藍圖中,WCF已內建Client Script支援功能,整合的緊密度讓人驚豔,可當作建構AJAX後端的首選。更進一步,若資料來源更直接地映對到資料庫DataTable時,則 ADO.NET Data Service還能提供更密切的整合,甚至還有前端的MicrosoftAjaxAdoNet.js提供一缸子的Javascript Function協助,寫起Code來更加得心應手。在此我們先以WCF為例。
延續先前的範例,我們打算將資料來源改由另一個WCF服務提供,不再只是透過Javascript就地建立物件陣列頂替。目標還是要取得一個有Id, Name, Score, RecTime屬性的人員資料陣列,只是要改用WCF實作。
首先,用VS2008在ASP.NET專案中新增一個AJAX-enabled WCF Service(如圖3),命名為PeopleSource.svc,VS2008會幫你產生PeopleSource.svc, A _Code\PeopleSource.cs。
圖3:在Visual Studio 2008中新增AJAX-enabled WCF Service。
AJAX-enabled WCF Service與一般WCF Service在web.config裡設定不太相同,會設定enabledWebScript,好開啟WCF內建支援Client Script的功能。另外,新增AJAX-enabled WCF Service時也不再另外安插Interface。
接著,我們把PeopleSource.cs修改成需要的樣子,如程式2,傳回List Person,Person是我們自訂的物件,透過[DataContract]、[DataMemeber]宣告,可以自動被WCF轉換成JSON格式。
程式2:PeopleSource.cs
接著,我們修改先前的ASPX,在ScriptManager中加入:
神奇的事發生了,打入Darkthread(在PeopleSource.cs裡宣告的ServiceContract Name ace),VS2008自動提示可用的Interface、Method名稱、呼叫參數。
圖4:WCF支援VS2008 Javascript Intellise e。
將前面的ASPX內容稍作修改,主要加入ServiceReference及呼叫Darkthread.PeopleSource.GetPeople。 WCF自動產生的Javascript端GetPeople函數,第二參數onSucce 要宣告一個Function接收WCF傳回的結果。函數只有 一個呼叫參數data,即為WCF端所return的物件。由於GetPeople宣告的傳回物件是List Person,在Javascript端,會透過JSON自動轉成有物件陣列,而物件有哪些屬性,會以先前在PeopleSource.cs裡 Person宣告[DataMemeber]的屬性為準,也就是Id, Name, Score, RecTime。
如此一來,data跟上回Hard-Coding建出的物件陣列完全相同,我們直接dv.set_data(data)即可完成Client Side Binding,輕鬆愉快。(程式3)
程式3
執行網頁,我們得到與上回一模一樣的結果,不同的是,資料來源已改由WCF提供。
WCF函數傳回的List T可以當場轉成立即可用的Javascript Object Array,直接做為ASP.NET AJAX Templates的資料來源,這也可以應用在LINQ傳回的資料物件上,非常方便。
拼湊全貌
再回頭看前期所提的產品瀏覽UpdatePanel例子,我們目前已經掌握了AJAX Templates呼叫WCF所提供的資料來源、Binding、Master-Detail連動等技術,便可用AJAX Templates的新方法,實作與UpdatePanel相同的效果,再比較二者傳輸效率上的差異。
首先,我們要準備支援換頁的資料來源WCF服務,借助LINQ to SQL,這件事並不困難。建立一個DBML,僅加入我們展示所需Product、ProductPhoto及ProductProductPhoto資料表即可。(如圖5)
圖5:建立所需的DBML。
由於WCF會自動將傳回結果轉為JSON格式,但前題必須是強型別物件。LINQ to SQL裡雖有Product資料物件,但我們要用的欄位只有幾個,所以我們另外設計一個較精簡的物件ProductInfo,以提高傳輸效率:
除此之外,GridView支援分頁顯示功能,在我們的Pure AJAX版也要比照。因此每次查詢資料時,應指定每頁的大小及要顯示的頁數,同時前端也必須知道總頁數,以便顯示頁次切換。由此看來,查詢函數不能只傳回 ProductInfo陣列,還必須加入總頁數、目前所在頁次等資訊。我們設計另一個ProductData類別,當成與前端溝通的資料物件:
查詢資料的核心不難寫,主要是以LINQ語法為主,並利用Skip(), Top()來做分頁效果,為了補足先前UpdatePanel範例中取得伺服器時間的功能,再補上另一個GetNow()負責傳回現在時間,如程式4。
接著我們把焦點移回到前端,在網頁上放上兩個Table,一個用來顯示產品清單,姑且稱之為MasterView,映對到先前UpdatePanel範例 中的GridView1;右側Table則用來顯示產品詳細資料及照片,角色如同UpdatePanel範例中的DetailView1,在此稱之為 DetailView。
注意,此處做了一個取捨。在MasterView中,只用到ProductNum及Name兩個欄位,當使用者點選其中一筆時,才會在 DetailView顯示完整的資料細節。在前面介紹Master-Detail連動時,我們發現dataview:data="{binding selectedData, source={{ master }}}"的寫法,是直接找到當時已存在記憶體中的Javascript資料物件,重新Bind在DetailView上,也就是說,DetailView 可以直接取得由MasterView所Bind的物件,不用重新呼叫WCF取回。
但有個前題,如果DetailView要取得資訊細節比MasterView多出許多,那麼我們在一開始傳資料給MasterView時就把數十筆資料鉅 細靡遺的細節(例如高達數十KB的訊息文字內容)都丟到前端存在記憶體中,便不是有效率的設計。此時,應該將取得清單與取得細節分成兩個函數,讓 MasterView、DetailView各自呼叫對應的函數取回資料。在這個案例中,DetailView會顯示的內容不多,為了簡便,我們就直接採 用{binding selectedData, source={{ master }}}的內建做法,如程式5。
如此,我們就實作出與先前UpdatePanel版相同效果的AJAX互動網頁,一樣進行更新時間、換頁與檢視產品明細的動作,再次觀察資料傳輸量。發現 更新時間時上傳492 Bytes,下載242 Bytes,換頁時上傳531 Bytes下載1,757 Bytes。在檢視產品明細時,由於使用selectedData的做法直接讀取記憶體中的Javascript物件,未觸發任何瀏覽器與伺服器間的傳 輸。(圖6)
圖6:Pure AJAX版的產品顯示。
最後,將UpdatePanel版與AJAX Templates版引發的傳輸結果作個比較,可驗證AJAX Templates確實大幅減少了資料傳輸量,但在程式的寫法上仍維持相當簡潔。(表1)
表1:UpdatePanel版與AJAX Templates版引發的傳輸結果
UpdatePanel在開發簡便、低技術門檻背後付出可觀的傳輸效率代價,侷限了實際應用性,在ASP.NET 4.0中,則推出了ASP.NET AJAX Templates,以Javascript來回傳輸JSON格式並將產生介面的邏輯移至Client Side進行,降低伺服端的傳輸流量與運算負擔。在設計上,Binding語法也明顯簡化了以Javascript產生網頁元素的複雜度。最後透過實測比 對,我們驗證了AJAX Templates較UpdatePanel大幅減少了資料傳輸量。相信在未來,Pure AJAX的概念將漸成動態網頁設計的主流。(完整程式碼請至www.ru c.com.tw下載)
( Sun, 28 Nov 2010 11:07:32 +0800 )
Description:
这2个星期参加了很多校园宣讲,招聘会,笔试,面试,跑了很多地方,见了很多人,中大,华工,华师,华农,广工,研究生,海龟。。。。
挺多感悟的,也认识了一些求职路上的朋友,挺开心的,大家一起去笔试面试,一起去找工作。
400人的笔试场,无领导讨论,群殴,单挑,都经历过了,全英文笔试,英文面试,都经历过了,真的觉得自己身经百战了,现在去面试去笔试,说实话,很有自信,感觉自己都免疫了。
经历了这些,我感觉,心态很重要,无论是求职还是工作,都要把自己的心态放好,才能去好好工作。再一点是,当你目标选好了,其实真的不要去多想,也不要去犹豫,选好了就好好去做,不要想着其他人怎样,其他单位怎样,这个真的很重要,很重要。
单位选好了,其实之前犹豫了很久,也问过许多人,不过最后终于确定了,谢谢很多给我意见的朋友,路我已经选好了,我会好好走下去的。
一路来都是一个人在走,不知道对错,不知道未来,但是我能确定,这样我不会后悔!~~~
( Sun, 7 Nov 2010 19:54:57 +0800 )
Description:
下午到公司实习点报道拉,放下行李吃个饭就晚上了~~~ 一个人呆在花都,他们都去其他地方实习了,有点失落感,不知道以后会怎样,走一步看一步了.实习还有6个月,当初判断错了,错了,错了.
名天开始工作,不知道干些什么,今天晚上跟师兄们到办公室上网.跑上来写篇日志,写下自己的情况吧.
以前在学校真的太舒服了,出来住真的有点很不习惯,在学校真的挺好的,一堆朋友,现在就剩我自己一个奋斗了.好好学习把,一个人,没什么事做,专心学下东西吧.希望以后的日志会更好~~~
( Sun, 31 Oct 2010 22:32:46 +0800 )
Description:
今天跟胖子,南生,阿东,小强一起去东莞周围买衣服,因为阿东开车载我们去,不用挤东莞的公交车,真是舒服。
首先去了石龙,在茶餐厅吃完饭就去了一个专门卖衣服的地方,转了一圈,发现那些衣服真的有点水,就转移阵地,去了莞城了。
到了莞城,发现没有来错地方,衣服的水平普遍比石龙,大岭山那些地方高很多,最后我们决定去一档卖鳄鱼牌衣服的地方狂扫货,衣服真的不错,最重要的是价格超便宜的,我们都买了很多啊,把身上的钱用光了,还不舍得走。。。。。还想去刷卡拿钱再买(如果那里可以刷卡就好了)~~~~ 5个人拿着10+个鳄鱼的袋子~~~~~
然后在莞城吃完面。。。。。钱买光了。。。。。 再逛下,就回去了,今天一天去了9个小时了。
走的脚都有点累~~~
其实今天心情不好~~ 很伤心的~~
( Wed, 6 Oct 2010 21:02:30 +0800 )
Description:
无缘无故发烧 感冒 咳嗽,搞到我瘦佐差唔多15斤, 想吃肥已经好难架啦, 甘容易就瘦甘多。
最麻烦就系咳啦,真系好难好啊,都成个月啦,仲未好得晒,平时听歌又忍唔住唱架嘛,一唱就咳,真系麻烦。
都系忍唔住,一样出去唱K,真系唱起身好唔爽。
天气又变冷,各位多注意身体,小心感冒啦。。
( Tue, 5 Oct 2010 16:56:17 +0800 )
Description:
妹大佐开始唔听话啦,讲极都唔听,甘反叛, 权威受到严重架挑战,哎~~~
如果再细翻十年就好啦,依家人大个佐,有思想有林发啦,真系麻烦!~~~
再过多几年出去做野后我怀疑到时听都唔听我架。
( Wed, 22 Sep 2010 10:30:00 +0800 )
Description:
长途去阳山啊~~ 坐佐差唔多16个钟车,坐到人都晕了~~~ 阳山几好玩架,国家资助发展成旅游城市,水好清,,有漂流,温泉,瀑布,越野车,登山好多活动,不过唔系因为要学车架话,去果度旅游真系唔错架!~~ 有机会再去啦~~~ 不过我会自己卡车去咯,因为果边无咩车,D路好好行~~ 感觉几好~!~~~
翻到东莞又坐坐,4,5个钟车先翻到广州,中秋前特别塞车,所以要等好耐啊~~一日内坐佐12个钟车,真系好晕,不过点都比上次湖南16个钟火车好好多咯~~~呵呵~~~
( Thu, 16 Sep 2010 03:51:42 +0800 )
Description:
8个男同胞去了创意生活城吃饭,不知道喝了多少酒了,反正全部都很晕,连出租车都怕我们了,不敢载我们,哈哈~~~ 我现在还很晕,喝的酒太多了,有点不清醒了!~~~ 还好没有乱说话。庆祝我们补考成功????随便啦~~ 反正我们就出去狂喝了!~~~~~·
从前不喝酒的人今天晚上也喝了很多 ,凌晨4点回到宿舍,好在宿管还是给我们进去。
大四真无聊~~~~ 多出去玩吧!~~ 反正日子都不多了。
很晕很晕!~~~
睡觉了!~~~~
下次再出去喝,那里的酒很便宜,喝死都不贵,哈哈!~~·
( Wed, 15 Sep 2010 10:33:11 +0800 )
Description: 都说日本动画做得好,国产的很烂,普遍都这么认为。记得以前出的那部好像是Q版3国据说花了几千万才弄出那部FLAS***,说实话,太丑了。虽然后面的喜羊羊很受欢迎,不过说实话跟很久以前的外国动画猫和老鼠相比真的差很远,我是从技术角度来说。那部中国动画水平真的落后那么多吗?《我是MT》 让我们看到了国产动画的希望,一部根据游戏魔兽世界改编成的动画片,当然我不是在做宣传,而是人家的动画制作水平真的跟其它国产动画相比高出不是一两个等级。而且人家是工作之余自己花时间制作出来的,这就不禁让我想到高手们都很低调,只去做自己感兴趣的东西,钱不是主要考虑原因,如果真给人家几千万去做,相信可以做成日本动画的效果,毕竟有真正有技术的人在中国真的不少,只是人家都不屑去做这些。 国产动画的未来,还是充满希望的。
( Sat, 28 Aug 2010 11:51:22 +0800 )
Description:
天气忽热忽凉,弄的我有点像发烧,全身冒冷汗,超痛苦。大学就这次病得罪厉害了,睡的时候脑袋乱七八糟。那一晚上那几个小时太难捱了,时间过得很慢。好在睡醒的时候好很多,精神也好了,没有冒冷汗了,就是还有点不舒服。这种天气,白天晚上温差太大了,很容易病倒!~
快点好起来~~~~~
( Fri, 20 Aug 2010 12:08:38 +0800 )
Description:
jQuery 制作动画与特效
1。元素的显示与隐藏
我使用的是VS2005 测试,附上代码。
head runat="server" title元素的显示与隐藏/title
< cript language="javascript" src="jquery-1.4.2.min.js"/script
< cript language="javascript"
$(function(){ $("#Button1").click(function(){ $("p").show(); //显示p标记的内容 }); $("#Button2").click(function(){ $("p").hide(); //隐藏p标记的内容 });
/script
< ody form id="form1" runat="server" div i ut id="Button1" type="button" value="show" / i ut id="Button2" type="button" value="hide" / 这是一段文字/ gt; /div /form
主要实现的功能是单机一下显示按钮,就会显示P标记的内容,在点下隐藏按钮,就会隐藏P标记的内容。而且是无刷新的,就是页面不需要刷新。
2。渐入渐出的变换
只需要在show()和hide()方法的参数里附上一个时间参数,单位为MS,就可以实现渐入渐出的变换效果。
测试代码如下:
html xml ="
head runat="server" title渐入渐出效果/title
< cript language="javascript" src="jquery-1.4.2.min.js"/script
< cript language="javascript"
$(function(){ $("#Button1").click(function(){ $("img").show(3000) }); $("#Button2").click(function(){ $("img").hide(1000); });
/script
< ody form id="form1" runat="server" div img src=01.jpg / /div /form
这里就可以实现图片渐渐显示和图片渐渐的消失,其实就是通过设置show()和hide()方法的时间参数即可实现。 fadeIn() 和 fadeOut()
还有一种效果使用的方法是 fadeIn()和fadeOut()方法(注意jQuery是区分大小写的,如果写错方法就实现不了效果)。
html xml ="
head runat="server" title另一种渐入渐出效果/title
< cript language="javascript" src="jquery-1.4.2.min.js"/script
< cript language="javascript"
$(function(){ $("#Button1").click(function(){ $("img").fadeIn(3000) }); $("#Button2").click(function(){ $("img").fadeOut(1000); });
/script
< ody form id="form1" runat="server" div i ut id="Button1" type="button" value="show" / i ut id="Button2" type="button" value="hide" / img src=01.jpg / /div /form
/html 3。幻灯片的效果
slideUp()和slideDown()来模拟PPT中的类似拉窗帘的特效。
html xml ="
head runat="server" title幻灯片的效果/title
< cript language="javascript" src="jquery-1.4.2.min.js"/script
< cript language="javascript"
$(function(){ $("#Button1").click(function(){ $("img").slideDown(3000) }); $("#Button2").click(function(){ $("img").slideUp(1000) });
/script
< ody form id="form1" runat="server" div img src=01.jpg / /div /form
jQuery为我们提供了各种各样的效果,我们只需要调用它就可以实现许多强大的功能,非常的方便。
( Thu, 19 Aug 2010 11:22:48 +0800 )
Description:
前面遇到一个问题,就是我使用的是Dreamweaver 8的时候好像用不了jQuery的,我知道Dreamweaver CS3是可以的,但我不知道老一点的版本行不行,而我测试的时候是用Visual Studio 2005进行测试,今天学的主要是jQuery 如何控制页面,里面所要用到引用jQuery的代码就不写了,详情可看jQuery学习笔记一。 1。标记的属性
获取标记的属性
$(function(){ var s = $("em:eq(1)").attr("title"); //eq(1)表示获取第二个(从0开始数),attr()方法表示获取某个属性 $(" an").text(s); //text() 方法表示添加某些文本
< ody部分
em title="jumping"标记1/em/ gt;
em title="ru ing"标记2/em/ gt;
title属性的值为:/ a gt lt;/ gt;
这里表示获取第二个em标记里面title属性的值,把它赋给标签的文本属性。 设置属性的值
定义一个方法
function DisableBack(){ $("button:gt(0)").attr("disable","disable") //gt(0) 表示获取除1个button以外的所有button
< ody部分
< utton onclick="DisableBack()"第一个butto lt;/butto gt;
第二个/butto gt;
第三个/butto gt;
这里的意思就是 当点击第一个button后把后面的两个button disabled掉。 2。设置元素的样式
添加CSS类
假设我们定义了两个CSS样式mycla 1,mycla 2
$(function(){ $("div").addCla ("mycla 1 mycla 2");
这里意思就是把mycla 1,mycla 2这两个样式添加到所有的div标签里。 动态切换
$(function(){ $("p").click(function() { //为标签p 增加一个单击事件,它触发一个方法 $("this").toggleCla ("mycla ") ; // this指的是p标签 toggleCla ()方法表示转换CSS样式 });
< ody部分
样式/ gt;
这里的意思是点击一下p标签 ,当没有mycla 这个样式的时候就添加上去,如果已经有了这个样式,则取消掉。 3。页面的元素
直接获取,编辑内容
$(function(){ var str = $("p:first").text(); //获取第一个p标签的纯文本(不包括里面所有的HTML标签) $("p:last").html(str);
< ody部分
文本/ gt;段落em实例/em/ gt; //第一个p标签 其中em标签是斜体的意思。
/ gt //第二个p标签
这里的意思就是获取第一个p标签的纯文本内容赋给最后一个p标签,其中获取的时候是去掉文本里所包含的HTML标签。 克隆元素
$(function(){ $("img:eq(0)").clone().a endTo($("p"); //clone()方法,顾名思义,克隆第一个图片。 a entTo() 复制给哪里
< ody部分
img src="01,jpg"
这里意思就是克隆第一张图片,把它赋给所有的p标签。 4。jQuery 处理事件
它解决了不同浏览器之间的兼容问题,减少很多判断用户所使用的是什么浏览器的代码等等,让开发人员可以集中精力在程序代码的开发部分,大大减少程序员代码的编写量。
事件***
$(function(){ $("img").bind("click",function() { //bind()为绑定一个方法,为img标签绑定一个点击事件 $("#show).a end("div点击事件/div"); //为id为show的标签添加 div点击事件/div 这些内容 });
< ody部分
img src="1.jpg"
div id = "show"/div
这里意思是为img标签绑定一个单击事件,这个事件就是为id为show的标签添加a end()方法里的东西。 移除事件***
$(function(){ var myf $("img").bind("click", myfn=function() { //bind()为绑定一个方法,为img标签绑定一个点击事件 $("#show).a end("div点击事件/div"); //为id为show的标签添加 div点击事件/div 这些内容 }); $("i ut [ type = button] ").click(function() { //为按钮添加一个点击事件 $("img").u ind("click",myfn); // 移除img标签 方法名为myfn的点击事件 });
< ody部分
i ut type = "button" value="移除事件"
div id = "show"/div
( Tue, 17 Aug 2010 11:39:35 +0800 )
Description:
jQuery 应该是我大学时代最后要学的一门的技术了,我也是从头开始学的,这里就记下我个人的学习笔记,有兴趣的朋友可以一起探讨,共同进步吧!
先简单介绍下jQuery吧,它是一个优秀的Javascript框架。曾经我问了一个在上海工作从事.Net的大哥,平常开发的时候用得最多的是什么,他告诉我说jQuery。可见jQuery对于我们这些从事.Net开发的软件工程师来说是很常用的。废话就不多了,现在开始写笔记吧。
在使用jQuery的时候,我们经常会用到 $ 美元符号,它代替了我们在使用javascript中频繁使用的document.getElementById()操作,在下面的例子中,大家就会清楚了。
要使用jQuery,首先需要下载它,可以到官网上面下载 ,直接在首页就可以download 了。下载下来是不需要***的,它就像一个类库,只需要放到一个位置,通过代码进行引用即可。
首先讲下jQuery对象。
直接例子:
首先看下下面的代码:
$("div p"); // (1)
$("div.container"); // (2)
$("div #msg"); // (3)
$("table a",context); // (4)
第一行代码得到所有div标签下的p元素。第二行代码得到cla 为container的div元素,第三行代码得到标签下面id为msg的div元素(不过最好别这样写,因为jQuery需要遍历所有的div元素,对于带id的元素,直接用$("#id"))。第四行代码得到context为上下文的table里面所有的连接元素。
再看下jQuery对象
var a = $("#cid");
var b = $("hello/ gt;");
var c = document.createElement("table");
var tb = $(c);
初步了解了$后,开始研究 "$" 的作用。
1。用作选择器
在使用jQuery的时候我们需要添加引用代码,就像使用javascript 那样。
我下载jQuery的最新版本为query-1.4.2.min.js 首先在网页的head/head 下添加头文件。
< cript language"javascript" src="query-1.4.2.min.js"/script
< cript language"javascript"
window.onload=function(){ //window.onload 可以理解成a .net中页面的Load() 时间。
var ele = $("h2 a"); //选择标签h2 下的 链接
for (var i=0; iele.length;i++)
ele[i],i erHTML = i .toString();} //把选中的内容替换成 i.toString();
页面的< ody部分为
h2a href = "链接地址"正文/a内容/h2
h2正文a href = "链接地址"内容/a/h2
2。作为功能函数的前缀
如:var str = " 123456789" //前面有一些空格。 str=$.trim(str); //调用trim()函数,跟.Net 里的一样,去掉字符串前面的空格。
3。避免window.onload冲突 当页面多个地方同时调用到它的时候有时候会造成冲突和混乱,而jQuery可以避免。而我们可以使用read()方法来启用多个 window.onload,如:
$(document).ready(function(){
//........... });
或者写成:
$(function() { //...... });
4。创建DOM元素
$(function(){ //使用read()函数
var NewDom = $("随便的文字/ gt;") //创建DOM元素
NewDom.i ertAfter("#test"); //找到id 为test的标签,并在它后面调用i ertAfter()插入文字。
< ody部分为:
< id = "rest" 新加入的文字 / gt;
其中jQuery还增加了多种c 的选择器。
1。属性选择器
假设CSS 部分为:
.mycla { /* 随便添加一些CSS */
color: # 55FFFF;
test-decoration: underline ; }
jQuery部分:
$(function){
$("ul li:has(a) ").addCla ("mycla "); // 如果在ul标签下 的li标签下 有链接的标签,则添加mycla 这个CSS的样式。
< ody部分如下 lt;ul li a href = "某个地址" test /a /li /ul
2。位置选择器
$(function(){ $("p : lt(2) ").addCla (" mycla "); //意思为找到所有p标签 , lt(2) 表示前多少个,这里为前两个,选中后让它添加mycla 的CSS样式。
< ody部分如下
div 1.DOTNET / gt; 2.J***A / gt;
div 3.PASCAL / gt; 4.C++ / gt;
--------------------------------------------------------无敌的分隔线--------------------------------------------------------------
第一天先写到这里了
( Fri, 13 Aug 2010 00:10:20 +0800 )
Description: 今日6点爬起身,从广州坐车赶翻东莞,除佐上次5点起床坐车从东莞到广州参加腾讯笔试外,今次系第二次啦,唔知点解依个时候起身会特别觉得精神,部车都无几个人但系都系训唔着。 总算赶得上参加上午架练习啦,无计啦~~ 东莞暑假太多人考车拉,教练都好忙,排期排到满,所以咪要甘赶咯。上午练完休息完下午又要练,采离合采到脚都麻晒啦,总算捱过去啦。 宿舍又系好鬼邋遢,小强蚂蚁都唔小,仲未搞卫生啊,听日再搞啦。 又系果个话题拉,琳起听日果两餐就愁啦,十万年不变架菜,仲要越来越少。。。 所以练完车直接系外面吃埋再翻学校啦,本来已经瘦佐架啦,再吃埋果D真系迟早变成骷髅兵啊。 教练要长途两日,当休息下啦,跟住就要复习倒装准备考试啦。 据说依个最难,其它都好简单。 净系想快D搞掂拿个车牌,成日等考试等到烦晒啦。 哎~~ 训觉啦!~
( Tue, 10 Aug 2010 23:41:58 +0800 )
Description:
旅行吃完湘菜
翻到黎成日出去茶楼吃饭,D人懒得洗碗。
吃到无聊又去吃佐两日寿司。
跟住寿司都吃闷啦,又去试阿根廷菜,其实感觉同西餐厅差唔多。
再去吃几餐西餐啦。
唔系翻到学校又要受苦啦!~~~
( Mon, 9 Aug 2010 23:48:34 +0800 )
Description:
但是一想到学校那些很难进口的饭菜,就不想回去了~~~
在家10来天了,都在浪费时间,真想回学校去~~~
学生时代最后一个暑假。。。
干些什么呢??
( Wed, 21 Jul 2010 21:56:01 +0800 )
Description:
考试唔复习,书都未打开个,对自己太有自信啦。依家好啦,补考啦!!!! 哎``` 对不起国家,对不起人民。。。。。。
有D罪恶感咯。。。 开学翻黎仲要复习,真系扑街。
本来仲想偷懒架~~~ 都懒佐好耐啦~~~
暑假一定要补救下啦,真系觉得自己有D落后啦。
所以决定啦~~~ 今个暑假我要超神 ,,, 哈哈哈哈~~~
( Wed, 7 Jul 2010 12:17:29 +0800 )
Description:
或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类人机对话界面(HMI)。可视化编程或许是一个初学者开始对软件感兴趣的开始,也可能是一个软件学习的里程碑点,因为我们可以使用各类软件集成开发环境(IDE)方便的在现成的界面窗口上拖放各类组件(Component),这类组件包括我们常见的按钮(Button),单选按钮(Radio Button),复选框等(Checkbox)。这样的拖放式开发方式不但方便,而且窗口会立竿见影的显示在我们的面前,这对于一个软件初学者而言或许是一件非常有成就感的事情。
但是很多软件学习者在学习可视化开发的过程中,只是非常表面的来理解可视化编程,他们可能认为能够使用拖放方式完成一个界面就非常值得称道,但是很少有人会认真的去理解编程语言对于可视化编程组件的支持和整合,在Softworks软件人才培训中心的两年教学过程,我深刻的感受到了这一点,因此下文将会结合我的教学经验来讲解可视化编程过程中最为关键的“事件驱动模型”。
1.什么是事件驱动模型?
在讲解事件驱动模型之前,我们现在看看事件驱动模型的三大要素:
·事件源:能够接收外部事件的源体。
·侦听器:能够接收事件源通知的对象。
·事件处理程序:用于处理事件的对象。
学员应该要理解任何基于事件驱动模型的开发技术都包含以上三大要素,不管是.net还是java技术,甚至是以前我们使用的Visual Basic和Delphi语言都有基于以上三大要素的事件驱动模型开发流程。
现在我们来看一个生活中的示例,如果有一天你走在路上一不小心被天上掉下来的花瓶砸到了,并且晕死了过去。那么整个过程其实就是一个事件处理流程,而且我们可以非常方便的分析出刚才所提到的事件驱动模型中的三大要素。
1.被砸晕的这个人其实就是事件源,因为他是能够接受到外部的事件的源体。
2.侦听器就是这个人的大脑神经,因为它会感知到疼痛。
3.事件处理就是这个人晕死了过去。
由于事件驱动模型在我们日常生活中是无处不在的,因此Java和其他的编程语言都将这一过程运用到了可视化编程中了。
2.Java编程语言中的事件驱动模型
在Java编程技术中,最常用的可视化编程当属Java Swing技术,Java Swing为开发者提供了很多现成的组件,如:按钮(JButton),单选按钮(JRadioButton)等。为了管理用户与组成程序图形用户界面的组件间的交互,必须理解在Java中如何处理事件。
假设用户单击了程序图形用户界面中的一个按钮,其实该按钮就是这个事件的源(可以引发事件的物体)。所有的Java Swing对象都有感知自己被操作的能力,因此JButton按钮也具有这样能力。一个事件通常必须有一个源对象,这里就是JButton对象。当单击按钮时,JButton组件类会生成一个用于存放该事件参数的ActionEvent的对象,该对象包含了事件及事件源的信息。图1-1显示了这种机制。
图 1-1
当JButton感知到自己被点击以后会将这种感觉传递给某个侦听器对象,该侦听器对象原先已被告知对该类事件感兴趣,侦听器对象仅是一种侦听特定事件的对象。这里的“将事件传递给侦听器”仅意味着事件源调用侦听器对象中的一个特定方法,并以事件对象作为实参。侦听器对象可以侦听一个特定对象的事件(比如一个按钮)。
其实可以使任何类的对象成为侦听器对象,只要使该类实现侦听器接口。你将会发现有各种各样的侦听器接口,以满足不同类型事件的需要。在这个单击按钮的例子中,需要实现ActionListener接口以便接收按钮事件。在侦听器接口声明的方法中,实现了接受这个事件对象并响应该事件的代码。在本例中,在事件发生时,调用了ActionListener接口中的actionPerformed()方法。每种侦听器接口都定义了特定的方法,用来接收该侦听器计划要处理的事件。
仅仅实现侦听器接口还不足以将侦听器对象连接到事件源上,仍需要把侦听器与希望处理的事件单个源或多个源连接起来。通过调用事件源对象的特定方法,可以注册带有事件源的侦听器对象。例如,为了注册侦听单击按钮事件的侦听器,需要调用JButton对象的addActionListener()方法,该操作可以使侦听对象和事件源绑定。
每个事件响应时只涉及到对该事件感兴趣的侦听器。由于侦听器只要求实现一个合适的接口,所以实际上,可以在任何希望的地方接收和处理事件。在Java中使用侦听器对象处理事件的方式,称为委托事件模型,这是因为对于诸如按钮这种组件引起的事件响应,并不是由引起事件的对象本身处理,而是委托独立的侦听器对象进行处理,刚才的actionPerformed()其实就是一个委托处理方法。现在让我们来看一下,JButton是如何将用户的点击转化成方法处理的(如图1-2)。
图1-2
JButton组件初始化代码片断: private void initialize() { frame = new JFrame(); frame.getContentPane ().setLayout (null); frame.setBounds (100, 100, 247, 165); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setTitle ("事件驱动程序"); //btnPre 就是这次点击操作中的事件源 btnPre = new JButton(); btnPre .setText ("Pre "); btnPre .setName ("Pre "); btnPre .setBounds (63, 98, 99, 23); //向事件源btnPre 植入侦听器对象ButtonEventHandler btnPre .addActionListener (new ButtonEventHandler(this)); frame.getContentPane ().add(btnPre ); frame.getContentPane ().add(txtMe age); }
侦听器创建的代码片断:
//侦听器对象ButtonEventHandler(用来侦听按钮的点击操作) cla ButtonEventHandler implements ActionListener { //窗体对象 private EventDemo form = null; //通过构造体传入窗体对象, //作用在于让侦听器对象明白事件源处于 //哪个窗体容器中 public ButtonEventHandler(EventDemo form) { this.form = form; } //委托方法 public void actionPerformed(ActionEvent e) { //该方法将会把事件的处理权交给窗体容器类的
//btnPre _Click方法处理。 this.form.btnPre _Click(e); } } 真正的事件处理代码片断: /** * 按钮btnPre 的事件处理方法。 * * @param e 事件参数 */ private void btnPre _Click(ActionEvent e) { String me age = "你点击的按钮名叫:" + ((JButton) e.getSource()).getName(); this.txtMe age.setText(me age); } 代码工作原理:
JButton组件初始化代码片断已经明确阐述了按钮被创建后放置于窗体上,关键在于本代码片断的以下语句:
btnPre .addActionListener(new ButtonEventHandler(this));
该语句就是向事件源植入了侦听器对象ButtonEventHandler,该类实现了ActionListener结构,因此JButton类的对象btnPre 这个时候已经具有了处理用户点击按钮的能力了。
当用户点击btnPre 这个按钮的时候,按钮对象会直接把这次点击感觉传递给ButtonEventHandler的actionPerformed方法处理,为养成较好的编程习惯,我们中心并不建议学员直接在该委托方法中编写代码,而是需要将该事件处理再次转发给窗体中的某个方法来处理,这个方法的命名也必须是有规则的,就是事件源名+下划线+事件名(btnPre _Click),并且该方法必须具有事件参数ActionEvent,因为在该对象中明确指明了,哪个按钮受到了点击了。e.getSource()方法返回了被点击按钮的对象,由于这次被点击的是一个按钮,因此我们需要使用JButton对e.getSource()的返回值进行强转,随后通过getName()方法得到这个按钮的名字。至此整个点击事件处理完了。
( Wed, 7 Jul 2010 12:16:25 +0800 )
Description:
测试环境:JDK1.5、Tomcat5.5
1.设置Cookie
1
Cookie cookie = new Cookie("key", "value");
2
cookie.setMaxAge(60); //设置60秒生存期,如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。
3
cookie.setPath("/test/test2"); //设置Cookie路径,不设置的话为当前路径(对于Servlet来说为request.getContextPath() + web.xml里配置的该Servlet的url-pattern路径部分)
4
re o e.addCookie(cookie);
2.读取Cookie
1
1//该方法可以读取当前路径以及“直接父路径”的所有Cookie对象,如果没有任何Cookie的话,则返回null
2
2Cookie[] cookies = request.getCookies();
3.删除Cookie
1
Cookie cookie = new Cookie("key", null);
2
cookie.setMaxAge(0); //设置为0为立即删除该Cookie
3
cookie.setPath("/test/test2"); //删除指定路径上的Cookie,不设置该路径,默认为删除当前路径Cookie
4
re o e.addCookie(cookie);
4.注意:假设路径结构如下
/
/test
/test/test2
/test345
/test555/test666
a.相同键名的Cookie(值可以相同或不同)可以存在于不同的路径下。
b. 删除时,如果当前路径下没有键为"key"的Cookie,则查询全部父路径,检索到就执行删除操作(每次只能删除一个与自己最近的父路径Cookie)
FF.必须指定与设定cookie时使用的相同路径来删除改cookie,而且cookie的键名不论大写、小写或大小混合都要指定路径。
IE.键名小写时,如果当前路径为/test/test2,如果找不到再向上查询/test、/test555、/test345,如果还找不到就查询/ 。(/test555/test666不查询)
键名大小写混合或大写时,不指定路径则默认删除当前路径,并且不向上查询。
c.读取Cookie时只能读取直接父路径的Cookie。
如果当前路径为/test/test2,要读取的键为"key"。当前路径读取后,还要读取/test,/test读取后,还要读取/
d.在做Java的web项目时,由于一般的Web服务器(如Tomcat或Jetty)都用Context来管理不同的Web A lication,这样对于每个Context有不同的Path,
在一个Server中有多个Web A lication时要特别小心,不要设置Path为/的Cookie,容易误操作。(当然前提是域名相同) ( Wed, 7 Jul 2010 12:15:40 +0800 )
Description:
Java6.0
里面加了一个很实用的包:javax.script,它是Java新增的操作脚本的包,利用它我们可以对脚本语言进行操作,比如修改,或者调用,并且可以和Java语言交互,如果我们利用好的话,我们利用它来实现一些经常要改的部份,这样我们就可以把一些算法写到js文件里面,然后再在运行的时候读取出来并执行,这样就省去了更改一些东西需要重新编译的过程了.
下面我们就来看一个例子吧,看看如何在Java代码里面操作脚本并调用里面的方法.
* Test.java
* Created on 2007-9-19, 15:28:49
* To change this template, choose Tools | Templates
* and open the template in the editor.
package lbf.script;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import javax.script.Binding import javax.script.Invocable;
import javax.script.ScriptContext;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.swing.JFrame;
* @author hadeslee
public cla Test {
public static void main(String[] args)throws Exception {
//根据js的后缀名生成一个解析JS的脚本解析引擎
ScriptEngine engin=new ScriptEngineManager().getEngineByExte ion("js");
//查询一下这个引擎是否实现了下面很实用的接口
System.out.println(engin i tanceof Invocable);
//声明两个对象,传入到JS里面去
JFrame jf=new JFrame("test");
ListString list=new ArrayListString();
//得到挷定的键值对象,把当前的两个J***A对象放进去
Bindings bind=engin.createBindings();
bind.put("jf",jf);
bind.put("list",list);
//把挷下的键值对象放进去,作用域是当前引擎的范围
engin.setBindings(bind, ScriptContext.ENGINE_SCOPE);
//用引擎执行一段写在JS文件里面的代码
Object obj=engin.eval(new FileReader("test.js"));
//这个时候返回值当然 是null了
System.out.println(obj);
//把当前的引擎强制转为Invocable,这样就可以调用定义在JS文件里面的一个一个函数了
Invocable in=(Invocable)engi //得到了从JS里面返回来的对象
ListString l=(ListString)in.invokeFunction("getNames");
System.out.println(l);
//调用一下定义在JS里面的另一个函数
in.invokeFunction("testJS");
//最后调用一个函数,该函数可以使我们前面定义的窗体显示出来
in.invokeFunction("doSth");
下面是定义在test.js里面的内容
function doSth(){
jf.setSize(500,300);
jf.setVisible(true);
jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
function getNames(){
list.add("doSth");
list.add("getNames");
return list;
function testJS(){
print('Hello world!');
我们可以看到,在J***A运行了以后,窗体会显示出来,并且我们可以接收到从JS解析引擎里面传回的数据