React Native 全栈开发实战班 -原生功能集成之相机与图片
在移动应用中,相机功能 和 图片选择 是非常常见的需求,用户可以通过相机拍照或从相册中选择图片。React Native 提供了多种方式来实现相机和图片选择功能,包括使用第三方库(如 react-native-image-picker
)和调用原生模块。本章节将详细介绍如何使用 react-native-image-picker
库来实现相机和图片选择功能,包括基本用法、图片处理、权限管理以及自定义相机界面。
2.1 相机与图片选择概述
在移动应用中,相机和图片选择功能主要用于以下场景:
- 用户头像设置: 用户可以通过相机拍照或从相册中选择图片作为头像。
- 图片上传: 用户可以上传图片到服务器,如发布动态、分享照片等。
- 扫描二维码: 通过相机扫描二维码或条形码。
- 图片编辑: 用户可以对图片进行编辑,如裁剪、旋转、添加滤镜等。
React Native 提供了多种方式来实现相机和图片选择功能:
- 第三方库: 如
react-native-image-picker
,react-native-camera
,react-native-image-crop-picker
等,提供了封装好的 API,可以快速实现相机和图片选择功能。 - 原生模块: 可以通过原生代码实现自定义相机和图片选择功能,适用于需要高度定制化的场景。
本章节将重点介绍如何使用 react-native-image-picker
库来实现相机和图片选择功能。
2.2 使用 react-native-image-picker
库
react-native-image-picker
是一个流行的第三方库,用于实现相机和图片选择功能,支持 iOS 和 Android 平台。
2.2.1 安装 react-native-image-picker
npm install react-native-image-picker
链接原生依赖(React Native 0.60 及以上版本自动链接):
cd ios
pod install
cd ..
2.2.2 配置权限
iOS:
在 Info.plist
文件中添加相机和相册权限说明。
<key>NSCameraUsageDescription</key>
<string>需要访问相机以拍摄照片</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>需要访问相册以选择照片</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>需要保存照片到相册</string>
Android:
在 AndroidManifest.xml
文件中添加相机和存储权限。
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
注意: 对于 Android 6.0 及以上版本,还需要在代码中动态请求权限。
2.2.3 基本用法
请求相机或图片选择:
import { launchCamera, launchImageLibrary } from 'react-native-image-picker';const handleChooseImage = () => {const options = {mediaType: 'photo',cameraType: 'back',maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchImageLibrary(options, (response) => {if (response.didCancel) {console.log('用户取消选择图片');} else if (response.errorCode) {console.error('图片选择错误:', response.errorMessage);} else {const asset = response.assets[0];console.log('选择的图片:', asset);// 处理选择的图片}});
};const handleTakePhoto = () => {const options = {mediaType: 'photo',cameraType: 'back',saveToPhotos: true,maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchCamera(options, (response) => {if (response.didCancel) {console.log('用户取消拍照');} else if (response.errorCode) {console.error('拍照错误:', response.errorMessage);} else {const asset = response.assets[0];console.log('拍摄的图片:', asset);// 处理拍摄的图片}});
};
示例:
import React from 'react';
import { View, Button, Image, StyleSheet, Alert } from 'react-native';
import { launchCamera, launchImageLibrary } from 'react-native-image-picker';const CameraExample = () => {const handleTakePhoto = () => {const options = {mediaType: 'photo',cameraType: 'back',saveToPhotos: true,maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchCamera(options, (response) => {if (response.didCancel) {console.log('用户取消拍照');} else if (response.errorCode) {Alert.alert('拍照错误', response.errorMessage);} else {const asset = response.assets[0];console.log('拍摄的图片:', asset);// 处理拍摄的图片}});};const handleChooseImage = () => {const options = {mediaType: 'photo',maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchImageLibrary(options, (response) => {if (response.didCancel) {console.log('用户取消选择图片');} else if (response.errorCode) {Alert.alert('图片选择错误', response.errorMessage);} else {const asset = response.assets[0];console.log('选择的图片:', asset);// 处理选择的图片}});};return (<View style={styles.container}><Button title="拍照" onPress={handleTakePhoto} /><Button title="选择图片" onPress={handleChooseImage} /></View>);
};const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',padding: 20,},
});export default CameraExample;
解释:
launchCamera
方法: 打开相机进行拍照。launchImageLibrary
方法: 打开相册选择图片。options
参数: 配置相机或图片选择选项,如媒体类型、图片尺寸、质量等。- 回调函数: 处理用户取消、错误或选择结果。
2.2.4 处理选择的图片
react-native-image-picker
返回的图片信息包含图片的 URI、宽度、高度、大小等信息。可以使用 react-native-fast-image
或其他图片加载库来显示图片,并根据需要进行后续处理,如上传到服务器或保存到本地。
2.2.4.1 显示选择的图片
以下是如何使用 react-native-fast-image
显示用户选择的图片:
import React from 'react';
import { View, Button, StyleSheet, Alert } from 'react-native';
import { launchCamera, launchImageLibrary } from 'react-native-image-picker';
import FastImage from 'react-native-fast-image';const CameraExample = () => {const [image, setImage] = React.useState(null);const handleTakePhoto = () => {const options = {mediaType: 'photo',cameraType: 'back',saveToPhotos: true,maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchCamera(options, (response) => {if (response.didCancel) {console.log('用户取消拍照');} else if (response.errorCode) {Alert.alert('拍照错误', response.errorMessage);} else {const asset = response.assets[0];console.log('拍摄的图片:', asset);setImage(asset);}});};const handleChooseImage = () => {const options = {mediaType: 'photo',maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchImageLibrary(options, (response) => {if (response.didCancel) {console.log('用户取消选择图片');} else if (response.errorCode) {Alert.alert('图片选择错误', response.errorMessage);} else {const asset = response.assets[0];console.log('选择的图片:', asset);setImage(asset);}});};return (<View style={styles.container}><View style={styles.buttonContainer}><Button title="拍照" onPress={handleTakePhoto} /><Button title="选择图片" onPress={handleChooseImage} /></View>{image && (<View style={styles.imageContainer}><FastImagesource={{ uri: image.uri }}style={styles.image}resizeMode={FastImage.resizeMode.cover}/></View>)}</View>);
};const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',padding: 20,},buttonContainer: {flexDirection: 'row',justifyContent: 'space-around',width: '100%',marginBottom: 20,},imageContainer: {width: 300,height: 300,borderRadius: 10,overflow: 'hidden',marginBottom: 20,},image: {width: '100%',height: '100%',},
});export default CameraExample;
解释:
setImage(asset)
: 将选择的图片信息存储在组件状态中。FastImage
: 使用react-native-fast-image
显示图片,asset.uri
是图片的 URI。resizeMode
: 设置图片的缩放模式,如cover
,contain
,stretch
等。
2.2.4.2 图片上传
用户选择或拍摄图片后,通常需要将图片上传到服务器。以下是如何实现图片上传的示例:
import React from 'react';
import { View, Button, StyleSheet, Alert } from 'react-native';
import { launchCamera, launchImageLibrary } from 'react-native-image-picker';
import axios from 'axios';const CameraExample = () => {const [image, setImage] = React.useState(null);const handleTakePhoto = () => {const options = {mediaType: 'photo',cameraType: 'back',saveToPhotos: true,maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchCamera(options, (response) => {if (response.didCancel) {console.log('用户取消拍照');} else if (response.errorCode) {Alert.alert('拍照错误', response.errorMessage);} else {const asset = response.assets[0];setImage(asset);uploadImage(asset);}});};const handleChooseImage = () => {const options = {mediaType: 'photo',maxWidth: 1080,maxHeight: 1080,quality: 0.8,};launchImageLibrary(options, (response) => {if (response.didCancel) {console.log('用户取消选择图片');} else if (response.errorCode) {Alert.alert('图片选择错误', response.errorMessage);} else {const asset = response.assets[0];setImage(asset);uploadImage(asset);}});};const uploadImage = async (asset) => {const formData = new FormData();formData.append('file', {uri: asset.uri,type: asset.type,name: asset.fileName || 'image.jpg',});try {const response = await axios.post('https://example.com/upload', formData, {headers: {'Content-Type': 'multipart/form-data',},});Alert.alert('上传成功', `图片上传成功,图片ID: ${response.data.id}`);} catch (error) {Alert.alert('上传失败', '图片上传失败,请稍后重试');}};return (<View style={styles.container}><View style={styles.buttonContainer}><Button title="拍照" onPress={handleTakePhoto} /><Button title="选择图片" onPress={handleChooseImage} /></View>{image && (<View style={styles.imageContainer}><FastImagesource={{ uri: image.uri }}style={styles.image}resizeMode={FastImage.resizeMode.cover}/></View>)}</View>);
};const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',padding: 20,},buttonContainer: {flexDirection: 'row',justifyContent: 'space-around',width: '100%',marginBottom: 20,},imageContainer: {width: 300,height: 300,borderRadius: 10,overflow: 'hidden',marginBottom: 20,},image: {width: '100%',height: '100%',},
});export default CameraExample;
解释:
uploadImage
函数: 使用axios
发送 POST 请求,将图片上传到服务器。FormData
: 用于构建 multipart/form-data 请求体。asset.uri
: 图片的 URI,用于上传。asset.type
: 图片的 MIME 类型。asset.fileName
: 图片的文件名,如果未提供,则使用默认名称。
2.2.4.3 图片保存到相册
用户拍摄或选择的图片可以保存到相册中。
示例:
import { writeToFile, copyFile, saveToLibrary } from 'react-native-image-picker';const saveImageToAlbum = async (asset) => {try {const result = await saveToLibrary(asset.uri);Alert.alert('保存成功', '图片已保存到相册');} catch (error) {Alert.alert('保存失败', '图片保存到相册失败');}
};
作者简介
前腾讯电子签的前端负责人,现 whentimes tech CTO,专注于前端技术的大咖一枚!一路走来,从小屏到大屏,从 Web 到移动,什么前端难题都见过。热衷于用技术打磨产品,带领团队把复杂的事情做到极简,体验做到极致。喜欢探索新技术,也爱分享一些实战经验,帮助大家少走弯路!
温馨提示:可搜老码小张公号联系导师
相关文章:
React Native 全栈开发实战班 -原生功能集成之相机与图片
在移动应用中,相机功能 和 图片选择 是非常常见的需求,用户可以通过相机拍照或从相册中选择图片。React Native 提供了多种方式来实现相机和图片选择功能,包括使用第三方库(如 react-native-image-picker)和调用原生模…...
以太坊交易处理全流程:数据采集、价格查询与问题解决
一、背景 在开发交易记录处理系统时,涉及从以太坊链上获取交易记录、将其存储到数据库、根据交易时间查询历史价格,并计算交易的美元价值。在这一过程中,涉及多个技术环节及工具的综合使用,例如区块链 API 调用、数据库操作、时间戳处理和外部数据接口整合。 本文涉及的内…...
css数据不固定情况下,循环加不同背景颜色
<template><div><p v-for"(item, index) in items" :key"index" :class"getBackgroundClass(index)">{{ item }}</p></div> </template><script> export default {data() {return {items: [学不会1, …...
【Node.js】Node.js 和浏览器之间的差异
Node.js 是一个强大的运行时环境,它在现代 JavaScript 开发中扮演着重要角色。然而,许多开发者在使用 Node.js 时常常会感到困惑,尤其是与浏览器环境的对比。本文将深入探讨 Node.js 和浏览器之间的差异,帮助你全面理解两者的设计…...
算法【最长递增子序列问题与扩展】
本文讲解最长递增子序列以及最长不下降子序列的最优解,以及一些扩展题目。本文中讲述的是最优解,时间复杂度是O(n*logn),空间复杂度O(n),好实现、理解难度不大。这个问题也可以用线段树来求解,时间和空间复杂度和本节讲…...
【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击
基本信息 原文标题:ROBUSTKV: DEFENDING LARGE LANGUAGE MODELS AGAINST JAILBREAK ATTACKS VIA KV EVICTION 原文作者:Tanqiu Jiang, Zian Wang, Jiacheng Liang, Changjiang Li, Yuhui Wang, Ting Wang 作者单位:Stony Brook University…...
查询Mysql中被锁住的表以及如何解锁
当MySQL中的表被锁住时,可能会导致查询变慢或完全无法访问该表。处理这种情况的方法取决于锁的原因以及你想要达到的目标。以下是一些常见的步骤和技巧,可以帮助你解决被锁住的表的问题: 1. 识别锁的情况 首先,你需要确定哪些表…...
【Mac】未能完成该操作 Unable to locate a Java Runtime
重生之我做完产品经理之后回来学习Data Mining Mac打开weka.jar报错"未能完成该操作 Unable to locate a Java Runtime" 1. 打开终端执行 java -version 指令,原来是没安装 JDK 环境 yyzccnn-mac ~ % java -version The operation couldn’t be comple…...
RT_Thread内核源码分析(三)——线程
目录 1. 线程结构 2. 线程创建 2.1 静态线程创建 2.2 动态线程创建 2.3 源码分析 2.4 线程内存结构 3. 线程状态 3.1 线程状态分类 3.2 就绪状态和运行态 3.3 阻塞/挂起状态 3.3.1 阻塞工况 3.4 关闭状态 3.4.1 线程关闭接口 3.4.2 静态线程关闭 3.4.3 动态线程关…...
淘宝 NPM 镜像源
npm i vant/weapp -S --production npm config set registry https://registry.npmmirror.com 要在淘宝 NPM 镜像站下载项目或依赖,你可以按照以下步骤操作: 1. 设置淘宝 NPM 镜像源 首先,你需要设置淘宝 NPM 镜像源以加速下载。可以通过…...
机器学习—学习曲线
学习曲线是帮助理解学习算法如何工作的一种方法,作为它所拥有的经验的函数。 绘制一个符合二阶模型的学习曲线,多项式或二次函数,画出交叉验证错误Jcv,以及Jtrain训练错误,所以在这个曲线中,横轴将是Mtrai…...
Rust 智能指针
Rust 智能指针 引言 Rust 是一种系统编程语言,以其内存安全性、并发性和高性能而闻名。Rust 的核心特性之一是其独特的所有权模型,它确保了内存安全,同时避免了垃圾收集。在 Rust 中,智能指针是一种特殊的数据结构,它们不仅存储数据,还负责管理数据的生命周期。智能指针…...
云原生周刊:Kubernetes v1.32 要来了
开源项目推荐 Woodpecker Woodpecker 是一款轻量级且功能强大的 CI/CD 引擎,以其高度可扩展性和易用性著称。它支持多种版本控制系统与编程语言,能够灵活适配不同开发流程,帮助团队实现高效的持续集成与交付。无论是个人项目还是大型团队&a…...
Easyexcel(3-文件导出)
相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出) 响应头设置 通过设置文件导出的响应头,可以自定义文件导出的名字信息等 //编码格式为UTF-8 response.setC…...
php:使用socket函数创建WebSocket服务
一、前言 闲来无事,最近捣鼓了下websocket,但是不希望安装第三方类库,所以打算用socket基础函数创建个服务。 二、构建websocket服务端 <?phpclass SocketService {// 默认的监听地址和端口private $address 0.0.0.0;private $port 8…...
ubuntu20.04中编译安装gcc 9.2.0
ubuntu20.04中编译安装gcc 9.2.0,步骤如下: #install compile dependence libraries 1:$ sudo apt install libgmp-dev libisl-dev libmpc-dev libmpfr-dev # install gcc 9.2.0 # download source code 2:$ wget http://ftp.gnu.org/gn…...
ssm158企业人事管理系统的设计与实现+jsp(论文+源码)_kaic
设计题目:企业人事管理系统的设计与实现 摘 要 进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据…...
OceanBase数据库产品与工具介绍
OceanBase:蚂蚁集团自主研发的分布式关系数据库 1、什么是 OceanBase? OceanBase 是由蚂蚁集团完全自主研发的企业级分布式关系数据库,始创于 2010 年。它具有以下核心特点: 数据强一致性:在分布式架构下确保数据强…...
PakePlus将任何网页免费打包为mac/windows跨平台软件程序教程,只需要一个Github token就可以了
PakePlus是一个开源免费的软件,支持 Mac、Windows 和 Linux,很快也将支持 Android 和 iOS。无需在本地安装复杂的依赖环境,只需要一个Github Token就可以了。查看 README 以获取热门包和自定义开发信息。欢迎在讨论区分享你的建议。开源地址&…...
Element UI 组件库详解【Vue】
文章目录 一、引言二、安装并使用1. 安装2. 使用 三、常见组件说明1. 基础组件2. 布局组件3. 布局容器4. 选择框组件5. 输入框组件6. 下拉框组件7. 日期选择器8. 上传组件9. 表单组件10. 警告组件11. 提示组件12. 表格组件 一、引言 官方网站,element.eleme.cn El…...
Android kotlin之配置kapt编译器插件
配置项目目录下的gradle/libs.versions.toml文件,添加kapt配置项: 在模块目录下build.gradle.kt中增加 plugins {alias(libs.plugins.android.application)alias(libs.plugins.jetbrains.kotlin.android)// 增加该行alias(libs.plugins.jetbrains.kotl…...
基于 MUSA 的大语言模型推理和服务框架vLLM
1. 引言 vLLM是一个高性能且内存高效的大语言模型推理和服务框架,也是当前业界使用范围最广的大模型推理框架,截至目前github star数28.4k。该框架性能优秀,而且部署容易,使用CUDA/ROCm提供GPU加速能力。但vLLM目前不支持使用摩…...
k8s 集群安装
安装rockylinux https://www.jianshu.com/p/a5fe20318b8e https://www.cnblogs.com/haoee/p/18290506 配置VirtualBox双网卡 https://www.cnblogs.com/ShineLeBlog/p/17580311.html https://zhuanlan.zhihu.com/p/341328334 https://blog.csdn.net/qq_36544785/article/deta…...
Linux-服务器辨别实体机OR虚拟机
快速命令 ① lscpu(查看CPU信息) lscpu Hypervisor vendor: KVM (超管理器厂商:KVM。虚拟机:KVM / VMware) Virtualization: VT-x(虚拟化:VT-x。实体机:VT-x / AMD-V) ② systemd-detect-virt(检测当前系…...
堤防安全监测系统方案
一、背景情况 堤防是开发利用水资源和防治水灾害的重要工程措施之一,对防洪、供水、生态、发电、航运等至关重要。我国现有堤防9.8万多座,其中大中型堤防4700多座、小型堤防9.4万座,80%以上修建于上世纪50至70年代。由于堤防管护力量薄弱&am…...
Leetcode 求根节点到叶节点数字之和
使用深度优先搜索 DFS 来做 我提供的代码使用的是 深度优先搜索(DFS,Depth-First Search) 算法。以下是具体的算法思想和实现步骤的解释: 算法思想 树的路径代表数字: 树中每条从根节点到叶子节点的路径可以看作一个整…...
Git分布式版本控制系统
1. 版本控制系统 版本控制系统主要分为两类:集中式、分布式。 集中式:SVM(工作流程:所有的文件都保存在中央服务器上,每个电脑上只保存了一个副本,当需要修改时,先下载中央服务器上的最新版本文件…...
数据库审计工具--Yearning 3.1.9普民的使用指南
1 页面登录 登录地址:18000 (不要勾选LDAP) 2 修改用户密码 3 DML/DDL工单申请及审批 工单申请 根据需要选择【DML/DDL/查询】中的一种进行工单申请 填写工单信息提交SQL检测报错修改sql语句重新进行SQL检测,如检测失败可以进行SQL美化后…...
VMware Workstation 17.6.1
概述 目前 VMware Workstation Pro 发布了最新版 v17.6.1: 本月11号官宣:针对所有人免费提供,包括商业、教育和个人用户。 使用说明 软件安装 获取安装包后,双击默认安装即可: 一路单击下一步按钮: 等待…...
unity 中 RectTransform 的常用几个属性
RectTransform rectTransform this.GetComponent<RectTransform>(); rectTransform this.transform as RectTransform; Vector3 vector1 rectTransform.position; //自身轴心点相对于锚点的位置(编译器显示的pos) …...
23种设计模式-模板方法(Template Method)设计模式
文章目录 一.什么是模板方法模式?二.模板方法模式的特点三.模板方法模式的结构四.模板方法模式的应用场景五.模板方法模式的优缺点六.模板方法模式的C实现七.模板方法模式的JAVA实现八.代码解析九.总结 类图: 模板方法设计模式类图 一.什么是模板方法模…...
网络安全之国际主流网络安全架构模型
目前,国际主流的网络安全架构模型主要有: ● 信息技术咨询公司Gartner的ASA(Adaptive Security Architecture自适应安全架构) ● 美国政府资助的非营利研究机构MITRE的ATT&CK(Adversarial Tactics Techniques &…...
SpringCloud多机部署,负载均衡-LoadBalance
一.负载均衡 1.1问题描述 //根据应用名称获取服务列表 List<ServiceInstance> instancesdiscoveryClient.getInstances("product-service"); //一个微服务可能有多个实例,获取第一个 EurekaServiceInstance instance(EurekaServiceInstance)insta…...
前端开发调试之 PC 端调试学习笔记
一、引言 在前端开发过程中,调试是至关重要的一个环节。它能帮助我们快速定位代码中的问题,无论是页面布局错乱、交互效果异常还是性能不佳等情况,通过有效的调试手段都可以找到根源并进行修复。而在 PC 端进行调试有着其特定的方法和技巧&am…...
视频流媒体播放器EasyPlayer.js无插件直播流媒体音视频播放器Android端webview全屏调用无效问题
流媒体播放器的核心技术与发展趋势正在不断推动着行业的变革。未来,随着技术的不断进步和应用场景的不断拓展,流媒体播放器将为用户带来更加便捷、高效、个性化的观看体验。同时,流媒体播放器也会成为数字娱乐产业的重要组成部分,…...
使用 cnpm 安装 Electron,才是正确快速的方法
当然,下面是总结的几种安装 Electron 的方法,包括使用 npm 和 cnpm,以及一些常见的问题解决技巧。 ### 1. 使用 npm 安装 Electron #### 步骤 1: 初始化项目 在你的项目目录中初始化一个新的 Node.js 项目: bash npm init -y …...
pytest日志总结
pytest日志分为两类: 一、终端(控制台)打印的日志 1、指定-s,脚本中print打印出的信息会显示在终端; 2、pytest打印的summary信息,这部分是pytest 的默认输出(例如测试结果PASSED, FAILED, S…...
【Ubuntu24.04】使用服务器
目录 0 背景1 将文件传送到服务器1.1 主机上的虚拟机1.2 另一台独立的计算机(包括上面的虚拟机)1.3 远程文件传输1.3.1 scp2 操作服务器2.1 ssh2.2 Termius2.2.1 下载2.2.2 安装2.2.3 使用2.2.4 小结3 总结0 背景 你是一个开发者,有自己的测试环境:一个Linux服务器(假设是…...
Spark 之 Aggregate
Aggregate 参考链接: https://github.com/PZXWHU/SparkSQL-Kernel-Profiling 完整的聚合查询的关键字包括 group by、 cube、 grouping sets 和 rollup 4 种 。 分组语句 group by 后面可以是一个或多个分组表达式( groupingExpressions )…...
ubuntu没有了有线网络如何修复
今天打开ubuntu之后发现有线网络连接没有了,如下图,此时是修复好之后的,“有线”部分存在,出现问题时是不存在的 此时只需要修改NetworkManager.conf配置文件,将managedfalse更改为managedtrue,保存退出就可以了 sudo…...
2411rust,异步函数
原文 Rust异步工作组很高兴地宣布,在实现在特征中使用异步 fn的目标方面取得了重大进度.将在下周发布稳定的Rust1.75版,会包括特征中支持impl Trait注解和async fn. 稳定化 自从RFC#1522在Rust1.26中稳定下来以来,Rust就允许用户按函数的返回类型(一般叫"RPIT")编…...
解决IDEA报包不存在,但实际存在的问题
前言 最近在把一个亿老项目交割给同事,同事在导入项目运行时遇到IDEA报包不存在,但实际存在的问题,最终通过以下方式解决 现象 在IDEA里启动运行项目,报某个类有问题,引入的包不存在。 点击这个引入的包,可…...
解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题
解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题 Chapter1 解决Ubuntu18.04及以上版本高分辨率下导致字体过小问题Chapter2 windows主机和ubuntu互传文件的4种方法 博文链接:Chapter3 安装好VMware tools后无法复制粘贴文本、拖拽文件的解决办法 Chapter1 解…...
SpringBoot与MongoDB深度整合及应用案例
SpringBoot与MongoDB深度整合及应用案例 在当今快速发展的软件开发领域,NoSQL数据库因其灵活性和可扩展性而变得越来越流行。MongoDB,作为一款领先的NoSQL数据库,以其文档导向的存储模型和强大的查询能力脱颖而出。本文将为您提供一个全方位…...
计算机网络(12)介质访问控制
ok通过前面的学习我们已经知道数据链路层提供的服务有帧封装,物理地址,流量控制,错误控制,访问控制。今天就来记录最后的访问控制。 介质访问控制 (MAC)详解 介质访问控制(Media Access Control,简称 MAC&…...
Axios 响应拦截器与未登录状态的统一处理
目录 前言1. 响应拦截器的作用与应用场景1.1 什么是响应拦截器?1.2 响应拦截器的应用场景 2. 代码解读:响应拦截器中的未登录处理2.1 原始代码分析 3. 完善未登录处理逻辑3.1 未登录状态的用户体验优化3.2 改进后的代码实现 4. 实践中的场景4.1 登录态的…...
【MySQL系列】深入理解MySQL中的存储、排序字符集
前言 在创建数据库时,我们经常会需要填写数据库的所用字符集、排序规则,字符集和排序规则是两个非常重要的概念,它们决定了数据库如何存储和比较字符串数据。在 MySQL 中,常用的存储字符集有 utf8、utf8mb4,而排序字符…...
【ARM Coresight OpenOCD 系列 5.1 -- OpenOCD 无法识别CPUID 问题: xxx is unrecognized】
请阅读【嵌入式开发学习必备专栏】 文章目录 OpenOCD 无法识别CPUID 问题ARM CPUIDCPUID 特性CPUID 寄存器字段OpenOCD 无法识别CPUID 问题 在使用OpenOCD 进行CPU debug的过程中有时会报出 无法识别CPUID的问题,本文将会介绍如何解决这个问题。首先我们来学习下什么是CPUID,…...
YOLOv11融合针对小目标FFCA-YOPLO中的FEM模块及相关改进思路
YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《FFCA-YOLO for Small Object Detection in Remote Sensing Images》 一、 模块介绍 论文链接:https://ieeexplore.ieee.org/document/10…...
【Docker容器】一、一文了解docker
1、什么是docker? 1.1 docker概念 Docker是一种容器化平台,通过使用容器技术,Docker允许开发人员将应用程序和其依赖项打包到一个独立的、可移植的容器中。每个容器具有自己的文件系统、环境变量和资源隔离,从而使应用程序可以在…...