社区
community_281
帖子详情
请问有无好用的国外代理服务器?
ticket017
2003-07-27 06:21:29
要目前可以访问的。。。
...全文
7127
3
打赏
收藏
请问有无好用的国外代理服务器?
要目前可以访问的。。。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
happynessiswarmgun
2003-07-27
打赏
举报
回复
up!
TiCrystaler
2003-07-27
打赏
举报
回复
12-216-65-139.client.mchsi.com:80
12-221-239-163.client.insightbb.com:3128
12-231-187-185.client.attbi.com:6588
12-246-134-163.client.attbi.com:80
12-252-172-200.client.attbi.com:80
12.104.160.69:8080
12.104.73.10:8000
12.110.116.165:80
12.13.70.240:3128
12.151.3.2:8080
12.44.87.173:8000
128.121.235.249:8080
128.121.235.250:8080
128.121.235.251:8080
128.121.235.252:8080
128.121.235.253:8080
128.121.235.254:8080
128.121.247.58:8080
128.121.249.133:8080
128.121.249.134:8080
146.145.107.251:80
156.110.79.14:80
160.109.67.81:80
165.138.213.230:80
165.193.25.90:80
168.178.125.69:8080
168.49.213.239:8080
168.8.116.250:80
168.8.72.8:8080
168.9.253.251:3347
194.muh229.lsan.ls3ca02r18.dsl.att.net:8080
198.107.14.24:8080
198.109.184.183:3128
198.109.188.38:80
198.138.2.226:80
198.139.246.18:80
198.143.64.80:80
198.143.78.131:80
198.216.59.46:80
198.59.43.40:8080
198.78.66.75:80
2.muaf.chcg.cgcil01r18.dsl.att.net:3128
200.31.5.66:80
200.41.3.2:8080
200.62.33.4:8080
200.62.56.194:8080
202-54.84.64.master-link.com:8080
204.1.121.114:80
204.66.98.57:80
204.95.147.134:80
204.99.19.154:80
205-5-237-24.gci.net:8000
205.155.216.4:80
205.160.96.134:80
205.240.10.238:80
206-126-48-58.nstci.net:8000
206.159.165.4:80
206.166.240.134:8080
206.19.38.189:3128
206.207.174.242:8080
206.219.71.67:80
206.219.71.68:80
206.219.71.69:80
206.41.224.120:8000
206.61.47.170:80
207.106.227.5:80
207.148.202.27:80
207.180.243.26:80
207.19.126.30:80
207.191.62.218:8080
207.203.156.105:80
207.232.135.195:80
207.55.218.230:8080
207.55.218.231:8080
208.10.115.111:8080
208.138.78.239:3128
208.148.46.66:3128
208.212.184.115:80
208.251.63.227:80
208.251.63.238:80
208.252.22.130:80
208.32.128.11:3128
208.4.56.194:80
208.49.208.2:3128
209-234-157-12.gen.twtelecom.net:80
209-234-157-13.gen.twtelecom.net:80
209-242-19-124.dls.net:80
209.167.107.194:80
209.173.5.130:80
209.180.61.23:80
209.2.243.3:80
209.202.154.150:80
209.208.183.114:80
209.214.209.45:80
209.234.157.12:80
209.234.157.13:80
209.26.191.130:8080
209.3.144.105:80
209.3.144.105:8080
209.73.208.10:8000
garryfox
2003-07-27
打赏
举报
回复
up
二十三种设计模式【PDF版】
主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 建筑和软件中模式之异同 A. 创建模式 设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之 Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new 一样频繁. 设计模式之 Builder 汽车由车轮 方向盘 发动机很多部件组成,同时,将这些部件组装成汽车也是一件复杂的工作,Builder 模式就是将这两 种情况分开进行。 设计模式之 Prototype(原型) 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 B. 结构模式 设计模式之 Adapter(适配器) 使用类再生的两个方式:组合(new)和继承(extends),这个已经在 thinking in java中提到过. 设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于 和单位做买卖。文章中还对 Jive再进行了剖析。 设计模式之 Decorator(装饰器) Decorator 是个油漆工,给你的东东的外表刷上美丽的颜色. 设计模式之 Bridge(桥连) 将牛郎织女分开(本应在一起,分开他们,形成两个接口),在他们之间搭建一个桥(动态的结合) 设计模式之 Flyweight(共享元) 提供 Java运行性能,降低小而大量重复的类的开销. C. 行为模式 设计模式之 Command(命令) 什么是将行为封装,Command 是最好的说明. 设计模式之 Observer(观察者) 介绍如何使用 Java API 提供的现成 Observer 设计模式之 Iterator(迭代器) 这个模式已经被整合入Java的Collection.在大多数场合下无需自己制造一个Iterator,只要将对象装入Collection中, 直接使用 Iterator 进行对象遍历。 设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. 设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of Responsibility(责任链) 各司其职的类串成一串,好象击鼓传花,当然如果自己能完成,就不要推委给下一个. 设计模式之 Mediator(中介) Mediator 很象十字路口的红绿灯,每个车辆只需和红绿灯交互就可以. 设计模式之 State(状态) 状态是编程中经常碰到的实例,将状态对象化,设立状态变换器,便可在状态中轻松切换. 设计模式之 Memento(注释状态?) 很简单一个模式,就是在内存中保留原来数据的拷贝. 设计模式之 Interpreter(解释器) 主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成一系列实质性操作,而且还可以扩展. 设计模式引言 设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。你必须找到相关的对象,以适当的粒度将它们归 类,再定义类的接口和继承层次,建立对象之间的基本关系。你的设计应该对手头的问题有针对性,同时对将来的问题和需求 也要有足够的通用性。 你也希望避免重复设计或尽可能少做重复设计。有经验的面向对象设计者会告诉你,要一下子就得到复用性和灵活性好的设计, 即使不是不可能的至少也是非常困难的。一个设计在最终完成之前常要被复用好几次,而且每一次都有所修改。 有经验的面向对象设计者的确能做出良好的设计,而新手则面对众多选择无从下手,总是求助于以前使用过的非面向对象 技术。新手需要花费较长时间领会良好的面向对象设计是怎么回事。有经验的设计者显然知道一些新手所不知道的东西,这又 是什么呢? 内行的设计者知道:不是解决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案。当找到一个好的解决方案,他 们会一遍又一遍地使用。这些经验是他们成为内行的部分原因。因此,你会在许多面向对象系统中看到类和相互通信的对象( c o m m u n i c a t i n go b j e c t)的重复模式。这些模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更 好。它们帮助设计者将新的设计建立在以往工作的基础上,复用以往成功的设计方案。 一个熟悉这些模式的设计者不需要再去发现它们,而能够立即将它们应用于设计问题中。以下类比可以帮助说明这一点。 小说家和剧本作家很少从头开始设计剧情。他们总是沿袭一些业已存在的模式,像“悲剧性英雄”模式(《麦克白》、《哈姆雷特》 等)或“浪漫小说”模式(存在着无数浪漫小说)。同样地,面向对象设计员也沿袭一些模式,像“用对象表示状态”和“修饰对象以便 于你能容易地添加/删除属性”等。一旦懂得了模式,许多设计决策自然而然就产生了。 我们都知道设计经验的重要价值。你曾经多少次有过这种感觉—你已经解决过了一个问题但就是不能确切知道是在什么地 方或怎么解决的?如果你能记起以前问题的细节和怎么解决它的,你就可以复用以前的经验而不需要重新发现它。然而,我们 并没有很好记录下可供他人使用的软件设计经验。 学习 GoF设计模式的重要性 著名的 EJB 领域顶尖的专家 Richard Monson-Haefel 在其个人网站:www.EJBNow.com 中极力推荐的 GoF 的《设计模式》,原文 如下: Design Patterns Most developers claim to experience an epiphany reading this book. If you've never read the Design Patterns book then you have suffered a very serious gap in your programming education that should be remedied immediately. 翻译: 很多程序员在读完这本书,宣布自己相当于经历了一次"主显节"(纪念那稣降生和受洗的双重节日),如果你从来没有读 过这本书,你会在你的程序教育生涯里存在一个严重裂沟,所以你应该立即挽救弥补! 可以这么说:GoF 设计模式是程序员真正掌握面向对象核心思想的必修课。虽然你可能已经通过了 SUN 的很多令人炫目的 技术认证,但是如果你没有学习掌握 GoF 设计模式,只能说明你还是一个技工。 在浏览《Thingking in Java》(第一版)时,你是不是觉得好象这还是一本 Java 基础语言书籍?但又不纯粹是,因为这本书的作 者将面向对象的思想巧妙的融合在 Java 的具体技术上,潜移默化的让你感觉到了一种新的语言和新的思想方式的诞生。 但是读完这本书,你对书中这些蕴含的思想也许需要一种更明晰更系统更透彻的了解和掌握,那么你就需要研读 GoF 的《设 计模式》了。 《Thingking in Java》(第一版中文)是这样描述设计模式的:他在由 Gamma, Helm 和 Johnson Vlissides 简称 Gang of Four(四人 帮),缩写 GoF 编著的《Design Patterns》一书中被定义成一个“里程碑”。事实上,那本书现在已成为几乎所有 OOP(面向对象程 序设计)程序员都必备的参考书。(在
国外
是如此)。 GoF 的《设计模式》是所有面向对象语言(C++ Java C#)的基础,只不过不同的语言将之实现得更方便地使用。 GOF 的设计模式是一座"桥" 就 Java 语言体系来说,GOF 的设计模式是 Java 基础知识和 J2EE 框架知识之间一座隐性的"桥"。 会 Java 的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握 Java 中接口或抽象类的应用不是很多,大家 经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java 的接口或抽象类是真正体现 Java 思想的核心所在,这些 你都将在 GoF 的设计模式里领略到它们变幻无穷的魔力。 GoF 的设计模式表面上好象也是一种具体的"技术",而且新的设计模式不断在出现,设计模式自有其自己的发展轨道,而这 些好象和 J2EE .Net 等技术也无关! 实际上,GoF 的设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用 和智慧,让你能够真正掌握接口或抽象类的应用,从而在原来的 Java 语言基础上跃进一步,更重要的是,GoF 的设计模式反复 向你强调一个宗旨:要让你的程序尽可能的可重用。 这其实在向一个极限挑战:软件需求变幻无穷,计划没有变化快,但是我们还是要寻找出不变的东西,并将它和变化的东 西分离开来,这需要非常的智慧和经验。 而 GoF 的设计模式是在这方面开始探索的一块里程碑。 J2EE 等属于一种框架软件,什么是框架软件?它不同于我们以前接触的 Java API 等,那些属于 Toolkist(工具箱),它不再被动 的被使用,被调用,而是深刻的介入到一个领域中去,J2EE 等框架软件设计的目的是将一个领域中不变的东西先定义好,比如 整体结构和一些主要职责(如数据库操作 事务跟踪 安全等),剩余的就是变化的东西,针对这个领域中具体应用产生的具体不同 的变化需求,而这些变化东西就是 J2EE 程序员所要做的。 由此可见,设计模式和 J2EE 在思想和动机上是一脉相承,只不过 1.设计模式更抽象,J2EE 是具体的产品代码,我们可以接触到,而设计模式在对每个应用时才会产生具体代码。 2.设计模式是比 J2EE 等框架软件更小的体系结构,J2EE 中许多具体程序都是应用设计模式来完成的,当你深入到 J2EE 的内 部代码研究时,这点尤其明显,因此,如果你不具备设计模式的基础知识(GoF 的设计模式),你很难快速的理解 J2EE。不能理解 J2EE,如何能灵活应用? 3.J2EE 只是适合企业计算应用的框架软件,但是 GoF 的设计模式几乎可以用于任何应用!因此 GoF 的设计模式应该是 J2EE 的重要理论基础之一。 所以说,GoF 的设计模式是 Java 基础知识和 J2EE 框架知识之间一座隐性的"桥"。为什么说隐性的? GOF 的设计模式是一座隐性的"桥" 因为很多人没有注意到这点,学完 Java 基础语言就直接去学 J2EE,有的甚至鸭子赶架,直接使用起 Weblogic 等具体 J2EE 软 件,一段时间下来,发现不过如此,挺简单
好用
,但是你真正理解 J2EE 了吗?你在具体案例中的应用是否也是在延伸 J2EE 的思 想? 如果你不能很好的延伸 J2EE 的思想,那你岂非是大炮轰蚊子,认识到 J2EE 不是适合所有场合的人至少是明智的,但我们更 需要将 J2EE 用对地方,那么只有理解 J2EE 此类框架软件的精髓,那么你才能真正灵活应用 Java 解决你的问题,甚至构架出你自 己企业的框架来。(我们不能总是使用别人设定好的框架,为什么不能有我们自己的框架?) 因此,首先你必须掌握 GoF 的设计模式。虽然它是隐性,但不是可以越过的。 关于本站“设计模式” Java 提供了丰富的 API,同时又有强大的数据库系统作底层支持,那么我们的编程似乎变成了类似积木的简单"拼凑"和调用, 甚至有人提倡"蓝领程序员",这些都是对现代编程技术的不了解所至. 在真正可复用的面向对象编程中,GoF 的《设计模式》为我们提供了一套可复用的面向对象技术,再配合 Refactoring(重构方法), 所以很少存在简单重复的工作,加上Java 代码的精炼性和面向对象纯洁性(设计模式是 java 的灵魂),编程工作将变成一个让你时刻 体验创造快感的激动人心的过程. 为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等服务器方面的应用,因此, 本站所有实例都是非图形应用,并且顺带剖析 Jive论坛系统.同时为降低理解难度,尽量避免使用 UML 图. 如果你有一定的面向对象编程经验,你会发现其中某些设计模式你已经无意识的使用过了;如果你是一个新手,那么从开始就 培养自己良好的编程习惯(让你的的程序使用通用的模式,便于他人理解;让你自己减少重复性的编程工作),这无疑是成为一个优秀 程序员的必备条件. 整个设计模式贯穿一个原理:面对接口编程,而不是面对实现.目标原则是:降低耦合,增强灵活性. 建筑和软件中模式之异同 CSDN 的透明特别推崇《建筑的永恒之道》,认为从中探寻到软件的永恒之道,并就"设计模式"写了专门文章《探寻软件的永恒 之道 》,其中很多观点我看了很受启发,以前我也将"设计模式" 看成一个简单的解决方案,没有从一种高度来看待"设计模式"在软 件中地位,下面是我自己的一些想法: 建筑和软件某些地方是可以来比喻的 特别是中国传统建筑,那是很讲模式的,这些都是传统文化使然,比如京剧 一招一式都有套路;中国画,也有套路,树应该怎么画 法?有几种画法?艺术大家通常是创造出自己的套路,比如明末清初,水墨画法开始成熟,这时画树就不用勾勒这个模式了,而是一笔 下去,浓淡几个叶子,待毛笔的水墨要干枯时,画一下树干,这样,一个活生写意的树就画出来. 我上面这些描述其实都是一种模式,创建模式的人是大师,但是拘泥于模式的人永远是工匠. 再回到传统建筑中,中国的传统建筑是过分注重模式了,所以建筑风格发展不大,基本分南北两派,大家有个感觉,旅游时,到南 方,你发现古代名居建筑都差不多;北方由于受满人等少数民族的影响,在建筑色彩上有些与南方迥异,但是很多细节地方都差不多. 这些都是模式的体现. 由于建筑受材料和功用以及费用的影响,所用模式种类不多,这点是和软件很大的不同. 正因为这点不同,导致建筑的管理模式和软件的管理模式就有很多不同, 有些人认识不到这点,就产生了可以大量使用"软件 蓝领"的想法,因为他羡慕建筑中"民工"的低成本. 要知道软件还有一个与建筑截然相反的责任和用途,那就是:现代社会中,计划感不上变化,竞争激烈,所有一切变幻莫测,要应 付所有这些变化,首推信息技术中的软件,只有软件能够帮助人类去应付各种变化.而这点正好与建筑想反,建筑是不能帮助人类去 应付变化的,(它自己反而要求稳固,老老实实帮助人遮风避雨,总不能叫人类在露天或树叶下打开电脑编软件吧). 软件要帮助人类去应付变化,这是软件的首要责任,所以,软件中模式产生的目的就和建筑不一样了,建筑中的模式产生可以因 为很多原因:建筑大师的创意;材料的革新等;建筑中这些模式一旦产生,容易发生另外一个缺点,就是有时会阻碍建筑本身的发展, 因为很多人会不思创造,反复使用老的模式进行设计,阻碍建筑的发展. 但是在软件中,这点正好相反,软件模式的产生是因为变化的东西太多,为减轻人类的负担,将一些不变的东西先用模式固化,这 样让人类可以更加集中精力对付变化的东西,所以在软件中大量反复使用模式(我个人认为这样的软件就叫框架软件了,比如J2EE), 不但没阻碍软件的发展,反而是推动了软件的发展.因为其他使用这套软件的人就可以将更多精力集中在对付那些无法用模式的 应用上来. 可以关于建筑和软件中的模式作用可以总结如下: 在软件中,模式是帮助人类向"变化"战斗,但是在软件中还需要和'变化'直接面对面战斗的武器:人的思维,特别是创造 分析思 维等等,这些是软件真正的灵魂,这种思维可以说只要有实践需求(如有新项目)就要求发生,发生频度高,人类的创造或分析思 维决定了软件的质量和特点。 而在建筑中,模式可以构成建筑全部知识,当有新的需求(如有新项目),一般使用旧的模式都可以完成,因此对人类的创造以 及分析思维不是每个项目都必须的,也不是非常重要的,对创造性的思维的需求只是属于锦上添花(除非人类以后离开地球居 住了〕。 设计模式之 Singleton(单态) 模式实战书籍《Java实用系统开发指南》 单态定义: Singleton 模式主要作用是保证在 Java 应用程序中,一个类 Class 只有一个实例存在。 在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。 还有, singleton 能够被状态化; 这样,多个单态类在一起就可以作为一个状态仓库一样向外提供服务,比如,你要论坛中的 帖子计数器,每次浏览一次需要计数,单态类能否保持住这个计数,并且能 synchronize 的安全自动加 1,如果你要把这个数字 永久保存到数据库,你可以在不修改单态接口的情况下方便的做到。 另外方面,Singleton 也能够被无状态化。提供工具性质的功能, Singleton 模式就为我们提供了这样实现的可能。使用 Singleton 的好处还在于可以节省内存,因为它限制了实例的个数,有 利于 Java 垃圾回收(garbage collection)。 我们常常看到工厂模式中类装入器(class loader)中也用 Singleton 模式实现的,因为被装入的类实际也属于资源。 如何使用? 一般 Singleton 模式通常有几种形式: public class Singleton { private Singleton(){} //在自己内部定义自己一个实例,是不是很奇怪? //注意这是 private 只供内部调用 private static Singleton instance = new Singleton(); //这里提供了一个供外部访问本 class 的静态方法,可以直接访问 public static Singleton getInstance() { return instance; } } 第二种形式: public class Singleton { private static Singleton instance = null; public static synchronized Singleton getInstance() { //这个方法比上面有所改进,不用每次都进行生成对象,只是第一次 //使用时生成实例,提高了效率! if (instance==null) instance=new Singleton(); return instance; } } 使用 Singleton.getInstance()可以访问单态类。 上面第二中形式是 lazy initialization,也就是说第一次调用时初始 Singleton,以后就不用再生成了。 注意到 lazy initialization 形式中的 synchronized,这个 synchronized 很重要,如果没有 synchronized,那么使用 getInstance() 是有可能得到多个 Singleton 实例。关于 lazy initialization 的 Singleton 有很多涉及 double-checked locking (DCL)的讨论,有兴趣者 进一步研究。 一般认为第一种形式要更加安全些。 使用 Singleton 注意事项: 有时在某些情况下,使用 Singleton 并不能达到 Singleton 的目的,如有多个 Singleton 对象同时被不同的类装入器装载;在 EJB 这样的分布式系统中使用也要注意这种情况,因为 EJB 是跨服务器,跨 JVM 的。 我们以 SUN 公司的宠物店源码(Pet Store 1.3.1)的 ServiceLocator 为例稍微分析一下: 在 Pet Store中 ServiceLocator 有两种,一个是 EJB 目录下;一个是 WEB 目录下,我们检查这两个 ServiceLocator 会发现内容 差不多,都是提供 EJB 的查询定位服务,可是为什么要分开呢?仔细研究对这两种 ServiceLocator 才发现区别:在 WEB 中的 ServiceLocator 的采取 Singleton 模式,ServiceLocator 属于资源定位,理所当然应该使用 Singleton 模式。但是在 EJB 中,Singleton 模式已经失去作用,所以 ServiceLocator 才分成两种,一种面向 WEB 服务的,一种是面向 EJB 服务的。 Singleton 模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对 Java 的类 线程 内存等概念有相当 的了解。 总之:如果你的应用基于容器,那么 Singleton 模式少用或者不用,可以使用相关替代技术。 进一步深入可参考: Double-checked locking and the Singleton pattern When is a singleton not a singleton? 设计模式如何在具体项目中应用见《Java 实用系统开发指南》。 设计模式之 Factory 工厂模式定义:提供创建对象的接口. 为何使用? 工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的 new,我们经常要根据类 Class 生成实例对象,如 A a=new A() 工厂模式也是用来创建实例对象的,所以以后 new时就要多个心眼,是否可以考虑实用工厂模式,虽然这样做, 可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。 我们以类 Sample为例, 如果我们要创建 Sample的实例对象: Sample sample=new Sample(); 可是,实际情况是,通常我们都要在创建 sample实例时做点初始化的工作,比如赋值 查询数据库等。 首先,我们想到的是,可以使用 Sample的构造函数,这样生成实例就写成: Sample sample=new Sample(参数); 但是,如果创建 sample 实例时所做的初始化工作不是象赋值这样简单的事,可能是很长一段代码,如果也写入构造函数 中,那你的代码很难看了(就需要 Refactor 重整)。 为什么说代码很难看,初学者可能没有这种感觉,我们分析如下,初始化工作如果是很长一段代码,说明要做的工作很多, 将很多工作装入一个方法中,相当于将很多鸡蛋放在一个篮子里,是很危险的,这也是有背于 Java 面向对象的原则,面向对象 的封装(Encapsulation)和分派(Delegation)告诉我们,尽量将长的代码分派“切割”成每段,将每段再“封装”起来(减少段和段 之间偶合联系性),这样,就会将风险分散,以后如果需要修改,只要更改每段,不会再发生牵一动百的事情。 在本例中,首先,我们需要将创建实例的工作与使用实例的工作分开, 也就是说,让创建实例所需要的大量初始化工作从 Sample的构造函数中分离出去。 这时我们就需要 Factory 工厂模式来生成对象了,不能再用上面简单 new Sample(参数)。还有,如果 Sample 有个继承 如 MySample, 按照面向接口编程,我们需要将 Sample 抽象成一个接口.现在 Sample 是接口,有两个子类 MySample 和 HisSample .我们要实例化他们时,如下: Sample mysample=new MySample(); Sample hissample=new HisSample(); 随着项目的深入,Sample可能还会"生出很多儿子出来", 那么我们要对这些儿子一个个实例化,更糟糕的是,可能还要对以 前的代码进行修改:加入后来生出儿子的实例.这在传统程序中是无法避免的. 但如果你一开始就有意识使用了工厂模式,这些麻烦就没有了. 工厂方法 你会建立一个专门生产 Sample实例的工厂: public class Factory{ public static Sample creator(int which){ //getClass 产生 Sample 一般可使用动态类装载装入类。 if (which==1) return new SampleA(); else if (which==2) return new SampleB(); } } 那么在你的程序中,如果要实例化 Sample 时.就使用 Sample sampleA=Factory.creator(1); 这样,在整个就不涉及到 Sample 的具体子类,达到封装效果,也就减少错误修改的机会,这个原理可以用很通俗的话来比喻: 就是具体事情做得越多,越容易范错误.这每个做过具体工作的人都深有体会,相反,官做得越高,说出的话越抽象越笼统,范错误可 能性就越少.好象我们从编程序中也能悟出人生道理?呵呵. 使用工厂方法 要注意几个角色,首先你要定义产品接口,如上面的 Sample,产品接口下有 Sample接口的实现类,如 SampleA,其次要有一个 factory 类,用来生成产品 Sample,如下图,最右边是生产的对象 Sample: 进一步稍微复杂一点,就是在工厂类上进行拓展,工厂类也有继承它的实现类 concreteFactory 了。 抽象工厂 工厂模式中有: 工厂方法(Factory Method) 抽象工厂(Abstract Factory). 这两个模式区别在于需要创建对象的复杂程度上。如果我们创建对象的方法变得复杂了,如上面工厂方法中是创建一个对象 Sample,如果我们还有新的产品接口 Sample2. 这里假设:Sample有两个 concrete 类 SampleA 和 SamleB,而 Sample2 也有两个 concrete类 Sample2A 和 SampleB2 那么,我们就将上例中 Factory 变成抽象类,将共同部分封装在抽象类中,不同部分使用子类实现,下面就是将上例中的 Factory 拓展成抽象工厂: public abstract class Factory{ public abstract Sample creator(); public abstract Sample2 creator(String name); } public class SimpleFactory extends Factory{ public Sample creator(){ ......... return new SampleA } public Sample2 creator(String name){ ......... return new Sample2A } } public class BombFactory extends Factory{ public Sample creator(){ ...... return new SampleB } public Sample2 creator(String name){ ...... return new Sample2B } } 从上面看到两个工厂各自生产出一套 Sample和 Sample2,也许你会疑问,为什么我不可以使用两个工厂方法来分别生产 Sample和 Sample2? 抽象工厂还有另外一个关键要点,是因为 SimpleFactory 内,生产 Sample和生产 Sample2 的方法之间有一定联系, 所以才要将这两个方法捆绑在一个类中,这个工厂类有其本身特征,也许制造过程是统一的,比如:制造工艺比较简单,所以 名称叫 SimpleFactory。 在实际应用中,工厂方法用得比较多一些,而且是和动态类装入器组合在一起应用, 举例 我们以 Jive的 ForumFactory 为例,这个例子在前面的 Singleton 模式中我们讨论过,现在再讨论其工厂模式: public abstract class ForumFactory { private static Object initLock = new Object(); private static String className = "com.jivesoftware.forum.database.DbForumFactory"; private static ForumFactory factory = null; public static ForumFactory getInstance(Authorization authorization) { //If no valid authorization passed in, return null. if (authorization == null) { return null; } //以下使用了 Singleton 单态模式 if (factory == null) { synchronized(initLock) { if (factory == null) { ...... try { //动态转载类 Class c = Class.forName(className); factory = (ForumFactory)c.newInstance(); } catch (Exception e) { return null; } } } } //Now, 返回 proxy.用来限制授权对 forum 的访问 return new ForumFactoryProxy(authorization, factory, factory.getPermissions(authorization)); } //真正创建 forum 的方法由继承 forumfactory 的子类去完成. public abstract Forum createForum(String name, String description) throws UnauthorizedException, ForumAlreadyExistsException; .... } 因为现在的 Jive是通过数据库系统存放论坛帖子等内容数据,如果希望更改为通过文件系统实现,这个工厂方法 ForumFactory 就提供了提供动态接口: private static String className = "com.jivesoftware.forum.database.DbForumFactory"; 你可以使用自己开发的创建 forum 的方法代替 com.jivesoftware.forum.database.DbForumFactory 就可以. 在上面的一段代码中一共用了三种模式,除了工厂模式外,还有 Singleton 单态模式,以及 proxy模式,proxy 模式主要用来 授权用户对 forum 的访问,因为访问 forum 有两种人:一个是注册用户 一个是游客 guest,那么那么相应的权限就不一样,而且 这个权限是贯穿整个系统的,因此建立一个 proxy,类似网关的概念,可以很好的达到这个效果. 看看 Java 宠物店中的 CatalogDAOFactory: public class CatalogDAOFactory { /** * 本方法制定一个特别的子类来实现 DAO 模式。 * 具体子类定义是在 J2EE 的部署描述器中。 */ public static CatalogDAO getDAO() throws CatalogDAOSysException { CatalogDAO catDao = null; try { InitialContext ic = new InitialContext(); //动态装入 CATALOG_DAO_CLASS //可以定义自己的 CATALOG_DAO_CLASS,从而在无需变更太多代码 //的前提下,完成系统的巨大变更。 String className =(String) ic.lookup(JNDINames.CATALOG_DAO_CLASS); catDao = (CatalogDAO) Class.forName(className).newInstance(); } catch (NamingException ne) { throw new CatalogDAOSysException(" CatalogDAOFactory.getDAO: NamingException while getting DAO type : \n" + ne.getMessage()); } catch (Exception se) { throw new CatalogDAOSysException(" CatalogDAOFactory.getDAO: Exception while getting DAO type : \n" + se.getMessage()); } return catDao; } } CatalogDAOFactory 是典型的工厂方法, catDao 是通过动态类装入器 className 获得 CatalogDAOFactory 具体实现 子类,这个实现子类在 Java 宠物店是用来操作 catalog 数据库,用户可以根据数据库的类型不同,定制自己的具体实现子类, 将自己的子类名给与 CATALOG_DAO_CLASS 变量就可以。 由此可见,工厂方法确实为系统结构提供了非常灵活强大的动态扩展机制,只要我们更换一下具体的工厂方法,系统其他 地方无需一点变换,就有可能将系统功能进行改头换面的变化。 设计模式之 Builder Builder 模式定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder 模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知 道内部的具体构建细节.Builder 模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到. 为何使用? 是为了将构建复杂对象的过程和它的部件解耦.注意: 是解耦过程和部件. 因为一个复杂的对象,不但有很多大量组成部分,如汽车,有很多部件:车轮 方向盘 发动机还有各种小零件等等,部件很多,但 远不止这些,如何将这些部件装配成一辆汽车,这个装配过程也很复杂(需要很好的组装技术),Builder 模式就是为了将部件和组装 过程分开. 如何使用? 首先假设一个复杂对象是由多个部件组成的,Builder 模式是把复杂对象的创建和部件的创建分别开来,分别用 Builder 类和 Director 类来表示. 首先,需要一个接口,它定义如何创建复杂对象的各个部件: public interface Builder { //创建部件 A 比如创建汽车车轮 void buildPartA(); //创建部件 B 比如创建汽车方向盘 void buildPartB(); //创建部件 C 比如创建汽车发动机 void buildPartC(); //返回最后组装成品结果 (返回最后装配好的汽车) //成品的组装过程不在这里进行,而是转移到下面的 Director 类中进行. //从而实现了解耦过程和部件 Product getResult(); } 用 Director 构建最后的复杂对象,而在上面 Builder 接口中封装的是如何创建一个个部件(复杂对象是由这些部件组成的),也就 是说 Director 的内容是如何将部件最后组装成成品: public class Director { private Builder builder; public Director( Builder builder ) { this.builder = builder; } // 将部件 partA partB partC 最后组成复杂对象 //这里是将车轮 方向盘和发动机组装成汽车的过程 public void construct() { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } } Builder 的具体实现 ConcreteBuilder: 通过具体完成接口 Builder 来构建或装配产品的部件; 定义并明确它所要创建的是什么具体东西; 提供一个可以重新获取产品的接口: public class ConcreteBuilder implements Builder { Part partA, partB, partC; public void buildPartA() { //这里是具体如何构建 partA 的代码 }; public void buildPartB() { //这里是具体如何构建 partB 的代码 }; public void buildPartC() { //这里是具体如何构建 partB 的代码 }; public Product getResult() { //返回最后组装成品结果 }; } 复杂对象:产品 Product: public interface Product { } 复杂对象的部件: public interface Part { } 我们看看如何调用 Builder 模式: ConcreteBuilder builder = new ConcreteBuilder(); Director director = new Director( builder ); director.construct(); Product product = builder.getResult(); Builder 模式的应用 在 Java 实际使用中,我们经常用到"池"(Pool)的概念,当资源提供者无法提供足够的资源,并且这些资源需要被很多用户反复共 享时,就需要使用池. "池"实际是一段内存,当池中有一些复杂的资源的"断肢"(比如数据库的连接池,也许有时一个连接会中断),如果循环再利用这 些"断肢",将提高内存使用效率,提高池的性能.修改 Builder 模式中 Director 类使之能诊断"断肢"断在哪个部件上,再修复这个部件. 设计模式之 Prototype(原型) 原型模式定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个 原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 如何使用? 因为 Java 中的提供 clone()方法来实现对象的克隆,所以 Prototype模式实现一下子变得很简单. 以勺子为例: public abstract class AbstractSpoon implements Cloneable { String spoonName; public void setSpoonName(String spoonName) {this.spoonName = spoonName;} public String getSpoonName() {return this.spoonName;} public Object clone() { Object object = null; try { object = super.clone(); } catch (CloneNotSupportedException exception) { System.err.println("AbstractSpoon is not Cloneable"); } return object; } } 有个具体实现(ConcretePrototype): public class SoupSpoon extends AbstractSpoon { public SoupSpoon() { setSpoonName("Soup Spoon"); } } 调用 Prototype 模式很简单: AbstractSpoon spoon = new SoupSpoon(); AbstractSpoon spoon2 = spoon.clone(); 当然也可以结合工厂模式来创建 AbstractSpoon 实例。 在 Java 中 Prototype 模式变成 clone()方法的使用,由于 Java 的纯洁的面向对象特性,使得在 Java 中使用设计模式变 得很自然,两者已经几乎是浑然一体了。这反映在很多模式上,如 Interator 遍历模式。 设计模式之 Adapter(适配器) 适配器模式定义: 将两个不兼容的类纠合在一起使用,属于结构型模式,需要有 Adaptee(被适配者)和 Adaptor(适配器)两个身份. 为何使用? 我们经常碰到要将两个没有关系的类组合在一起使用,第一解决方案是:修改各自类的接口,但是如果我们没有源代码,或 者,我们不愿意为了一个应用而修改各自的接口。 怎么办? 使用 Adapter,在这两种接口之间创建一个混合接口(混血儿). 如何使用? 实现 Adapter 方式,其实"think in Java"的"类再生"一节中已经提到,有两种方式:组合(composition)和继承 (inheritance). 假设我们要打桩,有两种类:方形桩 圆形桩. public class SquarePeg{ public void insert(String str){ System.out.println("SquarePeg insert():"+str); } } public class RoundPeg{ public void insertIntohole(String msg){ System.out.println("RoundPeg insertIntoHole():"+msg); } } 现在有一个应用,需要既打方形桩,又打圆形桩.那么我们需要将这两个没有关系的类综合应用.假设 RoundPeg 我们没有源 代码,或源代码我们不想修改,那么我们使用 Adapter 来实现这个应用: public class PegAdapter extends SquarePeg{ private RoundPeg roundPeg; public PegAdapter(RoundPeg peg)(this.roundPeg=peg;) public void insert(String str){ roundPeg.insertIntoHole(str);} } 在上面代码中,RoundPeg 属于 Adaptee,是被适配者.PegAdapter 是 Adapter,将 Adaptee(被适配者 RoundPeg)和 Target(目标 SquarePeg)进行适配.实际上这是将组合方法(composition)和继承(inheritance)方法综合运用. PegAdapter 首先继承 SquarePeg,然后使用 new 的组合生成对象方式,生成 RoundPeg 的对象 roundPeg,再重载父 类 insert()方法。从这里,你也了解使用 new生成对象和使用 extends 继承生成对象的不同,前者无需对原来的类修改,甚至无 需要知道其内部结构和源代码. 如果你有些 Java 使用的经验,已经发现,这种模式经常使用。 进一步使用 上面的 PegAdapter 是继承了 SquarePeg,如果我们需要两边继承,即继承 SquarePeg 又继承 RoundPeg,因为 Java 中 不允许多继承,但是我们可以实现(implements)两个接口(interface) public interface IRoundPeg{ public void insertIntoHole(String msg); } public interface ISquarePeg{ public void insert(String str); } 下面是新的 RoundPeg 和 SquarePeg, 除了实现接口这一区别,和上面的没什么区别。 public class SquarePeg implements ISquarePeg{ public void insert(String str){ System.out.println("SquarePeg insert():"+str); } } public class RoundPeg implements IRoundPeg{ public void insertIntohole(String msg){ System.out.println("RoundPeg insertIntoHole():"+msg); } } 下面是新的 PegAdapter,叫做 two-way adapter: public class PegAdapter implements IRoundPeg,ISquarePeg{ private RoundPeg roundPeg; private SquarePeg squarePeg; // 构造方法 public PegAdapter(RoundPeg peg){this.roundPeg=peg;} // 构造方法 public PegAdapter(SquarePeg peg)(this.squarePeg=peg;) public void insert(String str){ roundPeg.insertIntoHole(str);} } 还有一种叫 Pluggable Adapters,可以动态的获取几个 adapters 中一个。使用 Reflection 技术,可以动态的发现类中的 Public 方法。 设计模式之 Proxy(代理) 理解并使用设计模式,能够培养我们良好的面向对象编程习惯,同时在实际应用中,可以如鱼得水,享受游刃有余的乐趣. 代理模式是比较有用途的一种模式,而且变种较多,应用场合覆盖从小结构到整个系统的大结构,Proxy 是代理的意思,我们 也许有
代理服务器
等概念,代理概念可以解释为:在出发点到目的地之间有一道中间层,意为代理. 设计模式中定义: 为其他对象提供一种代理以控制对这个对象的访问. 为什么要使用 Proxy? 1.授权机制 不同级别的用户对同一对象拥有不同的访问权利,如 Jive 论坛系统中,就使用 Proxy 进行授权机制控制,访问 论坛有两种人:注册用户和游客(未注册用户),Jive 中就通过类似 ForumProxy 这样的代理来控制这两种用户对论坛的访问权 限. 2.某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动. 举例两个具体情况: (1)如果那个对象是一个是很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏 览器打开这个文档,打开文档必须很迅速,不能等待大图片处理完成,这时需要做个图片 Proxy 来代替真正的图片. (2)如果那个对象在 Internet 的某个远端服务器上,直接操作这个对象因为网络速度原因可能比较慢,那我们可以先用 Proxy来代替那个对象. 总之原则是,对于开销很大的对象,只有在使用它时才创建,这个原则可以为我们节省很多宝贵的 Java 内存. 所以,有些人认 为 Java 耗费资源内存,我以为这和程序编制思路也有一定的关系. 如何使用 Proxy? 以 Jive 论坛系统为例,访问论坛系统的用户有多种类型:注册普通用户 论坛管理者 系统管理者 游客,注册普通用户才能发 言;论坛管理者可以管理他被授权的论坛;系统管理者可以管理所有事务等,这些权限划分和管理是使用 Proxy完成的. Forum 是 Jive的核心接口,在 Forum 中陈列了有关论坛操作的主要行为,如论坛名称 论坛描述的获取和修改,帖子发表删 除编辑等. 在 ForumPermissions 中定义了各种级别权限的用户: public class ForumPermissions implements Cacheable { /** * Permission to read object. */ public static final int READ = 0; /** * Permission to administer the entire sytem. */ public static final int SYSTEM_ADMIN = 1; /** * Permission to administer a particular forum. */ public static final int FORUM_ADMIN = 2; /** * Permission to administer a particular user. */ public static final int USER_ADMIN = 3; /** * Permission to administer a particular group. */ public static final int GROUP_ADMIN = 4; /** * Permission to moderate threads. */ public static final int MODERATE_THREADS = 5; /** * Permission to create a new thread. */ public static final int CREATE_THREAD = 6; /** * Permission to create a new message. */ public static final int CREATE_MESSAGE = 7; /** * Permission to moderate messages. */ public static final int MODERATE_MESSAGES = 8; ..... public boolean isSystemOrForumAdmin() { return (values[FORUM_ADMIN] || values[SYSTEM_ADMIN]); } ..... } 因此,Forum 中各种操作权限是和 ForumPermissions 定义的用户级别有关系的,作为接口 Forum 的实现:ForumProxy 正是将这种对应关系联系起来.比如,修改 Forum 的名称,只有论坛管理者或系统管理者可以修改,代码如下: public class ForumProxy implements Forum { private ForumPermissions permissions; private Forum forum; this.authorization = authorization; public ForumProxy(Forum forum, Authorization authorization, ForumPermissions permissions) { this.forum = forum; this.authorization = authorization; this.permissions = permissions; } ..... public void setName(String name) throws UnauthorizedException, ForumAlreadyExistsException { //只有是系统或论坛管理者才可以修改名称 if (permissions.isSystemOrForumAdmin()) { forum.setName(name); } else { throw new UnauthorizedException(); } } ... } 而 DbForum 才是接口 Forum 的真正实现,以修改论坛名称为例: public class DbForum implements Forum, Cacheable { ... public void setName(String name) throws ForumAlreadyExistsException { .... this.name = name; //这里真正将新名称保存到数据库中 saveToDb(); .... } ... } 凡是涉及到对论坛名称修改这一事件,其他程序都首先得和ForumProxy打交道,由ForumProxy决定是否有权限做某一样 事情,ForumProxy 是个名副其实的"网关","安全代理系统". 在平时应用中,无可避免总要涉及到系统的授权或安全体系,不管你
有无
意识的使用 Proxy,实际你已经在使用 Proxy了. 我们继续结合 Jive谈入深一点,下面要涉及到工厂模式了,如果你不了解工厂模式,请看我的另外一篇文章:设计模式之 Factory 我们已经知道,使用 Forum 需要通过 ForumProxy,Jive 中创建一个 Forum 是使用 Factory 模式,有一个总的抽象类 ForumFactory,在这个抽象类中,调用 ForumFactory 是通过 getInstance()方法实现,这里使用了 Singleton(也是设计模式 之一,由于介绍文章很多,我就不写了),getInstance()返回的是 ForumFactoryProxy. 为什么不返回 ForumFactory,而返回 ForumFactory 的实现 ForumFactoryProxy? 原因是明显的,需要通过代理确定是否有权限创建 forum. 在 ForumFactoryProxy 中我们看到代码如下: public class ForumFactoryProxy extends ForumFactory { protected ForumFactory factory; protected Authorization authorization; protected ForumPermissions permissions; public ForumFactoryProxy(Authorization authorization, ForumFactory factory, ForumPermissions permissions) { this.factory = factory; this.authorization = authorization; this.permissions = permissions; } public Forum createForum(String name, String description) throws UnauthorizedException, ForumAlreadyExistsException { //只有系统管理者才可以创建 forum if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) { Forum newForum = factory.createForum(name, description); return new ForumProxy(newForum, authorization, permissions); } else { throw new UnauthorizedException(); } } 方法 createForum 返回的也是 ForumProxy, Proxy 就象一道墙,其他程序只能和 Proxy交互操作. 注意到这里有两个 Proxy:ForumProxy 和 ForumFactoryProxy. 代表两个不同的职责:使用 Forum 和创建 Forum; 至于为什么将使用对象和创建对象分开,这也是为什么使用 Factory 模式的原因所在:是为了"封装" "分派";换句话说,尽可 能功能单一化,方便维护修改. Jive论坛系统中其他如帖子的创建和使用,都是按照 Forum 这个思路而来的. 以上我们讨论了如何使用Proxy进行授权机制的访问,Proxy还可以对用户隐藏另外一种称为copy-on-write的优化方式. 拷贝一个庞大而复杂的对象是一个开销很大的操作,如果拷贝过程中,没有对原来的对象有所修改,那么这样的拷贝开销就没有必 要.用代理延迟这一拷贝过程. 比如:我们有一个很大的 Collection,具体如 hashtable,有很多客户端会并发同时访问它.其中一个特别的客户端要进行连 续的数据获取,此时要求其他客户端不能再向 hashtable 中增加或删除 东东. 最直接的解决方案是:使用 collection 的 lock,让这特别的客户端获得这个 lock,进行连续的数据获取,然后再释放 lock. public void foFetches(Hashtable ht){ synchronized(ht){ //具体的连续数据获取动作.. } } 但是这一办法可能锁住 Collection 会很长时间,这段时间,其他客户端就不能访问该 Collection 了. 第二个解决方案是clone这个Collection,然后让连续的数据获取针对clone出来的那个Collection操作.这个方案前提是, 这个 Collection 是可 clone的,而且必须有提供深度 clone的方法.Hashtable 就提供了对自己的 clone方法,但不是 Key和 value对象的 clone,关于 Clone含义可以参考专门文章. public void foFetches(Hashtable ht){ Hashttable newht=(Hashtable)ht.clone(); } 问题又来了,由于是针对clone出来的对象操作,如果原来的母体被其他客户端操作修改了, 那么对clone出来的对象操作就 没有意义了. 最后解决方案:我们可以等其他客户端修改完成后再进行 clone,也就是说,这个特别的客户端先通过调用一个叫 clone的方 法来进行一系列数据获取操作.但实际上没有真正的进行对象拷贝,直至有其他客户端修改了这个对象 Collection. 使用 Proxy实现这个方案.这就是 copy-on-write操作. Proxy应用范围很广,现在流行的分布计算方式 RMI 和 Corba 等都是 Proxy模式的应用. 更多 Proxy应用,见 http://www.research.umbc.edu/~tarr/cs491/lectures/Proxy.pdf Sun 公司的 Explore the Dynamic Proxy API Dynamic Proxy Classes 设计模式之 Facade(外观 总管 Manager) Facade 模式的定义: 为子系统中的一组接口提供一个一致的界面. Facade一个典型应用就是数据库 JDBC 的应用,如下例对数据库的操作: public class DBCompare { Connection conn = null; PreparedStatement prep = null; ResultSet rset = null; try { Class.forName( "
" ).newInstance(); conn = DriverManager.getConnection( "
" ); String sql = "SELECT * FROM
WHERE
= ?"; prep = conn.prepareStatement( sql ); prep.setString( 1, "
" ); rset = prep.executeQuery(); if( rset.next() ) { System.out.println( rset.getString( "
也非常方便,比如从 Mysql 数据库换到 Oracle 数据库,只要更换 facade接口中的 driver 就可以. 我们做成了一个 Facade 接口,使用该接口,上例中的程序就可以更改如下: public class DBCompare { String sql = "SELECT * FROM
WHERE
= ?"; try { Mysql msql=new mysql(sql); prep.setString( 1, "
" ); rset = prep.executeQuery(); if( rset.next() ) { System.out.println( rset.getString( "
精易官方免费模块v3.60版
关于精易模块由来: 最初开始成立精易论坛时,并没有精易模块的,是自己在平常编写程序时,自己封装成一个模块, 方便自己调用,后应会员的要求,才正式以 精易论坛的前2个字,做为开头,发布了精易模块, 一直更新至今。同时,也在精易模块中加入了一些前辈开源的源码,封装到精易模块中,只是方便使用 精易模块的会员调用。 从精易模块发布至今,大约发布了20余个版本,模块中部分代码引用于前辈的,版权仍旧属于原作者, 本次开源,并不意味着精易模块不再更新,而是意味着精易模块会更好的更新。在往后的版本中, 精易模块会一直以开源的形式存在。我们会吸收对模块命令提出改善的会员的建议,修复并继续开源发布, 如果你有更好的改善建议,请到http://bbs.125.la/forum-195-1.html进行反馈 更新日志: 精易模块 V3.60 what’s new:(20140114) 1.完善“IP_转至16进制”“IP_16进制转IP”的备注 感谢 瞎胡闹 的提醒 2.修复“系统_格式化软盘”没有返回值的问题 感谢 阿蒙 的提醒 1.重写“线程_启动多参”并改名为“线程_启动多参_整数型” 修改详情请查看新命令 2.重写“线程_启动四参”并改名为“线程_启动多参_文本型” 修改详情请查看新命令 精易模块 V3.59 what’s new:(20140107) 1.删除“系统_启用本地连接”中的垃圾代码,提升速度,感谢 阿蒙 的提醒 2.删除“程序_禁止重复运行_浏览器”,一个不知道何时添加的未公开子程序(可能代码也有问题) 1.完善“程序_加入右键菜单”,增加可空参数 <显示名称>感谢 阿蒙 的提醒 2.完善“线程_取自线程句柄”,采用百度百科的说明作为备注 1.修复“线程_取自线程ID”,采用百度百科的说明作为备注 2.修复“编码_usc2到ansi”“编码_ansi到usc2” 暂时使用EX版代替原来的代码 感谢 478755018 的提醒 3.修复“网页_置Cookie1” 感谢 阿蒙 的提醒 精易模块 V3.58 what’s new:(20140101) 1.公开“进程_ID取模块”1个内部子程序 1.删除“进程_ID取模块文件名” ,因为该命令效率低下,还和“进程_ID取进程名”一样的效果 进程_ID取模块文件名 先枚举模块得到信息数组,再计次循环 当条件=PID 就返回模块文件名,实际上枚 举到的模块信息数组所有的PID都一样,得到的也就是第一次循环结果,也就是进程名 2.删除“进程_ID取模块路径“,删除理由和上述一样 1.修复“剪辑板_取文件”的状态错误BUG 感谢 网络注册会员 的提醒,感谢 农夫 的代码 精易模块 V3.57 what’s new:(20131230) 1.删除 "窗口_取位置和大小" 的错误备注部分,感谢 美丽兔兔 的提醒 2.删除“窗口_消毁” 这个重复命令,该命令和“窗口_关闭”是一样的 感谢 改名卡 的提醒 3.删除“网页_取文本” 增加2个速度更快的命令“网页_取文本_reg”和“网页_取文本_dom” 4.删除“内存_优化” 在程序最小化和后台时系统会自动调用该函数来节省内存 个人使用,容易出现各种各样的问题,详情:http://bbs.125.la/thread-13690978-1-1.html 感谢 红河 的提醒 ,感谢 落雪 的详细分析文章 ↑ 1.新增“网页_取文本_reg” 正则方式取文本 感谢 H婶 提供参考代码 2.新增“网页_取文本_dom” DOM方式取文本 感谢 微凉 提供参考代码 3.新增“网页_置浏览器UA” 设置当前程序中浏览器的UserAgent 感谢 阿蒙 提供代码 1.完善 “进制_十到二” 取消长度不足8位自动会补零,请根据需要补零 感谢 小爬虫 的提醒 2.完善 类_ODBC数据库,“读文本”参数二的备注,改为 索引从0开始 感谢 阿蒙 的提醒 3.完善 类_ODBC数据库 ,“连接Access”增加参数 <参数_Accdb> 感谢 阿蒙 的代码 精易模块 V3.56 what’s new:(20131224) 1.删除 “类_json”的命令 “取成员”,使用该命令会导致软件挂掉,原因未知 解决方案,直接取通用属性,无需二次解析,速度更快 原:json.取成员 (0).取通用属性 (“Id”) 新:json.取通用属性 (“[0].Id”) 2.完善“网页_取域名” 将原来的3.50的和3.51重写的加强版合并 3.修复“系统_取宽带线路 ()”因为新版“网页_取域名”带来的bug 感谢 4.重写“系统_修改IP地址和网关和子网掩码” 感谢 落雪 提供参考代码 5.增加“系统_修改DNS” 感谢 落雪 提供参考代码 精易模块 V3.55 what’s new:(20131223) 1.完善 “系统_显示关闭对话框”改名为 ““系统_显示关机对话框” 增加可空参数
修复 WIN7下堆栈错误,感谢 小爬虫 的提醒 注:内部DLL "_关机对话框"改名“_关机对话框_XP” ,新增内部DLL "_关机对话框_WIN" 2.修复“音乐_停止”“音乐_暂停”返回值问题 感谢 小爬虫 的提醒 3.修复“文本_取出中间文本”参数 是否不区分大小写 得到相反结果的问题 4.修复“系统_取宽带线路”命令 感谢 secondkill 的提醒 5.增加"音量_""音乐_"开头的命令参数和备注 感谢 小爬虫 的提醒 6.删除 DLL“CoCreateInstance”“CLSIDFromString”“MultiByteToWideChar_整数型” 7.删除 "A2W"“音量_设置”“音量_获取”“音量_增减”等命令 因为原命令调用特定的dll,只对win7以上系统有效,并会附加一个特殊功能支持支持库 8.重写“音量_静音” 增加“音量_增加”“音量_减少”,对声卡操作,XP,WIN系列均有效 精易模块 V3.54 what’s new:(20131221) 1.修复“系统_取宽带用户名密码”因调用 RtlMoveMemory_整数型 传址导致取到空的问题 1.增加“系统_取磁盘类型” 2.增加DLL“CoCreateInstance”“CLSIDFromString”“MultiByteToWideChar_整数型” 3.增加“音量_设置”“音量_获取”“音量_静音”“音量_增减”“A2W” 感谢 灰灰君 提供参考代码 1.修正 “系统_置音量”为"音量_置声道",修改“系统_取音量”为"音量_取声道" 1.完善“文件_改扩展名”的参数备注 感谢 落雪 的提醒 精易模块 V3.53 what’s new:(20131220) 1.完善 “编码_URL编码”对 参数 欲编码的文本 是否为空进行判断 2.完善 “普通填表.网页_验证码同步”的备注,删除残留的测试代码 3.完善 “网页_禁止允许gif图片”“网页_禁止允许显示图片” “网页_禁止允许背景声音”“网页_禁止允许点击声音” “网页_禁止允许播放网页视频”“网页_禁止允许一键操作” 的备注信息 1.增加网页_禁止允许一键操作() 参数 <禁止允许播放网页视频> 2.增加 DLL "RtlMoveMemory_整数型2",目前应用于 类_位图操作 的 “从屏幕创建” 1.删除 “网页_验证码读取” 该命令是封装的 网页_访问_对象,所以 请直接使用“网页_访问”或“网页_访问_对象”读取验证码,根据需要进行“图片_转换” 2.删除“网页_验证码同步” 该命令是用于填表同步验证码的,所以 请直接使用“普通填表.网页_验证码同步”,使用前请确保已经“普通填表.初始化” 1.修复 类_识图 的“找图_从句柄” 感谢会员 今朝 的提醒 和 果子 提供解决方案 精易模块 V3.52 what’s new:(20131217) 1.修复 “普通填表.多行文本框_写内容”感谢会员 wjlzhi 的提醒和提供解决方案 2.修复 “网页_取元素坐标”导致普通填表无法使用,感谢会员 残绵游戏 的提醒 3.修复“程序_重启”win8无效的问题 感谢会员 千年 的提醒和提供解决方案 1.完善“系统_以管理员模式创建进程”的备注 感谢会员 977945676 的提醒 2.完善“线程池1”,投递任务支持多个参数 感谢会员 小磊 进行代码优化 3.完善“文本_汇编_取随机数字” 还原为 “文本_取随机数字” 该命令并没有被取消掉,只是被改名了,因此,对于前维护者改名所造成的不便进行道歉 1.重写“线程_启动四参”命令的参数类型和位置 感谢会员 小磊 进行代码优化 2.重写“数组_排序”,速度提升256倍以上! 感谢会员 落雪 提供的参考代码 3.增加 DLL "lstrcmp" 目前应用于数组_排序 4.增加“数组_反转”,感谢会员 落雪 提供的参考代码 精易模块 V3.51 what’s new:(20131214) 1.增加“网页_访问_EX”增加超时功能,和修复win7下https代理无效问题 感谢 90后辉煌 提供参考代码,让我们期待已久的超时功能回归,也请大家帮忙测试 【网页_访问_EX 为测试版本,完善后,将会删除该命令,功能会添加到 网页_访问()】 2.增加 线程池类1“取状态” 感谢 我叫林舒书 提供参考代码 3.增加 普通填表类“网页_刷新”刷新当前页面 感谢 laiyihan 的建议 4.增加 “网页_取文本”去掉网页源码中的HTML标签,保留纯文本 1.删除 普通填表类“网页判断” 精简模块体积(这是一个没有用的空白子程序) 1.重写 “窗口_圆角化” ,参数一类型由窗口改为句柄,参数二和三可空 感谢 果子的提醒 2.重写“网页_取元素坐标”原命令虽然公开但无效,因为屏蔽了全部代码(代码本身残缺) 故本次属于重写代码,接收参数,改为一个,元素对象,代码简洁,需要更多功能请组合其他命令 3.重写“网页_取域名”增加可空参数<后缀点数量> 新版命令支持任何后缀域名 感谢 977945676 的提醒 1.完善 “网页_访问”和“ 网页_访问_对象”的参数<附加协议头>的备注 感谢 90后辉煌 的提醒 2.完善"系统_启用本地连接"备注 感谢 7141330054 的建议 3.完善“网页_访问” 删除设置代理时,无用的到文本,提高效率 感谢 果子 的提醒 4.完善“文本_取出中间文本”的参数<起始搜寻位置>的备注 感谢 落雪 的提醒 5.完善 DLL“_宽字符到双字节”和“_宽字符到双字节1”的备注 方便区分 1.修复“编码_Unicode到Utf8”,感谢 90后辉煌 的提醒 2.修复“系统_取宽带用户名密码”因 编码_Unicode到Utf8 有问题导致的问题 感谢 wjjucwj 的提醒 注:ADSL拨号类的<取宽带用户名密码>也是调用这个命令 代码个人审阅完成,发现代码和3.40版一样,对于3.40能取出,新版无法取出 如果不是上述已被修复的bug导致的,暂时无法解释。。。 因为该命令调用很多的子程序,涉及代码太多,维护时间耗时2天多,也因此拖慢了3.51的发布 故决定,先发布3.51版本,本命令可能隐藏的BUG,我们继续研究,看能否找出真正的问题所在 精易模块 V3.50 what’s new:(20131211) 1.修正 DLL "WideCharToMultiByte"最后一个参数为逻辑型 2.新增 DLL "StrToIntEx" 目前应用于usc2和ansi互转 EX加强版 3.新增 “编码_usc2到ansi_EX”“编码_ansi到usc2_EX” usc2和ansi互转 EX加强版 精易模块 V3.49 what’s new:(20131209) 1.删除 “网页_访问s ” 解决方案和删除原因:http://bbs.125.la/thread-13687724-1-1.html 2.完善 “网页_取外网IP” 网页_访问s 为 网页_访问 效率提升 3.增加“系统_屏蔽任务管理器1”“系统_恢复任务管理器1”的备注提示信息 4.增加 “时间_取现行时间戳” 一个可选参数,是否为 十位时间戳 感谢 H婶 的提醒 5.修复 “时间_转为GMT格式” 日期缩写错误 感谢 H婶 的提醒 精易模块 V3.48 what’s new:(20131208) 1 重写 “系统_是否已联网1” 检测速度更快,感谢 阿蒙 的提醒 1、修复 模块内部命令 ,感谢 农夫 的提醒 2、改善 “RAR_解压文件” 备注 ,感谢 阿蒙 的提醒 3. 改善 “文本_是否为汉字”增加正则方式判断 感谢 7141330054 的提醒 精易模块 V3.47 what’s new:(20131207) 1、增加“系统_关联右键菜单带图标”命令 2、增加“类_内存配置项”命令,感谢会员 微凉 提供的代码 3、增加“编码_U编码转换”命令 4、增加“音乐_播放”,“音乐_暂停”,“音乐_停止”命令 5、增加“文本_朗读”命令 1、改进“网页_验证码读取”添加“附加协议头”的参数,感谢会员 提百万 的建议 2、改进“系统_取MAC地址”命令,感谢会员 Mr.Yang 的源码 3、改进“ 网页_取Cookie”等命令的描述歧义,感谢会员 imdong 的提醒 1、修复“时间_取中国星期几”命令无效的BUG,感谢会员 易難為易 的建议 2、修复“目录_是否存在”,“目录_创建” 传入参数被参考,再次使用参数变量,引发路径错误 3、完善“目录_”“文件_”开头命令的参数描述,防止出现6中错误,数量众多,这里不一一列举 4、修复“易语言_取易语言安装目录” 感谢会员 7141330054 的提醒 精易模块 V3.46 what’s new:(20131101) 1、完善重写“文本_取出现次数”命令感谢会员 Mr.Yang 提供的代码 2、完善重写“系统_格式化软盘”命令感谢会员 Mr.Yang 提供的代码 3、完善“程序_删除自身”命令感谢会员 暂停使用 的提醒 4、完善“进程_ID取窗口句柄”命令感谢会员 维卷残恋 的提醒 5、完善“类_json”命令感谢会员 jixun66 提供的代码 1、修复“目录_是否存在”无效的问题,感谢会员 红颜似水 的提醒 1、添加“线程池1”类中的新“投递任务”命令,感谢会员 维卷残恋 提供的代码 精易模块 V3.45 what’s new:(20130901) 1、添加“系统_修改开机密码”命令,感谢会员 吾愛じ啃玉米ジ 提供的代码 2、添加“程序_写日志”命令 感谢会员 以后不抓了 的提醒 1、修复“网页_访问_对象”命令无效的BUG 2、修复API“ ZwQuerySystemInformation”的声明错误,感谢会员 天踏梦者 的提醒 3、修复“程序_加入右键菜单”的命名问题,感谢会员 阿蒙 的提醒 4、完善“窗口_取IE窗口句柄”命令备注,感谢会员 御风软件 的提醒 5、修复“系统_取CPU名称”、“系统_取CPU描述”发布版本崩溃的问题,感谢会员 淡淡烟草味 的提醒 6、修复“数组_输出”命令出错的问题,感谢会员 鬼璽 的提醒 精易模块 V3.44 what’s new:(20130802) 1、紧急修复“汇编_取随机数”命令所带来的一系列BUG 精易模块 V3.43 what’s new:(20130801) 1、增加“目录_强力清空”命令,完美清空大型目录 2、重写“目录_删除”命令,大幅度提高删除速度 3、“网页_访问_对象”命令,增加对象继承参数感谢会员 咏恒ぃ☆吣 的建议 4、增加“网页_修改”命令,感谢会员 晓易 提供的代码 5、增加“汇编_取随机数”命令 6、优化替换模块内部所有的“取随机数”命令为“汇编_取随机数” 7、“网页_访问_对象”命令,默认忽略Https证书错误感谢会员 tomorrow01 的建议 8、重写“文件_合并文件”命令 9、添加“类_json” 1、修复“服务器类”当启动时最后3个参数任意为空,会导致程序闪退的问题,感谢会员will的提醒 2、修复“文本_取右边”等一组,文本命令的参数描述错误,感谢会员 泪涟涟 的提醒 3、修复“置窗口位图”命令的一个参数错误,感谢会员will的提醒 精易模块 V3.42 what’s new:(20130601) 1、优化“网页_验证码同步”命令的备注,感谢会员御风软件提醒 1、修复“文本_取中间_批量”命令结果不正确的BUG,感谢会员淘宝网赚提供的命令 1、增加“进程_创建”命令 精易模块 V3.41 what’s new:(20130501) 1、优化“网页_验证码同步”命令,默认不自动转换格式,但保留转码参数 2、优化“批量_”开头命令的备注,感谢会员御风软件提醒 3、优化“文本_取随机范围数字”命令提高运行速度,感谢会员jixun66提供的代码 4、优化“校验_md5”相关命令添加16位的支持,感谢会员御风软件提醒 5、关闭“网页_访问”命令的自动转码功能 1、修复“剪辑版_置文件”和“剪辑版_取文件”命令,会导致程序崩溃的BUG 2、修复“转为十六进制”的函数错误,感谢会员狼牙提供的修正命令 3、修复“进程_名取句柄”无法取到句柄的BUG,感谢会员 奋斗的叶子 的提醒 精易模块 V3.4 what’s new:(20130401) 1、优化“网页_验证码同步”命令,自动转换图片格式,感谢会员御风软件提醒 2、优化去除重复命令“文本_取文本长度”,感谢会员御风软件提醒 3、优化“目录_是否存在”命令,返回结果更加精确,感谢会员雪落有声提供的命令 4、优化“文件_是否存在”命令,返回结果更加精确,感谢会员雪落有声提供的命令 5、优化“目录_定位”命令,写法更加简洁,感谢会员雪落有声提供的命令 6、优化网页事件常量的命名方式,统一为英文,,感谢会员御风软件建议 7、优化“系统_设置IE代理地址”命令添加是否立即更新设置参数 1、增加“系统_临时字体_安装”、卸载命令,感谢会员啸锐提供的命令 2、增加“文件_循环删除”命令 3、增加“窗口_循环关闭”命令 1、修复“文件_写出字节集”命令API模式无效的BUG,感谢会员5582139提供的命令 2、修复部分命令的备注问题 3、修复“字节集_到十六进制”无法解密的BUG,感谢会员linkasp的提醒 4、修复“进程_ID取窗口句柄”取出无效句柄的问题,感谢会员残绵游戏的提醒 精易模块 V3.33 what’s new:(20130301) 1、增加“网页_删除IE缓存文件”命令 2、增加“系统_判断
有无
摄像头”命令 1、修复“网页_访问s”无法使用的问题 2、修复“网页_取外网IP”失效的问题 3、修复“文本_取中间_批量”结果会叠加的问题,感谢会员尔康的提醒 4、修复“安装键盘钩子”命令的一个无效参数,感谢会员阿柳的提醒 5、修复“窗口_热键卸载所有”命令会内存出错的问题,感谢会员果子的提醒 6、修复“易语言_到系统右键中”的数据类型错误,感谢会员gotomiss的提醒 7、修复“易语言_加快捷方式到IE浏览器”的数据类型错误,感谢会员gotomiss的提醒 8、修复“外部编辑框_置四边距”的数据类型错误,感谢会员gotomiss的提醒 9、修复“外部列表框_鼠标坐标取项目索引”的数据类型错误,感谢会员gotomiss的提醒 10、修复“文本_取汉字机内码”的数据类型错误,感谢会员gotomiss的提醒 11、修复“文本_取汉字机内码2”的数据类型错误,感谢会员gotomiss的提醒 12、修复“客户端类_发送并取回1”的数据类型错误,感谢会员gotomiss的提醒 1、优化“网页_访问”相关命令的备注,感谢会员御风软件提醒 2、优化“网页_访问”相关命令的自动转码功能,支持XML页面 3、优化“文本_取中间_批量_正则方式”支持换行符 精易模块 V3.32 what’s new:(20130207) 1、修正“文本_删除指定文件行”命令,无法删除最后一行的BUG,感谢会员陌笔圣手提醒 2、修正“内存_优化”命令的优化间隔无法调整的问题,感谢会员御风软件提醒 3、优化“cmd_移动并运行”防止文件路径带空格执行失败,感谢会员jixun66提醒 4、优化“窗口_枚举”命令,无法枚举隐藏窗口的问题,感谢会员微凉提醒 5、优化“类_线程池1”去除部分无效的命令,感谢会员微凉提醒 6、修正“网页_验证码同步”命令会清空剪辑板的问题,感谢会员于哈三轮车提醒 7、优化“网页_访问”的自动解码能力,感谢会员御风软件建议 8、增加“数组_去重复1”可去除带有特殊字符的数组,但效率较慢,感谢会员zengxming提醒 9、优化“系统_检测host”,感谢会员jixun66提醒 10、修正“易语言_加快捷方式到IE浏览器”第二个参数无效的BUG,感谢会员jixun66提醒 11、修正“置入汇编代码”无效的问题,感谢会员jixun66提醒 12、添加“网页_访问s”命令,使用WinInet的方式访问网页,懒人专用自动返回文本 13、添加“系统_是否64位操作系统”命令 14、修复“程序_是否被调试”,返回结果是相反的问题,感谢会员yaoying68的提醒 15、修复“程序_禁止重复运行”部分参数无效的问题,感谢会员yaoying68的提醒 16、修复“系统_取星座”命令的错别字,感谢会员xzlch的提醒 17、添加“窗口_控件调整_创建”和销毁,感谢会员啸锐提供 18、修复“取指针地址_整数型”的返回结果不准确的问题,感谢会员 神一样的男人!提醒 精易模块 V3.31 what’s new:(20130126) 1、修正“内存.读文本”命令,会崩溃的问题,感谢会员 陌笔圣手提醒 2、修正“网页_访问”命令,代理IP可能失效的BUG 3、添加“编码_编码转换对象”命令,使用对象转码更加稳定 4、添加“文件_循环删除文件”命令 5、优化“cmd_删除自身”命令,只读文件也可删除 6、添加“系统_以管理员模式创建进程”命令 7、添加“系统_注册组件”、“系统_卸载组件 ()”命令,用于注册和卸载dll组件 8、添加“写注册项Ex”命令,用于写入带有斜杠的注册项 9、添加“窗口_模糊遍历窗口”命令,用于模糊枚举窗口 10、添加“窗口_取进程路径”命令 11、添加“系统_检测host”命令,用于检测host是否被修改 12、添加“文件_枚举1”命令,用于高速枚举文件 13、添加“窗口_取字符串宽度”命令 14、添加“窗口_按类名枚举”命令 15、添加“窗口_强制显示”命令 16、优化“系统_取硬盘特征字”的运行速度 精易模块 V3.3 what’s new:(20130119) 1、重写“网页_访问”命令,优化参数排序,增加智能解码功能,兼容黑月 2、重写“网页_访问_对象”,优化参数排序,增加自动处理Cookie功能 3、重写“网页_JS格式化”,采用了
国外
优秀的开源库,准确无误 4、修正“清除Cookie”命令无法彻底清除部分Cookie的问题 5、增加“文本_去重复文本”命令 6、修正“网页_取端口”,遇到ssl的网站,会返回错误的问题 7、修正“文件_定位”,在某些情况下,会失效的BUG 8、优化“线程_等待”命令的,超时参数,加入无限等待 9、增加“类_线程池1”,更加灵活的线程池模型 10、增加“系统_修改MAC地址”可修改本机mac地址,重启后生效 11、增加“系统_删除MAC地址”删除注册表内的mac地址 12、优化“FTP_”程序集,改为类模块,更加灵活调用 13、修正“网页_取Cookie”命令无法取出部分Cookie的BUG 14、重写“网页_Cookie合并更新”命令优化代码结构 15、修复“网页_屏蔽网页复制提示”在某些情况下无法立即生效的BUG
精易模块[源码] V5.15
精易模块 V5.15 what’s new:(2015XXXX) 1、新增“线程_枚举”枚举指定进程ID中所有线程列表,成功返回线程数量,失败返回零。 2、删除“文件_取图标”与"文件_取图标句柄"功能重复。 3、优化“系统_创建桌面快捷方式”流程代码,感谢易友[ds9660]反馈。 4、修正“IP_10进制转IP”与“IP_16进制转IP”命令反向的问题,感谢易友[@humanbean ]反馈。 5、改善“网页_访问”死循环代码,感谢易友[@67564226]反馈。 6、优化“文本_取随机数字”精简代码,提高执行效率,感谢易友[ds9660]反馈。 7、修正“普通填表->链接_点击”无法在本窗口中打开的BUG,感谢易友[@zhuan888]反馈。 8、修正“时间_时间戳转文本”代码不严谨出现数组错误的BUG,感谢易友[455275321]反馈。 MD5:3E66BFA15806DEAFBCF11806EB99CC11 精易模块 V5.13 what’s new:(20150202) 1、修正“编码_ansi到usc2”当末尾出现10或13字符时出错的BUG,感谢易友【@rmcs】反馈。 2、改名“文件_搜索1”改为“文件_搜索_深度”并修正备注及深度问题,感谢易友【@小爬虫】反馈。 3、改善“时间_取现行时间戳”优化代码,提高执行效率,感谢易友【@小爬虫】反馈。 4、改善“文本_逐字分割”改善个别字符分割错误的情况,代码由易友【@百弊若愚】提供。 5、改善“窗口_激活,窗口_置控件焦点,窗口_是否在最顶端”有时失败的问题,由易友【@wjt741106】提供代码。 6、新建“外部组合框_关闭列表”关闭已经弹出的下拉列表。 7、修正“文件_下载”不能下载的BUG,感谢易友【@新手来学易】反馈。 8、删除“文本_到小写m”删除该汇编命令,出现不兼容。 9、修正“系统_取MAC地址”未初始化COM不支持线程的BUG,感谢易友【@ds9660】反馈。 10、改善“文本_粘贴”参数可空也处理的问题,感谢易友【@ds9660】反馈。 11、新增“调用COM方法”COM编程,动态调用COM方法。 12、新增“时间_WMI时间转日期”把WMI数据时间转换成日期时间型,如“20140926001639.000000+480”。 13、修正“类_系统信息”重写该类,在部分系统下不兼容及闪退问题,感谢易友【@longfeng0008】反馈。 14、改善“程序_禁止重复运行”当标识为空时,默认为自身路径,代码由易友【@wjt741106】提供。 15、改善“普通填表类-就绪判断_源码关键字”添加区分大小写参数。 MD5: 3C01272B9E2DAFDEF08D20C191E3C265 精易模块 V5.12 what’s new:(20150108) 1、删除“IP_取外网IP”与 网页_取外网IP()功能重复命令,感谢易友【67564226】反馈。 2、修正“正则元字符转义”子程序,对应个别替换符错误的BUG,感谢易友【@墨雨千寻】反馈。 3、改善“进程_枚举”处理效率,由易友【@御风软件】提供方案。 4、新增“窗口_是否被遮挡”,判断一个窗口是否被置顶窗口遮挡,代码由易友【@shituo】提供。 5、改善“汇编类->置入汇编代码”增添一个参数是否保留以前代码。感谢易友【@无名侠】反馈。 6、修正“文本_加密”返回文本传递给“文本_解密”后长度不正确BUG,改为返回字节集。 7、改善“外部编辑框_取密码框文本”当不是密码输入属性时不做任何处理,感谢易友【@wjt741106】反馈。 8、恢复“文本_加密”与“文本_解密”,把新版加解密改名为"文本_加密c"与“文本_解密c”。 MD5:5831C531ABD80ADD0EFE10172AEED71F 精易模块 V5.11 what’s new:(20150101) 1、修复“文本_取中间_批量”获取大数据崩溃的BUG,改为循环方式获取,大数据不建议用此命令(吃CPU)。 2、添加“文本_朗读”是否使用百度语音引擎参数,为空时默认使用微软语音引擎。 3、改善“文本_加密”与“文本_解密”去除原来算法,改用微软基础加解密API。 4、修复“网页_打印”,无效的BUG,感谢易友【@nameyypx】反馈。 5、修复“时间_取身份证判断”出现17位身份证的BUG,感谢易友【@求其改个名】反馈。 6、新增“类_托盘”类模块,源码来自彗星托盘图标模块,感谢源作者。【带实例】。 MD5:F4ECA009078166001A6577C1E502D7E6 精易模块 V5.01 what’s new:(20141201) 1、新增“网页_取网络文件名”获取无后缀的下载地址文件名,感谢易友【@灵魂出窍808】反馈。 2、新增“网页_是否为网页”判断地址是否为URL路径。 3、删除“窗口_取进程路径”命令,与窗口_句柄取进程路径() 功能相同。 4、删除“线程_强制结束”命令,与 线程_销毁() 功能相同。 5、修改“窗口_热键注册”参数备注错误,感谢易友【灵魂出窍808】反馈。 6、优化“时间_取中国星期几”命令,感谢易友【灵魂出窍808】提议。 7、新增“网页_取网络文件尺寸”获取网络文件尺寸,失败返回零。 8、新增“数组_取次数”,取指定数组成员出现相同数量,源码由易友【C盘是头猪】提供。 9、修正“进程_ID取进程名”在64位系统不能获取名称的BUG,感谢易友【慕寒夜】反馈。 10、新增“进程_取线程数”通过进程ID或进程名获取指定进程线程数。 MD5:89AECEA5D0E513E7D586EA8396AD17CC 精易模块 V5.0 what’s new:(20141121) 1、修正“类_通用对话框”会改变当前目录的BUG。感谢易友【scqandcy】反馈。 2、修正“进制_十到十六”不支持长整数的BUG。 3、恢复3.75版的“时间_格林威治转北京”命令,设置参数可将13位时间戳转换成北京时间。 4、改善“类_通用对话框”打开与保存对话框拥有易全部属性,感谢易友【詠不言敗】提议。 5、新增“类_通用对话框->选择字体”成功返回字体相关信息,调用格式如; 编辑框.字体=选择字体() 6、修复“网页_创建快捷方式”在win7以上系统不能自定义图标的BUG,感谢易友【蓝风】反馈。 7、修复“进制_十六到十”不支持长整数的BUG。 8、新增“类_时钟”,类似易语言自带时钟控件,可设置时钟周期。 MD5:E31C357200B0CA8994D373FD7298CE95 精易模块 V3.88 what’s new:(20141101) 1、为“网页_访问”和“网页_访问_对象”增加了HEAD方法。 2、修正“目录_复制”在线程未初始化,导致对象不能创建的问题,感谢易友【@pp25729391】反馈。 3、修正“类_环境存取->读环境变量”不能读取当前进程环境变量的BUG,感谢易友【@詠不言敗】反馈。 4、修正“文本_逐字分割”返回数组不清除会保留上次内容的问题,感谢易友【@JadeジYu】反馈。 5、新增“文本_是否为双字节字符”与OPenGL支持库->文字轮廓 中的 是否为双字节字符功能相同。 6、新增“文本_是否为字母”,判断指定文本是否为字母。 7、新增“目录_取桌面目录”获取当前系统桌面目录。 MD5:6592799FF42CE9AFDF122C47642C9DEE 精易模块 V3.87 what’s new:(20141021) 1、新增“效验_取md5_进度”,进度获取文件MD5值,支持大文件,采纳易友【@易模块】建议。 2、改善“程序_禁止重复运行”添加是否显示已运行的参数,此命令由易友【@小爬虫】改进。 3、修正“网页_取网址引用”不支持Https和mms地址协议问题,感谢易友【@小爬虫】反馈。 4、修正“文件_改扩展名”当后缀名错误情况下会删除原文件的BUG。 5、新增“进程_取同名ID”取相同进程ID,成功返回相同进程ID数量,失败返回-1。 6、修正“键盘_单击”当参数2为空时,按下未放开的问题,感谢易友【seadty】反馈。 7、删除“文件_取扩展名1”命令。 8、修正“编码_Utf8到Unicode”频繁操作导致内存泄漏的BUG,感谢易友【◆野蛮vE儿】反馈。 9、修正“目录_是否存在”,当存在无反缀文件时返回真的BUG,感谢易友【@飞灵】反馈。 10、新增“系统_信息框Ex”定时信息框,超时后自动销毁。 效验MD5:A8EA46EB0FA7395F9355E37286B32742 精易模块 V3.86 what’s new:(20141001) 1、修正“进程_名取句柄”部分机器返回零的BUG。感谢易友【liu307921917】反馈。 2、修改“注册表操作Ex”中的写入函数,现在支持:#REG_SZ;#REG_EXPAND_SZ;#REG_MULTI_SZ;#REG_BINARY#REG_DWORD;#REG_DWORD_BIG_ENDIAN;#REG_QWORD类型的写入。 将原来的函数分割为:“写入键值Ex_数值”和“写入键值Ex_文本”。 3、修正“注册表操作Ex”不支持“#HKEY_CURRENT_USER”的BUG,感谢易友【pp25729391】反馈并帮助测试。 4、新增“注册表操作Ex->写QWORD_64值”写入64位长整数值,成功返回真,失败返回假.源码由@pp25729391提供。 5、修正“类_APIHOOK->取地址”当安装时不填后缀,而取地址填写后无法获取已安装地址BUG,感谢易友【@ChongZi】反馈。 6、修正“窗口_枚举所有子窗口”当过滤类名输入空符号或一段空文本后无法枚举的BUG,感谢易友【vibu】反馈. 7、改名“编码_Ansi到十进制_文本”源作者重新改名为“编码_Ansi到ASCII_文本型”。 8、字节集_还原,新版算法问题,已恢复老版本命令。 9、新增“窗口_限制尺寸”,限制窗口缩放最小尺寸与最大尺寸,超出则无法缩放。采纳易友【@kisl7979】建议。 10、新增“窗口_取消尺寸限制”,取消窗口尺寸限制。 效验MD5:51A332F5AB071957FEF39209FD240CB6 精易模块 V3.85 what’s new:(20140916) 1、改善“文件_取文件名”与“目录_取尾部目录名或文件名”取出路后带斜杠问题,感谢论坛易友【雷雷】反馈。 2、改善“文本_取行数”载入大数据程序处理效率问题,感谢某位易友反馈。 3、新增“编码_Ansi到十进制_文本型”此代码由易友【菜虫】提供,将Ansi码转换为十进制,如:将“精易论坛”转换后将返回格式如:“뺫틗싛첳”。 4、新增“目录_取运行目录”取当前被执行的易程序文件所处的目录。同易支持库功能一样。 5、新增“取对象指针”取对象指针。相当于特殊功能支持库->取变量数据地址。 6、新增“取变体型指针”取对象指针。相当于特殊功能支持库->取变量数据地址。 7、新增“取整数型指针”取整数指针。相当于特殊功能支持库->取变量数据地址。 8、新增“类_环境存取”类模块,可以新建、编辑、删除当前用户或系统环境变量,无需重启立刻生效。 精易模块 V3.83 what’s new:(20140901) 1、改善“网页_访问”、“网页_访问_对象”命令,添加默认协议头“Referer” 2、修复校正API正确申明后,“类_内存”不能使用的BUG。 3、改善“普通填表->单选框_取状态”参数2加入可空标志。 4、改善“字节集_还原”优化子程序处理速度,感谢易友【落款hMZ】提供代码。 5、修改“窗口_热键注册”API正确申明,并把第五个参数【热键标识文本】改为热键ID。 6、新增“类_任务栏”可以显示隐藏任何第三方窗口图标,相当于易中的(不在任务栏显示),带【实例】演示。 7、新增“类_线程池1”中的“等待”方法。 8、修复“编码_Utf8到Ansi“分配内存失败BUG,感谢易友【仁鹰】反馈。 9、改善“网页_访问”中最后一个参数(代理地址)为“”符号时无法访问网页,感谢易友【z00544】反馈。 精易模块 V3.82 what’s new:(20140816) 1、修复“时间_取现行时间戳”有时不能正常返回13位时间戳,当毫秒为一位时,返回结果为11位。感谢易友【happyboy】反馈。 2、修复上个版本校正API正确申明后“普通填表”类返回不能初始化BUG。 3、新增“类回调_取类地址”类回调(带实例)源码来自东灿的ECallBack。 4、新增“类回调_释放回调”释放回调子程序地址。 5、新增“系统_调用帮助”调用系统帮助文档。 精易模块 V3.81 what’s new:(20140811) 1、修复“输入法类”绝对路径不正确BUG。 2、改善“类_内存”读写内存失败返回不正确值问题。感谢易友【stft】建议。 3,网页访问_对象()增加一个参数,用来保存网页返回状态代码。 4、改善(字节集_取左边|取右边|取中间)与未公开子程序重复,改名为 字节集_寻找取左|字节集_寻找取右|字节集_寻找取中,并修正BUG。 5、公开子程序(字节集_到文本|字节集_到整数|字节集_取左边|字节集_取右边|字节集_取空白|字节集_取长度|字节集_取中间|字节集_替换|字节集_寻找|字节集_取指针)模块原有命令。 6、修正“文本_取中间_批量”当参数限定长度不要时,不能继续向下执行的BUG,感谢易友【半个灵魂づ留着】代码。 7、删除“文本_取中间_批量1”命令。 8、修复“注册表操作Ex->写入键值Ex”创建项,重启丢失的BUG,感谢易友【pp25729391】反馈。 9、修复“文本_转拼音”传入的参数变成全角的BUG,感谢易友【reloking】反馈。 10、修复“编码_Utf8到Unicode”频繁操作导致程序崩溃BUG,感谢易友【diablozxl】反馈。 11、修复“线程_等待”命令注释反的问题,返回真表示线程结束,假表示已超时。感谢易友【tone】反馈。 12、修复“类_识图->找图_从字节集”命令,载入大文件直接奔溃的BUG,感谢易友【tone】反馈。 精易模块 V3.80 what’s new:(20140801) 1、新增“进程_取优先级”,特殊进程需要特权,检索指定的进程的优先级。返回值:0=最高,1=高于标准,2=实时,3=标准,4=低于标准,5=低,返回-1表示无权限访问进程。 2、新增“进程_置优先级”,特殊进程需要特权,设置一个进程的优先级别,成功返回真,失败返回假。 3、新增“窗口_取激活句柄”,获取当前系统激活的窗口句柄。 4、新增“类_通用对话框”支持大窗口样式与易自带样式,2种选择。用法和易一样,完全可以替代。 5、新增“进程_取句柄数”,功能与XP系统下任务管理器一样。 6、新增“进程_取IO读取计数”,功能与XP系统下任务管理器一样。 7、新增“进程_取IO读取字节”,功能与XP系统下任务管理器一样。 8、新增“进程_取IO其它计数”,功能与XP系统下任务管理器一样。 9、新增“进程_取IO其它字节”,功能与XP系统下任务管理器一样。 10、新增“进程_取IO写入计数”,功能与XP系统下任务管理器一样。 11、新增“进程_取IO写入字节”,功能与XP系统下任务管理器一样。 12、改善“输入法类->激活”向指定窗口激活安装的输入法,感谢易友【大胆点】提供代码。 13、修复“图片_转换”,修复导致程序崩溃BUG,源码来源【凌晨孤星】同步。 精易模块 V3.78 what’s new:(20140715) 1、修复“进程_ID是否有效”在时钟循环获取下进程句柄不断飙升的BUG。 2、修复“ADSL拨号类 ->_取本机IP”,在XP系统下静态编译获取不到的BUG,感谢易友【islandandfriend】反馈。 3、新增“系统_取网络主机名”,取当前网络上登记的主机名,详细请参考CMD命令ipconfig /all 中的Windows IP 配置。 4、新增“系统_取网络主DNS后缀”,详细请参考CMD命令ipconfig /all 中的Windows IP 配置。 5、新增“系统_取网络节点类型”,详细请参考CMD命令ipconfig /all 中的Windows IP 配置。 6、新增“系统_IP路由是否启用”,详细请参考CMD命令ipconfig /all 中的Windows IP 配置。 7、新增“系统_WINS代理是否启用”,详细请参考CMD命令ipconfig /all 中的Windows IP 配置。 8、修改“目录_取尾部目录名或文件名”使用标准windows函数; 9、修改“文件_创建”成功返回1,失败返回错误代码,同时如果函数执行失败,不会出现文件残留; 10、修改“文件_打开”失败返回错误代码 11、修改“线程_销毁”与“线程_强制结束”存在命名歧义的问题,感谢易友【Mr.Yang】提议。 12、新增“系统_取IE版本”获取IE游览器版本,失败返回空文本。 13、修复“文件_取类型”原数据结构申明不正确导致偏移出错取出不正确值BUG,感谢易友【无\月】提醒。 精易模块 V3.77 what’s new:(20140701) 1、对已知命令备注存在歧义或错误的备注给予修正。 2、修复“线程_强制退出”命令,不能立即退出问题。 3、改善“CreateEvent”公开的API未提供返回值的问题,感谢易友【glgg】提醒。 4、改善“系统_屏蔽任务管理器1”在win7下无效问题。 5、修复“编码_usc2到ansi_EX”编码里包含英文字母会编码失败问题,感谢易友【7780000】提醒。 6、修复“文本_是否为汉字”正则方式正则语句判断不够准确的问题,感谢易友【精易⌒小傷】提醒。 7、新增“文件_句柄取路径”根据文件句柄获取文件所在路径,失败返回空文本。 8、新增“文件_取属性”与易语言中 取文件属性 ()功能相同。 9、新增“文件_取类型”获取文件类型,如.TXT文件,则返回“文本文档”,失败则返回空。 10、新增“文件_取图标”成功返回图标句柄,失败返回零。 精易模块 V3.76 what’s new:(20140620) 1、新增“窗口_是否激活”命令,判断指定窗口是否激活状态,是则返回真,否则返回假。 2、新增“窗口_取矩形”命令,取指定窗口矩形信息。 3、新增“窗口_取客户区矩形”命令,取指定窗口内客户区矩形信息。 4、新增“窗口_取样式”命令,取指定窗口样式。 5、新增“窗口_取扩展样式”命令,取指定窗口扩展样式。 6、新增“窗口_取边框宽度”命令,取指定窗口边框宽度。 7、新增“窗口_取边框高度”命令,取指定窗口边框高度。 8、修复“外部超级列表框->选择表项”,无法选中问题,感谢易友【fanghg】提醒。 9、新增“文本_到小写m”改善传递变量值改变的问题,感谢易友【我爱钱钱钱】提醒。 10、修复“文本_取右边”无法取到数据问题,感谢易友【我爱钱钱钱】提醒。 11、修复“目录_取大小”取上G目录返回负数问题,感谢易友【de01】提醒。 12、修复“目录_创建”当路径出现多个“\\”会删除整个文件夹的问题,感谢易友【淮南老三】提醒。 13、改善“外部超级列表框->取标题”由原来默认缓冲尺寸1048576字节,改为260字节。 14、修复“文件_枚举1”当参数文件夹路径为真,回调子程序出现二次相同路径,修改后将删除‘文件夹路径’参数。 15、重写“文件_定位”,explorer命令行定位会产生多余的explorer进程,用API代码此命令,新增编辑模式参数。 16、重写“目录_定位”,命令与'文件_定位'相同,采纳易友【御风软件】意见。 精易模块 V3.75 what’s new:(20140609) 1、改善“时间_北京转格林威治、时间_格林威治转北京”命令,删除无用参数,简写代码。 2、改善“系统_置屏幕分辨率”参数【设置模式】可为空标志,默认为永久修改分辨率。 3、修复“窗口_置窗口化”中调用[系统_置屏幕分辨率]中不最后参数不可空BUG,默认修改为临时分辩率,感谢易友【訫誶】的提醒。 4、改善“窗口_模糊遍历窗口”不能区别关键词大小写问题,感谢易友【yckwan】提醒。 5、改善“窗口_取句柄_模糊”不能区别关键词大小写问题,感谢易友【yckwan】提醒。 6、修复“文本_取右边”中起始寻找位置参数无效问题,感谢易友【御风じ撒泡尿ジ】大神提醒。 7、修复“字节集_取右边”中起始位置参数无效问题,感谢【Hoibben】提醒。 8、新增“目录_枚举子目录1”在原有命令上添加向下枚举参数,感谢易友【wjt741106】提供代码。 9、新增“文本_指针到文本A”,把ansi指针转换为文本。 10、新增“文本_指针到文本W”,把unicode指针转换为ansi文本。 11、新增“系统_取时区”与 应用接口支持库->系统处理 中时区一样。 12、新增“系统_取货币符号”,与 应用接口支持库->系统处理 【货币符号】一样。 13、新增“系统_取日期格式”,与 应用接口支持库->系统处理 【日期格式】一样。 14、新增“系统_取时间格式”,与 应用接口支持库->系统处理 【时间格式】一样。 15、新增“类_CPU信息”用WMI接口获取CPU相关核心数、占用率、名称等,注意;频繁获取程序可能会崩溃。 16、新增“类_系统信息”,用Wmi接品获取系统相关信息,如;名称、版本、物理内存等。 精易模块 V3.73 what’s new:(20140601) 1、改善“系统_运行死慢”,添加确认参数,防止误操作,感谢易友【詠不言敗】的建议。 2、改善“程序_加入右键菜单”命令添加右键位置,并增加删除参数。 3、改善“系统_关联右键菜单带图标”命令,增加一个删除参数,填真为删除指定菜单名称。 4、改善“程序_加入IE工具栏”命令,可自定义程序名称,路径,图标,以及增加删除参数。 5、修复“线程_销毁”,句柄数增加及线程达到2000以上返回0的问题,感谢易友【YJF】的提醒。 6、修复“类_系统服务->取程序路径”,修正在XP系统下循环获取分配8字节内存失败问题,感谢易友【my6036324】提醒。 7、填补V3.72中[文件_搜索1]命令丢失。 8、新增“线程_强制结束”命令,强制结束正在运行的线程。 9、新增“类_系统域”类模块,对windows系统域支持,加入与取消需重启后生效。 10、新增“系统_处理事件1”命令,从消息队列中获取消息然后移除消息并派发出去,达到与易自带的"处理事件"同样功能。 11、新增“类_系统还原”,创建系统还原点与删除系统还原点。 12、新增“系统_取字体名”,获取字体名称,如“simsun.ttc”显示字体名称为“宋体”。 13、新增“系统_取CPU占用率”命令,取当前CPU占用率。成功返回CPU占用率;失败返回-1。支持XP,2003及win7 64位系统。 14、新增“系统_关电源”命令,命令未公开API实现快速关机,感谢易友【暂停使用】提供其实语言源代码。 15、新增“窗口_闪动Ex”命令,闪烁指定窗口,可选闪烁标题、任务栏、次数、速度,成功返回真,失败返回假。 16、删除“易语言_到系统右键中、易语言_加入IE工具栏、易语言_加到系统右键”,此类命令有功能重复,整合到“程序_加入IE工具栏、程序_加入右键菜单”命令中。 精易模块 V3.72 what’s new:(20140511) 1、改善“网页_访问”,“网页_访问_对象”中的协议头补全机制,感谢易友 yaoying68 提醒。 2、去除“网页_访问”命令,中的超时参数,超时请自行用线程控制,感谢易友 yaoying68 建议。 3、新增“文件_搜索1”命令,简化程序参数,改用子程序回调显示搜索结果,添加目录深度参数,参照雨林木风Ghost搜索功能,提升搜索效率。 4、修复“文件_搜索”命令,修正当标签为空时关键词无效分支,同时修改列表框为必要参数(原参数可为空,无任何实际作用),感谢易友 biao197 提醒。 5、修复“系统_设置IE代理地址”设置ADSL代理失败问题,感谢易友“剩下我de孩子气”提醒。 6、修复“程序_取命令行”命令,替换常规的分割方式分割不正确问题,改用API数组方式获取,感谢易友“鲁凯啸”做出的努力。 7、改善“正则表达式类”对线程的支持,感谢易友“长翅膀的猫”的提醒。 8、新增“文件_取尺寸1”命令,利用易自带“取文件尺寸”命令支持获取超过2G大文件尺寸。 9、恢复所有类中的“线程_初始化COM库”和“线程_取消COM库” 10、修复“网页_取外网IP”命令,失效的问题,感谢易友 剩下我de孩子气 的提醒 精易模块 V3.71 what’s new:(20140501) 1、修复“程序_取命令行()”命令无法获取到命令行参数的问题,感谢易友 yangcongwen 提醒。 2、改善“网页_访问”,“网页_访问_对象”中的协议头补全机制 3、改善“网页_访问”命令添加超时参数(Win7需测试) 4、改善“网页_访问”,“网页_访问_对象”中的Cookies获取机制,感谢“淮南老三”等易友的提醒 5、改善“网页_访问_对象”命令中的,默认初始COM操作,避免重复初始化导致的错误(同类对象命令中的默认初始COM操作已经全部去除,请留意命令注解) 6、去除“网页_访问Ex”命令。 7、去除“协议头_网页”常量。 8、去除“文本_汉字转拼音”命令,此命令功能与“文本_转拼音”一样,但效率不如“文本_转拼音”,且不保留标点符号 9、改善“文本_取空白文本、字节集_取空白字节集”命令,汇编方式获取,提高执行效率。 10、改善“图片_加水印”命令,注:此命令还需要对不同的图片以及透明色测试。 11、改善“文件_取配置节名数组、文件_取配置项名数组”命令,解决项目或节名中包含一些特殊符号时获取有误的问题,感谢易友 淮南老三 提醒。 12、新增"类_配置项",全API操作。 13、新增“时间_转为GMT格式1”,将日期时间型数据转换为GMT格式,感谢会员shituo提供代码。 14、新增“时间_转为GMT格式2”。将日期时间型数据转换为GMT格式 15、新增“时间_GMT转为时间”,将GMT文本时间 转换成日期时间型,感谢会员shituo提供代码。 16、新增“时间_GMT转为时间1”将GMT文本时间 转换成日期时间型, 17、新增“网页_取编码”,获取网页编码信息。 精易模块 V3.70 what’s new:(20140401) 1、新增“注册表操作类Ex”部分win7用户操作不了注册表项值可试试本类中的命令。感谢 【落雪】分享。 2、新增“窗口_是否在最顶端_句柄()”提供一个要判断的窗口句柄进行判断是否在最顶端,感谢易友 牛X的孩子 分享。 3、新增“窗口_是否禁止()”判断指定窗口句柄是否被禁止,禁止返回真,没有禁止返回假。 4、新增“网页_跳转1()”命令,用于针对百度等一些特殊处理过的网站无法跳转的问题,感谢【微凉】分享。 5、改善“窗口_句柄取进程路径()”命令,精简代码,感谢易友 牛X的孩子 分享。 6、改善“汇编_取随机数()”命令,如果最小数大于最大数程序会关闭的情况,感谢易友 wzjcyy 提醒。 7、改善“系统_置屏幕分辨率()”命令,增加设置分辨率后可一直使用,具体请查看参数,感谢 biao197 提醒。 8、改善“窗口_取光标位置()”命令返回值问题,具体使用请搜索命令使用例题,感谢易友 无ye 提醒。 9、改善“就绪判断_文本关键字、文本关键字”命令在使用中,窗口被关闭后还一直在执行的问题,感谢易友 我爱钱钱钱 提醒。 10、改善“图片_转换()”命令,如果传入空字节集数据会导致程序失败的问题,感谢易友 jfaumt 提醒。 11、改善“时间_时间戳转文本,时间_取随机时间戳,时间_取现行时间戳”多线程操作会内存增加的问题,感谢易友 ljm2010 提醒。 12、去除“服务端类、客户端类”开头的命令,原因是远程服务支持库中的命令比此些命令更好。调用的API以及常量未去除。 13、改善“IP_10进制转IP、IP_转至10进制”互转的问题。感谢易友 yf5486yf 提醒,感谢【落雪】完善。 14、修复“文件拖放类”中注册超级列表框控件导致程序关闭的问题,感谢易友 h1601zl 提醒,感谢【落雪】完善。 15、修复“类_系统服务”无法操作系统服务的问题,感谢易友 fanghg 提醒和 【落雪】的改进。 精易模块 V3.69 what’s new:(20140312) 1.修复 “正则表达式类” 操作超过512kb文本时崩溃问题 2.修复 “类_脚本组件” 类方法“执行” 操作超过512kbJS文本时崩溃问题 3.修复 “普通填表” 类方法“网页_取文本” 和 “网页_取源码” "就绪判断_文本关键字""就绪判断_源码关键字"命令,返回超过512kb网页文本时崩溃问题 1.恢复“编码_usc2到ansi”和“编码_ansi到usc2”为原来的代码,原来代码能直接转换包含编码的文本,但是在特殊情况会返回空,甚至导致程序崩溃 1.恢复3.67版本修改的命令为原来的,折磨死我这小菜鸟了,这次是真的不玩了,真的是最后一个版本了,3.6.9 by 御风软件 精易模块 V3.68 what’s new:(20140310) 1.修复 “编码_usc2到ansi ”不能把文本型转换到字节集错误 精易模块 V3.67 what’s new:(20140309) 1.删除 "MultiByteToWideChar_byte" “WideCharToMultiByte_byte” 多余API 1.修复全部调用API"MultiByteToWideChar","WideCharToMultiByte" 参数三默认-1自动取长度,导致的软件崩溃问题 感谢 Bints 的提醒 精易模块 V3.66 what’s new:(20140309) 1.修复 “文本_取中间_批量_正则方式”并且优化代码 感谢 地球孤鹰 的提醒 1.修复“文本_取随机范围数字”会取出大于结束数的问题的 精易模块 V3.65 what’s new:(20140303) 1.改名“窗口_取IE窗口句柄”为“窗口_取IE浏览框句柄” 参数“窗口句柄”改名为“IEFrame句柄”,完善命令说明和参数备注 感谢 小爬虫的提醒 注:原名称有歧义,误导。这里并非取ie的句柄,是取那个浏览框的句柄(用于填表或者其他操作等等) 精易模块 V3.64 what’s new:(20140227) 1.删除“窗口_取位置和大小”多余的局部变量,优化内存 感谢 小爬虫 的提醒 1.修复“鼠标_限制” 感谢 小爬虫 的提醒 1.完善“批量_xx_保存配置”,“批量_xx_读取配置”命令,清除组件寻找句柄,感谢 小爬虫 的提醒 注:xx表示组件名,包括编辑框,单选框,日期框,选择框,组合框这些组件的名字 精易模块 V3.63 what’s new:(20140214) 1.重写“文本_取随机汉字”,效率提升 2.重写“文本_取随机数字”,效率提升 3.重写“文本_取随机姓氏”,效率提升,参数值意义发生变化 4.重写“随机_字母”,效率提升 5.重写“文本_汉字转拼音”,效率提升 1.优化“文本_取随机字符”,效率提升,删除多余变量,循环中的处理事件 1.完善“文本_取随机范围数字”参数备注 精易模块 V3.62 what’s new:(20140213) 1.修复“目录_是否存在”返回值为假的问题 感谢会员 orachard 的提醒 2.修复“InterlockedIncremen”“InterlockedDecrement”DLL注释错误 感谢会员 ds9660 的提醒 精易模块 V3.61 what’s new:(20140202) 1.修复“类_内存配置项”配置项加载的问题 感谢 SalHe 的提醒和会员 微凉清风的改进代码 1.完善 “窗口_取位置和大小”备注 感谢 Avatar·Tonoy 的提醒 1.重写“文本_插入文本到某位置” 感谢 我叫林舒书 的提醒 2.重写“剪辑板_置文本”“剪辑板_取文本” 感谢 myself2 的代码 精易模块 V3.60 what’s new:(20140114) 1.完善“IP_转至16进制”“IP_16进制转IP”的备注 感谢 瞎胡闹 的提醒 2.修复“系统_格式化软盘”没有返回值的问题 感谢 阿蒙 的提醒 1.重写“线程_启动多参”并改名为“线程_启动多参_整数型” 修改详情请查看新命令 2.重写“线程_启动四参”并改名为“线程_启动多参_文本型” 修改详情请查看新命令 精易模块 V3.59 what’s new:(20140107) 1.删除“系统_启用本地连接”中的垃圾代码,提升速度,感谢 阿蒙 的提醒 2.删除“程序_禁止重复运行_浏览器”,一个不知道何时添加的未公开子程序(可能代码也有问题) 1.完善“程序_加入右键菜单”,增加可空参数 <显示名称>感谢 阿蒙 的提醒 2.完善“线程_取自线程句柄”,采用百度百科的说明作为备注 1.修复“线程_取自线程ID”,采用百度百科的说明作为备注 2.修复“编码_usc2到ansi”“编码_ansi到usc2” 暂时使用EX版代替原来的代码 感谢 478755018 的提醒 3.修复“网页_置Cookie1” 感谢 阿蒙 的提醒 精易模块 V3.58 what’s new:(20140101) 1.公开“进程_ID取模块”1个内部子程序 1.删除“进程_ID取模块文件名” ,因为该命令效率低下,还和“进程_ID取进程名”一样的效果 进程_ID取模块文件名 先枚举模块得到信息数组,再计次循环 当条件=PID 就返回模块文件名,实际上枚 举到的模块信息数组所有的PID都一样,得到的也就是第一次循环结果,也就是进程名 2.删除“进程_ID取模块路径“,删除理由和上述一样 1.修复“剪辑板_取文件”的状态错误BUG 感谢 网络注册会员 的提醒,感谢 农夫 的代码 精易模块 V3.57 what’s new:(20131230) 1.删除 "窗口_取位置和大小" 的错误备注部分,感谢 美丽兔兔 的提醒 2.删除“窗口_消毁” 这个重复命令,该命令和“窗口_关闭”是一样的 感谢 改名卡 的提醒 3.删除“网页_取文本” 增加2个速度更快的命令“网页_取文本_reg”和“网页_取文本_dom” 4.删除“内存_优化” 在程序最小化和后台时系统会自动调用该函数来节省内存 个人使用,容易出现各种各样的问题,详情:http://bbs.125.la/thread-13690978-1-1.html 感谢 红河 的提醒 ,感谢 落雪 的详细分析文章 ↑ 1.新增“网页_取文本_reg” 正则方式取文本 感谢 H婶 提供参考代码 2.新增“网页_取文本_dom” DOM方式取文本 感谢 微凉 提供参考代码 3.新增“网页_置浏览器UA” 设置当前程序中浏览器的UserAgent 感谢 阿蒙 提供代码 1.完善 “进制_十到二” 取消长度不足8位自动会补零,请根据需要补零 感谢 小爬虫 的提醒 2.完善 类_ODBC数据库,“读文本”参数二的备注,改为 索引从0开始 感谢 阿蒙 的提醒 3.完善 类_ODBC数据库 ,“连接Access”增加参数 <参数_Accdb> 感谢 阿蒙 的代码 精易模块 V3.56 what’s new:(20131224) 1.删除 “类_json”的命令 “取成员”,使用该命令会导致软件挂掉,原因未知 解决方案,直接取通用属性,无需二次解析,速度更快 原:json.取成员 (0).取通用属性 (“Id”) 新:json.取通用属性 (“[0].Id”) 2.完善“网页_取域名” 将原来的3.50的和3.51重写的加强版合并 3.修复“系统_取宽带线路 ()”因为新版“网页_取域名”带来的bug 感谢 4.重写“系统_修改IP地址和网关和子网掩码” 感谢 落雪 提供参考代码 5.增加“系统_修改DNS” 感谢 落雪 提供参考代码 精易模块 V3.55 what’s new:(20131223) 1.完善 “系统_显示关闭对话框”改名为 ““系统_显示关机对话框” 增加可空参数
修复 WIN7下堆栈错误,感谢 小爬虫 的提醒 注:内部DLL "_关机对话框"改名“_关机对话框_XP” ,新增内部DLL "_关机对话框_WIN" 2.修复“音乐_停止”“音乐_暂停”返回值问题 感谢 小爬虫 的提醒 3.修复“文本_取出中间文本”参数 是否不区分大小写 得到相反结果的问题 4.修复“系统_取宽带线路”命令 感谢 secondkill 的提醒 5.增加"音量_""音乐_"开头的命令参数和备注 感谢 小爬虫 的提醒 6.删除 DLL“CoCreateInstance”“CLSIDFromString”“MultiByteToWideChar_整数型” 7.删除 "A2W"“音量_设置”“音量_获取”“音量_增减”等命令 因为原命令调用特定的dll,只对win7以上系统有效,并会附加一个特殊功能支持支持库 8.重写“音量_静音” 增加“音量_增加”“音量_减少”,对声卡操作,XP,WIN系列均有效 精易模块 V3.54 what’s new:(20131221) 1.修复“系统_取宽带用户名密码”因调用 RtlMoveMemory_整数型 传址导致取到空的问题 1.增加“系统_取磁盘类型” 2.增加DLL“CoCreateInstance”“CLSIDFromString”“MultiByteToWideChar_整数型” 3.增加“音量_设置”“音量_获取”“音量_静音”“音量_增减”“A2W” 感谢 灰灰君 提供参考代码 1.修正 “系统_置音量”为"音量_置声道",修改“系统_取音量”为"音量_取声道" 1.完善“文件_改扩展名”的参数备注 感谢 落雪 的提醒 精易模块 V3.53 what’s new:(20131220) 1.完善 “编码_URL编码”对 参数 欲编码的文本 是否为空进行判断 2.完善 “普通填表.网页_验证码同步”的备注,删除残留的测试代码 3.完善 “网页_禁止允许gif图片”“网页_禁止允许显示图片” “网页_禁止允许背景声音”“网页_禁止允许点击声音” “网页_禁止允许播放网页视频”“网页_禁止允许一键操作” 的备注信息 1.增加网页_禁止允许一键操作() 参数 <禁止允许播放网页视频> 2.增加 DLL "RtlMoveMemory_整数型2",目前应用于 类_位图操作 的 “从屏幕创建” 1.删除 “网页_验证码读取” 该命令是封装的 网页_访问_对象,所以 请直接使用“网页_访问”或“网页_访问_对象”读取验证码,根据需要进行“图片_转换” 2.删除“网页_验证码同步” 该命令是用于填表同步验证码的,所以 请直接使用“普通填表.网页_验证码同步”,使用前请确保已经“普通填表.初始化” 1.修复 类_识图 的“找图_从句柄” 感谢会员 今朝 的提醒 和 果子 提供解决方案 精易模块 V3.52 what’s new:(20131217) 1.修复 “普通填表.多行文本框_写内容”感谢会员 wjlzhi 的提醒和提供解决方案 2.修复 “网页_取元素坐标”导致普通填表无法使用,感谢会员 残绵游戏 的提醒 3.修复“程序_重启”win8无效的问题 感谢会员 千年 的提醒和提供解决方案 1.完善“系统_以管理员模式创建进程”的备注 感谢会员 977945676 的提醒 2.完善“线程池1”,投递任务支持多个参数 感谢会员 小磊 进行代码优化 3.完善“文本_汇编_取随机数字” 还原为 “文本_取随机数字” 该命令并没有被取消掉,只是被改名了,因此,对于前维护者改名所造成的不便进行道歉 1.重写“线程_启动四参”命令的参数类型和位置 感谢会员 小磊 进行代码优化 2.重写“数组_排序”,速度提升256倍以上! 感谢会员 落雪 提供的参考代码 3.增加 DLL "lstrcmp" 目前应用于数组_排序 4.增加“数组_反转”,感谢会员 落雪 提供的参考代码 精易模块 V3.51 what’s new:(20131214) 1.增加“网页_访问_EX”增加超时功能,和修复win7下https代理无效问题 感谢 90后辉煌 提供参考代码,让我们期待已久的超时功能回归,也请大家帮忙测试 【网页_访问_EX 为测试版本,完善后,将会删除该命令,功能会添加到 网页_访问()】 2.增加 线程池类1“取状态” 感谢 我叫林舒书 提供参考代码 3.增加 普通填表类“网页_刷新”刷新当前页面 感谢 laiyihan 的建议 4.增加 “网页_取文本”去掉网页源码中的HTML标签,保留纯文本 1.删除 普通填表类“网页判断” 精简模块体积(这是一个没有用的空白子程序) 1.重写 “窗口_圆角化” ,参数一类型由窗口改为句柄,参数二和三可空 感谢 果子的提醒 2.重写“网页_取元素坐标”原命令虽然公开但无效,因为屏蔽了全部代码(代码本身残缺) 故本次属于重写代码,接收参数,改为一个,元素对象,代码简洁,需要更多功能请组合其他命令 3.重写“网页_取域名”增加可空参数<后缀点数量> 新版命令支持任何后缀域名 感谢 977945676 的提醒 1.完善 “网页_访问”和“ 网页_访问_对象”的参数<附加协议头>的备注 感谢 90后辉煌 的提醒 2.完善"系统_启用本地连接"备注 感谢 7141330054 的建议 3.完善“网页_访问” 删除设置代理时,无用的到文本,提高效率 感谢 果子 的提醒 4.完善“文本_取出中间文本”的参数<起始搜寻位置>的备注 感谢 落雪 的提醒 5.完善 DLL“_宽字符到双字节”和“_宽字符到双字节1”的备注 方便区分 1.修复“编码_Unicode到Utf8”,感谢 90后辉煌 的提醒 2.修复“系统_取宽带用户名密码”因 编码_Unicode到Utf8 有问题导致的问题 感谢 wjjucwj 的提醒 注:ADSL拨号类的<取宽带用户名密码>也是调用这个命令 代码个人审阅完成,发现代码和3.40版一样,对于3.40能取出,新版无法取出 如果不是上述已被修复的bug导致的,暂时无法解释。。。 因为该命令调用很多的子程序,涉及代码太多,维护时间耗时2天多,也因此拖慢了3.51的发布 故决定,先发布3.51版本,本命令可能隐藏的BUG,我们继续研究,看能否找出真正的问题所在 精易模块 V3.50 what’s new:(20131211) 1.修正 DLL "WideCharToMultiByte"最后一个参数为逻辑型 2.新增 DLL "StrToIntEx" 目前应用于usc2和ansi互转 EX加强版 3.新增 “编码_usc2到ansi_EX”“编码_ansi到usc2_EX” usc2和ansi互转 EX加强版 精易模块 V3.49 what’s new:(20131209) 1.删除 “网页_访问s ” 解决方案和删除原因:http://bbs.125.la/thread-13687724-1-1.html 2.完善 “网页_取外网IP” 网页_访问s 为 网页_访问 效率提升 3.增加“系统_屏蔽任务管理器1”“系统_恢复任务管理器1”的备注提示信息 4.增加 “时间_取现行时间戳” 一个可选参数,是否为 十位时间戳 感谢 H婶 的提醒 5.修复 “时间_转为GMT格式” 日期缩写错误 感谢 H婶 的提醒 精易模块 V3.48 what’s new:(20131208) 1 重写 “系统_是否已联网1” 检测速度更快,感谢 阿蒙 的提醒 1、修复 模块内部命令 ,感谢 农夫 的提醒 2、改善 “RAR_解压文件” 备注 ,感谢 阿蒙 的提醒 3. 改善 “文本_是否为汉字”增加正则方式判断 感谢 7141330054 的提醒 精易模块 V3.47 what’s new:(20131207) 1、增加“系统_关联右键菜单带图标”命令 2、增加“类_内存配置项”命令,感谢会员 微凉 提供的代码 3、增加“编码_U编码转换”命令 4、增加“音乐_播放”,“音乐_暂停”,“音乐_停止”命令 5、增加“文本_朗读”命令 1、改进“网页_验证码读取”添加“附加协议头”的参数,感谢会员 提百万 的建议 2、改进“系统_取MAC地址”命令,感谢会员 Mr.Yang 的源码 3、改进“ 网页_取Cookie”等命令的描述歧义,感谢会员 imdong 的提醒 1、修复“时间_取中国星期几”命令无效的BUG,感谢会员 易難為易 的建议 2、修复“目录_是否存在”,“目录_创建” 传入参数被参考,再次使用参数变量,引发路径错误 3、完善“目录_”“文件_”开头命令的参数描述,防止出现6中错误,数量众多,这里不一一列举 4、修复“易语言_取易语言安装目录” 感谢会员 7141330054 的提醒 精易模块 V3.46 what’s new:(20131101) 1、完善重写“文本_取出现次数”命令感谢会员 Mr.Yang 提供的代码 2、完善重写“系统_格式化软盘”命令感谢会员 Mr.Yang 提供的代码 3、完善“程序_删除自身”命令感谢会员 暂停使用 的提醒 4、完善“进程_ID取窗口句柄”命令感谢会员 维卷残恋 的提醒 5、完善“类_json”命令感谢会员 jixun66 提供的代码 1、修复“目录_是否存在”无效的问题,感谢会员 红颜似水 的提醒 1、添加“线程池1”类中的新“投递任务”命令,感谢会员 维卷残恋 提供的代码 精易模块 V3.45 what’s new:(20130901) 1、添加“系统_修改开机密码”命令,感谢会员 吾愛じ啃玉米ジ 提供的代码 2、添加“程序_写日志”命令 感谢会员 以后不抓了 的提醒 1、修复“网页_访问_对象”命令无效的BUG 2、修复API“ ZwQuerySystemInformation”的声明错误,感谢会员 天踏梦者 的提醒 3、修复“程序_加入右键菜单”的命名问题,感谢会员 阿蒙 的提醒 4、完善“窗口_取IE窗口句柄”命令备注,感谢会员 御风软件 的提醒 5、修复“系统_取CPU名称”、“系统_取CPU描述”发布版本崩溃的问题,感谢会员 淡淡烟草味 的提醒 6、修复“数组_输出”命令出错的问题,感谢会员 鬼璽 的提醒 精易模块 V3.44 what’s new:(20130802) 1、紧急修复“汇编_取随机数”命令所带来的一系列BUG 精易模块 V3.43 what’s new:(20130801) 1、增加“目录_强力清空”命令,完美清空大型目录 2、重写“目录_删除”命令,大幅度提高删除速度 3、“网页_访问_对象”命令,增加对象继承参数感谢会员 咏恒ぃ☆吣 的建议 4、增加“网页_修改”命令,感谢会员 晓易 提供的代码 5、增加“汇编_取随机数”命令 6、优化替换模块内部所有的“取随机数”命令为“汇编_取随机数” 7、“网页_访问_对象”命令,默认忽略Https证书错误感谢会员 tomorrow01 的建议 8、重写“文件_合并文件”命令 9、添加“类_json” 1、修复“服务器类”当启动时最后3个参数任意为空,会导致程序闪退的问题,感谢会员will的提醒 2、修复“文本_取右边”等一组,文本命令的参数描述错误,感谢会员 泪涟涟 的提醒 3、修复“置窗口位图”命令的一个参数错误,感谢会员will的提醒 精易模块 V3.42 what’s new:(20130601) 1、优化“网页_验证码同步”命令的备注,感谢会员御风软件提醒 1、修复“文本_取中间_批量”命令结果不正确的BUG,感谢会员淘宝网赚提供的命令 1、增加“进程_创建”命令 精易模块 V3.41 what’s new:(20130501) 1、优化“网页_验证码同步”命令,默认不自动转换格式,但保留转码参数 2、优化“批量_”开头命令的备注,感谢会员御风软件提醒 3、优化“文本_取随机范围数字”命令提高运行速度,感谢会员jixun66提供的代码 4、优化“校验_md5”相关命令添加16位的支持,感谢会员御风软件提醒 5、关闭“网页_访问”命令的自动转码功能 1、修复“剪辑版_置文件”和“剪辑版_取文件”命令,会导致程序崩溃的BUG 2、修复“转为十六进制”的函数错误,感谢会员狼牙提供的修正命令 3、修复“进程_名取句柄”无法取到句柄的BUG,感谢会员 奋斗的叶子 的提醒 精易模块 V3.4 what’s new:(20130401) 1、优化“网页_验证码同步”命令,自动转换图片格式,感谢会员御风软件提醒 2、优化去除重复命令“文本_取文本长度”,感谢会员御风软件提醒 3、优化“目录_是否存在”命令,返回结果更加精确,感谢会员雪落有声提供的命令 4、优化“文件_是否存在”命令,返回结果更加精确,感谢会员雪落有声提供的命令 5、优化“目录_定位”命令,写法更加简洁,感谢会员雪落有声提供的命令 6、优化网页事件常量的命名方式,统一为英文,,感谢会员御风软件建议 7、优化“系统_设置IE代理地址”命令添加是否立即更新设置参数 1、增加“系统_临时字体_安装”、卸载命令,感谢会员啸锐提供的命令 2、增加“文件_循环删除”命令 3、增加“窗口_循环关闭”命令 1、修复“文件_写出字节集”命令API模式无效的BUG,感谢会员5582139提供的命令 2、修复部分命令的备注问题 3、修复“字节集_到十六进制”无法解密的BUG,感谢会员linkasp的提醒 4、修复“进程_ID取窗口句柄”取出无效句柄的问题,感谢会员残绵游戏的提醒 精易模块 V3.33 what’s new:(20130301) 1、增加“网页_删除IE缓存文件”命令 2、增加“系统_判断
有无
摄像头”命令 1、修复“网页_访问s”无法使用的问题 2、修复“网页_取外网IP”失效的问题 3、修复“文本_取中间_批量”结果会叠加的问题,感谢会员尔康的提醒 4、修复“安装键盘钩子”命令的一个无效参数,感谢会员阿柳的提醒 5、修复“窗口_热键卸载所有”命令会内存出错的问题,感谢会员果子的提醒 6、修复“易语言_到系统右键中”的数据类型错误,感谢会员gotomiss的提醒 7、修复“易语言_加快捷方式到IE浏览器”的数据类型错误,感谢会员gotomiss的提醒 8、修复“外部编辑框_置四边距”的数据类型错误,感谢会员gotomiss的提醒 9、修复“外部列表框_鼠标坐标取项目索引”的数据类型错误,感谢会员gotomiss的提醒 10、修复“文本_取汉字机内码”的数据类型错误,感谢会员gotomiss的提醒 11、修复“文本_取汉字机内码2”的数据类型错误,感谢会员gotomiss的提醒 12、修复“客户端类_发送并取回1”的数据类型错误,感谢会员gotomiss的提醒 1、优化“网页_访问”相关命令的备注,感谢会员御风软件提醒 2、优化“网页_访问”相关命令的自动转码功能,支持XML页面 3、优化“文本_取中间_批量_正则方式”支持换行符 精易模块 V3.32 what’s new:(20130207) 1、修正“文本_删除指定文件行”命令,无法删除最后一行的BUG,感谢会员陌笔圣手提醒 2、修正“内存_优化”命令的优化间隔无法调整的问题,感谢会员御风软件提醒 3、优化“cmd_移动并运行”防止文件路径带空格执行失败,感谢会员jixun66提醒 4、优化“窗口_枚举”命令,无法枚举隐藏窗口的问题,感谢会员微凉提醒 5、优化“类_线程池1”去除部分无效的命令,感谢会员微凉提醒 6、修正“网页_验证码同步”命令会清空剪辑板的问题,感谢会员于哈三轮车提醒 7、优化“网页_访问”的自动解码能力,感谢会员御风软件建议 8、增加“数组_去重复1”可去除带有特殊字符的数组,但效率较慢,感谢会员zengxming提醒 9、优化“系统_检测host”,感谢会员jixun66提醒 10、修正“易语言_加快捷方式到IE浏览器”第二个参数无效的BUG,感谢会员jixun66提醒 11、修正“置入汇编代码”无效的问题,感谢会员jixun66提醒 12、添加“网页_访问s”命令,使用WinInet的方式访问网页,懒人专用自动返回文本 13、添加“系统_是否64位操作系统”命令 14、修复“程序_是否被调试”,返回结果是相反的问题,感谢会员yaoying68的提醒 15、修复“程序_禁止重复运行”部分参数无效的问题,感谢会员yaoying68的提醒 16、修复“系统_取星座”命令的错别字,感谢会员xzlch的提醒 17、添加“窗口_控件调整_创建”和销毁,感谢会员啸锐提供 18、修复“取指针地址_整数型”的返回结果不准确的问题,感谢会员 神一样的男人!提醒 精易模块 V3.31 what’s new:(20130126) 1、修正“内存.读文本”命令,会崩溃的问题,感谢会员 陌笔圣手提醒 2、修正“网页_访问”命令,代理IP可能失效的BUG 3、添加“编码_编码转换对象”命令,使用对象转码更加稳定 4、添加“文件_循环删除文件”命令 5、优化“cmd_删除自身”命令,只读文件也可删除 6、添加“系统_以管理员模式创建进程”命令 7、添加“系统_注册组件”、“系统_卸载组件 ()”命令,用于注册和卸载dll组件 8、添加“写注册项Ex”命令,用于写入带有斜杠的注册项 9、添加“窗口_模糊遍历窗口”命令,用于模糊枚举窗口 10、添加“窗口_取进程路径”命令 11、添加“系统_检测host”命令,用于检测host是否被修改 12、添加“文件_枚举1”命令,用于高速枚举文件 13、添加“窗口_取字符串宽度”命令 14、添加“窗口_按类名枚举”命令 15、添加“窗口_强制显示”命令 16、优化“系统_取硬盘特征字”的运行速度 精易模块 V3.3 what’s new:(20130119) 1、重写“网页_访问”命令,优化参数排序,增加智能解码功能,兼容黑月 2、重写“网页_访问_对象”,优化参数排序,增加自动处理Cookie功能 3、重写“网页_JS格式化”,采用了
国外
优秀的开源库,准确无误 4、修正“清除Cookie”命令无法彻底清除部分Cookie的问题 5、增加“文本_去重复文本”命令 6、修正“网页_取端口”,遇到ssl的网站,会返回错误的问题 7、修正“文件_定位”,在某些情况下,会失效的BUG 8、优化“线程_等待”命令的,超时参数,加入无限等待 9、增加“类_线程池1”,更加灵活的线程池模型 10、增加“系统_修改MAC地址”可修改本机mac地址,重启后生效 11、增加“系统_删除MAC地址”删除注册表内的mac地址 12、优化“FTP_”程序集,改为类模块,更加灵活调用 13、修正“网页_取Cookie”命令无法取出部分Cookie的BUG 14、重写“网页_Cookie合并更新”命令优化代码结构 15、修复“网页_屏蔽网页复制提示”在某些情况下无法立即生效的BUG
nginx服务器有什么作用?什么叫反向代理?为什么要使用反向代理?
1 背景介绍 1.1 Nginx是什么? Nginx是一款轻量级的Web 服务器/反向
代理服务器
及电子邮件(IMAP/POP3)
代理服务器
。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 2 知识剖析 2.1 nginx服务器有什么作用? 1、反向代理 2...
VPS如何搭建高匿代理IP?(内附教程)
看完这篇教程,如果还有不清楚的地方,欢迎在下方评论区留言探讨。最后,大家在实操中,一定要合法合规的使用。
community_281
662
社区成员
253,728
社区内容
发帖
与我相关
我的任务
community_281
提出问题
复制链接
扫一扫
分享
社区描述
提出问题
其他
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章