«Полные» тринадцать тысяч слов перенесут вас с нуля к серии: практичное приложение WeChat Payment Uni-App создает страницу моего заказа и получает доступ к интерфейсам оплаты, отмены, возврата и тайм-аута
«Полные» тринадцать тысяч слов перенесут вас с нуля к серии: практичное приложение WeChat Payment Uni-App создает страницу моего заказа и получает доступ к интерфейсам оплаты, отмены, возврата и тайм-аута

1. Предисловие

Добро пожаловать в этот блог! Извините, я слишком долго оставил остальные статьи на странице заказа. Я просто не мог придумать красивую страницу. Это моя собственная причудливая идея, хоть она и некрасивая, но вполне функциональная!!! Если у кого-то из друзей есть оптимизацияUIидеи могут быть реализованысуществовать Забрать со складаPRспасибо всем!

В этой статье вы узнаете о моем заказестраница Строительство и заказыстраницаизинтерфейс Создайте, например, купите курсыстраница Оформил заказ, но не продолжилплатитьтогда оксуществоватьяиз Заказстраницапродолжай еще разплатить、Также можно сделатьОтменить заказЗаказ на возвратСистема таймаута заказа проактивная Отменить заказЖду очков знаний.Приходите и учитесь~

💗 На этот раз речь пойдет о фронтенде. Если вы не разбираетесь во фронтенде, вы можете пойти на склад и скопировать его напрямую для использования. Если у вас есть вопросы, вы можете оставить сообщение в области комментариев. и я отвечу вам как можно скорее. Следуйте за мной, чтобы не потеряться. Если эта статья вам поможет, или если у вас есть какие-либо вопросы, оставьте сообщение в области комментариев, я обычно отвечу. Я вижу это. Пожалуйста, поставьте лайк и поддержите~ 💗

Автор: Ян Буйи. Перед этим я обновил 13 глав практического руководства по платежам WeChat. Если вам интересно, вы можете перейти на мою домашнюю страницу Tencent Cloud, чтобы просмотреть и узнать!

В этом проекте используется стек технологий

Серверная часть: SpringBoot3.1.x, Mysql8.0, MybatisPlus.

Интерфейс: Vue3, Vite, ElementPlus.

Мини-программы: Uniapp, UviewPlus, Vue3.

Настольное приложение: Electron славится своей медленностью. Почему настольная QQ выбрала его для обновления архитектуры? Играйте с крупными производителями (электронное яйцо)

1. Анализ спроса на страницу моего заказа

img
img

Вы можете видеть, что наша страница разделена на две области. Верхняя область была прекрасно реализована в предыдущей статье и может использоваться повторно. Нижняя часть представляет собой строку tabBar, которая используется для отображения различных статусов (мы все еще используем. uview Библиотека компонентов может сделать это так же легко, как нарезать овощи~)

Заказать модуль

img
img

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

Хорошо, мы почти проанализировали это, не правда ли, ха-ха-ха, давайте построим это напрямую!

Прежде чем сделать это, запустите автозагрузку

  1. Запустить приложение фоновой службы
  2. Запустите инструмент проникновения в интранет (у меня это скорлупа арахиса)
  3. Открыть Hbuilder Запуск инструмента Мини программапроект

2. Украсьте страницу заказа.

существовать yby6-uniApp-wechatPay-blog/pagesСоздать в каталоге order документпапкасуществоватьсоздавать order.vue страница

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

Скопируйте приведенный ниже код в order.vue страницасреди

Язык кода:html
копировать
<!-- yangbuyi Copyright (c) https://yby6.com 2023. -->
<script setup>
  import { onLoad, onReady } from '@dcloudio/uni-app'
  import { getCurrentInstance, ref } from "vue";
  import Tabbar from "../tabbar/tabbar.vue";

  // Получить текущий экземпляр
  const { proxy } = getCurrentInstance()
  // слой загрузки
  const loading = ref(false)


  // =========================Жизненный цикл==================== ====
  onLoad(() => {
    console.log('onLoad');
  });

  onReady(() => {
    console.log('onReady');
  });
</script>

<template>
  <view class="app-container">
    <view class="container">
      <!--   верхняя часть   -->
      <view>
        <u-notice-bar color="red" text="Уведомление:Мини Программа может просматривать ограниченное отображение около 50 платежных данных. Для получения полной информации перейдите на сайт. кPCконец!!!"></u-notice-bar>
        <view class="PaymentChannel_title">
          <u-tooltip text="ПК: WeChat Система оплаты: https://lzys522.cn/wx" copyText="https://lzys522.cn/wx"
            overlay></u-tooltip>
        </view>
        <view class="PaymentChannel_title">
          <u-tooltip text="Примечание: 0,4Вот и все, вы можете вернуть список заказов после успешной оплаты.»
            copyText="Примечание: 0,4Вот и все, вы можете вернуть список заказов после успешной оплаты.»
            overlay></u-tooltip>
        </view>
        <view class="PaymentChannel_title"
          style="color: red;  margin-bottom: 10px;font-size: 14px;height: auto !important;">
          <u-tooltip text="Склад с открытым исходным кодом: https://gitee.com/yangbuyi/wxDemo" copyText="https://gitee.com/yangbuyi/wxDemo"
            overlay></u-tooltip>
        </view>
      </view>
      <!--   нижняя часть   -->
      <view>

      </view>

      <!--    слой загрузки    -->
      <u-loading-page :loading="loading"/>
      <!--    меню    -->
      <tabbar selected="1"></tabbar>
    </view>
  </view>
</template>

<style lang="scss" scoped>
  ::v-deep .u-cell__body__content {
    width: 70%;
  }

  .btn {
    margin-left: 6px;
    display: inline-block;
  }

  .payView {
    /*float:right*/
    display: inline-block;
    text-align: right;
    vertical-align: baseline;
    float: right;
  }

  .time {
    @include flex;
    align-items: center;

    &__custom {
      margin-top: 4px;
      width: 22px;
      height: 22px;
      background-color: $u-primary;
      border-radius: 4px;
      /* #ifndef APP-NVUE */
      display: flex;
      /* #endif */
      justify-content: center;
      align-items: center;

      &__item {
        color: #fff;
        font-size: 12px;
        text-align: center;
      }
    }

    &__doc {
      color: $u-primary;
      padding: 0px 4px;
    }

    &__item {
      color: #606266;
      font-size: 15px;
      margin-right: 4px;
    }
  }
</style>

Исправлять 📎pages.json

существовать pagesмножествосреди Новый

Язык кода:html
копировать
    {
      "path": "pages/order/order",
      "style": {
        "navigationBarTitleText": ""
      }
    },

существовать listмножествосреди Новый

Язык кода:json
копировать
{
  "pagePath": "pages/order/order"
},

Полная конфигурация

img
img

Посмотреть страницу инициализации

img
img

Отлично, продолжим дальше: напишем табары пол кнопки вызова

Написание табов

Откройте библиотеку компонентов UviewPlus. Обратите внимание, что мы используем vue3, то есть версию 3.x.

адрес: https://uiadmin.net/uview-plus/components/tabs.html

img
img

Просто выберите то, что вам нравится, и просто скопируйте соответствующий код~

Написание табов данные

Язык кода:html
копировать
// ==========================данные==========================
  const tabList = ref([
    { name: "все" },
    { name: «Не оплачено» },
    { name: «Возврат в процессе» },
    { name: «Возврат» },
    { name: «Платеж успешен» },
    { name: "тайм-аут закрыт" },
    { name: «Отмена пользователя» }
  ]);
img
img
Язык кода:html
копировать
<u-tabs
  :list="tabList"
  lineWidth="30"
  lineColor="#ffb9b9"
  :activeStyle="{
  color: '#FF8B8B',
  fontWeight: 'bold',
  transform: 'scale(1.06)',
  }"
  :inactiveStyle="{
  color: '#303133',
  transform: 'scale(1)'
  }"
  itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;margin-bottom: 2px;"
  >
</u-tabs>

Проверьте эффект

img
img

Я чувствую себя довольно хорошо, ха-ха~

писать tabs событие клика

img
img
img
img

Студенты, пожалуйста, постучите еще раз вручную.

Тест эффекта

img
img

написать модуль списка

логика: Когда мы переключаем состояния, нам приходится запрашивать у бэкэнда данные в разных состояниях и рендерить их в Mini. программасреди

