Java
Published: 13:16, Thursday 14 July 2011
Notes
What's this? See my article about Notes.
string operations:
explode/split: str.split(regex) -> String[]
implode
kd
% javac -classpath .:kd.jar kddemo.java
% javac -classpath .:kd.jar kdrange.java
% javac -classpath .:kd.jar kdtime.java
% javac -classpath .:kd.jar kdnbrs.java
% java -classpath .:kd.jar kddemo
% java -classpath .:kd.jar kdrange
% java -classpath .:kd.jar kdtime 10000 2 100
(for example)
% java -classpath .:kd.jar kdnbrs 10000 3 100
(for example)
gcc java
gcj-jdk
java
arguments:
assertions: -ea
compiler:
javac
debugger:
jdb
run:
javac Main.jar
(generates bytecode Main.class)
java Main
tomcat
tomcat6 tomcat6-admin tomcat6-docs tomcat6-user
install info
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk (don't have java-6-sun as suggested)
installed in /home/nicolamr/Scrivania/data/tomcat/
startup script is in bin/startup.sh
runs in localhost:8080
created symlink from webapps to /home/nicolamr/Scrivania/prog/tomcat
tomcat projects
edit, compile (ant) and move .war to webapps
sometimes ant clean
sockets:
tcp:
client:
java.io.* and java.net.*;
// input stream
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket(host, port);
DataOutputStream outToServer = new DataOutputStream(client.Socket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println(modifiedSentence);
clientSocket.close();
server (accepts only one socket):
ServerSocket welcomeSocket = new ServerSocket(port);
while (true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
read= inFromClient.readLine();
outToClient.writeBytes(string + '\n');
}
listen to more sockets (threads):
while(true) {
Socket connectionSocket = welcomeSocket.accept();
ServerThread thread = new ServerThread(connectionSocket);
thread.start();
}
and do all the rest in ServerThread
udp:
client:
DatagramSocket clientSocket = new DatagramSocket();
InetAddress IPAddress = InetAddress.getByName("hostname");
byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
String sentence = inFromUser.readLine();
sendData = sentence.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
clientSocket.send(sendPacket);
DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length);
clientSocket.receive(receivePacket);
String modifiedSentence = new String(receivePacket.getData());
clientSocket.close();
server:
DatagramSocket serverSocket = new DatagramSocket(port);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
InetAddress IPAddress = receivePacket.getAddress();
int port = receivePacket.getPort();
sendData = string.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
}
rpc/remote procedure call:
rmiregistry & (start in same directory)
client:
LocateRegistry.getRegistry('localhost')
registry.lookup(name);
read file:
try {
File file = new File(filename);
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
String contents = "";
while (dis.available() != 0) {
contents .= dis.readLine() . '\n';
}
fis.close();
bis.close();
dis.close();
} catch (Exception e) {
e.printStackTrace();
}
save to file/write to file:
try{
// Create file
BufferedWriter out = new BufferedWriter(new FileWriter("out.txt"));
out.writeln("Hello Java");
//Close the output stream
out.close();
} catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
control flow:
label: for (...) { ... for (...) { ... continue label;
read file to bytearray:
File file = new File(fileName);
InputStream is = new FileInputStream(file);
long length = file.length();
if (length > Integer.MAX_VALUE) throw new Exception();
byte[] bytes = new byte[(int) length];
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead=is.read(bytes, offset, bytes.length-offset)) >= 0) {
offset += numRead;
}
if (offset < bytes.length) throw new Exception();
is.close();
return bytes;
strings/integers:
string to int: Integer.parseInt(str);
int to string: Integer.toString(int);
datastructures:
set:
interface Set
class HashSet
chaotic iteration
EnumSet
optimized for enums
hashtables:
LinkedHashMap
iterate in insertion order
linkedlist/queue:
LinkedList
web development:
play framework
play new app
(will create a dir as well)
play start app
play eclipsify app
conf/routes
conf/application.conf
tags:
#{extends 'main.html' /}
#{set title:'Home' /}
#{welcome /}
#{doLayout /}
change port:
eclipse does sth with port 9000, so
conf/application.conf http.port
hg init .hgignore tmp, modules, lib, test-result logs, then addremove and
uses jpa
Write a Comment
Name:
*
Email:
Website:
If you are human write 'o':
*
Title:
*
Your comment:
*
* These fields are mandatory.
© Copyright 2009-2011 Nicola Marcacci Rossi