uniapp 知识总结

news2024/9/20 15:45:00

1. uniapp 知识总结

  uni-app是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Harmony、Web(响应式)以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。其实uni-app是微信小程序与vue的结合体,语法基本保持是保持一致,唯一不同的是uni-app中没有div和span标签,如果你已经掌握了vue与微信小程序中的任意一个。

1.1. style标签的lang

  style标签中的scoped属性(作用域)和lang属性的介绍
   什么是CSS预处理器CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。CSS 预处理器为 CSS 增加一些编程的特性,无需考虑浏览器的兼容性问题。CSS预处理语言有SCSS (SASS) 和LESS等等,总之都是用来实现样式的。

<template>
	<view class="content">
		<h1 class="test"><span class="test1"></span></h1>是谁
	</view>
</template>
<style lang="scss">
	.content {
		// content中允许定义下个层级标签或多层级中的样式,不能定义同级标签或者样式
		.test1 {
				background-color: red;
			}
		// h1和 test属于同级则不生效
		h1 {
			.test {
				background-color: red;
			}
		}
	}
	</style>

  scss是css样式增强版定义
  样式中可以嵌套,标签或者class定义

1.2. 视图容器

1.2.1. 组件scroll-view的使用(滚动)

<template>
	<view class="content">
		<!-- 左右上下滑动 -->
		<scroll-view class="scroll" scroll-x="true">
			<image class="item" src="../../static/img/小猫测试.jpeg">
			</image>
			<image class="item" src="../../static/img/小猫测试.jpeg">
			</image>
			<image class="item" src="../../static/img/小猫测试.jpeg">
			</image>
		</scroll-view>
	</view>
</template>
<style lang="scss">
	.content {
		.scroll {
			// scroll标签中内容不换行
			white-space: nowrap;
			.item {
				width: 300rpx;
				height: 200rpx;
				margin-right: 1rpx;
				// 在父级的标签中排列一行,超过父级宽度则在下一行
				display: inline-block;
			}
		}
	}
</style>

1.2.2. 组件swiper的使用(轮播)

<swiper indicator-dots class="swiper">
	<swiper-item>
		<image class="swiper-image" src="/static/img/小猫测试.jpeg" mode="aspectFill"></image>
	</swiper-item>
	<swiper-item>
		<image class="swiper-image" src="/static/img/小猫测试.jpeg" mode="aspectFill"></image>
	</swiper-item>
	<swiper-item>
		<image class="swiper-image" src="/static/img/小猫测试.jpeg" mode="aspectFill"></image>
	</swiper-item>
</swiper>
.swiper {
	height: 300rpx;
	.swiper-image {
		height: 300rpx;
		width: 750rpx;
	}
}

1.3. 媒体组件

1.3.1. 组件image的使用(图片)

<view>
	<image class="image-t" src="/static/img/小猫测试.jpeg" mode="aspectFill"></image>
</view>

在这里插入图片描述

  aspectFill: 始终保持宽或者高全部展示
  当容器image的宽度小于图片宽度时,图片高度完全展示,当容器image的高度小于图片高度时,图片宽度完全展示

.image-t {
	width: 200px;
	// height: 300px;
}

1.4. 路由与页面跳转

1.4.1. navigator

<navigator url="/pages/list/list">跳转到list页面(保留历史页面,左上角有返回按钮)</navigator>
<navigator url="/pages/list/list" open-type="redirect">跳转到list页面,打开新页面,左上角没有返回按钮</navigator>

(1)navigate: 保留历史页面,可以跳转到非 tabBar 的页面的路径
(2)redirect: 不保留历史页面打开新页面,不可跳转到非tabBar页面路径
(3)switchTab: url不能携带参数
(4)reLaunch: url可以携带参数,可以跳转到非 tabBar 的页面的路径但不能带参数

1.4.2. tabBar底部导航配置

{	"tabBar": {
		"color": "#7A7E83",
		"selectedColor": "#3cc51f",
		"borderStyle": "black",
		"backgroundColor": "#ffffff",
		"list": [{
				"pagePath": "pages/index/index",
				"text": "首页"
			},
			{
				"pagePath": "pages/list/list",
				"text": "列表"
			}
		]
	}
}

