Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

標籤: Java

Java 和 SOA

Posted on 2008 年 7 月 25 日2021 年 3 月 12 日 By 日落 在〈Java 和 SOA〉中有 4 則留言

這篇文章是抱怨文,和 Java、SOA 沒關係。

 
這幾天被搞到頭腦不太清楚,原因是專題要用 SOA 的模式下去實作。再怎麼說,SOA 和 OOP 一樣,都是實作上的一個方法、一個觀念,但是我不知道為什麼,上頭一直說用 Java 實作 SOA,一定要用 NetBeans、一定要用 TomCat or GlassFish。

我當然知道 SOA 要包括 BPEL 也有 WSDL,傳遞資料要用 SOAP,但是為什麼一定要用 NetBeans 寫程式?為什麼一定要用 GlassFish?難道我自己寫一個程式能支援 BPEL、能解析 WSDL,並且按照 SOAP 的規定傳遞訊息就不可以嗎?我當然知道有更快的開發方法,但是現在用這種作法,就和不懂的二進位就去寫作業系統沒有兩樣。

我非常討厭別人悶在自己的世界裡又不肯接納其他意見,甚至把他死死的想法套在我頭上:看動畫的都是死阿宅、男生就一定粗枝大葉、不聽流行音樂就不懂的欣賞……….。

「如果他能從這扇門望見日出的美景,你又何必要他走向那扇窗去聆聽鳥鳴呢?」拿點雅量出來吧!

Tags:Java, 生活雜記

ERP 專題進度

Posted on 2008 年 7 月 16 日2021 年 3 月 12 日 By 日落 在〈ERP 專題進度〉中有 3 則留言

我們的專題目前以「遞減式」開發,因為要做的東西實在太難了,而且要受要求以「SOA」方式實作系統,所以現在我們還要想辦法把「BPEL」、「WSDL」弄懂……囧

我分析經驗比較多,先衝物件導向分析,另外二位則拼命研究 SOA by NetBean。好玩的是 SOA是將系統分開,以網路互相連結,所以即使各網路節點中的 OS、程式開發環境不一樣,還是可以溝通,所以我還是繼續用我的 Eclipse …… (拖走)

代辦事項:

  • create DB
  • 建立服務節點
  • 建立模擬資料
  • SVN
  • 物件實作
  • javadoc 
Tags:Java, 專題

求質數

Posted on 2008 年 7 月 3 日2021 年 3 月 12 日 By 日落 在〈求質數〉中有 5 則留言

今天用找質數問題來練習 Java,並且把質數範圍定到十位數之上,逼自己學 BigDecimal,順便看看 Java 可以跑多快。

Java 在四位數執行速度還蠻快的,至少沒有讓我等到睡著,但是後面就沒有那麼輕鬆了。後來想到小學習題有提到質數和「6」的關係,不過不知道為什麼國中之後就完全沒有蛛絲馬跡,乾脆拿出來跑一次看看這個理論是不是真的。

以下是 1 到 100 的質數:

1 = 6 * 0 + 1
2
3
5 = 6 * 1 – 1
7 = 6 * 1 + 1
11 = 6 * 2 – 1
13 = 6 * 2 + 1
17 = 6 * 3 – 1
19 = 6 * 3 + 1
23 = 6 * 4 – 1
29 = 6 * 5 – 1
31 = 6 * 5 + 1
37 = 6 * 6 + 1
41 = 6 * 7 – 1
43 = 6 * 7 + 1
47 = 6 * 8 – 1
53 = 6 * 9 – 1
59 = 6 * 10 – 1
61 = 6 * 10 + 1
67 = 6 * 11 + 1
71 = 6 * 12 – 1
73 = 6 * 12 + 1
79 = 6 * 13 + 1
83 = 6 * 14 – 1
89 = 6 * 15 – 1
97 = 6 * 16 + 1

以目前的狀況來看,質數都是 6 的倍數加減 1。但是不知道往後這個理論是不是還能用,點名叫 legnaleurc 證明一下好了…. XD

另外在 PTT 上有找到幾個演算法,有興趣可以去寫寫看。

Sieve of Eratosthenes @ MathWorld
http://mathworld.wolfram.com/SieveofEratosthenes.html

Prime Sieve of Eratosthenes @ Algorithmist
http://www.algorithmist.com/index.php/Sieve

2008.07.03 補充:
挖到一篇文章,裡面提到「為什麼要找質數」,理由如下:

  • 這是傳統……XD
  • 附加價值
  • 無上的榮耀
  • 對電腦的考驗
  • ……….

質數的附加價值很多,例如 RSA 加密演算法,就是利用超大質數相乘不容易因式分解,增加沒有 key 時解密的困難度,而找到超大的質數表示你你努力、很聰明,大家會對你無比的尊敬,還給你一筆很大的獎金。

Tags:Java, 資訊學習

在 Java 中讓不同的按鍵有不同的動作

Posted on 2007 年 3 月 8 日2021 年 3 月 12 日 By 日落 在〈在 Java 中讓不同的按鍵有不同的動作〉中尚無留言

通常一個視窗中會有多個不同的按鈕,點下按鈕後,按鈕會分別有不同的動作。

假設我們寫了一個 JTextArea 讓使用者輸入資料,當按下「Add Line」按鈕時會自動換行,按下「Exit」按鈕時會結束程式。

程式碼:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class panel0 {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton b1 = new JButton("Exit");
JButton b2 = new JButton("Add Line");
JTextArea text = new JTextArea(5,10);
JPanel panelControl = new JPanel();



public static void main(String[] arg){
panel0 gui = new panel0();
gui.go();
}

public void go(){

panel.setBackground(Color.gray);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));

panelControl.setBackground(Color.gray);
panelControl.setLayout(new BoxLayout(panelControl,BoxLayout.X_AXIS) );

text.setLineWrap(true);
JScrollPane scroller = new JScrollPane(text);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

b1.addActionListener(this);
b2.addActionListener(this);

text.setText("Test string....n");
panel.add(scroller);
panelControl.add(b2);
panelControl.add(b1);

frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.getContentPane().add(BorderLayout.SOUTH,panelControl);

frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void actionPerformed(ActionEvent e){
if( e.getSource() == b1 )
System.exit(0);
else
text.append("new linen");
}

}

因為 JButton 所呼叫的 ActionListener 都會呼叫 actionPerfomed(),所以只好在此函式內判斷到底是哪個按鈕呼叫的,在依照不同的來源執行不同的動作。

public void actionPerformed(ActionEvent e){
if( e.getSource() == b1 )
System.exit(0);
else
text.append("new linen");
}

但是這樣寫一點會使的整個程式架構混亂,尤其是按鈕需要值型的動作很複雜時,以後要維護程式碼會變的很麻煩,因此要換一個方式來做。

Java 中有個東西叫做 inner class,也就是 class 中的 class。 Inner class 可以存取 outer class 中的變數和函式,但是要注意的是 inner class 是當 outer class 被建立時才會跟著一起被建立,不會單獨存在。

這時要為每個 JButton 建議一個 inner class:

class buttonListenerEXIT implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}

class buttonListenerNewLine implements ActionListener {
public void actionPerformed(ActionEvent e){
text.append("new linen");
}
}

建立好 inner class 之後,要讓 JButton 的 ActionListener 會去呼叫寫好的函式:

b1.addActionListener(new buttonListenerEXIT());
b2.addActionListener(new buttonListenerNewLine());

改好之後,整個程式會變成這樣:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class panel0 {

JFrame frame = new JFrame();
JPanel panel = new JPanel();
JButton b1 = new JButton("Exit");
JButton b2 = new JButton("Add Line");
JTextArea text = new JTextArea(5,10);
JPanel panelControl = new JPanel();



public static void main(String[] arg){
panel0 gui = new panel0();
gui.go();
}

public void go(){

panel.setBackground(Color.gray);
panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS));

panelControl.setBackground(Color.gray);
panelControl.setLayout(new BoxLayout(panelControl,BoxLayout.X_AXIS) );

text.setLineWrap(true);
JScrollPane scroller = new JScrollPane(text);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

b1.addActionListener(new buttonListenerEXIT());
b2.addActionListener(new buttonListenerNewLine());

text.setText("Test string....n");
panel.add(scroller);
panelControl.add(b2);
panelControl.add(b1);

frame.getContentPane().add(BorderLayout.CENTER,panel);
frame.getContentPane().add(BorderLayout.SOUTH,panelControl);

frame.setSize(300,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

class buttonListenerEXIT implements ActionListener{
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}

class buttonListenerNewLine implements ActionListener {
public void actionPerformed(ActionEvent e){
text.append("new linen");
}
}
}

Tags:Java, 程式設計

無窮迴圈之神

Posted on 2007 年 3 月 2 日2021 年 3 月 12 日 By 日落 在〈無窮迴圈之神〉中尚無留言

自從我開始研究程式設計以後,就一直會有出乎意料的無窮迴圈。昨天寫 Java 又意外的爆炸了。

程式寫好了先 compile 成 class 檔,最後在封裝成 JAR 檔。於是基於懶人的理由,自己寫了一個批次檔,這樣就不用每次修改都要慢慢打指令了。

jar cfm out.jar manifest.mf *.class *.png

用記事本打完存成 jar.bat。結果執行時居然噴了!

弄了半天,原來是因為我批次檔中的 jar 並沒有呼叫到 Java 封裝用的 jar,而是呼叫我自己寫的 jar.bat,結果就變成了無窮迴圈。

結論:我對不起我的電腦……..

Tags:Java, 生活雜記

文章分頁

上一頁 1 2 3 下一頁

其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.