Заметки C#
Выход из вложенного цикла(двойной цикл)
Имеем код
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
//действия
//выход из цикла
}
}
}
Использую break внутри второго цикла даст только выход из него
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
//действия
/*
При такой конструкции мы будем выходить из внутреннего цикла (j), но внешний так и
продолжит свою работу(i)
*/
break;//выход из цикла
}
}
}
Для полного выхода из цикла есть несколько вариантов.
1) применить оператор goto
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
//действия
goto Found;//выход из цикла
}
}
}
Found:
//едем дальше
2) Затолкать цикл в функции и использовать оператор return
public void Loop()
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
//действия
return;//выход из цикла
}
}
}
}
3) Использование дополнительного флага для первого цикла
var flag = false;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
//действия
//выход из цикла
flag = true;
break;
}
}
if(flag == true) break;
}
4) Последний вариант. Присвоить i максимально возможное значение при первом выходе из цикла.
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
//действия
//выход из цикла
i = Int32.MaxValue - 1;
/*
Это примерно тоже само что сделать
i = 1000000;
*/
}
}
}
Комментарии 0 2019-10-29 04:10:33
Заметки Oracle
Немного по Oracl'у
Как отключить режим ARCHIVELOG-- Остановим БД, она и так не работает:
SHUTDOWN IMMEDIATE;
-- Запустим экземпляр ORACLE:
STARTUP NOMOUNT;
-- Смонтируем базу. Менять режим архивирования следует в состоянии MOUNT:
ALTER DATABASE MOUNT;
-- Отключаем режим ARCHIVELOG
ALTER DATABASE NOARCHIVELOG;
-- Откроем базу:
ALTER DATABASE OPEN;
Расширение табличного пространства TEMP.DBF
Была проблема с тем что табличное пространство TEMP1.DBF занимал много места, решением было пересоздать пространство на новое(TEMP2.DBF), и удалить старое. В итоге прошло всё успешно, но забыл указать авторасширение табличного пространства. Данный код решает эту проблему:
ALTER DATABASE DATAFILE 'путь_до_файла/TEMP2.dbf' AUTOEXTEND ON NEXT 100М MAXSIZE UNLIMITED;
А теперь о пересоздании и переназначении табличного пространства TEMP1.DBF.
Создаём пространство TEMP2.DBF
CREATE
TEMPORARY TABLESPACE "TEMP2" TEMPFILE 'путь_к_файлу/TEMP2.dbf' SIZE 100M AUTOEXTEND ON MANAGEMENT LOCAL UNIFORM SIZE
22M;
После делаем его default-м
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE "TEMP2"
Далее удаляем старое пространство
--Приведенный оператор автоматически уничтожит файлы данных вместе с табличным пространством.
DROP TABLESPACE TEMP1 INCLUDING CONTENTS AND DATAFILES;
После можем физически удалить файл TEMP1.DBF из папки где он находится.
Комментарии 0 2019-07-04 04:30:28
PHP Заметки
Удаление файлов по маске в PHP
//Удаляем все файлы по маске
array_map("unlink", glob($_SERVER['DOCUMENT_ROOT'].'/your/folder/file_name*.txt'));
glob ( string $pattern [, int $flags = 0 ] ) : array
Функция glob() ищет все пути, совпадающие с шаблоном pattern согласно правилам, используемым в функции glob() библиотеки libc, которые похожи на правила, используемые большинством распространённых оболочек.
unlink ( string $filename [, resource $context ] ) : bool
Удаляет файл filename. Функция похожа на функцию unlink() Unix в C. При неудачном выполнении будет вызвана ошибка уровня E_WARNING.
array_map ( callable $callback , array $array1 [, array $... ] ) : array
array_map — Применяет callback-функцию ко всем элементам указанных массивов
Описание
glob – получает массив всех файлов, удовлетворяющих нашей маске.
array_map – прогоняет функцию unlink, которая позволяет в PHP удалить файл, по элементам массива, выданного функцией glob.
Все очень просто: сколько файлов требуется удалить по данной маске, столько раз и вызовется функция unlink. А сама функция unlink может удалять 1 файл за раз.
Комментарии 0 2019-06-26 23:34:53
C# Заметки
Нано заметки по С#
Сегодняшняя дата в stringstring nowdate = DateTime.Now.ToShortDateString();
//nowdate = 15.10.2018
Сегодняшняя дата со временем в string
string nowdate = DateTime.Now.ToShortTimeString();
//15.10.2018 21:37
Последний день нынешнего месяца
int nowdate = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
//31
Последний день предыдущего(и не только) месяца
string nowdate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-1).AddDays(-1).ToShortDateString();
//31.05.2019
Комментарии 0 2018-10-15 11:41:52