uniapp 购物弹窗组件 (微信小程序)

 效果图,暂时只适应单规格,居中弹出和下方弹出,如需求不满足,请自行修改代码

(更新于24/11/15)

居中显示效果

下方弹出效果

html 

<template>
	<view class="" v-if="show"
		:class="mode=='center'?(style_show?'specifications_show_center openAnimation':'specifications_show_center closeAnimation'):mode=='bottom'?(style_show?'specifications_show_bottom  openAnimation':'specifications_show_bottom  closeAnimation'):''"
		@tap.stop="()=>{}">


		<view class="specifications"
			:class="mode=='bottom'?(style_show?'specifications_bottom_open  ':'specifications_bottom_close  '):''"
			@tap.stop="()=>{}">
			<view class="specification">
				<view class="specification_title">请选择规格</view>
				<image class="colseIcon"
					:src="$publicfun.locaAndHttp()?'../../static/all/del.png':$publicfun.httpUrlImg('colse.png')"
					mode="aspectFit" @tap.stop="colosePopue"></image>
				<!-- 商品信息 -->
				<view class="modal-header flex ">
					<view class="header-left ss-m-r-30">
						<image class="sku-image" :src="component_goodsDetail.image" mode="aspectFill"
							@tap.stop="previewImages1(component_goodsDetail.image,1)">
						</image>
					</view>
					<view class="header-right   ">
						<view class="goods-title ss-line-2">{{component_goodsDetail.title||'商品名称' }}</view>
						<view class="header-right-bottom ss-flex ss-col-center ss-row-between">
							<view class="price-text">
								{{is_kongobj=='{}'? Number(component_goodsDetail.price*1).toFixed(2) :Number(chooseSpecificationObject.price*1).toFixed(2)}}
							</view>
							<view class="stock-text ss-m-l-20" v-if="is_kongobj!='{}'">
								库存{{ is_kongobj=='{}'?component_goodsDetail.goods_stock:chooseSpecificationObject.inventory}}件
							</view>
						</view>
					</view>
				</view>
				<view class="specification_title2">
					规格
				</view>
				<view class="specification_title_1">
					<scroll-view scroll-y="true" style="height: 100%;">
						<view>
							<height :hg='30'></height>
							<view class="flex flexwrap">
								<view v-for="(itemall,indexall) in component_goodsDetail.multiplejson" :key="indexall"
									@click.stop="setguigeindex(indexall,itemall)">
									<view
										:class="guigeindex==indexall?'specification_title_1_title specification_title_1_titlec':'specification_title_1_title'"
										v-if='itemall.title'>
										{{itemall.title}}
									</view>
								</view>
							</view>
							<!-- 单规格 -->
							<view class="mt30" v-if="false">
								<view class="specification_title_1_content">
									<view class="specification_title_1_content_flex flex jc ac"
										:class="guigeindex2==index?'specification_title_1_content_flex_activate':''"
										v-for="(item,index) in specification_list[guigeindex].item" :key="index"
										@tap.stop="selective_specification(item.guigechildren,item)">
										<!-- 可用于显示商品图片 -->
										<!-- <image class="image" :src="sheep.$url.cdn(type_return_img(item.id).url)"
											mode="aspectFill" v-if="type_return_img(item.id).url!=''">
										</image> -->
										<view>{{item.name}}</view>
									</view>
									<view class="nogoods" v-if="item.guigechildren.length==0" style="margin: auto;">
										<u-empty text='没有规格~' icon="">
										</u-empty>
									</view>
								</view>
							</view>
						</view>
					</scroll-view>
				</view>
				<view class="" v-if="mode=='center'">
					<view class="selected">
						<text>已选规格:</text>
						{{is_kongobj=='{}'?'未选择':chooseSpecificationObject.title}}
					</view>
				</view>
				<view class="buy-num-box flex jsb ac">
					<view class="label-text">购买数量</view>
					<view class="ShopCar flex jc ac">
						<image class="ShopCaricon"
							:src="$publicfun.locaAndHttp()?'../../static/all/del.png':$publicfun.httpUrlImg('del.png')"
							mode="aspectFit" @tap.stop="delnum(item)"></image>
						<input type="number" v-model="goodsNum" class="ShopCarInp" @blur="inpnum(item)" />
						<image class="ShopCaricon"
							:src="$publicfun.locaAndHttp()?'../../static/all/add.png':$publicfun.httpUrlImg('add.png')"
							mode="aspectFit" @tap.stop="addnum(item)"></image>
					</view>
				</view>
				<view class="sublist" v-if="mode=='center'">
					<view class="sublist_left">
						<view class="">
							<text>总计 </text>
							<text class="TotalPrices">
								<text>¥</text>
								{{is_kongobj=='{}'?'0.00':Number(chooseSpecificationObject.price*goodsNum).toFixed(2) }}
							</text>
						</view>
					</view>
					<view class="sublist_right" @tap.stop="goodsAddCar()">
						<text>+</text> <text>加入购物车</text>
					</view>
				</view>


				<view class="specification_bottombuts" v-if="mode=='bottom'">
					<view class="specification_bottombuts_but specification_bottombuts_ShoppingCart"
						@tap.stop="goodsAddCar()">
						加入购物车
					</view>
					<view class="specification_bottombuts_but specification_bottombuts_PayNow" @tap.stop="newPay()">
						立即购买
					</view>
				</view>
				<view class="" style="width: 100%;height: 30px;" v-if="mode=='bottom'">

				</view>
			</view>
		</view>
	</view>
