Total Pageviews

2012/01/18

4 tips to improve performance of Java application with database


Java database performance tips 1:
Find out how many database calls you are making and minimize those believe it or not if you see performance in seconds than in most cases culprit is database access code. since connecting todatabase requires connections to be prepared, network round trip and processing on database side, its best to avoid databasecall if you can work with cached value. even if your application has quite dynamic data having a short time cache can save many database round trip which can boost your java applicationperformance by almost 20-50% based on how many calls got reduced. 

Java database performance tips 2:
Check whether your database has indexed on columns if you are reading from database.

Java database performance tips 3:
Use PreparedStatement or Stored Procedure for executing query Prepared Statements are much faster than normal Statement object as database can pre-compile them and also cache there query plan. 

Java database performance tips 4:
Use Connection Pool for holding Database Connections. 


2012/01/17

Java Comparator Example

If you have a List of the employee objects then you need to use Collections.sort() method to sort the list holding employee objects. Below example will show how to write custom comparator. I’ve given three examples of custom comparators.

Employee Object

Next you need to define the custom comparator which will help you to sort by employee name, gender and age.

Name comparator

Gender Comparator

Age Comparator



 Here is the main class which uses the comparator to sort the employee objects based on name, gender and age.



 The default result is based your insertion order.

If you apply NameComarator

The result will be sorted based on name.

If you apply AgeComparator

The result will be sorted by age.

If you apply GenderComparator

The result will be sorted by gender

2012/01/15

5 Skills for Tech Leads

1) Development

You should be a developer, and a good one.

2) Release Management

Your main job is to resolve needs and roadblocks (not to make sure that people are following any methodology).

3) Product Management

Prioritize, that's all. Then, you just have to work on the most important tasks from your list (which will also be small ones if you did your homework). 

4) Recruiting

Learn how to test people inside your team.

5) Managing People

Be honest and helpful. 


2012/01/13

How Larry Page Changed Meetings At Google After Taking Over Last Spring



  • Every meeting must have one clear decision maker. If there's no decision maker -- or no decision to be made -- the meeting shouldn't happen.
  • No more than 10 people should attend.
  • Every person should give input, otherwise they shouldn't be there.
  • No decision should ever wait for a meeting. If a meeting absolutely has to happen before a decision should be made, then the meeting should be scheduled immediately.




Read more: 
http://www.businessinsider.com/this-is-how-larry-page-changed-meetings-at-google-after-taking-over-last-spring-2012-1#ixzz1jK8m4Hva

2012/01/12

iReport 直式/橫式報表

需求
根據User所選擇要輸出橫式或直式的格式,分別輸出符合指定格式的報表

若user選擇列印格式為橫式

就輸出橫式報表

若user選擇列印格式為直式

就輸出直式報表

作法 - 橫式報表
由於iReport建立template後,default式Portrait,此時要手動去修改其page format
1. right click --> Page Format

2. Choose "Landscape" -- > OK

3. Change sucessfully

4. Drag and drop data field to template

作法 - 直式報表
1. Drag and drop data fields into template

2. Click each data field and go to change its property

3. Change "Rotation" property to "Right"

4. Check the result



Winners and Losers in Business Open-Source Software


Application Server/Web Server:
  • Trending Up: Node.js and NGINX
  • Trending Level: Tomcat and Apache HTTP Server
  • Trending Down: JBoss and GlassFish
Frameworks:
  • Trending Up: Rails
  • Trending Level: Spring, Grails, Struts
  • Trending down: (none)
Databases and Big Data:
  • Trending Up: HBase, Hadoop, MongoDB
  • Trending Level: MySQL, PostgreSQL
  • Trending Down: CouchDB

2012/01/08

How to create barcode in iReport

Here is a simple example to create barcode in iReport

Scenario
1. As user click "Preview" in iReport, it will show dialog to input
2. iReport will generate barcode in "Preview" mode

Process
1. File-->New

 2. Choose "Blank A4"-->Open this Template

 3. Give it a name, barcodeReport, and click Next

4. Click Finish

5. Right click --> Add Parameter

6. Assign "barcodeParam" as its parameter name

7. Show palette: Window-->Palette

8. Click Barcode, Drag and Drop to template

9. Choose "Code128A" as our barcode type, and click "Use Barbecue"

10. A barcode has displayed in our template

11. Click "..." button in "Code Expression"

12. Assign "barcodeParam" in "Code Expression"

13. Click "Preview" to switch into Preview Mode

14. Input random value in this popup window and click OK

15. iReport will generate barcode based on the value you inputed

16. Download barcode reader in your smart phone, iPhone, and scan it to do validation




2012/01/03

IO Error: Size Data Unit (SDU) mismatch:oracle.net.ns.NetException: Size Data Unit (SDU) mismatch

