[Сетевой протокол] Длинная статья с тысячами текстов, дающая вам глубокое понимание TCP, воспроизводящая сцену и осваивающая малоизвестные детали (Часть 1);
[Сетевой протокол] Длинная статья с тысячами текстов, дающая вам глубокое понимание TCP, воспроизводящая сцену и осваивающая малоизвестные детали (Часть 1);

Предисловие

Из-за подробного содержания,что приводит к чрезмерной длине,Поэтому он будет разделен натри частирассказать,Каталог выглядит следующим образом:

[Сетевой протокол] Длинная статья с тысячами текстов, дающая вам глубокое понимание TCP, воспроизводящая сцену и осваивающая малоизвестные детали (Часть 1);

  • Обзор;
  • государственная машина;
  • Три захвата и четыре волны;
  • Распаковка липкого мешка;(TCP да основан на потоках из,На самом деле такого выражения нет)

[Сетевой протокол] Длинная статья с тысячами текстов для более глубокого понимания TCP;Повторение сцены,Освойте малоизвестноеиздеталь(середина)

  • механизм ретрансляции;
  • раздвижное окно;
  • контроль потока;
  • контроль перегрузок;

[Сетевой протокол] Длинная статья с тысячами текстов для более глубокого понимания TCP;Повторение сцены,Освойте малоизвестноеиздеталь(Вниз)

  • Рукопожатие не удалось;
  • Не удалось помахать рукой;
  • Почемудатри рукопожатия?
  • Как избежать SYN-атак?
  • MTU и MSS;
  • TIME_WAIT продуманный дизайн;
  • Почему исходные серийные номера ISN разные?
  • Знать TCP измаксимумсоединять Считать??

Обзор

Протокол управления передачей (TCP, Передача Control Protocol) да Что-то вродеориентированный на соединение, надежность, на основе потока байтов из протокола связи транспортного уровня, путем IETF из RFC 793 определение;

TCP Цель существования адаптирована для поддержки многосетевых приложений с многоуровневой иерархией протоколов. соединяться с разными, но взаимосвязанными из компьютерной сети связи с главным компьютером между парами процессов TCP Обеспечить надежные услуги связи. TCP Если предположить, что это может быть получено просто из протоколов нижнего уровня, это может быть ненадежная служба отчетов. В принципе, TCP Должен уметь работать в различных системах связи, от проводных до сетей с коммутацией пакетов или сетей с коммутацией каналов.

TCP даа протокол связи для глобальных сетей,При общении в нескольких сетях,Предоставьте метод связи между двумя конечными точками связи со следующими характеристиками:

(1)Потоковый подход;

(2)ориентированный на соединение;

(3)Надежный метод связи;

(4) При плохом состоянии сети попытайтесь уменьшить нагрузку на полосу пропускания системы, вызванную повторной передачей;

(5) Связь. Техническое обслуживание ориентировано на связь между двумя конечными точками, без учета промежуточного сегмента сети и узлов.

удовлетворить TCP Протокол с этими характеристиками TCP Соглашение предусматривает следующее:

① Фрагментация данных: пользовательские данные фрагментируются на отправляющей стороне и повторно собираются на принимающей стороне. TCP Определить шардингизразмер и управление шардингоми Реорганизация;

② Подтверждение прибытия: когда принимающая сторона получает фрагментированные данные, она отправляет подтверждение отправляющей стороне на основе порядкового номера фрагментированных данных;

③ Ретрансляция тайм-аута: оставить сторону существованияотрегулировать запуск таймера тайм-аута при фрагментации.,Если соответствующее подтверждение не получено по истечении времени существования таймера,Повторная отправка фрагментов;

④ Раздвижное окно: TCP объединять Размер принимающего буфера каждой стороны фиксирован, сторона Разрешить только другую сторонуотправлятьпринимающая боковой буфер может вместить изданные TCP обеспечивает управление потоком на основе скользящего окна.,Предотвратить переполнение буфера более быстрыми хостами на более медленных хостах;

⑤ Обработка неисправностей: как IP отчет о данных для передачи из TCP Фрагменты могут приходить не по порядку, TCP Полученные изданные будут переупорядочены, а полученные изданные будут переданы на прикладной уровень в правильном порядке;

