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

微信小程序学习基础:从入门到精通

文章目录

    • 第一章:微信小程序概述
      • 1.1 什么是微信小程序
      • 1.2 小程序与原生APP、H5的区别
      • 1.3 小程序的发展历程与现状
    • 第二章:开发环境搭建
      • 2.1 注册小程序账号
      • 2.2 安装开发者工具
      • 2.3 开发者工具界面介绍
      • 2.4 第一个小程序项目
    • 第三章:小程序框架与文件结构
      • 3.1 小程序框架组成
      • 3.2 项目目录结构
      • 3.3 四种文件类型详解
      • 3.4 小程序配置系统
    • 第四章:WXML与WXSS基础
      • 4.1 WXML语法基础
      • 4.2 WXSS样式语言
      • 4.3 组件与样式实战
    • 第五章:JavaScript逻辑层
      • 5.1 小程序JavaScript特点
      • 5.2 App与Page生命周期
      • 5.3 数据绑定与事件处理
      • 5.4 模块化开发
    • 第六章:小程序组件系统
      • 6.1 内置组件概述
      • 6.2 常用组件详解
      • 6.3 自定义组件开发
    • 第七章:API与开放能力
      • 7.1 小程序API分类
      • 7.2 常用API详解
      • 7.3 开放能力实战
    • 第八章:项目实战与优化
      • 8.1 完整项目开发流程
      • 8.2 性能优化技巧
      • 8.3 常见问题与解决方案
    • 第九章:小程序发布与运营
      • 9.1 小程序发布流程
      • 9.2 数据分析与运营
      • 9.3 小程序推广策略
    • 第十章:进阶与扩展
      • 10.1 小程序云开发
      • 10.2 TypeScript支持
      • 10.3 跨平台开发方案
    • 结语

第一章:微信小程序概述

1.1 什么是微信小程序

微信小程序(WeChat Mini Program)是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或搜一下即可打开应用。小程序运行在微信环境中,具有以下特点:

  1. 无需安装:用户不需要像传统APP那样下载安装,节省手机存储空间
  2. 即用即走:使用体验流畅,用完即可关闭,无需卸载
  3. 跨平台:一次开发,可在iOS和Android平台上运行
  4. 微信生态整合:可方便调用微信提供的各种能力,如支付、分享、定位等

1.2 小程序与原生APP、H5的区别

特性微信小程序原生APPH5网页
开发成本较低
性能接近原生最高较低
入口微信内部桌面图标浏览器
更新机制微信审核更新应用商店审核实时更新
系统权限受限完整受限
推广难度较易中等

1.3 小程序的发展历程与现状

  • 2016年1月:张小龙首次提出"应用号"概念
  • 2017年1月:小程序正式上线
  • 2017年12月:小游戏类目开放,"跳一跳"引爆市场
  • 2018年:逐步开放更多能力,如分包加载、云开发等
  • 2019年:小程序数量突破300万,日活用户超过3亿
  • 2020年至今:小程序生态持续繁荣,成为企业数字化转型的重要工具

第二章:开发环境搭建

2.1 注册小程序账号

  1. 访问微信公众平台
  2. 点击"立即注册",选择"小程序"
  3. 填写邮箱、密码等信息完成注册
  4. 登录后完善小程序信息,包括名称、图标、简介等

2.2 安装开发者工具

  1. 下载微信开发者工具(支持Windows和Mac)
  2. 安装并启动开发者工具
  3. 使用注册的微信账号扫码登录
  4. 创建新项目,填写AppID(可在公众平台查看)

2.3 开发者工具界面介绍

微信开发者工具主要包含以下区域:

  1. 菜单栏:文件、编辑、工具等基本操作
  2. 工具栏:编译、预览、上传等开发功能
  3. 模拟器:实时展示小程序运行效果
  4. 编辑器:代码编写区域,支持WXML、WXSS、JS等
  5. 调试器:包含Console、Sources、Network等调试面板
  6. 项目配置:可查看和修改项目设置

2.4 第一个小程序项目

  1. 新建项目,选择"快速启动模板"
  2. 项目结构解析:
    • pages/:页面目录
    • utils/:工具函数
    • app.js:小程序逻辑
    • app.json:全局配置
    • app.wxss:全局样式
  3. 点击"编译"按钮预览效果
  4. 修改代码并实时查看变化

第三章:小程序框架与文件结构

3.1 小程序框架组成

微信小程序框架包含以下核心部分:

  1. 逻辑层:处理业务逻辑,使用JavaScript
  2. 视图层:负责页面渲染,使用WXML和WXSS
  3. 配置文件:JSON格式的各种配置
  4. 原生组件:微信提供的丰富组件库

3.2 项目目录结构

典型的小程序项目目录结构如下:

project
├── pages/                // 页面目录
│   ├── index/            // index页面
│   │   ├── index.js      // 页面逻辑
│   │   ├── index.json    // 页面配置
│   │   ├── index.wxml    // 页面结构
│   │   └── index.wxss    // 页面样式
│   └── logs/             // logs页面
│       ├── logs.js
│       ├── logs.json
│       ├── logs.wxml
│       └── logs.wxss
├── utils/                // 工具模块
│   └── util.js           // 工具函数
├── app.js                // 小程序逻辑
├── app.json              // 小程序公共配置
├── app.wxss              // 小程序公共样式表
└── project.config.json   // 项目配置文件

3.3 四种文件类型详解

  1. WXML (WeiXin Markup Language)

    • 类似HTML的标记语言
    • 提供数据绑定、列表渲染、条件渲染等能力
    • 支持模板和引用机制
  2. WXSS (WeiXin Style Sheets)

    • 类似CSS的样式语言
    • 扩展了尺寸单位rpx(响应式像素)
    • 提供全局样式和局部样式概念
  3. JavaScript

    • 小程序的逻辑处理语言
    • 包含App、Page等生命周期函数
    • 支持CommonJS模块系统
  4. JSON

    • 用于各种配置
    • 简洁的数据格式
    • 不支持注释

3.4 小程序配置系统

  1. 全局配置 (app.json)

    • pages:页面路径列表
    • window:窗口表现
    • tabBar:底部tab栏配置
    • networkTimeout:网络超时时间
    • debug:是否开启调试模式
  2. 页面配置 (page.json)

    • 覆盖全局window的配置
    • 只能设置与窗口相关的配置项
  3. 项目配置 (project.config.json)

    • 开发者工具的个性化配置
    • 包括项目设置、编译配置等

第四章:WXML与WXSS基础

4.1 WXML语法基础

WXML具有以下核心语法特性:

  1. 数据绑定

    <view>{{message}}</view>
    
    Page({data: {message: 'Hello World!'}
    })
    
  2. 列表渲染

    <view wx:for="{{array}}" wx:key="id">{{index}}: {{item.message}}
    </view>
    
  3. 条件渲染

    <view wx:if="{{view == 'WEBVIEW'}}">WEBVIEW</view>
    <view wx:elif="{{view == 'APP'}}">APP</view>
    <view wx:else>OTHER</view>
    
  4. 模板

    <template name="msgItem"><view><text> {{index}}: {{msg}} </text><text> Time: {{time}} </text></view>
    </template><template is="msgItem" data="{{...item}}"/>
    

4.2 WXSS样式语言

WXSS在CSS基础上做了以下扩展:

  1. 尺寸单位rpx

    • 1rpx = 屏幕宽度/750
    • 可根据屏幕宽度自适应
  2. 样式导入

    @import "common.wxss";
    
  3. 选择器

    • 支持class、id、element等基本选择器
    • 支持伪类选择器如:active
  4. 全局样式与局部样式

    • app.wxss中的样式为全局样式
    • 页面wxss文件中的样式只作用于当前页面

4.3 组件与样式实战

<!-- index.wxml -->
<view class="container"><text class="title">欢迎使用小程序</text><view class="content"><block wx:for="{{list}}" wx:key="id"><view class="item"><image src="{{item.icon}}" class="icon"></image><text>{{item.name}}</text></view></block></view>
</view>
/* index.wxss */
.container {display: flex;flex-direction: column;align-items: center;
}.title {font-size: 32rpx;color: #333;margin: 20rpx 0;
}.item {display: flex;align-items: center;padding: 20rpx;border-bottom: 1rpx solid #eee;
}.icon {width: 60rpx;height: 60rpx;margin-right: 20rpx;
}

第五章:JavaScript逻辑层

5.1 小程序JavaScript特点

  1. 基于ECMAScript标准,但有些浏览器API不可用
  2. 额外提供微信小程序API
  3. 模块化开发支持
  4. 不支持DOM操作
  5. 异步API大多采用回调风格,部分支持Promise

5.2 App与Page生命周期

  1. App生命周期

    • onLaunch:小程序初始化时触发
    • onShow:小程序启动或从后台进入前台时触发
    • onHide:小程序从前台进入后台时触发
    • onError:脚本错误或API调用失败时触发
  2. Page生命周期

    • onLoad:页面加载时触发
    • onShow:页面显示时触发
    • onReady:页面初次渲染完成时触发
    • onHide:页面隐藏时触发
    • onUnload:页面卸载时触发

5.3 数据绑定与事件处理

  1. 数据绑定

    Page({data: {count: 0},increase: function() {this.setData({count: this.data.count + 1})}
    })
    
  2. 事件处理

    <button bindtap="increase">点击增加</button>
    
  3. 事件对象

    • type:事件类型
    • timeStamp:事件生成时间
    • target:触发事件的组件
    • currentTarget:当前组件
    • detail:额外信息

5.4 模块化开发

  1. 模块定义

    // utils/util.js
    function formatTime(date) {// 格式化时间
    }module.exports = {formatTime: formatTime
    }
    
  2. 模块引用

    // pages/index/index.js
    const util = require('../../utils/util.js')Page({onLoad: function() {console.log(util.formatTime(new Date()))}
    })
    

第六章:小程序组件系统

6.1 内置组件概述

微信小程序提供了丰富的基础组件,分为以下几类:

  1. 视图容器:view、scroll-view、swiper等
  2. 基础内容:icon、text、progress等
  3. 表单组件:button、form、input等
  4. 导航:navigator
  5. 媒体组件:image、video、camera等
  6. 地图:map
  7. 画布:canvas
  8. 开放能力:open-data、web-view等

6.2 常用组件详解

  1. view组件

    • 基本视图容器
    • 支持flex布局
    • 常用属性:hover-class、hover-start-time等
  2. image组件

    • 支持JPG、PNG、SVG等格式
    • 支持懒加载
    • 常用属性:src、mode、lazy-load等
  3. scroll-view组件

    • 可滚动视图区域
    • 支持横向和纵向滚动
    • 常用属性:scroll-x、scroll-y、bindscroll等

6.3 自定义组件开发

  1. 创建自定义组件

    • 在项目根目录创建components文件夹
    • 新建组件文件夹,如my-component
    • 包含.json.wxml.wxss.js四个文件
  2. 组件配置

    {"component": true
    }
    
  3. 组件逻辑

    Component({properties: {// 定义属性title: {type: String,value: '默认标题'}},methods: {// 自定义方法onTap: function() {this.triggerEvent('customevent', {detail: '数据'})}}
    })
    
  4. 使用自定义组件

    • 在页面json中引用:
    {"usingComponents": {"my-component": "/components/my-component/my-component"}
    }
    
    • 在wxml中使用:
    <my-component title="自定义标题" bindcustomevent="onMyEvent" />
    

第七章:API与开放能力

7.1 小程序API分类

  1. 基础API

    • 系统信息
    • 生命周期
    • 定时器
    • 调试
  2. 界面API

    • 交互反馈
    • 导航栏
    • 背景
    • 动画
  3. 网络API

    • 请求
    • 上传下载
    • WebSocket
  4. 设备API

    • 地理位置
    • 系统信息
    • 扫码
    • 剪贴板
  5. 开放接口

    • 登录
    • 支付
    • 分享
    • 设置

7.2 常用API详解

  1. 网络请求

    wx.request({url: 'https://example.com/api',method: 'GET',data: {key: 'value'},success(res) {console.log(res.data)},fail(err) {console.error(err)}
    })
    
  2. 数据缓存

    // 异步存储
    wx.setStorage({key: 'key',data: 'value',success() {wx.getStorage({key: 'key',success(res) {console.log(res.data)}})}
    })// 同步存储
    try {wx.setStorageSync('key', 'value')const value = wx.getStorageSync('key')
    } catch (e) {console.error(e)
    }
    
  3. 界面交互

    // 显示加载提示
    wx.showLoading({title: '加载中',
    })setTimeout(function() {wx.hideLoading()
    }, 2000)// 显示模态对话框
    wx.showModal({title: '提示',content: '这是一个模态弹窗',success(res) {if (res.confirm) {console.log('用户点击确定')} else if (res.cancel) {console.log('用户点击取消')}}
    })
    

7.3 开放能力实战

  1. 获取用户信息

    <button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo">获取用户信息
    </button>
    
    Page({onGetUserInfo(e) {console.log(e.detail.userInfo)}
    })
    
  2. 微信支付

    wx.requestPayment({timeStamp: '',nonceStr: '',package: '',signType: 'MD5',paySign: '',success(res) {console.log('支付成功')},fail(err) {console.error('支付失败', err)}
    })
    
  3. 分享功能

    Page({onShareAppMessage() {return {title: '自定义分享标题',path: '/page/user?id=123',imageUrl: '/images/share.jpg'}}
    })
    

第八章:项目实战与优化

8.1 完整项目开发流程

  1. 需求分析

    • 确定目标用户
    • 明确核心功能
    • 设计用户流程
  2. UI设计

    • 设计稿制作
    • 切图与标注
    • 适配方案确定
  3. 技术方案

    • 架构设计
    • 技术选型
    • 接口定义
  4. 开发实现

    • 搭建基础框架
    • 功能模块开发
    • 联调测试
  5. 测试上线

    • 功能测试
    • 性能测试
    • 提交审核
    • 发布上线

8.2 性能优化技巧

  1. 启动加载优化

    • 减小包体积
    • 使用分包加载
    • 提前发起数据请求
  2. 渲染性能优化

    • 合理使用setData
    • 避免频繁界面重绘
    • 使用虚拟列表
  3. 内存优化

    • 及时清理无用资源
    • 避免内存泄漏
    • 合理使用图片资源

8.3 常见问题与解决方案

  1. 页面白屏

    • 检查网络请求
    • 查看错误日志
    • 验证数据绑定
  2. 样式错乱

    • 检查样式作用域
    • 验证rpx使用
    • 排查样式覆盖
  3. API调用失败

    • 检查权限配置
    • 验证参数格式
    • 查看服务器状态

第九章:小程序发布与运营

9.1 小程序发布流程

  1. 代码上传

    • 在开发者工具点击"上传"
    • 填写版本号和项目备注
  2. 提交审核

    • 登录微信公众平台
    • 在管理后台提交审核
    • 填写审核信息
  3. 发布上线

    • 审核通过后点击发布
    • 可选择全量发布或分阶段发布

9.2 数据分析与运营

  1. 数据分析

    • 访问统计
    • 用户行为分析
    • 漏斗分析
  2. 运营手段

    • 活动营销
    • 消息模板
    • 社交裂变
  3. A/B测试

    • 不同版本对比
    • 数据驱动决策
    • 持续优化迭代

9.3 小程序推广策略

  1. 线上推广

    • 公众号关联
    • 朋友圈广告
    • 社交媒体分享
  2. 线下推广

    • 二维码投放
    • 活动推广
    • 异业合作
  3. 搜索优化

    • 关键词优化
    • 服务类目准确
    • 内容质量提升

第十章:进阶与扩展

10.1 小程序云开发

  1. 云开发基础

    • 云数据库
    • 云函数
    • 云存储
  2. 优势特点

    • 无需搭建服务器
    • 一体化开发体验
    • 弹性伸缩
  3. 实战示例

    // 初始化
    wx.cloud.init()// 数据库操作
    const db = wx.cloud.database()
    db.collection('todos').get({success: res => {console.log(res.data)}
    })
    

10.2 TypeScript支持

  1. 配置TypeScript

    • 安装依赖
    • 配置tsconfig.json
    • 类型定义文件
  2. 开发优势

    • 类型检查
    • 更好的IDE支持
    • 代码可维护性
  3. 示例代码

    Page({data: {count: 0},increase(): void {this.setData({count: this.data.count + 1})}
    })
    

10.3 跨平台开发方案

  1. Taro框架

    • 支持React/Vue语法
    • 一次编写,多端运行
    • 丰富的插件生态
  2. uni-app

    • Vue语法支持
    • 多平台输出
    • 组件库丰富
  3. 原生与跨平台对比

    • 性能差异
    • 开发效率
    • 维护成本

结语

微信小程序作为轻量级应用的代表,已经成为移动互联网生态的重要组成部分。通过本教程的系统学习,您已经掌握了小程序开发的基础知识和核心技能。随着技术的不断发展,小程序生态也在持续演进,建议开发者:

  1. 持续关注微信官方文档更新
  2. 参与开发者社区交流
  3. 实践真实项目积累经验
  4. 探索小程序与新兴技术的结合

相关文章:

微信小程序学习基础:从入门到精通

文章目录 第一章&#xff1a;微信小程序概述1.1 什么是微信小程序1.2 小程序与原生APP、H5的区别1.3 小程序的发展历程与现状 第二章&#xff1a;开发环境搭建2.1 注册小程序账号2.2 安装开发者工具2.3 开发者工具界面介绍2.4 第一个小程序项目 第三章&#xff1a;小程序框架与…...

如何使用redis做限流(golang实现小样)

在实际开发中,限流(Rate Limiting)是一种保护服务、避免接口被恶意刷流的常见技术。常用的限流算法有令牌桶、漏桶、固定窗口、滑动窗口等。由于Redis具备高性能和原子性操作,常常被用来实现分布式限流。 下面给出使用Golang结合Redis实现简单限流的几种常见方式(以“固定…...

lanqiaoOJ 4185:费马小定理求逆元

【题目来源】 https://www.lanqiao.cn/problems/4185/learning/ 【题目描述】 给出 n&#xff0c;p&#xff0c;求 。其中&#xff0c; 指存在某个整数 0≤a<p&#xff0c;使得 na mod p1&#xff0c;此时称 a 为 n 的逆元&#xff0c;即 。数据保证 p 是质数且 n mod p≠0…...

深度剖析ZooKeeper

1. ZooKeeper架构总览 ZooKeeper 是一个分布式协调服务&#xff0c;广泛用于分布式系统中的配置管理、命名服务、分布式锁和领导选举等场景。以下是对 ZooKeeper 架构、通信机制、容错处理、数据一致性与可靠性等方面的详细剖析。 一、ZooKeeper 主从集群 ZooKeeper 采用 主从…...

深入解析 MySQL 中的 SHOW_ROUTINE 权限

目录 前言 权限作用 授权方法 MySQL8.0.20以上 MySQL8.0.20以下 总结 前言 SHOW_ROUTINE 是 MySQL 中用于控制用户查看存储过程和函数定义的权限。拥有该权限的用户可以通过 SHOW CREATE PROCEDURE 和 SHOW CREATE FUNCTION 等语句查看存储过程和函数的详细定义&#xff…...

电脑网络如何改ip地址?ip地址改不了怎么回事

在日常使用电脑上网时&#xff0c;我们有时会遇到需要更改IP地址的情况&#xff0c;比如访问某些受限制的网站、解决网络冲突问题&#xff0c;或者出于隐私保护的需求。然而&#xff0c;许多用户在尝试修改IP地址时可能会遇到各种问题&#xff0c;例如IP地址无法更改、修改后无…...

打开小程序提示请求失败(小程序页面空白)

1、小程序代码是商城后台下载的还是自己编译的 &#xff08;1&#xff09;要是商城后台下载的&#xff0c;检查设置里面的域名是不是https的 &#xff08;2&#xff09;要是自己编译的&#xff0c;检查app.js里面的接口域名是不是https的&#xff0c;填了以后有没有保存 注&a…...

C语言速成12之指针:程序如何在内存迷宫里找宝藏?

程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java、鸿蒙、嵌入式、人工智能等开发,专注于程序员成长的那点儿事,希望在成长的路上有你相伴&#xff01;君志所向,一往无前&#xff01; 0. 前言&#xff1a;程序如何在内存迷宫里找宝藏&#xff1f; 想象内存是一个巨…...

一张纸决定的高度

从我捧起《格局》这个本书开始&#xff0c;转眼间两个月过去了。 回头望一望&#xff0c;好似还在昨天。 这两个月&#xff0c;心态在变&#xff0c;前进的方向在变&#xff0c;但唯一不变的就是每天晚上睡前&#xff0c;留给自己十分钟的读书时光。 我也从来没想过&#xf…...

IP查询基础介绍

IP 查询原理 IP 地址是网络设备唯一标识&#xff0c;IP 查询通过解析 IP 地址获取地理位置、运营商等信息。目前主流的 IPv4&#xff08;32 位&#xff09;与 IPv6&#xff08;128 位&#xff09;协议&#xff0c;前者理论提供约 43 亿地址&#xff0c;后者地址空间近乎无限。…...

常见的gittee开源项目推荐

https://gitee.com/macrozheng/mall https://doc.ruoyi.vip/ https://eladmin.vip/ https://gitee.com/dromara/RuoYi-Cloud-Plus https://gitee.com/dromara/RuoYi-Vue-Plus https://gitee.com/ZhongBangKeJi/crmeb_java...

日常效率工具【Tools】【持续更新】

日常效率工具【Tools】 VScodevscode原理&#xff08;居然和Chrome同源&#xff09;Chromium(Chrome开源版)node.js:让JavaScript可以运行在wab之外的环境 配置文件setting.jesn vscode快捷键万事不求人&#xff08;Ctrl K,Ctrl S&#xff09;vscode修改光标所在行的背景色Gene…...

PyTorch中TensorBoardX模块与torch.utils.tensorboard模块的对比分析

文章目录 说明1. 模块起源与开发背景2. 功能特性对比3. 安装与依赖关系4. 性能与使用体验5. 迁移与兼容性策略6. 最佳实践与建议7. 未来展望8. 结论实际相关信息推荐资源 说明 TensorBoard&#xff1a;独立工具&#xff0c;只需安装tensorboard。TensorFlow&#xff1a;非必需…...

数据结构与算法——链式二叉树

链式二叉树 遍历方式与其规则代码的实现递归的复习前&#xff0c;中&#xff0c;后序遍历的实现二叉树结点个数二叉树叶子结点个数二叉树第k层结点个数二叉树的深度/高度二叉树查找值为x的结点二叉树销毁层序遍历 遍历方式与其规则 前序遍历&#xff1a;访问根结点的操作发⽣在…...

Android12 launcher3修改App图标白边问题

Android12 launcher3修改App图标白边问题 1.前言&#xff1a; 今天在Android12 Rom定制客制化系统应用时发现改变系统App图标的形状会出现一个问题&#xff0c;那就是图标被缩小了&#xff0c;没有显示完整&#xff0c;有一个白边&#xff0c;这在普通的App开发很少遇到&…...

【iOS】分类、扩展、关联对象

分类、扩展、关联对象 前言分类扩展扩展和分类的区别关联对象key的几种用法流程 总结 前言 最近的学习中笔者发现自己对于分类、扩展相关知识并不是很熟悉&#xff0c;刚好看源码类的加载过程中发现有类扩展与关联对象详解。本篇我们来探索一下这部分相关知识&#xff0c;首先…...

内蒙古工程系列建设工程技术人才评审条件

关于印发《内蒙古自治区工程系列建设工程专业技术人才职称评审条件》的通知 内蒙古工程系列建设工程技术人才评审条件适用范围 内蒙古工程系列建设工程技术人才评审条件之技术员评审要求 内蒙古工程系列建设工程技术人才评审条件之助理工程师评审要求 内蒙古工程系列建设工程技…...

Elasticsearch超详细安装部署教程(Windows Linux双系统)

文章目录 一、前言二、Windows系统安装部署2.1 环境准备2.2 Elasticsearch安装2.3 安装为Windows服务2.4 Head插件安装2.5 Kibana集成&#xff08;可选&#xff09; 三、Linux系统安装部署3.1 环境准备3.2 Elasticsearch安装3.3 系统优化3.4 启动服务3.5 安全配置&#xff08;可…...

第十六章:数据治理之数据架构:数据模型和数据流转关系

本章我们说一下数据架构&#xff0c;说到数据架构&#xff0c;就很自然的想到企业架构、业务架构、软件架构&#xff0c;因为个人并没有对这些内容进行深入了解&#xff0c;所以这里不做比对是否有相似或者共通的地方&#xff0c;仅仅来说一下我理解的数据架构。 1、什么是架构…...

目标检测DINO-DETR(2023)详细解读

文章目录 对比去噪训练混合查询选择look forward twice 论文全称为&#xff1a;DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 提出了三个新的方法&#xff1a; 首先&#xff0c;为了改进一对一的匹配效果&#xff0c;提出了一种对比去噪训练方法…...

基于 STM32 的蔬菜智能育苗系统硬件与软件设计

一、系统总体架构 蔬菜智能育苗系统通过单片机实时采集温湿度、光照等环境数据,根据预设阈值自动控制灌溉、补光、通风等设备,实现育苗环境的智能化管理。系统主要包括以下部分: 主控芯片:STM32F103C8T6(32 位 ARM Cortex-M3 单片机,性价比高,适合嵌入式控制)传感器模…...

实现一个带有授权码和使用时间限制的Spring Boot项目

生成和验证授权码记录授权时间和过期时间实现授权逻辑 以下是具体的实现方法&#xff1a; 1. 生成和验证授权码 可以使用加密技术生成和验证授权码。授权码中可以包含有效期等信息&#xff0c;并使用密钥进行签名。 示例代码&#xff1a; java复制代码 import javax.crypt…...

SGlang 推理模型优化(PD架构分离)

一、技术背景 随着大型语言模型&#xff08;LLM&#xff09;广泛应用于搜索、内容生成、AI助手等领域&#xff0c;对模型推理服务的并发能力、响应延迟和资源利用效率提出了前所未有的高要求。与模型训练相比&#xff0c;推理是一个持续进行、资源消耗巨大的任务&#xff0c;尤…...

TuyaOpen横空出世!涂鸦智能如何用开源框架重构AIoT开发范式?

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引子&#xff1a;AIoT开发的“不可能三角”被打破 当AI与物理世界深度融合的浪潮席卷全球&#xff0c;开发者们却始终面临一个“不可能三角”——开发…...

Vue语法【2】

1.插值表达式&#xff1a; 语法规则&#xff1a; {{Vue实例中data的变量名}}使用场景&#xff1a; 插值表达式一般使用在文本内容中&#xff0c;如果是元素的属性内容中则无法使用&#xff1b; 案例&#xff1a; <!DOCTYPE html> <html lang"en"> &l…...

2.2.1 05年T2

引言 本文将从一预习、二自习、三学习、四复习等四个阶段来分析2005年考研英语阅读第二篇文章。为了便于后续阅读&#xff0c;我将第四部分复习放在了首位。 四、复习 方法&#xff1a;错误思路分析总结考点文章梳理 4.1 错题分析 题目&#xff1a;26&#xff08;细节题&…...

每日c/c++题 备战蓝桥杯(修理牛棚 Barn Repair)

修理牛棚 Barn Repair 题解 问题背景与挑战 在一个暴风雨交加的夜晚&#xff0c;Farmer John 的牛棚遭受了严重的破坏。屋顶被掀飞&#xff0c;大门也不翼而飞。幸运的是&#xff0c;许多牛正在度假&#xff0c;牛棚并未住满。然而&#xff0c;为了保护那些还在牛棚里的牛&am…...

6个月Python学习计划 Day 3

&#x1f3af; 今日目标 掌握 while 和 for 循环的使用方式理解 range() 的工作机制实践&#xff1a;打印 1~100、累加、九九乘法表等常见程序逻辑 &#x1f9e0; 学习内容详解 while 循环 i 1 while i < 5:print(f"第 {i} 次循环")i 1&#x1f4cc; 特点&…...

Linux虚拟文件系统(2)

2.3 目录项-dentry 目录项&#xff0c;即 dentry&#xff0c;用来记录文件的名字、索引节点指针以及与其他目录项的关联关系。多个关联的目录项&#xff0c;就构成了文件系统的目录结构。和上一章中超级块和索引节点不同&#xff0c;目录项并不是实际存在于磁盘上的&#xff0c…...

【数据结构】栈和队列(上)

目录 一、栈&#xff08;先进后出、后进先出的线性表&#xff09; 1、栈的概念及结构 2、栈的底层结构分析 二、代码实现 1、定义一个栈 2、栈的初始化 3、入栈 3、增容 4、出栈 5、取栈顶 6、销毁栈 一、栈&#xff08;先进后出、后进先出的线性表&#xff09; 1、…...