</template>

js


	export default {
		name: "specification",
		//style_show  主要控制动画效果
		//mode   设置方向弹出
		//show   控制显示不显示
		//goodsDetail  传入的商品信息
		props: ['show', 'style_show', 'goodsDetail', 'mode'],
		data() {
			return {
				orderprive: '',
				style: [], //规格动态样式
				// goodsDetail: { //模拟商品信息
				// 	goods_name: '番茄鸡蛋面',
				// 	goods_price: '9.90',
				// 	goods_stock: 999,
				// 	specification: [{
				// 		goods_name: '规格1',
				// 		goods_price: '9.90',
				// 		goods_stock: 999,
				// 		children: [{
				// 			goods_name: '11',
				// 			goods_price: '6.60',
				// 			goods_stock: 999,
				// 		}]
				// 	}]
				// },
				chooseSpecificationObject: {}, //选中的规格
				guigeindex: 0, //一级规格
				guigeindex2: 0, //二级规格
				component_goodsDetail: {}, //请求接口的商品数据
				goodsNum: 1,


			
			};
		},
		onLoad() {
			
		},
		watch: {
//监听是否有商品id传入进来
			goodsDetail: {
				handler(newName, oldName) {
                    //获取商品信息的接口
					GoodsDetail({
						id: newName.id
					}).then(res => {
						this.component_goodsDetail = res.data;
						this.chooseSpecificationObject = res.data ? res.data.multiplejson[0] : {};
						this.guigeindex = 0;
						console.log(res, '商品详情');
					})
					this.goodsNum = 1;
				},
				immediate: true,
				deep: true
			}
		},
		onShow() {
		
		},
		computed: {
			//判断是否选中规格
			is_kongobj() {
				console.log(this.chooseSpecificationObject);
				return JSON.stringify(this.chooseSpecificationObject); 
			}
		},

		methods: {
			newPay() {
				if (!this.style_show) {
					return
				}
				let that = this;
				//可用于显示弹窗不默认选中规格的判断
				// if (JSON.stringify(this.choose_specification) == '{}') {
				// 	uni.showToast({
				// 		title: "请选择规格",
				// 		icon: "none"
				// 	})
				// 	return
				// }
				// console.log(that.goodsNum);
				// return
                // 直接购买将需要的信息提交到vuex缓存中,用于渲染页面
				this.$store.commit('set_is_immediately', {
					type: 'goodsDetail',
					id: that.component_goodsDetail.id, //id
					item: that.chooseSpecificationObject, //规格名称
					count: that.goodsNum,
					goodsDetail: [that.component_goodsDetail] //商品列表数组
				})
                //跳转到提交订单页面
				this.$publicfun.navigateTo('/pagesA/SubmitOrder/SubmitOrder')
				this.colosePopue()
			},
			//选中规格
			setguigeindex(index, item) {
				if (!this.style_show) {
					return
				}
				this.chooseSpecificationObject = item;
				this.guigeindex = index;
				if (this.goodsNum > this.chooseSpecificationObject.inventory) {
					this.goodsNum = this.chooseSpecificationObject.inventory;
				}

			},
			//删除购物车数量
			delnum() {
				if (!this.style_show) {
					return
				}
				if (this.goodsNum > 1) {
					this.goodsNum--;
				} else {
					//数量少于1 关闭弹窗
					this.colosePopue()
				}
			},
			//添加购物车数量
			addnum() {
				if (!this.style_show) {
					return
				}
				if (this.goodsNum < this.chooseSpecificationObject.inventory) {
					this.goodsNum++;
				} else {
					uni.showToast({
						title: '超出购买数量~',
						icon: "none"
					})
				}
			},
			//手动输入购买数量
			inpnum() {
				if (!this.style_show) {
					return
				}
				if (this.goodsNum > this.chooseSpecificationObject.inventory) {
					this.goodsNum = this.chooseSpecificationObject.inventory;
				}
				if (this.goodsNum == '') {
					// this.colosePopue()
					this.goodsNum = 1;
					this.$publicfun.showToast('购买数量不得少于1~')
				}
				if (this.goodsNum <= 0) {
					// this.colosePopue()
					this.goodsNum = 1;
					this.$publicfun.showToast('购买数量不得少于1~')
				}
			},
			//预览商品图片
			previewImages1(url, index) {
//因为动画效果是 用透明度为0,再消失,透明度改变的时候还可以点击,加这个判断是很必要的
				if (!this.style_show) {
					return
				}
                //预览图片
				this.$publicfun.previewImage({
					url: url,
					index: index
				})
			},
			//关闭弹窗
			colosePopue() {
				if (!this.style_show) {
					return
				}
				this.$emit('closeCar')
				// this.component_goodsDetail={};
			},
			//添加购物车
			goodsAddCar() {
				if (!this.style_show) {
					return
				}
				let that = this;
                //这是添加到购物车
				carAddAndDel({
					id: this.goodsDetail.id,
					count: this.goodsNum,
					item_name: this.chooseSpecificationObject.title,
					type: 'add'
				}).then(res => {
					if (res.code == 1) {
                        //通过vuex更新数据
						this.$store.dispatch('fun_set_shopCar');
						// console.log(res);
						that.colosePopue();
						uni.showToast({
							title: '已添加到购物车~',
							icon: "none"
						})
					} else {
						uni.showToast({
							title: res.msg,
							icon: "none"
						})
					}
				})
			},
			
		}
	}

