All streams
Search
Write a publication
Pull to refresh
0
0

Dark side eye. А у нас печеньки! А у вас?

Send message
Из микроволновки же =)
Собираем машину времени в четыре шага из микроволновки в картинках
1. Отрываем один банан от всех остальных:
image

2. Кладем банан в микроволновку:
image

3. Запускаем:
image

4. PROFIT!
image
Кроме этого, Quark поддерживает отладку JTAG и является синтезируемым (synthesizable) CPU, то есть, позволяет сторонним производителям добавлять к ядру Quark свои блоки.

Т.е. это по сути это ПЛИС? Какие у неё характеристики? Своя разработка или одного из крупных производителей ПЛИС? И какой объем в ней занимает этот самый кварк — и сколько же ресурсов остается для сторонних производителей? Можно ли будет полностью заменить кварк на какой-то свой софт-процессор стандартными средствами? Или эта возможность будет предоставлена только для крупных производителей на заказ, а в домашних условиях так нельзя будет делать?
Юзал Quick 203G — отличнейший девайс, а цифровая регулировка температуры очень удобна, ИМХО. В общем, своих денег стоит.
Вот так и появится новый вид мигалок =)
Ааа, вот оно как, оказывается. Теперь понятно.
Может быть я что-то не понимаю или добавили какие-то новые правила, но что мешало распечатать на простом принтере? Неужели нигде рядом не нашлось ни одной инет-кафешки или ларька оперативной печати/копирования?
Время жизни звезды зависит от её массы: чем больше масса звезды, тем быстрее она сгорает, и чем меньше масса — тем медленнее она расходует свое топливо и тем дольше живет. Существуют звезды разных размеров — от таких маленьких как Солнце и даже меньше, до гигантов типа VY Большого Пса с размерам больше орбиты Юпитера. Соответственно и возраст звезд может сильно различаться.
Ребята конечно молодцы и девайс приколный, но вот я бы предпочел купить девайс, который поглощает весь свет, который идет от монитора во все стороны и мешает спать домочадцам или от солнца в окне — чтобы не слепило летом xD
Координаты в пространстве определяются тремя числами, точно так же как и в GPS есть широта, долгота и высота.
Это из учебника по математике средней школы. Исходные данные: скорость звука в воздухе, время вспышки молнии (оптика), время прихода звука в три точки с известными координатами. Зная разницу во времени между вспышкой молнии и громом легко вычисляем расстояние до этой самой вспышки. Теперь, зная координаты трех точек в пространстве и зная расстояние от каждой из них до молнии легко находим координаты молнии. Фактически рисуем в воздухе три сферы — а точка их пересечения и есть молния. И вот чтобы определить положении молнии в каждый момент времени и нужна высокая точность координат каждой из трех точек, а так же знание характеристик воздуха типа температуры, влажности и т.п., т.к. от них зависит скорость звука.
По характеристикам звука и относительному смещению во времени всех трех записей.
Строго говоря в Java вообще нет двумерных массивов, поэтому автор всех здорово запутал своими параллелями с Си и Паскалем. Видимо отсюда и весь налет мистики.

Да, это если строго. А по факту получается, что int[][] генерирует вложенные массивы, а не перемножает i и j и делает массив соответствующего размера. Т.е.:
int a[][] = new int[N][K]
int b[] = new int[N*K];
a != b;

Кроме того, я так предполагаю, что в мануале по Java этот момент указан…
Так и есть, одна из первых ссылок в гугле ведет вот сюда: www.learn-java-tutorial.com/Arrays.cfm#Multidimensional-Arrays-in-Memory
int[][] nums = new int[3][6];
image
Если в целом — то монопенисуально, т.е. без разницы — будет там перемножение индексов или сложение смещений адресов в массиве. Это если смотреть с точки зрения конечных действий. Все зависит от конретной реализации в конкретной железке. Просто не забываем, что там еще может оказаться код проверки на попадание индекса в размер массива, какие-то еще процедуры инициализации и все такое прочее. А так я уже сказал — выбор конкретного решения зависит от конкретной задачи. В разных случаях один и тот же код может быть разной степени правильности. Как отрицательной, так и положительной.
Ответ на вопрос, «почему так происходит» был дан lunserv в комментарии чуть выше: habrahabr.ru/post/211747/#comment_7289139
Я его чуть дополнил примером.
Но мне все-таки правда интересно, где и в каких проектах такая оптимизация может быть полезной? Ведь по сути это экономия на спичках, а если нет, и правда нужна каждая миллисекунда при обработке матриц больших размеренностей, то неужели для java нет jni библиотеки для таких типовых операций на матрицах?

