微信小程序 自定义组件 标签管理
环境
小程序环境:
-
微信开发者工具:RC 1.06.2503281 win32-x64
-
基础运行库:3.8.1
概述
基础功能
-
标签增删改查:支持添加/删除单个标签、批量删除、重置默认标签
-
数据展示:通过对话框展示结构化数据并支持复制
-
动画系统:添加/删除时带缩放淡入淡出动画
结构分析(WXML)
数据展示优化
-
使用scroll-view应对长内容
-
user-select开启文本选择
<!--pages/tabs/tabs.wxml-->
<navigation-bar title="标签管理" back="{{false}}" color="black" background="#FFF"></navigation-bar><view class="container"><!-- 新增输入框区域 --><view class="input-area"><input class="tag-input"placeholder="请输入新标签"value="{{inputValue}}"bindinput="handleInput"bindconfirm="handleAdd"/><button size="mini"class="add-btn"bind:tap="handleAdd">添加标签</button></view><!-- 标签容器 --><view class="tag-container" wx:if="{{tags.length}}"><view wx:for="{{tags}}"wx:key="id"class="tag-item"data-index="{{index}}"animation="{{item.animation}}">{{item.name}}<view class="close-btn" bind:tap="handleClose"data-id="{{item.id}}">×</view></view></view><button class="delete-all-btn" bind:tap="handleDeleteAll">删除全部标签</button><button class="reset-btn" bind:tap="handleReset">重置所有标签</button><button class="reset-btn" bind:tap="handleGetAll">获取数据</button>
</view><mp-dialog title="获取的数据" show="{{dialogShow}}" bindbuttontap="dialogButton" buttons="{{buttons}}"><view class="title"><scroll-view scroll-y="true" class="scroll"><text user-select="true">{{tags_data}}</text></scroll-view></view>
</mp-dialog>
逻辑分析(JS)
数据管理
-
ID生成:自增ID保证唯一性
-
数据持久化:标签数据仅存内存,页面关闭后丢失
-
数据结构:{ id: number, name: string, animation: any }
交互设计
-
输入验证:非空校验 + 长度限制(15字)
-
防误操作:删除全部需二次确认
-
视觉反馈:按钮点击态(opacity变化)、关闭按钮悬浮效果
// pages/tabs/tabs.js
Page({data: {tags: [],nextId: 1,// 输入数据字段inputValue: '',// 标签数据tags_data: null,// 显示/隐藏 对话框dialogShow: false,// 对话框按钮组buttons: [{text: '关闭'}, {text: '复制'}],},onLoad() {this.handleReset()},// 输入框内容变化handleInput(e) {this.setData({inputValue: e.detail.value.trim() // 自动去除首尾空格});},// 添加新标签handleAdd() {const newTag = this.data.inputValue;// 验证输入内容if (!newTag) {wx.showToast({title: '请输入标签内容',icon: 'none'});return;}if (newTag.length > 15) {wx.showToast({title: '请不要输入过长的内容',icon: 'none',duration: 1500});return;}// 创建动画const animation = wx.createAnimation({duration: 400,timingFunction: 'ease-out'});// 初始状态(隐藏状态)animation.opacity(0).scale(0.5).step();// 生成新标签const newItem = {id: this.data.nextId++,name: newTag,animation: animation.export() // 导出动画对象};// 先添加带动画的数据this.setData({tags: [...this.data.tags, newItem],inputValue: ''}, () => {// 在回调中执行显示动画setTimeout(() => {const index = this.data.tags.length - 1;const showAnimation = wx.createAnimation({duration: 400,timingFunction: 'ease-out'});showAnimation.opacity(1).scale(1).step();this.setData({[`tags[${index}].animation`]: showAnimation.export()});// 动画完成后清除动画数据setTimeout(() => {this.setData({[`tags[${index}].animation`]: null});}, 400);}, 50); // 短暂延迟确保初始状态渲染});},// 关闭标签(带动画)handleClose(e) {const id = parseInt(e.currentTarget.dataset.id);const index = this.data.tags.findIndex(item => item.id === id);// 创建动画const animation = wx.createAnimation({duration: 400,timingFunction: 'ease'});animation.opacity(0).scale(0.8).step();// 先执行动画this.setData({[`tags[${index}].animation`]: animation.export()});// 动画完成后移除元素setTimeout(() => {const newTags = this.data.tags.filter(item => item.id !== id);this.setData({ tags: newTags });}, 400);},// 从后往前依次删除标签handleDeleteAll() {if (this.data.tags.length === 0) {wx.showToast({title: '没有可删除的标签',icon: 'none'});return;}wx.showModal({title: '提示',content: '确定要删除所有标签吗?',success: (res) => {if (res.confirm) {this.deleteOneByOne(this.data.tags.length - 1);}}});},// 递归方法:从最后一个开始逐个删除deleteOneByOne(index) {if (index < 0) {return; // 所有标签已删除完毕}const animation = wx.createAnimation({duration: 200,timingFunction: 'ease'});animation.opacity(0).scale(0.8).step();this.setData({[`tags[${index}].animation`]: animation.export()}, () => {setTimeout(() => {// 删除当前标签const newTags = [...this.data.tags];newTags.splice(index, 1);this.setData({ tags: newTags }, () => {// 继续删除前一个标签this.deleteOneByOne(index - 1);});}, 200); // 等待动画完成});},// 重置所有标签handleReset() {this.setData({nextId: 0})this.initTags(['Vue', 'React', 'Angular', 'Flutter', 'UniApp', 'Taro', 'CSDN', '奇妙方程式']);},// 初始化标签方法initTags(labels) {console.log('labels', labels);const tags = labels.map((text, index) => ({id: this.data.nextId++,name: text,animation: null}));this.setData({ tags }, () => {// 在回调中逐个添加动画tags.forEach((_, index) => {setTimeout(() => {this.animateTag(index);}, index * 100); // 每个标签间隔100ms});});},// 执行单个标签的动画animateTag(index) {const animation = wx.createAnimation({duration: 200,timingFunction: 'ease-out'});animation.opacity(0).scale(0.5).step();animation.opacity(1).scale(1).step();this.setData({[`tags[${index}].animation`]: animation.export()});setTimeout(() => {this.setData({[`tags[${index}].animation`]: null});}, 200);},// 获取数据handleGetAll() {let tags = this.data.tags.map(item => ({id: item.id,name: item.name }))console.log('获取的数据', tags);let tags_data = "tags: " + JSON.stringify(tags)this.setData({dialogShow: true,tags_data})},// 对话框 按钮dialogButton(e) {this.setData({dialogShow: false,})let choose = e.detail.item.textif (choose == "复制") {this.copy()}},// 复制 参数信息copy() {wx.setClipboardData({data: this.data.tags_data,success() {wx.getClipboardData({success() {wx.showToast({title: '复制成功',icon: 'success'})}})}})},
});
样式与动画(WXSS)
/* pages/tabs/tabs.wxss */
/* 容器样式 */
.container {padding: 20rpx;
}/* 新增输入区域样式 */
.input-area {display: flex;padding: 30rpx;background: #fff;
}.tag-input {flex: 1;height: 64rpx;padding: 0 20rpx;border: 2rpx solid #eee;border-radius: 8rpx;font-size: 28rpx;margin-right: 20rpx;
}.add-btn {background: #1890ff;color: white;transition: opacity 0.2s;padding: auto;
}.add-btn.active {opacity: 0.8;
}.tag-container {display: flex;flex-wrap: wrap;padding: 30rpx;
}/* 单个标签样式 */
.tag-item {position: relative;background: #e7f3ff;border-radius: 8rpx;padding: 12rpx 50rpx 12rpx 20rpx;color: #1890ff;transition: all 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28);margin: 10rpx;opacity: 0;
}/* 隐藏状态动画 */
.tag-item.hidden {opacity: 0;transform: scale(0.8);pointer-events: none;
}.close-btn {position: absolute;right: 8rpx;top: 50%;transform: translateY(-50%);width: 32rpx;height: 32rpx;line-height: 32rpx;text-align: center;border-radius: 50%;background: #ff4d4f;color: white;font-size: 24rpx;opacity: 0.8;transition: opacity 0.2s;
}.close-btn.active {opacity: 1;transform: translateY(-50%) scale(0.9);
}.reset-btn {margin: 20rpx auto;width: 70%;background: #1890ff;color: white;
}/* 删除全部按钮样式 */
.delete-all-btn {margin: 20rpx auto;width: 40%;background: #ff4d4f;color: white;
}.title {text-align: left;margin-top: 10px;
}.scroll {height: 300px;width: 100%;margin-bottom: 15px;
}.weui-dialog__btn_primary {background-color: #07c160;color: #fff;
}
json
{"usingComponents": {"navigation-bar": "/components/navigation-bar/navigation-bar","mp-dialog": "weui-miniprogram/dialog/dialog"}
}
部分代码由deepseek辅助生成
相关文章:
微信小程序 自定义组件 标签管理
环境 小程序环境: 微信开发者工具:RC 1.06.2503281 win32-x64 基础运行库:3.8.1 概述 基础功能 标签增删改查:支持添加/删除单个标签、批量删除、重置默认标签 数据展示:通过对话框展示结构化数据并支持复制 动…...
从 Eclipse Papyrus / XText 转向.NET —— SCADE MBD技术的演化
从KPN[1]的萌芽开始,到SCADE的推出[2],再到Scade 6的技术更迭[3],SCADE 基于模型的开发技术已经历许多。现在,Scade One 已开启全新的探索 —— 从 Eclipse Papyrus / XText 转向.NET 8跨平台应用。 [1]: KPN, Kahn进程网络 (197…...
【学习笔记】机器学习(Machine Learning) | 第五章(2)| 分类与逻辑回归
机器学习(Machine Learning) 简要声明 基于吴恩达教授(Andrew Ng)课程视频 BiliBili课程资源 文章目录 机器学习(Machine Learning)简要声明 二、决策边界决策边界的数学表达线性决策边界示例非线性决策边界非线性决策边界的示例…...
python 常用web开发框架及使用示例
Python常用Web开发框架及使用示例 Python拥有丰富的Web开发框架生态系统,以下是主流框架及其使用示例: 一、Flask - 轻量级框架 安装 pip install flask 基础示例 from flask import Flask, request, jsonifyapp Flask(__name__)app.route(/) def…...
[ Qt ] | 第一个Qt程序
1. 创建Qt项目 我们打开Qt Create工具,左上角“文件”,新建文件。 --- --- --- --- 这个是我们的APP“走出国门”的时候,要关注的,这里就不说了。 后面这两个直接默认,下一步就行~~。 2. 项目默认内容 下面就是Qt C…...
react + antd 实现后台管理系统
文章目录 完整路由搭建Layout 和 Aside组件引入 AntdAside组件实现 项目效果图 项目完整代码地址 https://gitee.com/lyh1999/react-back-management 项目完整代码地址 react依赖安装 最好采用yarn 安装 react-router 安装依赖 配置路由 history模式 / // src/router/…...
vue3+ts项目 配置vue-router
安装vue-router pnpm install vue-router配置 1.src/router/index.ts文件下的内容 import type { App } from vue import type { RouteRecordRaw } from vue-router import { createRouter, createWebHistory } from vue-router import remainingRouter from ./modules/remai…...
MySQL基本查询(二)
文章目录 UpdateDelete插入查询结果(select insert)聚合函数分组聚合统计 Update 1. 语法: set后面加列属性或者表达式 UPDATE table_name SET column expr [, column expr …][WHERE …] [ORDER BY …] [LIMIT …] 案例 将孙悟空同学的…...
MySQL:联合查询
目录 一、笛卡尔积 二、内连接 三、外连接 (1)左外连接 (2)右外连接 (3)全外连接 四、自连接 五、子查询 (1)单行子查询 (2)多行子查询 &…...
[算法学习]——通过RMQ与dfs序实现O(1)求LCA(含封装板子)
每周五篇博客:(3/5) 碎碎念 其实不是我想多水一篇博客,本来这篇是欧拉序的博客,结果dfs序也是可以O1求lca的,而且常数更优,结果就变成这样了。。。 前置知识 [算法学习]——dfs序 思想 分…...
复刻低成本机械臂 SO-ARM100 舵机配置篇(WSL)
视频讲解: 复刻低成本机械臂 SO-ARM100 舵机配置篇(WSL) 飞特舵机 组装之前需要配置舵机的ID,如下的网址为舵机的资料,实际上用不到,但可以mark在这里 Software-深圳飞特模型有限公司 User Guide里面可以…...
聊一聊接口测试更侧重于哪方面的验证
目录 一、功能性验证 输入与输出正确性 参数校验 业务逻辑覆盖 二、数据一致性验证 数据格式规范 数据完整性 数据类型与范围 三、异常场景验证 容错能力测试 边界条件覆盖 错误码与信息清晰度 四、安全与权限验证 身份认证 数据安全 防攻击能力 五、性能与可…...
【网络安全实验】SSL协议的应用
目录 一、SSL协议介绍 2.功能与特点 1)数据加密 2)身份验证 3)数据完整性校验 3.SSL的工作流程(握手过程) 1)客户端问候(ClientHello) 2)服务器响应(…...
测试——用例篇
目录 1. 测试用例 1.1 概念 2. 设计测试用例的万能公式 2.1 常规思考逆向思维发散性思维 2.2 万能公式 3. 设计测试用例例的方法 3.1 基于需求的设计方法 编辑 3.2 具体的设计方法 3.2.1 等价类 3.2.2 边界值 3.2.3 正交法 3.2.4 判定表法 3.2.5 场景法 3.2.6…...
计算机视觉技术的发展历程
计算机视觉技术的发展历程可以分为以下几个阶段: 早期探索阶段(1960s-1980s) 1960年代:计算机视觉的概念开始形成,研究者尝试让计算机识别和理解图像,主要集中在基础的图像处理,如边缘检测和特…...
docker 官方:在 alpine 上安装 python 的方法
在 alpine 上安装 python 的方法在 alpine 上安装 python 的方法: # alpine 官方 apk add python3 # docker 官方 docker pull python:3.11-alpine # 第三方 docker run --rm frolvlad/alpine-python3 python3 -c print("Hello World") # 编译安装 略 要点…...
mescroll.js 是在 H5端 运行的下拉刷新和上拉加载插件
1. mescroll的uni版本, 是专门用在uni-app的下拉刷新和上拉加载的组件, 支持一套代码编译到iOS、Android、H5、小程序等多个平台 2. mescroll的uni版本, 继承了mescroll.js的实用功能: 自动处理分页, 自动控制无数据, 空布局提示, 回到顶部按钮 .. 3. mescroll的uni版本, 丰富的…...
openEuler 22.03 安装 Mysql 5.7,RPM 在线安装
目录 一、检查系统是否安装其他版本Mariadb数据库二、安装 MySQL三、配置 MySQL四、修改默认存储路径五、开放防火墙端口六、数据备份七、生产环境优化八、常用命令 一、检查系统是否安装其他版本Mariadb数据库 # 查看已安装的 Mariadb 数据库版本 [rootopeneuler ~]# rpm -qa…...
云原生后端架构的挑战与应对策略
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 随着云计算、容器化以及微服务等技术的快速发展,云原生架构已经成为现代软件开发和运维的主流趋势。企业通过构建云原生后端系统,能够实现灵活的资源管理、快速的应用迭代和高效的系统扩展。然而,尽管云原…...
第十六届蓝桥杯 2025 C/C++组 客流量上限
目录 题目: 题目描述: 题目链接: 思路: 打表找规律: 核心思路: 思路详解: 得到答案的方式: 按计算器: 暴力求解代码: 快速幂代码: 位运…...
LeetCode算法题 (移除链表元素)Day15!!!C/C++
https://leetcode.cn/problems/remove-linked-list-elements/description/ 一、题目分析 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 今天的题目非常好理解,也就是要删除…...
stm32 HAI库 SPI(一)原理
基本特点 通信方式:同步、串行(串行、并行、并发,别再傻傻分不清了!_串行和并行的区别-CSDN博客)、全双工 (也可以选择半双工)速率:50MHZ以下数据格式:8位/16位传输顺序…...
仿腾讯会议——主界面设计创建房间加入房间客户端实现
1、实现腾讯会议主界面 2、添加Qt类WeChatDialog 3、定义创建会议和加入会议的函数 4、实现显示名字、头像的函数 调用函数 5、在中间者类中绑定函数 6、实现创建房间的槽函数 7、实现加入房间的槽函数 8、设置界面标题 9、服务器定义创建和进入房间函数 10、服务器实现创建房间…...
在pycharm profession 2020.3上安装使用xlwings
之前写了一篇文章在win7和python3.8上安装xlwings-CSDN博客 今天安装了pycharm profession 2020.3,自带Terminal,所以试一下安装xlwings。 一、新建一个python项目 二、安装xlwings 三、输入安装命令 pip3.exe install -i https://pypi.tuna.tsinghu…...
Mybatis学习笔记
介绍 MyBatis 是一款优秀的持久层开发框架,它在 Java 开发中被广泛应用,以下是对它的详细介绍: 概述 MyBatis 最初是 Apache 的一个开源项目 iBatis,2010 年这个项目由 Apache Software Foundation 迁移到了 Google Code&#…...
「Mac畅玩AIGC与多模态13」开发篇09 - 基于多插件协同开发智能体应用(天气+名言查询助手)
一、概述 本篇介绍如何在 macOS 环境下,同时接入多个自定义 OpenAPI 插件,实现智能体根据用户请求自动分析,调用天气查询或名言查询服务,完成多功能协同应用开发。 二、环境准备 1. 确认本地开发环境 macOS 系统Dify 平台已部署并可访问可正常访问外部 API 服务2. 准备天…...
C++--入门基础
C入门基础 1. C的第一个程序 C继承C语言许多大多数的语法,所以以C语言实现的hello world也可以运行,C中需要把文件定义为.cpp,vs编译器看是.cpp就会调用C编译器编译,linux下要用g编译,不再是gcc。 // test.cpp #inc…...
Ubuntu环境下如何管理系统中的用户:创建用户、删除用户、修改密码、切换用户、用户组管理
管理用户的操作需要root权限,在执行命令时需要加sudo,关于sudo命令可以看这篇:Linux_sudo命令的使用与机制 1、添加用户 使用命令: adduser 用户名,主要是按提示输入密码和用户信息(可直接回车使用默认配置…...
广告事件聚合系统设计
需求背景 广告事件需要进行统计,计费,分析等。所以我们需要由数据接入,数据处理,数据存储,数据查询等多个服务模块去支持我们的广告系统 规模上 10000 0000个点击(10000 00000 / 100k 1wQPS) …...
PDF智能解析与知识挖掘:基于pdfminer.six的全栈实现
前言 在数字化信息爆炸的时代,PDF(便携式文档格式)作为一种通用的电子文档标准,承载着海量的结构化与非结构化知识。然而,PDF格式的设计初衷是用于展示而非数据提取,这使得从PDF中挖掘有价值的信息成为数据…...
VGG网络模型
VGG网络模型 诞生背景 VGGNet是牛津大学计算机视觉组核谷歌DeepMind一起研究出来的深度卷积神经网络。VGG是一种被广泛使用的卷积神经网络结构,其在2014年的ImageNet大规模视觉识别挑战中获得亚军。 通常所说的VGG是指VGG-16(13层卷积层3层全连接层)。具有规律的…...
开闭原则与依赖倒置原则区别:原类不变,新增类(功能)vs 接口类不变,原实现类可变
好,我来用最通俗的方式,用角色扮演 场景对话,不讲术语,让你彻底明白「依赖倒置原则」和「开闭原则」的区别。 🎭 场景:你是老板(高层),你要雇人做事 一、【依赖倒置原则…...
【AI面试准备】Azure DevOps沙箱实验全流程详解
介绍动手实验:通过 Azure DevOps 沙箱环境实操,体验从代码提交到测试筛选的全流程。如何快速掌握,以及在实际工作中如何运用。 通过 Azure DevOps 沙箱环境进行动手实验,是快速掌握 DevOps 全流程(从代码提交到测试筛选…...
大数据面试问答-数据湖
1. 概念 数据湖(Data Lake): 以原始格式(如Parquet、JSON等)存储海量原始数据的存储库,支持结构化、半结构化和非结构化数据(如文本、图像)。采用Schema-on-Read模式,数…...
驱动开发系列56 - Linux Graphics QXL显卡驱动代码分析(三)显示模式设置
一:概述 如之前介绍,在qxl_pci_probe 中会调用 qxl_modeset_init 来初始化屏幕分辨率和刷新率,本文详细看下 qxl_modeset_init 的实现过程。即QXL设备的显示模式设置,是如何配置CRTC,Encoder,Connector 的以及创建和更新帧缓冲区的。 二:qxl_modeset_init 分析 in…...
沥青路面裂缝的目标检测与图像分类任务
文章题目是《A grid‐based classification and box‐based detection fusion model for asphalt pavement crack》 于2023年发表在《Computer‐Aided Civil and Infrastructure Engineering》 论文采用了一种基于网格分类和基于框的检测(GCBD)ÿ…...
单片机-STM32部分:0、学习资料汇总
飞书文档https://x509p6c8to.feishu.cn/wiki/Kv7VwjDD8idFWKkMj4acZA3lneZ 一、软件部分 STM32F1系列资料官网下载地址 https://www.stmcu.com.cn/Designresource/list/STM32F1/document/document STM32官方数据手册 有哪些版本,哪些资源,对应哪些IO…...
杭电oj(1180、1181)题解
目录 1180 题目 思路 问题概述 代码思路分析 1. 数据结构与全局变量 2. BFS 函数 bfs 3. 主函数 main 总结 代码 1181 题目 思路 1. 全局变量的定义 2. 深度优先搜索函数 dfs 3. 主函数 main 总结 代码 1180 题目 思路 注:当走的方向和楼梯方向一…...
内部类(3):匿名内部类
1 匿名类 请看下面这个例子: public class Parcel7 {public Contents contents() {return new Contents() {private int i 11;public int value() {return i;}};}public static void main(String[] args) {Parcel7 p new Parcel7();Contents c p.contents();} }…...
组件通信-$attrs
概述:$attrs用于实现当前组件的父组件,向当前组件的子组件通信(爷→孙)。 具体说明:$attrs是一个对象,包含所有父组件传入的标签属性。 注意:$attrs会自动排除props中声明的属性(可以认为声明过…...
Laravel Octane 项目加速与静态资源优化指南
Laravel Octane 项目加速与静态资源优化指南 一、Octane 核心加速配置 扩展安装与环境配置 composer require laravel/octane # 安装核心扩展php artisan octane:install # 生成配置文件(选择 Swoole/RoadRunner 等服务器)服务器参数调优 …...
【Linux】Petalinux U-Boot
描述 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 0 引导流程示例 1 进入U-Boot 2 常用U-Boot操作命…...
【KWDB 创作者计划】技术解读:多模架构、高效时序数据处理与分布式实现
技术解读:多模架构、高效时序数据处理与分布式实现 一、多模架构1.1 架构概述1.2 源码分析1.3 实现流程 二、高效时序数据处理2.1 处理能力概述2.2 源码分析2.3 实现流程 三、分布式实现3.1 分布式特性概述3.2 源码分析3.3 实现流程 四、总结 在当今数据爆炸的时代&…...
深度学习框架PyTorch——从入门到精通(YouTube系列 - 4)——使用PyTorch构建模型
这部分是 PyTorch介绍——YouTube系列的内容,每一节都对应一个youtube视频。(可能跟之前的有一定的重复) torch.nn.Module(PyTorch神经网络模块)和torch.nn.Parameter(PyTorch神经网络参数)常见…...
通过组策略使能长路径
打开组策略编辑器,依次展开: 计算机配置 > 管理模板然后双击 所有设置 右侧就会出现列表。接着在列表中找到 启用 win32 长路径 ,双击 改成 已启用 ,然后点击确定。最后重启计算机。...
Dubbo(90)如何设计一个支持多协议的Dubbo服务?
设计一个支持多协议的Dubbo服务需要考虑以下几个方面: 服务接口设计:确保服务接口的定义可以被不同协议实现。多协议配置:配置不同的协议,例如 Dubbo、HTTP、gRPC 等。服务注册与发现:确保服务能够在多个协议下注册和…...
JavaScript常规解密技术解析指南
第一章:密码学基础铺垫 逆向思维提示框 逆向思维在密码学中至关重要。当面对加密数据时,不要局限于常规的加密过程,而是要从解密的角度去思考。例如,在看到Base64编码的数据时,要立刻联想到它是如何从原始数据转换而…...
字符串的相关方法
1. equals方法的作用 方法介绍 public boolean equals(String s) 比较两个字符串内容是否相同、区分大小写 示例代码 public class StringDemo02 {public static void main(String[] args) {//构造方法的方式得到对象char[] chs {a, b, c};String s1 new String(chs);…...
云原生后端架构的实践与挑战:探索现代后端开发的未来
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 随着云计算的普及,云原生架构已经逐渐成为现代软件开发的主流方式。云原生后端架构通过容器化、微服务、自动化运维等技术,帮助企业构建具有高度可扩展性和可靠性的系统。在本文中,我们将深入探讨…...
MySQL基础关键_005_DQL(四)
目 录 一、分组函数 1.说明 2.max/min 3.sum/avg/count 二、分组查询 1.说明 2.实例 (1)查询岗位和平均薪资 (2)查询每个部门编号的不同岗位的最低薪资 3.having (1)说明 (2ÿ…...