關於我自己

2013年7月6日 星期六

圖形驗證

最近在看某微積分的應用

想過好像大部分都幾乎用整數在計算紙標一標坐標,看一下

就當做驗證過 ~ 用程式跑個圖形 ~ 果然跟課本一模一樣

2.

3.

4.

5.

  6.

 

 

 

 


2013年4月7日 星期日

Java 常用到的日期問題

1.日期 = 上週 下週
2.日期 = 前一天 後一天
3.日期 = 相差天數

-------------------------上週 下週------------------------------------------
package com;

import java.text.SimpleDateFormat;

import java.util.Calendar;

public class Test01 {

    public static void main(String args[]){

        int i=0;

          Calendar cal = Calendar.getInstance();

          Calendar cal1 = Calendar.getInstance();

          int n = i;

          String monday;

          cal.add(Calendar.DATE, n*7);

          monday = new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());


          int n1 = i-1;

          String monday1;

          cal1.add(Calendar.DATE, n1*7);

          monday1 = new SimpleDateFormat("yyyy-MM-dd").format(cal1.getTime());

          System.out.println(monday1+"  :  "+monday);

    }

}


-------------------------前一天 後一天-----------------------------------

package com;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Test02 {
    public static void main(String[] args) throws ParseException {  
         
                String Date_Text ="2013-03-31";
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
     
                Calendar cal = Calendar.getInstance();  
                cal.setTime(sdf.parse(Date_Text));  
                cal.add(Calendar.DATE, -1);//減一天  
              //cal.add(Calendar.MONTH, n);//增加一个月  
     
                System.out.println(" 增加一天 : "+ sdf.format(cal.getTime()));  
     
           
    }
}
--------------------------相差天數-----------------------------------
package com;
import java.util.Date;

public class Test03 {
    public static void main(String[] args) {
          String s1 = "2013-04-01";
          String s2 = "2013-03-27";
          String t1 = s1.replace('-','/');
          String t2 = s2.replace('-','/');
          try{
              Date dt1= new Date(t1);
              Date dt2= new Date(t2);
              System.out.println("dt1="+dt1.getTime());
              System.out.println("dt2="+dt2.getTime());
              long l = dt1.getTime() - dt2.getTime();   
              System.out.println(l);
              System.out.println("相差天數 "+l/60/60/1000/24);
            }catch(Exception e){
                System.out.println("exception"+e.toString());
            }
    }
}

2013年3月1日 星期五

2013年2月15日 星期五

Java - URLEncoder與Base64 編碼應用

Java - URLEncoder與Base64 編碼應用

java.net.URLEncoder.encode => 加密

java.net.URLDecoder.decode => 解密

最常用UTF-8跟Big5

API說明文件:
http://docs.oracle.com/javase/1.4.2/docs/api/java/net/URLEncoder.html

PS:0到9還有 ".", "-", "*", "_"等特殊符號不能編碼
Base64編碼

如果想用把特殊符號等編碼就用Base64

 請下載 commons-codec-1.7.jar 檔案


 如果把一堆參數加在一起編碼用 - 符號等做區隔

像姓名跟年紀跟性別等參數加在一起編碼

然後再接收端區分    例如:  姓名-年紀-性別


Code:
 import java.util.*;

public class Test03 {
    public static void main(String args[]){
        String Text1="ABC-DEF-GHI-JKL";
        List<String> list = new ArrayList<String>();
        System.out.println("文字長度 : "+Text1.length());
        int l =Text1.length();
        for(int i=0;i<=l;i++){
            if(i==0){
              // System.out.println(Text1.substring(0,i));
            }else{
              // System.out.println(Text1.substring(i-1,i));
              if(Text1.substring(i-1,i).equals("-"))
              {
                  System.out.println(Text1.substring(i-1,i));
                  System.out.println(" i : "+i);
                  list.add(String.valueOf(i));
              }
            }
        }
        System.out.println(" Size : "+list.size());
        System.out.println("<-----擷取----->");
        for(int j=0;j<list.size();j++)
        {
            System.out.println(list.get(j));
            if(j==0){
            System.out.println(Text1.substring(0,Integer.valueOf(list.get(j))-1));
            }else{
                System.out.println(Text1.substring(Integer.valueOf(list.get(j-1)),Integer.valueOf(list.get(j))-1));
            }
        }
    }
   
}

2013年1月5日 星期六

JavaMelody 網頁監控程式

JavaMelody 官方網站

http://code.google.com/p/javamelody/

介紹:
JavaMelody 

可監控網頁幾乎所有在運行的效能

例如:
Menory  
CPU      
Session
Thread   => 執行緒
Active JDBC Connection 活動的JDBC 連線
Used jdbc connection      已使用JDBC 連線
JVM的效能監控
等等..............................(功能可以看官網的介紹)


1.首先到官網下載war檔案

 http://code.google.com/p/javamelody/downloads/list


2.在Eclipse 引用war檔案


3.準備在自己的專案加入JavaMelody元件
 javamelody.jar 和 jrobin-x.jar
並在專案web.xml加入一些文字

下載兩個檔案 的ZIP
 加入文字

        <filter>
                <filter-name>monitoring</filter-name>
                <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
        </filter>
        <filter-mapping>
                <filter-name>monitoring</filter-name>
                <url-pattern>/*</url-pattern>
        </filter-mapping>
        <listener>
                <listener-class>net.bull.javamelody.SessionListener</listener-class>
        </listener>

4.啟動Tomcat

請記得將您的專案和Javamelody 在Tomcat底下一起執行

5.執行後


2012年12月16日 星期日

log4jdbc元件 Java資料庫追蹤

log4jdbc

是記錄資料庫操作與法跟回傳值




官方網站:

 https://code.google.com/p/log4jdbc/

1.首先先下載  jar元件


log4jdbc4-1.2.jar
log4j-1.2.16.jar
slf4j-api-1.6.4.jar
slf4j-log4j12-1.6.4.jar

2.並在web.xml 加入等字串(切記log4j.properties等檔案我是放在WEB-INF\classes\底下)

<servlet>
<init-param>
<param-name>log4j-properties-location</param-name>
<param-value>WEB-INF\classes\log4j.properties</param-value>
</init-param>
</servlet>

3.並在WEB-INF\classes\底下新增兩個檔案log4j.properties跟log4j.xml


如果不知道log4j.properties跟log4j.xml要放哪些內容
可以參考官網5. Set up your loggers. 裡面有 log4j.properties跟log4j.xml可以看~也可以直接複製

4.並放上更改驅動程式

 本來是Class.forName("net.sourceforge.jtds.jdbcx.JtdsDataSource");把它改成log4jdbc驅動
  Class.forName("net.sf.log4jdbc.DriverSpy");
然後
conn = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/Test01","OO","OOO");
  記得加入log4jdbc等字串會變成
conn = DriverManager.getConnection("jdbc:log4jdbc:jtds:sqlserver://localhost:1433/Test01","OO","OOO");
然後你在Console控制台可以看到資料庫操作印出來的結果    

使用Debug模式也可以到達一樣的效果 ~ 只不過比較麻煩:




2012年10月23日 星期二

砲彈發射

今天遇到有人不太懂物裡的好玩之處
所以引用一下物理學課本公式
物理學好玩不再於他單單只是數學 
而是他可以去模擬推算結果
有如推理小說般的耐人尋味



2012年10月12日 星期五

反三角函數


往往在許多數學題會遇到有關三角函數求角度

例如sin(a)=0.9848

求a 是多少角度呢?

在Matlab跟C++可利用asin涵式 ~ 如上圖反三角函數系列

其他:

2012年7月26日 星期四

碰撞

1.碰撞偵測

利用三角函數,取斜邊邊長

假設兩個圓都半徑都是25

所以碰撞到斜邊必須小於50

 
母球反彈
 

兩球反彈

 


九大行星

2012年7月9日 星期一

2012年7月8日 星期日

週期波

週期波

許多工程上都會用到週期波 ~ 例如訊號跟馬達之類

2012年7月6日 星期五

三角函數公式使用Matlab運算

三角函數公式使用Matlab運算

其實只要了解公式 ~ 並會使用計算機運算

很容易了解其中的道理 ~ 所以選用Matlab


2012年7月3日 星期二

力學-轉動慣量

力學-轉動慣量

公式:

假設有一個圓盤
R    半徑為: 1m
M    質量為: 8kg

套第一個公式(假設是縱放)
  8/4=  2 kgm^2

套第二個公式(假設是橫放)
 8/2= 4 kgm^2


然後有看到一個日本的網站 
(老實說讓我覺得日本工業強盛~不是沒有理由的說 QQ)

KHK STOCK GEARS Website 網站
http://www.khkgears.co.jp/

公式:
KHK STOCK GEARS Website Training Example Reference Guide :
http://www.khkgears.co.jp/tw/gear_technology/
點進去 齒輪技術資料 會看到  齒輪技術資料(PDF版)


2012年6月30日 星期六

伺服馬達跟驅動器之所需脈波

電子齒輪比=CMX/CDV


CMX代入→馬達額定轉速(rpm)×馬達ENCORDER分解能
CDV代入→脈波產生器之最高速率(PULSE/秒)× 60(秒/分)

馬達額定轉速(rpm:1分鐘轉)
馬達ENCORDER分解能(pulse/圈)→馬達轉一圈需給的pulse數
脈波產生器之最高速率(pulse/秒)

因此未化簡前 CMX(分子)就是馬達以額定轉速轉一分鐘所需的pulse數
CDV(分母)就是脈波產生器一分鐘所能產生之最多pulse數


所以假設:
馬達 一分鐘轉 3000 圈

轉一圈需要脈波:131072 Pulse


但是如果我選用驅動器最大輸出200k
200kHz=200000Hz
那麼
(1310702 Pulse * 3000 prm) /(200000Hz * 60 sec)
393216000/12000000=32.768
4096/125  =32.768
驅動器輸入CMX:4096  CDV:125


1310702/32.768 = 4000
馬達轉一圈需要從脈波產生器丟出4000個pulse,額定轉速依然是3000rpm 


而有些伺服馬達是本身跟驅動器已經結合在一起的說

另外可以參考一下:
寶祥電子:PDF檔案
進去之後點 : 資源下載   然後會看到    操作手冊下載
看到最後一項    整合式SLIM5馬達
下載此PDF 到33頁會另外介紹他的脈波輸入的計算
http://www.1111motor.com/

2012年6月29日 星期五

三用電錶

三用電錶
一般來說只要會用三用電錶

在檢測電器產品 ~ 幾乎等於維修

就像電腦知道哪個零件壞了~換掉就好了
(幾乎只要用電壓去測有沒有通電而以~來判斷該零件是否壞掉)




為什麼吃飽 ~ 閒閒沒事發著一篇呢?

因為被媽媽叫去修電風扇 ~結果一開打看到電源線斷了

連測都不用測就直接用焊接把他接好就可以動了
(不過一打開電風扇 ~ 阿鳥威 ~ 小強超多的~嚇的我花容失色)
 正常來說那種長長的插頭
我都用交流電壓來測量他的電源線有沒有通

至於要用直流電壓測量的是著種 ~ 一般外面賣的電源供應器
5V電源 影片:
像著個範例~就是很明顯的馬達的問題:
用交流電壓測量
連接電風扇的四條電源線
期中兩條就是+跟+ 正極跟負極
影片中:電風扇共有3種速度
1速:110~120之間
2速:100~119之間
3速:90~100之間