5.小程序页面布局 - 记账页面(名目布局、绘制键盘、引用picker时间选择组件)

news2024/11/16 14:21:52

文章目录

  • 1. 小程序页面布局 - 记账页面
    • 1.1. 记账页面的布局
      • 1.1.1. 样例
      • 1.1.2. 页面解构
      • 1.1.3. 内容布局的实现
        • 1.1.3.1. 填坑(display:flex)
        • 1.1.3.2. 突破(display:grid)
        • 1.1.3.3. 应用
      • 1.1.4. 点击图片加背景色
      • 1.1.5. 添加一个键盘
      • 1.1.6. 日期选择组件

1. 小程序页面布局 - 记账页面

1.1. 记账页面的布局

1.1.1. 样例

我们参考样例来做,会事半功倍,一些互联网叙事也是这么来的。

1.1.2. 页面解构

  1. 分为头部和内容区2个部分

  2. 头部是一个可以点击进行切换的组件,要找一下vView哪种合适

  3. 内容区,看起来也应该是2个,分别是对应“支出”和“收入”的不同的类型

  4. 我们观察“支出”这个页面内容区域,是典型的类似网格的布局,一行4个图标,中间均分。用css3里面的术语来描述就是:justify-content: space-between

1.1.3. 内容布局的实现

  1. 绘制页面,渲染虚拟占位
  2. 找好对应的图标,写一个对应的js数组,替换虚拟占位
1.1.3.1. 填坑(display:flex)

先说一下坑,本来是准备使用display:flex布局来做,demo是这样:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>flex布局-添加账单</title>
    <style>
        .content {
            width: 390px;
            height: 500px;
            display: flex;
            flex-wrap: wrap;
            flex-direction: row;
            background-color: gray;
            justify-content: center;
            align-content: flex-start;
            margin: 0 auto;
        }

        .item {
            width: 100px;
            height: 100px;
            background-color: green;
            border: 1px solid black;
        }
    </style>
</head>

<body>

    <div class="page">
        <div class="content">
            <div class="item">1</div>
            <div class="item">2</div>
            <div class="item">3</div>
            <div class="item">4</div>
        </div>
    </div>

</body>

</html>

这个最后的效果是这样:

思考很久,最后一个4为什么是在中间呢?我明明写了align-content: flex-start;其实这个应该这么理解:

align-content: flex-start;是侧轴箭头从上到下的方式对齐。

在我们的demo代码里,4为什么居中,是因为使用了justify-content: center;这个是主轴居中对齐。

我们想要的:

  1. 主轴居中对齐
  2. 侧轴,最后也要从左往右排

思考一下:

能不能用 display: flex;不设置justify-content: center;呢?通过其他方式调整,让其居中。

好像不是特别的容易。有时间再细细思考能不能通过margin、padding的计算来做。

1.1.3.2. 突破(display:grid)

这是无意间学到的,在禹神的200集css课程里好像没看到有这个。

于是百度先找找资料:https://blog.csdn.net/cookcyq__/article/details/132382129

