一 02
“囚徒困境”最早是由美国普林斯顿大学数学家曾克1950年提出来的。他当时编了一个故事向斯坦福大学的一群心理学家们解释什么是博弈论,这个故事后来成为博弈论中最著名的案例。故事内容是:两个嫌疑犯(A和B)作案后被警察抓住,隔离审讯;警方的政策是“坦白从宽,抗拒从严”,如果两人都坦白则各判8年;如果一人坦白另一人不坦白,坦白的放出去,不坦白的判10年;如果都不坦白则因证据不足各判1年。在这里,博弈者就是两个嫌疑犯,他们每个人都有两个选择,即坦白和不坦白。
最终结果是A和B均选择了坦白。这是因为,假定A选择坦白的话,B最好是选择坦白,因为B坦白判8年而抵赖却要判10年;假定A选择抵赖的话,B最好还是选择坦白,因为B坦白不被判刑而抵赖却要被判刑1年。即是说,不管A坦白或抵赖,B的最佳选择都是坦白。反过来也一样,不管B是坦白还是抵赖,A的最佳选择也是坦白。结果,两个人都选择了坦白,各被判刑8年。在(坦白、坦白)这个组合中,A和B都不能通过单方面的改变行动增加自己的收益,于是谁也没有动力游离这个组合,因此这个组合叫做纳什均衡。
囚徒困境所反映出的深刻问题是,人类的个人理性有时能导致集体的非理性——聪明的人类会因自己的聪明而作茧自缚。
作者:Jock
四 23
5.5GA,唉又修改了注册码。看来高人还是蛮多的。
点击阅读全文就知道了
更多详细内容 »
作者:Jock
四 18
注册码不能用了,不过在旧一点的版本的还是可以的:)
4.1&4.2GA的注册码可以在5.5M2上用。
生成的时候选Myeclipse 4.1&4.2ga哦
点击进入查看下载. 更多详细内容 »
作者:Jock
三 04
在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。
我们看jdk doc中说明
public String[] split(String regex)
Splits this string around matches of the given regular expression.
参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:
用竖线 | 分隔字符串,你将得不到预期的结果
String[] aa = “aaa|bbb|ccc”.split(“|”);
//String[] aa = “aaa|bbb|ccc”.split(“\\|”); 这样才能得到正确的结果
更多详细内容 »
Tags:
j2se 作者:Jock
一 28
[codes=xml]
<project name="MyProject" default="compile">
<property file="build.properties"/>
<property name="build.debug" value="on"/>
<property name="buiid.dir" location="build"/>
<target name="init" description="Create dir">
<mkdir dir="build/classes"/>
<mkdir dir="dist"/>
</target>
<path id="comiple.classpath">
<pathelement location="${a.jar}"/>
<pathelement location="${b.jar}"/>
</path>
<target name="compile" depends="init" description="Compile src file">
<javac srcdir="${build.dir}" destdir="build/classes">
<classpath>
<pathelement location="lib/some.jar"/>
</classpath>
<!– use another classpath
<classpath refid="compile.classpath"/>
–>
</javac>
</target>
<fileset dir="dist" includes="*.jar" id="source.fileset/>
<target name="archive" depends="compile" description="jar the classes!">
<jar desfile="dist/project.jar" basedir="build/classes"/>
<copy todir="deploy">
<fileset refid="source.fileset"/>
</copy>
</target>
<target name="execute" depends="compile" description="run the class">
<java classname="com.unique.test.Hello" classpath="build/classes"
<arg value="a"/>
</java>
</target>
<target name="clean" depends="init" decription="del the dir">
<delete dir="build" />
<delete dir="dist" />
</target>
</project>
[/codes]
Tags:
ant,
模版 作者:堕落天使
一 16
1.配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
2.配置日志信息输出目的地Appender,其语法为:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.option = valueN
其中,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
3.配置日志信息的格式(布局),其语法为:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.option = valueN
其中,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,打印参数如下
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
%F 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名 更多详细内容 »
Tags:
log4j,
配置 作者:堕落天使
一 10
作者: Michel Casabianca
本文是一个用于构建和部署Java工程的极具价值的工具(Ant)系列文章的第二部分。
在我的第一篇文章《Ant简介》(Oracle杂志,2002年11/12月号)中,我介绍了在Java开发过程中可能要执行的一些基本任务。我使用Ant自动编译Java源代码、创建JAR文件、运行程序并生成Javadoc。在这第二篇文章中,我将要讨论Ant的两个任务包(核心任务包和可选任务包)中的一些更高级的Ant特性。核心包包括构建、打包和部署Java工程的任务,也包括执行SQL语句的任务和与并发版本控制系统(Concurrent Versions System ,CVS)相集成的任务。可选包以各种方式扩展了Ant的功能,这些方式包括:与其他源代码控制系统相集成、运行unit测试和预编译JavaServer Pages (JSP)等。我还将讨论它与Oracle9i JDeveloper 9.0.3的集成,并提供一些有用的Ant提示与技巧。
打包一个应用程序
为了分布应用程序,你可能需要生成一个文档库:tar.gz 和/或zip文件(分别用于UNIX 和Windows平台)。为了生成这两个文件,你应该编写清单1中所示的目标(target)。
在这个目标中,我使用两个专门任务来生成tar和zip文件。它们是非常类似的;它们的根元素包括一个说明要生成的的文档库名称的属性(属性tarfile和zipfile),它们都嵌套了一个专门的fileset来列举要包括在这个文档库中的文件。
这个目标看起来似乎是冗长的,但这有助于解决两个令人头疼的问题:文件许可和安装目录。当对一个文档库进行解压缩时,假定文件有合理的文件许可并将其安装到它们自己的目录中。
为了解决文件许可问题,我把要集成到该文档库中的文件按照功能分为两组:一个为不可执行的文件定义一个模式的patternset(指定的dist-non-exec),和将执行文件(外壳脚本和.bat文件)集中到bin目录中的另一个patternset(指定的dist-exec)。tarfileset–用于tar任务的专门fileset,使用mode属性管理文件许可,其值是该集合中文件的数字文件许可值。 更多详细内容 »
Tags:
ant 作者:堕落天使
一 10
作者:Michel Casabianca
本文讲述如何使用这个具有极大价值的工具(Ant)来构建和部署Java工程。
Ant是一个用于简单或复杂Java工程的自动化构建、部署工具,它对于那些具有分布式开发团队或者相信通过频繁的构建来进行不间断集成的公司尤其有用。对于那些建立传统全Java应用程序以及那些使用HTML、JSP和Java servlets创建Web应用程序的公司来说,Ant极具价值。无论你的Java开发者使用什么操作系统、集成开发环境或者构建环境,Ant都可以将你的工程集合在一起,用于那些重要的构建。Ant也能够自动化并且同步文档部署,这通常发生在软件开发过程中的没有正式文档和文档比较混乱的部分。
在构建和部署Java应用程序的时候,Ant处理着大量有用的任务。最基本的任务包括添加和移除目录、使用FTP拷贝和下载文件、创建JAR和ZIP文件以及创建文档。更高级的特性包括用源代码控制系统诸如CVS或者SourceSafe来检查源代码、执行SQL查询或脚本、将XML文件转换为人能识别的HTML,以及为远程方法调用生成stub(存根)文件。
Ant和Make(非常著名的构建工具,很多C语言开发人员都使用它)之间有什么不同?Ant是为Java而创建,带有属于其自身的、独特的范例,具有可移植性。而Make依赖于固定的操作系统命令(因此一个运行在微软Windows下的Make文件对于使用UNIX的开发者来说毫无用处),利用Ant构建的纯Java工程是可移植的,因为Ant本身就是用Java编写的,并且Ant bulidfiles使用XML语法。
本文将向你展示一个典型的Ant文件,它使用了很多的Ant基本任务。
一个典型的Ant工程
Ant使用用XML编写的、称作bulidfile的工具来开展它的工作。让我们考虑一个源文件在src目录中、类库(包括JAR文件)在lib目录中、API文档在doc/api目录中的典型Java工程。我们可以利用如下的Ant buildfile来构建这个工程。
更多详细内容 »
Tags:
ant 作者:堕落天使
一 07
<Directory "/apache/htdocs">
Options Indexes FollowSymLinks MultiViews ExecCGI
把Indexes去掉
改成Options FollowSymLinks MultiViews ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Tags:
apache,
配置 作者:堕落天使
一 07
Resin2.X禁止访问目录列表的配置方法如下:
打开resin.conf文件
在<web-app>
…
</web-app>
之间加入如下配置:
<directory-servlet id='false'/>
Resin3.X禁止访问目录列表的配置方法如下:
打开resin.conf文件
< servlet servlet-name ="directory"
servlet-class ="com.caucho.servlets.DirectoryServlet" />
将此配置项注释掉:
<!–
< servlet servlet-name ="directory"
servlet-class ="com.caucho.servlets.DirectoryServlet" />
–>
Tags:
resin,
配置 作者:堕落天使
近期评论