css部分

//居中显示
	.specifications_show_center {
		width: 100vw;
		height: 100vh;
		position: fixed;
		top: 0;
		left: 0;
		z-index: 999999999;
		background: rgba(0, 0, 0, 0.6);
		display: flex;
		justify-content: center;
		align-items: center;
		opacity: 1;
		border-radius: 18rpx;
	}

	.openAnimation {
		animation: slow_show 0.3s linear;
	}

	.closeAnimation {
		opacity: 0 !important;
		animation: close_slow_show 0.3s linear;
	}

	@keyframes slow_show {
		0% {
			opacity: 0;
		}

		100% {
			opacity: 1;
		}
	}

	@keyframes close_slow_show {
		0% {
			opacity: 1;
		}

		100% {
			opacity: 0;
		}
	}

	//从下方弹出显示
	.specifications_show_bottom {
		width: 100vw;
		height: 100vh;
		position: fixed;
		bottom: 0;
		left: 0;
		z-index: 999999999;
		background: rgba(0, 0, 0, 0.6);
		display: flex;
		justify-content: center;
		align-items: flex-end;
		opacity: 1;
		border-radius: 18rpx;

		.specifications {
			width: 100% !important;
			position: absolute;
			bottom: 0;
			left: 0;
			padding: 30rpx 50rpx !important;
		}

		.specifications_bottom_open {
			animation: From_bottom_to_top 0.22s linear;
		}

		.specifications_bottom_close {
			animation: From_top_to_bottom 0.3s linear;
		}
	}


	@keyframes From_bottom_to_top {
		0% {
			bottom: -100%;
		}

		100% {
			bottom: 0;
		}
	}

	@keyframes From_top_to_bottom {
		0% {
			bottom: 0;
		}

		100% {
			bottom: -100%;
		}
	}