⑥ Дублирующая обработка: как IP отчет о данных для передачи из TCP Фрагменты будут дублироваться, TCP изпринимающая сторона должна отказаться от изданных дубликатов;

⑦ Проверка данных: TCP буду держать это первым частичная проверка и, это сквозная проверка, объект обнаруживает данныесуществовать из любых изменений во время передачи. Если есть ошибка в полученной фрагментации и контрольной сумме, TCP Этот фрагмент будет отброшен, и получение этого сегмента не будет подтверждено, что приведет к тайм-ауту узла и повторной отправке.

Потоковый подход

TCP да Протокол байтового потока, поток в смысле да не имеет фиксированных границ изсообщения.

Когда сообщение пользователя проходит TCP Во время передачи протокола,Сообщение может быть сгруппировано операционной системой в несколько TCP-сообщений.,То есть полное сообщение пользователя разбивается на несколько сообщений TCP для передачи.,Также возможно объединить несколько сообщений в одно. TCP сообщениепередача。

Это потому, что на отправляющей стороне, когда мы вызываем send данные завершения функции отправлять после,данные реально не выходят из интернета отправить,И да копируется из прикладной программы в стек протоколов ядра операционной системы.,Что касается того, когда это было на самом деле,Зависит от таких условий, как окно отправки, окно перегрузки и текущий размер буфера отправки.。То естьдаобъяснять,Мы не можем думать так каждый раз send При вызове отправленных, полное сообщение будет отправлено целиком.

В это время,Получатель из программы, если нет Знать отправить из длины сообщения,То есть, когда да не Знать сообщение из границы,да Невозможно прочитать действительное сообщение пользователя;

Например, терминал отправляет вызовы один за другим send Функция отправила сообщение 「Hello World,」「sid10t.」,

Затем рассмотрите различные воздействия во время фактического процесса передачи данных по сети.,Во время фактического процесса отправки могут возникнуть следующие ситуации:,Не учитывается фактический размер двух сообщенийиз

  • Ситуация первая: Обычная отправка, оба размера сообщения меньше оговоренных. MSS и соответствуют условиям подлинной отправки;
  • Ситуация вторая: слитьотправлять,TCP Упакуйте два пакета данных в один TCP сообщениеотправлятьвыходить;
  • Ситуация третья: Разделить раньше, объединить позже;
  • Ситуация четвертая: Объединить раньше, разделить позже;

ориентированный на соединение

Подключить и отключить

  • соединять:принимающая сторона существовать Собственныйиз Прослушивающий порт получаетсоединятьпросить,три рукопожатия После этого поддерживайте определенные изданные структуры. отправлятьконец из информации,Если подтвердится Долженинформация:принимающая сторона отправитьиз контента будет отправлятьконец перенимать, отправлятьконец отправитьиз контента тоже будет принимающая сторона перенимать,Пока не отключится.
  • Отключение: пройти помахать рукой четыре раза Убедитесь, что обе стороны согласны и согласны на отключение другой стороны, затем remove Сохранять изданные структуру и информацию для другой стороны, а последующий отправленный пакет другой стороны не будет перениматься до тех пор, пока соединение не будет создано снова.  
Суть в структуре данных

TCP Учреждатьсоединятьизприродадасуществоватьклиентконеци СерверКаждый из них имеет определенную структуру.(Что-то вродегосударственная машина), чтобы записывать и сохранять это соединять изостояние, а не да Истинное изсуществовать Между этими двумя концами есть похожая линия «Сетевая выделенная линия» вещь.

существовать IP Уровень, ситуация в сети должна быть нестабильной или нет, а путь передачи находится вне контроля верхнего уровня TCP. Единственный способ оптимизировать — делать больше суждений, повторных попыток, контроля перегрузки и других вещей.  

Соединение - это всего лишь термин

Пакеты в конечном итоге передаются слой за слоем через канальный уровень, физический уровень и т. д.,Так что объединять - это всего лишь логический термин,Трубы не существует,соединять Существование здесь эквивалентно соглашению между двумя сторонами. Две стороны ведут переговоры по правилам статуса. обслуживания。  

статус обслуживания

три рукопожатияпосле,Клиенты могут подтвердить, что к ним могут обращаться друг друга, поэтому им нужно только поддерживать такое состояние.,таким образом устанавливается единение;

