Быть хорошим программистом обработки графики и обработки изображений не требует этого низкоуровневого знания, но я действительно очень не хочу быть невежественным о внутренностях того, что я использую. Я вижу два способа преследовать это - высокий уровень вниз или нижний уровень.
Нисходящий вопрос следующего, как действие прослеживает от операции высококачественной графики, например, нарисовать круг к аппаратным средствам. Узнайте OpenGL хорошо. Тогда источник к Мезаструктуре (свободный!) обеспечивает быстрый взгляд на то, как OpenGL может быть реализован в программном обеспечении. Источник к Xorg был бы следующим, сначала чтобы видеть, как действие идет от вызовов API до стороны клиента к X-серверу. Наконец Вы погружаетесь в драйвер устройства, который взаимодействует через интерфейс с аппаратными средствами.
Вверх дном: создайте свое собственное аппаратное обеспечение машинной графики. Думайте о способах, которыми это могло соединиться с компьютером - как обработать крупные числа пикселей через несколько регистров размера байта, как DMA будет работать. Запишите драйвер устройства и попытайтесь разработать графическую библиотеку, которая могла бы быть полезна для программистов приложения.
восходящий путь состоит в том, как я учился, несколько лет назад, когда это была возможность с медленными 8-разрядными микропроцессорами. Прямой опыт со взаимодействием через интерфейс схемы и аппаратного программного обеспечения дал мне хорошую оценку трудных проектных решений - например, нарисовать прямоугольники с помощью умных аппаратных средств в драйвере устройства или более высоком уровне. Ни одно из этого не имеет практической повседневной ценности, но обеспечило основу знания для понимания более новой технологии.
You probably want to convert it to a Reader
, not an InputStream
. Use StringReader to do this. StreamSource has a constructor that takes a Reader, and you can pass that StreamSource
to Transformer.transform().
I say you probably want a Reader
rather than an InputStream
because a String holds characters, not bytes, and an InputStream
is a stream of bytes while a Reader
is a stream of characters.
Use ByteArrayInputStream:
String S = ...;
InputStream source = new ByteArrayInputStream(S.getBytes(encoding))