不帅 发表于 2015-1-18 11:23:22

来看Eclipse的字符串分区共享优化机制

令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
在Java/C#如许基于援用语义处置字符串的言语中,作为不成变对象存在的字符串,假如内容不异,则能够经由过程某种机制完成重用。由于对这类言语来讲,指向内存中两块内存地位分歧内容不异的字符串,与同时指向一个字符串并没有任何区分。出格是对大批利用字符串的XML文件剖析相似场所,如许的优化可以很年夜水平上下降程序的内存占用,如SAX剖析引擎尺度中就专门界说了一个http://xml.org/sax/features/string-interning特征用于字符串重用。
在言语层面,Java/C#中都间接供应了String.Intern的撑持。而对Java来讲,完成上的十分相似。由String.intern办法,将以后字符串之内容为键,对象援用为值,放进一个全局性的哈希表中。
代码:
//
//java/lang/String.java
//
publicfinalclassString
{
 //...
 publicnativeStringintern();//利用JNI函数完成以保证效力
}
//
//hotspot/src/share/vm/prims/jvm.cpp
//
JVM_ENTRY(jstring,JVM_InternString(JNIEnv*env,jstringstr))
JVMWrapper("JVM_InternString");
if(str==NULL)returnNULL;
 oopstring=JNIHandles::resolve_non_null(str);//将援用剖析为外部句柄
 oopresult=StringTable::intern(string,CHECK_0);//举行实践的字符串intern操纵
 return(jstring)JNIHandles::make_local(env,result);//猎取外部句柄的援用
 JVM_END
 //
 //hotspot/src/share/vm/memory/symbolTable.cpp
 //
 oopStringTable::intern(oopstring,TRAPS)
 {
  if(string==NULL)returnNULL;
  ResourceMarkrm(THREAD);//回护线程资本地区
  intlength;
  Handleh_string(THREAD,string);
  jchar*chars=java_lang_String::as_unicode_string(string,length);//猎取实践字符串内容
  oopresult=intern(h_string,chars,length,CHECK_0);//完成字符串intern操纵
  returnresult;
 }
 oopStringTable::intern(Handlestring_or_null,jchar*name,intlen,TRAPS)
 {
  inthashValue=hash_string(name,len);//起首依据字符串内容盘算哈希值
  stringTableBucket*bucket=bucketFor(hashValue);//依据哈希值猎取方针容器
  oopstring=bucket->lookup(name,len);//然后检拆字符串是不是已存在
  //Found
  if(string!=NULL)returnstring;
  //Otherwise,addtosymboltotable
  returnbasic_add(string_or_null,name,len,hashValue,CHECK_0);//将字符串放进哈希表
 }
<p>
自己的整个学习思路完全被老师的讲课思路所牵制,这样几节课听下来,恐怕自己的见解都应该是书里的知识点了,根本谈不上自身发现问题,分析问题,和解决问题能力的切实提高。

兰色精灵 发表于 2015-1-20 23:18:40

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

仓酷云 发表于 2015-1-25 17:44:35

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

深爱那片海 发表于 2015-1-28 21:42:40

是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言

admin 发表于 2015-1-29 10:14:58

至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。

柔情似水 发表于 2015-2-6 00:21:00

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

爱飞 发表于 2015-2-9 18:25:19

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

若相依 发表于 2015-2-27 15:43:56

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

飘飘悠悠 发表于 2015-3-8 02:54:19

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

变相怪杰 发表于 2015-3-11 15:51:10

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

再见西城 发表于 2015-3-18 23:45:27

是一种突破用户端机器环境和CPU

莫相离 发表于 2015-3-26 19:16:36

你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
页: [1]
查看完整版本: 来看Eclipse的字符串分区共享优化机制