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问题记录:
-
升级hbx后项目运行报错
回退hbx版本:帮助 -> 切换到上一个版本 -
项目突然有异常启动的问题,非页面问题,可以考虑是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项目介绍及规范
-
样式:公共变量写在
uni.scss
内,不用在页面内引入即可使用。自带的公共变量在'@/uni_modules/uni-scss/variables.scss';
查找,可直接使用。 -
样式:公共样式写在
@/common/styles/public.scss
内,已在app.vue
内引入,不用在页面内引入即可使用。 -
辅助样式:链接
-
样式:页面和组件内写样式,style标签必须加
scoped
。<style lang="scss" scoped> </style>
-
页面底部写入安全区域适配代码
考虑到开屏广告适配情况,不配置全局的安全区域适配,需要在各个页面内单独适配
<view class="padding-bottom-safe"></view>
-
组件:公共组件写在
@/components/组件名/组件名.vue
;页面级组件写在页面/components/组件
。 -
api:接口请求
statusCode!==200
时,封装方法内有公共错误提示,页面内不用管;其他情况错误和正确提示需要在页面内自行处理。 -
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}// 成功处理
}
-
安装eslint-vue插件
https://ext.dcloud.net.cn/plugin?id=2005
eslint-vue简介
-
rpx
页面内尽量使用rpx
rpx介绍-自行查看
阶段4 公共组件方法
为什么要做组件封装?:
- 代码复用: 通过将一些常用的功能或界面元素封装成组件,可以在不同的地方多次使用,避免重复编写相同的代码。
- 易于维护: 将一些功能或界面元素封装成组件后,可以更容易地对其进行修改、更新和扩展,而不会影响到其他部分的代码。
- 提高开发效率: 通过使用现有的组件,开发人员可以更快地构建新的界面,而不必从头开始编写所有的代码。
- 抽象复杂性: 封装组件可以帮助将复杂的功能或界面元素抽象成简单的接口,使得整个系统更易于理解和管理。
封装组件的条件:
- 可定制性: 组件应该具有足够的参数和选项,以便在不同的上下文中进行定制和配置。
- 灵活性: 组件应该能够适应不同的数据和状态,而不是过于依赖特定的数据结构或业务逻辑。
- 可组合性: 组件应该能够与其他组件进行组合和嵌套,以构建更复杂的界面。
- 可测试性: 组件应该具有清晰的API和明确定义的行为,以便进行单元测试和集成测试。
- 文档和示例: 组件应该有清晰的文档和示例,以便其他开发者能够快速理解和正确使用组件。
- 样式隔离: 组件应该具有良好的样式隔离,以防止组件的样式影响到其他部分的页面。
UseList 列表页面Hooks
参数:
initData
初始化方法,Function,必传,接口请求放在该方法内pageSize?
每页条数,Number,默认 5pullDownRefresh?
是否下拉刷新,Boolean,默认truereachBottom?
是否触底加载,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?
前面显示 红点,默认falsesingle?
一行一个,没有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 筛选组件
页面筛选组件使用方法
uni-easyinput
传filter-input样式时,需要将styles传空对象,否则会导致样式不生效
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-modeldictCode
?: String, // 数据字典code,- 如果
dictCode: areas
,则获取本地省市县镇数据, level?
Number 省市县镇组件层级,默认4
- 如果
localData
?: Array, // 数据 ,优先使用dictCodeapi?
: Function // 通过api请求获取数据fieldNames
// 处理字段,默认值{label: 'label', value: 'value', result:'result'}
showType?
:'picker' | 'checkbox' | undefined
, //显示类型 picker/checkbox,默认pickermultiple?
: 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
错误是使用 error
或toast
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
默认 datetimeborder
Boolean, 默认falsemodelValue
<!--日期范围-->
<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’}, 搜索传接口的字段keyvalueField
: { 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-modelreadonly
: { 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="{}":model="demoForm":schemas="schemas"@change="handleFormChange"@submit="handleSubmit"><template #slot1><input type="text" v-model="demoForm.key10"></template>
</DataForm>
-
formProps
: 传到表单uni-forms
的属性,
默认值:{labelWidth: '100px',border: true,}
-
schemas
: { type: Array, required: true,}, // 表单schema
component
支持的组件类型有:uniEasyInput
输入框PublicPicker
公共选择DateRange
时间范围选择,DateRange传className时,需要加上uni-mt-4,否则会导致没有边距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;}}]},]
-
model
: { 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}}]) })
-
space
是否显示左侧边距 ,默认false,给表单添加.form-no-border
样式,隐藏左侧边距
相关文章:
uniapp-内部项目使用文档
uniapp-内部项目使用文档 目录 uniapp-内部项目使用文档阶段1自行实现内容:阶段1问题记录: 阶段2自行实现内容: 阶段3 APP项目介绍及规范阶段4 公共组件方法UseList 列表页面HooksListItem 列表项uni-load-more 列表加载更多组件CardTitle 列…...
ASP .NET Core 中的环境变量
在本文中,我们将通过组织一场小型音乐会(当然是在代码中)来了解 ASP .NET Core 中的环境变量。让我们从创建项目开始: dotnet new web --name Concert 并更新Program.cs: // replace this: app.MapGet("/"…...
学科竞赛管理系统
文末获取源码和万字论文,制作不易,感谢点赞支持。 摘 要 随着国家教育体制的改革,全国各地举办的竞赛活动数目也是逐年增加,面对如此大的数目的竞赛信息,传统竞赛管理方式已经无法满足需求,为了提高效率&am…...
unity 让文字变形
效果: using TMPro; using UnityEngine; using NaughtyAttributes;[ExecuteInEditMode] public class TMTextPerpective : MonoBehaviour {[OnValueChanged("DoPerspective")][Range(-1f, 1f)]public float CenterBias 0f;[OnValueChanged("DoPers…...
Linux高并发服务器开发 第一天(Linux的目录结构 cd用法 终端提示符格式)
目录 1.命令解析器:shell 2.LINUX下的目录结构 3.cd的使用 3.1cd 绝对路径 3.2cd 相对路径 3.3cd 回车 3.4cd - 4. 终端提示符格式 1.命令解析器:shell 默认运行与计算机系统终端的 用来解析用户输入命令的工具 内核:操作系统的核…...
可造成敏感信息泄露!Spring Boot之Actuator信息泄露漏洞三种利用方式总结
1.介绍 Spring Boot是一个基于Spring的套件,它提供了一个即开即用的应用程序架构,可以简化Spring应用的创建及部署流程,帮助开发者更轻松快捷地构建出企业及应用。 Spring Boot项目中Actuator模块提供了众多HTTP接口端点(Endpoi…...
支持图像和视频理解多模态开源大模型:CogVLM2 CogVLM2-Video
CogVLM2和CogVLM2-Video是新一代的开源模型,支持图像和视频理解,具有显著的性能提升。最近发布的更新包括CogVLM2论文的发表、在线演示和对视频理解的支持,能够处理最多1分钟的视频。新模型支持中英文,文本长度可达8K,…...
ClouderaManager 集群搭建
前提:服务器之前做过域名映射、免密登录 ClouderaManager 集群 1. 组件分布规划 服务器服务器h1zk、hdfs(dn)、yarn(nm)、spark、kafka、flumeh2hdfs(nn-standy)、yarn(rm-active)、sparkh3hdfs(nn-active)、yarn(rm-standy)、hive、sparkh4zk、hdfs(dn)、yarn(n…...
Docker 搭建 gitlab 服务器卡顿问题解决方法(创建:swap分区)
Docker 安装系列 服务器搭建了一个 gitlab 服务器以供自己开发使用,服务器搭建很简单,但是使用起来是相当的卡顿,在代码 pull,push 过程中都会有相应的延迟。gitlab 启动运行就占用了大量的内存,4G内存在启动后已经所…...
PVE修改IP地址
一、在局域网的电脑浏览器输入PVE的IP地址登录后台,从左边的菜单找到“PVE”—“_Shell”菜单,进入网页版的ssh界面下;或者在主机的控制台下输入root密码后登录到ssh下; 二、输入以下命令回车: vi /etc/network/inter…...
智能合约的离线签名(EIP712协议)解决方案
引言:本文由天玄链开源开发者提供,欢迎报名公益天玄链训练营 https://blockchain.163.com/trainingCamp 一、解决核心问题 项目方不支付gas费,由用户自己发起交易,用户支付gas费。用户的数据保存在链下服务器中,tok…...
大模型Qwen面试内容整理-应用场景与案例分析
Qwen模型凭借其强大的自然语言理解和生成能力,在多个实际应用场景中得到了广泛应用。以下是Qwen模型的主要应用场景及一些典型的案例分析,展示了它如何解决具体问题和带来实际价值。 智能对话系统 ● 应用场景 ○ 客服机器人:Qwen被用于开发智能客服机器人,能够理解客户的问…...
spring boot的统一异常处理,使用@RestControllerAdvice
RestControllerAdvice 是 Spring Boot 中用于全局异常处理的注解,它结合了 ControllerAdvice 和 ResponseBody 的功能。这意味着使用 RestControllerAdvice 注解的类将应用于所有 RequestMapping 方法,并且任何从这些方法返回的对象都会被转换为 HTTP 响…...
OFCA-OpenHarmony课后习题答案
本文是 OFCA-OpenHarmony 认证模拟考试的习题答案,涵盖 OpenHarmony 的多内核设计、权限申请、通知发布、系统线程、启动过程、分布式软总线、模块导入、文件管理、公共事件等多个方面。每道题目均提供了详细的选择项和正确答案,旨在帮助考生熟悉考试内容…...
Open AI 推出 ChatGPT Pro
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
利用PHP和GD库实现图片切割
利用PHP和GD库实现图片切割的详细步骤如下: 一、检查GD库是否安装 确保服务器上已经安装了PHP和GD库。可以使用phpinfo()函数来检查GD库是否已经安装和启用。 二、加载原始图片 使用PHP提供的imagecreatefromjpeg()、imagecreatefrompng()或imagecreatefromgif(…...
【css】基础(一)
本专栏内容为:前端专栏 记录学习前端,分为若干个子专栏,html js css vue等 💓博主csdn个人主页:小小unicorn ⏩专栏分类:css专栏 🚚代码仓库:小小unicorn的代码仓库🚚 &a…...
springboot415社区网格化管理平台的构建-(论文+源码)_kaic
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区网格化管理平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…...
如何在 Ubuntu 上安装开源监控工具 Uptime Kuma
简介 Uptime Kuma(或简称 Kuma)是一个开源监控工具,用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能,如多语言支持、多个状态页面、代理支持等。 接下来,我将一步一步教大家如何进行安装和部署&am…...
复习 part one
synchronized 和 ReentrantLock的区别 synchronized 和 ReentrantLock 都是 Java 中提供的可重入锁,二者的主要区别有以下 5 个: 用法不同:synchronized 可以用来修饰普通方法、静态方法和代码块,而 ReentrantLock 只能用于代码块…...
【工业机器视觉】基于深度学习的水表盘读数识别(3-数据标注与转换)
【工业机器视觉】基于深度学习的仪表盘识读(2)-CSDN博客 数据标注 标注扩展 Labelme 和 LabelImg 都是用于创建机器学习和计算机视觉项目所需标注数据的工具。它们都允许用户通过图形界面手动标注图像,但各自有其特点和适用场景。 Labelme…...
python数据分析之爬虫基础:selenium详细讲解
目录 1、selenium介绍 2、selenium的作用: 3、配置浏览器驱动环境及selenium安装 4、selenium基本语法 4.1、selenium元素的定位 4.2、selenium元素的信息 4.3、selenium元素的交互 5、Phantomjs介绍 6、chrome handless模式 1、selenium介绍 (1…...
Tips--解决esptool经pyinstaller打包后无法使用的问题
esptool打包后失效解决方法 问题1原因解决方法问题2原因解决方法 问题1 esptool经过pyinstaller打包成exe后,提示错误:Stub flasher JSON file for esp32 not found 原因 pyinstaller在进行esptool打包的时候,通常不用讲Stub flaser Json文…...
Apache DolphinScheduler 限制秒级别的定时调度
背景 Apache DolphinScheduler 定时任务配置采用的 7 位 Crontab 表达式,分别对应秒、分、时、月天、月、周天、年。 在团队日常开发工作中,工作流的定时调度一般不会细化到秒级别。但历史上出现过因配置的疏忽大意而产生故障时间,如应该配…...
Oracle 数据库创建用户并分配只读的权限
引言 在 Oracle 数据库的日常运维和开发过程中,用户管理是确保数据安全与访问控制的关键环节。通过合理创建用户并分配适当的权限,可以有效防止未授权的访问和操作。本文将详细介绍如何在 Oracle 数据库中: 创建新用户并设置复杂密码。授予…...
2个GitHub上最近比较火的Java开源项目
1. SpringBlade 微服务架构 标题 SpringBlade 微服务架构 摘要 SpringBlade 是一个由商业级项目升级优化而来的微服务架构,采用Spring Boot 3.2、Spring Cloud 2023等核心技术构建,遵循阿里巴巴编码规范,提供基于React和Vue的两个前端框架&am…...
【jvm】为什么要有GC
目录 1. 自动内存管理2. 提升程序稳定性3. 优化性能4. 跨平台能力5. 分代回收策略 1. 自动内存管理 1.JVM中的GC机制负责自动管理内存,这意味着开发人员不需要手动分配和释放内存。2.这一特性大大简化了Java程序的内存管理,降低了内存泄漏和内存溢出等问…...
【Rhino】【Python】根据contour创建地形mesh
将surface生成open curve封闭 #codingutf-8 import rhinoscriptsyntax as rs import mathdef adjust_endpoints():# 获取指定图层中的所有曲线all_objects rs.ObjectsByLayer("Level 19")if not all_objects:print("在Level 19图层中未找到对象")return#…...
蓝桥杯软件赛系列---lesson1
🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 我们今天会再开一个系列,那就是蓝桥杯系列,我们会从最基础的开始讲起,大家想要备战明年蓝桥杯的,让我们一起加油。 工具安装 DevC…...
NanoLog起步笔记-1
nonolog起步笔记-1 背景与上下文写在前面Nanolog与一般的实时log的异同现代log的一般特性Nanolog的选择 背景与上下文 因为工作中用到了NanoLog。有必要研究一下。 前段时间研究了许多内容,以为写了比较详实的笔记,今天找了找,不仅笔记没找到…...
企业怎么做网站/营销型网站建设模板
本篇博客主要实现一个自定义的二级联动,说到二级联动举一个简单的例子就理解了二级联动的意思。比如我们网购添加收货地址的时候,我们首先选择省份,然后选择对应省份里的市,我们选择了陕西省,选择市的时候,…...
如何申请免费域名做网站/百度销售平台怎样联系
2019独角兽企业重金招聘Python工程师标准>>> Java 在 I/O 领域一直处于劣势,这种情况直到 J2SE SDK 发布了 1.4 版以后才有了改观。 Java 的劣势源于其最大的优势:一次编写,到处运行。 Java 需要运行于虚拟机(即 JVM&a…...
动态效果酷炫的网站/搜索引擎营销的英文缩写是
嗯,今天好不容易把鸽了好久的缩点给弄完了……感觉好像……很简单? 算法的目的,其实就是在有向图上,把一个强连通分量缩成一个点……然后我们再对此搞搞事情,\(over\) 哦对,时间复杂度很显然是\(\Theta(n)\…...
中山外贸网站建设/seo工具包括
参考:https://blog.csdn.net/zhouzuoluo/article/details/84781490转载于:https://www.cnblogs.com/web-fusheng/p/10682825.html...
西宁网站制作哪里好/新媒体营销案例ppt
属性striped设置为true,即striped:true。 如果想更改颜色,可以更改easyui.css中的.datagrid-row-alt样式。转载于:https://www.cnblogs.com/hubing/p/3969599.html...
个人工商注册查询网站/net的网站建设
SQL SERVER中变量的定义、赋值与使用 本文面向对SQL SERVER中变量操作不熟悉的用户,希望能使他们在看完本文后能对变量操作有具体和全面的认识。 在学习SQL SERVER的过程中,很多时候需要对某些单独的值进行调试,这时就需要在SQL SERVER中对变…...