Monthly Archives: Март 2013

Как прописать системную переменную JAVA_HOME

Для начала проверим прописана ли системная переменная JAVA_HOME у вас в Windows.

В командной строке наберите:
echo %JAVA_HOME%


Как быстро вызвать командную строку?
Нажмите Win+R. И в окне «Выполнить» наберите команду «cmd»


Если будет выведен следующий результат: «%JAVA_HOME%», значит системная переменная не установлена.

Приступим к настройке. Откройте свойства компьютера, для этого на значке «Мой компьютер» («Компьютер») вызовите контекстное меню и выберите пункт «Свойства». Зайдите в «Дополнительные параметры системы» («Дополнительно»). Нажмите кнопку «Переменные среды…». Во второй таблице под названием «Системные переменные» нажмите кнопку «Создать».
set-java-home

В окне «Новая системная переменная» в поле «Имя переменной» укажите «JAVA_HOME» и в поле «Значение переменной» укажите путь к JDK или JRE (В чем разница JDK и JRE?). Чтобы не было опечаток, лучше скопируйте этот путь. Нажмите «OK», в окне «Переменные среды» также нажмите «OK». Переменная JAVA_HOME создана!

Для проверки снова набери команду в командной строке:
echo %JAVA_HOME%
Должен появиться путь к вашей JDK или JRE (в данном примере указан путь к JDK):
C:\Program Files\Java\jdk1.6.0_43

В чем разница JDK и JRE

JDK [Java Development Kit] — Набор инструментов для разработки на Java, сюда входить компилятор языка — javac
JRE [Java Runtime Environment] — минимальная реализация виртуальной машины, необходимая для исполнения Java-приложений, без компилятора и других средств разработки.

Другими словами JDK в основном используется в разработке, и для работы IDE (интегрированных сред разработки) нужен именно JDK.
JRE — это всего лишь исполняемая среда, благодаря которой можно запустить приложение созданное на java.

Установка JDK (Windows)

JDK(Java Development Kit) — это пакет для разработки приложений на языке Java
Скачать JDK можно с сайта Oracle, которому теперь принадлежит Java.
1) Открываем сайт oracle.com
2) Выбирает раздел Downloads
3) Нажимаем ссылку Java for Developers
В таблице Java Platform, Standard Edition найдите последнее обновление для Java 6, у меня это Java SE 6 Update 43 (можно скачать и 7-ю версию, но 6-й версией меньше проблем).
В столбце JDK нажмите кнопку Download
download jdk

Перед тем как что-то скачать, нужно согласиться с лицензионным соглашением, выбрав опцию «Accept License Agreement».
jdk-version
Нам нужно выбрать версию для Windows и определиться с разрядностью:
Если у вас 32-разрядный Windows(x86), то вам подойдет только 32 разрядная версия Java;
Если у вас 64-разрядкая Windows(x64), то можете выбрать 32 или 64-разрядкую Java. Но хочу отметить, что 64-разрядная Java более производительная и поддерживает большее кол-во оперативной памяти.
Я выберу 64-битную версию (x64) — jdk-6u43-windows-x64.exe.

Запускаем файл jdk-6u43-windows-x64.exe.

В окне приветствия просто нажмите «Next»
welcome-jdk-installation

Директорию установки можно оставить без изменения и нажать «Next»
jdk-install-path

Дождитесь окончания копирование файлов …

Также установщик спросит куда устанавливать JRE (Java Runtime Environment — минимальная реализация виртуальной машины, необходимая для исполнения Java-приложений, без компилятора и других средств разработки).
Директорию установки JRE также можно оставить без изменения. Нажмите «Next»
jre-install-path

В окне успешного завершения установки нажмите кнопку «Finish»
installation-complete

Теперь проверим доступность java. В командной строке наберите команду:

java -version

Должны вывестись следующие строки:
java version «1.6.0_43»
Java(TM) SE Runtime Environment (build 1.6.0_43-b01)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)

Также желательно прописать системную переменную %JAVA_HOME%.

Установка и настройка JDK окончена!

Шпаргалка по Windows

Как задать английский язык для ввода пароля при входе в Windows 7:
В реестре Windows найдите раздел HKU\.DEFAULT\Keyboard Layout\Preload
В нем укажите параметру 1 значение 409, а параметру 2 значение 419.

[1] 409 (английская раскладка)
[2] 419 (русская раскладка)


Шпаргалка по MySQL (Foreign Key)

Отключить проверку внешних ключей

SET foreign_key_checks = 0;

