当前位置: 首页 > news >正文

uniapp-内部项目使用文档

uniapp-内部项目使用文档

目录

  • uniapp-内部项目使用文档
    • 阶段1
        • 自行实现内容:
        • 阶段1问题记录:
    • 阶段2
        • 自行实现内容:
    • 阶段3 APP项目介绍及规范
    • 阶段4 公共组件方法
      • UseList 列表页面Hooks
      • ListItem 列表项
      • uni-load-more 列表加载更多组件
      • CardTitle 列表卡片标题组件
      • Tags 标签
      • Empty 缺省页
      • 权限
        • hasPermission 按钮权限
      • FilterPopup 筛选组件
      • PublicPicker 数据字典&省市县镇选择
      • Tips 提示
      • DateRange 日期时间范围组件
      • useSelectSearch 可模糊查询的选择 Hooks
      • SelectSearchItem 可模糊查询的选择器
      • DataForm 数据表单 ,使用json生成表单

基础教程文档

【内部项目使用文档】
【内部项目使用文档】
【内部项目使用文档】

阶段1

一、介绍【uniapp介绍、项目创建、运行发布、代码写法变化、项目结构】

二、页面&组件&配置&api

三、教程【生命周期、路由、条件编译】

自行实现内容:
  • 创建、运行项目
  • 创建新页面、跳转新页面、传参&接收参数
阶段1问题记录:
  1. 升级hbx后项目运行报错
    回退hbx版本:帮助 -> 切换到上一个版本

  2. 项目突然有异常启动的问题,非页面问题,可以考虑是hbx问题,尝试检查更新版本回退版本

阶段2

一、基本的list页面

  • 使用uni-card组件
  • 配置下拉刷新、配置触底加载

二、基本表单提交

  • 基本表单提交页面
  • 基本校验 链接
  • 自定义校验 链接
  • 正则校验 pattern

三、常用生命周期

一般接口请求直接在setup生命周期请求即可。

import {onLoad, onShow} from '@dcloudio/uni-app'
onLoad(() => {console.log('onLoad')
})
onShow(() => {console.log('onShow')
})
console.log('setup');/* 打印结果
setup
onLoad
onShow
*/
自行实现内容:
  • 表格
  • 表单

阶段3 APP项目介绍及规范

  1. 样式:公共变量写在uni.scss内,不用在页面内引入即可使用。自带的公共变量在'@/uni_modules/uni-scss/variables.scss';查找,可直接使用。

  2. 样式:公共样式写在@/common/styles/public.scss内,已在app.vue内引入,不用在页面内引入即可使用。

  3. 辅助样式:链接

  4. 样式:页面和组件内写样式,style标签必须加scoped

    <style lang="scss" scoped>
    </style>
    
  5. 页面底部写入安全区域适配代码

    考虑到开屏广告适配情况,不配置全局的安全区域适配,需要在各个页面内单独适配

    <view class="padding-bottom-safe"></view>
    
  6. 组件:公共组件写在@/components/组件名/组件名.vue;页面级组件写在 页面/components/组件

  7. api:接口请求statusCode!==200时,封装方法内有公共错误提示,页面内不用管;其他情况错误和正确提示需要在页面内自行处理

  8. api:以接口地址第一个单词作为api文件名,将api单个导出,单个引入。注意get和post传参写法不一样。

​ 如/bill/billLading/list,则创建 @/apis/bill.js

import {http} from '@/common/service/service.js'// 需求确认列表
export const listCheckDataApi = (params) => http.get('/demand/listCheckData', {params});// 更新需求
export const updateStatusApi = (params) => http.post('/demand/updateStatus', params);

​ 页面内使用