соединятьда Что-то вродесостояние,установить взаимодействие, поддерживать состояние,Поддержание состояния осуществляется через определенные изданные структуры;

формула

Ты в моем сердце,Нет, ты действительно есть в моем сердце (соединять, нет, ты действительно есть в моем сердце),И даа чувство,Я думаю о тебе каждый день,Ты занимаешь место в моем сердце (данные структуры),да Что-то вродесостояние,Мне нужно поддерживать это все время,Я скучаю по тебе каждый день (государственная машина). Когда ты злишься,я буду внимательнее,Когда ты счастлив,Я немного расслабляюсь (контроль пробок,Есть степени скорости),Пока я не встретил другую ее,До свидания (удалить структуру данных),хорошо,мужчина!

Надежный метод связи

IP да Что-то вродениктосоединять、Нет Надежныйпротокол:это всемаксимумможетданныеподчинятьсяотправлятьпередает получателю,Однако нет никакой гарантии, что порядок поступления пакетов будет соответствовать порядку их передачи.,Нет гарантии, будет ли пакет дублироваться.,Даже не Нетгарантировать Сумкададойдет до получателя。Нетгарантировать有序、Удалить дубликаты、весь.

TCP хочусуществовать IP Чтобы построить на его основе надежный протокол транспортного уровня, должен существовать сложный механизм обеспечения надежности. В основном включают Вниз Столкнуться с несколькими аспектами,существоватьвышеОбзорсередина Все упомянутые:

  • данные Шардинг;
  • подтверждение прибытия;
  • Таймаут и повторная отправка;
  • раздвижное окно;
  • внеочередная обработка;
  • повторная обработка;
  • данныепроверять;
  • контроль перегрузок;

Принять полнодуплексный протокол

Полнодуплексную связь также называют двусторонней одновременной связью.,То есть обе стороны связи могут получать информацию одновременно. РС-422 РС-422 Дуплекс) дареаловать микропроцессор и периферийные устройства с использованием линий отправки и приема независимо от метода.,Возможно осуществление операций передачи в обоих направлениях одновременно.

существовать TCP серединаотправлятьконеципринимающая Сторона может быть клиентом/сервером или сервером/клиентом. Обе стороны связи могут получать данные или управлять данными в любое время. Каждое направление изданного потока независимо управляет порядковым номером, размером скользящего окна и MSS. и другая информация.

Заголовок сообщения

  • Последовательность Число): существование генерируется компьютером как его начальное значение при установлении соединения, путем SYN Пакет переданпринимающая Хост стороны, каждый раз, когда передает данные, «накапливает» «данные количество байтов» по ​​размеру. Используется для решения проблемы беспорядка сетевых пакетов.
  • Номер подтверждения Номер): относится к «ожиданию» получения изданныхиз серийного номера в следующий раз. После получения этого подтверждающего ответа сторона отправки может предположить, что существующий порядковый номер был получен ранее нормально. Используется для решения проблемы потери пакетов.
  • Бит управления:
    • ACK:Должен Бит 1 Когда поле «Ответ подтверждения» становится действительным, TCP Положения, отличные от тех, которые были первоначально установлены SYN Вне пакета этот бит должен быть установлен в значение 1 。
    • RST:Должен Бит 1 час,выражать TCP Если в соединении возникает неисправность, соединение должно быть принудительно отключено.
    • SYN:Должен Бит 1 Когда выражение надеется создать соединение и установить начальное значение серийного номера в поле «Серийный номер».
    • FIN:Должен Бит 1 Когда в будущем у выражения больше не будет данныхотправлять, я надеюсь отключить соединение. Когда связь заканчивается и вы хотите отключиться, общающиеся стороны и хосты могут обмениваться данными друг с другом. FIN Бит 1 из TCP часть.
    • URGАварийный флаг,выражатьиздаэтотсообщениечастьсередина Существует чрезвычайная ситуацияданные,Поместите экстренные данные перед обычными данными. Когда принимающая сторона получает это сообщение, экстренные данные должны быть обработаны в первую очередь;,Дальше разберитесь с обычными данными.
    • PSHСрочный флаг,когдаотправлятьконец Воля PSH Если установлено значение 1, TCP немедленно создаст сообщение и отправит его. Принимающая сторона получает PSH Как только получено 1 изсообщение, данные в приемном буфере доставляются приложению, не дожидаясь заполнения буфера перед доставкой.
  • Размер окна: для TCP Управление потоком. Скажите другой стороне эту сторону TCP Сколько еще байт может храниться в буфере приема, чтобы другая сторона могла контролировать скорость.
  • Проверка и: Заполнено до конца отправки,принимающая сторонаверно TCP сообщение выполнение сегмента CRC алгоритм проверки TCP Проверьте, не поврежден ли сегмент сообщения во время передачи. В объем проверки входят глава и части данных. TCP Надежная передача является важной гарантией.
  • Аварийный указатель: положительное смещение. Это поле порядкового номера и значение z добавляются для представления последних срочных данных из следующего байта, а также порядковый номер для конца передачи принимающей стороне направляют экстренные данные.

