При выполнении Докера в Windows тогда, он будет использовать Hyper-V - я нашел, что Hyper-V резервирует набор портов - можно узнать путем выполнения этого:
netsh interface ipv4 show excludedportrange protocol=tcp
На моей машине я видел, что она имела зарезервированный порт 50000. Для освобождения этого порта, я отключил Hyper-V:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
После перезагрузок, я зарезервировал порт 50000:
netsh int ipv4 add excludedportrange protocol=tcp startport=50000 numberofports=1
Тогда включил Hyper-V снова:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
, Когда это возвратилось, я мог выполнить Jenkins в Докере в Windows:
docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
Пример:
Синтаксические анализы шестнадцатеричное значение для получения значений цвета RGB.
var hex = 'ffaadd';
var rgb = parseInt(hex, 16); // rgb is 16755421
var red = (rgb >> 16) & 0xFF; // returns 255
var green = (rgb >> 8) & 0xFF; // 170
var blue = rgb & 0xFF; // 221
Я использовал его однажды для виджет полномочий . Полномочия файла в Unix являются битовой маской, так для парсинга его, необходимо использовать битовые операции.
Используемый экстенсивно, например, в событиях JS.
Можно использовать их для зеркального отражения булева значения:
var foo = 1;
var bar = 0;
alert(foo ^= 1);
alert(bar ^= 1);
Это немного глупо, хотя и по большей части побитовые операторы не имеют многих приложений в JavaScript.
Учитывая усовершенствования JavaScript делает (особенно с nodejs, который позволяет серверное программирование с js), в JS существует все более сложный код. Вот несколько экземпляров, где я использовал побитовые операторы:
операции IP-адреса:
//computes the broadcast address based on the mask and a host address
broadcast = (ip & mask) | (mask ^ 0xFFFFFFFF)
//converts a number to an ip adress
sprintf(ip, "%i.%i.%i.%i", ((ip_int >> 24) & 0x000000FF),
((ip_int >> 16) & 0x000000FF),
((ip_int >> 8) & 0x000000FF),
( ip_int & 0x000000FF));
Примечание: это - код C, но JS почти идентичен
Выезд статья в Википедии на этом
В JavaScript вы можете использовать двойное побитовое отрицание ( ~~ n
) в качестве замены для Math.floor (n)
(если n
является положительное число) или parseInt (n, 10)
(даже если n
отрицательно). n | n
и n & n
всегда дают те же результаты, что и ~~ n
.
var n = Math.PI;
n; // 3.141592653589793
Math.floor(n); // 3
parseInt(n, 10); // 3
~~n; // 3
n|n; // 3
n&n; // 3
// ~~n works as a replacement for parseInt() with negative numbers…
~~(-n); // -3
(-n)|(-n); // -3
(-n)&(-n); // -3
parseInt(-n, 10); // -3
// …although it doesn’t replace Math.floor() for negative numbers
Math.floor(-n); // -4
Одно побитовое отрицание ( ~
) вычисляет - (parseInt (n, 10) + 1)
, поэтому два побитовое отрицание вернет - (- (parseInt (n, 10) + 1) + 1)
.
Следует отметить, что из этих трех альтернатив, n | n
оказывается самым быстрым .
Обновление: Более точные тесты здесь: http://jsperf.com/rounding-numbers-down
(Как опубликовано на Функция самого странного языка )
{ {1}}