Если у вас многопоточное приложение с разделяемыми несколькими потоками данными (например полями класса), то у вас нет гарантии того, что данные в эти разделяемые поля будут записаны одним потоком и прочитаны другим потоком именно в том порядке, в котором вы их написали в своём коде.
Ключевое слово
Ключевое слово
– Ссылочные типы.
– Типы указателей (в небезопасном контексте). Несмотря на то, что сам указатель может быть изменяемым, объект, на который он указывает, должен быть постоянным. Другими словами, объявить указатель на изменяемый объект невозможно.
– Простые типы, например
– Тип
– IntPtr и UIntPtr.
Ключевое слово
Ключевое слово
volatile
означает, что поле может изменить несколько потоков, выполняемых одновременно. Добавление модификатора volatile
гарантирует, что все потоки будут видеть временные записи, выполняемые другим потоком, в порядке их выполнения. Нет никакой гарантии единого общего прядка временных записей во всех потоках выполнения.Ключевое слово
volatile
может применяться к полям следующих типов:– Ссылочные типы.
– Типы указателей (в небезопасном контексте). Несмотря на то, что сам указатель может быть изменяемым, объект, на который он указывает, должен быть постоянным. Другими словами, объявить указатель на изменяемый объект невозможно.
– Простые типы, например
sbyte
, byte
, short
, ushort
, int
, uint
, char
, float
и bool
.– Тип
enum
с одним из следующих базовых типов: byte
, sbyte
, short
, ushort
, int
или uint
.– IntPtr и UIntPtr.
Ключевое слово
volatile
можно применять только к полям class
или struct
. Локальные переменные не могут объявляться как volatile
.Теперь bug hunter'ы могут помочь сервису, которым пользуются они сами, друзья, близкие и мама с бабушкой — Ozon первым среди российских e-commerce компаний запустил собственную bug bounty программу.
За найденные на сайте уязвимости можно получить до 120 000 ₽. Отправлять репорты можно на HackerOne: hackerone.com/ozon. Удачной охоты!
За найденные на сайте уязвимости можно получить до 120 000 ₽. Отправлять репорты можно на HackerOne: hackerone.com/ozon. Удачной охоты!
Хабр
Bug bounty Ozon: вопросы и ответы
Мы запустили публичную bug bounty программу на HackerOne — теперь за найденные на сайте Ozon уязвимости можно получить вознаграждение, а заодно помочь компании...
Пишем простое Todo-приложение на C# с помощью Blazor Server и MatBlazor: https://proglib.io/w/ec1d6b24
DEV Community
Simple Todo App with Blazor Server and Material Blazor
In order to make my journey in C# more interesting, I insert small projects where I can learn new thi...
Возможности разработки кроссплатформенных мобильных, настольных и веб-приложений на языке C# расширяются, поэтому особенную пользу приобретают аналитические статьи, в которых проводится сравнение доступных на сегодняшний день инструментов для кроссплатформенной разработки под .NET Core.
Часть 1
Часть 2
Часть 1
Часть 2
Forwarded from C# jobs — вакансии по C#, .NET, Unity
C# разработчик
Формат работы: #fulltime #remote
Зарплата: $ 40 000 - 50 000 в год
Мы — платформа 6nomads, и прямо сейчас мы ищем опытного C# разработчика в компанию с экспертизой в игровой индустрии. Новому члену команды предстоит заниматься сложным многокомпонентным windows-приложением, его поддержкой, интеграцией и развитием.
Что важно:
— Опыт разработки на С# от 3 лет;
— Знание принципов ООП, SOLID, KISS, DRY;
— Опыт .NET core;
— Опыт работа с многопоточностью (не только через Tasks, но и через Threads);
— Опыт работы с системами контроля версий (Git);
— Английский достаточный для чтения тех документации.
Будет плюсом:
— Техническое образование, хорошая алгоритмическая подготовка;
— Опыт работы в распределенных командах;
— Опыт мобильной разработки и работы с эмуляторами;
— Опыт работы с неуправляемым кодом.
Что предлагают:
— Сложные задачи, в которых можно сильно прокачать свои навыки;
— Участие в построении архитектуры разрабатываемых продуктов;
— Гибкий график;
— Оплата обучения внутри и вне компании.
Чтобы откликнуться, необходимо пройти короткий отбор по ссылке https://6nomads.com/. После этого мы сможем рекомендовать вас работодателю и свести к минимуму затяжные согласования и лишние собеседования.
Формат работы: #fulltime #remote
Зарплата: $ 40 000 - 50 000 в год
Мы — платформа 6nomads, и прямо сейчас мы ищем опытного C# разработчика в компанию с экспертизой в игровой индустрии. Новому члену команды предстоит заниматься сложным многокомпонентным windows-приложением, его поддержкой, интеграцией и развитием.
Что важно:
— Опыт разработки на С# от 3 лет;
— Знание принципов ООП, SOLID, KISS, DRY;
— Опыт .NET core;
— Опыт работа с многопоточностью (не только через Tasks, но и через Threads);
— Опыт работы с системами контроля версий (Git);
— Английский достаточный для чтения тех документации.
Будет плюсом:
— Техническое образование, хорошая алгоритмическая подготовка;
— Опыт работы в распределенных командах;
— Опыт мобильной разработки и работы с эмуляторами;
— Опыт работы с неуправляемым кодом.
Что предлагают:
— Сложные задачи, в которых можно сильно прокачать свои навыки;
— Участие в построении архитектуры разрабатываемых продуктов;
— Гибкий график;
— Оплата обучения внутри и вне компании.
Чтобы откликнуться, необходимо пройти короткий отбор по ссылке https://6nomads.com/. После этого мы сможем рекомендовать вас работодателю и свести к минимуму затяжные согласования и лишние собеседования.
6Nomads
Senior Talent Acquisition for B2B SaaS Startups
We know who you're looking for
Immutable
означает, что данные, хранящиеся в переменной, не могут быть изменены. При этом значение переменной может быть изменено посредством отказа от использования старых данных, которые могут быть изменены. Оригинальные данные остаются в памяти, а новые значения создаются вновь, в новой области памяти. Примером является строковой тип String. Он не может быть изменён и при любых модификациях создаётся в результате новый экземпляр класса, все ссылки переприсваиваются, и сборщик мусора собирает старые экземпляры.
Михаил Зинченко (Team Lead в Wargaming) советует 5 книг об индустрии разработки видеоигр, при этом, первые две книги он советует прочесть и тем, кто никогда не занимался созданием каких-либо игр и не планирует делать этого в обозримом будущем, но если вы хоть немного причастны к ремеслу создания вымышленных интерактивных миров и почему-то не знакомы со столь чудесными произведениями — не мешкая, беритесь за чтение прямо сейчас.
https://proglib.io/w/375aefdb
https://proglib.io/w/375aefdb
ДОУ
5 книг об индустрии разработки видеоигр от Михаила Зинченко, Team Lead в Wargaming
Михаил Зинченко, Team Lead в Wargaming, в своем списке объединил книги об индустрии в целом, которые будут интересны всем, независимо от сферы работы, и книги для тех, кто всерьез увлекся геймдизайном и разработкой игр.
Интересные мысли по поводу функционального программирования: https://proglib.io/w/63c46c01
Хабр
Функциональное программирование — это не то, что нам рассказывают
Функциональное программирование — это очень забавная парадигма. С одной стороны, про неё все знают, и все любят пользоваться всякими паттерн матчингами и лямбдам...
Avalonia — фреймворк, позволяющий создавать кроссплатформенные приложения с графическим интерфейсом на основе XAML, предоставляющий гибкую систему стилей и поддерживающий широкий спектр операционных систем (Windows через .NET Framework и .NET Core, Linux через Xorg, macOS).
Немного материалов, связанных с Avalonia:
– Github
– Разработка кроссплатформенного десктопного приложения с помощью Avalonia
– Реализация MVVM
Немного материалов, связанных с Avalonia:
– Github
– Разработка кроссплатформенного десктопного приложения с помощью Avalonia
– Реализация MVVM
GitHub
GitHub - AvaloniaUI/Avalonia: Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI…
Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology - AvaloniaUI/Avalonia
System.Array.CopyTo() копирует не только сами элемента класса Array, но и объекты, которые связаны ссылками с элементами Array. Это всё называется «глубоким копированием».
System.Array.Clone() осуществляет так называемое «поверхностное копирование». При поверхностном копировании метод копирует только элементы объекта класса Array, и методу не важно, являются ли эти элементы ссылочными или значимыми типами. Копирования объектов, на которые ссылаются ссылочные типы, не происходит. Ссылки в новом объекте класса Array указывают на те же объекты, что и ссылки в оригинальном массиве Array.
System.Array.Clone() осуществляет так называемое «поверхностное копирование». При поверхностном копировании метод копирует только элементы объекта класса Array, и методу не важно, являются ли эти элементы ссылочными или значимыми типами. Копирования объектов, на которые ссылаются ссылочные типы, не происходит. Ссылки в новом объекте класса Array указывают на те же объекты, что и ссылки в оригинальном массиве Array.
Пишем SPA-приложение на ASP.NET Core 3.0: https://proglib.io/w/0eb18fd3
InfoQ
Single Page Applications and ASP.NET Core 3.0
Web development has changed in the past few years, with the maturity of Angular, React, Vue, and others. We’ve moved from building web pages to building apps. We’ve also been shifting from rendering markup on the server, to more commonly rendering it directly…
Автор поднял редко обсуждаемые, но достаточно важные вопросы, связанные с глобализацией и локализацией в приложении ASP.NET. Он реализовал некоторую расширенную настройку, где сохранил выбранную информацию о языке в Cookie в браузере клиента.
https://proglib.io/w/96bf8af7
https://proglib.io/w/96bf8af7
Code With Mukesh
Globalization and Localization in ASP.NET Core - Detailed
We will discuss in detail, Globalization and Localization in ASP.NET Core Application and go through various approaches on changing the Culture of the App.
Ключевое слово
При использовании
stackalloc
выделяет блок памяти в стеке. Выделенный в стеке блок памяти, который создает этот метод, автоматически удаляется по завершении выполнения метода. Вы не можете явным образом освободить память, выделенную stackalloc
. Выделенный в стеке блок памяти не подвергается сборке мусора, поэтому его не нужно закреплять с помощью инструкции fixed
.При использовании
stackalloc
в среде CLR автоматически включается контроль переполнения буфера. Если буфер переполнен, процесс незамедлительно прерывается — это позволяет минимизировать риск исполнения вредоносного кода.Что мотивирует вас откликнуться на вакансию?
Реализация известных алгоритмов Data Mining на C#: https://proglib.io/w/c538ff74
GitHub
GitHub - Dentrax/Data-Mining-Algorithms: Data Mining Algorithms with C# using LINQ
Data Mining Algorithms with C# using LINQ. Contribute to Dentrax/Data-Mining-Algorithms development by creating an account on GitHub.