然后也是做了一个demo:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>grid布局</title>
    <style>
        .container {
            width: 1000px;
            display: grid;
            /* 4个 200*200的区域 */
            grid-template-columns: repeat(4, 200px);
            /* gap: 10px; */
            /* 行间距 */
            row-gap: 60px;
            /* 列间距 */
            column-gap: 20px;
            /* 4个盒子,在父容器中居中 */
            justify-content: center;
            background-color: gray;
            /* 让父容器在视口居中 */
            margin: 0 auto;
        }

        .component {
            background-color: orange;
            height: 200px;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="component">1</div>
        <div class="component">2</div>
        <div class="component">3</div>
        <div class="component">4</div>
        <div class="component">5</div>
        <div class="component">6</div>
        <div class="component">7</div>
        <div class="component">8</div>
        <div class="component">9</div>
        <div class="component">10</div>
    </div>
</body>

</html>

显示:

这个是能很好的满足我们的需求的。

1.1.3.3. 应用

最后的呈现效果:

代码还是比较少的,css也不多,实现的效果还是不错的:

<template>


        <view v-if="current_active=='支出'" class="imgs_content">
            <view class="item_view" v-for="(item, index) in expenditure_list" :key="index" @click="selectItem(item.id)">
                <image slot="icon" class="box-icon" :src="item.icon">
                </image>
                <view>{{item.text}}</view>
            </view>
        </view>

        <view v-if="current_active=='收入'" class="imgs_content">
            <view class="item_view" v-for="(item, index) in income_list" :key="index" @click="selectItem(item.id)">
                <image slot="icon" class="box-icon" :src="item.icon">
                </image>
                <view>{{item.text}}</view>
            </view>
        </view>


        <u-tabbar :list="tabbar" :mid-button="true"></u-tabbar>

</template>

<script>
    import {
        useStore
    } from 'vuex'


    export default {
        data() {
            return {
                tabbar: [],

                current_active: '支出',

                expenditure_list: [{
                        "id": "1",
                        "text": "餐饮",
                        "icon": "../../static/type/餐饮.png"
                    },
                    {
                        "id": "2",
                        "text": "零食",
                        "icon": "../../static/type/零食.png"
                    },
                    {
                        "id": "3",
                        "text": "水果",
                        "icon": "../../static/type/水果.png"
                    },
                    {
                        "id": "4",
                        "text": "购物",
                        "icon": "../../static/type/购物.png"
                    },
                    {
                        "id": "5",
                        "text": "孩子",
                        "icon": "../../static/type/孩子.png"
                    },
                    {
                        "id": "6",
                        "text": "交通",
                        "icon": "../../static/type/交通.png"
                    },
                    {
                        "id": "7",
                        "text": "旅行",
                        "icon": "../../static/type/旅行.png"
                    },
                    {
                        "id": "8",
                        "text": "住房",
                        "icon": "../../static/type/住房.png"
                    },
                    {
                        "id": "9",
                        "text": "养车",
                        "icon": "../../static/type/养车.png"
                    },
                    {
                        "id": "10",
                        "text": "通讯",
                        "icon": "../../static/type/通讯.png"
                    },
                    {
                        "id": "11",
                        "text": "医疗",
                        "icon": "../../static/type/医疗.png"
                    },
                    {
                        "id": "12",
                        "text": "日用",
                        "icon": "../../static/type/日用.png"
                    },
                    {
                        "id": "13",
                        "text": "娱乐",
                        "icon": "../../static/type/娱乐.png"
                    },
                    {
                        "id": "14",
                        "text": "美容",
                        "icon": "../../static/type/美容.png"
                    },
                    {
                        "id": "15",
                        "text": "社交",
                        "icon": "../../static/type/社交.png"
                    },
                    {
                        "id": "16",
                        "text": "数码",
                        "icon": "../../static/type/数码.png"
                    },
                    {
                        "id": "17",
                        "text": "书籍",
                        "icon": "../../static/type/书籍.png"
                    },
                    {
                        "id": "18",
                        "text": "学习",
                        "icon": "../../static/type/学习.png"
                    },
                    {
                        "id": "19",
                        "text": "礼物",
                        "icon": "../../static/type/礼物.png"
                    },
                    {
                        "id": "20",
                        "text": "办公",
                        "icon": "../../static/type/办公.png"
                    },
                    {
                        "id": "21",
                        "text": "停车",
                        "icon": "../../static/type/停车.png"
                    },
                    {
                        "id": "22",
                        "text": "水",
                        "icon": "../../static/type/水.png"
                    },
                    {
                        "id": "23",
                        "text": "电",
                        "icon": "../../static/type/电.png"
                    },
                    {
                        "id": "24",
                        "text": "燃气",
                        "icon": "../../static/type/燃气.png"
                    },
                    {
                        "id": "25",
                        "text": "其他",
                        "icon": "../../static/type/其他.png"
                    },
                    // {"id":"-999","text":"设置","icon":"../../static/setting.png"}
                ],
                income_list: [{
                        "id": "1",
                        "text": "工资",
                        "icon": "../../static/type/工资.png"
                    },
                    {
                        "id": "2",
                        "text": "年终奖",
                        "icon": "../../static/type/年终奖.png"
                    },
                    {
                        "id": "3",
                        "text": "兼职",
                        "icon": "../../static/type/兼职.png"
                    },
                    {
                        "id": "4",
                        "text": "理财",
                        "icon": "../../static/type/理财.png"
                    },
                    {
                        "id": "5",
                        "text": "投资",
                        "icon": "../../static/type/投资.png"
                    },
                    {
                        "id": "6",
                        "text": "稿酬",
                        "icon": "../../static/type/稿酬.png"
                    },
                    {
                        "id": "7",
                        "text": "收租",
                        "icon": "../../static/type/收租.png"
                    },
                    {
                        "id": "8",
                        "text": "经营",
                        "icon": "../../static/type/经营.png"
                    },
                    {
                        "id": "9",
                        "text": "礼金",
                        "icon": "../../static/type/礼金.png"
                    },
                    {
                        "id": "10",
                        "text": "利息",
                        "icon": "../../static/type/利息.png"
                    },
                    {
                        "id": "11",
                        "text": "其他",
                        "icon": "../../static/type/其他.png"
                    },
                    // {"id":"-999","text":"设置","icon":"../../static/setting.png"}
                ],
            }
        },
        methods: {
            selectItem(index) {
                uni.showToast({
                    title: index
                })
            }
        },
        onLoad() {
            const store = useStore(); //获取store对象
            /**
             * 示例中为每个tabbar页面都写了一遍tabbar变量,您可以将tabbar数组写入到vuex中,这样可以全局引用
             */
            this.tabbar = store.getters.getTabbar;
        }
    }
</script>

<style>
    .imgs_content {
        display: grid;
        grid-template-columns: repeat(4, 150rpx);
        row-gap: 30rpx;
        column-gap: 20rpx;
        justify-content: center;
        /* background-color: gray; */
    }
    .item_view {
        width: 150rpx;
        height: 150rpx;
        /* background-color: green; */
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        border: 1px solid rgb(248, 248, 248);
        border-radius: 100rpx;
    }

    .item_view .box-icon {
        width: 60rpx;
        height: 60rpx;    
    }
</style>

1.1.4. 点击图片加背景色

主要判断当item值相等的时候,给渲染样式。

主要代码:class="[select_item==item.id ? 'select-item':'']"

<view v-if="current_active=='支出'" class="imgs_content">
            <view class="item_view" :class="[select_item==item.id ? 'select-item':'']" v-for="(item, index) in expenditure_list" :key="index" 
            @click="selectItem(item.id)">
                <image slot="icon" class="box-icon" :src="item.icon">
                </image>
                <view>{{item.text}}</view>
            </view>
        </view>

CSS:

.select-item {
        background-color: #FDDC2D;
    }

JS:

methods: {
  selectItem(index) {
    this.select_item = index;
},

这样,点击后,就能有背景色,效果如下:

1.1.5. 添加一个键盘

设计思路:

键盘是其实是自己绘制出来的,不用键盘组件,方便后期的个性化定制。

键盘是放在一个popup弹出框组件里的,在点击了图片的时候,弹出显式。

  1. 页面代码
<u-popup v-model="popup_show" mode="bottom" border-radius="14" height="600rpx">
        <view class="keyboardbox">
            <view style="display: flex; ; font-size: 50rpx; justify-content: space-between; padding: 0 20rpx;">
                <view style="font-size: 40rpx;">{{item_name}}</view>
                <view color = '#bbb' >{{bill_money}}</view>
            </view>
            <u-input
                placeholder="备注: 点击填写备注"
                :border="true"
                v-model="bill_desc"
                clearable
            ></u-input>
            <view class="numkeyboard">
                <view class="num-area">
                    <view class="row" v-for="(item,index) in numKeybordList" :key="index">
                        <view class="item"
                            v-for="(ite,idx) in item" hover-class="active" :hover-start-time="0"
                            :hover-stay-time="5" :key="idx" @tap="input(ite)">{{ite}}</view>
                    </view>
                </view>
                <view class="btn-area">
                    <view :class="['item','dateChoose']" hover-class="active" :hover-start-time="0" :hover-stay-time="5"
                        @tap="dateVal">
                            <view class="uni-input">{{choosedDateShow}}</view>
                    </view>
                    <view :class="['item','del']" hover-class="active" :hover-start-time="0" :hover-stay-time="5"
                        @tap="deleteVal">
                        删除
                    </view>
                    <view class="confirem item" hover-class="active" :hover-start-time="0" :hover-stay-time="5"
                        @tap="submit">
                        完成
                    </view>
                </view>
            </view>
        </view>
    </u-popup>

<u-picker mode="time" 
        :default-time="date_picker_date" 
        v-model="date_picker_show" 
        :params="date_picker_params"
        @confirm="date_pick_ok"
        >
    </u-picker>
  1. 初始化data

    // 在点击了支出图片之后,显式弹出框,在其中输入金额或增加备注
                    popup_show: false,
                    // 选择时间时候的时间选择组件,仅展示年月日
                    date_picker_params: {
                        year: true,
                        month: true,
                        day: true,
                        hour: false,
                        minute: false,
                        second: false
                    },
                    // 默认不显示时间选择组件。在点击了“今天”之后,可以进行选择其他日期
                    date_picker_show: false,
                    // 选择的时间,默认是今天
                    date_picker_date: this.getTodayDateTime().substring(0, 10),
                    numKeybordList: [  // 键盘数值
                        [1, 2, 3],
                        [4, 5, 6],
                        [7, 8, 9],
                        [0, '.']
                    ],
                    // 自行填写的此笔账单的金额
                    bill_money: '0.00',
                    // 记账时候填写的备注,可以不填。
                    bill_desc: '',  
    
                    // 点击图片时,用于显示要记账项目的名称。比如:餐饮、交通等
                    item_name: '',  
                    // 点击图片时,对应项目的图片相对路径,例如:"../../static/type/餐饮.png"
                    item_img_path: '',
                    // 点击图片时,对应项目的id
                    item_id: -1,
    
    1. css样式

      <style lang="scss">
          .keyboardbox {
              width: 100%;
              position: absolute;
              left: 0;
              bottom: 0;
              background-color: #FFFFFF;
      
              .numkeyboard {
                  height: 432rpx;
                  display: flex;
                  background-color: #ebedf0;
      
                  .btn-area {
                      width: 180rpx;
                      height: 100%;
                      display: flex;
                      flex-direction: column;
      
                      .item {
                          width: 100%;
                          display: flex;
                          justify-content: center;
                          align-items: center;
                          flex-grow: 1;
                      }
      
                      .del {
                          background-color: #ebedf0;
                          color: #333;
      
                          &.active {
                              background-color: #f1f3f5;
                          }
                      }
      
                      .confirem {
                          background-color: #4fae70;
                          color: #FFFFFF;
      
                          &.active {
                              background-color: #4fae70;
                          }
                      }
      
                      .dateChoose {
                          background-color: #f9db56;
                          color: #2d2d2d;
      
                          &.active {
                              background-color: #f9db56;
                          }
                      }
                  }
      
                  .num-area {
                      flex-grow: 1;
                      display: flex;
                      flex-wrap: wrap;
      
                      .row {
                          width: 100%;
                          height: 25%;
                          display: flex;
                          margin-top: 1px;
      
                          .item {
                              flex-grow: 1;
                              height: 100%;
                              display: flex;
                              justify-content: center;
                              align-items: center;
                              background-color: #FFFFFF;
                              border-right: 1px solid #ebedf0;
                              width: 33.33%;
      
                              &.active {
                                  background-color: #ebedf0;
                              }
      
                              &.z {
                                  flex-grow: 2;
                                  width: 66.66%;
                              }
      
                              &.disabled {
                                  background: #FFFFFF;
                                  color: #B9B9B9;
                              }
                          }
                      }
      
                  }
              }
          }
      </style>
      

呈现的效果如下:

1.1.6. 日期选择组件

最好的使用方式还是看官网:

picker选择器:https://vkuviewdoc.fsq.pub/components/picker.html

为了减少跳出感,直接写好:

<u-picker mode="time" 
		:default-time="date_picker_date" 
		v-model="date_picker_show" 
		:params="date_picker_params"
		@confirm="date_pick_ok"
		>
	</u-picker>
// 选择时间时候的时间选择组件,仅展示年月日
date_picker_params: {
  year: true,
  month: true,
  day: true,
  hour: false,
  minute: false,
  second: false
},
// 默认不显示时间选择组件。在点击了“今天”之后,可以进行选择其他日期
date_picker_show: false,
// 选择的时间,默认是今天
date_picker_date: this.getTodayDateTime().substring(0, 10),
// 设置 this.date_picker_show = true; 即可让日期选择组件展示出来。

date_pick_ok(callback_data) {
  this.date_picker_date = callback_data.year + '-' + callback_data.month + '-'  + callback_data.day;
  console.log('选择了:' + this.date_picker_date);
},

getTodayDateTime() {
  var date = new Date();
  var Y = date.getFullYear() + '-';
  var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1):date.getMonth()+1) + '-';
  var D = (date.getDate()< 10 ? '0'+date.getDate():date.getDate())+ ' ';
  var h = (date.getHours() < 10 ? '0'+date.getHours():date.getHours())+ ':';
  var m = (date.getMinutes() < 10 ? '0'+date.getMinutes():date.getMinutes()) + ':';
  var s = date.getSeconds() < 10 ? '0'+date.getSeconds():date.getSeconds();
  return Y+M+D+h+m+s;
},

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

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