在这里插入图片描述

1.5. 表单提交

<template>
	<view>
		<form @submit="toSubmmit">
			<view class="name row">
				<input type="text" name="username">
			</view>
			<view class="desc row">
				<textarea name="content"></textarea>
			</view>
			<view class="row">
				<radio-group name="gender">
					<label>
						<radio value="1" /><text></text>
					</label>
					<label>
						<radio value="0" /><text></text>
					</label>
					<label>
						<radio value="2" checked /><text>保密</text>
					</label>
				</radio-group>
			</view>
			<view class="row">
				<picker :range="options" name="address" :value="selectedAddress" @change="selectedName">
					地址: {{options[selectedAddress]}}
				</picker>
			</view>
			<view class="row">
				<button form-type="submit" type="primary">提交表单</button>

				<button form-type="reset">重置表单</button>
			</view>
			{{form}}
		</form>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				form: null,
				options: ['北京', '上海', '广州', '深圳'],
				selectedAddress: 2
			}
		},
		methods: {
			toSubmmit(e) {
				console.log(e.detail.value);
				this.form = e.detail.value
			},
			selectedName(e) {
				this.selectedAddress = e.detail.value;
			}

		}
	}
</script>

<style lang="scss">
	.name {
		border: 1px solid #000000;
		padding: 10rpx;
	}

	.desc {
		border: 1px solid #000000;
		// 内边距
		padding: 10rpx;
	}

	.row {
		margin-bottom: 10rpx;
	}
</style>

  提交表单三个条件:
(1)标签中添加name
(2)button添加form-type=‘submit’
(3)form标签添加提交事件方法

1.6. 组件

  根目录下在components目录下创建组件文件夹,符合‘components/组件名称/组件名称.vue’目录结构

<template>
	<view>
		<view class="block">自定义组件</view>
	</view>
</template>

<script>
	export default {
		name: "myitem",
		data() {
			return {

			};
		}
	}
</script>

<style lang="scss">
	.block {
		width: 100%;
		height: 200rpx;
		background-color: red;
		// 居中
		display: flex;
		justify-content: center;
		align-items: center;
	}
</style>

  引入组件myitem

<myitem></myitem>

1.7. 动态赋值子组件的属性字段props

  props 可以是数组或对象,用于接收来自父组件的数据

1.7.1. 新闻标题组件

<template>
	<view>
		<view class="pub-title">
			<view class="first">{{title}}</view>
			<view class="second">新闻二标题</view>
			<view class="line"></view>
			
			<view>组件中data属性:{{commonData}}</view>
			<view>组件中data属性随机值只加载一次:{{randomNum}}</view>
			<view>组件中数组类型:{{list}}</view>
			<view>组件中Object类型:{{obj}}</view>
		</view>
	</view>
</template>

<script>
	export default {
		props: {
			title: {
				type: String,
				// 属性默认值
				default: '新闻大标题'
			},
			subTitle: {
				type: String,
				default: '新闻二标题'
			},
			// 数组字段必须使用function返回
			list: {
				type: Array,
				default: function() {
					return [1, 2, 3]
				},
			},
			// 对象字段必须使用function返回
			obj: {
				type: Object,
				default: function() {
					return {
						name: '张三',
						age: 18
					}
				}
			}
		},
		data() {
			return {
				"commonData": "初始化commonData",
				"randomNum": Math.random().toFixed(2)
			}
		}
	}
</script>

<style lang="scss">
	.pub-title {
		background-color: #FFEAC5;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		margin: 30rpx 0;

		.first {
			font-size: 40rpx;
			font-weight: bold;
			margin-right: 10rpx;
		}

		.second {
			font-size: 30rpx;
			color: #666;
			margin-right: 10rpx;
		}

		.line {
			width: 80rpx;
			height: 5rpx;
			background-color: #666;
			border-radius: 2rpx;
			margin-top: 20rpx;
		}
	}
</style>

1.7.2. 使用组件

<!-- 把newBigTitle值赋值给组件的title属性 -->
<pub-title :title="newBigTitle"></pub-title>
1
2
export default {
	data() {
		return {
			newBigTitle: "demo4新闻大标题"
		}
	}
}

(1)组件中定义props属性字段
(2)组件中使用props属性
(3)引入组件,赋值props属性值
  组件中的数组类型和Object类型,必须使用function函数返回。

1.8. VUE语法

1.8.1. data 属性

  data 必须声明为返回一个初始数据对象的函数(注意函数内返回的数据对象不要直接引用函数外的对象);否则页面关闭时,数据不会自动销毁,再次打开该页面时,会显示上次数据。
  data: 初始化页面属性值

//正确用法,使用函数返回对象
	data() {
		return {
			title: 'Hello'
		}
	}

	//错误写法,会导致再次打开页面时,显示上次数据
	data: {
		title: 'Hello'
	}

	//错误写法,同样会导致多个组件实例对象数据相互影响
	const obj = {
		title: 'Hello'
	}
	data() {
		return {
			obj
		}
	}

  数据不会自动销毁,再次打开该页面时,会显示上次数据

<view>data属性随机值只加载一次:{{randomNum}}</view>
export default {
	data() {
		return {
			"randomNum": Math.random().toFixed(2)
		}
	}
}

  刷新页面重新加载

1.9. 指令

1.9.1. v-if/v-else

<view v-if="state">显示</view>
// An highlighted block
var foo = 'bar';
data() {
	return {
		title: 'Hello',
		state: true
	}
},

1.9.2. v-show

<view v-if="state">显示</view>
<view v-else>1</view>
<view v-show="state">v-show展示</view>
<view v-show="!state">v-show不展示</view>

  v-show: 通过判断属性值真假,使用css样式控制内容是否显示

1.9.3. v-for循环

<view v-for="(item,index) in products" :key="index">
	<view>产品:{{item.name}} {{index}}</view>
	<view>价格:{{item.price}} {{index}}</view>
</view>
<view v-for="(value,key,index) in forObject">
	<view>{{key}}: {{value}},脚标: {{index}}</view>
</view>
export default {
		data() {
			return {
				title: 'Hello',
				state: true,
				products: [{
						name: "好物",
						price: "20.18"
					},
					{
						name: "好物1",
						price: "20.19"
					},
					forObject: {
						name: "张三",
						age: "29"
					}
				]
			}
		}
	}
<view class="test-for" v-for="index in 3">
	<image :src="image"></image>
</view>

  v-for会遍历标签及其子内容

1.9.4. v-html标签

<!-- 解析html标签 -->
<view v-html="title"></view>
<view v-html="htmlStr"></view>
<!-- 解析html标签 -->
htmlStr: "<h1>Hello</h1>",
title: 'Hello',

在这里插入图片描述

1.9.5. v-bind动态绑定

  v-bind: 动态绑定组件中的属性值

<view>
	<!-- v-bind缩写 -->
	<image :src="image" mode=""></image>
</view>
image: "/static/img/测试图片.jpeg",

1.9.6. v-on 指令

  指的是事件

<view v-on:click="onlickOn">
	{{title}}
</view>
<!-- 缩写 -->
<view @click="onlickOn">
	{{title}}
</view>

1.9.7. class与style绑定

<view class="box" :style="{background: bgcolor}"></view>
export default {
	data() {
		return {
			bgcolor: "#000"
		}
	}
}

在这里插入图片描述

<!-- 动态使用类样式 -->
<view class="box" :class="{myclass: state}"></view>
export default {
	data() {
		return {
			state: true
		}
	}
}
.myclass{
	width: 200rpx;
	height: 200rpx;
	border: 1rpx solid red;
	background: blue;
}
.box {
	width: 200rpx;
	height: 200rpx;
	border: 1rpx solid red;
	background: red;
}

在这里插入图片描述
  动态指定myclass生效,背景色为蓝色,但仍被box样式覆盖了。说明动态指定的样式优先级低于静态样式的
  使用三元表达式使类样式生效

<view class="static" v-bind:class="[isActive ? activeClass : '', errorClass]">222</view><!-- 三元表达式 -->

1.9.8. 导航栏示例

  默认首页tab背景色红色,选中tab背景色变为红色,其他tab无背景色

<view class="nav">
	<view class="item" :class="activeIndex!=index ? '' : 'active'" v-for=" (item,index) in navs" :key="index"
		@click="activeNav(index)">
		{{item.name}}
	</view>
</view>
export default {
		data() {
			return {
				activeIndex: 0,
				navs: [{
						name: "首页"
					},
					{
						name: "介绍"
					},
					{
						name: "产品"
					},
				]
			}
		},
		methods: {
			activeNav(index) {
				this.activeIndex = index;
			}
		}
	}
.nav {
	// 子标签内容展示在同一行
	display: flex;
	.item {
		// 使view的宽度在父标签中平均分布
		flex: 1;
		// 内容行间距,可以让内容垂直居中
		line-height: 100rpx;
		// 水平居中
		text-align: center;
		&.active {
			background-color: red;
		}
	}
}

1.9.9. v-model双向绑定

<template>
	<view>
		<view @click="changeInput">
			标题: {{title}}
		</view>
		<input class="text" v-model="title" />
	</view>
</template>

<script>
	export default {
		data() {
			return {
				title: '双向绑定',
			}
		},
		methods: {
			changeInput() {
				this.title = '改变后的标题'
			}
		}
	}
</script>

<style lang="scss">
	.text {
		width: 100%;
		height: 100rpx;
		border: 1px solid #000;
	}
</style>

  双向绑定: 修改input值,data属性值跟着改变,修改data属性值,input值也会改变。
在这里插入图片描述

1.9.10. v-model示例

<view class="out">
	<view class="row">
		<input class="border" type="text" placeholder="请输入姓名" v-model="message.name">
	</view>
	<view class="row">
		<input class="border" type="text" placeholder="请输入电话" v-model="message.mobile">
	</view>
	<view class="row">
		<textarea class="border" placeholder="请输入内容" v-model="message.content"></textarea>
	</view>
	<button type="primary">提交</button>
	{{message}}
</view>
message: {
	name: '',
		mobile: '',
		content: ''
}
.out {
	padding: 30rpx;
	.row {
		margin-bottom: 20rpx;
	}
	.border {
		width: 100%;
		// 四个边填充10rpx
		padding: 10rpx;
		border: 1px solid #000;
		// 内填充
		box-sizing: border-box;
		// 设置圆角
		border-radius: 10rpx;
	}
}

1.10 计算属性和侦听器

1.10.1. 计算属性computed

<view>
	{{ message.split('').reverse().join('') }}
</view>

  在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作。在模板中放入太多的逻辑会让模板过重且难以维护,这里是想要显示变量 message 的翻转字符串。当你想要在模板中多包含此处的翻转字符串时,就会更加难以处理。
  所以,对于任何复杂逻辑,你都应当使用计算属性。计算属性完全可以使用方法代替,区别在于计算属性存在缓存,对于加载不变数据计算属性性能高于方法。

<view>
	<!-- 使用方法 -->
	第一次加载计算属性computeTitle值: {{computeTitle}}
	<br>
	第二次加载计算属性computeTitle值: {{computeTitle}}
	<br>
	第一次加载方法computeTitle值: {{computeTitleMethod()}}
	<br>
	第二次加载方法computeTitle值: {{computeTitleMethod()}}
</view>
methods: {
	computeTitleMethod() {
		return Math.random();
	}
},
computed: {
	computeTitle() {
		return Math.random();
	}
}

在这里插入图片描述

1.10.2. 子组件触发自定义事件传递给父组件

  子组件my-event

<input type="text" placeholder="请输入" @input="onInput" />
methods: {
	onInput(e) {
		// 使用emit向父组件传递数据
		console.log("子组件输入值:" + e.detail.value);
		this.$emit('customEventName', e.detail.value)
	}
}

  引入my-event

<!-- 引用子组件传值 -->
<my-event @customEventName="inputValue"></my-event>
methods: {
	inputValue(e) {
		console.log("父组件接收值:" + e);
	}
}

在这里插入图片描述

(1)子组件自定义事件名称
(2)父组件引入子组件
(3)父组件使用子组件定义的事件名称
(4)子组件触发事件传递到父组件
  父组件引入子组件时,如果使用原生事件,需要指定事件为本地事件,如:

<my-event @customEventName="inputValue" @clink.native="onClick"></my-event>

  在使用子组件的同时,使用原生事件click,指定.native标识。

1.10.3. 子组件向上传值案例

  实现弹窗隐藏的功能
  子组件my-pop弹窗

<template>
	<view>
		<!-- 弹出层 -->
		<view class="box" :hidden="hiddenStatus">
			<view class="row">
				<view class="pop">弹窗内容</view>
			</view>
			<view class="row">
				<button @click="shut">关闭</button>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		name: "my-pop",
		data() {
			return {
			};
		},
		props: {
			hiddenStatus: {
				type: Boolean,
				default: false
			}
		},
		methods: {
			shut() {
				this.$emit('shut');
			}
		},
	}
</script>

<style lang="scss">
	.box {
		background-color: #000000;
		opacity: 0.5;
		position: fixed;
		top: 0;
		left: 0;
		// 屏蔽父页面不可点击
		z-index: 999;
		// 屏蔽父页面滚动
		height: 100%;
		width: 100%;

		.row {
			display: flex;
			justify-content: center;
			align-items: center;

			.pop {
				width: 300rpx;
				height: 200rpx;
				background-color: #FFFFFF;
				border-radius: 10rpx;
				text-align: center;
				line-height: 300rpx;
				font-size: 40rpx;
				margin-top: 80%;
			}

			button {
				height: 100rpx;
				background-color: #000000;
				border-radius: 10rpx;
				color: #FFFFFF;
			}
		}
	}
</style>

在这里插入图片描述
  父组件引入

<!-- 弹出框 -->
<view>
	<button @click="showPopStatusClick">点击弹出框</button>
	<my-pop :hiddenStatus="hiddenPop" @shut="shutPop"></my-pop>
</view>

data() {
	return {
		hiddenPop: true
	}
},
methods: {
	showPopStatusClick() {
		this.hiddenPop = false
	},
	shutPop(e) {
		this.hiddenPop = true
	}
}

在这里插入图片描述

(1)父组件默认弹窗隐藏
(2)父组件点击事件显示弹窗
(3)子组件弹窗触发自定义关闭事件
(4)父组件接收事件,关闭弹窗

1.10.4. .sync 修饰符

  当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。 .sync 它会被扩展为一个自动更新父组件属性的 v-on 监听器
  使用sync修饰符,通过修改子组件的props可以修改父组件的属性值,因此在上面的案例中,可以通过修改子组件的hiddenStatus值,从而修改父组件的hiddenPop值。

<!-- <my-pop :hiddenStatus="hiddenPop" @shut="shutPop"></my-pop> -->
<!-- 这里不再需要点击事件修改hiddenPop值,而是通过sync修饰,把父组件的hiddenPop和子组件的hiddenStatus属性进行绑定 -->
<my-pop :hiddenStatus.sync="hiddenPop"></my-pop>

  子组件修改

export default {
	props: {
		hiddenStatus: {
			type: Boolean,
			default: true
		}
	},
	methods: {
		shut() {
		    // 子组件修改绑定值格式为update:hiddenStatus,从而修改了父组件的hiddenPop值
			this.$emit('update:hiddenStatus', true);
		}
	},
}

(1)父组件使用.sync修改子组件hiddenStatus属性,从而绑定父组件的hiddenPop值
(2)子组件自定义触发事件,事件名格式为 update:子组件属性值
(3)通过子组件修改hiddenStatus值,从而修改了父组件的hiddenPop值
(4)父组件监听hiddenPop改变,动态赋值子组件props属性值
  sync修饰作用就像v-model双向绑定,只是作用在父子组件之间。

1.11文件目录

(1)pages.json :文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等
(2)manifest.json :文件是应用的配置文件,用于指定应用的名称、图标、权限等。
(3)App.vue:是我们的跟组件,所有页面都是在App.vue下进行切换的,是页面入口文件,可以调用应用的生命周期函数。
(4)main.js:是我们的项目入口文件,主要作用是初始化vue实例并使用需要的插件。
(5)uni.scss:文件的用途是为了方便整体控制应用的风格。比如按钮颜色、边框风格,uni.scss文件里预置了一批scss变量预置。
(6)unpackage:就是打包目录,在这里有各个平台的打包文件
(7)pages:所有的页面存放目录
(8)static:静态资源目录,例如图片等
(9)components:组件存放目录
在这里插入图片描述

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

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

