深入浅出:UniApp 从入门到精通全指南
https://juejin.cn/post/7440119937644101684
uni-app官网
uniapp安卓离线打包流程_uniapp离线打包-CSDN博客
本文是关于 UniApp 从入门到精通的全指南,涵盖基础入门(环境搭建、创建项目、项目结构、编写运行)、核心概念与进阶知识(组件与开发、页面路由与导航、数据绑定与响应式原理、生命周期钩子)、电商应用开发(商品展示、购物车、订单结算等功能)、项目优化与部署(性能、安全优化及不同平台部署)、案例分析及总结展望,为开发者全面介绍 UniApp 开发知识体系。
关联问题:UniApp如何压缩图片怎样优化购物车功能如何部署到小程序
一、引言
在当今移动应用开发领域,跨平台开发框架因其能够显著提高开发效率、降低成本而备受青睐。UniApp 作为一款优秀的跨平台应用开发框架,允许开发者使用 Vue.js 技术栈一次编写代码,即可生成 iOS、Android、H5、小程序等多端应用,为开发者提供了极大的便利。本文将详细介绍 UniApp 的入门到精通知识,助力开发者快速上手并深入掌握这一强大的开发工具。
二、UniApp 基础入门
(一)环境搭建
- 安装 Node.js:Node.js 是 UniApp 开发的基础环境,可前往官网(nodejs.org/)下载适合操作系统的版本并进行安装。安装完成后,可在命令行中输入
node -v
和npm -v
检查安装是否成功以及版本信息。 - 安装 HBuilderX:HBuilderX 是 UniApp 的官方开发工具,集成了丰富的开发功能和插件。在 HBuilderX 官网(www.dcloud.io/hbuilderx.h…)下载对应版本并安装。安装完成后,启动 HBuilderX,在菜单栏中点击 “工具”->“插件安装”,确保安装了 “uni-app” 插件。
(二)创建项目
- 打开 HBuilderX,点击 “文件”->“新建”->“项目”。
- 在项目创建向导中,选择 “uni-app” 项目类型,填写项目名称、项目路径等信息,点击 “创建”。创建完成后,HBuilderX 会自动生成一个包含基础结构的 UniApp 项目。
(三)项目结构
- pages 目录:存放应用的页面文件,每个页面由一个.vue 文件组成,包括页面的结构、样式和逻辑。
- static 目录:用于存放静态资源,如图片、字体文件等,这些资源在编译后会直接拷贝到各个端的项目中。
- manifest.json 文件:项目的配置文件,包含应用的名称、图标、权限设置、页面路径等信息,用于配置应用在不同端的基本属性。
- pages.json 文件:用于配置应用的页面路由、导航栏样式、底部 tabBar 等页面相关的全局设置。
(四)编写第一个页面
-
在 pages 目录下创建一个新的.vue 文件,例如
index.vue
。 -
在
<template>
标签内编写页面的 HTML 结构,例如:
xml
代码解读
复制代码
<template> <view class="container"> <text>Hello, UniApp!</text> </view> </template>
-
在
<script>
标签内编写页面的 JavaScript 逻辑,例如:
xml
代码解读
复制代码
<script> export default { data() { return { // 数据定义 } }, methods: { // 方法定义 }, mounted() { // 生命周期钩子,页面加载完成时执行 } } </script>
-
在
<style>
标签内编写页面的 CSS 样式,例如:
xml
代码解读
复制代码
<style> .container { display: flex; justify-content: center; align-items: center; height: 100vh; } </style>
(五)运行项目
- 在 HBuilderX 中,点击菜单栏中的 “运行”->“运行到浏览器”,可以在浏览器中预览项目的 H5 版本。
- 点击 “运行”->“运行到手机或模拟器”,如果连接了手机或启动了模拟器,会将项目安装到手机或模拟器中运行,可查看项目的原生应用效果(iOS 或 Android)。
- 点击 “运行”->“运行到小程序模拟器”,可选择微信小程序、支付宝小程序等不同平台的小程序模拟器进行项目预览。
三、UniApp 核心概念与进阶知识
(一)组件与组件化开发
-
内置组件:UniApp 提供了丰富的内置组件,如
<view>
(视图容器)、<text>
(文本)、<image>
(图片)、<button>
(按钮)等,开发者可以直接在页面中使用这些组件构建界面。例如:
arduino
代码解读
复制代码
<image src="/static/logo.png" mode="aspectFit"></image>
上述代码在页面中显示一张图片,src
属性指定图片路径,mode
属性设置图片的缩放模式。
2. 自定义组件:除了内置组件,开发者还可以创建自定义组件,实现代码的复用。在项目中创建一个 components
目录,在该目录下创建自定义组件的.vue 文件。例如创建一个名为 my-header.vue
的自定义组件:
xml
代码解读
复制代码
<template> <view class="header"> <text>{{title}}</text> </view> </template> <script> export default { props: { title: { type: String, default: '默认标题' } } } </script> <style> .header { height: 50px; line-height: 50px; background-color: #007aff; color: #fff; text-align: center; } </style>
在其他页面中使用自定义组件:
xml
代码解读
复制代码
<template> <view class="container"> <my-header title="我的页面标题"></my-header> </view> </template> <script> import myHeader from '@/components/my-header.vue' export default { components: { myHeader } } </script>
(二)页面路由与导航
-
路由配置:在
pages.json
文件中配置页面路由,例如:
json
代码解读
复制代码
{ "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "首页" } }, { "path": "pages/detail/detail", "style": { "navigationBarTitleText": "详情页" } } ] }
上述配置定义了两个页面的路由路径和导航栏标题。
2. 导航方式:
-
编程式导航:在 JavaScript 代码中使用
uni.navigateTo
、uni.redirectTo
、uni.switchTab
等方法进行页面跳转。例如:
css
代码解读
复制代码
uni.navigateTo({ url: '/pages/detail/detail?id=123' })
上述代码跳转到详情页,并传递一个参数 id
,值为 123
。
-
声明式导航:在页面的
<template>
标签中使用<navigator>
组件进行导航,例如:
ini
代码解读
复制代码
<navigator url="/pages/detail/detail?id=456">跳转到详情页</navigator>
(三)数据绑定与响应式原理
-
数据绑定语法:在 UniApp 中,使用
{{}}
语法进行数据绑定。例如在页面的<template>
标签中:
arduino
代码解读
复制代码
<text>{{message}}</text>
在对应的 <script>
标签中:
javascript
代码解读
复制代码
export default { data() { return { message: 'Hello, Vue!' } } }
页面加载时,text
组件会显示 Hello, Vue!
。
2. 响应式原理:UniApp 基于 Vue.js 的响应式原理,当数据发生变化时,会自动更新与之绑定的视图。例如:
javascript
代码解读
复制代码
export default { data() { return { count: 0 } }, methods: { increment() { this.count++ } } }
在页面中绑定一个按钮的点击事件:
css
代码解读
复制代码
<button @click="increment">{{count}}</button>
每次点击按钮,count
的值会增加,页面上显示的数字也会随之更新。
(四)生命周期钩子
-
页面生命周期:UniApp 页面有多个生命周期钩子函数,如
onLoad
(页面加载时触发)、onShow
(页面显示时触发)、onReady
(页面初次渲染完成时触发)、onHide
(页面隐藏时触发)、onUnload
(页面卸载时触发)等。例如:
javascript
代码解读
复制代码
export default { onLoad(options) { // 页面加载时获取参数 options console.log('页面加载,参数:', options) }, onShow() { // 页面每次显示时执行 console.log('页面显示') } }
-
应用生命周期:除了页面生命周期,UniApp 应用也有生命周期钩子,如
onLaunch
(应用启动时触发)、onShow
(应用前台显示时触发)、onHide
(应用后台运行时触发)等。在main.js
文件中可以注册应用生命周期钩子:
javascript
代码解读
复制代码
import Vue from 'vue' import App from './App.vue' Vue.config.productionTip = false App.mpType = 'app' const app = new Vue({ ...App }) app.$mount() // 注册应用生命周期钩子 uni.onLaunch(() => { console.log('应用启动') })
四、UniApp 与原生功能交互
(一)网络请求
-
uni.request 方法:UniApp 提供了
uni.request
方法用于发送网络请求,例如:
javascript
代码解读
复制代码
uni.request({ url: 'https://api.example.com/data', method: 'GET', success: (res) => { console.log('请求成功', res.data) }, fail: (err) => { console.log('请求失败', err) } })
上述代码向指定的 API 地址发送一个 GET 请求,并在成功或失败时打印相应信息。
2. 封装网络请求模块:为了更好地管理网络请求,通常会封装一个网络请求模块。创建一个 utils
目录,在该目录下创建 http.js
文件:
javascript
代码解读
复制代码
const baseUrl = 'https://api.example.com' export const request = (options) => { return new Promise((resolve, reject) => { uni.request({ url: baseUrl + options.url, method: options.method || 'GET', data: options.data || {}, success: (res) => { if (res.statusCode === 200) { resolve(res.data) } else { reject(res) } }, fail: (err) => { reject(err) } }) }) }
在页面中使用封装后的网络请求模块:
javascript
代码解读
复制代码
import { request } from '@/utils/http.js' export default { methods: { fetchData() { request({ url: '/data' }).then((data) => { console.log('获取数据成功', data) }).catch((err) => { console.log('获取数据失败', err) }) } } }
(二)存储与缓存
-
同步存储与缓存:UniApp 提供了
uni.setStorageSync
(同步设置缓存)、uni.getStorageSync
(同步获取缓存)、uni.removeStorageSync
(同步移除缓存)等方法。例如:
arduino
代码解读
复制代码
// 设置缓存 uni.setStorageSync('token', 'abcdefg') // 获取缓存 const token = uni.getStorageSync('token') console.log('缓存中的 token:', token) // 移除缓存 uni.removeStorageSync('token')
-
异步存储与缓存:除了同步方法,还有对应的异步方法
uni.setStorage
、uni.getStorage
、uni.removeStorage
等,异步方法返回一个 Promise。例如:
javascript
代码解读
复制代码
// 异步设置缓存 uni.setStorage({ key: 'userInfo', data: { name: 'John', age: 25 } }).then(() => { console.log('缓存设置成功') }).catch((err) => { console.log('缓存设置失败', err) })
(三)设备信息与系统功能调用
-
获取设备信息:使用
uni.getSystemInfo
或uni.getSystemInfoSync
方法获取设备信息,如设备型号、屏幕宽度、屏幕高度等。例如:
javascript
代码解读
复制代码
uni.getSystemInfo({ success: (res) => { console.log('设备信息:', res) } })
-
调用系统功能:UniApp 提供了丰富的 API 用于调用系统功能,如
uni.makePhoneCall
(拨打电话)、uni.chooseImage
(选择图片)、uni.getLocation
(获取地理位置)等。例如:
php
代码解读
复制代码
// 拨打电话 uni.makePhoneCall({ phoneNumber: '13888888888' })
五、UniApp 多端适配与优化
(一)样式适配
-
rpx 单位:UniApp 推荐使用 rpx 单位进行样式编写,rpx 会根据设备屏幕宽度自动进行换算,从而实现自适应布局。例如:
css
代码解读
复制代码
.container { width: 750rpx; height: 100rpx; background-color: #f00; }
在不同屏幕宽度的设备上,container
元素的宽度和高度会根据比例自动调整。
2. 条件编译:针对不同平台的样式差异,可以使用条件编译。例如:
css
代码解读
复制代码
/* #ifdef APP-PLUS */ .app-only-style { color: #007aff; } /* #endif */ /* #ifdef MP-WEIXIN */ .weixin-only-style { background-color: #f5f5f5; } /* #endif */
上述代码中,.app-only-style
样式只会在 APP 端生效,.weixin-only-style
样式只会在微信小程序端生效。
(二)性能优化
-
图片优化:在项目中尽量使用合适尺寸和格式的图片,避免使用过大的图片资源。可以使用图片压缩工具对图片进行压缩,或者使用雪碧图、base64 编码等方式优化图片加载。
-
代码分包:对于大型项目,可以使用代码分包技术,将不同页面或功能的代码拆分成多个分包,在需要时才加载相应的分包,从而减少首屏加载时间。在
pages.json
文件中配置代码分包:
json
代码解读
复制代码
{ "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "首页" } } ], "subPackages": [ { "root": "subpkg1", "pages": [ { "path": "detail/detail", "style": { "navigationBarTitleText": "详情页" } } ] } ] }
上述配置将 detail
页面所在的代码放在 subpkg1
分包中。
3. 数据懒加载:对于页面中不需要立即显示的数据,可以采用数据懒加载的方式,在用户滚动到相应位置或触发特定事件时才加载数据,提高页面的初始加载速度。例如:
ini
代码解读
复制代码
<view v-for="(item, index) in list" :key="index" v-if="index < visibleCount">{{item}}</view> <button @click="loadMore">加载更多</button>
javascript
代码解读
复制代码
export default { data() { return { list: [], visibleCount: 10, page: 1 } }, methods: { loadMore() { // 模拟加载更多数据 const newData = [] for (let i = 0; i < 10; i++) { newData.push('新数据' + (this.page * 10 + i)) } this.list = this.list.concat(newData) this.visibleCount += 10 this.page++ } } }
六、UniApp 项目实战与案例分析
(一)实战项目搭建
-
需求分析:确定项目的功能需求,例如开发一个电商应用,需要包括商品列表展示、商品详情页、购物车功能、订单结算、用户登录注册等功能。
-
技术选型:根据项目需求,选择合适的技术栈和插件。对于 UniApp 项目,确定使用 Vue.js 进行页面开发,选择合适的 UI 框架(如 uView UI)提高开发效率,使用后端开发语言(如 Node.js + Express)搭建后端 API 服务。
-
数据库设计:设计项目所需的数据库表结构,如用户表、商品表、订单表、购物车表等,确定表之间的关系和字段类型。
-
项目架构设计:规划项目的目录结构,将页面、组件、接口请求、工具函数等分别放在不同的目录中,便于管理和维护。例如:
arduino
代码解读
复制代码
- api // 接口请求目录 - index.js // 接口请求模块入口 - user.js // 用户相关接口 - product.js // 商品相关接口 - components // 组件目录 - header.vue // 头部组件 - footer.vue // 底部组件 - pages // 页面目录 - index.vue // 首页 - productList.vue // 商品列表页 - productDetail.vue // 商品详情页 - cart.vue // 购物车页 - order.vue // 订单页 - login.vue // 用户登录页 - register.vue // 用户注册页 - utils // 工具函数目录 - http.js // 网络请求工具函数 - storage.js // 存储工具函数 - static // 静态资源目录 - images // 图片资源 - fonts // 字体资源
(二)核心功能实现
-
商品列表页:
-
在
productList.vue
页面中,使用uni.request
向后端 API 请求商品列表数据,在onLoad
生命周期钩子中发起请求。例如:
-
javascript
代码解读
复制代码
import { request } from '@/utils/http.js' export default { data() { return { productList: [] } }, onLoad() { request({ url: '/product/list' }).then((res) => { this.productList = res.data }).catch((err) => { console.log('获取商品列表失败', err) }) } }
-
在页面的
<template>
中使用v-for
指令循环渲染商品列表数据:
xml
代码解读
复制代码
<template> <view class="product-list"> <view class="product-item" v-for="(product, index) in productList" :key="index"> <image :src="product.image" mode="aspectFit"></image> <text>{{product.name}}</text> <text>¥{{product.price}}</text> <button @click="addToCart(product)">加入购物车</button> </view> </view> </template>
-
商品详情页:
-
接收从商品列表页传递过来的商品 ID 参数,在
onLoad
生命周期中根据 ID 请求商品详情数据。例如:
-
javascript
代码解读
复制代码
export default { data() { return { productDetail: {} } }, onLoad(options) { const productId = options.id request({ url: `/product/detail/${productId}` }).then((res) => { this.productDetail = res.data }).catch((err) => { console.log('获取商品详情失败', err) }) } }
-
在页面中展示商品详情信息,包括图片、名称、价格、描述等。
-
购物车功能:
-
在
cart.vue
页面中,从本地缓存或后端获取购物车数据并展示。例如:
-
javascript
代码解读
复制代码
export default { data() { return { cartList: [] } }, onLoad() { const cartData = uni.getStorageSync('cart') || [] this.cartList = cartData } }
-
实现添加商品到购物车功能,在商品列表页或商品详情页点击 “加入购物车” 按钮时,将商品信息添加到购物车数据中,并更新本地缓存和页面显示。例如:
scss
代码解读
复制代码
methods: { addToCart(product) { const cartData = uni.getStorageSync('cart') || [] const index = cartData.findIndex(item => item.id === product.id) if (index!== -1) { // 商品已存在,数量加 1 cartData[index].quantity++ } else { // 新商品加入购物车 cartData.push({...product, quantity: 1 }) } uni.setStorageSync('cart', cartData) this.$forceUpdate() // 强制更新页面数据 } }
-
实现购物车商品数量修改、删除商品等功能。
-
订单结算功能:
- 在
order.vue
页面中,计算购物车中商品的总价,展示订单信息。 - 点击 “提交订单” 按钮时,向后端提交订单数据,包括用户信息、收货地址、商品信息等,后端处理订单逻辑并返回订单结果。
- 在
(三)项目优化与部署
-
性能优化:
- 对项目中的图片进行压缩和优化,使用雪碧图或 base64 编码处理小图标,减少网络请求次数。
- 对代码进行混淆和压缩,去除不必要的代码注释和空白字符,减小代码体积。在 HBuilderX 中,可以在项目的发行设置中开启代码压缩功能。
- 优化页面的加载速度,采用数据懒加载、骨架屏等技术。例如,在商品列表页,当用户滚动到页面底部时,再加载更多的商品数据;在页面加载时,先显示骨架屏,待数据加载完成后再显示真实内容。
-
安全优化:
- 对用户输入的数据进行严格的验证和过滤,防止 SQL 注入、XSS 攻击等安全漏洞。例如,在用户登录注册页面,对用户名、密码等输入框进行输入限制和验证,确保输入的数据符合要求。
- 对后端 API 进行权限验证,确保只有合法用户才能访问敏感数据和操作。例如,使用 JWT(JSON Web Tokens)进行用户身份认证,在用户登录成功后,后端返回一个 JWT 令牌,前端在后续的 API 请求中携带该令牌,后端验证令牌的有效性来确定用户身份和权限。
-
项目部署:
- 将 UniApp 项目编译成不同平台的应用程序。在 HBuilderX 中,点击 “发行” 菜单,可以选择编译成 iOS 应用、Android 应用、H5 网站或小程序等。
- 对于 iOS 应用,需要在苹果开发者账号中创建应用证书和描述文件,然后使用 Xcode 进行应用的打包和发布到 App Store。
- 对于 Android 应用,需要生成签名证书,然后使用 Android Studio 或其他打包工具进行应用的打包和发布到各大应用商店,如华为应用市场、小米应用商店等。
- 对于 H5 网站,可以将编译后的代码部署到自己的服务器或使用云服务平台(如阿里云、腾讯云等)进行部署,配置好域名和服务器环境后即可通过浏览器访问。
- 对于小程序,需要在对应的小程序平台(如微信小程序、支付宝小程序等)注册开发者账号,然后将编译后的小程序代码上传到平台进行审核和发布。
(四)案例分析
以一个成功的 UniApp 电商应用为例,分析其在市场上取得成功的因素:
-
用户体验:该应用界面设计简洁美观,操作流程简单流畅,用户能够快速找到所需商品并完成购物流程。例如,商品分类清晰,搜索功能强大,购物车和订单结算方便快捷,提供了良好的用户交互体验。
-
性能优化:应用在加载速度、图片显示、数据请求等方面进行了有效的优化。在网络较差的情况下,也能快速显示商品列表的骨架屏,并在数据加载完成后及时更新页面,减少了用户的等待时间。同时,图片经过压缩和优化,加载速度快,不会出现卡顿现象。
-
功能完整性:涵盖了电商应用的核心功能,如商品展示、购物车、订单结算、用户评价、售后客服等,满足了用户在购物过程中的各种需求。并且,还提供了一些特色功能,如个性化推荐、积分系统、优惠券等,增加了用户的粘性和购物乐趣。
-
多端适配:在 iOS、Android、H5 和小程序等多端都有良好的表现,用户可以在不同的设备和平台上使用该应用,扩大了应用的用户群体和使用场景。例如,在小程序端,利用微信的社交属性,用户可以方便地分享商品链接给好友,促进了商品的传播和销售。
通过对这个案例的分析,可以总结出 UniApp 项目开发的一些经验和教训,为后续的项目开发提供参考和借鉴,帮助开发者更好地打造出高质量、受欢迎的跨平台应用。
七、总结与展望
UniApp 作为一款强大的跨平台应用开发框架,为开发者提供了高效、便捷的开发方式。从入门的环境搭建、项目创建,到核心概念的掌握、原生功能的交互,再到多端适配与优化以及项目实战,本文全面地介绍了 UniApp 的开发知识体系。通过学习和实践 UniApp,开发者可以快速构建出功能丰富、性能优良、多端兼容的应用程序,满足不同用户群体和业务场景的需求。随着移动应用开发技术的不断发展,UniApp 也在持续更新和完善,未来有望在更多领域得到广泛应用,为跨平台应用开发带来更多的创新和突破。开发者应不断关注 UniApp 的发展动态,深入学习和探索其新特性和功能,提升自己的开发技能,在跨平台应用开发领域创造出更多优秀的作品。
相关文章:
深入浅出:UniApp 从入门到精通全指南
https://juejin.cn/post/7440119937644101684 uni-app官网 uniapp安卓离线打包流程_uniapp离线打包-CSDN博客 本文是关于 UniApp 从入门到精通的全指南,涵盖基础入门(环境搭建、创建项目、项目结构、编写运行)、核心概念与进阶知识&#x…...
低空经济-飞行数据平台 搭建可行方案
搭建一个飞行数据平台是低空经济中至关重要的一环,它能够实现对飞行器的实时监控、数据分析、路径优化以及安全管理。以下是搭建飞行数据平台的详细步骤和技术方案: 一、平台的核心功能 实时监控: 实时获取飞行器的位置、速度、高度、电池状态等数据。提供可视化界面,展示飞…...
【四.RAG技术与应用】【12.阿里云百炼应用(下):RAG的云端优化与扩展】
在上一篇文章中,我们聊了如何通过阿里云百炼平台快速搭建一个RAG(检索增强生成)应用,实现文档智能问答、知识库管理等基础能力。今天咱们继续深入,聚焦两个核心问题:如何通过云端技术优化RAG的效果,以及如何扩展RAG的应用边界。文章会穿插实战案例,手把手带你踩坑避雷。…...
3-7 WPS JS宏 工作表移动复制实例-2(多工作簿的多工作表合并)学习笔记
************************************************************************************************************** 点击进入 -我要自学网-国内领先的专业视频教程学习网站 *******************************************************************************************…...
【智能机器人开发全流程:硬件选型、软件架构与ROS实战,打造高效机器人系统】
文章目录 1. 硬件层设计(1) 传感器选型(2) 计算平台 2. 软件架构设计(1) 核心模块划分(2) 通信框架 3. 关键实现步骤(1) 硬件-软件接口开发(2) SLAM与导航实现(3) 仿真与测试 4. 典型框架示例基于ROS的移动机器人分层架构 5. 优化与扩展6. 开源项目参考 1. 硬件层设计 (1) 传感…...
【CSS—前端快速入门】CSS 选择器
CSS 1. CSS介绍 1.1 什么是CSS? CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式; CSS 能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果;能够做到页面的样式和 结构分离; 1…...
二、QT和驱动模块实现智能家居-----5、通过QT控制LED
在QT界面,我们要实现点击“LED”按钮就可以控制板子上的LED。LED接线图如下: 在Linux 系统里,我们可以使用2种方法去操作上面的LED: ① 使用GPIO SYSFS系统:这需要一定的硬件知识,需要设置引脚的方向、数值…...
在UI设计中使用自定义控件
生成: 自定义控件完成: 看控件的父类是谁: 在想使用的窗口中: 拖动一个与他父类相同类型的控件: 点击控件右键 这样就是你自定义的控件了 运行后: //点击QSpinBox,滑块跟着移动void (QSpinBox::…...
docker 离线安装redis(离线)
docker离线安装redis时,我找了挺多资料都是需要先在另一台能联网的机器上先下载镜像,然后移动内网中的docker服务器进行部署,我也是这么操作的,但是必须拥有能上网的docker环境才能下载,我在github上找到了一种可以直接…...
利用python实现对Excel文件中数据元组的自定义排序
问题引入: 假设你是一个浙江省水果超市的老板,统筹11个下辖地市的水果产量。假设11个地市生产的水果包括:苹果、香蕉和西瓜。你如何快速得到某种水果产量突出(排名前几)的地市?产量落后(排名后…...
基于 Python 深度学习的电影评论情感分析可视化系统(2.0 全新升级)
基于 Python 深度学习的电影评论情感分析可视化系统,基于 Flask 深度学习,构建了一个 影评情感分析系统,能够 自动分析影评、计算情感趋势 并 可视化展示,对于电影行业具有重要参考价值! 基于 Python 深度学习的电影评…...
【MYSQL数据库异常处理】执行SQL语句报超时异常
MYSQL执行SQL语句异常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago. 这个错误表明 MySQL 服务器与 JDBC 连接之间的通信超时了。通常由…...
docker拉取失败
备份原始配置文件 sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 清理或修复 daemon.json 文件 sudo nano /etc/docker/daemon.json 删除 文件中的所有内容,确保文件为空。 cv下面这个文件内容 { "registry-mirrors": [ &…...
Linux的一些配置(网络建设与运维)
for i in 的指令使用集 传输内容指令 for i in {1..7};do ssh 10.4.220.10${i} "指令";done 传输文件指令 for i in {1..7};do scp 文件 root10.4.220.10${i}:文件位置;done DNS循环内容指令 for i in {1..7};do echo "linux$i A 10.4.220.10$i" >> …...
嵌入式L6计算机网络
Telnet不加密 socket是应用层和下面的内核...
大型语言模型演变之路:从Transformer到DeepSeek-R1
大型语言模型的崛起被认为是人工智能领域的一次革命,从2017年Transformer架构的引入开始,到2025年DeepSeek-R1的推出,每一步都在不断改变着人机交互的方式,推动着学术界与产业界的深度融合。 1. Transformer的引领(201…...
Idea配置注释模板
一、配置类注释模板 打开IDEA,打开settings(快捷键:Ctrl Alt s),选择Editor,找到File and Code Templates 这里以设置class文件为例,点击Class,在右侧配置以下内容 #if (${PACKAGE_NAME} && $…...
通过计费集成和警报监控 Elasticsearch Service 成本
作者:来自 Elastic Alexis Charveriat 使用 Elasticsearch 服务计费集成来跟踪、定制和提醒 Elasticsearch 服务费用。 监控和管理你的Elasticsearch服务(ESS)使用情况和成本对高效运营至关重要。 Elasticsearch服务计费集成提供了一种简化的…...
50.xilinx fir滤波器系数重加载如何控制
, 注意:matlab量化后的滤波器系数为有符号数,它是以补码形式存储的,手动计算验证时注意转换为负数对应数值进行计算。...
每日一题——接雨水
接雨水问题详解 视频学习推荐 建议先参考以下视频进行学习: 问题描述 给定一个非负整数数组 height,表示每个宽度为 1 的柱子的高度图。计算按此排列的柱子,下雨之后能接多少雨水。 示例 示例 1: 输入:height …...
【Flink银行反欺诈系统设计方案】1.短时间内多次大额交易场景的flink与cep的实现
【flink应用系列】1.Flink银行反欺诈系统设计方案 1. 经典案例:短时间内多次大额交易1.1 场景描述1.2 风险判定逻辑 2. 使用Flink实现2.1 实现思路2.2 代码实现2.3 使用Flink流处理 3. 使用Flink CEP实现3.1 实现思路3.2 代码实现 4. 总结 1. 经典案例:短…...
【15】蚂蚁链产品与服务
15-1 蚂蚁链一体机 蚂蚁链一体机概述 蚂蚁链一体机是深度融合软硬件技术、针对区块链技术特色打造的软硬一体化服务器。面对区块链技术落地中的性能、安全和隐私等技术挑战,结合自主硬件技术,打造了高性能、强隐私和高安全的软硬件一体化服务器&#x…...
DeepSeek:如何通过自然语言生成HTML文件与原型图?
在当今快节奏的开发与设计环境中,快速生成HTML文件或原型图是每个开发者与设计师的迫切需求。虽然DeepSeek无法直接生成图片,但它却能够通过自然语言生成流程图、原型图以及交互式页面,甚至可以直接输出HTML代码。本文将详细介绍如何与DeepSe…...
【JAVA架构师成长之路】【持久层】第2集:SQL常用优化手段
课程标题:SQL常用优化手段——15分钟快速提升数据库性能 目标:掌握10+核心SQL优化技巧,解决慢查询、高负载等生产问题 0-1分钟:优化核心原则——减少数据扫描量 本质逻辑:通过索引、分页、过滤条件等手段,最小化磁盘I/O和内存计算。 反例:SELECT * FROM orders(全表扫…...
文件上传和下载前后端交互逻辑
上传】 1、后端给前端一个上传接口:进行文件上传,上传成功后,该接口返回文件的路径,名称,id 2、表单提交接口,提交表单时,将文件的id和表单信息一块提交给后台,实现文件和表单的绑…...
全向广播扬声器在油气田中的关键应用 全方位守护安全
油气田作为高风险作业场所,安全生产始终是重中之重。在紧急情况下,如何快速、有效地传达信息,确保人员安全撤离,是油气田安全管理的关键环节。全向广播扬声器凭借其全方位覆盖、高音质输出和强大的环境适应性,成为油气…...
PHP之运算符
在你有别的编程语言的基础下,你想学习PHP,可能要了解的一些关于运算符的信息。 三元运算符,短径求值,为空判断 echo 1 ? "b" : "c";//第一个为真时返回第一个,为假时返回第二个 echo 1 ?: &qu…...
hive之lag函数
从博客上发现两个面试题,其中有个用到了lag函数。整理学习 LAG 函数是 Hive 中常用的窗口函数,用于访问同一分区内 前一行(或前 N 行)的数据。它在分析时间序列数据、计算相邻记录差异等场景中非常有用。 一、语法 LAG(column,…...
3427. 变长子数组求和
给你一个长度为 n 的整数数组 nums 。对于 每个 下标 i(0 < i < n),定义对应的子数组 nums[start ... i](start max(0, i - nums[i]))。 返回为数组中每个下标定义的子数组中所有元素的总和。 子数组 是数组中…...
RabbitMQ 2025/3/5
高性能异步通信组件。 同步调用 以支付为例: 可见容易发生雪崩。 异步调用 以支付为例: 支付服务当甩手掌柜了,不管后面的几个服务的结果。只管库库发,后面那几个服务想取的时候就取,因为消息代理里可以一直装&#x…...
C#+Halcon 检测稳定性提升的方式
前言 众所周知,C#是一个带垃圾回收机制的语言,开发过程中不需要考虑垃圾回收,你就可劲造吧。但我们在设计图像处理软件时,应时刻对图像等大内存资源进行管控,做到自行管控,及时释放,不应将其交…...
第一个Hadoop程序
编写和运行第一个 Hadoop 程序是学习 Hadoop 的重要步骤。以下是一个经典的“WordCount”程序示例,它统计文本文件中每个单词出现的次数。我们将使用 Java 编写 MapReduce 程序,并在 Hadoop 集群上运行它。 一、WordCount 程序概述 WordCount 是 Hadoo…...
Leetcode 378-有序矩阵中第 K 小的元素
给你一个 n x n 矩阵 matrix ,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。 请注意,它是 排序后 的第 k 小元素,而不是第 k 个 不同 的元素。 你必须找到一个内存复杂度优于 O(n2) 的解决方案。 示例 1࿱…...
python之爬虫入门实例
链家二手房数据抓取与Excel存储 目录 开发环境准备爬虫流程分析核心代码实现关键命令详解进阶优化方案注意事项与扩展 一、开发环境准备 1.1 必要组件安装 # 安装核心库 pip install requests beautifulsoup4 openpyxl pandas# 各库作用说明: - requests&#x…...
第一个 C++ 程序
文章目录 “Hello, World!” 程序代码示例程序基本结构详细解释头文件(#include <iostream>)命名空间(std)主函数(int main())输出语句(std::cout << "Hello, World!" &l…...
深度学习篇---不同框架下的图像通道
文章目录 前言一、核心概念NCHWNHWCCHW 二、主流框架的通道顺序1.PyTorch默认格式特点调整方法 2.TensorFlow默认格式特点调整方法 3.Keras默认格式特点 4.PaddlePaddle默认格式特点调整方法 5.MXNet默认格式调整方法 6.ONNX默认格式特点 三、通道顺序的影响性能差异NCHWNHWC 框…...
在 C++ 中,通常会使用 `#define` 来定义宏,并通过这种方式发出警告或提示。
在 C++ 中,通常会使用 #define 来定义宏,并通过这种方式发出警告或提示。 如何实现 GBB_DEPRECATED_MSG 宏: 你可以通过以下方式定义一个宏,显示弃用警告: #include <iostream>// 定义一个宏,用来打印弃用警告 #define GBB_DEPRECATED_MSG(msg...
10x Research:Secured Finance 基于 FIL 的美元稳定币如何推动 Filecoin 生态系统发展
“众多与 Filecoin 数据进行互动的参与者,将从全新灵活性与金融化的体系中受益。” 在 10X Research 的最新研究内容中,揭示了在 Filecoin 生态系统内推出以美元计价的稳定币为用户带来的巨大增益。 Filecoin 是 Web3 中增长最快的平台之一,…...
解决Spring Boot中LocalDateTime返回前端数据为数组结构的问题
在Spring Boot开发中,处理日期时间数据是一个常见的需求。Java 8 引入了新的日期时间API,如LocalDateTime,它提供了更强大的日期时间处理功能。然而,在将LocalDateTime对象序列化为JSON时,可能会遇到返回为数组结构的问…...
【Linux】进程间通信 续
目录 管道的原理(匿名管道) 核心原理 站在内核的角度看管道的本质 接口 创建管道文件 代码示例 管道的特征 管道读写端的四种情况 管道的应用场景 命令行的管道。 使用管道实现进程池 初始化 控制子进程 退出 命名管道 命名管道的理解 …...
心率提取,FFT
rPPG 信号提取: 从面部视频中提取 rPPG 信号,通常是通过对视频帧中的面部区域进行颜色通道分析,提取出反映血液容积变化的信号。 信号预处理: 对提取的 rPPG 信号进行滤波、归一化等预处理操作,以去除噪声和干扰。 心率…...
Data truncation: Out of range value for column ‘allow_invite‘ at row 1
由于前端传递的数值超过了mysql数据库中tinyint类型的取值范围,所以就会报错。 Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Out of range value for column allow_invite at row 1at com.mysql.cj.jdbc.exceptions.SQLExcept…...
ZYNQ-PL学习实践(二)按键和定时器控制LED闪烁灯
ZYNQ-PL学习实践(二)按键和定时器控制LED闪烁灯) 1 创建工程2 verilog 代码3 约束4 综合5 生成bit总结 1 创建工程 2 verilog 代码 添加key_led.v 文件, module key_led(input sys_clk , //系统时钟50MHzinput …...
【CXX】4.4 其他构建系统
你需要至少完成以下三件事: 生成CXX生成的C绑定代码。 编译生成的C代码。 将生成的目标文件与你的其他C和Rust目标文件链接在一起。 并非所有构建系统都是平等的。如果你希望使用90年代的构建系统,尤其是如果你希望覆盖2个或更多构建系统(…...
windows 上删除 node_modules
在 Windows 11 上,你可以通过命令行来删除 node_modules 文件夹并清除 npm 缓存。以下是具体步骤: 删除 node_modules 打开命令提示符(Command Prompt)或终端(PowerShell)。 导航到项目目录。你可以使用 …...
mysql之如何获知版本
你可以通过在 MySQL 命令行客户端执行简单的 SQL 查询来获取 MySQL 的版本信息。以下是获取 MySQL 版本的常见方法: 使用 SELECT VERSION(); 查询: SELECT VERSION();执行这个查询后,MySQL 会返回一个字符串,其中包含了 MySQL 服…...
PHP 将图片url,写入到文件夹中,导出到zip下载到桌面
一:将图片写入到文件内 文件url:比如 【https://image.baidu.com/search/detail?ct503316480&z0&ipnfalse&word%E5%9B%BE%E7%89%87%E5%A4%B4%E5%83%8F&hs0&pn1&spn0&di7466852183703552001&pi0&rn1&tnbaiduima…...
系统架构设计师—计算机基础篇—文件管理
文章目录 文件结构逻辑结构物理结构文件的索引直接索引间接索引做题的方法 文件存储空间管理位示图 文件结构 文件的结构是指文件的组织形式。 逻辑结构 从用户角度看到的文件的组织形式。 用户知道文件名就可以存取文件中的信息。 物理结构 文件在文件存储器上的存放方式…...
【MySQL】用MySQL二进制包构建docker镜像
一、实验背景 【MySQL&docker】基于CentOS7.5 编译制作MySQL5.7.28镜像 https://www.jianshu.com/p/71fd79b69a6b 用MySQL源码编译的docker镜像,体积过大,直奔3G了,你也不清楚,这点编译参数打出的体积怎么就这么大!…...
C++ std::vector 超详细指南:基础实践(手搓vector)
目录 一.基本概念 二.类的常用接口说明 1.类对象的常见构造 2. vector类空间变化 1).size()(获取数据个数) 2).capacity()(获取容量大小) 3).empty()(判断是否为空࿰…...