相关文章

Liunx基本指令以及权限(个人笔记)

Linux指令和权限 1.指令1.1ls指令1.2pwd命令1.3cd指令1.4touch指令1.5mkdir指令1.6rm指令1.7man指令1.8cp指令1.9mv指令1.10cat指令1.11less指令1.12head指令1.13tail指令1.14date显示1.15Cal指令1.16find指令1.17grep指令1.18zip/unzip指令1.19tar指令1.20bc指令1.21uname -r指…

SQLServer表变量

表变量是本地变量的一种特殊类型&#xff0c;它有助于临时存储数据; 要声明表变量&#xff0c;使用declare,而局部变量的名称必须以符号开头&#xff1b; TABLE关键字指定此变量是表变量&#xff0c;然后还要定义列名和数据类型&#xff1b; 下面定义一个表变量&#xff0c…

光伏项目怎么做预算?

随着可再生能源行业的蓬勃发展&#xff0c;光伏行业也得到了扩张。许多想要加入光伏项目投资的人&#xff0c;都在为怎样为项目做预算而苦恼&#xff0c;今天我就来跟大家分析下可以怎么做。 一、了解市场需求&#xff0c;确定预算目标 在制定光伏项目预算方案之前&#xff0c…

Vue CLI 的服务介绍与使用(2024-05-20)

