Настоятельно рекомендуется! Артефакт аутентификации личности с открытым исходным кодом: KeyCloak!
Настоятельно рекомендуется! Артефакт аутентификации личности с открытым исходным кодом: KeyCloak!

Установить&инициализация

скачать

http://www.keycloak.org/downloads.html

Имя автора: "Автономный серверный дистрибутив".

Установить&запускать

Установить Keycloak очень просто, шаги следующие:

  • Разархивируйте установочный пакет из файла загрузки.
  • Сменить каталог наKEYCLOAK_PATH/bin ,вKEYCLOAK_PATHэто тыKeycloakиз根目录
  • 执行./standalone.sh ,Вы можете запустить Keycloak,Если вам нужно работать в фоновом режиме,затем выполните./standalone.sh & 。
инициализация

После запуска,доступhttp://localhost:8080/ Откроется интерфейс, аналогичный картинке:

Этот интерфейс позволяет нам создать учетную запись администратора для одининициализации. Тогда мы могли бы заполнить его.,Для удобства теста,Мы будем вести учет/Пароли установлены наadmin/admin , а затем нажмите кнопку «Создать», произойдет переход к следующему интерфейсу:

Это видно из рисунка,Учетная запись администратора успешно создана,Инициализация Keycloak также завершена.

Консоль управления

Нажмите на изображение вышеAdministration Console Кнопка, откроется страница входа:

Введите номер счета и пароль, которые мы установили ранее.,и нажмитеLogin in кнопка для входа в Консоль управления, как показано ниже:

Это видно из рисунка,У Консоль управления достаточно меню,Функции также богаче.,Немного страшно – столько меню,Так много подфункций,Сколько времени нужно на исследование! Это не имеет значения,Вы можете следовать ритму автора,Идите глубже.

Интеграция с Spring Boot

Нани? Я как раз говорил об инициации в прошлой статье.,Эта статья об интеграции со Spring Boot? Что это за ритм? Следуйте распорядку дня,Мне не следует вводить этот термин первым,Эта концепция?

Это не имеет значения, Keycloak очень прост, и мы можем понять различные концепции в реальном бою.

Интегрировать Keycloak очень просто, поскольку Keycloak предоставляет нам различные языки и фреймворки. Adapter ,на основеOpenID/SAMLсогласованныйAdapter,Около двадцати или около того,Желающие могут перейти по адресу:

http://www.keycloak.org/docs/latest/securing_apps/index.html#openid-connect-3

здесь,мы выбираемOpenIDпротоколвSpring Boot Adapter

Сопутствующие документы:

http://www.keycloak.org/docs/latest/securing_apps/index.html#_spring_boot_adapter

Конечно, если вы знакомы с Spring Security, вы также можете выбрать

http://www.keycloak.org/docs/latest/securing_apps/index.html#_spring_security_adapter

Однако автор полагает, что весну Securityслишком сложный,использоватьSpring Boot AdapterУже способны удовлетворить наши потребности,Так что не делай этогоSpring Security AdapterПонятно。

микросервисы

Предположим, есть весна Bootмикросервисы:

  • названный:ms-content-sample
  • Домашняя страницаhttp://localhost:8081
  • у него есть путьhttp://localhost:8081/articles ,толькоuser-role Рольизиспользоватьдомашний талантдоступ,test-role Пользователям роли не разрешен доступ.

Далее мы интегрируем Keycloak для этого сервиса и постепенно реализуем единую аутентификацию и авторизацию на основе Keycloak.

Подготовка
Создать Царство

Во-первых, нам нужно создать Царство. Область — это концепция изоляции. Пользователи в области A полностью изолированы от пользователей в области B.

Конечно, вы можете сделать это и без Создать. Значение, используйте его напрямую Master Это Realm, но, вообще говоря, для изоляции ресурсов и большей безопасности не рекомендуется делиться Realm с администраторами. Как показано ниже:

Введите имя области. Здесь, как показано на рисунке, мы создаем область с именем Realm.

Создатьклиент

