Архив автора: admin

Чему программисты на Java должны научиться в 2021 году. Часть для новичков: Core Java

Если вы хотите изучить Java, вам может быть интересно, с чего начать. На каких технологиях стоит сосредоточиться? Независимо от того, являетесь ли вы новичком в этом языке, изучаете средний уровень или уже используете Java в работе, в этой статье исследуются основные моменты, которые вам необходимо знать.

Изучение языка программирования — технологический процесс, требующий серьезной подготовки. Иначе можно запросто «подавиться» самим учебным процессом.

 

№1. Часть для новичков: Core Java

Перво-наперво. Никаких сюрпризов, Core Java — необходимость для каждого Java-разработчика в течение каждого года существования языка. Это хорошая новость, потому что даже ИТ-специалистам нужна стабильность.

Что ж, Core Java — это как основные правила любого языка. Чтобы стать программистом, вам обязательно нужно научиться программировать в общем смысле. Ядро Java содержит синтаксис, основные конструкции и концепции языка. Вот они.

 

Синтаксис

Вы можете получить синтаксис как алфавит Java. Учиться — это что-то вроде написания первых слов в школе. Итак, первое, что вы узнаете о Java, — это синтаксис. Однако лучше учиться на практике, начиная с самых первых шагов java обучение.

Основные темы синтаксиса Java:

  • Что такое объект
  • Что такое класс
  • Что такое переменная
  • Что такое метод
  • Метод System.out.println()
  • Примитивные типы (int, double, boolean, char и т. д.)
  • Нить
  • Основные арифметические и логические операторы
  • Филиалы: оператор if-else
  • Операторы цикла (for, while)
  • Массивы

Хорошее знание синтаксиса Java — это то же самое, что знание иностранного языка на уровне A1.

 

Концепции ООП

Современные версии языка поддерживают функциональное программирование, однако программирование на Java в большей или меньшей степени связано с объектно-ориентированным программированием (ООП).

Вот почему глубокое понимание ООП чрезвычайно важно для каждого, кто хочет стать Java-разработчиком. Эта тема не особо сложная. Однако требуется много практики, чтобы почувствовать все нюансы ООП.

При изучении ООП сначала необходимо понять, что такое объект, чем атрибуты отличаются от поведения и как они должны выражаться в Java. Идеи наследования, инкапсуляции и полиморфизма необходимо понять настолько глубоко, чтобы вы могли научиться правильно строить иерархию объектов в своих программах.

Изучая ООП, рекомендую решать много задач и много читать. Взгляните на код классов Java, узнайте, как они соотносятся друг с другом. Не ленитесь, читайте книги по существу.

 

Платформа Collection

Платформа Collection предоставляет архитектуру для хранения и управления группами объектов.

Работа с коллекциями позволяет выполнять типичные операции с данными: поиск, сортировку, вставку, изменение и удаление. Интерфейсы и классы коллекций действительно важно знать как для вашей работы, так и для собеседований. Как я упоминал выше, они по-разному эффективны для разных операций. В Collection Framework не так много конкретных классов, которые можно было бы мгновенно использовать во время работы. Самыми популярными являются ArrayList и HashMap.

Курсы обучения Java для новичков и профессионалов: https://checkroi.ru/, CheckROI — Каталог онлайн-курсов и обучающих программ.

Однако во время собеседования нужно отлично ориентироваться в коллекциях, их особенностях. Нужно понимать, в каких случаях нужно использовать каждый из них. Изучая их, вы также поднимете еще одну важную тему — структуры данных, но об этом позже.

 

Класс объекта Java

Каждый класс Java неявно наследуется от класса Object. Следовательно, все типы и классы могут реализовывать методы, определенные в классе Object. Мы полагаем, что в какой-то момент в изучении языка после ООП важно получить реализацию класса Object и его методы. Это очень помогает понять суть языка.

 

Исключения

Исключение составляют ненормальные ситуации, но выучить их нормально и не очень сложно. Это замечательный механизм, упрощающий поиск ошибок, и абсолютно все Java-программисты используют его в своей работе.

 

Дженерики

Обобщения (общие типы и методы) позволяют нам уйти от жесткого определения используемых типов. Тема, хотя поначалу необычная, не очень сложная. Чем быстрее вы их изучите, тем лучше будет ваш код.

 

Многопоточность

Эта тема довольно сложна почти для каждого новичка в Java. Однако наши выпускники отмечают, что рекрутеры не предъявляют очень высоких требований по этой теме к тем, кто претендует на позицию Java Junior. Все зависит от проекта, но начинающим разработчикам редко приходится работать с многопоточностью. И в целом эта тема позволяет учиться прямо в процессе.

 

Продолжение:



2021-06-04T22:55:24
Java

Как настроить WARP VPN в маршрутизаторе Keenetic

Как вы знаете компания Cloudflare запустила бесплатный VPN-сервис Warp VPN. Для его использования нужно установить приложение «1.1.1.1 + WARP VPN». Оно доступно для устройств с операционными системами Android, iOS и Windows. Читать

5 советов по выбору правильного сканера штрих-кода

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

Так почему же вам следует подумать об использовании портативных терминалов сбора данных тсд для автоматизации бронирования и управления турами?

 

1. Печать и продажа билетов с помощью одного устройства

Портативные терминалы позволяют продавать, сканировать и проверять билеты — физические и электронные — когда и где вам нужно. Благодаря встроенным процессорам кредитных карт принимать мгновенные платежи очень просто. Убедитесь, что ваш поставщик решений для бронирования гарантирует высокую степень безопасности, включая сертификаты PCI и EMV, а также POS-системы, защищенные идентификаторами и паролями.

 

2. Снизить административные расходы и уменьшить потери

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

 

3. Легкая портативная технология

Когда вы в пути, вас не отягощает тяжелое устройство. Выберите портативный POS-терминал, который является легким и компактным, но при этом достаточно мощным, чтобы легко, быстро и безопасно осуществлять продажу билетов.

 

4. Сбор данных в реальном времени

Простое в использовании интегрированное программное обеспечение помогает вам отслеживать продажи, делая информацию доступной 24/7 на вашей панели управления. Вы можете отслеживать продажи в своей дистрибьюторской сети, чтобы принимать решения в режиме реального времени на основе результатов в реальном времени.

Настройте панель управления так, чтобы отображалась только самая важная для вас информация.

 

5. Превосходное качество обслуживания клиентов

В конечном итоге в основе успешного тура лежит хорошее обслуживание клиентов. Использование портативного POS-терминала упрощает процесс как для туроператоров, так и для пассажиров, которым не хватает времени, обеспечивая беспроблемный тур для всех.



2021-06-04T11:22:14
Бизнес

Как пользоватья командой scp

Команда SCP, аббревиатура от Secure Copy, — это команда, используемая для безопасного копирования файлов в удаленную систему и из нее по протоколу SSH. Использование SSH означает, что он пользуется тем же уровнем шифрования данных, что и SSH, и, таким образом, считается безопасным способом передачи файлов между двумя удаленными хостами. В этом руководстве основное внимание будет уделено команде SCP и выделено несколько примеров использования.

Базовый синтаксис

Базовый синтаксис команды SCP представлен ниже:

$ scp [option] /path/to/source/file

user@server-IP:/path/to/destination/directory

Где:

/path/to/source/file — это исходный файл, который вы собираетесь скопировать на удаленный хост.

user@server-IP: — это имя пользователя и IP-адрес удаленной системы. Обратите внимание на двоеточие после IP-адреса.

/path/to/destination/directory: — это целевой каталог в удаленной системе, куда будет скопирован файл.

Команда SCP также имеет следующие параметры команды

-C — сжимает файл или каталог в процессе копирования.

-P — Используйте этот параметр, чтобы указать порт SSH, если порт SSH по умолчанию не установлен на 22.

-r — этот параметр рекурсивно копирует каталог вместе с его содержимым.

-r — сохраняет время доступа и изменения копируемого файла.

Копирование файла на удаленный сервер Linux

Чтобы скопировать файл без параметров, просто используйте показанный синтаксис. В приведенном ниже примере я копирую zip-файл nextcloud-21.0.1.zip в домашний каталог удаленного хоста  /home/bob. IP-адрес хоста —  192.168.2.103, а bob — пользователь для входа.

$ scp nextcloud-21.0.1.zip bob@192.168.2.103:/home/bob

Чтобы скопировать каталог, активируйте флаг -r, как показано. Здесь мы копируем каталог bashtop в домашний каталог удаленного узла.

$ scp -r bashtop bob@192.168.2.103:/home/bob

Копирование файла из удаленной системы в локальную систему

Кроме того, можно скопировать файл с удаленного узла в локальную систему, как показано ниже:

$ scp [option] user@server-IP:/path/to/source/file/path/to/local/directory

В приведенном ниже примере мы копируем файл sales.pdf из удаленной системы в локальную:

$ scp bob@192.168.2.103:/home/bob/sales.pdf /home/winnie

Точно так же вы можете скопировать каталог с удаленного хоста в локальную систему, используя флаг -r, как показано.

$ scp -r bob@192.168.2.103:/home/bob/reports_2020 /home/winnie

Для получения дополнительных сведений об использовании команды SCP посетите страницы руководства:

$ man scp

Заключение

Команда Linux SCP — это удобный и безопасный способ передачи файлов между двумя удаленными узлами, не беспокоясь о том, что злоумышленники будут отслеживать ваши данные.



2021-06-04T09:37:11
Вопросы читателей

Что такое китовый фишинг

Whaling или китовые фишинговые атаки — это разновидность атак социальной инженерии, направленных против конкретных богатых людей. Термин «whale phishing» подразумевает, что жертвы занимают стратегические позиции, обычно в экономическом отношении.

Это основное различие между whaling или whale phishing — атак и других видов фишинговых атак, как правило, запускаемых в широком масштабе.

Whale phishing or whaling — это разновидность цифрового мошенничества с использованием социальной инженерии, которая побуждает жертв совершать определенные действия, например переводить средства на счет злоумышленника. Китовые фишинговые атаки становятся все популярнее среди мошенников.

 

Характеристики китового фишинга

  • Атака содержит настраиваемый контент, специально разработанный для жертвы. Он также может включать точную информацию о жертве или организации, к которой он принадлежит.
  • Всестороннее знание отрасли, бизнеса или процедур, имен сотрудников и т. д.
  • Жертва известна или богата. В этом разница между китовым или китовым фишингом и целевым фишингом.
  • У контента есть ощущение срочности.

Эти аспекты делают китовые фишинговые атаки более изощренными, чем обычные фишинговые атаки , массовыми и жестокими. Однако успех атаки не зависит от ИТ или хакерских знаний. Хотя технологические знания могут быть ключом к сбору информации, атака основана на социальной инженерии: способности собирать ценную информацию для создания достоверного контента, побуждающего жертву доверять. Ключ к атаке — предыдущая разведка.

Термин «Whale phishing» означает масштаб атаки и выражение « большая рыба» для описания некоторых влиятельных лиц.

 

Профиль жертвы Whale phishing

Основные профили жертв включают финансовые учреждения и фирмы, оказывающие денежно-кредитные услуги. Технологические компании также подвергаются такого рода атакам, в том числе Google и Facebook.

Жертв убеждают предпринять определенные действия, например:

  • Перевод средств или пересылка поддельного сообщения.
  • Скачивание или распространение вредоносного кода.
  • Обмен ценной информацией для будущей атаки.

Яркий пример такого типа атаки случился с Snapchat. Один из руководителей получил электронное письмо от нового генерального директора с просьбой предоставить информацию о его отделе. Через некоторое время тот же руководитель получил указание от генерального директора перевести средства в размере 3 000 000 долларов США. Генеральный директор был выдан, а инструкция не была подлинной.

Другой пример — это такие гиганты, как Google и Facebook, жертвы фишинг-атаки на технологические компании на сумму 100000000 долларов США.

Злоумышленник представился руководителем Quanta Computer Inc. В этом мошенничестве злоумышленник открыл банковский счет в том же учреждении, которое Quanta Computer Inc. использовало для операций с жертвами.

В некоторых случаях жертвы вряд ли сообщат властям из-за ущерба репутации организации.

В 2018 году Forbes сообщил, что убытки от этого метода составили более 12 миллиардов долларов . Сегодня цифровые атаки участились.

 

Как совершаются Whale фишинговые атаки

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

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

Китовый фишинг или Whaling мошенничество обычно осуществляется через почту, телефон или даже социальные сети. Среди социальных сетей важно выделить профессиональные сети, такие как LinkedIn, через которые довольно легко взаимодействовать с высокопоставленными организациями.

Обычно злоумышленник выдает себя за кого-то, украв личность. В случае атак по электронной почте наиболее распространенной практикой является использование адреса электронной почты, аналогичного тому, за кого злоумышленник выдает себя, например, используя домен .co вместо .com. Жертвы могут легко обнаружить эти атаки, если они знают об используемых методах.

 

Как защититься от Whale фишинга или Whaling

Компании и организации могут принять меры для предотвращения уязвимости перед атаками китового фишинга, например:

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

Важно подчеркнуть, что основной целевой уязвимостью в этом типе атак является человеческий фактор, а не устройства. Таким образом, лучшая защита — обучить членов организации определять эту угрозу. Профилактическое обучение — это экономичная процедура, которую может внедрить ИТ-отдел организации. По желанию, почти все поставщики услуг ИТ-безопасности разработали программное обеспечение и обучающие программы против фишинга.

Правильная структура разрешений — это еще один способ справиться с уязвимостью человека. Хорошо продуманная структура разрешений предотвратит распространение ущерба на остальную часть организации.

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

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

 

Заключение

Хотя этот тип атаки представляет собой высокий риск, выражающийся в миллиардах долларов, предотвратить ее легко и дешево.

Обучение сотрудников, хорошо продуманная структура разрешений и протоколы безопасности легко реализовать, и они сообщают о неоценимых преимуществах для безопасности организации.

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

На индивидуальном уровне пользователи всегда должны включать двухэтапную проверку и проверять легитимность отправителей или вызывающих абонентов, особенно если их просят выполнить определенное действие.

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

Надеюсь, эта статья о Whale фишинге была полезной.



2021-06-03T22:41:44
Безопасность

Что такое двоичный поиск?

Бинарный поиск — это алгоритм поиска, используемый для поиска целевых элементов в контейнере, где элементы должны быть расположены в порядке возрастания. Обычно двоичный поиск используется для поиска порядкового номера целевого элемента в отсортированном массиве.

В бинарном поиске используется подход «разделяй и властвуй», при котором массив делится на равные части до тех пор, пока не будет найден целевой элемент.

Алгоритм двоичного поиска реализуется как итеративным, так и рекурсивным оператором. Двоичный поиск более эффективен и быстрее по сравнению с линейным поиском.

 

Алгоритм двоичного поиска

  1. Отсортируйте и расположите элементы в массиве arr в порядке возрастания.
  2. Алгоритмы сравнивают средний элемент n с целевым элементом target .
  3. Алгоритм возвращает индекс позиции среднего элемента, если целевой элемент оказывается равным среднему элементу,
  4. Алгоритм ищет нижнюю половину массива, если целевой элемент меньше среднего элемента.
  5. Алгоритм ищет верхнюю половину массива, если целевой элемент больше среднего элемента.
  6. Алгоритм повторяет 4-й и 5-й шаги до тех пор, пока длина массива не станет равной единице или меньше 1.

В конце либо возвращается значение индекса элемента, либо элемент не существует в массиве.

 

Псевдокод двоичного поиска

Итеративный

function Binary_Search(arr, n, target) is

left := 0

right:= n − 1

while left ≤ right do

middle := floor((left + right) / 2)

if arr[middle]  target then

   right := middle − 1

else:

   return middle

return unsuccessful

 

Рекурсивный

function Binary_Search(arr, left, right, target) is



if right >= left

middle = (left+right)//2



if arr[middle] == target

   return middle

else if arr[middle] > tarrget

   return Binary_Search(arr, low, mid-1, target)

else

   return Binary_Search(arr, mid+1, right, target)

else

   return unsuccessful

 

Реализация двоичного поиска в Python

Итеративный

В итеративном подходе мы используем циклы для реализации двоичного поиска.

def Binary_Search(arr,n, target):

left = 0

right = n-1

middle=0



while left<=right:

middle = (right+left)//2



если средний элемент равен целевому элементу

if arr[middle]==target:

   return middle



#если целевой элемент больше среднего

elif arr[middle]< target:



left = middle+1



# если целевой элемент меньше среднего 



else: right =middle-1 



# если целевой элемент отсутствует в массиве 



return -1 



if __name__ == '__main__': 



# отсортированный массив 



sorted_arr = [0,4,7,10,14,23,45,47,53]



# длина массива 



n = len(sorted_arr) 



# элемент для поиска 



target = 47 



position = Binary_Search(sorted_arr, n,target) 



if position != -1: 

     print(f"Элемент {target} присутствует в индексе {position}") 

else: 

     print(f"Элемент {target} отсутствует в массиве")


 

Вывод

Элемент 47 присутствует в индексе 7

Рекурсивный

В рекурсивном режиме вместо использования цикла мы продолжаем вызывать функцию снова и снова, пока не будет выполнено базовое условие.

def Binary_Search(arr,left,right ,target):

  # базовое условие

if righttarget:

   return Binary_Search(arr, left, middle-1, target)

  # если  целевой элемент меньше среднего элемента

else:

   return Binary_Search(arr, middle+1, right, target)







if __name__ == '__main__':

# отсортированный массив

sorted_arr = [0,4,7,10,14,23,45,47,53]



left=0

right = len(sorted_arr)-1



#  элемент для поиска

target = 47



position = Binary_Search(sorted_arr, left, right,target)



if position != -1:

   print(f"Элемент {target} присутствует в индексе {position}")

else :

   print(f"Элемент {target} отсутствует в массиве")

 

Вывод

Элемент 90 отсутствует в массиве

Сложность

Бинарный поиск имеет временную сложность O(log n), где n — количество элементов, присутствующих в массиве.

Бинарный поиск имеет пространственную сложность O(1), потому что в алгоритме мы выполняем поиск на месте.

 

Заключение

Двоичный поиск — один из лучших и эффективных алгоритмов поиска. Временная и пространственная сложность двоичного поиска также очень низкая; единственное предварительное условие для двоичного поиска — входной массив должен быть отсортирован в порядке возрастания.



2021-06-03T16:04:06
Python