FileMode = Create тогда файл будет автоматически создан если отсутствует и не выдаст ошибки если уже есть
FileAccess = Write чтобы файл можно было создать (если создать его заранее то хватит Read)
SharedAccess = None запрет на повторное открытие хоть на чтение хоть на запись
using var globalMutex = new Mutex(false, "Global\\test_mx");
var result = globalMutex.WaitOne(1000);
Console.WriteLine(result ? "Owned" : "Not owned in 1s");
Console.ReadLine();
Owned
, а в другом Not owned in 1s
Global\
обязателен. Без него мутекс будет локальный для текущего процесса. -- using window functions
select distinct
uid, first_value(utm) over (partition by uid order by id desc) last_utm
from t;
-- using join
select t.uid, t.utm last_utm
from t
join (
select max(id) max_id from t group by uid
) max_ids on max_id = id;
-- using sub-query
select t.uid, t.utm last_utm
from t
where id = (select max(id) max_id from t group by uid having max(id) = t.id);
select date,val from table where val<>prev_val order by id
select date,val from table x where val<>(select val from table y where y.date<x.date order by id desc limit 1)
function makeid()
{
var text = "";
var possible = "abcdefghijklmnopqrstuvwxyz";
for( var i=0; i < 5; i++ )
text += possible.charAt(Math.floor(Math.random() * possible.length));
return text;
}
$stock = [
["id"=>1, "ver"=>13, "name"=>"gta v"],
["id"=>2, "ver"=>48, "name"=>"gta sa"],
["id"=>3, "ver"=>119, "name"=>"chess"],
];
$total = 0;
foreach($stock as $v) $total += $v["ver"];
$rnd = rand(1, $total);
$run = 0;
foreach($stock as $v) {
$run += $v["ver"];
if( $rnd <= $run) break;
}
$prizeName = $v["name"];
/**
* Случайная выборка с учетом веса каждого элемента.
* @param array $data Массив, в котором ищется случайный элемент
* @param string $column Параметр массива, содержащий «вес» вероятности
* @return int Индекс найденного элемента в массиве $data
*/
function getRandomIndex($data, $column = 'ver') {
$rand = mt_rand(1, array_sum(array_column($data, $column)));
$cur = $prev = 0;
for ($i = 0, $count = count($data); $i < $count; ++$i) {
$prev += $i != 0 ? $data[$i-1][$column] : 0;
$cur += $data[$i][$column];
if ($rand > $prev && $rand <= $cur) {
return $i;
}
}
return -1;
}
// Использование
$games = [
['name' => 'Игра 1', 'ver' => 2], // вероятность 2/15
['name' => 'Игра 2', 'ver' => 0], // вероятность 0/15
['name' => 'Игра 3', 'ver' => 1], // вероятность 1/15
['name' => 'Игра 4', 'ver' => 4], // вероятность 4/15
['name' => 'Игра 5', 'ver' => 8], // вероятность 8/15
];
$i = getRandomIndex($games);
echo $games[$i]['name'];