Tag: java
mysql(mariadb) java 連線設定(connection string)
每次都會忘記, 因此寫下來
jdbc:mysql://localhost:3306/database?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
有時候透過別人寫好的web設定界面, 會造成寫入xml錯誤 , 因此要注意所搭配系統是否使用xml當作設定檔.
例如&useUnicode=true ,寫到xml會出現 &useUnicode=true
請將多餘的amp;移除,只要留下 &useUnicode=true 即可
優化Android搜尋藍牙裝置方式(API 21)
Android 6.0(API 21)以後, 搜尋藍芽裝置的方式改成:
BluetoothAdapter.startScan (ScanCallback callback)
這種方式我一直用了很久, 也沒遇到問題.
直到有一個需求是隨時監控廣播封包,
這種寫法就會遇到問題, 無法快速取得周遭藍牙廣播資料, 因此需要修改寫法, 把能下的藥都下下去(但耗電):
final List<ScanFilter> filters = new ArrayList<>(); ScanFilter filter = new ScanFilter.Builder().build(); filters.add(filter); final ScanSettings scanSettings = new ScanSettings.Builder() .setNumOfMatches(ScanSettings.MATCH_NUM_MAX_ADVERTISEMENT).setMatchMode(ScanSettings.MATCH_MODE_STICKY).setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES).setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build(); BluetoothAdapter.getBluetoothLeScanner().startScan(filters,scanSettings,mLeScanCallback);
DbVisualizer如何正確顯示中文(Oracle連線)
DbVisualizer是一款很好用又跨平台的資料庫工具(java), 但是常常剛開始使用的時候, 會有中文亂碼的問題,
以oracle 為例子, 需要將字型改為中文字型, 才能正確顯示中文, 解決方式如下:
ps. 若mysql可能要使用另外一中設定的方式.

Java程式如何使用JasperReport產出報表(PDF)
使用java產出PDF很麻煩, 除了要了解iText 7外 , 還要手工製作, 超級費時,甚至要搞定中文字型, 難怪沒人提出解法.
因此我想到使用 Jasper Report 產出報表的方式, 利用內建匯出PDF的功能(也需要iText 2.1.7),就能達到目的.
簡易步驟如下:
打包軟體Advanced Installer對於32位元與64位元設定條件
因為偶使用eclipse開發java軟體,號稱跨平台, 但是實際上使用到eclipse SWT元件都知道, 還是要另外匯出各個平台的jar檔案,才能到不同平台上執行, 而且還必須區分32位元與64位元.
eclipse匯出的可執行的jar檔案既然區分這麼多, 那就者能依靠打包軟體幫忙, 這裡推薦advanced installer.
Advanced Installer對於32位元與64位元設定條件, 偶看得有點霧煞煞, 只好紀錄一下.
Advanced Installer 專案新增好之後, 請點選 “Organization”就可以詳細看到相關的設定
將老舊DBF資料檔案轉成Excel
以往讀取老舊DBF資料檔案 , 只要透過ODBC , 搭配MSQRY這隻程式就可以下SQL指令完成任務.
可是這些常用的工具漸漸地不再支援, 連java 8之後也不內含JdbcOdbc, 簡單的說若你有老系統的資料要讀取, 已經是非常困擾的一件事情, 因此有必要將這些資料都導出來, 方便查閱.
因此偶找到一些好用的函式庫(jdbf), 再簡單寫一個GUI程式, 可將DBF轉成Excel, 最後就再也用不到這些老舊的檔案了. 程式可在此下載
1. Windows 7 64bits or above or Ubuntu 16.04 64bits or above
2. java 8 or above
GUI版本-使用USB HID方式與USB設備溝通測試
前幾天寫了一個簡易的函式庫(使用hid4java), 讓須要與USB HID設備連線的程式使用, 後來乾脆又開發一個可以與USB HID設備溝通的GUI版本, 請到這裡參考原始檔(裡面含可執行的jar檔案)
java的byte array如何擴充或相加
多個byte array 要加起來,很簡的作法
import java.io.ByteArrayOutputStream; import java.io.IOException; public class Tester { public static void main(String[] args) throws IOException { byte[] ArrayA = { 1,2,3}; byte[] ArrayB = { 4,5,6}; ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.write(ArrayA); baos.write(ArrayB); byte[] c = baos.toByteArray(); for(int i=0; i< c.length ; i++) { System.out.print(c[i] +" "); } } }
Java如何存取USB-HID裝置-使用hid4java
有些產品必須透過USB-HID連線方式, 才能進行溝通, 偶記得以往都是使用vb6(好古老)的方式連線, java能派上用場的機會不多.
但最近有個需求, 需使用java開發windows app, 但是又必須透過USB-HID的方式讀取產品的資料.
若依照以往(好多年前), 偶寫個vb6程式, 透過hid的方式讀取資料後存成txt檔案; 最後再使用java觸發vb6程式, 處理vb6抓取出來的txt檔案.
java 呼叫 vb6 的解法, 雖然可解, 但就差在現在誰在跟你寫vb6, 身為java old school 的偶, 看到vb6就討厭, 又不想寫.net程式與usb溝通, 導致遇到這種USB-HID的需求, 我就鬱卒 🙁
Oh ya!
幾年後的今天, 想說找找open source是否有pure java的解, 終於找到了
可以使用 https://github.com/gary-rowe/hid4java 這個專案搭配 JNA library 完成 pure java 的期望.
目前偶用 hid4java 0.5.0 + JNA 4.1.0 用得很順, 還可以跨三個平台 Mac , Linux , Windows , 真是棒啊
咖啡偶習慣把這些東西作成簡單好用的工具函式庫 , 基本上就是發送指令到usb hid設備 , 然後接收到資料,請到以下連結參考:
https://bitbucket.org/inmethod/inmethodusblib
PS. 只提供usb連線的裝置超冷門的, 未來將漸漸勢微