1、介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统&#xff0c;提供&#xff1a; 通过 vue/cli 实现的交互式的项目脚手架。 通过 vue/cli vue/cli-service-global 实现的零配置原型开发。 一个运行时依赖 (vue/cli-service)&#xff0c;该依赖&#xff1a; 可升级…

docker-如何将容器外的脚本放入容器内,将容器内的脚本放入容器外

文章目录 前言docker-如何将容器外的脚本放入容器内&#xff0c;将容器内的脚本放入容器外、1. docker 如何将容器外的脚本放入容器内1.1. 验证 2. 将容器内的脚本放入容器外 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&…

JKI State Machine的特点与详细介绍

JKI State Machine是一种基于状态机的LabVIEW架构&#xff0c;由JKI公司开发。它广泛用于开发复杂的应用程序&#xff0c;提供了一种灵活且可扩展的结构&#xff0c;适用于多种任务的管理和执行。其设计目标是提高开发效率、代码可读性和可维护性。 2. 基本架构 JKI State Ma…

Spring Boot 中缓存的用法

缓存&#xff08;Caching&#xff09;是提升应用性能的重要手段之一&#xff0c;通过减少不必要的数据计算和数据库访问&#xff0c;显著提高系统的响应速度。在 Spring Boot 中&#xff0c;缓存机制被集成得非常好&#xff0c;使得我们能够快速、方便地使用缓存功能。本文将介…