import Tips from "@/common/utils/tip";
import {listCheckDataApi, updateStatusApi} from "@/api/demand";
const initData = async () => {const [err, res] = await listCheckDataApi({// 参数xxx:xxx})if (err) {// 错误处理Tips.toast(err.data?.msg || '操作失败')return}// 成功处理
}
  1. 安装eslint-vue插件

    https://ext.dcloud.net.cn/plugin?id=2005

    eslint-vue简介

  2. rpx

    页面内尽量使用rpx

    rpx介绍-自行查看

阶段4 公共组件方法

为什么要做组件封装?:

  • 代码复用: 通过将一些常用的功能或界面元素封装成组件,可以在不同的地方多次使用,避免重复编写相同的代码。
  • 易于维护: 将一些功能或界面元素封装成组件后,可以更容易地对其进行修改、更新和扩展,而不会影响到其他部分的代码。
  • 提高开发效率: 通过使用现有的组件,开发人员可以更快地构建新的界面,而不必从头开始编写所有的代码。
  • 抽象复杂性: 封装组件可以帮助将复杂的功能或界面元素抽象成简单的接口,使得整个系统更易于理解和管理。

封装组件的条件:

  • 可定制性: 组件应该具有足够的参数和选项,以便在不同的上下文中进行定制和配置。
  • 灵活性: 组件应该能够适应不同的数据和状态,而不是过于依赖特定的数据结构或业务逻辑。
  • 可组合性: 组件应该能够与其他组件进行组合和嵌套,以构建更复杂的界面。
  • 可测试性: 组件应该具有清晰的API和明确定义的行为,以便进行单元测试和集成测试。
  • 文档和示例: 组件应该有清晰的文档和示例,以便其他开发者能够快速理解和正确使用组件。
  • 样式隔离: 组件应该具有良好的样式隔离,以防止组件的样式影响到其他部分的页面。

UseList 列表页面Hooks

参数:

  • initData初始化方法,Function,必传,接口请求放在该方法内
  • pageSize?每页条数,Number,默认 5
  • pullDownRefresh?是否下拉刷新,Boolean,默认true
  • reachBottom?是否触底加载,Boolean,默认true

返回值:

  • total 总数,initData方法内需要对其赋值

  • pageNo 当前页码

  • pageSize每页条数

  • loadMoreStatus 加载更多状态

  • changeIsApiPostDoing(Boolean)改变是否请求中状态

基本的列表数据请求:

import Tips from "@/common/utils/tip";
import {useList} from "@/hooks/useList";
import {listData1Api} from "@/apis/mock-data"; // 导入要调用的apiconst {total,pageNo,pageSize,loadMoreStatus,changeIsApiPostDoing,listData
} = useList({initData
})async function initData(reset = false) {if (reset) {pageNo.value = 1;}// listDataApi:导入的APIconst [err, res] = await listDataApi({pageSize: pageSize.value,pageNo: pageNo.value})// 在此调用该方法changeIsApiPostDoing(false)if (err) {Tips.toast(err.message || '操作失败,请稍后再试')listData.value = [];return}listData.value = pageNo.value === 1 ? res.data : listData.value.concat(res.data)total.value = res.total
}

ListItem 列表项

  • showPoint? 前面显示 红点,默认false
  • single? 一行一个,没有 max-width限制,默认false
<uni-card v-for="(item) in listData" :key="item.id"><ListItem><text>买家:</text><template #right><text>xxxx有限责任公司</text></template></ListItem><ListItem><text>账户标识:</text><text class="list-value">4599</text><template #right><text class="list-label">销售片区:</text><text>西咸片区</text></template></ListItem><ListItem><text>产品信息</text><template #right><view>螺纹钢  HRB400E  Φ18*9m  检尺  293.4</view><view>螺纹钢  HRB400E  Φ18*9m  检尺  293.4</view></template></ListItem><ListItem><text>总重量:</text><text class="color-red">2566.01</text><template #right><text class="list-label">总金额:</text><text class="color-red">2566.01</text></template></ListItem>
</uni-card>

特殊情况使用下面代码,自行编写

    <view class="list-item"><view class="list-item-left"><text class="list-label">卖家:</text></view><view class="list-item-right"><text class="list-value"xxxx有限公司</text></view></view><view class="list-item"><view class="list-item-left"><text class="list-label">账户标识:</text><text class="list-value">4599</text></view><view class="list-item-right"><text class="list-label">销售片区:</text><text class="list-value">西咸片区</text></view></view>

uni-load-more 列表加载更多组件

https://uniapp.dcloud.net.cn/component/uniui/uni-load-more.html

  • loadMoreStatus more/loading/noMore,直接取 useList内返回的loadMoreStatus
<template><!--在页面底部加入--><uni-load-more :status="loadMoreStatus" v-if="listData.length" />
</template>

CardTitle 列表卡片标题组件

  • leftText? 默认left是蓝色字体
  • rightText? right是红色字体
  • showArrow?是否显示右箭头,默认true
<!-- 方式1  -->
<CardTitle leftText="SG-SJHT1722587699823310" rightText="执行中" :showArrow="false" />
<!-- 方式2 : 适用于自定义的样式 -->
<CardTitle><template #left>SG-SJHT1722587699823310</template><template #right>执行中</template>
</CardTitle>

Tags 标签

  • type? 为不一样的颜色, 【1~5】
  • text? 文字
<Tags text="标签" type="1"/>
<Tags text="标签" type="2"/>
<Tags text="标签" type="3"/>
<Tags text="标签" type="4"/>
<Tags text="标签" type="5"/>

Empty 缺省页

  • isShow 是否显示
  • text? 提示文字
  • img? 提示图片
<Empty :is-show="!listData.length" />

权限

hasPermission 按钮权限
<template><!--传字符串--><button size="mini" class="button" v-if="hasPermission('权限code1')">编辑</button><!--传数组--><button size="mini" class="button" v-if="hasPermission(['权限code1', '权限code2'])">编辑</button>
</template>
<script setup>import {usePermission} from "@/hooks/usePermission";const {hasPermission} = usePermission()
</script>

FilterPopup 筛选组件

页面筛选组件使用方法

methods

  • @reset 重置按钮
  • @submit 确认按钮
<template><FilterPopup ref="filterPopup" @reset="handleReset" @submit="handleSubmit"><uni-forms ref="baseForm" :modelValue="baseFormData" label-position="top"><uni-forms-item label="买家" name="corpNameBuyer"><uni-easyinput v-model="baseFormData.corpNameBuyer" :styles="{}" :clearable="false" class="filter-input":inputBorder="false" placeholder="请输入买家"/></uni-forms-item><uni-forms-item label="卖家" name="corpName"><uni-easyinput v-model="baseFormData.corpName" :styles="{}" :clearable="false" class="filter-input":inputBorder="false" placeholder="请输入卖家"/></uni-forms-item><uni-forms-item label="申请时间" name="applyStartDate"><uni-datetime-picker type="datetime" :border="false" class="filter-input" v-model="baseFormData.applyStartDate"/><uni-datetime-picker type="datetime" :border="false" class="filter-input uni-mt-4"v-model="baseFormData.applyEndDate"/></uni-forms-item></uni-forms></FilterPopup>
</template>
<script setup>import {onNavigationBarButtonTap} from '@dcloudio/uni-app'import {ref} from "vue";// 初始值const baseFormDataDefault = JSON.stringify({corpNameBuyer: '',corpName: '',applyStartDate: '',applyEndDate: ''})// 筛选弹窗数据const baseFormData = ref(JSON.parse(baseFormDataDefault))const filterPopup = ref()// 右上角筛选按钮点击方法onNavigationBarButtonTap(() => {filterPopup.value.open()})// 重置const handleReset = () => {baseFormData.value = JSON.parse(baseFormDataDefault)console.log('handleReset', baseFormData.value);}// 确认const handleSubmit = () => {console.log('handleSubmit', baseFormData.value);}
</script>

需要在pages.json中配置筛选按钮 app-plus -> titleNView -> buttons

{"path": "pages/demo/list/list","style": {"navigationBarTitleText": "列表","enablePullDownRefresh": true,"app-plus": {"titleNView": {"buttons": [{"text": "筛选 \uE64D","fontSize": "12px","fontSrc": "/static/iconfont.ttf","width": "55px"}]}}}
},

PublicPicker 数据字典&省市县镇选择

该组件支持 单选、多选、picker 多种展示方式;
支持多种传数据源的方式。

  • modelValue: String | Array v-model
  • dictCode?: String, // 数据字典code,
    • 如果dictCode: areas,则获取本地省市县镇数据,
    • level? Number 省市县镇组件层级,默认4
  • localData?: Array, // 数据 ,优先使用dictCode
  • api?: Function // 通过api请求获取数据
    • fieldNames // 处理字段,默认值 {label: 'label', value: 'value', result:'result'}
  • showType?: 'picker' | 'checkbox' | undefined, //显示类型 picker/checkbox,默认picker
    • multiple?: Boolean, // 多选-checkbox时有效,默认false
  • popupTitle?: String, 默认 “请选择”

说明: dictCode、api 和localData 必须传一个,优先级dictCode > api > localData

methods

  • @change 返回选中的数据 ,为了统一不管单选多选都返回array
    • 省市县镇时返回 {areaCodeList, areaNameList}
    • 其他类型,不论单选还是多选都返回数组 [{text, value, 其他参数... }]
<!--picker选择-传字典code-->
<PublicPicker v-model="baseFormData.key4" dict-code="accept_type" />
<!--单选-->
<PublicPicker v-model="baseFormData.key5" dict-code="car_brand" show-type="checkbox" />
<!--多选-->
<PublicPicker v-model="baseFormData.key6" dict-code="car_kind" show-type="checkbox" multiple />
<!--picker选择-传localData,也支持单选、多选-->
<PublicPicker v-model="baseFormData.key3" :localData="sexs" />
<!--localData示例
[{text: '男', value: '1'}, {text: '女', value: '2'}]
-->
<!--监听改变  @change -->
<PublicPicker v-model="baseFormData.key4" dict-code="accept_type"  @change="handleSelectChange" /><!--省市县镇组件-->
<PublicPicker v-model="baseFormData.key9" dictCode="areas" />

Tips 提示

注意:显示图标是有字数限制,最多8个字,长了不显示

成功时,字数少的使用 success

错误是使用 errortoast

import Tips from "@/common/utils/tip";Tips.success(title, duration = 1000)  // 对钩图标
Tips.error(title, onHide)  // 叹号图标
Tips.toast(title, onHide = undefined, icon = "none") // 无图标
Tips.confirm(content, ops = {}, payload = {}) // 确定取消提示
Tips.loading(title = "加载中") // '加载中'
Tips.hideLoading() // 隐藏加载中

DateRange 日期时间范围组件

  • type date | datetime | undefined 默认 datetime
  • border Boolean, 默认false
  • modelValue
<!--日期范围-->
<DateRange v-model="baseFormData.key7" type="date" /><!--日期时间范围-->
<DateRange v-model="baseFormData.key8" type="datetime" />

校验时间范围方法

{key6: {rules: [{ required: true, errorMessage: '请选择时间' },{ validateFunction: function (rule, value, data, callback) {const [date1, date2] = value;console.log(date1, date2);if (!date1 && !date2) {callback('请选择时间')} else if (!date1) {callback('请选择开始时间')} else if (!date2) {callback('请选择结束时间')}return true;}}]}
}

useSelectSearch 可模糊查询的选择 Hooks

模糊查询选择,打开新页面输入内容进行查询选择

  • apiUrl: `{type: String, required: true,}, 接口请求地址,非方法
  • placeholder: { type: String, default: ‘请选择’}, 提示信息
  • title: { type: String, default: ‘请选择’,}, 搜索页标题
  • keyword: { type: String, default: ‘keyword’}, 搜索传接口的字段key
  • valueField: { type: String, default: ‘value’}, 接口返回的value字段
  • labelField: { type: String, default: ‘label’}, 接口返回的label字段
  • isInit: { type: Boolean, default: true}, 页面是否初始化时直接调用接口
  • params: { type: Object, default: () => ({})}, 额外参数
  • modelValue: String,clearIcon: { type: Boolean, default: true}, v-model
  • readonly: { type: Boolean, default: false} 禁用
  • @change 改变方法
<template><button  @click="handleClick">打开搜索页</button>
</template>
<script setup>
import ss from "@/hooks/useSelectSearch";
const handleClick = () => {ss.to({apiUrl: querySysCorpByCorpNameUrl,keyword: 'corpName',title: '请选择买家',valueField: 'corpCode',labelField: 'corpName',init: false,params: {corpType: 'xs_buyer'}})ss.on((check) => {console.log('check', check);})
}
</script>

SelectSearchItem 可模糊查询的选择器

参数同上 useSelectSearch

组件内使用的也是useSelectSearch方法,组件内封装,供表单内使用。

<SelectSearchItem:apiUrl="querySysCorpByCorpNameUrl"keyword="corpName":params="{corpType: 'xs_buyer'}":isInit="false":readonly="false"title="请选择买家"placeholder="请选择买家"valueField="corpCode"labelField="corpName"v-model="baseFormData.key11"@change="handleSelectChange"/>

DataForm 数据表单 ,使用json生成表单

通过json数据生成表单
注意:组件内数据改变,会直接修改传入的modelValue的源数据。

<!--基本使用示例-->
<DataFormref="dataFormRef":formProps="{}":modelValue="demoForm":schemas="schemas"@change="handleFormChange"@submit="handleSubmit"><template #slot1><input type="text" v-model="demoForm.key10"></template>
</DataForm>
  • formProps: 传到表单uni-forms的属性

  • schemas: { type: Array, required: true,}, // 表单schema
    component支持的组件类型有:

    • uniEasyInput 输入框
    • PublicPicker 公共选择
    • DateRange 时间范围选择
    • UniDatetimePicker 日期 / 日期时间选择
    • SelectSearchItem 模糊搜索选择
    • slot 插槽
     [{label: '用户名',field: 'key1',component: 'uniEasyInput',required: true,componentProps: {//传递给组件的参数,参考各组件文档inputBorder: false,placeholder: '请输入用户名'},rules: [{ required: true, errorMessage: '请输入用户名' }]},{label: '省市县镇',field: 'key7',component: 'PublicPicker',componentProps: {dictCode: 'areas',level: 3}},{label: '日期时间范围',field: 'key6',component: 'DateRange',componentProps: {type: 'datetime'},rules: [{ required: true, errorMessage: '请选择时间' },{ validateFunction: function (rule, value, data, callback) {const [date1, date2] = value;console.log(date1, date2);if (!date1 && !date2) {callback('请选择时间')} else if (!date1) {callback('请选择开始时间')} else if (!date2) {callback('请选择结束时间')}return true;}}]},]
  • modelValue: { type: Object, required: true,}, 必填

  • showSubmitButton: { type: Boolean, default: true,} // 是否显示提交按钮

    • @submit 显示提交按钮时,点提交会触发submit方法
  • @change 表单有数据改变的方法,返回参数:({schema参数, value}, formValue)

  • setFieldsValue() 设置表单数据方法,setFieldsValue(a: 1)

    const handleFormChange = (e, formValue) => {// 设置值dataFormRef.value.setFieldsValue({a: '123123123123'})console.log('数据', formValue);
    }
    
  • updateSchema() 更新表单schema,传入数组,如下示例:

    const updateLocalData = () => {const data = [{text: '男男', value: '1'}, {text: '女女', value: '2'}]dataFormRef.value.updateSchema([{field: 'key2', componentProps: {localData: data}}])
    }

相关文章:

uniapp-内部项目使用文档

uniapp-内部项目使用文档 目录 uniapp-内部项目使用文档阶段1自行实现内容&#xff1a;阶段1问题记录&#xff1a; 阶段2自行实现内容&#xff1a; 阶段3 APP项目介绍及规范阶段4 公共组件方法UseList 列表页面HooksListItem 列表项uni-load-more 列表加载更多组件CardTitle 列…...

linux搭建NFS服务和autofs自动挂载NFS

文章目录 1、nfs服务1、nfs原理2、RPC和NFS通讯原理3、RPC和NFS流程4、NFS工作流程5、服务端搭建6、客户端搭建7、autofs自动挂载 1、nfs服务 1、nfs原理 是一个NAS的存储&#xff0c;通过网络来进行文件的共享&#xff0c;表现出来的形式就是一个文件夹 可以支持多个linux挂…...

springboot415社区网格化管理平台的构建-(论文+源码)_kaic

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本社区网格化管理平台就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据…...

ubuntu下open-webui + ollama本地大模型部署

文章目录 nvidia gpu驱动安装 安装卸载 ollama 部署 添加docker秘钥docker配置添加国内镜像源ollama安装 从源拉取ollama镜像。启动一个ollama容器 通过ollama下载模型到本地检验本地模型 open-webui 部署 安装容器和镜像下载webui使用查看模型运行时内存、cpu、gpu占用 业余…...

自动化运维-配置Mysql、emqx、redis、nginx等通用性Linux日志分割工具 - logrotate

前言&#xff1a;logrotate 是一个在 Linux 系统中用于管理和轮转日志文件的工具。它的主要目的是帮助系统管理员自动执行日志文件的轮转、压缩、删除和邮件通知等任务&#xff0c;以防止日志文件占用过多的磁盘空间&#xff0c;同时保持日志文件的可管理性。 参考命令&#x…...

71、docker镜像制作上传/下载到阿里云

基本思想:简单学习一下如何制作镜像和上传下载到私有阿里云,然后构建一个gpu的训练/推理环境,以备后续使用 一、配置环境 ubuntu@ubuntu:~$ sudo apt-get install docker.ioubuntu@ubuntu:~$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS P…...

力扣--LCR 178.训练计划VI

题目 教学过程中&#xff0c;教练示范一次&#xff0c;学员跟做三次。该过程被混乱剪辑后&#xff0c;记录于数组 actions&#xff0c;其中 actions[i] 表示做出该动作的人员编号。请返回教练的编号。 示例 1&#xff1a; 输入&#xff1a;actions [5, 7, 5, 5] 输出&#…...

独孤思维:又有一个副业项目降价了

不要过早量出底牌&#xff0c;不然会变得低贱且廉价。 昨天在一个群里&#xff0c;看到有个博主&#xff0c;没有成交订单。 她把和用户的聊天对话发出来&#xff0c;我们大致看了下。 发现人家是有意向付费的。 但是这个博主过于心急&#xff0c;说今天加入可以优惠&#…...

【笔记】分布式任务调度平台XXL-JOB

这篇笔记主要记录以下内容&#xff1a; &#xff08;1&#xff09;第一次启动xxl-job的过程 &#xff08;2&#xff09;模块、文件、数据库&#xff08;表和字段&#xff09;的作用 &#xff08;3&#xff09;极少的源码解读&#xff08;XxlJobConfig&#xff09; 有点像实…...

Java基础总结上(Ref:JavaGuide)

基础概念与常识 Java语言有哪些特点&#xff0c;优点&#xff1f; 简单易学&#xff0c;是一门面向对象的语言&#xff0c;有封装继承多态三大特性&#xff0c;而且有多重防护机制保证安全性&#xff0c;例如权限修饰符&#xff0c;限制程序直接访问操作系统资源。通过JIT编译…...

嘉誉府5区共有产权看房记

特地工作日来看下嘉誉府5区的网红共有产权的房子&#xff0c;主要是冲着均价2.1万/平才来看。说实话从塘尾地铁步行到嘉誉府5区还挺需要时间的哈。可能以后需要电驴代步到地铁&#xff1f;确实楼盘现在是现楼&#xff0c;今年买明年住。鸿荣源确实很666哈。 今天来不需要排队&a…...

PostgreSQL函数中使用now()或current_timestamp的异同

在PostgreSQL函数中使用now()或current_timestamp可以获取当前的日期和时间。 now()函数返回当前的日期和时间&#xff0c;包括时区信息。它可以用于记录操作的时间戳或在查询中进行时间比较。 current_timestamp函数也返回当前的日期和时间&#xff0c;但不包括时区信息。它…...

跟李笑来学美式俚语(Most Common American Idioms): Part 56

Most Common American Idioms: Part 56 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记&#xff0c;自用。 Github仓库链接&#xff1a;https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来&#xff08;或者clone到本地…...

类和对象一

目录 1.类的引入 2.类的定义 3.访问限定符 4.类的作用域 5.类对象模型 6.类的大小 1.类的引入 C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体不仅可以定义变量&#xff0c;也可以定义函数。 C兼容C语言&#xff0c;结构用法可以继续使用 同时sruct也升…...

两个数的和最小

两个数的和最小 C 代码C 代码Java 代码Python 代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给你n个整数&#xff0c;你可以从中任意取两个数a和b&#xff0c;问a加上b的和的绝对值最小可能是多少&#xff1f; 输入 有多组测试数据…...

Mac mini m4本地跑大模型(ollama + llama + ComfyUI + Stable Diffusion | flux)

安装chat大模型&#xff08;不推荐&#xff0c;本地运行的大模型只能聊废话&#xff0c;不如网页版使用openAI等高效&#xff09; 首先下载ollama的安装包 https://ollama.com/ 点击启动访问&#xff1a;http://localhost:11434 Ollama is running 代表已经运行起来了&#x…...

IoTDB AINode 报错,call inference 301: Error ocurred while executing inference

问题及现象 使用时序数据库 IoTDB 的 AINode 的 call inference 语句后报错&#xff1a; Msg: org.apache.iotdb.jdbc.IoTDBSOLException&#xff1a;301: Error ocurred while executing inference:[tuple object has no attribute inference]解决方法 可以替换 venv 里面的…...

Linux网络 UDP socket

背景知识 我们知道&#xff0c; IP 地址用来标识互联网中唯一的一台主机&#xff0c; port 用来标识该主机上唯一的一个网络进程&#xff0c;IPPort 就能表示互联网中唯一的一个进程。所以通信的时候&#xff0c;本质是两个互联网进程代表人来进行通信&#xff0c;{srcIp&…...

Day2——需求分析与设计

教师端签到应用软件的需求分析&#xff1b; 产品经理如何写好产品需求文档&#xff08;附模板&#xff09; 需求分析是软件开发过程中的关键步骤&#xff0c;它确保了开发的软件能够满足用户的需求。以下是进行需求分析的具体步骤&#xff1a; 1. 确定分析目标 明确教师端签到…...

aosp15上winscope离线html如何使用?

背景&#xff1a; aosp15上的如何使用Winscope前面已经有分享过相关的blog&#xff0c;这块其实和aosp14没啥大的差别&#xff0c;具体可以看如下2个文章&#xff1a; 手把手教你aosp14编译Winscope 安卓aosp15手机上如何离线获取winscope文件 文章中也说明在aosp15如果直接使…...

AttributeError: module numpy has no attribute int .报错解决

AttributeError: module numpy has no attribute int .报错解决方案_attributeerror: module numpy has no attribute i-CSDN博客 以上为参考教程&#xff0c;试了卸载再安装&#xff0c;不行&#xff0c;报错&#xff1a; Found existing installation: numpy 1.24.3 error: …...

python爬虫常用数据保存模板(Excel、CSV、mysql)——scrapy中常用数据提取方法(CSS、XPATH、正则)(23)

文章目录 1、常用数据保存模板2.1 保存为Excel格式2.2 保存为CSV格式2.3 保存至mysql数据库2、scrapy中常用数据提取方法2.1 XPath选择器2.2 CSS选择器2.3 正则表达式1、常用数据保存模板 2.1 保存为Excel格式 # 1、导入模块 from openpyxl import workbook# 2、创建一个exce…...

【面试题】简述rabbitmq的组织架构

[面试题]简述rabbitmq的组织架构 RabbitMQ 是一种流行的消息中间件&#xff0c;其架构设计围绕消息生产者, 消息消费者和消息中转&#xff08;Broker&#xff09;展开。以下是 RabbitMQ 的主要组织架构组件和它们之间的关系&#xff1a; 1. 核心组件 1.1 Producer&#xff0…...

C#-WPF 常见类型转换方法(持续更新)

目录 一、普通类型转换 1、Convert类 2、Parse(转String) 3、TryParse(转String) 4、ToString(转String) 5、int转double 6、String转DateTime 7、自定义类型的显示/隐式转换 二、byte[]转ImageSource 方法一 方法二 一、普通类型转换 1、Convert类 提供了一种安全…...

c基础加堆练习题

1】思维导图&#xff1a; 2】在堆区空间连续申请5个int类型大小空间&#xff0c;用来存放从终端输入的5个学生成绩&#xff0c;然后显示5个学生成绩&#xff0c;再将学生成绩升序排序&#xff0c;排序后&#xff0c;再次显示学生成绩。显示和排序分别用函数完成 要求&#xff…...

做了一份前端面试复习计划,保熟~

前言 以前我看到面试贴就直接刷掉的&#xff0c;从不会多看一眼&#xff0c;直到去年 9 月份我开始准备面试时&#xff0c;才发现很多面试经验贴特别有用&#xff0c;看这些帖子&#xff08;我不敢称之为文章&#xff0c;怕被杠&#xff09;的过程中对我的复习思维形成影响很大…...

虚幻引擎开发命名规则

UE的命名规则如下&#xff1a; 模版类以T作为前缀&#xff0c;例如TArray, TMap, TSet。UObject派生类都以U前缀。AActor派生类都以A前缀。SWidget派生类都以S前缀。全局对象使用G开头&#xff0c;如GEngine。抽象接口以I前缀。枚举以E开头。bool变量以b前缀&#xff0c;如bPe…...

【蓝桥杯每日一题】砍竹子

砍竹子 2024-12-7 蓝桥杯每日一题 砍竹子 STL 贪心 题目大意 这天, 小明在砍竹子, 他面前有 nn 棵竹子排成一排, 一开始第 ii 棵竹子的 高度为 h i h_i hi​. 他觉得一棵一棵砍太慢了, 决定使用魔法来砍竹子。魔法可以对连续的一 段相同高度的竹子使用, 假设这一段竹子的高度为…...

Lambda表达式随记

学习链接 目录 作用定义[capture list] 捕获列表(paramter) 参数列表mutable 可变规格throw() 异常说明-> return-type 返回类型{function statement} lambda函数体 Lambda表达式的优缺点Lambda表达式工作原理适用场景STL算法库短小不需要复用函数场景 作用 Lambda表达式&…...

Vulhub:Log4j[漏洞复现]

CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…...

ubuntu系统生成SSL证书配置https

自签名【Lets Encrypt】的测试证书&#xff0c;有效期三个月。 第一步&#xff1a;安装acme&#xff0c;如果没有安装git&#xff0c;需要提前安装 下载came资源 git clone https://github.com/Neilpang/acme.sh.git 无法访问&#xff0c;可以试用gitee的资源&#xff0c;安…...

记录 idea 启动 tomcat 控制台输出乱码问题解决

文章目录 问题现象解决排查过程1. **检查 idea 编码设置**2. **检查 tomcat 配置**3.检查 idea 配置文件4.在 Help 菜单栏中&#xff0c;修改Custom VM Options完成后保存&#xff0c;并重启 idea 问题现象 运行 tomcat 后&#xff0c;控制台输出乱码 解决排查过程 1. 检查 id…...

C++ unordered_map和unordered_set的使用

1.unordered_set系列的使用 1.1unordered_set和unordered_multiset参考文档 unordered_set和unordered_multiset参考文档 1.2unordered_set类的介绍 • unordered_set的声明如下&#xff0c;Key就是unordered_set底层关键字的类型 • unordered_set默认要求Key⽀持转换为整…...

【探商宝】OpenAI 发布 Sora:视频生成领域的重大突破

2024 年 12 月 10 日&#xff0c;OpenAI 正式推出了备受瞩目的人工智能视频生成模型 Sora&#xff0c;这一举措在科技界引起了轩然大波&#xff0c;为视频创作领域带来了全新的可能性和变革. 一、Sora 的功能与特性 1. 强大的视频生成能力 Sora 能够根据用户输入的文本描述生…...

[代码随想录Day32打卡] 理论基础 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

理论基础 题型 动归基础&#xff08;这一节就是基础题&#xff09;背包问题打家劫舍股票问题子序列问题 动态规划五部曲 确定dp数组及其下标的含义确定递推公式dp数组如何初始化遍历顺序打印dp数组 509. 斐波那契数 简单~ dp数组及下标含义&#xff1a; dp[i]表示第i各斐…...

【实操GPT-SoVits】声音克隆模型图文版教程

项目github地址&#xff1a;https://github.com/RVC-Boss/GPT-SoVITS.git官方教程&#xff1a;https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/tkemqe8vzhadfpeu本文旨在迅速实操GPT-SoVits项目&#xff0c;不阐述技术原理&#xff08;后期如果有时间研究&#…...

开发一套SDK 第一弹

自动安装依赖包 添加条件使能 #ex: filetypesh bash_ls 识别 达到预期,多个硬件环境 等待文件文件系统挂在完成 或者创建 /sys/class/ 属性文件灌入配置操作 AI 提供的 netlink 调试方法,也是目前主流调用方法,socket yyds #include <linux/module.h> #include <linux…...

2024149读书笔记|Hans的阿狸五部曲——成长的路上分离在所难免

2024149读书笔记|Hans的阿狸五部曲——成长的路上分离在所难免 1. 《阿狸和小小云》2. 《阿狸和小玉》3. 《阿狸呓语》4. [202480读书笔记|《阿狸和弯月亮》——生的再普通&#xff0c;也是限量版](https://blog.csdn.net/qq_40985985/article/details/139731131)5. 《阿狸永远…...

外包干了5天,技术明显退步。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近3年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…...

Ubuntu22.04 安装Isaac Lab

目录 1.1 安装IsaacLab 1.1.1 下载文件 1.1.2 创建Isaac Sim符号链接 1.1.3 创建并激活conda环境 1.1.4 安装依赖 1.1.5 安装IsaacLab扩展 1.1.6 安装完成&#xff0c;要source一下 1.2 验证IsaacLab安装 1.1 安装IsaacLab 1.1.1 下载文件 将 Isaac Lab 仓库克隆到您的…...

unity 2D像素种田游戏学习记录(自用)

一、透明度排序轴 改变sprite的排序方式&#xff0c;默认按照z轴进行排序&#xff08;离摄像机的远近&#xff09;。可以将其改变成y轴的排序方式&#xff0c;这样可以使2D人物走在草丛的下方就不被遮挡&#xff0c;走在草丛上方就被遮挡&#xff0c;如下图。 在项目设置-图形…...

NIFI使用

1 从Kafka接收消息&#xff0c;存储到数据库中。 &#xff08;1&#xff09; ConsumerKafka processor &#xff08;2&#xff09;Execute Scripts Processor 我这里是使用JS脚本进行处理。 还有很多其他语言的脚本。 var flowFile session.get(); if (flowFile ! null) {v…...

vue3+vite+ts 使用webrtc-streamer播放海康rtsp监控视频

了解webrtc-streamer webrtc-streamer 是一个使用简单机制通过 WebRTC 流式传输视频捕获设备和 RTSP 源的项目&#xff0c;它内置了一个小型的 HTTP server 来对 WebRTC需要的相关接口提供支持。相对于ffmpegflv.js的方案&#xff0c;延迟降低到了0.4秒左右&#xff0c;画面的…...

Nanolog起步笔记-9-log解压过程(3)寻找meta续

Nanolog起步笔记-9-log解压过程-3-寻找meta续 当前的目标新的改变decompressNextLogStatementmetadata查看业务面的log语句注释掉 runBenchmark();改过之后&#xff0c;2条记录之后&#xff0c;这里就直接返回了 小结 当前的目标 没有办法&#xff0c;还要继续。 当前的目标&a…...

未来网络技术的新征程:5G、物联网与边缘计算(10/10)

一、5G 网络&#xff1a;引领未来通信新潮流 &#xff08;一&#xff09;5G 网络的特点 高速率&#xff1a;5G 依托良好技术架构&#xff0c;提供更高的网络速度&#xff0c;峰值要求不低于 20Gb/s&#xff0c;下载速度最高达 10Gbps。相比 4G 网络&#xff0c;5G 的基站速度…...

【北京迅为】iTOP-4412全能版使用手册-第六十八章 U-boot基础知识

iTOP-4412全能版采用四核Cortex-A9&#xff0c;主频为1.4GHz-1.6GHz&#xff0c;配备S5M8767 电源管理&#xff0c;集成USB HUB,选用高品质板对板连接器稳定可靠&#xff0c;大厂生产&#xff0c;做工精良。接口一应俱全&#xff0c;开发更简单,搭载全网通4G、支持WIFI、蓝牙、…...

go 中线程安全map

在 Go 语言中&#xff0c;官方包 sync.Map 确实提供了线程安全的映射数据结构。然而&#xff0c;正如你所提到的&#xff0c;使用 sync.Map 时&#xff0c;有时需要进行类型断言&#xff0c;这可能会让代码显得冗长或不直观。 如果你希望使用一个更加易用的线程安全映射&#…...

封装类与普通类的区别

1 封装类的好处 数据隐藏&#xff1a;通过封装&#xff0c;我们可以将类的内部实现细节隐藏起来&#xff0c;只暴露有限的接口。这样&#xff0c;外部代码就不能直接访问或修改类的内部状态&#xff0c;从而保证了数据的安全性和完整性。 数据保护&#xff1a;封装可以…...

StarRocks-hive数据类型导致的分区问题

背景&#xff1a; 有个hive的表&#xff0c;是月分区的&#xff08;month_id&#xff09;&#xff0c;分区字段用的是string类型。数据量比较大&#xff0c;为了保证计算性能&#xff0c;所以把数据导入到SR里&#xff0c;构建一个内部表。但是在建表的时候想使用月分区使用pa…...

Java面试题精选:设计模式(二)

1、装饰器模式与代理模式的区别 1&#xff09;代理模式(Proxy Design Pattern ) 原始定义是&#xff1a;让你能够提供对象的替代品或其占位符。代理控制着对于原对象的访问&#xff0c;并允许将请求提交给对象前后进行一些处理。 代理模式的适用场景 功能增强 当需要对一个对…...