Я могу придумать два пути, один с GROUP_CONCAT, а другой с использованием подзапроса.
SELECT user_id, GROUP_CONCAT(installed_version) as all_patterns
FROM your_table
GROUP BY user_id
HAVING all_patterns REGEXP 'Pattern 1'
AND all_patterns REGEXP 'Pattern 2';
-
SELECT * FROM
(
SELECT user_id, installed_version FROM your_table
WHERE installed_version LIKE 'Pattern 1'
) as tmp
WHERE installed_version LIKE 'Pattern 2';
Этот (PDF) полезное учебное руководство, которое обходит Вас через основы сериализации и сокеты, затем связывает эти два понятия (примерно на полпути посредством слайдов), чтобы показать, как сериализировать объект и отправить его от клиента к серверу (никакой RMI). Я думаю, что это точно, что Вы хотите.
Его довольно простое, на самом деле. Просто сделайте свои объекты сериализуемыми, и создайте ObjectOutputStream и ObjectInputStream, которые подключены к любому базовому потоку, который Вы имеете, скажем FileInputStream, и т.д. Затем просто запишите () безотносительно объекта, который Вы хотите к потоку и читаете его с другой стороны.
Вот пример для Вас.
Java обеспечивает (двоичную) сериализацию объекта с помощью ObjectOutputStream (и ObjectInputStream). Вы можете просто writeObject () в поток и readObject () на другом конце. Все, что необходимо сделать, чтобы это работало, является реализацией сериализуемый интерфейс.
А скорее, чем выполнение этого вручную, можно интересоваться взятым это, каждый выравнивает и использующий Вызов Удаленного метода. С RMI можно назвать методы на объектах, которые живут в другой JVM, и вся сериализация и сети происходят под капотом.
И ради полноты, существует также бобовая сериализация XML, если Вы не можете использовать двоичный формат. Это формат XML очень универсально (чтение: подробный и ужасный), но существуют некоторые популярные библиотеки (как XStream), которые создают альтернативную сериализацию XML.