После создания королевства,мы пришли заms-content-sample Создатьклиент , нажмите кнопку «Создать» на рисунке ниже.

Заполните информацию о клиенте,Здесь мы создаемодинназванныйms-content-sample Клиент.

Настройка Клиент

Далее настраиваем Клиент и по пути нажимаем кнопку Изменить:

Настройка Клиент

Как показано на картинке,Мы настраиваем ПонятноAccess Typeдляpublic,Конечно, есть и другие варианты,Напримерbearer-only,Давайте сначала выберем публичный,bearer-onlyМы поговорим об этом подробно позже;Конфигурация ПонятноValid Redirect URLS,Это адрес страницы, на которую осуществляется переход после успешной аутентификации.,вмы делаемиспользовать Понятноподстановочный знак;Конфигурация ПонятноBase URL,Как правило, его можно настроить как домашнюю страницу микросервисов.

Создать роль

относительно простой,Как показано на картинке,Мы создали две роли,user-role а такжеtest-role 。

Создание пользователей и назначение ролей
  • Создать пользователя
  • Назначение ролей

Как показано на картинке,Нажмитеuser-role,и нажмитеAdd selected,Прямо сейчас Можетдляuser1использоватьраспределение домохозяйствuser-roleРоль;Та же причина,дляuser2использоватьраспределение домохозяйствtest-roleРоль。

Установить пароль для входа пользователя
Мы создали качественную группу технического обмена,быть с замечательными людьми,Вы также станете лучше сами,ТоропитьсяНажмите, чтобы присоединиться к группе,Наслаждайтесь радостью совместного роста
на весну Bootмикросервисы ИнтегрироватьKeycloak

Без дальнейших церемоний, давайте перейдем к коду:

на основеSpring Boot Adapterиз Интегрироватьшагнравиться Вниз:

  • Добавить управление зависимостями,представлятьKeycloak adapterизbom:
Язык кода:javascript
копировать
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.keycloak.bom</groupId>
      <artifactId>keycloak-adapter-bom</artifactId>
      <version>3.4.0.Final</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
  • Добавьте стартер Keycloak:
Язык кода:javascript
копировать
<dependency>
  <groupId>org.keycloak</groupId>
  <artifactId>keycloak-spring-boot-starter</artifactId>
</dependency>
  • Добавьте следующую конфигурацию в application.yml:
Язык кода:javascript
копировать
keycloak:
  # Указывает, что это клиент onepublic
  public-client: true
  # адрес keycloak
  auth-server-url: http://localhost:8080/auth
  # keycloakвrealm
  realm: realm
  resource: ms-content-sample
  securityConstraints:
  - authRoles:
    # Следующие пути требуют роли пользователя для доступа
    - user-role
    securityCollections:
    # Вы можете написать имя, как вам нравится
    - name: user-role-mappings
      patterns:
      - /articles

Подробное объяснение элементов конфигурации смотрите в комментариях.

Таким образом, Keycloak интегрируется.

тест

доступhttp://localhost:8081/articles , используйте пользователя1 Войдите в систему с учетной записью и обнаружите, что к ней можно получить доступ, используя user2; После входа в систему появится следующий интерфейс:

До сих пор,У нас уже есть весну Приложение Boot интегрирует Keycloak и реализует RBAC Контроль разрешений модели.

Получите личность, роль и другую информацию в методе.

Во многих сценариях мы надеемся получить основную информацию о текущем пользователе в контроллере, например, имя пользователя, вошедшего в систему, роль и другую информацию. Что делать в это время?

Просто добавьте такой код:

Язык кода:javascript
копировать
@GetMapping("/articles")
public HashMap<Object, Object> search(Principal principal) {
    if (principal instanceof KeycloakPrincipal) {
        AccessToken accessToken = ((KeycloakPrincipal) principal).getKeycloakSecurityContext().getToken();
        String preferredUsername = accessToken.getPreferredUsername();
        AccessToken.Access realmAccess = accessToken.getRealmAccess();
        Set<String> roles = realmAccess.getRoles();
        log.info("Текущий вошедший в систему пользователь: {}, Роль:{}", preferredUsername, roles);
    }

Таким образом, при запросе этого метода будет распечатан журнал, подобный следующему:

2017-12-06 14:51:50.963 INFO 3160 — [nio-8081-exec-3] c.i.yes.controller.ArticleController: Текущий вошедший в систему пользователь: user1, роль: [user-role, uma_authorization]

Разве это не очень просто?

Выйти

Выйти Это тоже очень просто, просто выполнитеHttpServletRequest.logout() Метод может быть Выйти.

Пример кода:

Язык кода:javascript
копировать
@RestController
public class LogoutController {
    @GetMapping("/logout")
    public String logout(HttpServletRequest request) throws ServletException {
        request.logout();
        return «Выйти успешно»;
    }
}
Конфигурация электронной почты

См. конфигурацию на рисунке ниже, чтобы реализовать отправку электронной почты.

Подробную информацию о шаблоне электронной почты по умолчанию см. $KEYCLOAK_PATH/themes/base/email/html , написанное на Freemarker. Мы также можем настроить шаблоны писем, подробности см. в разделе «Настройка». раздел темы».

Интеграция с Spring Cloud

Keycloak с Spring Загрузочное приложение. Итак, весной, с помощью Как интегрировать Keycloak в распределенное приложение, построенное на облаке? ——То есть: Как передать токен доверия Амикросервисы в Бмикросервисы?

Ниже мы разделим на два сценария:

  • Используйте Feign для передачи токена
  • Передать токен с помощью Zuul
Используйте Feign для передачи токена

Ниже мы создаемодинновыйизмикросервисыms-consumer-sample ,ДолженмикросервисыделатьиспользоватьFeignнастраиватьиспользоватьвышеизhttp://localhost:8081/articles интерфейс.

Интегрируйте Spring, как упоминалось выше. Bootизшаг,В том же королевстве,Создать нового клиента,названныйms-consumer-sample ,Ранназаддляms-consumer-sample микросервисы также интегрируют Keycloak. Ниже мы используем Feign для реализации передачи токенов:

Просто напишите перехватчик Feign:

Язык кода:javascript
копировать
public class KeycloakRequestInterceptor implements RequestInterceptor {

    private static final String AUTHORIZATION_HEADER = "Authorization";

    @Override
    public void apply(RequestTemplate template) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        Principal principal = attributes.getRequest().getUserPrincipal();

        if (principal != null && principal instanceof KeycloakPrincipal) {
            KeycloakSecurityContext keycloakSecurityContext = ((KeycloakPrincipal) principal)
                    .getKeycloakSecurityContext();

            if (keycloakSecurityContext instanceof RefreshableKeycloakSecurityContext) {
                RefreshableKeycloakSecurityContext.class.cast(keycloakSecurityContext)
                        .refreshExpiredToken(true);
                template.header(AUTHORIZATION_HEADER, "Bearer " + keycloakSecurityContext.getTokenString());
            }

        }
        // В противном случае ничего не делайте
    }
}

Это нетрудно увидеть из кода перехватчика,Ставим полученный Токен,Поместите это в заголовок,передан поставщику услуг(Прямо сейчас:ms-content-sample) 。

так,мы простовыполнить Понятноms-consumer-sample а такжеms-content-sample Передача токенов между двумя микросервисами - то есть: единый вход

Передать токен с помощью Zuul

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

в это время,Мы надеемся добиться: добиться эффекта единой аутентификации на микросервисах Zuul — то есть: авторизоваться на Zuul,Это эквивалентно входу во все микросервисы.

Что делать? На самом деле это вопрос: как передать токен, которому доверяет Zuul, микросервисам, представленным Zuul?

Создаем нового клиента,названныйzuul-server , а затем напишите фильтр Zuul:

Язык кода:javascript
копировать
@Component
public class KeycloakRouteZuulFilter extends ZuulFilter {

    private static final String AUTHORIZATION_HEADER = "Authorization";

    @Override
    public String filterType() {
        return FilterConstants.ROUTE_TYPE;
    }

    @Override
    public int filterOrder() {
        return 1;
    }

    @Override
    public boolean shouldFilter() {
        RequestContext ctx = RequestContext.getCurrentContext();
        HttpServletRequest request = ctx.getRequest();
        Principal principal = request.getUserPrincipal();
        return principal != null && principal instanceof KeycloakPrincipal;
    }

    @Override
    public Object run() {
        RequestContext ctx = RequestContext.getCurrentContext();
        if (ctx.getRequest().getHeader(AUTHORIZATION_HEADER) == null) {
            this.addKeycloakTokenToHeader(ctx);
        }
        return null;
    }

    private void addKeycloakTokenToHeader(RequestContext ctx) {
        Principal principal = ctx.getRequest()
                .getUserPrincipal();

        // Причина, по которой здесь можно применить прямое приведение, заключается в том, что определение типа было выполнено в методе mustFilter.
        KeycloakSecurityContext keycloakSecurityContext = ((KeycloakPrincipal) principal)
                .getKeycloakSecurityContext();

        if (keycloakSecurityContext instanceof RefreshableKeycloakSecurityContext) {
            ctx.addZuulRequestHeader(AUTHORIZATION_HEADER,
                    this.buildBearerToken(
                            (RefreshableKeycloakSecurityContext) keycloakSecurityContext
                    )
            );
        }
        // Пользователь не авторизован и ничего не делает.
    }

    private String buildBearerToken(RefreshableKeycloakSecurityContext securityContext) {
        return "Bearer " + securityContext.getTokenString();
    }
}

Как видно из кода, в этом фильтре мы реализуем передачу Token.

Подробности смотрите в кодеms-consumer-sample

Улучшения конфигурации

Выше все созданные нами клиенты являются общедоступными. типиз,И теперь,Фактически, только Зуулу необходимо подвергаться воздействию внешнего мира.,Другие сервисы передают токены через Zuul или Feign. поэтому,мы можем удалитьZuulкромеизвсеClientизAccess TypeИзменить вседляbearer-only , как показано на рисунке:

Подробности смотрите в кодеzuul-server 。

Конфигурация, связанная с входом в систему

в предыдущей статье,Добавляем пользователей сами,в реальности,Пользователи часто регистрируются дополнительно;,если я хочу достичьRemember Me Что мне делать с функцией? Нужно ли мне самому все это кодировать? Очевидно, нет! Просто настройте его по мере необходимости, как показано на изображении ниже:

Например,Хотим реализовать регистрацию пользователей,Просто измениUser registrationПроверять Прямо сейчас Может。так Страница входа будет выглядеть как на картинке ниже.:

Настройка темы

Срок действия Keycloak немного неприятен, но Keycloak позволяет нам настроить тему ——

После развития темы,каталог темыкопироватьприезжать$KEYCLOAK_PATH/themes в каталоге. Keycloak по умолчанию готовит для нас два набора тем, как показано ниже:

Мы можем обратиться к этим двум наборам кодов тем, чтобы написать собственную тему. Настройка тема относительно проста и делается с помощью Freemarker. На Universal GitHub также есть несколько тем, просто выполните поиск. keycloak theme можно найти. Отдельные темы довольно хороши.

сертификация третьей стороной

Многие веб-сайты имеют вход QQ.、Вход на GitHub、Вход в систему Sina Weibo и т. д.сертификация третьей кнопку оплатить. Если мы также хотим получить сертификацию третьей стороной Должен Что делать?Keycloakтакже естьтакизспособность!Ниже автор использует Вход на GitHubдляпример,Реализовать возможность входа в систему с учетной записью GitHub для нашего приложения!

Выполните следующие действия в Keycloak Консоль управления:

Вы увидите интерфейс, аналогичный следующему. На этой странице Клиент. IDа такжеClient Secretтребуется,Как получить значения этих двух элементов?

Войдите в GitHub и посетите github.com/settings/profile , нажмите слева Developer settings кнопку, вы увидите интерфейс, аналогичный следующему:

НажмитеNew OAuth App кнопку, вы увидите интерфейс, аналогичный следующему:

НажмитеRegister applicationпосле кнопки,Прямо сейчас Может看приезжать ДолженотвечатьиспользоватьизClient IDа такжеClient Secret

Вернуться к Keycloak Консоль управления,Заполните, чтобы получитьизClient IDа такжеClient Secret

Далее давайте назначим роли пользователям GitHub. Нажмите кнопку «Изменить» на изображении ниже:

Вы увидите интерфейс, аналогичный следующему. Нажмите Создать справа:

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

тест

Выйтиназад,Для повторного доступалюбомутребуется URL-адрес для входа,Вы увидите интерфейс, подобный следующему:

Как видно на картинке, появилась интересная кнопка входа в GitHub.

доступ zuul/ms-content-sample/articles ,Должен Требуется адресuser-roleРольталантдоступ。Если это может быть нормальнодоступ。Описание конфигурации успешно выполнено。

термин

прежде чем продолжить,ПонятноразвязатьKeycloak Authorization Serviceпредставлятьизтермини Концепция очень важна。

Ресурсный сервер

Согласно OAuth2термин,resource serverразмещает защищенные ресурсы и может приниматьи响отвечатьзащищенныйресурс请求изсервер。

resource serverОбычно полагается на какую-то информацию, чтобы решить, разрешить лидоступзащищенныйизресурс。дляна основеRESTfulизresource server,Долженинформация обычносуществоватьsecurity tokenвнесли,Обычнодляbearer token,Отправляется с каждым запросом на сервер. Веб-приложения, которые используют сеансы для аутентификации пользователей, часто хранят эту информацию в сеансе пользователя.,и извлекайте его оттуда для каждого запроса.

В Keycloak,любойconfidential clientотвечатьиспользовать都Может充当resource server。этотclientизресурсисоответствующийизscopeкприезжатьгруппаauthorization policyиз Защищатьиуправлять。

Ресурс

Ресурс — это часть активов приложения и организации. Это может быть набор конечных точек,одинклассические веб-ресурсы,нравитьсяHTMLСтраницы и т. д.。существоватьauthorization policyтерминсередина,Ресурсы — это защищенные объекты.

Каждый ресурс имеет уникальный идентификатор,Может использоваться для представления одного ресурса или группы ресурсов. Например,您Может以управлятьодинBanking Account Resource,Долженresourceвстречадлявсе银行账семья定义группаauthorization policy。но,Вы также можете иметьодинназванныйAlice’s Banking Accountизресурс,Этот ресурс представляет собой один ресурс, принадлежащий клиенту.,это Также возможновладеть собойизгруппаauthorization policy

Scope

resourceизscope是Можетсуществоватьresourceвыполнить наизограниченныйиздоступобъем。существоватьauthorization policyтерминсередина,Область действия — это один из потенциальных глаголов, который можно логически применить к ресурсу.

Обычно это означает, что для данного ресурса,Что можно сделать. Примерами области действия являются просмотр, редактирование, удаление и т. д. но,Область действия также может быть связана с конкретной информацией, предоставляемой ресурсом. в этом случае,ты можешь иметьproject resourceиcost scope,вcost scopeиспользовать Ю определениеиспользоватьсемьядоступпроектcostизконкретная стратегияи Разрешения。

Разрешение

Рассмотрим это простое и очень распространенное разрешение:

Разрешение связывает защищенный объект с политикой, которую необходимо оценить, чтобы определить, предоставлено ли разрешение на доступ.

Язык кода:javascript
копировать
X CAN DO Y ON RESOURCE Z

where …
  • X означает одного или нескольких пользователей,роль или группа,или者это们изкомбинация。Также возможноздесьделатьиспользоватьзаявлениеиконтекст。
  • Y представляет действие, которое необходимо выполнить, например написание, просмотр и т. д.
  • Z представляет собой защищенный ресурс, например «/accounts».

Keycloak предоставляет богатую платформу,использовать Чтобы построить из простогоприезжатьочень сложный、на основеправилоиздинамичный Разрешения Жди сериюpermission strategy。этопоставлять Понятногибкость,и помогает:

  • Сократите затраты на рефакторинг кода и управление разрешениями.
  • Поддерживает более гибкую модель безопасности, которая поможет вам легко адаптироваться к изменениям требований безопасности.
  • Вносите изменения во время выполнения; приложение заботится только о защищенной области ресурса;,не заботясь о том, как они защищены.
Политика

Политика определяет условия, которые должны быть выполнены для предоставления объекта доступа. Отличие от разрешения,Вам не нужно указывать защищаемые объекты,Вместо этого укажите доступ к данному объекту (например.,resource、область действия или оба) условия, которые должны быть выполнены. политика и что можно использовать для защиты ресурсов、другойиздоступмеханизм управления(access control mechanisms:ACM)тесно связанный。проходитьpolicy,您Может实施на основесвойствоиздоступконтроль(attribute-based access control:ABAC),на основе Рольиздоступконтроль(role-based access control:RBAC),на основеконтекстиздоступконтроль(context-based access control)или Этииз任意комбинацияиз Стратегия。

Keycloak использует концепцию политик и способы их определения, предоставляя концепцию агрегированных политик, где вы можете создавать «политики». в policy» и по-прежнему контролировать поведение оценки. Keycloak Authorization ServiceвpolicyРеализация следует принципу «разделяй и властвуй»изтехнология,Вместо написания большой политики, удовлетворяющей всем условиям, которым должен соответствовать данный ресурс. То есть,Вы можете создать отдельную политику,Затем повторно используйте их с разными разрешениями.,И создавайте более сложные политики, комбинируя отдельные политики.

Поставщик политики

Policy Providerспецифиченpolicyтипизвыполнить。KeycloakОбеспечивает встроенныйизPolicy,由相отвечатьизPolicy Providerподдерживать,Вы можете создать свой собственный тип политики для удовлетворения ваших конкретных потребностей.

Keycloakпоставлять ПонятноодинSPI(Service Provider Interface:интерфейс поставщика услуг),您Может以делатьиспользоватьэто来插入自己изпланService Providerвыполнить。

Разрешительный билет

Permission Билет управляется доступом пользователя OAuth2 ( OAuth2’s User-Managed Access (UMA) Profile :UMA)Конфигурация文件规范定义из一种特殊типизtoken,этопоставлять Понятносвоего родаauthorization serverКонечноизнепрозрачная структура。Должен结构表示客семья请求изresourceи/илиscope,а также必须отвечатьиспользовать Для запроса авторизационных данных(токен соискателяrequesting party token:[RPT])изpolicy。

в УМАсередина,Permission Ticketдляподдерживатьмежду людьмиизобщийа такжемежду людьми и организациямиизобщий至关重要。дляauthorization workflowделатьиспользоватьpermission ticketМожетвыполнить Из простогоприезжатьсложныйизсерия сцен,вresource ownerиresource serverна основе对Этиresourceдоступиз细粒度Стратегия完全контроль其ресурс。

в УМА workflowсередина,authorization serverКresource serverпроблемаpermission ticket,resource serverВоляpermission ticketвернуться к попыткедоступзащищенныйресурсизclient。один разclientполучатьприезжатьticket,это就Можетпроходить Воляticketотправить обратноauthorization serverпроситьRPT(держатьauthorizationданныеизбольшинствоназадодинжетон)。

связанныйpermission ticketиз Дополнительная информация,Видеть Authorization API и UMA спецификация.

Автор: Бамбук любит панду Источник: blog.csdn.net/q64261750/article/ подробнее/108263280

Рекомендовано в прошлом

Нажмите на карточку ниже, сосредоточьтесь на Официальный аккаунт“Ти Джей Джун

Узнавайте что-то удивительное, полезное и интересное каждый день

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose