在家里也能制作模具的桌面式真空成型吸塑机Mayku FormBox

MaykuFormBox是一款桌面式真空成型吸塑机,可在几秒内完成模具制作,加速产品开发周期。通过家中的吸尘器,轻松将任何物体转换为易于复制的模具,适用于设计师、艺术家及家庭工匠。它使用200瓦陶瓷加热机加热热塑材料,适用于多种材料,如ABS、聚苯乙烯和聚碳酸酯。

桌面式真空成型吸塑机Mayku FormBox是什么?让3dlabstore告诉你!Mayku FormBox可在几秒钟内完成模具,从而加快产品开发周期。将您的下一个想法变为现实从未如此简单。
桌面式真空成型吸塑机Mayku FormBox怎么工作的?
1、使用3D打印机打印、手工雕刻或找到您需要的形状并将其放在FormBox真空成型吸塑平台上。
2、FormBox在您的模具周围形成一块热塑材料 - 在几秒钟内就可以创建一个模具。
3、可以使用巧克力,树脂,石膏甚至混凝土等几十种材料填充制作出来的模具。
4、将凝固好的材料拿出来,这样产品就出来了!您甚至可以使用FormBox为您的制作自定义包装。
Mayku FormBox 定位为入门款的桌面式真空成型吸塑机,专门为设计师、个人艺术家、职业厨师和家庭工匠等一般个人群体设计,只要利用家中的吸尘器,就能轻松将任何物体转换为便于复制的模具。
Mayku FormBox 的工作原理,是利用200瓦的陶瓷加热机,将热塑性材料加热(约摄氏 160 度 ~ 340 度),可适用于 ABS、聚苯乙烯、聚碳酸酯、聚丙烯和具有食品安全的 PET、聚氯乙烯 PVC,塑胶片遇热会转为具有延展性的状态,直接贴合在另一个物品上,然后将机器接上吸尘器抽取空气,模具就制作完成了。
简单来说,就是直接将塑胶片加热后,贴合在另一个物品上,复制该物品的外型。这种方式特别适合复制手工肥皂、小型陶瓷容器、糖果、巧克力等物品,应用范围不只局限在工业制作方面,而更适合喜欢在家中烘焙、或 DIY 的朋友们。
Mayku FormBox产品和更多资讯尽在3dlabstore。

<template> <BasicModal width="900px" :height="600" v-bind="$attrs" @register="register" :title="modalType === 'add' ? '新增' : '编辑'" @ok="handleok" :confirmLoading="loading" :footer="modalType !== 'check' && undefined" > <div class="pt-3px pr-3px" v-if="modalType !== 'lizhi'"> <BasicForm @register="registerForm"> <template #userCode="{ model, slot }"> <a-input v-model:value="model.userCode" :disabled="modalType === 'edit' && !userStore.getUserRole" placeholder="请输入" ></a-input> </template> <template #laborType="{ model, field }"> <a-select ref="select" v-model:value="model[field]" show-search allow-clear> <a-select-option v-for="item in personLaborTypeListRef" :key="item.dataCode" :value="item.dataCode">{{ item.dataNameCode }}</a-select-option> </a-select> </template> </BasicForm> <Form> <a-row> <a-col :span="10" :offset="2"> <FormItem label="部门" name="type"> <a-select @change="changeOA" :disabled="modalType === 'edit' && !userStore.getUserRole" ref="select" v-model:value="OAitem" show-search> <a-select-option v-for="item in OAList" :key="item.id" :value="item.id">{{ item.name }}</a-select-option> </a-select> </FormItem> </a-col> <a-col :span="10" :offset="2"> <FormItem label="班组" name="type"> <a-select @change="changeOB" ref="select" v-model:value="OBitem" show-search allow-clear :filter-option="(input,option)=>{ return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 }"> <a-select-option v-for="item in OBList" :key="item.id" :label="item.name" :value="item.id">{{ item.name }}</a-select-option> </a-select> </FormItem> </a-col> <a-col :span="10" :offset="2"> <FormItem label="岗位类别" name="type"> <a-select ref="select" v-model:value="positionCategory" show-search allow-clear> <a-select-option v-for="item in positionCategoryListRef" :key="item.dataCode" :value="item.dataCode">{{ item.dataNameCode }}</a-select-option> </a-select> </FormItem> </a-col> <a-col :span="10" :offset="2"> <FormItem label="岗位" name="type"> <a-select ref="select" v-model:value="userRole" show-search placeholder="请选择岗位"> <a-select-option v-for="item in UserRoleList" :key="item.id" :value="item.dataCode"> {{item.dataNameCode}} </a-select-option> </a-select> </FormItem> </a-col> </a-row> <a-row> <a-col :span="10" :offset="2"> <FormItem label="职务" name="type"> <a-select ref="select" v-model:value="userDuty" show-search allow-clear> <a-select-option v-for="item in userDutyList" :key="item.value" :value="item.value">{{ item.label }}</a-select-option> </a-select> </FormItem> </a-col> </a-row> <a-row v-if="editPhoto"> <a-col :span="10" :offset="2"> <FormItem label="上传脸卡" name="type"> <a-button style="position: relative; margin-right: 10px"> 选择文件(小于200kb) <input type="file" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0" @change="handleImageUpload" accept="image/*" /> <div id="ths90"> </div> </a-button> <a-image v-if="base64Image" :src="'data:image/png;base64,' + base64Image" alt="预览图片" style="width: 200px; height: auto" /> <canvas style="display: none" id="canvasCamera" :width="videoWidth" :height="videoHeight" ></canvas> </FormItem> </a-col> <a-col :span="10" :offset="2"> <FormItem label="拍照" > <div style="display: flex; margin-bottom: 5px"> <a-button @click="openPhotoDialog">开启拍照</a-button> <a-button class="ml-2" type="primary" @click="setImage">拍照</a-button> <a-button class="ml-2" type="primary" @click="stopNavigator">完成关闭</a-button> </div> <div style="display: flex;" v-show="flag"> <video id="videoCamera" :width="videoWidth" :height="videoHeight" autoplay ></video> </div> </FormItem> </a-col> </a-row> <a-row> </a-row> </Form> </div> <div v-if="modalType === 'lizhi'"> <a-form-item style="margin-left: 20px" label="离职时间"> <a-date-picker style="width: 100%" valueFormat="YYYY-MM-DD" :format="'YYYY-MM-DD'" v-model:value="liTime" /> </a-form-item> <a-form-item style="margin-left: 20px" label="离职原因"> <Textarea style="width: 100%" :rows="4" v-model:value="remark" allow-clear placeholder="离职原因" /> </a-form-item> </div> </BasicModal> </template> <script lang="ts" setup> import { ref, nextTick, inject, onMounted } from 'vue'; import { update, quit, add } from '@/api/classManagement/personalManagement'; import { oaList, obList } from '@/api/personnel/tables'; import { BasicModal, useModalInner } from '@/components/Modal'; import { Form, FormItem, message ,Textarea } from 'ant-design-vue'; import { BasicForm, FormSchema, useForm } from '@/components/Form'; import {listChildren} from "@/api/glossary/tables"; import { useDictStore } from '@/store/modules/dict'; import { useUserStore } from '@/store/modules/user'; const editPhoto = ref(true) const dictStore = useDictStore(); // import { add } from 'xe-utils'; // import { list as listQueStionStore } from '@/api/questionBank/tables'; const pid = ref(''); const liTime = ref(''); const remark = ref(''); const modalType = ref(); const userStore: any = useUserStore(); const userDutyList = ref([ { value: 'ME', label: 'ME' }, { value: 'FQC', label: 'FQC' }, { value: 'IPQC', label: 'IPQC' }]) const schemas: FormSchema[] = [ { field: 'inTime', component: 'DatePicker', label: '入职时间', required: true, colProps: { span: 12, }, componentProps: { disabled: modalType.value === 'edit' && !userStore.getUserRole, style: { width: '100%' }, valueFormat: 'YYYY-MM-DD', }, }, { field: 'quitDate', component: 'DatePicker', label: '离职时间', colProps: { span: 12, }, componentProps: { style: { width: '100%' }, valueFormat: 'YYYY-MM-DD', }, }, { field: 'userName', component: 'Input', label: '姓名', required: true, colProps: { span: 12, }, }, { field: 'userCode', label: '工号', required: true, slot: 'userCode', colProps: { span: 12, }, }, { field: 'phone', component: 'Input', label: '电话', required: true, rules: [ // { // required: true, // message: '请输入电话号码', // }, { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号码', } ], colProps: { span: 12, }, }, { field: 'card', component: 'Input', label: '身份证号', colProps: { span: 12, }, }, { field: 'gender', component: 'Select', label: '性别', required: true, colProps: { span: 12, }, componentProps: { options: [ { value: '男', label: '男' }, { value: '女', label: '女' }, ], }, }, { field: 'userCategory', component: 'Select', label: '类别', colProps: { span: 12, }, componentProps: { options: [ { value: 10, label: '二线人员' }, { value: 0, label: '一线人员' }, ], onChange:(e)=> changeCategory(e), }, }, { field: 'focus', component: 'Select', label: '是否内训师', colProps: { span: 12, }, componentProps: { options: [ { value: 1, label: '是' }, { value: 0, label: '否' }, ], }, }, { field: 'hours', component: 'Input', label: '应学学时', colProps: { span: 12, }, }, { field: 'userState', component: 'Select', defaultValue: 0, label: '在职状态', colProps: { span: 12, }, componentProps: { disabled: true, options: [ // { value: 10, label: '新员工' }, { value: 0, label: '在职' }, { value: 20, label: '离职' }, ], }, }, { field: 'laborType', // component: 'ApiSelect', label: '劳务类型', colProps: { span: 12, }, slot: 'laborType', required: true, // componentProps: { // api: () => dictStore.getDictList('personLaborType'), // resultField: 'data', // labelField: 'dataNameCode', // valueField: 'dataCode', // }, // required: true, }, ]; const initFormData = { focus: 0, gender: '', groupId: '', hours: 0, inTime: '', orgId: '', phone: '', photo: '', userCategory: 10, userCode: '', userDuty: '', positionCategory:'', userRole: '', userName: '', }; const OBitem = ref(''); const OAitem = ref(''); const UserCode = ref(''); const userDuty = ref(''); const positionCategory = ref(''); const userRole = ref(''); const OAList: any = ref([]); const OBList: any = ref([]); const positionCategoryList: any = ref([]); const personLaborTypeList: any = ref([]); const UserRoleList: any = ref([]); onMounted(async () => { await getOaLsit(); await getDictList() const res = await listChildren({ parentCode: 'UserRole' }); UserRoleList.value = res.data }); const positionCategoryListRef:any = ref([]); const personLaborTypeListRef:any = ref([]); // 过滤岗位类别和劳务类型 const changeCategory = (val) => { // 二线 if (val === 10) { positionCategoryListRef.value = positionCategoryList.value.filter(item=>item.dataValue ==='10' || item.dataValue === '3') personLaborTypeListRef.value = personLaborTypeList.value.filter(item=>item.dataValue ==='10' || item.dataValue === '3') } else { // 一线 positionCategoryListRef.value = positionCategoryList.value.filter(item=>item.dataValue ==='0'|| item.dataValue ==='3') personLaborTypeListRef.value = personLaborTypeList.value.filter(item=>item.dataValue === '0'|| item.dataValue ==='3' ) } }; const base64Image = ref(); // 存储 Base64 图片数据 const MAX_SIZE = 200 * 1024; // 200kb 的大小限制 const isPhotoDialogVisible = ref(false); // 处理文件上传并将其转换为 Base64 const handleImageUpload = (event) => { const file = event.target.files[0]; // 获取上传的文件 if (file) { // 检查文件大小 if (file.size > MAX_SIZE) { console.log(file.size); message.error('图片大小不能超过 200kb'); // 使用Ant Design的message组件提示 return; // 直接返回,停止后续处理 } const reader = new FileReader(); // 当读取成功时,将结果赋值给 base64Image reader.onload = () => { let res:any = reader.result; // reader.result 是 Base64 数据 base64Image.value = res.split(',')[1] console.log(base64Image.value); }; // 将文件读取为 Data URL (Base64) reader.readAsDataURL(file); event.target.value = ''; } }; const getObLsit = async (id) => { const res = await obList({ orgId: id }); OBList.value = res.data; }; const getOaLsit = async () => { const res = await oaList({pageIndex:1,pageSize:999 }); OAList.value = res.data.list; }; // 获取岗位类别 const getDictList = async () => { const res = await dictStore.getDictList('personPositionCategory'); const resList = await dictStore.getDictList('personLaborType'); console.log(res,resList); positionCategoryList.value = res; personLaborTypeList.value = resList; }; const changeOA = async () => { OBitem.value = '' getObLsit(OAitem.value); }; const changeOB = async () => {}; // const getList = inject('refreshInfoList') as Function; const reload = inject('reload') as Function; const originEdit = ref(); const [registerForm, formBox] = useForm({ labelWidth: 120, schemas, showActionButtonGroup: false, actionColOptions: { span: 24, }, }); const [register, modalBox] = useModalInner((params) => { formBox.resetFields() liTime.value = '' remark.value = '' const { data, type } = params; modalType.value = type; console.log("modalType.value",); pid.value = data.id; // 方式1; if (modalType.value === 'edit') { editPhoto.value = false originEdit.value = {}; originEdit.value = data; OAitem.value = data.orgId; UserCode.value = data.userCode; userRole.value = data.userRole; userDuty.value = data.userDuty; positionCategory.value = data.positionCategory; getObLsit(OAitem.value); OBitem.value = data.groupId; // base64Image.value = data.photo; setTimeout(() => { formBox.setFieldsValue(initFormData); formBox.setFieldsValue(data); }, 0); } else { formBox.resetFields(); formBox.setFieldsValue(initFormData); editPhoto.value = true OAitem.value = ''; UserCode.value = ''; userDuty.value = ''; positionCategory.value = ''; userRole.value = ''; OBitem.value = ''; base64Image.value = ''; } }); const loading = ref(false); const handleok = async () => { if (loading.value) return; try { loading.value = true; if (modalType.value === 'add') { // 新增时额外校验部门和班组 if (!OAitem.value) { message.error('请选择部门'); return; } if (!OBitem.value) { message.error('请选择班组'); return; } } if (modalType.value === 'edit') { const val = await formBox.validateFields(); originEdit.value.orgId = OAitem.value; originEdit.value.userRole = UserCode.value; originEdit.value.userDuty = userDuty.value || ""; originEdit.value.positionCategory = positionCategory.value || ""; originEdit.value.userRole = userRole.value || ""; originEdit.value.groupId = OBitem.value; val.photo = base64Image.value; const res = await update({ ...(originEdit.value || {}), ...val, }); if (res.code == 0) { message.success(res.message || '操作成功'); reload(); formBox.resetFields(); modalBox.closeModal(); } else { message.error(res.message || '操作失败'); } } if (modalType.value === 'add') { const val = await formBox.validateFields(); val.orgId = OAitem.value; val.userRole = userRole.value; val.groupId = OBitem.value; val.userDuty = userDuty.value; val.positionCategory = positionCategory.value; val.photo = base64Image.value; val.syncState = 0; const res = await add({ ...(originEdit.value || {}), ...val, }); if (res.code === 0) { reload(); formBox.resetFields(); modalBox.closeModal(); message.success(res?.message || '操作成功'); } else { message.error(res?.message || '操作失败'); } } if (modalType.value === 'lizhi') { const res = await quit({ idList: [pid.value], quitDate: liTime.value, quitReason: remark.value, }); if (res.code === 0) { reload(); formBox.resetFields(); modalBox.closeModal(); message.success(res?.message || '登记成功'); } else { message.error(res?.message || '登记失败'); } } } catch (error) { message.error('请填写必填项'); } finally { loading.value = false; } }; const formData:any = ref(null) const videoWidth:any = ref(195) const videoHeight:any = ref(260) const imgSrc:any = ref("") const thisCancas:any = ref(null) const thisContext:any = ref(null) const thisVideo:any = ref(null) const flag = ref(false) // 打开弹框 const openPhotoDialog = () => { nextTick(() => { getCompetence() }) } // 调用权限(打开摄像头功能) const getCompetence = () => { thisCancas.value = document.getElementById("canvasCamera") console.log("thisCancas", thisCancas.value) thisContext.value = thisCancas.value?.getContext("2d") thisVideo.value = document.getElementById("videoCamera") as HTMLVideoElement // 旧版本浏览器可能根本不支持mediaDevices,我们首先设置一个空对象 if (navigator.mediaDevices === undefined) { navigator.mediaDevices = {} } // 一些浏览器实现了部分mediaDevices,我们不能只分配一个对象 // 使用getUserMedia,因为它会覆盖现有的属性。 // 这里,如果缺少getUserMedia属性,就添加它。 if (navigator.mediaDevices.getUserMedia === undefined) { navigator.mediaDevices.getUserMedia = (constraints) => { // 首先获取现存的getUserMedia(如果存在) const getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.getUserMedia // 有些浏览器不支持,会返回错误信息 // 保持接口一致 if (!getUserMedia) { return Promise.reject( new Error("getUserMedia is not implemented in this browser") ) } // 否则,使用Promise将调用包装到旧的navigator.getUserMedia return new Promise((resolve, reject) => { getUserMedia.call(navigator, constraints, resolve, reject) }) } } const constraints = { audio: false, video: { width: videoWidth.value, height: videoHeight.value, transform: "scaleX(-1)", }, } navigator.mediaDevices.getUserMedia(constraints) .then((stream) => { console.log("stream",stream) // 旧的浏览器可能没有srcObject if ("srcObject" in thisVideo.value) { thisVideo.value.srcObject = stream } else { // 避免在新的浏览器中使用它,因为它正在被弃用。 thisVideo.value.src = window.URL.createObjectURL(stream) } thisVideo.value.onloadedmetadata = () => { thisVideo.value.play() } flag.value = true }) .catch((err) => { flag.value = false message.error("打开失败,未检测到摄像头信息!") console.log(err) }) } // 绘制图片(拍照功能) const setImage = () => { console.log("thisCancas", thisCancas.value) if (thisCancas.value === null) { return } else { console.log("thisContext", thisContext.value) if (thisContext.value === null) { return } else { thisContext.value.drawImage( thisVideo.value, 0, 0, videoWidth.value, videoHeight.value ) // 获取图片base64链接 const image = thisCancas.value.toDataURL("image/png") imgSrc.value = image base64Image.value = imgSrc.value.split(',')[1] // 更新base64Image console.log("imgSrc", imgSrc.value) // emit("refreshDataList", imgSrc.value) // submit() } } } // base64转文件 const dataURLtoFile = (dataurl, filename) => { const arr = dataurl.split(",") const mime = arr[0].match(/:(.*?);/)[1] const bstr = atob(arr[1]) const n = bstr.length const u8arr = new Uint8Array(n) for (let i = 0; i < n; i++) { u8arr[i] = bstr.charCodeAt(i) } return new File([u8arr], filename, { type: mime }) } // 关闭摄像头 const stopNavigator = () => { thisVideo.value.srcObject?.getTracks()[0].stop() // 隐藏摄像头 flag.value = false } // qrBase64是后台传回来的base64数据 const handleDownloadQrIMg = () => { const qrBase64 = formData.value?.photo // 这里是获取到的图片base64编码,这里只是个例子哈,要自行编码图片替换这里才能测试看到效果 const imgUrl = `data:image/png;base64,${qrBase64}` // 如果浏览器支持msSaveOrOpenBlob方法(也就是使用IE浏览器的时候),那么调用该方法去下载图片 if (window.navigator.msSaveOrOpenBlob) { const bstr = atob(imgUrl.split(",")[1]) const n = bstr.length const u8arr = new Uint8Array(n) for (let i = 0; i < n; i++) { u8arr[i] = bstr.charCodeAt(i) } const blob = new Blob([u8arr]) window.navigator.msSaveOrOpenBlob(blob, "chart-download" + "." + "png") } else { // 这里就按照chrome等新版浏览器来处理 const a = document.createElement("a") a.href = imgUrl a.setAttribute( "download", `${dialogData.value.code}` + `+` + `${dialogData.value.name}` ) a.click() } } const closePhotoDialog = async () => { isPhotoDialogVisible.value = false }; </script> 这段代码的含义
09-04
标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值