Что выведет код ?
@csharp_ci
using System;
class Program
{
static void Main(string[] args)
{
int num = 5;
int square = 0, cube = 0;
Mul (num, ref square, ref cube);
Console.WriteLine(square + " & " +cube);
Console.ReadLine();
}
static void Mul (int num, ref int square, ref int cube)
{
square = num * num;
cube = num * num * num;
}
}
@csharp_ci
⚡ Cledev.OpenAI
NET SDK для OpenAI, который включает API ChatGPT, DALL-E и Whisper и тестовую площадку Blazor Server.
Пример с ChatGPT
Пример генерации изображений (Dall-E)
▪ Github
@csharp_ci
NET SDK для OpenAI, который включает API ChatGPT, DALL-E и Whisper и тестовую площадку Blazor Server.
Install-Package Cledev.OpenAI
Пример с ChatGPT
var request = new CreateChatCompletionRequest
{
Model = ChatModel.Gpt35Turbo.ToStringModel(),
Stream = true,
MaxTokens = 500,
Messages = new List<ChatCompletionMessage>
{
new("system", "You are a helpful assistant."),
new("user", "Who won the world series in 2020?"),
new("assistant", "The Los Angeles Dodgers won the World Series in 2020."),
new("user", "Where was it played?")
}
};
var completions = client.CreateChatCompletionAsStream(request);
await foreach (var completion in completions)
{
Console.Write(completion.Choices[0].Message?.Content);
}
Пример генерации изображений (Dall-E)
var request = new CreateImageRequest
{
Prompt = "Once upon a time",
Size = ImageSize.Size512x512.ToStringSize(),
ResponseFormat = ImageResponseFormat.B64Json.ToStringFormat(),
N = 1
};
var response = await client.CreateImage(Request);
<img src="@response.Data[0].Url" />
▪ Github
@csharp_ci
⚡Полный список сайтов с практическимим задачами для программистов.
Edabit.com - 350+ практических задач по C#
C Puzzles - cайт с головоломками на языке С. Может быть полезен и тем, кто не знает C, но изучает С-подобные языки.
Codeforces — платформа для алгоритмических соревнований. Проводит контесты и раунды с 5 задачами на 2 часа. Есть система рейтинга и два дивизиона. Задачи можно решать и проверять после соревнования. Также есть доступ к тренировкам с задачами с прошлых соревнований.
SQLEx- большой кладез знаний для тех, кто изучает SQL. Множество упражнений для отработки навыков и рейтинг участников.
HackerRank - сайт будет больше интересен продвинутым программистам, которые уже многое умеют. На этом сайте собрано множество задач на самые разные разделы Computer Science: традиционная алгоритмика, ИИ, машинное обучение и т.д. Если вы решите много задач, то вами могут заинтересоваться работодатели, регуляторно мониторящие эту платформу.
C# задачи для начинающих - помощь в решении задач. Готовые программы.
Codewars — популярный cборник задач на разные темы, от алгоритмов до шаблонов проектирования.
LeetCode — известный сайт с задачами для подготовки к собеседованиям. Можно пообщаться и посмотреть решения других программистов.
Timus Online Judge — русскоязычная (хотя английский язык также поддерживается) платформа, на которой более тысячи задач удачно отсортированы по темам и по сложности.
TopCoder - популярная американская платформа. Она проводит алгоритмические контесты, а также соревнования по промышленному программированию и марафоны, где задачи требуют исследования и нет единого верного алгоритма. Участникам даются недели на решение таких задач.
informatics.mccme.ru - платформа с теоретическим материалом и задачами, удобно разделенными по категориям. Большая база задач с олимпиад школьников также доступна.
SPOJ - большой англоязычный сайт с 20000+ задачами на разные темы: DP, графы, структуры данных и др. Иногда проводят неинтересные контесты, если не из страны их проведения.
CodeChef — менее крупный аналог Codeforces и TopCoder, тоже с огромным архивом задач и регулярными контестами.
Project Euler - сборник 500 задач, проверяющих знание математических алгоритмов. Часто используется на собеседованиях, чтобы оценить алгоритмическую подготовку кандидата.
Kaggle - соревнования по анализу данных.
Golang tests - канал с тестами по Go
CodinGame - сайт для программистов и геймеров, предлагающий большую коллекцию видеоигр, оформленных в виде задач на программирование.
Al Zimmermann’s Programming Contests — платформа, на которой регулярно проводятся контесты с задачами на исследование и оптимизацию. Интересен тем, что писать программу необязательно — даются только тестовые данные. Ответы можно расчитывать вручную, или просто гадать их на кофейной гуще.
Programming Praxis — сайт, где можно найти много интересных задач.
CheckIO — сайт с задачами для программистов всех уровней, который вы проходите в виде игры.
Ruby Quiz — сайт с задачами для программистов на Ruby, но решения можно писать и на других языках.
Prolog Problems — Подборка задач для программистов, использующих Prolog.
Сборник задач от СppStudio - задачи на С++, но их можно и на других языках.
Operation Go — практика написания кода на Go в форме браузерной игры.
Empire of Code — сайт для программистов, где необходимо писать код, реализующий стратегию и тактику виртуальных бойцов.
@csharp_ci
Edabit.com - 350+ практических задач по C#
C Puzzles - cайт с головоломками на языке С. Может быть полезен и тем, кто не знает C, но изучает С-подобные языки.
Codeforces — платформа для алгоритмических соревнований. Проводит контесты и раунды с 5 задачами на 2 часа. Есть система рейтинга и два дивизиона. Задачи можно решать и проверять после соревнования. Также есть доступ к тренировкам с задачами с прошлых соревнований.
SQLEx- большой кладез знаний для тех, кто изучает SQL. Множество упражнений для отработки навыков и рейтинг участников.
HackerRank - сайт будет больше интересен продвинутым программистам, которые уже многое умеют. На этом сайте собрано множество задач на самые разные разделы Computer Science: традиционная алгоритмика, ИИ, машинное обучение и т.д. Если вы решите много задач, то вами могут заинтересоваться работодатели, регуляторно мониторящие эту платформу.
C# задачи для начинающих - помощь в решении задач. Готовые программы.
Codewars — популярный cборник задач на разные темы, от алгоритмов до шаблонов проектирования.
LeetCode — известный сайт с задачами для подготовки к собеседованиям. Можно пообщаться и посмотреть решения других программистов.
Timus Online Judge — русскоязычная (хотя английский язык также поддерживается) платформа, на которой более тысячи задач удачно отсортированы по темам и по сложности.
TopCoder - популярная американская платформа. Она проводит алгоритмические контесты, а также соревнования по промышленному программированию и марафоны, где задачи требуют исследования и нет единого верного алгоритма. Участникам даются недели на решение таких задач.
informatics.mccme.ru - платформа с теоретическим материалом и задачами, удобно разделенными по категориям. Большая база задач с олимпиад школьников также доступна.
SPOJ - большой англоязычный сайт с 20000+ задачами на разные темы: DP, графы, структуры данных и др. Иногда проводят неинтересные контесты, если не из страны их проведения.
CodeChef — менее крупный аналог Codeforces и TopCoder, тоже с огромным архивом задач и регулярными контестами.
Project Euler - сборник 500 задач, проверяющих знание математических алгоритмов. Часто используется на собеседованиях, чтобы оценить алгоритмическую подготовку кандидата.
Kaggle - соревнования по анализу данных.
Golang tests - канал с тестами по Go
CodinGame - сайт для программистов и геймеров, предлагающий большую коллекцию видеоигр, оформленных в виде задач на программирование.
Al Zimmermann’s Programming Contests — платформа, на которой регулярно проводятся контесты с задачами на исследование и оптимизацию. Интересен тем, что писать программу необязательно — даются только тестовые данные. Ответы можно расчитывать вручную, или просто гадать их на кофейной гуще.
Programming Praxis — сайт, где можно найти много интересных задач.
CheckIO — сайт с задачами для программистов всех уровней, который вы проходите в виде игры.
Ruby Quiz — сайт с задачами для программистов на Ruby, но решения можно писать и на других языках.
Prolog Problems — Подборка задач для программистов, использующих Prolog.
Сборник задач от СppStudio - задачи на С++, но их можно и на других языках.
Operation Go — практика написания кода на Go в форме браузерной игры.
Empire of Code — сайт для программистов, где необходимо писать код, реализующий стратегию и тактику виртуальных бойцов.
@csharp_ci
📚7 лучших библиотек C# для парсинга веб-страниц в 2023 году
• Существуют различные библиотеки веб-скрейпинга на C# для извлечения данных, в том числе для таких целей, как отслеживание цен, генерация потенциальных клиентов, мониторинг настроений, агрегация финансовых данных и так далее.
Так же, существуют разные показатели, которые следует учитывать при выборе лучшей библиотеки для парсинга, и в этой статье мы обсудим 7 лучших библиотек для парсинга на C# для использования в 2023 году. Кроме того, мы увидим примеры, которые помогут вам понять, как эти фреймворки работают.
1. ZenRows API — лучшая библиотека веб-парсинга данных на C# в этом списке. Это API, который обрабатывает обход ботов от вращающихся прокси и безголовых браузеров до CAPTCHA.
2. Puppeteer Sharp — это библиотека для парсинга на C#, которая сканирует веб-страницу с помощью браузера без заголовка.
3. Веб-драйвер Selenium — один из наиболее часто используемых инструментов для парсинга больших объемов данных, таких как фотографии, ссылки и текст.
4. HTML Agility Pack - является наиболее загружаемой библиотекой парсинга C# DOM благодаря своей способности парсить веб-страницы напрямую или через браузер.
5. Scrapy Sharp - это библиотека веб-парсинга на C# с открытым исходным кодом, которая объединяет расширение HTMLAgilityPack с веб-клиентом, который может эмулировать веб-браузер, например jQuery.
6. Iron Web Scraper — это библиотека веб-скрейпинга .Net Core C#, исользуемая для извлечения и анализа данных из интернет-источников. Она способна контролировать разрешенные и запрещенные объекты, сайты, медиа и другие элементы.
7. HttpClient — это библиотека парсинга HTML на C#, которая предоставляет асинхронные функции для извлечения только необработанного содержимого HTML из целевого URL-адреса. Однако для извлечения нужных данных вам по-прежнему необходимо использовать инструмент синтаксического анализа HTML.
▪ Подробнее
@csharp_ci
• Существуют различные библиотеки веб-скрейпинга на C# для извлечения данных, в том числе для таких целей, как отслеживание цен, генерация потенциальных клиентов, мониторинг настроений, агрегация финансовых данных и так далее.
Так же, существуют разные показатели, которые следует учитывать при выборе лучшей библиотеки для парсинга, и в этой статье мы обсудим 7 лучших библиотек для парсинга на C# для использования в 2023 году. Кроме того, мы увидим примеры, которые помогут вам понять, как эти фреймворки работают.
1. ZenRows API — лучшая библиотека веб-парсинга данных на C# в этом списке. Это API, который обрабатывает обход ботов от вращающихся прокси и безголовых браузеров до CAPTCHA.
2. Puppeteer Sharp — это библиотека для парсинга на C#, которая сканирует веб-страницу с помощью браузера без заголовка.
3. Веб-драйвер Selenium — один из наиболее часто используемых инструментов для парсинга больших объемов данных, таких как фотографии, ссылки и текст.
4. HTML Agility Pack - является наиболее загружаемой библиотекой парсинга C# DOM благодаря своей способности парсить веб-страницы напрямую или через браузер.
5. Scrapy Sharp - это библиотека веб-парсинга на C# с открытым исходным кодом, которая объединяет расширение HTMLAgilityPack с веб-клиентом, который может эмулировать веб-браузер, например jQuery.
6. Iron Web Scraper — это библиотека веб-скрейпинга .Net Core C#, исользуемая для извлечения и анализа данных из интернет-источников. Она способна контролировать разрешенные и запрещенные объекты, сайты, медиа и другие элементы.
7. HttpClient — это библиотека парсинга HTML на C#, которая предоставляет асинхронные функции для извлечения только необработанного содержимого HTML из целевого URL-адреса. Однако для извлечения нужных данных вам по-прежнему необходимо использовать инструмент синтаксического анализа HTML.
▪ Подробнее
@csharp_ci
[Успех в геймдеве — ошибка выжившего?💀]
Почему у одних получается делать крутые игры, которые приносят деньги и славу, а у других — нет? Как перестать делать посредственные игры и начать делать хиты?
Успех в геймдеве — не ошибка выжившего, а цель, которую мы преследуем. Мы стремимся создавать игры для игроков, в которые будет интересно играть.
Многие бросают на полпути, но мы настойчивы и готовы дойти до конца.
⚡️Приглашаем на трехдневную онлайн геймдев конференцию, где ты узнаешь, как начать делать хорошие игры. Мы развеим все твои сомнения и докажем, что геймдев — это далеко не ошибка выжившего!
На конференции ты получишь кучу практических рекомендаций и поймешь, как создавать игры, которые получат миллионы скачиваний.
Регистрируйся тут прямо сейчас, чтобы ничего не пропустить. Программа конференции по ссылке.
Звучит как офигенная возможность вкатиться в геймдев. Так что погнали!
Почему у одних получается делать крутые игры, которые приносят деньги и славу, а у других — нет? Как перестать делать посредственные игры и начать делать хиты?
Успех в геймдеве — не ошибка выжившего, а цель, которую мы преследуем. Мы стремимся создавать игры для игроков, в которые будет интересно играть.
Многие бросают на полпути, но мы настойчивы и готовы дойти до конца.
⚡️Приглашаем на трехдневную онлайн геймдев конференцию, где ты узнаешь, как начать делать хорошие игры. Мы развеим все твои сомнения и докажем, что геймдев — это далеко не ошибка выжившего!
На конференции ты получишь кучу практических рекомендаций и поймешь, как создавать игры, которые получат миллионы скачиваний.
Регистрируйся тут прямо сейчас, чтобы ничего не пропустить. Программа конференции по ссылке.
Звучит как офигенная возможность вкатиться в геймдев. Так что погнали!
🎮 Обзор Top-3 Open Source игр на C# и ошибок в их коде
В мире много хороших игр, но совсем немногие открывают исходный код. В этой статье мы познакомимся, на мой взгляд, с тремя лучшими Open Source играми на C# и разберём наиболее интересные ошибки, найденные в их исходном коде.
▪ Читат статью
@csharp_ci
В мире много хороших игр, но совсем немногие открывают исходный код. В этой статье мы познакомимся, на мой взгляд, с тремя лучшими Open Source играми на C# и разберём наиболее интересные ошибки, найденные в их исходном коде.
▪ Читат статью
@csharp_ci
📌Telegram API и библиотека TDLib для .NET платформ
• В Telegram представлено два различных вида API: Telegram Bot API (стандартные боты с пометкой "бот") и Telegram API (клиенты и юзерботы, которые обладают более расширенным функционалом, чем просто боты).
Сфокусируемся на последнем виде и рассмотрим, как взаимодействовать с Telegram API, какие инструменты требуются для написания кода своего юзербота на языке C#, как установить эти инструменты правильно и как их использовать.
▪ Сборка и подключение библиотеки TDLib
TDLib имеет следующие зависимости, т. е. на вашем компьютере это должно быть:
- компилятор C++14 (Visual Studio имеет свой компилятор MSVC);
- Библиотека OpenSSL;
- Библиотека zlib;
- gperf (только сборка);
- CMake (3.0.2+, только сборка).
• Для установки необходимых зависимостей, выполните следующие команды в командной строке (обратите внимание, что требуется git):
▪ Далее скачиваем саму библиотеку и собираем её для .NET-проектов:
1. Переходим в папку (в командной строке) /example/csharp, т.е. туда, где будем собирать нашу библиотеку
2. Создаём папку, куда будем собирать библиотеку, и переходим в неё:
3. Настраиваем сборку библиотеки в зависимости от разрядности системы (x32 или x64); где "...path to vcpkg...", указываем путь до скачанного ранее vcpkg:
Для x32:
4. Собираем библиотеку в зависимости от требуемой конфигурации (Release или Debug):
Для Release:
Готово! Теперь в папке build/Release или build/Debug (в зависимости от того, что вы выбрали) находится готовый файл Telegram.Td.dll, который и нужно использовать в своем проекте.
Продолжение
@csharp_ci
• В Telegram представлено два различных вида API: Telegram Bot API (стандартные боты с пометкой "бот") и Telegram API (клиенты и юзерботы, которые обладают более расширенным функционалом, чем просто боты).
Сфокусируемся на последнем виде и рассмотрим, как взаимодействовать с Telegram API, какие инструменты требуются для написания кода своего юзербота на языке C#, как установить эти инструменты правильно и как их использовать.
▪ Сборка и подключение библиотеки TDLib
TDLib имеет следующие зависимости, т. е. на вашем компьютере это должно быть:
- компилятор C++14 (Visual Studio имеет свой компилятор MSVC);
- Библиотека OpenSSL;
- Библиотека zlib;
- gperf (только сборка);
- CMake (3.0.2+, только сборка).
• Для установки необходимых зависимостей, выполните следующие команды в командной строке (обратите внимание, что требуется git):
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
git checkout 1b1ae50e1a69f7c659bd7d731e80b358d21c86ad
.\bootstrap-vcpkg.bat
.\vcpkg.exe install gperf:x64-windows gperf:x86-windows openssl:x64-windows openssl:x86-windows zlib:x64-windows zlib:x86-windows
▪ Далее скачиваем саму библиотеку и собираем её для .NET-проектов:
1. Переходим в папку (в командной строке) /example/csharp, т.е. туда, где будем собирать нашу библиотеку
2. Создаём папку, куда будем собирать библиотеку, и переходим в неё:
mkdir build
cd build
3. Настраиваем сборку библиотеки в зависимости от разрядности системы (x32 или x64); где "...path to vcpkg...", указываем путь до скачанного ранее vcpkg:
Для x32:
cmake -A Win32 -DTD_ENABLE_DOTNET=ON -DCMAKE_TOOLCHAIN_FILE=<path to
vcpkg>/scripts/buildsystems/vcpkg.cmake ../../..
Для x64:
cmake -A x64 -DTD_ENABLE_DOTNET=ON -DCMAKE_TOOLCHAIN_FILE=<path to
vcpkg>/scripts/buildsystems/vcpkg.cmake ../../..
4. Собираем библиотеку в зависимости от требуемой конфигурации (Release или Debug):
Для Release:
cmake --build . --config Release
Для Debug:
cmake --build . --config Debug
Готово! Теперь в папке build/Release или build/Debug (в зависимости от того, что вы выбрали) находится готовый файл Telegram.Td.dll, который и нужно использовать в своем проекте.
Продолжение
@csharp_ci
vpngate-with-proxy
Полезная библиотека VPN GATE для GNU/Linux с поддержкой прокси.
▫️Позволяет подключаться к публичным серверам vpn по адресу https://www.vpngate.net/en/ напрямую или через прокси
▫️Автоматическое настройка DNS для устранения утечек dns
▫️Автоматическая фильтрация не работающих vpn
▫️Может запускать пользовательский скрипты
▪️GitHub
https://t.iss.one/csharp_ci
Полезная библиотека VPN GATE для GNU/Linux с поддержкой прокси.
▫️Позволяет подключаться к публичным серверам vpn по адресу https://www.vpngate.net/en/ напрямую или через прокси
▫️Автоматическое настройка DNS для устранения утечек dns
▫️Автоматическая фильтрация не работающих vpn
▫️Может запускать пользовательский скрипты
▪️GitHub
https://t.iss.one/csharp_ci
⚡ virtual-auto-clicker - Your idle success
Это простой, но эффективный кликер, в виде консольного приложения, реализованного на C# .
При запуске кода, кликер, позволяет свободно пользоваться компьютером.
▪ Github
@csharp_ci
Это простой, но эффективный кликер, в виде консольного приложения, реализованного на C# .
При запуске кода, кликер, позволяет свободно пользоваться компьютером.
▪ Github
@csharp_ci
⚡ Введение в gRPC
Первый проект с .NET CLI
gRPC представляет фреймворк, который использует протокол RPC (Remote Procedure Call) для обмена сообщениями между клиентом и сервером. Цель фреймворка состоит в том, чтобы обеспечить высокую производительность в тех условиях, где это особенно критично, например, при интенсивном обмене информацией в режиме реального времени.
gRPC не является частью ASP.NET Core или .NET, более того gRPC представляет технологию, которая не привязана к конкретному языку, поэтому данную технологию можно использовать и в рамках приложения на C#.
gRPC имеет следующие преимущества:
•Легковесность и высокая производительность
•Независимость от конкретного языка программирования
•Доступные инструменты для работы со многими распространнеными языками программирования
•Поддержка клиентских, серверных и двунаправленных потоковых вызовов
•Уменьшение нагрузки сети за счет бинарной сериализации
Если говорить непосредственно о gRPC в .NET, сервисы ASP.NET Core gRPC можно развертывать на всех трех основных операционных системах: Windows, Linux, MacOS. Кроме того, сервисы gRPC поддерживаются всеми стандартными веб-серверами ASP.NET Core: Kestrel, IIS, HTTP.sys.
Для создания проектов на C# для gRPC .NET CLI предоставляет специальный шаблон grpc. Итак, для создания проекта для gRPC сначала определим каталог. Допустим, он будет называться GreeterServiceApp. Перейдем к этой папке в консоли с помощью команды cd и затем введем команду:
▪ Читать дальше
@csharp_ci
Первый проект с .NET CLI
gRPC представляет фреймворк, который использует протокол RPC (Remote Procedure Call) для обмена сообщениями между клиентом и сервером. Цель фреймворка состоит в том, чтобы обеспечить высокую производительность в тех условиях, где это особенно критично, например, при интенсивном обмене информацией в режиме реального времени.
gRPC не является частью ASP.NET Core или .NET, более того gRPC представляет технологию, которая не привязана к конкретному языку, поэтому данную технологию можно использовать и в рамках приложения на C#.
gRPC имеет следующие преимущества:
•Легковесность и высокая производительность
•Независимость от конкретного языка программирования
•Доступные инструменты для работы со многими распространнеными языками программирования
•Поддержка клиентских, серверных и двунаправленных потоковых вызовов
•Уменьшение нагрузки сети за счет бинарной сериализации
Если говорить непосредственно о gRPC в .NET, сервисы ASP.NET Core gRPC можно развертывать на всех трех основных операционных системах: Windows, Linux, MacOS. Кроме того, сервисы gRPC поддерживаются всеми стандартными веб-серверами ASP.NET Core: Kestrel, IIS, HTTP.sys.
Для создания проектов на C# для gRPC .NET CLI предоставляет специальный шаблон grpc. Итак, для создания проекта для gRPC сначала определим каталог. Допустим, он будет называться GreeterServiceApp. Перейдем к этой папке в консоли с помощью команды cd и затем введем команду:
dotnet new grpc
▪ Читать дальше
@csharp_ci
Целое число английскими словами
Сложность задачи: Hard
Условие задачи:
Преобразуйте неотрицательное целое число num в его буквенное представление английскими словами.
Пример:
Ввод:
Пишите свое решение в комментариях👇
@csharp_ci
Сложность задачи: Hard
Условие задачи:
Преобразуйте неотрицательное целое число num в его буквенное представление английскими словами.
Пример:
Ввод:
num = 123
Вывод: "One Hundred Twenty Three"
Ввод: num = 12345
Вывод: "Twelve Thousand Three Hundred Forty Five"
Решение задачиПишите свое решение в комментариях👇
@csharp_ci
🧅 TorSharp
Проект, который позволяет использовать Tor для C# HTTP-клиентов. Полезный интсрумент для проксирования HTTP-трафика и парсинга.
1. Пример использования SOCKS в .NET (картинка 1)
2. Пример использования Privoxy (картинка 2)
▪ Github
@csharp_ci
Проект, который позволяет использовать Tor для C# HTTP-клиентов. Полезный интсрумент для проксирования HTTP-трафика и парсинга.
1. Пример использования SOCKS в .NET (картинка 1)
2. Пример использования Privoxy (картинка 2)
▪ Github
@csharp_ci
Библиотека интеграции ChatGPT для .NET. Проект поддерживает OpenAI и Azure OpenAI Service.
dotnet add package ChatGptNet
▪Github
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
В 2002 с релизом
.NET
мы получили достаточно примитивный вариант хэш-функции для строк. В 2010 его обновили, а текущая версия ушла еще дальше вперед. Поговорим про историю хэш-функций в .NET, почему так вышло и какие требования к ним применяются.
Затронем и тему криптографических функций — разберемся, зачем они вообще нужны и почему не используются по умолчанию.
Посмотрим на то, как проверяются качества хэш-функции в пакете SMHasher.
В качестве эталона будет предложена XXH3 и ее реализация на .NET, которая обгоняет текущий
string.gethashcode
по скорости и, скорее всего, превосходит по качеству.📌Видео
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Анализ больших объёмов данных – неотъемлемая и трудоёмкая часть аналитической деятельности. Наверняка вы сталкивались с проблемами, связанными с повышенным потреблением оперативной памяти и скоростью обработки.
Вот два примера решения подобных проблем на языке C#
1. Нехватка памяти при чтении очень больших файлов
Предположим, нам необходимо найти соответствия регулярному выражению в строках CSV файла. В этом случае нам может помочь оператор yield return.
▪️Метод-генератор AllLinesFromFile (string a_file_path) принимает на вход путь к файлу и возвращает итератор, указывающий на текущий объект коллекции - связный список, состоящий не более, чем из ста строк файла.
Продемонстрируем в методе Main() использование написанного генератора коллекции для чтения csv файла, состоящего из 437 строк: *в картинке
Примечания:
- Размер возвращаемой «порции строк» ограничен ста (для примера). Выбор значения должен зависеть от системных требований к потреблению памяти.
- Для чтения сложных форматов (JSON или XML) может потребоваться использование парсера.
- Метод AllLinesFromFile(string a_file_path) использует связный список строк в качестве типа возвращаемого элемента коллекции, чтобы избежать проблем с выделением памяти.
- Подробнее о операторе yield return в C# можно узнать на сайте Microsoft.
- Оператор yield также присутствует в других языках программирования, таких как Python, JavaScript и PHP.
2. Использование LINQ и PLINQ
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
📣 Внимание C# разрабочики!
Сохраните этот пост и возвращайтесь к нему в любое время, когда вам понадобится освежить в памяти методы LINQ!
@csharp_ci
Сохраните этот пост и возвращайтесь к нему в любое время, когда вам понадобится освежить в памяти методы LINQ!
@csharp_ci
Лучший способ получать свежие обновлении и следить за трендами в разработке.
Python: t.iss.one/pythonl
C#: t.iss.one/csharp_1001_notes
C/C++/ t.iss.one/cpluspluc
Машинное обучение: t.iss.one/ai_machinelearning_big_data
Data Science: t.iss.one/data_analysis_ml
Devops: t.iss.one/devOPSitsec
Go: t.iss.one/Golang_google
Базы данных: t.iss.one/sqlhub
Rust: t.iss.one/rust_code
Javascript: t.iss.one/javascriptv
React: t.iss.one/react_tg
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Мобильная разработка: t.iss.one/mobdevelop
Linux: t.iss.one/+A8jY79rcyKJlYWY6
Big Data: t.iss.one/bigdatai
Хакинг: t.iss.one/linuxkalii
Java: t.iss.one/javatg
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
🇬🇧Английский: t.iss.one/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM