React Native学习笔记(三)

一 组件简介

1.1 简介

RN中的核心组件,是对原生组件的封装

  • 原生组件:Android或ios内的组件
  • 核心组件:RN中常用的,来自react-native的组件
    在这里插入图片描述
    在这里插入图片描述
    原生组件
    在 Android 开发中是使用 Kotlin 或 Java 来编写视图;在 iOS 开发中是使用 Swift 或 Objective-C 来编写视图。在 React Native 中,则使用 React 组件通过 JavaScript 来调用这些视图。在运行时,React Native 为这些组件创建相应的 Android 和 iOS 视图。由于 React Native 组件就是对原生视图的封装,因此使用 React Native 编写的应用外观、感觉和性能与其他任何原生应用一样。我们将这些平台支持的组件称为原生组件。

核心组件
官网的核心主键,React Native 具有许多核心组件,从表单控件到活动指示器,应有尽有。将主要使用以下核心组件:

在这里插入图片描述
这是参考的核心组件有:
在这里插入图片描述
官网的案例

/* eslint-disable prettier/prettier */
import React, { Component } from 'react';
import { Text, StyleSheet, View , Image, ScrollView, TextInput} from 'react-native';export default class CoreComponent  extends Component {render() {return (<ScrollView><Text>Some text</Text><View><Text>Some more text</Text><Imagesource={{uri: 'https://reactnative.dev/docs/assets/p_cat2.png',}}// eslint-disable-next-line react-native/no-inline-stylesstyle={{ width: 200, height: 200 }}/></View><TextInput// eslint-disable-next-line react-native/no-inline-stylesstyle={{height: 40,borderColor: 'gray',borderWidth: 1,}}defaultValue="You can type in me"/></ScrollView>);}
}// eslint-disable-next-line @typescript-eslint/no-unused-vars
const styles = StyleSheet.create({});

效果:

在这里插入图片描述

Alert和Button

Button是一个简单的跨平台的按钮组件。下面是一个最简示例:

AlertAndButton.tsx/* eslint-disable prettier/prettier */
/* eslint-disable quotes */
/* eslint-disable prettier/prettier */
import React, {Component} from 'react';
import {Alert, StyleSheet, View,Button} from 'react-native';export default class AlertAndButton extends Component {// onPress是处理触摸事件createTwoButton = ()=>{Alert.alert("警告标题","警告内容",[{text:"取消",onPress:()=>console.log("Cancel"),style:'cancel',},{text:"确认",onPress:()=>console.log("OK"),style:'default',},]);};createThreeButton = ()=>{Alert.alert("更新提示","发现新版本,是否现在更新",[{text:"取消",onPress:()=>console.log("Cancel"),style:'cancel',},{text:"确认",onPress:()=>console.log("OK"),style:'default',},{text:"稍后再试",onPress:()=>console.log("稍后提醒我"),},]);};render() {return (<View style={[styles.container]}><ButtononPress={() => {Alert.alert('你点击了按钮!');}}title="点我!"/><ButtononPress={this.createTwoButton}title="两个按钮"color={'green'}/><ButtononPress={this.createThreeButton}title="三个按钮"color={'pink'}/></View>);}
}
const styles = StyleSheet.create({container: {flex:1,justifyContent: 'space-around',alignItems: 'center',},
});

上面这段代码会在 iOS 上渲染一个蓝色的标签状按钮,在 Android 上则会渲染一个蓝色圆角矩形带白字的按钮。点击这个按钮会调用"onPress"函数,具体作用就是显示一个 alert 弹出框。你还可以指定"color"属性来修改按钮的颜色。

运行效果:点击按钮弹出提示框

在这里插入图片描述
再试试下面这个使用Button的例子吧。你可以点击"Tap to Play"来预览真实效果

import React, { Component } from 'react';
import { Alert, Button, StyleSheet, View } from 'react-native';export default class ButtonBasics extends Component {_onPressButton() {Alert.alert('You tapped the button!')}render() {return (<View style={styles.container}><View style={styles.buttonContainer}><ButtononPress={this._onPressButton}title="Press Me"/></View><View style={styles.buttonContainer}><ButtononPress={this._onPressButton}title="Press Me"color="#841584"/></View><View style={styles.alternativeLayoutButtonContainer}><ButtononPress={this._onPressButton}title="This looks great!"/><ButtononPress={this._onPressButton}title="OK!"color="#841584"/></View></View>);}
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',},buttonContainer: {margin: 20},alternativeLayoutButtonContainer: {margin: 20,flexDirection: 'row',justifyContent: 'space-between'}
})

运行效果:

在这里插入图片描述
Switch和StatuBas

/* eslint-disable prettier/prettier */
import React, { Component } from 'react';
import { StatusBar, StyleSheet, Switch, View } from 'react-native';export default class SwitchAndStatuBar extends Component<any,any> {constructor(props:any){super(props);this.state = {hideStatusBar:false,};}render() {return (<View style={[styles.container]}><StatusBarhidden={this.state.hideStatusBar} //是否显示顶部backgroundColor="blue" //仅在Android应用下有效barStyle={'dark-content'}<br>         //用于设置状态栏文字的颜色,其值是枚举类型enum(‘default’, ‘light-content’, ‘dark-content’):<br>         //default:黑色文字(默认)<br>         //light-content:白色文字<br>         //dark-content: 暗色文字/><br>      //开关组件<SwitchtrackColor={{false:'red',true:'green'}}thumbColor={this.state.hideStatusBar ? 'red' : 'white'}value={this.state.hideStatusBar}<br>      //选中事件onValueChange={()=>{this.setState({hideStatusBar:!this.state.hideStatusBar});}}/></View>);}
}const styles = StyleSheet.create({container:{flex:1,justifyContent:'center',alignItems:'center',},
});

运行效果:
在这里插入图片描述

ActivityIndicator

ActivityIndicator的效果类似我们平时看到了loading,在android中ActivityIndicator是progressBar 的Indeterminate(false)模式,说白了就是一个半圆转啊转。

具体属性:
1、ViewPropTypes props… :包含View控件的所有属性,具体咱们看View的属性解释。
2、animating:是否显示,默认true(显示)
3、color: 指示器的颜色, ios默认为gray(#999999),android 默认使用progressBar的系统样式,取决于你设置的style。
4、size: 表示大小,可以设置的值有:
‘small’: 宽高各20
‘large’: 宽高各36
5、hidesWhenStopped:此属性只在ios生效,当停止动画的时候,是否隐藏。默认为true。

ActivityIndicatorDemo.tsx

import React, {Component} from 'react';import {StyleSheet,View,Text,ActivityIndicator,} from 'react-native';export default class ActivityIndicatorDemo extends Component {render() {return (<View style={{flex:1}}><View style={{flexDirection:'row'}}><Text>全部默认:</Text><ActivityIndicator /></View><View style={{flexDirection:'row'}}><Text>添加背景色:</Text><ActivityIndicator style={{backgroundColor:'blue'}}/></View><View style={{flexDirection:'row'}}><Text>animating=false (隐藏):</Text><ActivityIndicator animating={false}/></View><View style={{flexDirection:'row'}}><Text>设置color:</Text><ActivityIndicator color='red'/></View><View style={{flexDirection:'row'}}><Text>size small:</Text><ActivityIndicator size="small"/><Text>size large:</Text><ActivityIndicator size="large"/></View><View style={{flexDirection:'row'}}><Text>view props属性设置:</Text><ActivityIndicator style={{height:100,width:80,backgroundColor:'black'}} /></View></View>);}}

运行效果:

在这里插入图片描述

Image图片加载
1、source图片路径
ImageDemo.tsx

/* eslint-disable prettier/prettier */
import React, {Component} from 'react';
import {View, Image, StyleSheet, Dimensions} from 'react-native';export default class ImageDemo extends Component {render() {return (<View style={[styles.container]}><Image style={[styles.items]} source={require('./images/logo.jpg')} /><Imagestyle={styles.tinyLogo}source={{uri: 'https://reactnative.dev/img/tiny_logo.png'}}/><Imagestyle={styles.logo}source={{uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAEXRFWHRTb2Z0d2FyZQBwbmdjcnVzaEB1SfMAAABQSURBVGje7dSxCQBACARB+2/ab8BEeQNhFi6WSYzYLYudDQYGBgYGBgYGBgYGBgYGBgZmcvDqYGBgmhivGQYGBgYGBgYGBgYGBgYGBgbmQw+P/eMrC5UTVAAAAABJRU5ErkJggg==',}}/></View>);}
}const styles = StyleSheet.create({container: {flex: 1,justifyContent: 'center',alignItems: 'center',},items:{height:200,width:Dimensions.get('window').width,},tinyLogo: {width: 50,height: 50,},logo: {width: 66,height: 58,},
});

运行效果:

在这里插入图片描述

TextInput

TextInputDemo.tsx
/* eslint-disable prettier/prettier */
import React, {Component} from 'react';
import {StyleSheet,View,TextInput,Dimensions,Button,Alert,
} from 'react-native';export default class TextInputDemo extends Component<any, any> {constructor(props: any) {super(props);this.state = {username: '',password: '',};}doLogin = () => {Alert.alert(this.state.username);};render() {return (<View style={[styles.containers]}><TextInputvalue={this.state.username}style={[styles.input]}placeholder="请输入用户名"onChangeText={_val => {this.setState({username: _val});}}/><TextInputstyle={[styles.input]}placeholder="请输入密码"value={this.state.password}//保护密码secureTextEntry={true}onChangeText={_val => {this.setState({password: _val});}}/><TextInputstyle={[styles.input]}placeholder="请输入手机号"//数字键盘keyboardType="number-pad"/><TextInputstyle={[styles.input]}placeholder="文本域"multiline={true}numberOfLines={5}textAlignVertical="top"/><View><Button title="登录" onPress={this.doLogin} /></View></View>);}
}const styles = StyleSheet.create({containers: {flex: 1,justifyContent: 'center',},input: {width: Dimensions.get('window').width - 20,margin: 10,borderWidth: 1,borderColor: 'red',paddingHorizontal: 5,},
});

运行效果:
在这里插入图片描述

Touchable组件

  • TouchableHighlight:触碰后,高亮显示
  • TouchableOpacity:触碰后,透明度降低(模糊显示)
  • TouchaleWithoutFeedback:触碰后,无影响
/* eslint-disable prettier/prettier */
import React, { Component } from 'react';
import { Text, StyleSheet, View, TouchableHighlight, Alert, TouchableOpacity, TouchableWithoutFeedback } from 'react-native';export default class TouchaleDemo extends Component {render() {return (<View style={[styles.container]}><TouchableHighlight onPress={()=>{Alert.alert('触碰高亮显示');}} ><View><Text style={[styles.item]}> 触碰高亮 </Text></View></TouchableHighlight><TouchableOpacity onPress={()=>{Alert.alert('触碰透明的变化');}}><View><Text style={[styles.item]}> 触碰透明的变化 </Text></View></TouchableOpacity><TouchableWithoutFeedback onPress={()=>{Alert.alert('触碰无效');}}><View><Text style={[styles.item]}> 触碰无效 </Text></View></TouchableWithoutFeedback></View>);}
}const styles = StyleSheet.create({container:{flex:1,justifyContent:'center',alignItems:'center',},item:{marginBottom:20,padding:10,borderWidth:1,borderColor:'red',},
});

运行效果:

在这里插入图片描述

ScrollView和SafeAreaView

ScrollView是一个通用的可滚动的容器,你可以在其中放入多个组件和视图,而且这些组件并不需要是同类型的。ScrollView不仅可以垂直滚动(默认),还能水平滚动(通过horizontal属性来设置)。

ScrollView常用属性:

horizontal(布尔值):当此属性为true的时候,所有的的子视图会在水平方向上排成一行,而不是默认的在垂直方向上排成一列。默认值为false。

showsHorizontalScrollIndicator(布尔值):当此属性为true的时候,显示一个水平方向的滚动条。

showsVerticalScrollIndicator(布尔值):与showsHorizontalScrollIndicator相对,当此属性为true的时候,显示一个垂直方向的滚动条。

OnMomentumScrollEnd(function) :当一帧滚动完毕的时候调用,e.nativeEvent.contentOffset,可以用来获取偏移量。

onScrollBeginDrag(function) :当开始手动拖拽的时候调用。

onScrollEndDrag(function) :当结束手动拖拽的时候调用。

onScroll(function) :在滚动的过程中,每帧最多调用一次此回调函数。调用的频率可以用scrollEventThrottle属性来控制。

/* eslint-disable prettier/prettier */
import React, {Component} from 'react';
import {Text,StyleSheet,SafeAreaView,ScrollView,StatusBar,View,Platform,
} from 'react-native';export default class ScrollViewDemo extends Component {render() {return (<SafeAreaView><ScrollView horizontal={true}><Text style={[styles.nav]}>新闻</Text><Text style={[styles.nav]}>娱乐</Text><Text style={[styles.nav]}>体育</Text><Text style={[styles.nav]}>财经</Text><Text style={[styles.nav]}>军事</Text><Text style={[styles.nav]}>新闻</Text><Text style={[styles.nav]}>时尚</Text><Text style={[styles.nav]}>科技</Text></ScrollView><ScrollViewstyle={styles.scrollView}//隐藏滚动条showsVerticalScrollIndicator={false}><Text style={styles.text}>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Utenim ad minim veniam, quis nostrud exercitation ullamco laborisnisi ut aliquip ex ea commodo consequat. Duis aute irure dolor inreprehenderit in voluptate velit esse cillum dolore eu fugiatnulla pariatur. Excepteur sint occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum.</Text><View style={{height:Platform.OS === 'ios' ? 0 : 100}} /></ScrollView></SafeAreaView>);}
}const styles = StyleSheet.create({container: {flex: 1,paddingTop: StatusBar.currentHeight,},scrollView: {backgroundColor: 'pink',marginHorizontal: 20,},text: {fontSize: 42,},nav: {margin: 10,height: 50,fontSize: 30,},
});

运行效果:有滚动效果

在这里插入图片描述

SectionList
用于呈现分区列表的高性能界面,支持最方便的功能:

  • 完全跨平台。
  • 可配置的可见度回传。
  • 列表标题支持。
  • 列表页脚支持。
  • 项目分隔符支持。
  • 节标题支持。
  • 节分隔符支持。
  • 异构数据和项目呈现支持。
  • 拉动以刷新。
  • 滚动加载。

如果您不需要部分支持并且想要更简单的界面,请使用

官网案例:
SectionListDemo.tsx

/* eslint-disable prettier/prettier */
import React, {Component} from 'react';
import { StyleSheet,Text,View,SafeAreaView,SectionList,StatusBar} from 'react-native';export default class SectionListDemo extends Component {DATA = [{title: 'Main dishes',data: ['Pizza', 'Burger', 'Risotto'],},{title: 'Sides',data: ['French Fries', 'Onion Rings', 'Fried Shrimps'],},{title: 'Drinks',data: ['Water', 'Coke', 'Beer'],},{title: 'Desserts',data: ['Cheese Cake', 'Ice Cream'],},];render() {return (<SafeAreaView style={styles.container}><SectionListsections={this.DATA}keyExtractor={(item, index) => item + index}renderItem={({item}) => (<View style={styles.item}><Text style={styles.title}>{item}</Text></View>)}renderSectionHeader={({section: {title}}) => (<Text style={styles.header}>{title}</Text>)}/></SafeAreaView>);}
}const styles = StyleSheet.create({container: {flex: 1,paddingTop: StatusBar.currentHeight,marginHorizontal: 16,},item: {backgroundColor: '#f9c2ff',padding: 20,marginVertical: 8,},header: {fontSize: 32,backgroundColor: '#fff',},title: {fontSize: 24,},
});

运行效果:

在这里插入图片描述
Animated
Animated库旨在使动画变得流畅,强大并易于构建和维护。Animated侧重于输入和输出之间的声明性关系,以及两者之间的可配置变换,此外还提供了简单的 start/stop方法来控制基于时间的动画执行。

创建动画最基本的工作流程是先创建一个 Animated.Value ,将它连接到动画组件的一个或多个样式属性,然后使用Animated.timing()通过动画效果展示数据的变化:

Animated库旨在使动画变得流畅,强大并易于构建和维护。Animated侧重于输入和输出之间的声明性关系,以及两者之间的可配置变换,此外还提供了简单的 start/stop方法来控制基于时间的动画执行。

创建动画最基本的工作流程是先创建一个 Animated.Value ,将它连接到动画组件的一个或多个样式属性,然后使用Animated.timing()通过动画效果展示数据的变化:

AnimatedDemo.tsx

复制代码
/* eslint-disable prettier/prettier */
import React, {Component} from 'react';
import {Text, StyleSheet, View,Animated,Button} from 'react-native';export default class AnimatedDemo extends Component {// fadeAnim will be used as the value for opacity. Initial Value: 0state = {fadeAnim: new Animated.Value(0),};fadeIn = () => {// Will change fadeAnim value to 1 in 5 secondsAnimated.timing(this.state.fadeAnim, {//目标值toValue: 1,//动画执行的时间duration: 5000,//启动原生方式,渲染动画(执行效率更高)useNativeDriver: true,}).start();};fadeOut = () => {// Will change fadeAnim value to 0 in 5 secondsAnimated.timing(this.state.fadeAnim, {toValue: 0,duration: 5000,useNativeDriver: true,}).start();};render() {return (<View style={styles.container}><Animated.Viewstyle={[styles.fadingContainer,{opacity: this.state.fadeAnim, // Bind opacity to animated value},]}><Text style={styles.fadingText}>Fading View!</Text></Animated.View><View style={styles.buttonRow}>{/* 淡入 */}<Button title="Fade In" onPress={this.fadeIn} />{/* 淡出 */}<Button title="Fade Out" onPress={this.fadeOut} /></View></View>);}
}const styles = StyleSheet.create({container: {flex: 1,alignItems: 'center',justifyContent: 'center',},fadingContainer: {paddingVertical: 8,paddingHorizontal: 16,backgroundColor: 'powderblue',},fadingText: {fontSize: 28,textAlign: 'center',margin: 10,},buttonRow: {flexDirection: 'row',marginVertical: 16,},
});

运行效果:点击FADEIN 有淡出效果,FADEOUT淡出效果
在这里插入图片描述

二 第三方组件

通过命令安装第三的组件

比如如图所示:

2.1 WebView

引入的命令:

yarn add react-native-webview

配置:

https://github.com/react-native-webview/react-native-webview/blob/master/docs/Getting-Started.md

示例:MyWeb.js

/* eslint-disable prettier/prettier */
import React, {Component} from 'react';
import {WebView} from 'react-native-webview';export default class MyWeb extends Component {render() {return (//链接到百度的网址<WebView source={{uri: 'https://baidu.com'}} style={{marginTop: 20}} />);}
}
复制代码
运行效果:回到顶部6.2Picker(下拉框)
引入的命令:yarn add @react-native-picker/picker
配置:https://github.com/react-native-picker/picker
示例:PickerDemo.js复制代码
/* eslint-disable prettier/prettier */
import React, { useState } from 'react';
import { View, Text } from 'react-native';
import {Picker} from '@react-native-picker/picker';
export default function PickerDemo(){const [selectedLanguage, setSelectedLanguage] = useState();return (<View><Picker//下拉框样式mode={'dropdown'}selectedValue={selectedLanguage}onValueChange={(itemValue, itemIndex) =>setSelectedLanguage(itemValue)}><Picker.Item label="Java" value="java" /><Picker.Item label="JavaScript" value="js" /></Picker></View>);
}

运行效果:

在这里插入图片描述

6.2、Picker(下拉框
引入的命令:

yarn add @react-native-picker/picker

配置:

https://github.com/react-native-picker/picker

示例:PickerDemo.js

/* eslint-disable prettier/prettier */
import React, { useState } from 'react';
import { View, Text } from 'react-native';
import {Picker} from '@react-native-picker/picker';
export default function PickerDemo(){const [selectedLanguage, setSelectedLanguage] = useState();return (<View><Picker//下拉框样式mode={'dropdown'}selectedValue={selectedLanguage}onValueChange={(itemValue, itemIndex) =>setSelectedLanguage(itemValue)}><Picker.Item label="Java" value="java" /><Picker.Item label="JavaScript" value="js" /></Picker></View>);
}

6.3、Swiper(轮播效果)

引入的命令:

npm i --save react-native-swiper@next

配置:

https://github.com/leecade/react-native-swiper

示例:SwiperDemo.js

/* eslint-disable prettier/prettier */
import React from 'react';
import {Text, View} from 'react-native';
import Swiper from 'react-native-swiper';var styles = {wrapper: {},slide1: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#9DD6EB',},slide2: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#97CAE5',},slide3: {flex: 1,justifyContent: 'center',alignItems: 'center',backgroundColor: '#92BBD9',},text: {color: '#fff',fontSize: 30,fontWeight: 'bold',},
};export default () => (<Swiper style={styles.wrapper} showsButtons loop={false}><View testID="Hello" style={styles.slide1}><Text style={styles.text}>Hello Swiper</Text></View><View testID="Beautiful" style={styles.slide2}><Text style={styles.text}>Beautiful</Text></View><View testID="Simple" style={styles.slide3}><Text style={styles.text}>And simple</Text></View></Swiper>
);

运行效果:
在这里插入图片描述

6.4、Async Storage

数据存储是开发APP必不可少的一部分,比如页面缓存,从网络上获取数据的本地持久化等,那么在RN中如何进行数据存储呢?RN官方推荐我们在RN中使用AsyncStorage进行数据存储。

  1. 什么是AsyncStorage?
    2.1 特点
    简单的,异步的,持久化的key-value存储系统
    AsyncStorage也是React Native官方推荐的数据存储方式,旨在代替LocalStorage
    2.2 AsyncStorage在ios中存储的两种情况
    如果存储的内容较小,那么AsyncStorage会将存储的内容放在一个序列化的字典中
    如果存储的内容较大,那么AsyncStorage会将存储的内容放在一个单独的文件中
    2.3 AsyncStorage在android中存储也分为两种情况:
    AsyncStorage会将数据存储在RocksDB或者SQLite中,具体存在RocksDB中还是SQLite中这取决于设备支持哪一种存储方式。
  2. 如何使用AsyncStorage?
    引入命令:

import AsyncStorage from ‘@react-native-async-storage/async-storage’
官网路径:

https://react-native-async-storage.github.io/async-storage/docs/usage/
示例:AsyncStroage.js

/* eslint-disable prettier/prettier */
import React, { Component } from 'react';
import { Text, StyleSheet, View, Alert, Button } from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage';export default class AsyncStroage extends Component {storeData (value){try {AsyncStorage.setItem('@storage_Key', value);} catch (e) {// saving errorconsole.log(e);}console.log(value);}getData = async () => {try {const value = await AsyncStorage.getItem('@storage_Key');if (value !== null) {Alert.alert(value);}} catch (e) {// error reading value}};render() {return (<View style={[styles.container]}><Button title="存储" onPress={this.storeData.bind(this,'Hello RN')}/><Button title="获取" onPress={this.getData}/></View>);}
}const styles = StyleSheet.create({container:{flex:1,justifyContent:'center',alignItems:'center',},
});

运行效果:

在这里插入图片描述

点击按钮实现数据的存储,点击获取可以获取你刚刚存储的数据显示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视觉语言动作模型VLA的持续升级:从π0之参考基线Octo到OpenVLA、TinyVLA、DeeR-VLA、3D-VLA

第一部分 VLA模型π0之参考基线Octo 1.1 Octo的提出背景与其整体架构 1.1.1 Octo的提出背景与相关工作 许多研究使用从机器人收集的大量轨迹数据集来训练策略 从早期使用自主数据收集来扩展策略训练的工作[71,48,41,19-Robonet,27,30]到最近探索将现代基于transformer的策略…

C与指针。

目录 1_指针理解 1.1变量的值 1.2变量的地址 1.3指针 1.4取变量的地址 2_分析指针 2.1分析指针变量的要素 2.2根据需求定义指针变量 3_指针的使用 3.1指针对变量的读操作 3.2指针对变量的写操作 4_指针占用空间的大小与位移 4.1指针占用空间的大小 4.2指针的位移…

单片机学习笔记 15. 串口通信(理论)

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

树莓派5+文心一言 -> 智能音箱

一、简介 效果&#xff1a;运行起来后&#xff0c;可以连续对话 硬件&#xff1a;树莓派5、麦克风、音箱&#xff0c;成本500-1000 软件&#xff1a;snowboy作为唤醒词、百度语音作为语音识别、brain作为指令匹配、百度文心一言作为对话模块、微软的edge-tts语音合成... 二…

SAP SD学习笔记17 - 投诉处理3 - Credit/Debit Memo依赖,Credit/Debit Memo

上一章讲了 请求书&#xff08;发票&#xff09;的取消。 SAP SD学习笔记16 - 请求书的取消 - VF11-CSDN博客 再往上几章&#xff0c;讲了下图里面的返品传票&#xff1a; SAP SD学习笔记14 - 投诉处理1 - 返品处理&#xff08;退货处理&#xff09;的流程以及系统实操&#…

Linux服务器使用JupyterLab

一、JupyterLab的配置 1. conda配置 自行搜索conda安装与配置。 2. 环境创建 &#xff08;1&#xff09;创建环境 conda create -n jupyter python3.10&#xff08;2&#xff09;激活环境 conda activate jupyter&#xff08;3&#xff09;安装jupyter包 pip install -i…

Flutter:页面滚动

1、单一页面&#xff0c;没有列表没分页的&#xff0c;推荐使用&#xff1a;SingleChildScrollView() return Scaffold(backgroundColor: Color(0xffF6F6F6),body: SingleChildScrollView(child: _buildView()) );2、列表没分页&#xff0c;如购物车页&#xff0c;每个item之间…

使用GitZip for github插件下载git仓库中的单个文件

背景&#xff1a;git仓库不知道抽什么疯&#xff0c;下载不了单个文件&#xff0c;点击下载没有反应&#xff0c;遂找寻其他方法&#xff0c;在这里简单记录下。 使用GitZip for github插件下载仓库中的单个文件 1、首先在浏览器安装插件&#xff0c;并确保为打开状态。 2、然…

Unet改进57:在不同位置添加SFHF

本文内容:在不同位置添加CBAM注意力机制 论文简介 由于恶劣的大气条件或独特的降解机制,自然图像会遭受各种退化现象。这种多样性使得为各种恢复任务设计一个通用框架具有挑战性。现有的图像恢复方法没有探索不同退化现象之间的共性,而是侧重于在有限的恢复先验下对网络结构…

数据结构(初阶7)---七大排序法(堆排序,快速排序,归并排序,希尔排序,冒泡排序,选择排序,插入排序)(详解)

排序 1.插入排序2.希尔排序3.冒泡排序4.选择排序(双头排序优化版)5.堆排序6.快速排序1). 双指针法2).前后指针法3).非递归法 7.归并排序1).递归版本(递归的回退就是归并)2).非递归版本(迭代版本) 计算机执行的最多的操作之一就有排序&#xff0c;排序是一项极其重要的技能 接下…

DataWhale—PumpkinBook(TASK07支持向量机)

课程开源地址及相关视频链接&#xff1a;&#xff08;当然这里也希望大家支持一下正版西瓜书和南瓜书图书&#xff0c;支持文睿、秦州等等致力于开源生态建设的大佬✿✿ヽ(▽)ノ✿&#xff09; Datawhale-学用 AI,从此开始 【吃瓜教程】《机器学习公式详解》&#xff08;南瓜…

【Python数据分析五十个小案例】使用自然语言处理(NLP)技术分析 Twitter 情感

博客主页&#xff1a;小馒头学python 本文专栏: Python爬虫五十个小案例 专栏简介&#xff1a;分享五十个Python爬虫小案例 项目简介 什么是情感分析 情感分析&#xff08;Sentiment Analysis&#xff09;是文本分析的一部分&#xff0c;旨在识别文本中传递的情感信息&…

【数据结构与算法】排序算法(上)——插入排序与选择排序

文章目录 一、常见的排序算法二、插入排序2.1、直接插入排序2.2、希尔排序( 缩小增量排序 ) 三、选择排序3.1、直接选择排序3.2、堆排序3.2.1、堆排序的代码实现 一、常见的排序算法 常见排序算法中有四大排序算法&#xff0c;第一是插入排序&#xff0c;二是选择排序&#xff…

Educator头歌:离散数学 - 图论

第1关&#xff1a;图的概念 任务描述 本关任务&#xff1a;学习图的基本概念&#xff0c;完成相关练习。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;图的概念。 图的概念 1.一个图G是一个有序三元组G<V,R,ϕ>&#xff0c;其中V是非空顶点集合&am…

oracle RAC各版本集群总结和常用命令汇总

oracle RAC学习 RAC介绍 RAC&#xff1a;高可用集群&#xff0c;负载均衡集群&#xff0c;高性能计算集群 RAC是⼀种⾼可⽤&#xff0c;⾼性能&#xff0c;负载均衡的share-everything的集群 8i:内存融合雏形 内存融合雏形&#xff08;Oracle Parallel Server&#xff09;…

数据资产管理是什么?为什么重要?核心组成部分(分类分级、登记追踪、质量管理、安全合规)、实施方法、未来趋势、战略意义

文章目录 一、引言&#xff1a;数据的新时代二、什么是数据资产管理&#xff1f;2.1 定义2.2 核心功能 三、为什么数据资产管理至关重要&#xff1f;3.1 面对的数据管理挑战 四、数据资产管理的核心组成部分4.1 数据分类与分级4.2 数据资产登记与追踪4.3 数据质量管理4.4 数据安…

C++高阶算法[汇总]

&#xff08;一&#xff09;高精度算法概述 高精度算法是指能够处理超出常规数据类型表示范围的数值的算法。在 C 中&#xff0c;标准数据类型通常有固定的位数和精度限制&#xff0c;而高精度算法可以解决大数运算、金融计算和科学计算等领域的问题。 &#xff08;二&#x…

springboot365高校疫情防控web系统(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;高校疫情防控的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为…

Electron实现打开子窗口加载vue路由指定的组件页面白屏

白屏有两种情况&#xff1a; Vue项目使用的history路由的话就会显示空白&#xff0c;加载不出来路由&#xff0c;也不能跳转路由 这种情况看我上一篇文章Electron vue3 打包之后不能跳转路由-CSDN博客 Electron中已经能正常加载页面跳转路由&#xff0c;但是创建子窗口加载子页…

智能探针技术:实现可视、可知、可诊的主动网络运维策略

网络维护的重要性 网络运维是确保网络系统稳定、高效、安全运行的关键活动。在当今这个高度依赖信息技术的时代&#xff0c;网络运维的重要性不仅体现在技术层面&#xff0c;更关乎到企业运营的方方面面。网络运维具有保障网络的稳定性、提升网络运维性能、降低企业运营成本等…