На самом деле, для разных задач бывают разные требования. Если данную ситуацию рассматривать с общей точки зрения (обычное программирование) — это не экономия на спичках и не оптимизация, а выбор правильного решения задачи. Применение массива с массивами имеет смысл только для данных, в которых строки или столбцы могут быть разной размерности и не критично по скорости. Все. Во всех остальных случаях, когда в массиве данных строки и столбцы одинаковые или важна скорость, то следует применять обычный линейный массив, чтобы исключить лишний код, который может быт вставлен «шибко умным» компилятором и/или оптимизатором. Сюда относятся, например изображения, матрицы, таблицы и т.п. Ибо в любом случае, память в ПК линейная, т.о. это самое естественное представление данных.
Да, все верно. Тормоза вызваны именно тем, что двумерный массив представлен как массив из массивов, в результате для получения определенного элемента надо сделать несколько дополнительных операций по получению вложенного массива, вместо прямого доступа к нужному элементу. Поэтому и получается, что случайный доступ медленнее последовательного. Так что кэш процессора тут вообще не при чем…
Пример:
ideone.com/crcmVU
Код
class A {
  public static void main(String[] args) {
    int n = 5000;

    int g[][] = new int[n][n];
    long st, en;

    // one
    st = System.nanoTime();
    for(int i = 0; i < n; i++) {
      for(int j = 0; j < n; j++) {
        g[i][j] = 10; 
      }
    }
    en = System.nanoTime();
    System.out.println("\nTwo time " + (en - st)/1000000.d + " msc");

    // two
    st = System.nanoTime();
    for(int i = 0; i < n; i++) {
      g[i][i] =  20;
      for(int j = 0; j < i; j++) {
        g[j][i] = g[i][j] = 20; 
      }
    }
    en = System.nanoTime();
    System.out.println("\nTwo time " + (en - st)/1000000.d + " msc");
    
    // 3 Обычный массив такого же размера, как и двухмерный, линейный проход по всем элементам
    int arrLen = n*n;
    int[] arr = new int[arrLen];
    st = System.nanoTime();
    for(int i : arr) {
      arr[i] = 30;
    }
    en = System.nanoTime();
    System.out.println("\n3 time " + (en - st)/1000000.d + " msc");
    
        
    // 4 Тот же массив, но работаем как с двухменым массом
    st = System.nanoTime();
    int i, j;
    for(i = 0; i < n; i++) {
      for(j = 0; j < n; j++) {
        arr[i*n+j] = 40;
      }
    }
    en = System.nanoTime();
    System.out.println("\n4 time " + (en - st)/1000000.d + " msc");
  }
}

Результат:
Two time 71.998012 msc
Two time 551.664166 msc
3 time 63.74851 msc
4 time 57.215167 msc

Ну и плюс, скорее всего, свою лепту обычно вносит оптимизатор — я не джавист, так что как оно там внутрях работает и что делает я не знаю.
Да, при нажатии на облачко или кнопку ничего не происходит. А вот если кинуть файл в окно — то он загружается.
А в опере 12 и до этого хабрасторэйдж не работал из-за проблем с логином… Так что ничего не изменилось для нас =)
Это если расширение для стилей не ставить. А если ставить — то стили ставятся в один клик же.

Information

Rating
Does not participate
Registered
Activity

Specialization

Application Developer, Software Architect
Lead