Apparently MyISAM is faster than InnoDB
The only advantage InnoDB has over MyISAM is that it supports row locking, while MyISAM only supports table locking.
Therefore, if lots of reads and writes are constantly being done to a very large table, it eliminates the constant database errors that using a MyISAM table would cause from the overload.
InnoDB would therefore be a tad more reliable when you don't mind taking a small performance hit in exchange for not suffering from table locking issues.
one other thing I found is
while using Hibernate commit statements, myISAM works even with out commit statement, but InnoDB requires commit for every transaction. its advantaeous providing rollback support.
more here
Tuesday, November 09, 2010
Monday, October 11, 2010
Remove duplicates from an Array
String[] array = {"A", "X", "G", "X", "A"};
Set set = new HashSet(Arrays.asList(array));
String[] array2 = (String[])(set.toArray(new String[set.size()]));
A set is a collection object that cannot have a duplicate values, hence converting the array to a set removes the duplicate values.
Set set = new HashSet(Arrays.asList(array));
String[] array2 = (String[])(set.toArray(new String[set.size()]));
A set is a collection object that cannot have a duplicate values, hence converting the array to a set removes the duplicate values.
java.lang.UnsupportedOperationException on java.util.AbstractList
java.lang.UnsupportedOperationException: null
at java.util.AbstractList.remove(AbstractList.java:144) ~[na:1.6.0_04]
at java.util.AbstractList$Itr.remove(AbstractList.java:360) ~[na:1.6.0_04]
at java.util.AbstractCollection.remove(AbstractCollection.java:252) ~[na:1.6.0_04]
Arrays.asList(Object[]) returns type Arrays$ArrayList is of (extends) type AbstractList.
Arrays$ArrayList does not override remove(int) so the method is called on the superclass AbstractList
new LinkedList(Arrays.asList(String[] something));
Use any List implementation that supports a modifyable result. In the above, LinkedList works because, instantiates a new modifiable list using the immutible list created from Arrays.aslist(...).
at java.util.AbstractList.remove(AbstractList.java:144) ~[na:1.6.0_04]
at java.util.AbstractList$Itr.remove(AbstractList.java:360) ~[na:1.6.0_04]
at java.util.AbstractCollection.remove(AbstractCollection.java:252) ~[na:1.6.0_04]
Arrays.asList(Object[]) returns type Arrays$ArrayList is of (extends) type AbstractList.
Arrays$ArrayList does not override remove(int) so the method is called on the superclass AbstractList
new LinkedList(Arrays.asList(String[] something));
Use any List implementation that supports a modifyable result. In the above, LinkedList works because, instantiates a new modifiable list using the immutible list created from Arrays.aslist(...).
Saturday, October 09, 2010
Kapalabhati Pranayam.
This is my first non technical post. But is this really non-tech, no its a technical for body... none of us really cared about what our mind/body needs..
Spending 20 mins for our-self is not a big deal. You can do it early morning or before lunch or before dinner. We do spend lot of our time in social networking activities. Can we not steal some time (not more that 20 mins) and give our mind/body what it needs ?
*tip:
Morning after Kapalabhati take a glass of lemon juice in warm water. GFH :)
Kapalabhati can be done by siting in Padmasana or Sitting on chair in erect posture.
http://www.beautyandgroomingtips.com/2006/12/kapalabhati-pranayam.html
Spending 20 mins for our-self is not a big deal. You can do it early morning or before lunch or before dinner. We do spend lot of our time in social networking activities. Can we not steal some time (not more that 20 mins) and give our mind/body what it needs ?
*tip:
Morning after Kapalabhati take a glass of lemon juice in warm water. GFH :)
Kapalabhati can be done by siting in Padmasana or Sitting on chair in erect posture.
http://www.beautyandgroomingtips.com/2006/12/kapalabhati-pranayam.html
Wednesday, August 18, 2010
java.net.BindException: Address already in use: JVM_Bind:8080
This occurs when 8080 port is already used by other application. Check the server.xml in tomcat and change the port as shown below.
this should solve the java.net.BindException: Address already in use: JVM_Bind:80
happy deployment :)
this should solve the java.net.BindException: Address already in use: JVM_Bind
happy deployment :)
Get table count in MySQL
I was looking for this and got idea from Roland Bouman forum http://forums.mysql.com/read.php?100,48568,48737#msg-48737. Thanks Naveen for (the second query) letting me know this.
1)
select count(*) as number_of_tables from information_schema.tables
where table_schema = 'my_database_schema' and table_type = 'BASE TABLE'
2)
select TABLE_SCHEMA, TABLE_TYPE, ENGINE, count(1)
FROM information_schema.tables GROUP BY TABLE_SCHEMA, TABLE_TYPE, ENGINE;
1)
select count(*) as number_of_tables from information_schema.tables
where table_schema = 'my_database_schema' and table_type = 'BASE TABLE'
2)
select TABLE_SCHEMA, TABLE_TYPE, ENGINE, count(1)
FROM information_schema.tables GROUP BY TABLE_SCHEMA, TABLE_TYPE, ENGINE;
Wednesday, March 24, 2010
HTML5 Application Framework
SproutCore is an HTML5 application framework for building responsive, desktop-caliber apps in any modern web browser, without plugins.
yea dil mange more >>
yea dil mange demo>>
yea dil mange more >>
yea dil mange demo>>
Thursday, March 18, 2010
ResourceBundle Message Implementation in Spring
Add below in context.xml
beans:bean id="msource" class="org.springframework.context.support.ResourceBundleMessageSource"
beans:property name="basename" value="classpath:mymessages.properties"
-----------------------------------
mymessages.properties
my.user.already.exist={0} already exist!
my.update={0} updated successfully!
my.delete={0} deleted successfully!
---------------------------------------------
Last step just do an autowire in the controller class
@Autowired
@Qualifier("msource")
private MessageSource mymess;
and in the functions use it like below
mymess.getMessage("my.user.already.exist", new Object[] { "Username chandra"}, null)
the Object[] can take multiple params based on the message u want to display
ex:Username {0} cannot be deleted because {1}
--- :)
beans:bean id="msource" class="org.springframework.context.support.ResourceBundleMessageSource"
beans:property name="basename" value="classpath:mymessages.properties"
-----------------------------------
mymessages.properties
my.user.already.exist={0} already exist!
my.update={0} updated successfully!
my.delete={0} deleted successfully!
---------------------------------------------
Last step just do an autowire in the controller class
@Autowired
@Qualifier("msource")
private MessageSource mymess;
and in the functions use it like below
mymess.getMessage("my.user.already.exist", new Object[] { "Username chandra"}, null)
the Object[] can take multiple params based on the message u want to display
ex:Username {0} cannot be deleted because {1}
--- :)
Saturday, March 13, 2010
How to use base64 to add a basic authentication to an HTTP request.
Use the "Authorization", "basic "+encodedpassword like below.
import org.apache.commons.codec.binary.Base64;
String userpasswd = username+":"+password;
String encodedString = new String(Base64.encodeBase64(userpasswd.getBytes()));
....
and in ur httpconnection object add the below
conn.setRequestProperty("Authorization","Basic "+encodedString);
...
URL url = new URL("https://fyi.com");
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Authorization"....
if (conn instanceof HttpsURLConnection)
((HttpsURLConnection) conn).setHostnameVerifier(DNV);
conn.connect();
import org.apache.commons.codec.binary.Base64;
String userpasswd = username+":"+password;
String encodedString = new String(Base64.encodeBase64(userpasswd.getBytes()));
....
and in ur httpconnection object add the below
conn.setRequestProperty("Authorization","Basic "+encodedString);
...
URL url = new URL("https://fyi.com");
conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestProperty("Authorization"....
if (conn instanceof HttpsURLConnection)
((HttpsURLConnection) conn).setHostnameVerifier(DNV);
conn.connect();
how to use "Content-Disposition" for file download via http(s)/ftp server
Content-Disposition Header Field
This is an optional field. Never thought this could save my ass.
It has a wonderful param "filename" thru which we can out the content of the file to be downloaded. If you don't use it, the file will download with the servlet name.
Ex: /fyi/myservlet.do
While downloading the file, the dialog prompts to save file with myservlet.do which is really odd & when ur downloading a zip file the name says "save file myservlet.do"
If you dont understand any (:-) thing above see the below code.
response.setHeader("Content-Disposition", "attachment; filename="+ filename);
URL url = new URL("https://fyi/downloadfile/filename.zip");
conn = (HttpsURLConnection) url.openConnection();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream in = conn.getInputStream();
response.setContentType(conn.getContentType());
response.setContentLength(conn.getContentLength());
response.setHeader("Content-Disposition", "attachment; filename="
+ filename);
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int size = 0;
while ((size = in.read(buf)) >= 0) {
out.write(buf, 0, size);
}
in.close();
out.close();
}
try urself.
to know more about content-disp..
This is an optional field. Never thought this could save my ass.
It has a wonderful param "filename" thru which we can out the content of the file to be downloaded. If you don't use it, the file will download with the servlet name.
Ex: /fyi/myservlet.do
While downloading the file, the dialog prompts to save file with myservlet.do which is really odd & when ur downloading a zip file the name says "save file myservlet.do"
If you dont understand any (:-) thing above see the below code.
response.setHeader("Content-Disposition", "attachment; filename="+ filename);
URL url = new URL("https://fyi/downloadfile/filename.zip");
conn = (HttpsURLConnection) url.openConnection();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream in = conn.getInputStream();
response.setContentType(conn.getContentType());
response.setContentLength(conn.getContentLength());
response.setHeader("Content-Disposition", "attachment; filename="
+ filename);
OutputStream out = response.getOutputStream();
byte[] buf = new byte[1024];
int size = 0;
while ((size = in.read(buf)) >= 0) {
out.write(buf, 0, size);
}
in.close();
out.close();
}
try urself.
to know more about content-disp..
Wednesday, February 17, 2010
Spring - Finding the last user name in controller
HttpSession ss = request.getSession();
ss.getAttribute(AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY)
AuthenticationProcessingFilter is depricated use UsernamePasswordAuthenticationFilter instead
Click here for more details
This will be useful, when u want to redirect to different page from your Authentication Providers using form-login tag in http security.
form-login login-page="/login.do" default-target-url="/something.do" authentication-failure-url="/loginfailure.do"
ss.getAttribute(AuthenticationProcessingFilter.SPRING_SECURITY_LAST_USERNAME_KEY)
AuthenticationProcessingFilter is depricated use UsernamePasswordAuthenticationFilter instead
Click here for more details
This will be useful, when u want to redirect to different page from your Authentication Providers using form-login tag in http security.
form-login login-page="/login.do" default-target-url="/something.do" authentication-failure-url="/loginfailure.do"
Wednesday, February 10, 2010
HashMap Sorting
public LinkedHashMap sortHashMap(HashMap uMap) {
List mKey = new ArrayList(uMap.keySet());
List mValues = new ArrayList(uMap.values());
Collections.sort(mValues);
Collections.sort(mKey);
LinkedHashMap sortedMap =
new LinkedHashMap();
Iterator valueIt = mValues.iterator();
while (valueIt.hasNext()) {
Object val = valueIt.next();
Iterator keyIt = mKey.iterator();
while (keyIt.hasNext()) {
Object key = keyIt.next();
String comp1 = uMap.get(key).toString();
String comp2 = val.toString();
if (comp1.equals(comp2)){
uMap.remove(key);
mKey.remove(key);
sortedMap.put((String)key, (String)val);
break;
}
}
}
return sortedMap;
}
Original Post Click here
List
List
Collections.sort(mValues);
Collections.sort(mKey);
LinkedHashMap
new LinkedHashMap
Iterator
while (valueIt.hasNext()) {
Object val = valueIt.next();
Iterator
while (keyIt.hasNext()) {
Object key = keyIt.next();
String comp1 = uMap.get(key).toString();
String comp2 = val.toString();
if (comp1.equals(comp2)){
uMap.remove(key);
mKey.remove(key);
sortedMap.put((String)key, (String)val);
break;
}
}
}
return sortedMap;
}
Original Post Click here
Tuesday, February 09, 2010
JAVA PreparedStatement with IN clause
JAVA PreparedStatement with IN clause
//two private methods.
private String phbuilder(int length) {
StringBuilder b = new StringBuilder();
for (int i = 0; i < length;) {
b.append("?");
if (++i < length) b.append(",");
}
return b.toString();
}
private void setValues(PreparedStatement ps, Object... values) throws SQLException {
for (int i = 0; i < values.length; i++) {
ps.setObject(i + 1, values[i]);
}
}
Usage
String sql = String.format("SELECT * FROM others_pocket WHERE id IN (%s)", phbuilder(ids.size()));
....
statement = connection.prepareStatement(sql);
setValues(statement, ids.toArray());
resultSet = statement.executeQuery();
For other alternatives pls take a look here
//two private methods.
private String phbuilder(int length) {
StringBuilder b = new StringBuilder();
for (int i = 0; i < length;) {
b.append("?");
if (++i < length) b.append(",");
}
return b.toString();
}
private void setValues(PreparedStatement ps, Object... values) throws SQLException {
for (int i = 0; i < values.length; i++) {
ps.setObject(i + 1, values[i]);
}
}
Usage
String sql = String.format("SELECT * FROM others_pocket WHERE id IN (%s)", phbuilder(ids.size()));
....
statement = connection.prepareStatement(sql);
setValues(statement, ids.toArray());
resultSet = statement.executeQuery();
For other alternatives pls take a look here
Friday, February 05, 2010
JSP Expression Language (c:if>...)
Implicit Objects
The JSP expression language defines a set of implicit objects:
* pageContext: The context for the JSP page. Provides access to various objects including:
o servletContext: The context for the JSP page's servlet and any web components contained in the same application. See Accessing the Web Context.
o session: The session object for the client. See Maintaining Client State.
o request: The request triggering the execution of the JSP page. See Getting Information from Requests.
o response: The response returned by the JSP page. See Constructing Responses.
In addition, several implicit objects are available that allow easy access to the following objects:
* param: Maps a request parameter name to a single value
* paramValues: Maps a request parameter name to an array of values
* header: Maps a request header name to a single value
* headerValues: Maps a request header name to an array of values
* cookie: Maps a cookie name to a single cookie
* initParam: Maps a context initialization parameter name to a single value
Finally, there are objects that allow access to the various scoped variables described in Using Scope Objects.
* pageScope: Maps page-scoped variable names to their values
* requestScope: Maps request-scoped variable names to their values
* sessionScope: Maps session-scoped variable names to their values
* applicationScope: Maps application-scoped variable names to their values
When an expression references one of these objects by name, the appropriate object is returned instead of the corresponding attribute. For example, ${pageContext} returns the PageContext object, even if there is an existing pageContext attribute containing some other value.
Literals
The JSP expression language defines the following literals:
* Boolean: true and false
* Integer: as in Java
* Floating point: as in Java
* String: with single and double quotes; " is escaped as \", ' is escaped as \', and \ is escaped as \\.
* Null: null
Operators
In addition to the . and [] operators discussed in Variables, the JSP expression language provides the following operators:
* Arithmetic: +, - (binary), *, / and div, % and mod, - (unary)
* Logical: and, &&, or, ||, not, !
* Relational: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Comparisons can be made against other values, or against boolean, string, integer, or floating point literals.
* Empty: The empty operator is a prefix operation that can be used to determine whether a value is null or empty.
* Conditional: A ? B : C. Evaluate B or C, depending on the result of the evaluation of A.
The precedence of operators highest to lowest, left to right is as follows:
* [] .
* () - Used to change the precedence of operators.
* - (unary) not ! empty
* * / div % mod
* + - (binary)
* < > <= >= lt gt le ge
* == != eq ne
* && and
* || or
* ? :
Reserved Words
The following words are reserved for the JSP expression language and should not be used as identifiers.
and eq gt true instanceof
or ne le false empty
not lt ge null div mod
Note that many of these words are not in the language now, but they may be in the future, so you should avoid using them.
Examples
Table 12-2 contains example EL expressions and the result of evaluating them.
Table 12-2 Example Expressions
EL Expression
Result
${1 > (4/2)}
false
${4.0 >= 3}
true
${100.0 == 100}
true
${(10*10) ne 100}
false
${'a' < 'b'}
true
${'hip' gt 'hit'}
false
${4 > 3}
true
${1.2E4 + 1.4}
12001.4
${3 div 4}
0.75
${10 mod 4}
2
${empty param.Add}
True if the request parameter named Add is null or an empty string
${pageContext.request.contextPath}
The context path
${sessionScope.cart.numberOfItems}
The value of the numberOfItems property of the session-scoped attribute named cart
${param['mycom.productId']}
The value of the request parameter named mycom.productId
${header["host"]}
The host
${departments[deptName]}
The value of the entry named deptName in the departments map
${requestScope['javax.servlet.
forward.servlet_path']}
The value of the request-scoped attribute named javax.servlet.
forward.servlet_path
Functions
The JSP expression language defines a set of implicit objects:
* pageContext: The context for the JSP page. Provides access to various objects including:
o servletContext: The context for the JSP page's servlet and any web components contained in the same application. See Accessing the Web Context.
o session: The session object for the client. See Maintaining Client State.
o request: The request triggering the execution of the JSP page. See Getting Information from Requests.
o response: The response returned by the JSP page. See Constructing Responses.
In addition, several implicit objects are available that allow easy access to the following objects:
* param: Maps a request parameter name to a single value
* paramValues: Maps a request parameter name to an array of values
* header: Maps a request header name to a single value
* headerValues: Maps a request header name to an array of values
* cookie: Maps a cookie name to a single cookie
* initParam: Maps a context initialization parameter name to a single value
Finally, there are objects that allow access to the various scoped variables described in Using Scope Objects.
* pageScope: Maps page-scoped variable names to their values
* requestScope: Maps request-scoped variable names to their values
* sessionScope: Maps session-scoped variable names to their values
* applicationScope: Maps application-scoped variable names to their values
When an expression references one of these objects by name, the appropriate object is returned instead of the corresponding attribute. For example, ${pageContext} returns the PageContext object, even if there is an existing pageContext attribute containing some other value.
Literals
The JSP expression language defines the following literals:
* Boolean: true and false
* Integer: as in Java
* Floating point: as in Java
* String: with single and double quotes; " is escaped as \", ' is escaped as \', and \ is escaped as \\.
* Null: null
Operators
In addition to the . and [] operators discussed in Variables, the JSP expression language provides the following operators:
* Arithmetic: +, - (binary), *, / and div, % and mod, - (unary)
* Logical: and, &&, or, ||, not, !
* Relational: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Comparisons can be made against other values, or against boolean, string, integer, or floating point literals.
* Empty: The empty operator is a prefix operation that can be used to determine whether a value is null or empty.
* Conditional: A ? B : C. Evaluate B or C, depending on the result of the evaluation of A.
The precedence of operators highest to lowest, left to right is as follows:
* [] .
* () - Used to change the precedence of operators.
* - (unary) not ! empty
* * / div % mod
* + - (binary)
* < > <= >= lt gt le ge
* == != eq ne
* && and
* || or
* ? :
Reserved Words
The following words are reserved for the JSP expression language and should not be used as identifiers.
and eq gt true instanceof
or ne le false empty
not lt ge null div mod
Note that many of these words are not in the language now, but they may be in the future, so you should avoid using them.
Examples
Table 12-2 contains example EL expressions and the result of evaluating them.
Table 12-2 Example Expressions
EL Expression
Result
${1 > (4/2)}
false
${4.0 >= 3}
true
${100.0 == 100}
true
${(10*10) ne 100}
false
${'a' < 'b'}
true
${'hip' gt 'hit'}
false
${4 > 3}
true
${1.2E4 + 1.4}
12001.4
${3 div 4}
0.75
${10 mod 4}
2
${empty param.Add}
True if the request parameter named Add is null or an empty string
${pageContext.request.contextPath}
The context path
${sessionScope.cart.numberOfItems}
The value of the numberOfItems property of the session-scoped attribute named cart
${param['mycom.productId']}
The value of the request parameter named mycom.productId
${header["host"]}
The host
${departments[deptName]}
The value of the entry named deptName in the departments map
${requestScope['javax.servlet.
forward.servlet_path']}
The value of the request-scoped attribute named javax.servlet.
forward.servlet_path
Functions
HttpServletRequest Objects
Many time encountered with trying to get servlet context, url, path , port number.
This is for reference.
Window Url:
http://localhost:8080/mycomp/myservlet?something=nothing
- request.getRequestURL().toString()
http://localhost:8080/mycomp/myservlet?something=nothing
- request.getContextPath().toString();
/mycomp
---------url.split(cntxt)[0]---------http://localhost:8080
----request.getProtocol()---------HTTP/1.1
----request.getServletPath()---------/myservlet
----request.getRemoteHost()--------0:0:0:0:0:0:0:1
---------url.split(cntxt)[0]---------http://localhost:8080
This is for reference.
Window Url:
http://localhost:8080/mycomp/myservlet?something=nothing
- request.getRequestURL().toString()
http://localhost:8080/mycomp/myservlet?something=nothing
- request.getContextPath().toString();
/mycomp
---------url.split(cntxt)[0]---------http://localhost:8080
----request.getProtocol()---------HTTP/1.1
----request.getServletPath()---------/myservlet
----request.getRemoteHost()--------0:0:0:0:0:0:0:1
---------url.split(cntxt)[0]---------http://localhost:8080
Spring Security ACL - Very basic tutorial Introduction
Spring Security ACL - very basic tutorial
Introduction
http://grzegorzborkowski.blogspot.com/2008/10/spring-security-acl-very-basic-tutorial.html
Introduction
http://grzegorzborkowski.blogspot.com/2008/10/spring-security-acl-very-basic-tutorial.html
Subscribe to:
Comments (Atom)