государственная машина

состояние

описывать

CLOSED

закрытиесостояние,Нет никаких связанных событий или продолжающегося существования;

LISTEN

мониторсостояние,Сервер ожидает подключения для входа;

SYN_SENT

был сделан запрос на объединение,Дождитесь подтверждения;

SYN_REVD

Получил запрос на соединение,Еще не подтверждено;

ESTABLISHED

соединять Учреждать,нормальныйданныепередача инфекциисостояние;

FIN_WAIT_1

(активное закрытие) отправить запрос на закрытие,Подождите, пока другая сторона закроется и подтвердит;

FIN_WAIT_2

(Активное закрытие) Получите подтверждение закрытия от другой стороны и дождитесь запроса на закрытие;

CLOSE_WAIT

(Пассивное выключение) Получение запроса на выключение от другой стороны,отправить подтвердить запрос;

LAST_ACK

(Пассивное выключение) Дождитесь последнего подтверждения выключения и дождитесь, пока все группы умрут;

TIME_WAIT

Полное двунаправленное отключение и дождитесь гибели всех групп;

CLOSING

Обе стороны пытаются закрыть сделку одновременно и ждут подтверждения от другой стороны;

Три захвата и четыре волны

существоватьверно TCP Имея определенное понимание, давайте перейдем к делу, TCP даориентированный на соединение, то TCP дакак Учреждатьсоединятьиз Шерстяная ткань,Это тоже горячий вопрос на собеседовании,TCP изтри рукопожатияипомахать рукой четыре раза,Нет Проходитьсуществоватьофициальное представление Три захвата и четыре волны До,Первыйсуществовать Linux Установите артефакт тестирования стека сетевых протоколов на packetdrill,Удобен для последующих экспериментальных операций;

packetdrill

packetdrill да Google Открытый исходный код Инструмент тестового сценария, который можно использовать для тестирования. TCP、UDP、IP сетевой протоколкуча,Он состоит из строк сценария, основанных на временной последовательности.,Выполняйте пункт за пунктом в хронологическом порядке.

Его языковой дизайн очень близок к tcpdump и strace и содержит четыре типа операторов:

  • мешок с данными. Используйте что-то вроде tcpdump из грамматики, поддержка TCP、UDP、ICMP пакет данных, также предоставляет общие TCP Опции конфигурации, в том числе SACK、MSS、window scale ждать.
  • Системные вызовы. Используйте что-то вроде strace изграмматика。
  • Shell Заказ. Сделав вызов, можно выполнить конфигурацию системных параметров или проверку утверждений по сети. протоколкучасостояние。
  • Python сценарий. проходить %{ command }% Сделайте звонок, вы можете вывести или подтвердить подтверждение TCP состояние。

о packetdrill Блогер по установке и настройке да ссылается на эту статью из установка инструмента packagedrill,чиновник github адрес:google/packetdrill

После завершения установки вы можете протестировать ее. tests/linux/fast_retransmit/ Каталог из fr-4pkt-sack-linux.pkt,Этот официальный представитель предоставляет тестовый скрипт:

Язык кода:javascript
копировать
./packetdrill tests/linux/fast_retransmit/fr-4pkt-sack-linux.pkt

Примечание: существуют при написании скрипта самостоятельно,необходимо обеспечитьпоследовательность конца строкидляLF,В противном случае просто подождите и усомнитесь в своей жизни.,Кто кого использует Знать точно так же копировать прошлый код;,потому чтопоследовательность конца строка другая, существование продолжает сообщать об ошибках:

Если ответа нет, это означает успех, в противном случае внесите изменения согласно сообщению об ошибке;

потому что socket Привязать порт по умолчанию да 8080, так что может пройти tcpdump руководитьмонитор,tcpdump -t -i any port 8080,Если ты знаешь себя через сетевую карту,напримерда eth0,Затем поместите any Заменить на eth0

если ты чувствуешь tcpdump Не нравится из, вы также можете сопоставить данные с Wireshark серединаидти,существовать Wireshark Открыть в папке cmd и используйте следующую команду:

Язык кода:javascript
копировать
ssh root@host -p port "tcpdump -i any -n tcp port 8080 -s 0 -l -w -" | "Wireshark.exe" -k -i -

Тогда давайте исследуем TCP да Как построить бар объединения;  

три рукопожатия

Перед рукопожатием: клиент и Сервер включены. CLOSED состояние. Во-первых, да Сервер активно мониторит определенный порт, в LISTEN состояние;

первое рукопожатие

Клиент случайным образом инициализирует серийный номер (client_isn) и поместит этот серийный номер в TCP первая частьиз поля «Серийный номер» и вставьте SYN Положение отметки 1 ,выражать SYN сообщение. Тогда поставь первый SYN сообщениеотправлять к Серверу,выражать инициировать подключение к Серверу, сообщение которого не содержит данных прикладного уровня, после чего клиент находится в режиме SYN-SENT состояние。

Первое сообщение – SYN-сообщение показано на рисунке ниже:

второе рукопожатие

Серверполучил клиент из SYN После сообщения сначала Сервер также случайным образом инициализирует свой серийный номер (server_isn) и заполняет этот серийный номер. TCP первая частьиз Поле «Серийный номер», за которым следует TCP первая частьиз Заполните поле «Номер ответа на подтверждение» client_isn + 1, Затем поместите SYN и ACK Положение отметки 1. Наконец, сообщение отправляется клиенту. Сообщение не содержит данных уровня приложения. После этого сервер подключается. SYN-RCVD состояние。

Второе сообщение — сообщение SYN+ACK показано на рисунке ниже:

Нет.три рукопожатия

После получения сообщения сервера клиент должен ответить серверу последним ответным сообщением. Первое ответное сообщение. TCP первая часть ACK Положение отметки 1 , затем заполните поле «Номер ответа на подтверждение» server_isn + 1 , напоследок дайте сообщение отправить Серверу, на этот раз сообщение можно нести клиента на изданный сервер, и тогда клиент в ESTABLISHED состояние。

Третье сообщение – сообщение ACK показано на рисунке ниже:

После рукопожатия: После того, как сервер получит ответное сообщение клиента, он также вводит ESTABLISHED состояние;

сверхуиз Проходить程可以发现Нет.три рукопожатияда может передавать данные (да не может передавать данные в первых двух рукопожатиях), сервер должен ждать получения ACK Только после группировки можно отправлять данные,Это тоже часто задаваемый вопрос на собеседованиях.

После завершениятри рукопожатия, обе стороны находятся в ESTABLISHED состояние,На данный момент соединение создано.,Клиенты могут взаимодействовать друг с другом.

помахать рукой четыре раза

Нет в мире банкета, который длился бы вечно,Для TCP-соединения тоже нравится это, TCP отключитьсясоединятьдапроходитьпомахать рукой четыре в разы путь.

Обе стороны могут активно отключать соединение. После отключения соединения «ресурсы» на хосте будут освобождены.

первая волна

Клиент намерен закрыть соединение, в это время он отправит сообщение TCP первая часть FIN Флаг установлен на 1 изсообщение, то есть FIN сообщение, а затем клиент вводит FIN_WAIT_1 состояние。

Помахать второй раз

После того как Сервер получает сообщение, он отправляет клиенту сообщение. ACK Ответное сообщение, затем сервер вводит CLOSED_WAIT состояние。

Клиент получает Сервериз ACK После ответа на сообщение введите FIN_WAIT_2 состояние。

помахать рукой в ​​третий раз

Подождав, пока Сервер завершит обработку данных, также отправьте их клиенту. FIN сообщение, а затем сервер вводит LAST_ACK состояние。

Нет.помахать рукой четыре раза

Клиент получает Сервериз FIN После сообщения ответьте одним ACK Ответьте на сообщение и введите TIME_WAIT состояние。

Сервер получен ACK После ответа на сообщение вы вводите CLOSED состояние, на данный момент Сервер завершил соединение.

Клиент существуетпрошел 2MSL Через некоторое время он автоматически войдет CLOSED состояние, на данный момент клиент также завершил подключение.

каждое направлениенужен один FIN и ACK,Поэтому его часто называют помахать рукой четыре раз, но вам нужно обратить внимание на изда и взять на себя инициативу закрыть соединениеиз. TIME_WAIT состояние__。

Повторение сцены

существовать Linux может пройти netstat -napt Представление команд TCP изсоединятьсостояние:

Согласно вышеизложенной теории, используйте packetdrill Создайте свою собственную среду. Блогер ниже только создал среду. рукопожатияипомахать рукой четыре процесс разиз, и нет промежуточных изданных процессов передачи:

Язык кода:javascript
копировать
0   socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
+0  setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+0  bind(3, ..., ...) = 0
+0  listen(3, 1) = 0
+0 `echo socket is listening!`

+0  < S 0:0(0) win 4000 <mss 100>
+0  > S. 0:0(0) ack 1 <...>
+.1 < . 1:1(0) ack 1 win 1000
+0  accept(3, ..., ...) = 4
+0  `echo connection established!`

+0 < F. 1:1(0) ack 1 win 1000
+0 > . 1:1(0) ack 2
+0.1 close(4)=0
+0 > F. 1:1(0) ack 2 <...>
+0.01 < . 2:2(0) ack 2 win 1000
+0 `echo connection closed!`

+0 `sleep 100`

думать

На самом деле сетевая среда не так гладка.,Постоянно происходят различные непредвиденные ситуации.,В конце концов, реальность тощая;

Напримерсуществоватьвторое При рукопожатии Сервер отвечает из ACK сообщение потерялось, что делать? да клиент отправляет повторно SYN сообщениетакже Серверпереиздание ACK А что насчет сообщения? и различные другие вопросы;

Я знаю, что произойдет в будущем. Пожалуйста, двигайтесь вперед. [Сетевой протокол] Длинная статья с тысячами текстов для более глубокого понимания TCP;Повторение сцены,Освойте малоизвестноеиздеталь(Вниз)

Распаковка липкого мешка

TCP да основано на потоке из. На самом деле такого выражения нет. Здесь я просто поясню да. TCP Липкий Баотоу да, я все понимаю;

TCP На самом деле, что касается козла отпущения, несколько пакетов данных склеены и не могут быть разделены. Наши требования слишком сложны, что приводит к проблемам программиста, а не к протоколу TCP. В соглашении говорилось, что оно не желает брать на себя вину.

Если сервер хочет гарантировать, что он может каждый раз получать изданные пакеты переменной длины от клиента, как программист должен решить эту проблему? Ниже представлено несколько решений:

  1. Используйте стандартные протоколы прикладного уровня (например: http、https) для инкапсуляции передаваемых пакетов с переменной длиной изданных;
  2. существуют Добавить специальные символы в конце каждой информациииз,Если встречаются специальные символы,представлятькогдаполоскаданные Получение завершено;
    • Недостаток: низкая эффективность, нужен один байт один байт перенимать, получить один байт и судить один раз,Определите, является ли да этой специальной строкой;
  3. существоватьотправлятьданныекусок До,«Существующие» — добавляет изданный заголовок фиксированного размера в начало блока.,В это Данные-кандидаты времени состоят из двух частей: головы данных. + данныекусок:
    • Заголовок данных: хранит общее количество байт текущего пакета данных, принимающую сторона сначала получает заголовок данных, а затем существует получает соответствующий размер из байтов согласно заголовку данных;
    • данныекусок:когдавпередданные Сумкаизсодержание;

постскриптум

Приветствуем всех, кто вносит исправления и обсуждает их в области комментариев;

Нажмите здесь, чтобы просмотреть код сценария в статье...

стоятьсуществоватьгигантизглядя через плечо TCP, спасибо за ссылку:

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода