export PATH=$PATH:/c/Program\ Files\ \(x86\)/Git/bin
Математическое моделирование
математическое моделирование, виртуальные машины, virtual box, debian, численные методы, языки программирования, java, c++
Совместная работа git и mingw
Как полностью удалить Java 6 и установить Java/JDK 7 на debian (mint)
apt-get install openjdk-7-jdk apt-get remove openjdk-6-jre apt-get remove openjdk-6-jre-libМожно попробовать другой метод:
apt-get autoremove openjdk-6-jreПри этом не забываем, что ваш пользователь должен быть судоером.
Удаление лишних файлов при работе с pdflatex и bibtex в Windows с помощью bat
pdflatex paper bibtex paper pdflatex paper pdflatex paper del *.aux *.log *.blg *.bblЕсли вы не используете библиографию, то вам не нужно использовать первые две строки этого файла.
Установка TeX Live на Windows
Для установки TeX Live заходим сюда и выбираем пункт download, что перебрасывает нас на страницу загрузки. На ней мы должны выбрать загрузчик для Windows install-tl.exe. Если вы используете *nix, то выбирайте install-tl-unx.tar.gz. Кроме того, для загрузки можно использовать торрент, с помощью которого можно загрузить ISO образ диска.
Далее для Windows запускаем install-tl.exe. Появляется некоторое меню, в котором не сложно разобраться. Я выбрал пункт "Custom", чтобы знать что и куда я устанавливаю. В результате мы приходим к окну показанному на рисунке 1. Если вы хотите что-либо изменить в настройках, то меняйте (новичкам это делать не рекомендуется).

Рисунок 1. Окно установки TeX Live.
После нажатия на кнопку "Установить TeX Live" начнется довольно длительный процесс скачивания пакетов (около 4 ГБ, рисунок 2), поэтому, если у вас медленный интернет, то нужно будет запастись терпением. У меня на это ушло около 40 минут.
Рисунок 2. Процесс установки TeX Live.
После установки вы всегда можете обновить пакеты в TeX Live с помощью менеджера пакетов. Для этого вам нужно будет в командной строке набрать:
tlmgr update --all
String, StringBuffer и StringBuilder: сравнение
public class One {
public static void main(String[] args) {
String string = new String("My string test");
string += " for String class";
}
}
public class Two {
public static void main(String[] args) {
StringBuffer string = new StringBuffer("My string test");
string.append(" for String class");
}
}
public class StrBuild {
public static void main(String[] args) {
StringBuilder string = new StringBuilder("My string test");
string.append(" for String class");
}
}
1 Сравнение байт-кода
Сравниваем байт-код с помощью
javap -c NameOfClass.classВ результате получаем следующий вывод на экран:
Compiled from "One.java"
public class Strings.One {
public Strings.One();
Code:
0: aload_0
1: invokespecial #8 // Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #16 // class java/lang/String
3: dup
4: ldc #18 // String My string test
6: invokespecial #20 // Method java/lang/String."":(Ljava/lang/String;)V
9: astore_1
10: new #23 // class java/lang/StringBuilder
13: dup
14: aload_1
15: invokestatic #25 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
18: invokespecial #29 // Method java/lang/StringBuilder."":(Ljava/lang/String;)V
21: ldc #30 // String for String class
23: invokevirtual #32 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
26: invokevirtual #36 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
29: astore_1
30: return
}
Compiled from "Two.java"
public class Strings.Two {
public Strings.Two();
Code:
0: aload_0
1: invokespecial #8 // Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #16 // class java/lang/StringBuffer
3: dup
4: ldc #18 // String My string test
6: invokespecial #20 // Method java/lang/StringBuffer."":(Ljava/lang/String;)V
9: astore_1
10: aload_1
11: ldc #23 // String for String class
13: invokevirtual #25 // Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
16: pop
17: return
}
Compiled from "StrBuild.java"
public class Strings.StrBuild {
public Strings.StrBuild();
Code:
0: aload_0
1: invokespecial #8 // Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: new #16 // class java/lang/StringBuilder
3: dup
4: ldc #18 // String My string test
6: invokespecial #20 // Method java/lang/StringBuilder."":(Ljava/lang/String;)V
9: astore_1
10: aload_1
11: ldc #23 // String for String class
13: invokevirtual #25 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: pop
17: return
}
Здесь видно, что байт-код StringBuffer и StringBuilder оказался почти в два раза короче, чем для String. 2 Время выполнения
Для оценки быстродействия двух классов был использован следующий алгоритм:
public class Three {
public static String concatWithString() {
String t = "Cat";
for (int i = 0; i < 100000; i++) {
t += "Dog";
}
return t;
}
public static String concatWithStringBuffer() {
StringBuffer sb = new StringBuffer("Cat");
for (int i = 0; i < 100000; i++) {
sb.append("Dog");
}
return sb.toString();
}
public static String concatWithStringBuilder() {
StringBuilder sb = new StringBuilder("Cat");
for (int i = 0; i < 100000; i++) {
sb.append("Dog");
}
return sb.toString();
}
public static void main(String[] args) {
long start = System.currentTimeMillis();
concatWithString();
System.out.println("Concat with String took: " + (System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
concatWithStringBuffer();
System.out.println("Concat with StringBuffer took: " + (System.currentTimeMillis() - start) + "ms");
start = System.currentTimeMillis();
concatWithStringBuilder();
System.out.println("Concat with StringBuilder took: " + (System.currentTimeMillis() - start) + "ms");
}
}
В результате я получил следующие значения:
Concat with String took: 12478ms Concat with StringBuffer took: 6ms Concat with StringBuilder took: 4msИспользуя полученные результаты и документацию можно сделать следующие выводы
1) String является неизменяемым объектом (immutable), в то время как StringBuffer и StringBuilder являются изменяемыми объектами (mutable).
2) Используйте String вам требуется неизменяемый объект, Stringbuffer - если требуется изменяемый и потокобезопасность, StringBuilder изменяемый и не требуется обеспечивать безопасность потоков.