Back to The tech awesomeness
Table of contents
Endeavor chapters

The article for today.


public class RaceConditionSimulatorTest943875934875 {    
    public static void main(String[] args) throws InterruptedException {   
        Goods things = new Goods();
        AtomicGoods atomicThings = new AtomicGoods();

        Runnable he = new Earner(things, atomicThings);
        Thread runner1 = new Thread(he);
        runner1.setName("Nameenee, male earner");
        runner1.start();

        Runnable she = new Spender(things, atomicThings);
        Thread runner2 = new Thread(she);
        runner2.setName("Nima, female spender");
        runner2.start();
        
        Runnable animal = new Earner(things, atomicThings);
        Thread runner3 = new Thread(animal);
        runner3.setName("The parrot, spender");
        runner3.start();
        
        Runnable house = new Spender(things, atomicThings);
        Thread runner4 = new Thread(house);
        runner4.setName("The house, automatic spender");
        runner4.start();
        
        Runnable they = new Viewer(things, atomicThings);
        Thread runner5 = new Thread(they);
        runner5.setName("The specific group, viewers");
        runner5.start();

        runner1.join();
        runner2.join();
        runner3.join();
        runner4.join();
        runner5.join();

        System.out.println(things.value());
        System.out.println(atomicThings.value());
    }    
}

class Spender implements Runnable {
    private int runTimes = 1000000;
    private Goods goods;
    private AtomicGoods atomicGoods;

    public Spender(Goods goods, AtomicGoods atomicGoods) {
        this.goods = goods;
        this.atomicGoods = atomicGoods;
    }

    public void run() {
        for ( int i = 0; i < runTimes; i++ ) {
            //goods.increment();
            goods.decrement();
            atomicGoods.decrement();
        }
    }
}

class Earner implements Runnable {
    private int runTimes = 1000000;
    private Goods goods;
    private AtomicGoods atomicGoods;

    public Earner(Goods goods, AtomicGoods atomicGoods) {
        this.goods = goods;
        this.atomicGoods = atomicGoods;
    }

    public void run() {
        for ( int i = 0; i < runTimes; i++ ) {
            goods.increment();
            atomicGoods.increment();
        }
    }
}

class Viewer implements Runnable {
    private int runTimes = 1000000;
    private Goods goods;
    private AtomicGoods atomicGoods;

    public Viewer(Goods goods, AtomicGoods atomicGoods) {
        this.goods = goods;
        this.atomicGoods = atomicGoods;
    }

    public void run() {
        for ( int i = 0; i < runTimes; i++ ) {
            goods.value();
            atomicGoods.value();
        }
    }
}

class Goods {
    private volatile int counter = 0;
    
    public void increment() {
        counter++;
    }

    public void decrement() {
        counter--;
    }

    public final int value() {
        return counter;
    }    
}

class AtomicGoods {
    private final int counter = 0;
    private volatile AtomicInteger atomicCounter = new AtomicInteger(counter);

    public void increment() {
        //this.value()++;
        //counter++;
        atomicCounter.incrementAndGet();
    }

    public void decrement() {
        //counter--;
        atomicCounter.decrementAndGet();
    }

    public final int value() {
        //return counter;
        return atomicCounter.intValue();
    }    
}

ПерегоннийУмовнийСімулятор

Стаття сьогодні.

Update as of 2021-02-16.

Оновлення від 2021-02-16.

I guess these two: https://en.wikipedia.org/wiki/Grand_Central_Dispatch and https://en.wikipedia.org/wiki/Automatic_Reference_Counting in https://en.wikipedia.org/wiki/Memory_management form a pattern: whenever there are multiple something and multiple something and they were previously handled not automatically and they are repetitive , then such technologies appear.

Гадаю ці дві: https://en.wikipedia.org/wiki/Grand_Central_Dispatch та https://en.wikipedia.org/wiki/Automatic_Reference_Counting у https://en.wikipedia.org/wiki/Memory_management формують наступний шаблон: коли існує багато чогось і багато чогось і вони попередньо оброблялись не автоматично і вони повторювані, потім такі технології з'являються.

So there are already at least two such ones at the programming language level, where a programming language feature is trasnforming into a programming language code library.

Так що існує вже щонайменш дві такі в мовах програмування, де особливість мови перетворюється у бібліотеку мови програмування. І портована.

В джава Java таке теж було: коли після JDBC з'явився hibernate як кодова бібліотека. Хоча можливо там і інша історія. Бо це ж не ключові слова котрі були не автоматизовані, а ППІ API.

In Java there was such story as well: when after JDBC hibernate appeared as a code library. Eventhough maybe there is a different story there. Because it is not keywords that were not automatical, it is an API.

Також там спочатку не було анотацій, а потім з'явилися, а це ж вже дві можливості були поєднані в одній зовнішній кодовій бібліотеці.

There were no annotations at first, and then they appeared, and these ones are two possibilities form a whole in one external code library.

Ще приклад, another example, залишу цитату: "The Task Parallel Library (TPL) is the task parallelism component of the Parallel Extensions to .NET.[6] It exposes parallel constructs like parallel For and ForEach loops, using regular method calls and delegates, thus the constructs can be used from any CLI languages. The job of spawning and terminating threads, as well as scaling the number of threads according to the number of available processors, is done by the library itself,[3] using a work stealing scheduler.[7]" as of 2021-02-16 https://en.wikipedia.org/wiki/Parallel_Extensions#Task_Parallel_Library.

Update as of 2021-02-17.

Оновлення від 2021-02-17.

allocanddealloc allocanddeallocagain

Update as of 2021-03-06.

Оновлення від 2021-03-06.

realloc

Update as of 2021-06-28.

Оновлення від 2021-06-28.

Green threads are not a silver lining even in semaphore

.

Зелені ниті не є сріблястою підкладкою навіть у семафорі

.

Searching with a packet with "Better than your best" label on it provided 0 results so far.

Шукаючи з пакетом з "Better than your best" міткою на ньому надало 0 результатів поки що.

Update as of 2021-10-10.

Оновлення від 2021-10-10.

allocanddeallocagain

Досі невідомо чому але WiFi в одному з таких завжди ввімкнений, тож якщо зусилля хакінгу візьмуть його віддалено особливо коли один з таких він один, то він переприбере. Але є тому якась причина щодо ВайФаю. Ще він може перемістити щось що викличе ціпну реакцію і щось за допомогою як описано http://thetechawesomeness.ideasmatter.info/gravitron.html можливо опиниться десь. Але якщо цьому запобігти одноразово в достатньо незмінному середовищі то. Лише одна поверхня. З більшістю перепон є бар'єрами для подібних.

Але потім така ситуація змінюється з більш складними налаштуваннями, якщо ті зусилля використовують наприклад камеру у віддалі віддалено. І також з більш рухомими подібними обсяг наслідків збільшується швидше. Так що той метод має достатньо далекі відлуння у суміші.

Чинником тому є відсутність доведеності від зламів.

Така відсутність є також частково і чинником для частого код рев'ю і навіть в цьому випадку поставити позначку доведеності від зламів було би занадто оптимістично з за іншого фактору.

allocanddeallocagain

It is unknown why but WiFi in one of such ones is always on, so it always emits a network with WiFi, so when hacking efforts take it remotely especially when one of such ones are alone, then it will overclean. But there is some reason what is for WiFi. Also it can move something which will cause the chaining and something with a help of as described in http://thetechawesomeness.ideasmatter.info/gravitron.html maybe appear somewhere. But it is overcomeable and once in that environment if rather immutable one then it will be prone of that one. Only one surface. With most obstacles are barriers for such ones.

Then such situation is changed with more complex settings, if those efforts use for example the camera in vicinity. And also with bigger movable ones the effects are being increased faster. So that method has rather far consequences in the mix.

The cause for that is the absence of hack proof.

Such absence is also partially and the cause for so often code reviews and even in this case to put a label of hack proof would be overoptimistic because of other factor.

Update as of 2022-04-10.

Оновлення від 2022-04-10.

Адже існують повторювані процеси з деякими майже непомітними відмінностями, як наприклад специфічний тип вентиля з парою може стіфліти тобто насувати пару... змаганням які є обертаючоюся точкою принаймні цієї, цієї та цієї веб сторінок, як вже був один випадок який описали у https://en.wikipedia.org/wiki/Steam_(service)#Legal_disputes 2022-04-10 03:20, то хоча це й також й лише й гра слів ... це не лише формує щось накшталт


    обертаючаяся точка
        змагання
            http://thetechawesomeness.ideasmatter.info/race-condition-simulator.html,
            http://thetechawesomeness.ideasmatter.info/market-concurrency-provider.html,
            http://thetechawesomeness.ideasmatter.info/price-lock-in-and-price-lock-out.html.

...

чому також значить теж притаманний рух як у Internet and exinternet and internetless у оновленні від 2022-04-07 і напрямок як у ML ambiguity у оновленні від 2022-04-09 ...

але і подібний повторюваний процес як наприклад яблуко вкотре впаде як у випадці описаного у 1727 тобто майже 300 років тому François-Marie Arouet, known by his nom de plume Voltaire або ж слива

де такою майже непомітною відмінністю є щось з https://en.wiktionary.org/wiki/fall.

І хоча наразі у двох різних веб торгівельних майданчиках тобто веб storefronts які ймовірно розширює веб shopfronts присутня різниця у цінах у 10 але й назви того продукта дещо різні хоча розробник чи розробниця щоточно developer і надав у одній веб сторінці цього свого веб продукта посилання до цих двох веб торгівельних майданчиків але й у одному з них як і присутнє зазначення регіона й одразу у веб адресі що є зручним у одному з УРР щотак у іншому ні, хоча така вимога ймовірно включає більше ніж цю таку ознаку хоча й допомагає якщо присутня також і порівнювати ціни веб продукта тими веб торгівельними майданчиками швидше. А без присутності того означеного регіона те й порівняння є неточним. Це було щодо такої вимоги.

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

Update as of 2022-06-14.

Оновлення від 2022-06-14.


package info.ideasmatter.pl2plcnvrtr;
import java.util.List;
import java.util.ArrayList;
public class Куп {
    public static void main(String[] args) {
        //LocalDateTime місцевийЧасПісляСтарту = 
            //LocalDateTime.now().atZone(ZoneId. )
                //.toInstant().toEpochMilli();
                //тоді після повторного запуска тут перегортання стека.
                //навіть якщо Перевіряльна або інша подібна зберігає у себе
                //щодо кожної Відвідинної або інших подібних.
                //якщо це не у якихось межах які менше ніж цей
                //місцевийЧасПісляСтарту і інший у момент його збирання Одиницею.
                //щоб уникнути необхідно зберігати дані про це у файл
                //принаймні на проміжок між повторними запусками
                //чи до іншої веб послуги і звертатися до неї 
                //після повторного запуска.
                //а також якщо це влізає у Перевіряльну і вона
                //повідомила про це а також якщо це
                //було схоплено у try/catch за його наявності.
        List<ПерелікОдиниць> перелікПерелікаОдиниць = new ArrayList<>();
        //..
        // 
        for(ПерелікОдиниць  перелікОдиниць: 
                перелікПерелікаОдиниць) {
            for(Одиниця одиниця: 
                перелікОдиниць.одиниці ) {
                if (одиниця.типОдиниці.equals(
                        ""//додати 
                )) {/*..*/}//..
                //додати if за проміжок. 
                //додати за кількістю Перевіряльних до
                //    Відвідинних
                //додати по 2 підтвердження для 1 з типів. 
                //додати штучний блокатор от перегортання стоса і подібних.
            }
            
        }
    }
    
    class ПерелікОдиниць {
        public List<Одиниця> одиниці;//сховати
    }
    
    class Одиниця {//процес
        public String назваОдиниці;//сховати
        public String типОдиниці;//сховати
        public String заПроміжок;//сховати

        public void обов'язковаПеревірка(//щодо налаштування;2023-06-26.
            int кількістьПеревірок/*де 0 найменша між інших.*/){/**/}//перед
                //завершенням. особливо якщо лише 1 Відвідина одиниця. 
                //додано від 2022-06-27.
                //додано від 2022-06-28.
                //адже проміжок перед завершенням можливий різний
                //Одиниці після таких перевірок і до завершення
                //мають бути якось блоковані.
    }
    
    class Перевіряльна extends Одиниця {
        public String назваПеревіряльної = "";//сховати
        //додати метод запитати.
    }
    
    class Відвідина extends Одиниця {
        public String назваВідвідини = "";//сховати
        //додати метод узяти.
    }
    //додати інщі.
}

http://thetechawesomeness.ideasmatter.info/part-recomposer.html.

http://thetechawesomeness.ideasmatter.info/part-recomposer-for-another-application.html.

http://thetechawesomeness.ideasmatter.info/some-virus-control-methods.html.

http://thetechawesomeness.ideasmatter.info/summation.html.

http://thetechawesomeness.ideasmatter.info/feature-as-a-dependency.html.

http://thetechawesomeness.ideasmatter.info/mvc.html.

http://thetechawesomeness.ideasmatter.info/hyperprotocol.html.

http://thetechawesomeness.ideasmatter.info/market-concurrency-provider.html.

http://thetechawesomeness.ideasmatter.info/configuring-alternative-compilers-in-macos.html.

http://thetechawesomeness.ideasmatter.info/gravitron.html