NVIDIA GeForce RTX 3060
функция замаскировать_адрес(адрес) {
пусть [имя, домен] = адрес.разделить('@')
пусть новое_имя = имя[0] + повторить('*', имя.длина-1)
пусть новый_домен = повторить('*', домен.длина-2) + домен.подстрока(домен.длина-2, 2)
вернуть новое_имя + '@' + новый_домен
}
Однако возник вопрос относительно красного слоя - use cases
Я правильно понимаю что в классическом MVC красный и зеленый слои не разделяются, т.к. логика пишется в контроллерах (или моделях, неважно). Или же зеленый слой представляет из себя только роуты, а красный - контроллеры, модели?
Также не особо понял почему Робер выделяет в самый верхний слой Базу данных.
т.к. нижележащие слои полюбому будут с ней взаимодействовать, нарушая правило зависимостей. Разве не так?
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
BenchmarkRunner
.Run<RandomBenchmarks>();
[MemoryDiagnoser]
public class RandomBenchmarks
{
private static readonly Random Random = new();
[Benchmark]
public void Reuse()
{
Random.Next();
}
[Benchmark]
public void CreateNew()
{
new Random().Next();
}
}// * Summary *
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.22463
AMD Ryzen 5 4600H with Radeon Graphics, 1 CPU, 12 logical and 6 physical cores
.NET SDK=6.0.100-rc.1.21463.6
[Host] : .NET 6.0.0 (6.0.21.45113), X64 RyuJIT
DefaultJob : .NET 6.0.0 (6.0.21.45113), X64 RyuJIT
| Method | Mean | Error | StdDev | Gen 0 | Allocated |
|---------- |-----------:|----------:|----------:|-------:|----------:|
| Reuse | 3.128 ns | 0.0987 ns | 0.1351 ns | - | - |
| CreateNew | 114.934 ns | 2.3160 ns | 4.8852 ns | 0.0343 | 72 B |
// * Legends *
Mean : Arithmetic mean of all measurements
Error : Half of 99.9% confidence interval
StdDev : Standard deviation of all measurements
Gen 0 : GC Generation 0 collects per 1000 operations
Allocated : Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)
1 ns : 1 Nanosecond (0.000000001 sec)
use std::{fs::OpenOptions, io::Write, path::Path};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let target = "https://www.rust-lang.org/static/images/rust-logo-blk.svg";
let response = reqwest::get(target).await?;
let path = Path::new("./image.svg");
let mut file = OpenOptions::new().create(true).write(true).open(path)?;
let content = response.text().await?;
file.write_all(content.as_bytes())?; // Хочу асинхронно писать в файлы. Как это можно сделать?
Ok(())
}
var arr = new int[] { 1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 5, 6, 6, 7, 8 };
var index = arr.GroupBy(x => x).ToDictionary(x => x.Key, x => x.Count());
var result = arr.OrderByDescending(x => x, new CountComparer(index)).ToArray();
class CountComparer : IComparer<int>
{
private readonly IReadOnlyDictionary<int, int> _index;
public CountComparer(IReadOnlyDictionary<int, int> index)
{
_index = index;
}
public int Compare(int x, int y)
{
var comparsion = _index[x].CompareTo(_index[y]);
if (comparsion == 0)
return x.CompareTo(y);
return comparsion;
}
}
using System;
for (var i = 1; i < 100; i++)
{
var dividesBy3 = i % 3 == 0;
var dividesBy5 = i % 5 == 0;
if (dividesBy3 && dividesBy5)
Console.WriteLine("OuuMay");
else if (dividesBy3)
Console.WriteLine("Ouu");
else if (dividesBy5)
Console.WriteLine("May");
else
Console.WriteLine(i);
}
Console.ReadKey();