基于Android studio 订餐、外卖系统

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 具有登录&#xff0c;注册&#xff0c;修改密码&#xff0c;查看关于开发信息(可以填写自己的信息) 我的&#xff1a;可以查看菜品详情&#xff0c;填写份数&#xff0c;加入购物车&#xff0c; 购物车&#xff1a;可…

【IDEA软件应用篇】IDEA基础开发设置和开发快捷键

IDEA是一种集成开发环境&#xff0c;可以运行java代码。 本篇文章你将收获到下面的知识&#xff1a; &#xff08;1&#xff09;IDEA如何设置字体大小快捷键 &#xff08;2&#xff09;如何解决每次进IDEA时&#xff0c;进去的页面都是上次使用完时的那个页面 &#xff08;3&am…

使用yum下载rpm包

1、命令格式 yum install --downloadonly --downloaddir<directory> <package-name> --downloadonly&#xff1a;只下载选项而不进行安培训--downloaddir&#xff1a;指定下载目录&#xff0c;默认下载的RPM包会保在/var/cache/yum/x86_64/[centos|fedora-versio…

Linux系统下Mysql忘记密码怎么解决

一、对Mysql配置文件进行设置 1、找到/etc/mysql/my.cnf路径下&#xff0c;用Vi命令编辑my.cnf配置文件&#xff0c;命令如下&#xff1a; # 以管理员身份登录 sudo su # 输入管理员密码 # 登录成功后&#xff0c;找到Mysql的配置文件-->Mysql配置文件默认在此 cd /etc/my…

异相(相位不平衡)状态下的合成器效率分析-理论与ADS仿真

异相&#xff08;相位不平衡&#xff09;状态下的合成器效率分析-理论与ADS仿真 12、ADS使用记录之功分器设计中简单介绍了威尔金森功分器的设计方法。一般来讲&#xff0c;功分器反过来就能作为合路器使用&#xff0c;在输入信号相位一致的情况下&#xff0c;各种合路器的效率…

YOLOv8独家改进:mamba系列 | 视觉态空间(VSS)块结合C2f二次创新,提升捕捉广泛的上下文信息 | VMamba2024年最新成果

💡💡💡创新点:Mamba UNet采用了纯基于视觉Mamba(VMamba)的编码器-解码器结构,融入了跳跃连接,以保存网络不同规模的空间信息。这种设计有助于全面的特征学习过程,捕捉医学图像中复杂的细节和更广泛的语义上下文。我们在VMamba块中引入了一种新的集成机制,以确保编…

Linux之共享内存mmap用法实例(六十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

通过注意力调节实现更好的文本到图像生成对齐

近年来&#xff0c;生成性AI技术在众多领域取得了前所未有的进步。大规模预训练模型的出现激发了各种下游任务中的新应用。这在文本到图像生成领域尤为明显&#xff0c;例如Stable Diffusion、DALL-E 2和Imagen等模型已经显著展示了它们的能力。尽管如此&#xff0c;复杂提示中…

Go语言的pprof工具是如何使用的?

文章目录 Go语言的pprof工具详解pprof的使用runtime/pprofnet/http/pprof 快速开始获取采样数据通过pprof工具进行性能分析总结 Go语言的pprof工具详解 Go语言作为一个高性能、高并发的编程语言&#xff0c;对性能优化有着极高的要求。在Go语言的标准库中&#xff0c;pprof是一…

架构篇44:互联网架构模板:“平台”技术

文章目录 运维平台测试平台数据平台管理平台小结当业务规模比较小、系统复杂度不高时,运维、测试、数据分析、管理等支撑功能主要由各系统或者团队独立完成。随着业务规模越来越大,系统复杂度越来越高,子系统数量越来越多,如果继续采取各自为政的方式来实现这些支撑功能,会…

回溯大法总结

前言 本篇博客将分两步来进行&#xff0c;首先谈谈我对回溯法的理解&#xff0c;然后通过若干道题来进行讲解&#xff0c;最后总结 对回溯法的理解 回溯法可以看做蛮力法的升级版&#xff0c;它在解决问题时的每一步都尝试所有可能的选项&#xff0c;最终找出所以可行的方案…

对安卓手机上损坏的 SD 卡进行故障排除:恢复提示和修复

概括 如果您总是在旅途中&#xff0c;那么您很可能每天都在使用 SD 卡。这些微小但功能强大的闪存已经变得和手机的内部存储一样有用。它们可以存储数据并移动您想要的任何数据类型&#xff0c;因为它们在 Android 设备上添加了额外的存储空间。不幸的是&#xff0c;他们可能会…

产品推荐 | 基于Xilinx XCKU115的半高PCIe x8 硬件加速卡

一、板卡概述 本板卡系我公司自主研发&#xff0c;采用Xilinx公司的XCKU115-3-FLVF1924-E芯片作为主处理器&#xff0c;主要用于FPGA硬件加速。板卡设计满足工业级要求。如下图所示&#xff1a; 二、功能和技术指标 板卡功能 参数内容 主处理器 XCKU115-3-FLVF1924-E 板卡…