仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3193|回复: 20
打印 上一主题 下一主题

[学习教程] 了解下JAVA的Java功能优化[2]:字符串过滤实战

[复制链接]
透明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:32:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试)
上一个帖子已先容了基础范例和援用范例的功能差别(次要是因为内存分派体例分歧招致)。为了给各位看官加深印象,明天拿一个详细的例子来实地操纵一把,看看优化的效果怎样。
★关于需求
起首形貌一下需求,详细以下:给定一个String对象,过滤失落除数字(字符0-9)之外的别的字符。请求工夫开支尽量小。过滤函数的原型以下:Stringfilter(Stringstr);
针对上述需求,我写了5个分歧的过滤函数。为了叙说便利,分离称为filter1到filter5。个中filter1功能最差、filter5功能最好。在你接着看后续的内容之前,你先暗自思索一下,假如由你来完成该函数,也许会写成甚么样?最好把你想好的函数写上去,便于前面的对照。
★代码完成
◇测试代码
为了便利测试功能,先筹办好一个测试代码,详细以下:
class Test
{
public static void main(String[] args)
{
if(args.length != 1)
{
return;
}

String str = "";
long nBegin = System.currentTimeMillis();
for(int i=0; i<1024*1024; i++)
{
str = filterN(args[0]); //此处挪用某个详细的过滤函数
}
long nEnd = System.currentTimeMillis();
System.out.println(nEnd-nBegin);
System.out.println(str);
}
};
在没有想好你的完成体例之前,先别偷看后续内容哦!别的,先说明下,我利用的Java情况是JDK1.5.0-09,利用的测试字符串为“D186783E36B721651E8AF96AB1C4000B”。因为呆板功能不尽不异,你在本人呆板上测试的了局大概和我上面给出的数值不太一样,但趋向应当是差未几的。
◇版本1
先来发表功能最差的filter1,代码以下:
private static String filter1(String strOld)
{
String strNew = new String();
for(int i=0; i<strOld.length(); i++)
{
if(0<=strOld.charAt(i) && strOld.charAt(i)<=9)
{
strNew += strOld.charAt(i);
}
}
return strNew;
}
假如你的代码不幸和filter1相同,那你的Java功底可就是相称糟了,连字符串拼接必要用StringBuffer来优化都没弄分明。
为了和后续对照,先记下filter1的处置工夫,约莫在8.81-8.90秒之间。
◇版本2
再来看看filter2,代码以下:
private static String filter2(String strOld)
{
StringBuffer strNew = new StringBuffer();
for(int i=0; i<strOld.length(); i++)
{
if(0<=strOld.charAt(i) && strOld.charAt(i)<=9)
{
strNew.append(strOld.charAt(i));
}
}
return strNew.toString();
}
实在方才在评价filter1的时分,已保守了filter2的天机。filter2经由过程利用StringBuffer来优化毗连字符串的功能。为何StringBuffer毗连字符串的功能比String好,这个已是陈词滥调,我就不细说了。尚不分明的同砚本人上Google一查便知。我估量应当有挺多同砚会写出类似filter2的代码。
filter2的处置工夫约莫为2.14-2.18秒,提拔了约莫4倍。
<p>
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,
活着的死人 该用户已被删除
沙发
发表于 2015-1-21 09:37:24 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-1-28 08:21:08 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
透明 该用户已被删除
地板
 楼主| 发表于 2015-2-5 13:36:22 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
柔情似水 该用户已被删除
5#
发表于 2015-2-6 00:41:12 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
乐观 该用户已被删除
6#
发表于 2015-2-8 20:10:31 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
山那边是海 该用户已被删除
7#
发表于 2015-2-26 03:13:29 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
小女巫 该用户已被删除
8#
发表于 2015-3-3 20:09:47 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-11 13:02:23 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
若相依 该用户已被删除
10#
发表于 2015-3-11 15:35:01 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
蒙在股里 该用户已被删除
11#
发表于 2015-3-13 01:23:52 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
不帅 该用户已被删除
12#
发表于 2015-3-15 07:58:46 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
分手快乐 该用户已被删除
13#
发表于 2015-3-21 21:10:59 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
简单生活 该用户已被删除
14#
发表于 2015-3-26 15:48:42 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
飘飘悠悠 该用户已被删除
15#
发表于 2015-3-29 06:38:50 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
谁可相欹 该用户已被删除
16#
发表于 2015-4-1 06:09:43 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
再见西城 该用户已被删除
17#
发表于 2015-4-7 14:01:25 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
深爱那片海 该用户已被删除
18#
发表于 2015-4-7 15:28:29 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
因胸联盟 该用户已被删除
19#
发表于 2015-4-26 09:09:21 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
冷月葬花魂 该用户已被删除
20#
发表于 2015-7-9 01:38:24 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-26 09:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表