相关文章

【webpack4系列】设计可维护的webpack4.x+vue构建配置(终极篇)

文章目录 构建配置包设计通过多个配置文件管理不同环境的 webpack 配置抽离成一个 npm 包统一管理&#xff08;省略&#xff09;通过 webpack-merge 组合配置 功能模块设计目录结构设计构建配置插件安装webpack、webpack-cli关联HTML插件html-webpack-plugin解析ES6解析vue、JS…

笔记本安装Linux系统向日葵远程控制

1、制作启动U盘 Ubuntu&#xff1a; Create a bootable USB stick with Rufus on Windows 2、安装 1、重启笔记本&#xff0c;出现logo后&#xff0c;按 f2&#xff08;注&#xff1a;联想拯救者。其他型号参考官方文档&#xff09;。按左右方向键切换到 Boot。选择 Boot Mo…

【软件测试】--xswitch将请求代理到测试桩

背景 在做软件测试的过程中&#xff0c;经常会遇见需要后端返回特定的响应数据&#xff0c;这个时候就需要用到测试桩&#xff0c;进行mock测试。 测试工程师在本地模拟后端返回数据时&#xff0c;需要将前端请求数据代理到本地&#xff0c;本文介绍xswitch插件代理请求到flas…

Float类型的有效位数有几位

大家好&#xff0c;今天我们来聊一聊C语言中的Float类型。 正如标题所说&#xff0c;你知道Float类型的有效位数有几位吗&#xff1f; 或者你知道为什么Float类型可以表示数字16777218但是却无法表示16777217吗&#xff1f; 如果你不是很确定那我们就一起来看看吧&#xff0…

AcWing算法基础课-789数的范围-Java题解

大家好&#xff0c;我是何未来&#xff0c;本篇文章给大家讲解《AcWing算法基础课》789 题——数的范围。本文详细解析了一个基于二分查找的算法题&#xff0c;题目要求在有序数组中查找特定元素的首次和最后一次出现的位置。通过使用两个二分查找函数&#xff0c;程序能够高效…

数据结构(Day13)

一、学习内容 内存空间划分 1、一个进程启动后&#xff0c;计算机会给该进程分配4G的虚拟内存 2、其中0G-3G是用户空间【程序员写代码操作部分】【应用层】 3、3G-4G是内核空间【与底层驱动有关】 4、所有进程共享3G-4G的内核空间&#xff0c;每个进程独立拥有0G-3G的用户空间 …

【C++】深入理解作用域和命名空间:从基础到进阶详解

&#x1f984;个人主页:小米里的大麦-CSDN博客 &#x1f38f;所属专栏:C_小米里的大麦的博客-CSDN博客 &#x1f381;代码托管:C: 探索C编程精髓&#xff0c;打造高效代码仓库 (gitee.com) ⚙️操作环境:Visual Studio 2022 目录 一、前言 二、域的概念 1. 类域 2. 命名空间…

Redis——常用数据类型string

目录 常用数据结构&#xff08;类型&#xff09;Redis单线程模型Reids为啥效率这么高&#xff1f;速度这么快&#xff1f;&#xff08;参照于其他数据库&#xff09; stringsetgetMSET 和 MGETSETNX&#xff0c;SETEX&#xff0c;PSETEXincr&#xff0c;incrby&#xff0c;decr…

sshj使用代理连接服务器

之前我是用jsch连接服务器的&#xff0c;但是没办法使用私钥连接&#xff0c;搜了一下似乎是不支持新版的SSH-rsa&#xff0c;并且jsch很久没更新了&#xff0c;java - "com.jcraft.jsch.JSchException: Auth fail" with working passwords - Stack Overflow 没办法…

mybatis的基本使用与配置

注释很详细&#xff0c;直接上代码 项目结构 源码 UserMapper package com.amoorzheyu.mapper;import com.amoorzheyu.pojo.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select;import java.util.List;Mapper //在运行时生成代…

从数据仓库到数据中台再到数据飞轮:金融行业的数据技术进化史

前言​ 大家好&#xff0c;我是一名大数据开发工程师&#xff0c;在金融行业深耕多年&#xff0c;其实数据技术的演进不仅是技术层面的革新&#xff0c;更是业务模式与决策方式的深刻变革。从最开始的数据仓库兴起&#xff0c;到数据中台的普及&#xff0c;再到数据飞轮的出现…

MFEA/D-DRA--基于分解和动态资源分配的多目标多任务优化

MFEA/D-DRA–基于分解和动态资源分配的多目标多任务优化 title&#xff1a; A Multiobjective multifactorial optimization algorithm based on decomposition and dynamic resource allocation strategy author&#xff1a; Shuangshuang Yao, Zhiming Dong, Xianpeng Wang…

跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例

在数字化时代&#xff0c;地理信息系统&#xff08;GIS&#xff09;技术正以其独特的空间分析和可视化能力&#xff0c;为游戏产业带来革命性的变革。《黑神话&#xff1a;悟空》作为中国首款3A级别的动作角色扮演游戏&#xff0c;不仅在游戏设计和技术上取得了突破&#xff0c…

金融行业中如何利用数据中台的数据来有效的驱动业务决策呢?

前言​ 在金融行业中&#xff0c;利用数据中台的数据来有效驱动业务决策是一个复杂而关键的过程。其实我们的核心就是帮助金融机构最大化数据中台的价值&#xff0c;并推动业务决策的科学性和准确性。本文我从技术的角度来剖析一下这一过程。​ 什么是数据中台&#xff1f;​…

Git常用指令大全详解

Git常用指令大全详解 Git&#xff0c;作为目前最流行的分布式版本控制系统&#xff0c;其强大的功能和灵活性为开发者提供了极大的便利。无论是个人项目还是团队协作&#xff0c;Git都扮演着不可或缺的角色。本文将详细总结Git的常用指令&#xff0c;帮助大家更好地掌握这一工…

PHP:强大的Web开发语言

PHP&#xff1a;强大的Web开发语言 一、PHP 简介及优势 PHP 的基本概念 PHP&#xff08;PHP: Hypertext Preprocessor&#xff09;即 “超文本预处理器”&#xff0c;是一种通用开源脚本语言&#xff0c;最初由 Rasmus Lerdorf 于 1994 年创建。它可以在服务器上执行&#xf…

题目:单调栈

1、关于栈的概述 栈是一种数据结构&#xff0c;遵循“后进先出”&#xff08;LIFO, Last In, First Out&#xff09;的原则。这意味着最后被插入栈中的元素会最先被移除。可以把它想象成一个垒盘子的情况&#xff0c;新的盘子总是放在最上面&#xff0c;而最上面的盘子会最先被…

Matlab:科学计算与工程应用的强大利器

Matlab&#xff1a;强大的科学计算工具 一、Matlab 简介与重要性 Matlab 作为一款强大的科学计算软件&#xff0c;在工程、科学、数学等多个领域都有着广泛的应用及至关重要的地位。 在工程计算领域&#xff0c;它涵盖了众多方面。例如&#xff0c;线性代数与矩阵运算中&…

CODESYS资源使用表

1、CODESYS标准化编程之输入输出映射请参考下面文章链接: CODESYS标准化编程之输入输出映射-CSDN博客文章浏览阅读78次。在介绍输入输出映射之前大家需要了解开关量防抖滤波功能块,相关链接如下:开关量防抖滤波器(梯形图和SCL源代码)_开关量输入滤波程序-CSDN博客文章浏览阅…

禹神:一小时彻底搞懂跨域解决方案

1. 浏览器的同源策略 2. 跨域会受到哪些限制 4. CORS 解决 Ajax 跨域问题 exposedHeaders 不加这个&#xff0c;js拿不到这个响应头(浏览器控制台network中能看见&#xff0c;但是js拿不到) 5. JSONP 解决跨域问题 JSOP只能解决get请求 服务端代码 客户端代码 服务端代码升…