Включить проверку внешних ключей

SET foreign_key_checks = 1;

Просмотреть ограничения для таблицы:

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE CONSTRAINT_SCHEMA = 'YOUR_DATABASE' AND TABLE_NAME = 'YOUR_TABLE';

Просмотреть ссылочное ограничение двух связанных таблиц (имя ограничения — поле CONSTRAINT_NAME):

SELECT CONSTRAINT_SCHEMA,CONSTRAINT_NAME,TABLE_NAME,REFERENCED_TABLE_NAME 
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
WHERE CONSTRAINT_SCHEMA = 'YOUR_DATABASE' 
AND TABLE_NAME = 'YOUR_TABLE' AND REFERENCED_TABLE_NAME = 'YOUR_REFERENCED_TABLE'

Возможные проблемы с MySQL

  1. Просто установить MySQL мало, нужно его еще  донастроить. Самое главное — нужно не забыть про настройку max_allowed_packet (максимально разрешенный размер пакета). Например, если max_allowed_packet равен 1 мегабает, то в один прекрасный день вы не сможет записать данные размером более 1 мегабайта.
    Появится ошибка вида: Packet for query is too large (27545659 > 1048576)
    Теперь о том, как увеличить max_allowed_packet.


    Для windows:
    В файле my.ini после строки[mysqld]пропишите следующее значение max_allowed_packet=512M
    Не забудьте перегрузить службу MySQL!


    Для redhat:
    В файле /etc/my.cnf в блок [mysqld] пропишите следующий параметр max_allowed_packet = 512M
    Не забудьте перегрузить сервиc mysqld!

    service mysqld restart

  2. При создании базы данных сразу же указывайте кодировку UTF-8, иначе в linux-системах, будет проблема с юникодными символами:

    CREATE DATABASE your_database DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

  3. Проблема с кодировкой при подключении к базе данных. Допустим, у нас есть строка подключения с указанием кодировки UTF8:
    jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8
    Та же строка из-за экранирования символов в xml документе будет выглядеть так:
    jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8
    Если вы нечайно возьмете строку экранированную для xml с & ошибки не возникнет, но кодировка не установиться. Вместо кириллицы будут вопросительные знаки. В windows проблема c кодировкой может и не возникнет, но в unix и linux обязательно возникнет.


  4. Может возникнуть проблема с внешними ключами (foreign key). Очень важно следить какой движок у ваших таблиц. У связанных таблиц движок должен быть InnoDB. Если у одной таблицы движок InnoDB, а у другой MyISAM, внешний ключ будет создан, но вы не сможете вставить данные в столбец с Foreign Key. Как это исправить:
    1) Нужно поменять движок у существующих таблиц. Для каждой таблицы выполните запрос:

    ALTER TABLE название_таблицы ENGINE=InnoDB;

    Чтобы вычислить таблицы с движок отличным от InnoDB выполните запрос:

    SELECT    
        TABLE_NAME,
        ENGINE,
        CONCAT(CONCAT('ALTER TABLE ',TABLE_NAME),' ENGINE=InnoDB;')
    FROM
        INFORMATION_SCHEMA.TABLES
    WHERE
        TABLE_SCHEMA=DATABASE() AND ENGINE <> 'InnoDB'

    Результатом будет: название таблицы, текущий движок таблицы и уже сформированный запрос на изменение движка на InnoDB. Вам остается выбрать запросы для тех таблиц, у которых вы хотите поменять движок.
    2) Как можно проконтролировать создание таблиц именно с движком InnoDB. Во-первых, можно при создании таблицы явно указать движок InnoDB. Во-вторых, можно установить движок InnoDB по умолчанию. Для этого в файлах my.ini (для windows) и my.cnf (для linux) в секции [mysqld] сделайте следующую настройку:

    default-storage-engine=innodb
    

  5. MySQL по умолчанию хранить таблицы (innodb) в одном файле. Причем размер этого файла никогда не уменьшается, т.е. если он достиг одного уровня, и вы удалили некоторые данные, MySQL не отдаст это свободное пространство. Это может быть критично при дефиците свободного места на диске.
    Чтобы решить эту проблему нужно перед созданием базы данных добавить в конфигурационный файл опцию:

    innodb_file_per_table=1
    

    После установки этой опции каждая таблица будет храниться в отдельном файле. Это также может быть полезно при ограничении на размер файла в операционной системе.
    Для начала лучше потренироваться на тестовой базе данных, а потом пробовать на боевой, сняв перед этим резервную копию.