mike zeseler

          張紹林

           

          2009年2月4日

          Groovy and Java

            Groovy and Java

          posted @ 2009-04-19 10:49 mike zeseler 閱讀(206) | 評論 (0)編輯 收藏

          JDK 7 Twice as Fast* as JDK 6 for Arrays and Arithmetic

          有時(shí)間我把它弄成中文的。
          The 7th version of the Java Developer’s Kit (aka JDK 7) delivers quite a speed boost over JDK 6 array accesses. For us, this is huge. It’s like another year and a half of Moore’s law for free. Only in software. And you don’t even have to write multi-threaded code.

          I’ve been profiling my new K-Means++ implementation for the next LingPipe release on some randomly generated data. It’s basically a stress test for array gets, array sets, and simple multiply-add arithmetic. Many LingPipe modules are like this at run-time: named entity, part-of-speech tagging, language modeling, LM-based classifiers, and much more.

          While I was waiting for a run using JDK 1.6 to finish, I installed the following beta release of JDK 7:

          > java -version
          java version "1.7.0-ea"
          Java(TM) SE Runtime Environment (build 1.7.0-ea-b52)
          Java HotSpot(TM) 64-Bit Server VM (build 15.0-b03, mixed mode)
          

          You can get it, too:

          I believe much of the reason it’s faster is the work of these fellows:

          Java’s always suffered relative to C in straight matrix multiplication because Java does range checks on every array access (set or get). With some clever static and run-time analysis, Würthinger et al. are able to eliminate most of the array bounds checks. They show on matrix benchmarks that this one improvement doubles the speed of the LU matrix factorization benchmark in the U.S. National Institute of Standards (NIST) benchmark suite SciMark 2, which like our clustering algorithm, is basically just a stress test for array access and arithmetic.

          So far, my tests have only been on a Thinkpad Z61P notebook running Windows Vista (64 bit) with an Intel Core 2 CPU (T2700; 2.0GHz), and 4GB of reasonably zippy memory. I don’t know if the speedups will be as great for other OSes or for 32-bit JDKs.

          I’m pretty excited about the new fork-join concurrency, too, as it’s just what we’ll need to parallelize the inner loops without too much work for us or the operating system.

          *Update: 2:30 PM, 30 March 2009 JDK 7 is only about 15% faster than Sun’s JDK 6 on my quad Xeons (E5410, 2.33GHz) at work running the same code. I’ll have to check the exact specs on both of my memory buses. The notebook has surprisingly fast memory and the Xeon’s running ECC registered memory that I don’t think is quite as fast.

          Update: 11:00 AM, 31 March 2009 Like other matrix algorithms, k-means clustering is extremely front-side-bus sensitive (connection between memory and the CPU), because the bottleneck is often between memory and the CPU’s L2 cache. Memory’s significantly slower than CPU these days.

          The Intel dual quad-core Xeon E5410 have 12MB of L2 cache at 2.3GHz, whereas the Thinkpad Z61P has Intel Core 2 Mobile T7200 has only 4MB of L2 cache at 2GHz. The Core 2 has a 667 MHz front-side bus whereas the Xeon reports a 1333 MHz front-side bus (is that just the confusion between spec reporting). I actually don’t know what kind of memory’s in the workstation — I’ll have to crack it open and look. I’ve got 4GB of RAM in the notebook, but the motherboard can only see 3GB (ithat is, it’s not Windows — the same thing happened when I installed Ubuntu on the notebook and it’s a known design limitation in many motherboards); I have 16GB of RAM in the workstation and the motherboard can see all of it. But it has two physical chips, each of which share the memory, so the motherboard’s architecture’s very different. There are so many confounding factors that I can’t tease apart what’s speeding up in JDK 7 so much on the notebook.

          Anway, go forth and test. If you’re using a machine like my notebook to do number crunching, JDK 7 really is twice as fast as JDK 6 for matrix algorithms.

          posted @ 2009-04-06 15:03 mike zeseler 閱讀(273) | 評論 (0)編輯 收藏

          hibernate入門更新完成

          Hibernate入門指南

                  今天抽咯時(shí)間完成咯自己沒有完成的東西。
                  希望大家多多支持我. 詳細(xì)信息:
                  參見http://www.aygfsteel.com/mikezeseler/archive/2009/01/15/251491.html 
                                            

                                                                      Mike zeseler
                                                                                              

           

          posted @ 2009-02-13 19:47 mike zeseler 閱讀(620) | 評論 (0)編輯 收藏

          groovy開發(fā)入門

          自己軟件開發(fā)經(jīng)驗(yàn)不是很好,還須向大家學(xué)習(xí)!希望大家支持下我!有不足之處請大家批評指正。
           

          Groovy就是java世界的動態(tài)語言

          一:快速開始(gettingStart

          安裝JDK環(huán)境

          Groovy需要JDK1.4以上版本的支持。因此在安裝groovy時(shí)首先要安裝JDK

          JDK安裝步驟:

               下載自己喜歡的JDK版本。(下載網(wǎng)址:http://java.sun.com

             下載Groovy

          Groovy 下載首頁截圖

             
           

          點(diǎn)擊Download

          進(jìn)入下載頁面

          Groovy最新版本:Groovy 1.6-RC-2



           

          我下載的是:Download Windows-Installer: Binary Release 安裝版本

          運(yùn)行安裝者

          設(shè)置JAVA_HOME 環(huán)境變量. Windows平臺里,步驟如下:

          (1)打開系統(tǒng)"控制面板"

          單擊"高級"選項(xiàng)卡

          單擊"環(huán)境變量" 按鈕

          添加一個名稱為"JAVA_HOME" 的新的系統(tǒng)環(huán)境變量,并且將你的Java的安裝目錄作為它的值 (例如,我的是C:"Program Files"Java"jdk1.6.0(版本號))

          你也可以添加 %JAVA_HOME%"bin到你的系統(tǒng)的PATH變量中

          (2)右擊我的電腦屬性

           

          點(diǎn)擊高級選項(xiàng)


           

          點(diǎn)擊環(huán)境變量

          點(diǎn)擊新建選項(xiàng):

          具體設(shè)置


           

          Path


           

          我用的Jdk版本是Jdk1.6

               運(yùn)行安裝文件。(更改安裝路徑到:C:"Program Files"Java"jdk1.6.0(版本號))

               設(shè)置JAVA_HOME環(huán)境變量(如我的

               在系統(tǒng)path中增加:%JAVA_HOME%"bin

          注:對于1.1-rc-1以上版本需要JDK1.5版或更高的版本。

          點(diǎn)擊自己下載的Groovy windows安裝版本
           

          安裝可以是默認(rèn)的安裝全點(diǎn)擊下一步(next):

          安裝就完成啦

          (Note: as an alternative to setting a system environment variable, you can create yourself a '.bat' or '.cmd' file which sets

          the variable. You then need to run that batch file in any console window in which you wish to run Java and double clicking on

           

          .bat' or '.cmd' files containing Java invocation instructions won't work. If you are unsure about what this means, follow

          the earlier instructions.)

          Note: JDK 1.5 is required for version 1.1-rc-1. In earlier versions of JDK (notably 1.4.2) the compiller throws an exception:

          *nested exception is org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.NoSuchMethodError:

          java.lang.String.replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;

          The method "replace" was introduced in JDK 1.5 and is not supportedin earlier versions. This is also a reason why GRails

          framework doesn't run on JRE 1.4

          (1)如果你是安裝版本Groovy環(huán)境變量不需要我們設(shè)置,在安裝的時(shí)候就自動設(shè)置好啦。

          (2)如果不是,請自己嘗試Groovy設(shè)置如下:

          設(shè)置你的Groovy環(huán)境變量

          從下載頁面下載Groovy安裝器或者二進(jìn)制包,并且跟著介紹進(jìn)行安裝即可。(當(dāng)前有一個問題,就是在windows下,你的安裝路徑不能含有空格

          ,即,要將其缺省的安裝路徑"c:"Program Files"Groovy" 改成象"c:"Groovy"這樣的路徑)

          或者這樣

          從站點(diǎn)上得到Groovy發(fā)行版的copy,并且copy它到你硬盤上的某個地方。

          解壓縮這個groovy包到你硬盤的某個空間,如我的在 C:"dev"groovy-1.0-jsr-06

          設(shè)置GROOVY_HOME環(huán)境變量. Windows下,作如下步驟:

          添中新的系統(tǒng)環(huán)境變量GROOVY_HOME 并且將值設(shè)為你的groovy安裝的路徑( 我的是 C:"dev"groovy-1.0-jsr-06)

          打開命令行窗口,并且鍵入"set" 然后打回車,查看你的環(huán)境變量設(shè)置是否已經(jīng)正確。

          可選的,你也可以添加 %GROOVY_HOME%"bin 到你的PATH環(huán)境變量中

          通過雙擊試著運(yùn)行groovyConsole.bat。如果它不能工作,打開一人命令行窗口,將目錄改變到bin目錄,并且運(yùn)行它看他返回什么錯誤信息。

          二:運(yùn)行groovy

          Groovy安裝:目錄


           

          我們需要點(diǎn)擊groovyConsole.bat文件:

          文件詳細(xì)內(nèi)容如下:

          @if "%DEBUG%" == "" @echo off

          @rem

          @rem $Revision: 2770 $ $Date: 2005-08-29 12:49:42 +0200 (Mo, 29. Aug 2005) $

          @rem

          @rem Set local scope for the variables with windows NT shell

          if "%OS%"=="Windows_NT" setlocal

          :begin

          @rem Determine what directory it is in.

          set DIRNAME=%~dp0

          if "%DIRNAME%" == "" set DIRNAME=."

          "%DIRNAME%"startGroovy.bat" "%DIRNAME%" groovy.ui.Console %*

          @rem End local scope for the variables with windows NT shell

          if "%OS%"=="Windows_NT" endlocal

          安裝完整無誤的話 運(yùn)行groovyConsole.bat就會啟動groovyConsole.exe,出來一個編輯框。

           
           

          上面的是文本輸入框:根據(jù)groovy的語法輸入要顯示的內(nèi)容:

          下面的是內(nèi)容輸出框:顯示上面的內(nèi)容:

          開始運(yùn)行groovy


           

          Hello, World

          groovyConsole運(yùn)行窗口的頂部,鍵入println "Hello, World!"

          并且鍵入 <CTRL-R>.

          注意,在控制臺窗口中(即 groovyConsole窗口前面的黑色的那個),文體得到打印并且 groovyConsole的下部顯示 :

          groovy> println "Hello, World!"

          null

           "groovy>"開頭的行正是控制臺處理的文本. "null" 是表達(dá)式的值. 因?yàn)楸磉_(dá)式?jīng)]有任何值可以打印 ,所以groovyConsole打印為"null"

          接下來,再試一些實(shí)際的值,用下面的字符串來替換控制臺里的文本:

          123+45*67

          或者你喜歡的任何表達(dá)式然后按<CTRL-R> (I'm going to stop telling you to hit <CTRL-R>, I think you get the idea). 現(xiàn)在, groovyConsole下面打印的值有更多的含義.

           

          Variables

          You can assign values to variables for later use. Try the following:x = 1

          println x

          x = new java.util.Date()

          println x

          x = -3.1499392

          println x

          x = false

          println x

          x = "Hi"

          println x

          Lists and Maps

          The Groovy language has built-in support for two important data types, lists and maps (Lists can be operated as arrays in Java language). Lists are used to store ordered collections of data. For example an integer list of your favorite integers might look like this:myList = [1776, -1, 33, 99, 0, 928734928763]

          You can access a given item in the list with square bracket notation (indexes start at 0):

          println myList[0]

          Should result in this output:

          1776

          You can get the length of the list with the "size" method:

          println myList.size()

          Should print out:

          6

          But generally you shouldn't need the length, because unlike Java, the preferred method to loop over all the elements in an list is to use the "each" method, which is described below in the "Code as Data" section.

          Another native data structure is called a map. A map is used to store "associative arrays" or "dictionaries". That is unordered collections of heterogeneous, named data. For example, let's say we wanted to store names with IQ scores we might have:

          scores = [ "Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ]

          Note that each of the values stored in the map is of a different type. Brett's is an integer, Pete's is a string, and Andrew's is a floating point number. We can access the values in a map in two main ways:

          println scores["Pete"]

          println scores.Pete

          Should produce the output:

          Did not finish

          Did not finish

          To add data to a map, the syntax is similar to adding values to an list. For example, if Pete re-took the IQ test and got a 3, we might:

          scores["Pete"] = 3

          Then later when we get the value back out, it will be 3.

          println scores["Pete"]

          should print out 3.

          Also as an aside, you can create an empty map or an empty list with the following:

          emptyMap = [:]

          emptyList = []

          To make sure the lists are empty, you can run the following lines:

          println emptyMap.size()

          println emptyList.size()

          Should print a size of 0 for the List and the Map.

          條件表達(dá)式

          One of the most important features of any programming language is the ability to execute different code under different conditions. The simplest way to do this is to use the '''if''' construct. For example:amPM = Calendar.getInstance().get(Calendar.AM_PM)

          if (amPM == Calendar.AM)

          {

          println("Good morning")

          } else {

          println("Good evening")

          }

          Don't worry too much about the first line, it's just some code to determine whether it is currently before noon or after. The rest of the code executes as follows: first it evaluates the expression in the parentheses, then depending on whether the result is '''true''' or '''false''' it executes the first or the second code block. See the section below on boolean expressions.

          Note that the "else" block is not required, but the "then" block is:

          amPM = Calendar.getInstance().get(Calendar.AM_PM)

          if (amPM == Calendar.AM)

          {

          println("Have another cup of coffee.")

          }

          Boolean表達(dá)式

          There is a special data type in most programming languages that is used to represent truth values, '''true''' and '''false'''. The simplest boolean expression are simply those words. Boolean values can be stored in variables, just like any other data type:myBooleanVariable = true

          A more complex boolean expression uses one of the boolean operators:

          ==

          !=

          >

          >=

          <

          <=

          Most of those are probably pretty intuitive. The equality operator is '''==''' to distinguish from the assignment operator '''='''. The opposite of equality is the '''!=''' operator, that is "not equal"

          So some examples:

          titanicBoxOffice = 1234600000

          titanicDirector = "James Cameron"

          trueLiesBoxOffice = 219000000

          trueLiesDirector = "James Cameron"

          returnOfTheKingBoxOffice = 752200000

          returnOfTheKingDirector = "Peter Jackson"

          theTwoTowersBoxOffice = 581200000

          theTwoTowersDirector = "PeterJackson"

          titanicBoxOffice > returnOfTheKingBoxOffice // evaluates to true

          titanicBoxOffice >= returnOfTheKingBoxOffice // evaluates to true

          titanicBoxOffice >= titanicBoxOffice // evaulates to true

          titanicBoxOffice > titanicBoxOffice // evaulates to false

          titanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice // evaluates to false

          titanicDirector > returnOfTheKingDirector // evaluates to false, because "J" is before "P"

          titanicDirector < returnOfTheKingDirector // evaluates to true

          titanicDirector >= "James Cameron" // evaluates to true

          titanicDirector == "James Cameron" // evaluates to true

          Boolean expressions are especially useful when used in conjunction with the '''if''' construct. For example:

          if (titanicBoxOffice + trueLiesBoxOffice > returnOfTheKingBoxOffice + theTwoTowersBoxOffice)

          {

          println(titanicDirector + " is a better director than " + returnOfTheKingDirector)

          }

          An especially useful test is to test whether a variable or expression is null (has no value). For example let's say we want to see whether a given key is in a map:

          suvMap = ["Acura MDX":""$36,700", "Ford Explorer":""$26,845"]

          if (suvMap["Hummer H3"] != null)

          {

          println("A Hummer H3 will set you back "+suvMap["Hummer H3"]);

          }

          Generally null is used to indicate the lack of a value in some location.

          Debugging and Troubleshooting Tips

          Print out the class of a variable that you're interested in with myVar.getClass(). Then look up the documentation for that class.

          If you're having trouble with a complex expression, pare it down to a simpler expression and evaluate that. Then build up to your more complex expression.

          Try restarting the groovyConsole (this will clear out all the variables so you can start over.

          Look for the topic you're interested in in the Groovy User Guide

          If you are a Java developer

          you might want to check on the Differences from Java

          also there afew a few Things to remember

          Labels parameters    

          posted @ 2009-02-08 12:20 mike zeseler 閱讀(3016) | 評論 (5)編輯 收藏

          mike zeseler java學(xué)習(xí)

          好的學(xué)習(xí)資料需要自己——Google^_^——mike zeseler
          pdf  Search Engine
          http://www.pdf-search-engine.com/
          鮮果博客榜——搜羅好的blog很值得看看
          http://bang.xianguo.com
          Groovy是一個充滿創(chuàng)新理念具有創(chuàng)新精神的項(xiàng)目

          JAX 是德國十分重要的Java技術(shù)會議(Java conference),每一年該組織都會召開會議評選最具創(chuàng)新精神的項(xiàng)目,評選委員會從40個提名項(xiàng)目中選擇十個候選項(xiàng)目,許多優(yōu)秀項(xiàng)目如Matisse GUI builder(NetBeans的一個插件,用于構(gòu)建GUI程序)、Nuxeo(企業(yè)級內(nèi)容管理解決方案)等都入圍候選,最后Groovy贏得了1等獎!這是一個崇高的榮譽(yù),我們感到非常高興,特別是和許多非常優(yōu)秀的項(xiàng)目一起競賽。另外該獎項(xiàng)的上一期勝出者是Spring framework。

          還有,由Dierk König創(chuàng)作出版的暢銷書------《Groovy in Action》,也會作為獎品贈予Groovy社團(tuán),隨后JAX將單獨(dú)設(shè)置Groovy主題的會議進(jìn)行頒獎。這些獎項(xiàng)證明并肯定了Groovy的創(chuàng)新價(jià)值,并說明Groovy在Java社團(tuán)有不小的影響力
          http://groovy.codehaus.org
          mxjava
          http://www.mxjava.com/blog/

          國外著名java技術(shù)資料網(wǎng)站

          http://www.onjava.com

              O'Reilly的Java網(wǎng)站. 每周都有新文章

          http://java.sun.com

              官方的Java開發(fā)者網(wǎng)站 - 每周都有新文章發(fā)表

          http://www.developer.com/java

              由Gamelan.com 維護(hù)的Java技術(shù)文章網(wǎng)站

          http://www.java.net

              Sun公司維護(hù)的一個Java社區(qū)網(wǎng)站

          http://www.builder.com

              Cnet的Builder.com網(wǎng)站 - 所有的技術(shù)文章, 以Java為主.

          http://www.ibm.com/developerworks/java

              IBM的Developerworks技術(shù)網(wǎng)站; 這是其中的Java技術(shù)主頁

          http://www.javaworld.com

              最早的一個Java站點(diǎn). 每周更新Java技術(shù)文章

          http://www.devx.com/java

              DevX維護(hù)的一個Java技術(shù)文章網(wǎng)站

          http://www.fawcette.com/javapro

              JavaPro在線雜志網(wǎng)站.

          http://www.sys-con.com/java

              Java Developers Journal的在線雜志網(wǎng)站.

          http://www.javadesktop.org

              位于Java.net的一個Java桌面技術(shù)社區(qū)網(wǎng)站.

          http://www.theserverside.com

              這是一個討論所有Java服務(wù)器端技術(shù)的網(wǎng)站.

          http://www.jars.com

              提供Java評論服務(wù). 包括各種framework和應(yīng)用程序

          http://www.jguru.com

              一個非常棒的采用Q&A形式的Java技術(shù)資源社區(qū).

          http://www.javaranch.com

               一個論壇,得到Java問題答案的地方,初學(xué)者的好去處。

          http://www.ibiblio.org/javafaq/javafaq.html

              comp.lang.java的FAQ站點(diǎn) - 收集了來自comp.lang.java新聞組的問題和答案的分類目錄.

          http://java.sun.com/docs/books/tutorial/

              來自SUN公司的官方Java指南 - 對于了解幾乎所有的java技術(shù)特性非常有幫助.

          http://www.javablogs.com

              互聯(lián)網(wǎng)上最活躍的一個Java Blog網(wǎng)站.

          posted @ 2009-02-04 16:30 mike zeseler 閱讀(166) | 評論 (0)編輯 收藏

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章檔案

          .net

          “美少女股神”王雅媛

          blogjava

          books

          dzineblog

          europe open source

          flash

          google

          j2EE

          open erp

          open source

          Open Source Web Design

          seo

          seo 國外

          sex

          sns

          Tiobe

          w3c

          web

          Web 前端開發(fā)

          web 設(shè)計(jì)blog

          web2.0

          web-design resource

          兄弟軟件

          免費(fèi)電子書

          博客園

          友情鏈接

          建站

          開源項(xiàng)目

          房產(chǎn)博客

          源碼

          計(jì)算機(jī)書籍下載站

          音樂論壇

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 牡丹江市| 阿合奇县| 永昌县| 崇明县| 炎陵县| 漯河市| 邹城市| 内丘县| 通州市| 无为县| 花莲县| 临洮县| 措美县| 射洪县| 汤阴县| 贵南县| 双流县| 泌阳县| 宜宾市| 瑞金市| 清苑县| 台中市| 太保市| 仙桃市| 梅河口市| 民乐县| 洪雅县| 酉阳| 分宜县| 上林县| 镇巴县| 东宁县| 赣州市| 天峨县| 眉山市| 琼中| 和田县| 同江市| 丹东市| 穆棱市| 阳泉市|