Problem
As I would like to do query via JPA, I got this error message
IO Error: Size Data Unit (SDU) mismatch:oracle.net.ns.NetException: Size Data Unit (SDU) mismatch


Solution
This problem results from inappropriate JDBC jar file, just upgrade your JDBC jar file to 11.2.0.3.0 or above


2011/12/31

11 Things every Software Developer should be doing in 2012










1. Get on Twitter
2. Read StackOverflow Daily
3. Start a Blog
4. Get out there
5. Carry around a modern phone
6. Embrace Mobile
7. Learn at least one design pattern
8. Set reachable goals each and every year
9. Learn a different programming language
10. Boost your confidence
11. Read Blogs/Programming Books/Magazine


http://michaelcrump.net/11-things-every-software-developer-should-be-doing-in-2012

2011/12/30

Preventative medicine for Memory leaks in Java


How to avoid memory leaks?

    To avoid memory leaks, We must check our applications to make sure the below:
  • Our app ought to release JDBC ResultSet, Statement, or connections.
  • Our app ought to use a finally block to make sure the objects are released appropriately.
  • Our app ought to release instance or resource objects that are stored in static tables and
  • also perform clean up on serially reusable objects.
    For example, appending an error messages to a Vector defined in a serially reusable object. The app never cleaned the Vector before it was given to the next user. As the object was reused over and over again, error messages accumulated and causes a memory leak that will be difficult to track it down.

http://www.codedairy.com/bestpractices/preventative-medicine-for-memory-leaks-in-java#.TvzFwq_rHJ4.dzone

2011/12/29

Improve Software Quality with Tools and Processes



  1. Choose a suitable process model and apply it correctly, ex. agilescrumiterative and incremental
  2. Control the version of each required source, ex.  SVNCVS and TFS 
  3. Track issues with easy-to-use tools, ex.  JIRA
  4. Perform and manage documentation, ex.  Confluence
  5. Use dependency management tools, ex.  Maven
  6. Use continuous integration, ex.  Hudson
  7. Perform testing and integration testing constantly, ex.  JUnit
  8. Perform unit testing and automatize it, ex.  Hudson with Maven
  9. Collect metrics from production and use results, ex.  CodePro Eclipse plug-in
  10. Follow best practices of coding and control with tools, ex.  Maven Surefire Report plug-in

2011/12/28

善用Oracle提供的function來提升系統效能



有關報表的日期欄位,資料庫是儲存成yyyMMDD or yyyMM。根據現有需求,需formatting成YYY/MM或者是YYY/MM/DD格式,因為效能考量,此類的formatting應在SQL裡頭做,不要放到AP level做。

舉個例子來說

  • 屆滿年月
    • NVL2(NIGT001.APL_LIMIT_YM, SUBSTR(NIGT001.APL_LIMIT_YM,0,3)||'/'||SUBSTR(NIGT001.APL_LIMIT_YM,4,2), ' ')
  • 作業日期
    • NVL2(NIGT001.PRST_PRCD_DATE, SUBSTR(NIGT001.PRST_PRCD_DATE,0,3)||'/'||SUBSTR(NIGT001.PRST_PRCD_DATE,4,2)||'/'||SUBSTR(NIGT001.PRST_PRCD_DATE,6,2), ' ')
 
Oracle相關語法簡介:
 

2011/12/22

Are You Making These 7 Productivity Mistakes?


Mistake #1: Cutting Back on Sleep
Mistake #2: Multi-Tasking
Mistake #3: Doing Everything Yourself
Mistake #4: Focusing Solely on Numbers
Mistake #5: Eating at Your Desk
Mistake #6: Checking Email Frequently
Mistake #7: Pushing Yourself Hard

No output specified for the exporter

Problem
As I would like to export pdf via JasperReports JRExporter, it throw "No output specified for the exporter" exception.

Root Cause
I forgot to set OutputStream to JRExporter parameter, i.e.
1:  JRExporter pdfExporter = new JRPdfExporter();  
2:  pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outputStream);  
3:  //........  

How to apply 1000 separator in data field

需求
在數字或者是金額等欄位,需要做到千分位隔開,如1000,要顯示1,000

作法
1. 到特定欄位按右鍵,選擇Field Pattern

2. 選擇Number, 將"User 1000 Separator"打勾,再按Apply

3. Check Result




REPORT_COUNT vs. [group name]_COUNT

需求
在產出的報表的每筆資料的第一個column,指定序號


產出結果如下


一般來說,只要將REPORT_COUNT此欄位拉到iReport即可


但是在NIG071此張報表中,若到下一頁,他會把值reset,從1開始

會造成此問題的原因,是因為此報表有用到Report Group


此時,要用Group_Count才行,其命名為則是[group name]_COUNT


結論
1. 如果沒有用到Report Group,請用REPORT_COUNT
2. 如果有用到Report Group,請用[group name]_COUNT