//以上是动画效果


	.specifications {
		width: 690rpx;
		padding: 30rpx;
		box-sizing: border-box;
		background: #fff;
		border-radius: 18rpx;




		.buy-num-box {
			height: 100rpx;
			// padding-left: 20rpx;
			// box-sizing: border-box;

			.ShopCar {
				.ShopCaricon {
					width: 46rpx;
					height: 46rpx;
				}

				.ShopCarInp {
					width: 100rpx;
					height: 46rpx;
					text-align: center;
				}
			}
		}

		.modal-header {
			// position: relative;
			padding: 20rpx 0;
			margin-top: 20rpx;

			.sku-image {
				width: 160rpx;
				height: 160rpx;
				border-radius: 10rpx;
				background: darkslategray;
			}

			.header-right {
				width: calc(100% - 160rpx - 20rpx);
				height: 160rpx;
				display: flex;
				flex-direction: column;
				justify-content: space-between;
				margin-left: 20rpx;
			}

			.close-icon {
				position: absolute;
				top: 10rpx;
				right: 20rpx;
				font-size: 46rpx;
				opacity: 0.2;
			}

			.goods-title {
				font-size: 28rpx;
				font-weight: bold;
				line-height: 42rpx;
				position: relative;
				overflow: hidden;
				text-overflow: ellipsis;
				display: -webkit-box;
				-webkit-box-orient: vertical;
				-webkit-line-clamp: 2;


				.tig {
					border: 2rpx solid #ff6000;
					border-radius: 4rpx;
					width: 126rpx;
					height: 38rpx;
					position: absolute;
					left: 0;
					top: 0;

					.tig-icon {
						width: 40rpx;
						height: 40rpx;
						background: #ff6000;
						margin-left: -2rpx;
						border-radius: 4rpx 0 0 4rpx;

						.groupon-tag {
							width: 32rpx;
							height: 32rpx;
						}
					}

					.tig-title {
						font-size: 24rpx;
						font-weight: 500;
						line-height: normal;
						color: #ff6000;
						width: 86rpx;
						display: flex;
						justify-content: center;
						align-items: center;
					}
				}

				.info-title {
					text-indent: 132rpx;
				}
			}

			.header-right-bottom {
				display: flex;
				justify-content: space-between;
				align-items: center;
			}

			.price-text {
				font-size: 30rpx;
				font-weight: 500;
				color: red;
				font-family: OPPOSANS;

				&::before {
					content: '¥';
					font-size: 24rpx;
				}
			}

			.stock-text {
				font-size: 26rpx;
				color: #999999;
			}
		}

		.d_box {
			.d_box_item {
				font-size: 34rpx;
				color: #3d3d3d;
				width: 45%;
				margin-bottom: 20rpx;
			}
		}

		.specification {

			background: #FFFFFF;
			border-radius: 12rpx;
			position: relative;
			z-index: 10074;

			.specification_title {
				text-align: center;
				font-size: 38rpx;
				font-weight: 600;
				color: #353535;
				margin: 0 auto;
			}

			.colseIcon {
				width: 40rpx;
				height: 40rpx;
				position: absolute;
				right: 0rpx;
				top: 0rpx;
			}

			.specification_title2 {
				font-size: 38rpx;
				font-weight: 600;
				color: #353535;
				margin: 0 auto;
				margin-bottom: 30rpx;
			}

			.specification_goods_title {
				font-size: 38rpx;
				font-weight: 600;
			}

			.specification_title_1 {
				width: 100%;
				max-height: 400rpx !important;
				margin: 0 auto;

				.specification_title_1_title {
					font-size: 32rpx;
					font-weight: 600;
					color: #676767;
					// color: $AccentColor;
					display: inline-block;
					padding: 10rpx 20rpx;
					text-align: center;
					background: #fff;
					border-radius: 18rpx;
					white-space: nowrap;
					// border: 1rpx solid $AccentColor !important;
					border: 1rpx solid #676767 !important;
					margin-right: 10rpx;
					margin-bottom: 10rpx;
				}



				.specification_title_1_titlec {
					color: $AccentColor !important;
					// background: $AccentColor !important;
					border: 1rpx solid $AccentColor !important;
				}




				.specification_title_1_content {
					display: flex;
					flex-wrap: wrap;
					// overflow-x: auto;
					display: -webkit-box;
					-webkit-overflow-scrolling: touch;

					.specification_title_1_content_flex_activate {
						background: $AccentColor !important;
						border: 1rpx solid $AccentColor !important;
						color: #fff !important;
					}

					.font_sizi_1 {
						color: $AccentColor;
					}

					.font_sizi_2 {
						border-left: 1rpx solid $AccentColor;
					}

					.specification_title_1_content_flex {
						// height: 63rpx;
						background: #FFFFFF;
						border-radius: 14rpx;
						border: 1rpx solid #999;
						margin-right: 20rpx;
						text-align: center;
						// line-height: 63rpx;
						font-size: 28rpx;
						font-weight: 400;
						color: #343434;
						padding: 10rpx 20rpx;
						margin-bottom: 20rpx;

						.image {
							width: 60rpx;
							height: 60rpx;
							margin-right: 20rpx;
							border-radius: 12rpx;
						}
					}
				}
			}

			.close {
				position: absolute;
				bottom: -150rpx;
				left: 50%;
				transform: translateX(-50%);
			}
		}

		.selected {
			width: 100%;
			padding: 20rpx 0;
			background: #F5F5F5;
			margin-top: 60rpx;

			text {
				font-size: 24rpx;
				font-weight: 400;
				color: #363636;
			}

			text:nth-child(1) {
				font-size: 24rpx;
				font-weight: 400;
				color: #676767;
				padding: 0 20rpx;
				margin-left: 10rpx;
			}
		}

		.sublist {
			display: flex;
			align-items: center;
			justify-content: space-between;
			margin-top: 30rpx;
			// padding: 30rpx 40rpx;

			.sublist_left {
				.TotalPrices {
					margin-left: 10rpx;
				}

				text:nth-child(1) {
					font-size: 28rpx;
					font-weight: 600;
					color: #363636;
				}

				text:nth-child(2) {
					font-size: 28rpx;
					font-weight: 600;
					color: #FF0000;

					text:nth-child(1) {
						font-size: 28rpx;
						font-weight: 600;
						color: #FF0000;
						font-size: 24rpx;
					}
				}
			}

			.sublist_right {
				width: 234rpx;
				height: 62rpx;
				background: $AccentColor;
				border-radius: 12rpx;
				font-size: 32rpx;
				font-weight: 500;
				color: #F3FCFF;
				line-height: 62rpx;
				text-align: center;
			}
		}


		//从下方弹出的弹窗按钮
		.specification_bottombuts {
			width: 100%;
			margin: auto;
			display: flex;
			justify-content: space-between;
			align-items: center;
			margin-top: 20rpx;

			.specification_bottombuts_but {
				width: 50%;
				padding: 25rpx 20rpx;
				font-size: 28rpx;
				font-weight: bold;
				color: #fff;
				text-align: center;
			}

			.specification_bottombuts_ShoppingCart {
				background: #9dceff;
				border-radius: 99px 0 0 99px;
			}

			.specification_bottombuts_PayNow {
				background: #0a84ff;
				border-radius: 0px 99px 99px 0px;
			}
		}


		.minus {
			width: 25px;
			height: 25px;
			border-width: 1px;
			border-color: #E6E6E6;
			border-style: solid;
			border-top-left-radius: 100px;
			border-top-right-radius: 100px;
			border-bottom-left-radius: 100px;
			border-bottom-right-radius: 100px;
			@include flex;
			justify-content: center;
			align-items: center;
		}

		.input {
			padding: 0 10px;
		}

		.plus {
			width: 25px;
			height: 25px;
			border-width: 1px;
			background-color: #00B8FB;
			border-color: #00B8FB;
			border-style: solid;
			border-top-left-radius: 100px;
			border-top-right-radius: 100px;
			border-bottom-left-radius: 100px;
			border-bottom-right-radius: 100px;
			@include flex;
			justify-content: center;
			align-items: center;
		}
	}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

革新车间照明,分布式IO模块引领智能制造新纪元

在智能制造的浪潮中&#xff0c;每一个细节的优化都是推动生产效率与能耗管理迈向新高度的关键。车间照明系统&#xff0c;作为生产环境中不可或缺的一环&#xff0c;其智能化升级正成为众多企业转型升级的重要着力点。 一、从传统到智能&#xff1a;照明系统的变革之旅 传统…

Java基于微信小程序+SSM的校园失物招领小程序

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

微软Office 2021 24年11月授权版

概述 Microsoft Office LTSC 2021 专业增强版是微软公司推出的一款专为企业客户设计的办公软件套件。该版本于2024年11月进行了批量许可版更新推送&#xff0c;旨在为企业用户提供更加稳定、高效的办公体验。 主要特点 LOGO设计趋势强化&#xff1a;新版Office将棱角改为圆角…

uniapp实现中英文切换

home.js const data {ZH: {content1: "苹果",},EN: {content1: “Apple”,} } export default dataindex.js import home from "./home.js" export default {home }en.js import part1 from ./data/part1/index.js const en {language: {name: "…

go-zero(七) RPC服务和ETCD

go-zero 实现 RPC 服务 在实际的开发中&#xff0c;我们是通过RPC来传递数据的&#xff0c;下面我将通过一个简单的示例&#xff0c;说明如何使用go-zero框架和 Protocol Buffers 定义 RPC 服务。 一、生成 RPC项目 在这个教程中&#xff0c;我们根据user.api文件&#xff0…

C#.Net筑基-字符串超全总结

字符串是日常编码中最常用的引用类型了&#xff0c;可能没有之一&#xff0c;加上字符串的不可变性、驻留性&#xff0c;很容易产生性能问题&#xff0c;因此必须全面了解一下。 01、字符与字符编码 1.1、字符Char 字符 char 表示为 Unicode字符&#xff0c;在C#中用 UTF-16 …

ROS Action

在 ROS 中&#xff0c;Action 是一种支持长时间异步任务的通信机制。与 Service 不同&#xff0c;Action 允许客户端发起一个请求&#xff0c;并在任务执行的过程中不断接收反馈&#xff0c;直到任务完成。这种机制非常适用于可能需要较长时间来完成的任务&#xff0c;比如机器…

23.UE5删除存档

2-25 删除存档制作_哔哩哔哩_bilibili 按照自己的风格制作删除按钮 这样该行的存档就被从存档列表中删除了&#xff0c;并且实际存档&#xff08;我的存档蓝图&#xff09;中也被删除了 但是存在一个问题&#xff0c;如果存档数据中存在索引为: 0 1 2 3的存档&#xff0c;当索…

LoFTR: Detector-Free Local Feature Matching with Transformers—特征点匹配算法系列

LoFTR: Detector-Free Local Feature Matching with Transformers 受到&#xff1a;受到开创性作品 SuperGlue 的启发 摘要总结&#xff1a; 提出了一种局部图像特征匹配的新方法。更为突出说明的是室内场景下的特征点的匹配问题。 不是依次执行图像特征检测、描述和匹配&#…

图像基础算法学习笔记

目录 概要 一、图像采集 二、图像标注 四、图像几何变换 五、图像边缘检测 Sobel算子 Scharrt算子 Laplacian算子 Canny边缘检测 六、形态学转换 概要 参考书籍&#xff1a;《机器视觉与人工智能应用开发技术》 廖建尚&#xff0c;钟君柳 出版时间&#xff1a;2024-…

排序算法 -归并排序

文章目录 1. 归并排序&#xff08;Merge Sort&#xff09;1.1 简介1.2 归并排序的步骤1.3 归并排序c 语言实现代码说明 1.4 时间复杂度1.5 空间复杂度1.6 动画 1. 归并排序&#xff08;Merge Sort&#xff09; 1.1 简介 归并排序&#xff08;Merge Sort&#xff09;是一种基于…

wireshark 基础

wireshark 基础 一、wireshark介绍 Wireshark&#xff08;前称Ethereal&#xff09;是一个网络封包分析软件。网络封包分析软件的功能是捕获网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换…

GIT 入门详解指南

前言&#xff1a; 注&#xff1a;本博客仅用于记录本人学习过程中对git的理解&#xff0c;仅供学习参考&#xff0c;如有异议请自行查资料求证 安装 使用git之前必须完成git的安装&#xff0c;Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行 git 安装教程 基本…

从 IDC 到云原生:稳定性提升 100%,成本下降 50%,热联集团的数字化转型与未来展望

作者&#xff1a;金峰&#xff08;项良&#xff09;、朱永林、赵世振&#xff08;寰奕&#xff09; 公司简介 杭州热联集团股份有限公司成立于 1997 年 10 月&#xff0c;是隶属杭州市实业投资集团的国有控股公司。公司专业从事国际、国内钢铁贸易黑色大宗商品及产业服务&…

【微软:多模态基础模型】(4)统一视觉模型

欢迎关注[【youcans的AGI学习笔记】](https://blog.csdn.net/youcans/category_12244543.html&#xff09;原创作品 【微软&#xff1a;多模态基础模型】&#xff08;1&#xff09;从专家到通用助手 【微软&#xff1a;多模态基础模型】&#xff08;2&#xff09;视觉理解 【微…

机器学习——期末复习 重点题归纳

第一题 问题描述 现有如下数据样本&#xff1a; 编号色泽敲声甜度好瓜1乌黑浊响高是2浅白沉闷低否3青绿清脆中是4浅白浊响低否 &#xff08;1&#xff09;根据上表&#xff0c;给出属于对应假设空间的3个不同假设。若某种算法的归纳偏好为“适应情形尽可能少”&#xff0c;…

Web3浪潮下的区块链应用:从理论到实践的全面解析

随着Web3的兴起&#xff0c;区块链技术作为其核心支撑&#xff0c;正迎来前所未有的应用爆发。Web3不仅仅是技术的革新&#xff0c;更代表了一种去中心化、开放、透明的互联网愿景。在这一背景下&#xff0c;区块链技术的应用正从理论走向实践&#xff0c;推动着各行各业的数字…

学习大数据DAY61 宽表加工

目录 模型设计 加工宽表 任务调度&#xff1a; 大表 - 把很多数据整合起来 方便后续的明细查询和指标计算 模型设计 设计 建模 设计: excel 文档去编写 建模: 使用建模工具 PowerDesigner Navicat 在线画图工具... 把表结构给绘 制出来 共享\项目课工具\pd 加工宽表 数…

ChromeDriver驱动下载地址更新(保持最新最全)

说明&#xff1a; ChromeDriver 是 Selenium WebDriver 用于控制 Chrome 的独立可执行文件。 为了方便下载使用&#xff0c;本文保持ChromeDriver的最新版本更新&#xff0c;并提供115.0.5763.0-133.0.6841.0版本的下载地址&#xff1a; 所有版本和下载地址&#xff1a; &am…

QT基本绘图

QT绘图 1.概述 这篇文章介绍如何绘图 2.绘图基本操作 创建一个普通的widget类型的项目 在widget.h 文件中重写绘图事件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : p…