Java

  • VM args
    -Duser.timezone=Brazil/East -Dfile.encoding=ISO-8859-1 -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv6Address=false
    
  • sched_(get|set)affinity

    1) Create ThreadLib.java:
    public class ThreadLib
    {
       ...
       public static native int getAffinity();
       public static native int setAffinity(int mask);
       ...
    }
    
    2) Type:
    javah -jni ThreadLib to create ThreadLib.h
    
    3) Create ThreadLib.c:
    #define _GNU_SOURCE
    #include <jni.h>
    #include <sched.h>
    #include "ThreadLib.h"
    
    JNIEXPORT jint JNICALL Java_ThreadLib_getAffinity(JNIEnv *env, jclass class)
     {
        unsigned long mask;
        unsigned int len = sizeof(mask);
    
        if (sched_getaffinity(0, len, &mask) < 0)
        {
            return -1;
        }
    
        return mask;
     }
    
    JNIEXPORT jint JNICALL Java_ThreadLib_setAffinity(JNIEnv *env, jclass class, jint m)
    {
        unsigned long mask = (unsigned long) m;
        unsigned int len = sizeof(mask);
    
        if (sched_setaffinity(0, len, &mask) < 0)
        {
            return -1;
        }
    
        return m;
    }
    
    4) Compile shared library with:
    gcc -fPIC -shared -I /home/irocha/j2se/include -I /home/irocha/j2se/include/linux/ ThreadLib.c -o libThreadLib.so
    
    5) Set LD_LIBRARY_PATH

    6) Execute any java code with:
    int af = ThreadLib.getAffinity();
    System.out.println("Affinity: " + af);
                    
    int ret = ThreadLib.setAffinity(1);
    System.out.println("SetAffinity: " + ret);
    


  • Java + MySQL + SSL

    1) Create CA certificate:
    openssl genrsa 2048 > ca-key.pem
    openssl req -new -x509 -nodes -days 1000 -key ca-key.pem > ca-cert.pem
    
    2) Create server certificate:
    openssl req -newkey rsa:2048 -days 1000 -nodes -keyout server-key.pem > server-req.pem
    openssl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > server-cert.pem
    
    3) Create client certificate:
    openssl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem > client-req.pem
    openssl x509 -req -in client-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01 > client-cert.pem
    
    4) Hack:
    openssl x509 -outform DER -in client-cert.pem -out client.cert
    
    5) Java Setup:
    keytool -import -alias mysqlServerCACert -file cacert.pem -keystore truststore
    keytool -import -file  client.cert -alias mysqlClientCertificate -keystore keystore
    
    Java Options:
    -Djavax.net.ssl.keyStore=path_to_keystore_file
    -Djavax.net.ssl.keyStorePassword=password
    -Djavax.net.ssl.trustStore=path_to_truststore_file
    -Djavax.net.ssl.trustStorePassword=password 
    
    or
    System.setProperty("javax.net.ssl.keyStore","path_to_keystore_file");
    System.setProperty("javax.net.ssl.keyStorePassword","password");
    System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
    System.setProperty("javax.net.ssl.trustStorePassword","password");
    
    Tests:
    openssl genrsa -out key.pem 1024
    openssl rsa -in key.pem -outform DER -out key.der
    openssl rsa -pubout -outform DER -out keyp.der -in key.pem
    openssl base64 -in key.der -out key.pri
    openssl base64 -in keyp.der -out key.pub
    openssl rsautl -inkey key.pem -in test.txt -out test.enc -encrypt
    openssl rsautl -inkey key.pem -in test.enc -out test.txt -decrypt 
    
    and
    openssl enc -aes-256-cbc -in file.txt -out file.enc -iv 0 -K eab9855a666fb697e31ee606dc372a248d29b92528612e6f009f55874bcff6f8
    openssl enc -d -aes-256-cbc -in file.enc -iv 0 -K eab9855a666fb697e31ee606dc372a248d29b92528612e6f009f55874bcff6f8