адрес: https://uiadmin.net/uview-plus/components/list.html

img
img

Вы чувствуете, что оно отличается от нашего?,Потому что я настроил его,Иначе почему это так ужасно~

img
img
Язык кода:html
копировать
код метода

// нижний триггер
const scrolltolower = (data) => {
  console.log(data);
};

// моделированиеданные
const loadmore = () => {
  for (let i = 0; i < 10; i++) {
    indexList.value.push({
      url: urls[2],
    });
  }
};

Данные моделирования загрузки жизненного цикла
  
onLoad(() => {
  loadmore();
  console.log('onLoad');
});
  страницакод <u-list
    @scrolltolower="scrolltolower"
>
  <u-list-item
      v-for="(item, index) in indexList"
      :key="index"
  >
    <u-cell>
      <template #title>
        <view>
          Я - титул
        </view>
        <template #label>
          <view>
            я субтитр
          </view>
        </template>
      </template>
    </u-cell>
  </u-list-item>
</u-list>

Проверьте эффект

img
img

Хорошо, теперь мы построили прототип.,Мы продолжим улучшать и настраивать название, плательщика, время заказа и т. д.,Как только это будет сделано, мы перейдем к написанию данных списка запросов интерфейса интерфейса внутреннего кода.

3. Создайте интерфейс моего заказа

Нужен интерфейс для разбивки моего списка заказов на страницы. Помните мой последний интерфейс написания PC Я написал его, когда размещал заказ? Нам все еще нужны писатель и Мини? Программа особенная, потому что я разрешаю отображение только первых пятидесяти фрагментов информации~ Остальное можно проверить через условия запроса~

Открытьназадконецкод Исправлять OrderInfoController.java страница

img
img

Учащиеся пишут его вручную и добавляют интерфейс orderUniAppPage.

Перезапустить тестирование проекта

img
img
img
img

👌Можно нормально и успешно позвонить

4. Мини-интерфейс стыковки программы

существовать api Создать в каталоге orderInfo.js документ

Язык кода:html
копировать
// yangbuyi Copyright (c) https://yby6.com 2023.

import request from '@/utils/request'

export default {
    // Список заказов запроса
    orderUniAppPage(data) {
        return request({
            url: '/api/orderInfo/orderUniAppPage',
            method: 'get',
            params: data
        })
    }
}

написать функцию вызова

img
img

писатьстраница

Эта часть очень простая, поэтому я вставлю код напрямую (просто и хлопотно).

Язык кода:html
копировать
<u-list-item
  v-for="(item, index) in orderList" :key="index">
     <u-cell>
       <template #title>
       <view>
       <view>
       <view style="display: inline-block">
       <u-tag :text="item.title"></u-tag>
       </view>

       <view class="payView">
       <view>
       <u-tag :text="item.orderStatus" v-if="item.orderStatus === 'еще нетплатить'"></u-tag>
       <u-tag :text="item.orderStatus" v-if="item.orderStatus === «Платеж успешен»» type="success"></u-tag>
       <u-tag :text="item.orderStatus" v-if="item.orderStatus === «Тайм-аут закрыт»» type="warning"></u-tag>
       <u-tag :text="item.orderStatus" v-if="item.orderStatus === «Пользователь отменен»» type="info"></u-tag>
       <u-tag :text="item.orderStatus" v-if="item.orderStatus === «Возврат в процессе»» type="danger"></u-tag>
       <u-tag :text="item.orderStatus" v-if="item.orderStatus === «Возврат» type="info"></u-tag>
       </view>

       </view>
       <view style="margin-top: 5px;">
       Плательщик заказа: {{ item.title.split('-')[1] ? item.title.split('-')[1] : «Пользователи ПК» }}
  </view>
    </view>
    </view>


    <template #label>
    <view style="float:left;">
    <view style="text-align: left;">
    Сумма заказа: {{ item.totalFee / 100 }} Юань
    </view>
    <view style="text-align: left;">
    <view style="display: inline-block;">
    Время заказа: {{ item.createTime }}
  </view>
    </view>
    </view>
    <view style="float:right;margin-top: 5px;">

    <view class="btn" v-if="item.orderStatus === «Платеж успешен»»>
    <u-button size="small" type="primary"
 
    text="Возвращать деньги"></u-button>
      </view>

      <view class="btn" v-if="item.orderStatus === 'еще нетплатить'">
      <u-button size="small" type="primary" :disabled="payBtnDisabled"
   
    text="платить"></u-button>
      </view>

      <view class="btn" v-if="item.orderStatus === 'еще нетплатить'">
      <u-button size="small" type="error"
   
    text="Отмена"></u-button>
      </view>
      </view>
      </template>
      </template>
      </u-cell>
      </u-list-item>

Отображение эффектов

img
img

Следующим шагом является выполнение заказа. кнопка оплаты, Кнопка отмены、Кнопка возврат, тайм-аут обратного отсчета, отмена заказа Мне потребовалось три часа, чтобы написать. Если это было полезно, пожалуйста, поставьте мне палец вверх ~ Спасибо💗.

5. Знакомство с функциональными требованиями к неоплаченной кнопке, кнопке отмены, кнопке возврата и отмене заказа по тайм-ауту обратного отсчета.

Неоплаченная кнопка

использовать Всуществовать 'Купить курсстраница'Сделал заказ, ноеще нетплатитьиз Состояние,Обязательно проверьте мой заказ в это время, и вы сможете продолжить оплату заказа.,Уменьшает бэкэнд-затраты и решает проблему повторного объема заказов.

Кнопка отмены

использовать Всуществоватьиспользовать户возвращатьсяеще нетплатить,использовать户不想要了那么会主观изинициативаизпродолжить Отменить заказ,Не хочу это покупать.

Кнопка возврата

顾名思义использовать Виспользовать户существоватьплатить После заказа(возвращатьсяеще нет发货等一些Состояние)Может быть осуществлено Подать заявку на возврат средствдействовать

Функция отмены заказа по таймауту обратного отсчета

Это та функция, которая полностью необходима нашей системе.,Если пользователь существует, размещает заказ в определенное время,После размещения заказа мы не можем хранить его вечно. Нам необходимо иметь временную выгоду, чтобы ограничить срок действия этого заказа.,Итак, электронная коммерция в целомиз Время уже установлено 15 分钟倒计时系统инициатива发起Интерфейс отмены заказа по тайм-ауту.

Вот и все Интерфейс оплаты, интерфейс отмены заказа, интерфейс возврата Мы завершили предыдущий период с нуля! Если кому-то из студентов это понадобится, они могут это проверить.

6. Пользователи Access активно отменяют заказы

Помните три метода кнопок, которые мы описали выше?

Соответствует трем функциям: оплата, отмена, возврат средств. Дальше будем улучшать!!!

img
img

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

Язык кода:go
копировать
// Пользователь активно отменяет заказ
const cancelOrder = (obj) => {
  console.log(obj);
}
// Оплата точки останова пользователя
const toPay = (obj) => {
  console.log(obj);
}
// Пользователь активно возвращает деньги
const refund = (obj) => {
  console.log(obj);
}
img
img

Нажатие любой кнопки выводит информацию о выбранном в данный момент объекте (то есть запись в фоновом режиме).

Неоплаченные заказы

создаватьодин кусочек Неоплаченные заказы

img
img

Перейдите в раздел «Мои заказы» и нажмите «Запрос статуса неоплаченного заказа».

img
img

Исправлять weChatPay.js Добавлен новый интерфейс отмены заказа. Обратите внимание, такой ли у вас внутренний интерфейс~

Язык кода:go
копировать
// Отменить заказ
export function cancel(orderNo) {
    return request({
        url: '/api/wx-pay/native/cancel/' + orderNo,
        method: 'post'
    })
}
img
img

писать Отменить заказфункция

toast("Заказ успешно отменен"); это окно подсказки, которое мы инкапсулировали в прошлый раз.

img
img
img
img

Рекомендуется, чтобы учащиеся вводили его вручную ~

Язык кода:go
копировать
// Пользователь активно отменяет заказ
const cancelOrder = (obj) => {
  console.log(obj);
  loading.value = true;
  cancel(obj.orderNo).then((res) => {
    toast("Заказ успешно отменен");
    // Обновить список
    loadmore();
  });
}

Протестируйте функцию отмены активного ордера

Вы можете видеть, что мы успешно инициировали интерфейс отмены заказа, нам было предложено, и список был обновлен.

img
img

7. Доступ к функции оплаты точки останова пользователя.

использовать Всуществовать 'Купить курсстраница'Сделал заказ, ноеще нетплатитьиз Состояние,Обязательно проверьте мой заказ в это время, и вы сможете продолжить оплату заказа.,Уменьшает бэкэнд-затраты и решает проблему повторного объема заказов.

При оформлении заказа мы уже написали как о фронтальной, так и о задней части, поэтому теперь получить к ней доступ очень просто.

Исправлять weCharPay.jsДобавить новый заказинтерфейс(Если уже сохраненосуществоватьтогда игнорируй)

Язык кода:go
копировать
// Единый заказ JSAPI
export function JSAPI(productId, openId) {
    return request({
        'url': `/api/wx-pay/js-api/${ productId }`,
        'method': 'post',
        'params': {
            "openId": openId
        }
    })
}

написать функцию заказа

создаватьодин кусочек Неоплаченные заказы

img
img

Исправлять toPayфункция Введите код оплаты напрямую в интерфейсе покупки. copy Просто иди сюда хахаха

логика: В целях безопасности боюсь обходить логин и платить напрямую, поэтому тут решение, авторизоваться или нет.

img
img

Студентам рекомендуется стучать вручную.

Язык кода:go
копировать
// Оплата точки останова пользователя
const toPay = (obj) => {
  console.log(obj);

  const storageSync = uni.getStorageSync('token');
  const nickName = uni.getStorageSync('nickName');
  payBtnDisabled.value = true;
  if (!storageSync || !nickName) {
    payBtnDisabled.value = false;
    toast("Еще не авторизован!");
    return;
  }

  JSAPI(obj.productId, storageSync + "|" + nickName)
      .then((res) => {
        const wx = res.data;
        toast("Заказ успешно создан, инициируется оплата. Пожалуйста, подождите...");
        uni.requestPayment({
          provide: 'wxpay',
          timeStamp: wx.timeStamp,
          nonceStr: wx.nonceStr,
          package: wx.package,
          signType: wx.signType,
          paySign: wx.paySign,
          success: (res) => {
            console.log(res);
            payBtnDisabled.value = false;
          },
          fail: (res) => {
            console.log(res);
            toast("Отменить платеж, вы можете продолжить нажимать кнопку платежа, чтобы инициировать его снова");
            payBtnDisabled.value = false;
          },
        });
      })
      .catch((err) => {
        console.log(err);
        payBtnDisabled.value = false;
      });
}

Оплата тестовой точки останова

img
img

Проверьте серверную часть, чтобы узнать, был ли заказ создан заново. Очевидно, мы определили, не был ли он создан заново.

img
img

8. Доступ к функции заказа на возврат средств.

Проверьте эффект

img
img

Перейдите в библиотеку компонентов uviewplus, чтобы найти наш модальный всплывающий слой.

адрес: https://uiadmin.net/uview-plus/components/modal.html

img
img

Добавить новую переменную

img
img
Язык кода:go
копировать
// Всплывающее окно возврата средств
const refundDialogVisible = ref(false);
// Форма возврата
const refundForm = ref({
  orderNo: '',
  refundNo: '',
  reason: '',
});
// Форма правила проверки возврата
const rules = ref({
  'refundNo': {
    type: 'number',
    required: true,
    max: 4,
    message: 'Пожалуйста, введите последние четыре цифры транзакции. заказа(число)',    trigger: [ 'blur', 'change' ]
  },
  'reason': {
    type: 'string',
    required: true,
    message: 'Пожалуйста, укажите причину возврата',
    trigger: [ 'blur', 'change' ]
  },
})

писатьвсплывающий слой Возврат

Идеисуществоватьвсплывающий встроенный в слой form форма

img
img
Язык кода:go
копировать
      <!--  всплывающий слой Возврат   -->
      <u-modal
          :loading="loading"
          title="Подать заявку на возврат"
          :show="refundDialogVisible"
          showCancelButton
          @confirm="refundOrder"
          @cancel="closeDialog "
      >
        <view>
          <!-- Обратите внимание: если вам нужна совместимость с WeChat Mini программе, лучше всего устанавливать правила через метод setRules -->
          <u-form
              labelPosition="left"
              :model="refundForm"
              :rules="rules"
              ref="uForm"
          >
            <u-form-item
                labelWidth="100px"
                label="Торговый Номер заказа"
                prop="refundNo"
                borderBottom
                ref="item1"
            >
              <u-input
                  v-model="refundForm.refundNo"
                  border="none"
              ></u-input>
            </u-form-item>
            <u-form-item
                labelWidth="100px"
                label="Причина возврата"
                prop="reason"
                borderBottom
                ref="item2"
            >
              <u-input
                  v-model="refundForm.reason"
                  border="none"
              ></u-input>
            </u-form-item>
          </u-form>
        </view>
      </u-modal>

писатьзакрытие Возвращать деньгивсплывающий слой

img
img
Язык кода:go
копировать
//Закрываем диалоговое окно возврата
const closeDialog = () => {
  console.log('close.................');
  refundDialogVisible.value = false;
  refundForm.value = {
    orderNo: '',
    refundNo: '',
    reason: '',
  };
  refundSubmitBtnDisabled.value = false;
};

Используется, когда пользователь не может осуществить возврат средств.

писать Конечно Кнопка возвратапросить

Backend интерфейсус существует Предыдущий ряд статей для ПК уже написан и объяснен. Посмотрим, что нужно передать.

  • @param orderНет номера заказа
  • @param returnsНет номера заказа на возврат
  • @param Reason Причина возврата средств
img
img

Исправлять weChatPay.jsНовый Возвращать деньгиинтерфейс

img
img
Язык кода:go
копировать
// Подать заявку на возврат средств
export function refunds(orderNo, reason, refundNo) {
    return request({
        url: '/api/wx-pay/native/refunds/' + orderNo + '/' + refundNo + "/" + reason,
        method: 'post'
    })
}

запись инициирует функцию запроса возврата средств

Сначала проверьте, отключена ли кнопка запроса на возврат средств. Если она отключена, запрос не будет отправлен.

Включите непустую галочку нашей библиотеки компонентов и ограничьте максимальное количество входных номеров заказа до 4.

img
img

Тестирование функции возврата

Создайте заказ и успешно оплатите

img
img
img
img

На этот раз запомните последние четыре цифры номера нашего заказа на транзакцию. я здесь 3070

Найдите заказ, за ​​который мы только что заплатили.

img
img

Заполните соответствующую информацию о заказе и отправьте информацию о возврате средств.

img
img

Для успешной подачи заявки потребуется минута или две.

img
img

Напоминание о возврате кредита

img
img

Серверный журнал обратных вызовов

img
img

Введите описание изображения
Введите описание изображения

наконец

Статья в этой главе эквивалентна завершению «Играем с WeChat с нуля» Платить》существовать Я собирался начать это руководство, я испытывал удовольствие от оплаты и чувствовал, что официальная документация была немного хлопотной. С тех пор мне пришла в голову идея написать статью о том, как использовать WeChat. с нуля. Некоторые студенты Pay могут подумать, что вызвать API просто, но если вы усердно работаете над написанием статей, чтобы помочь нуждающимся людям, то это не так просто~ конец 🎆

Осталось только функция отмены заказа по таймауту обратного отсчетапричина ВЭта функция немного длинная, поэтому новые производные будут выпускаться отдельно.из Сборка статьи Идеи、процедура испытания、Мне потребовалось почти шесть часов, чтобы написать эту трудоемкую вещь. Если это было полезно, пожалуйста, поставьте мне лайк ~ Спасибо💗.

Этот вопрос исчерпан. Увидимся в следующий раз👋~

🌊 сосредоточиться Я не потерялся. Если эта статья вам полезна или у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение в области комментариев. Я обычно отвечу, когда увижу его. Пожалуйста, поставьте лайк и поддержите~ 💗

Я участвую в специальном учебном лагере Tencent Technology Creation 2023 Третий. выпуск Конкурс эссе, получивший приз. Соберите команду, чтобы выиграть приз!

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.