Perl是文本处理语言,它最初就是为了这个目的设计的。
Perl是网络编程语言,它内置了socket/client-server协议。
Perl是系统管理语言,全球网络很多服务器上就运行着它的脚本。很多时候是单行的脚本。
Perl是Web脚本编写语言。至今它仍然是最流行的几种web脚本编写语言之一。
Perl还可以:
用perl生成代码
用Perl(调用TK)编写GUI程序。
在c/c++中进行Perl编程,在perl中进行c/c++编程
用perl过滤邮件
用perl数据仓库编程
在web上进行搜索
有人说perl无所不能。
-----------------------------------------------------------------------------------------------------
我个人觉得perl的文本处理能力是无以替代的。它的正则表达式功能之强大是其他编程语言无法达到的。
即使微软的Jscript/vbscript在正则表达式这项功能努力仿照和追赶Perl,但仍然有很大的差距。
Perl里面的哈希结构也是一个十分有趣的东西,vbscript里面对应的是Dictionary,但是Dictionary有欠直观。
如果你对照一下perl和php,会发现两者程序之间有很多类似的地方,Php在产生的时候受到了perl很多的影响,
说php来源于perl也不为过。
perl甚至和vbscript/jscript一样可以编写asp程序。但同时,perl又不仅仅只有web脚本的功能。。。。但我
们很多web程序员用asp/php/jsp在编写基于web的聊天室,用隐藏桢刷新聊天内容的老土办法的时候,实际perl
写的基于socket的chat server程序早就存在了。你甚至不需要用C/C++来做这些复杂的事情,一个perl一百行
代码就可以做到了。
perl一直以来是一个免费的语言。你不用任何费用就可以获得perl世界里面的代码包括perl本身。perl不是由
某个公司大力推广而得到发展的,正如java那样。perl用它自身的力量来发展自己。当我们发现perl的开发调
试工具就可以用perl来写作,就不能不为它的神奇而感动。perl的世界是一个真正的自由的世界。
Perl 的未来会怎么样?perl会不会成为过去? perl一直在发展,实际上,下一代perl: perl 6正在建设中
甚至微软的Net计划中也包含了PerlNet, Visual studio 7 里面将存在一个visual Perl
更多的时候,我觉得看一下perl,也是有很多地方值得借鉴的。有一些编程的方法就可以学过来,然后放到你所
熟悉的C++/VB/Java上来实现。就只是这个理由,我们也可以去爱perl主流的服务器配上php插件都能解析php,php是由插件来解析的,服务器本身没有解析php的能力。
在windows上建议使用wamp一键安装包
在linux上建议
lnmp
lamp
lanmp这三个都可以
主流可以跑php的服务器有
apache
nginx
iis
希望我的回答对你有用。
puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。
puppet是一种Linux、Unix、windows平台的集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。
puppet采用C/S星状的结构,所有的客户端和一个或几个服务器交互。每个客户端周期的(默认半个小时)向服务器发送请求,获得其最新的配置信息,保证和该配置信息同步。每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器 配置完成以后,puppet客户端可以反馈给服务器端一个消息 如果出错,也会给服务器端反馈一个消息
为什么要开发puppet
系统管理员都喜欢自己写点小工具来让自己的工作完成的更快或者更好, 不管是在大企业管理大量的服务器还是只管理两三台机器 但是很少人会把他们的工具发布出来 也就是是说极少有工具能被重用,或者说很多工具就只能在所在的组织内部有用拷贝给别的组织,他们也用不上 也就是说,每个系统管理员,在一个新的公司,都会另起炉灶开发一套基于ssh,for循环的"系统"来帮助自己完成系统管理任务
开发puppet是为了让系统管理员可以相互交流和共享成熟的工具,避免重复的劳动通过以下两个特性来实现这一目标:
提供一个简洁的但是强大的框架来完成系统管理任务
系统管理任务可以描述成puppet语言,因此可以相互分享代码,就像分享其他语言的代码一样,比如python, c等
因此,作为系统管理员的你可以更快的完成工作,因为你可以用puppet来处理所有的管理细节 甚至你还可以下载其他管理员的puppet代码来让你的工作完成的更快
使用puppet 的稳定性:
puppet与其他手工 *** 作工具有一个最大的区别就是 puppet的配置具有稳定性,因此你可以多次执行puppet, 一旦你更新了你的配置文件,puppet就会根据配置文件来更改你的机器配置,通常每30分钟检查一次 puppet会让你的系统状态同配置文件所要求的状态保持一致 比如你配置文件里面要求ssh服务必须开启 假如不小心ssh服务被关闭了,那么下一次执行puppet的时候,puppet会发现这个异常,然后会开启 ssh 服务 以使系统状态和配置文件保持一致puppet就象一个魔术师,会让你的混乱的系统收敛到puppet配置文件所想要的状态
可以使用puppet管理服务器的整个生命周期,从初始化到退役不同于传统的例如sun的Jumpstart或者redhat的Kickstart, puppet可以长年让服务器保持最新状态只要一开始就正确的配置他们,然后再也不用去管他们通常puppet用户只需要给机器安装好puppet并让他们运行,然后剩余的工作都由puppet来完成
puppet的细节和原理:
puppet的目的是让你只集中于你要管理的目标,而忽略实现的细节,例如命令名,参数或者文件格式 puppet把系统里面的用户,软件包,服务 看作是"资源", puppet的作用就是管理这些资源以及资源之间的相互联系
底层支撑工具 Providers,puppet有很多的资源类型,例如文件,用户,软件包,服务, 不同的 *** 作系统上对资源的管理命令是不一样的,例如debian下面用apt-get安装软件,redhat下面用yum安装软件 因此puppet 对同一资源的管理可以有多个实现,配置资源的时候,可以明确的指定用什么provider 例如在redhat上配置一个package资源的时候,可以指定provider是yum
Facter变量:
在puppet客户端分析代码的时候,会把从facter传送过来的对应的值赋值给变量 你可以单独手工执行facter这个命令,这个命令会打印出它所收集到的关于主机的信息,例如ip地址等等 facter把收集到值发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件 最重要的一个就是服务器的主机名
工作方式与流程:
puppet既可以在单机上使用,也可以以c/s结构使用在大规模使用puppet的情况下,通常使用c/s结构在这种结构中puppet客户端只是指运行puppet的服务器,puppet服务器端是只运行puppetmaster的服务器
puppet客户端首先会连接到puppet服务器端,并且通过facter工具把客户端的基本配置信息发送给服务器端 服务器端通过分析客户端的主机名,通过node 定义,找到该主机的配置代码,然后编译配置代码,把编译好的配置代码发回客户端,客户端执行代码完成配置并且把代码执行情况反馈给puppet服务器端
修改系统配置:
puppet 通过管理资源的方式来管理系统, 例如管理某个软件是否要安装,是安装最新的还是安装了就行 管理某个服务是否开启, 管理某个文件的属性,内容等等 所有的资源都有对应的几个属性可以设置 通过设置属性的方式来管理资源 有一种特殊的属性可以用在所有的资源上面,这种属性叫做 metaparams ( 元参数或者元属性)
资源之间的关系:
支持资源之间的关系配置是puppet的关键特性之一 一个资源的变更可以对另一个资源产生一个动作例如 /etc/apacheconf这个资源有改动,可以让/etc/initd/apache 这个资源 reload一下假如一个资源依赖另一个资源,那么puppet会优先配置被依赖的资源,因此如果你的配置文件没有准备好,对应的服务是不会先启动的
puppet 语言资源:
puppet的全部就是管理资源,因此puppet语言的焦点就是处理这些资源,下面是一个基本的管理单个资源的例子
file {"/etc/hosts": owner = root, group = root, mode = 644}
上面的例子给出了定义一个资源所需要的所有组件,类型,名字和属性 定义了一个 file 资源, 资源的title(标题)是"/etc/hosts", 资源的属性里面设置了该文件属于那个用户和组,以及文件的权限
也可以在一个大括号里面定义多个资源,通过分号来区分
避免重复配置:
puppet的编译器会避免在不同的代码段里面管理同一个资源, 如果在不同的代码段对同一个资源进行配置,执行puppet的时候你会得到一个语法错误puppet探测这种冲突的情况是通过判断资源类型和资源的title(标题); 如果两个资源有相同的资源类型和title; 那么就认为这两个资源是表示同一个资源
类:
你可以把多个相关的资源定义在一起,组成一个类可以在其他的代码段include这个类puppet还支持有限制的类的继承,作用就是在子类里面的属性可以覆盖父类里面的属性
字符串:
几乎所有的东西和符号在puppet里面都被看作是字符串,包括数字和布尔值 但是如果你用引号把true和false引起来,他们会被当做字符串,例如你想赋值给某个资性"yes"的 字符串
变量:
puppet除facter变量外,也可以自定义变量,但不允许你在同一个类里面对一个变量进行两次赋值
$myvar = value123
条件语句:
Puppet支持常见的条件语句,使得你能根据不同的条件导入不同的资源定义。如if、case、另外puppet从版本0246开始支持比较运算符。
数组:
puppet 非常有限的支持数组这种类型,你可以创建数组,并且给他们赋值,但是你不能删除它们数组用的最多的情况就是上面ssh例子里面,资源依赖哪种情况 或者是一次管理多个相同类型的资源例如:user { [bin, adm]: ensure =>present }
函数:
puppet提供一些有用的函数,例如template利用erb模板来生成文件内容,这样就可以根据不同主机的情况,生成不同的配置文件例如配置squid的内存缓存大小,可以利用facter返回的内存值做一个简单的数学计算,然后写入到squid的配置文件,就是通过template来完成的 另外一个函数include 可以读入另外的puppet配置文件或者类这样可以把puppet的文件分割的更有规律
节点:
最后一个关于puppet语言的语法是节点定义"node", 节点定义很象类定义,也支持继承特性 当一个节点(puppet客户端)连接到puppet服务器端,puppet解析器会查找这个节点的node代码片断,然后利用这个代码片断来生成该客户端的配置代码 puppet里面主机名来标明一个主机,因此主机名在puppet里面相当重要 如果puppet找不到匹配该主机名的node定义,就会用默认的节点定义来配置该主机 在node里面使用主机名,需要用单引号把主机名括起来
node'server1'{ include nginx }
在上面的代码中,如果server1这个主机连接到puppet服务器,puppet服务器就会按照nginx的代码来配置这台服务器
自定义资源:
puppet里面有一个非常有用的语法结构,叫做define, 通过define可以把多个资源包装成一个资源,或者把一个资源包装成一个模型,便于使用例如,在debian里面管理一个apache虚拟机非常简单,把一个虚拟主机的配置文件放到/etc/sites-available/里面,然后做一个符号链接到/etc/sites-enabled目录 你可以为你每个虚拟主机复制同样的配置代码
LGame是框架的一部分,也是针对Java2D游戏开发而设计的“一揽子”项目,它的创立初衷在于构建一个高效且完善的Java2D游戏开发体系。关于LGame的简要介绍:
LGame代码高度向下兼容,jre14及以上版本皆可以正常运行。
LGame是一个高通用性的游戏框架,作为支持Java桌面游戏以及网页游戏开发的全功能引擎,LGame无论对画面绘制、精灵碰撞、特效渲染、窗体组件,还是XML *** 作,文本数据库 *** 作,>
LGame内置有视频解码器,支持mp4视频文件播放(在LGame-Simple-030中将支持flv,在06-07版本中将以可选组件方式引入jmc支持,以争取可播放视频种类的最大化),内置音频解码器支持mid、mod、mp3、ogg、wav、au、aiff、aac、rmf等音频播放,以上解码器皆不依赖于本地资源,只要拥有jre14或以上环境即可正常运行。
就目前阶段而言,LGame图形渲染依赖于Java2D,这虽然保证了LGame可以运行于所有获得JRE支持的桌面系统与浏览器,但在处理复杂图形时效果始终不算理想。因此,后续版本将对此进行改进,预计将于03-04版中提供jogl与lwjgl支持(即opengl支持),将于04-05版中对现有Graphics2D对象进行特殊强化,争取最大程度上解决Java桌面应用的效率问题。
应该说,LGame并不是开发某种特定游戏类型时采用的游戏引擎,而是一个游戏开发框架,一个Java的桌面游戏开发解决方案。因此,所有你能想到的2D游戏类型,都可以采用LGame进行开发。
理论上讲,只要您能够熟练 *** 作LGame,世界上根本没有任何一款2D游戏是您所无法快速实现的。
PS:目前LGame尚未推出正式版本,LGame-Simple版为前瞻性测试及吸收反馈意见使用,此时LGame框架的基本架构尚未最终确定,因此无法保证不同版本间的兼容性。LGame-Simple以每版05的方式跳跃式升级,当LGame-Simple更新到10版本时,既推出LGame-01正式版本,LGame正式版推出后将始终保持新版与旧版间的兼容性。
SpringFrameworkJava开源J2EE框架
Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。Spring的架构基础是基于使用JavaBean属性的InversionofControl容器。然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/Rmapping解决方案。Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或者JDBC事务提供一个一致的编程模型。Spring提供了一个用标准Java语言编写的AOP框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。Spring还提供了可以和IoC容器集成的强大而灵活的MVCWeb框架。SpringIDE:Eclipse平台下一个辅助开发插件
StrutsJava开源Web框架
Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。StrutsIDE:用于Struts辅助开发的一个Eclipse插件
HibernateJava开源持久层框架
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来 *** 纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:Hibernate
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)