Python入门自学进阶-Web框架——33、瀑布流布局与组合查询

news2025/1/19 14:14:53

一、瀑布流,是指页面布局中,在显示很多图片时,图片及文字大小不相同,导致页面排版不美观

如上图,右边的布局,因为第一行第一张图片过长,第二行的第一张被挤到第二列了。示例:

def flow(request):
    user_list = [
        {'name': '张1三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一群老油条烦死打法撒飞洒的飞洒烦死哒防守打法噶三群老油条烦死哒范德萨分散发士大夫士大夫是打发发防守打法烦死哒防守打法噶第三方三'},
        {'name': '张2三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一群老油'},
        {'name': '张3三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一群老油条烦分打发发防守打法撒飞洒的飞洒烦死哒防守打法噶第三'},
        {'name': '张4三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一群老油条烦死哒范德萨分散发士大夫士大夫是打发发防守打法烦死哒防守打法噶第三方三'},
        {'name': '张5三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一群老油条烦死哒范德萨分散发士大夫士大夫是打发发防守打法'},
        {'name': '张6三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一群老油条烦死哒范洒的飞洒烦死哒防守打法噶第三方三'},
        {'name': '张7三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一群老油条烦死哒范德萨分散发士大夫士大夫是打发发防守打噶第三方三'},
        {'name': '张8三', 'src': '/static/image/1.jpg', 'company': '特事特办中国特色一公司','summary': '一法撒飞洒的飞洒烦死哒防守打法噶第三方三'},
    ]
    return render(request,"flow.html",{'user_list':user_list})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .container{
            width: 900px;
            margin: 0 auto;
        }
        .container .item{
            width: 300px;
            float: left;
        }
        .container .item img{
            width: 200px;
            height: 180px;
        }
        .container .item p{
            padding-left: 10px;
            padding-right: 40px;
        }
    </style>
</head>
<body>
    <div class="container">
        {% for row in user_list %}
            <div class="item">
                <img src="{{ row.src }}">
                <p>{{ row.name }}</p>
                <p>{{ row.summary }}</p>
            </div>
        {% endfor %}
    </div>
</body>
</html>

此时显示如下:

很不美观,解决方法,是先将页面分为三个div,让后让图片依次在三个div中排放。

纯静态HTML实现:

<div class="container">
        <div style="width: 900px;margin: 0 auto;">
            <div style="width: 280px;float: left;">

                <div class="item">
                    <img src="{{ user_list.0.src }}">
                    <p>{{ user_list.0.name }}1</p>
                    <p>{{ user_list.0.summary }}<br>fdsafdsafd<br>safsdafsd<br>afsdaff<br>assdf</p>
                </div>
                <div class="item">
                    <img src="{{ user_list.0.src }}">
                    <p>{{ user_list.0.name }}4</p>
                    <p>{{ user_list.0.summary }}<br>fdsafdsafd<br>safsdafsd<br>afsdaff<br>assdf</p>
                </div>
            </div>
            <div style="width: 280px;float: left;">
                <div class="item">
                    <img src="{{ user_list.0.src }}">
                    <p>{{ user_list.0.name }}2</p>
                    <p>{{ user_list.0.summary }}</p>
                </div>
                <div class="item">
                    <img src="{{ user_list.0.src }}">
                    <p>{{ user_list.0.name }}5</p>
                    <p>{{ user_list.0.summary }}<br>fdsafdsafd<br>safsdafsd<br>afsdaff<br>assdf</p>
                </div>
            </div>
            <div style="width: 280px;float: left;">
                <div class="item">
                    <img src="{{ user_list.0.src }}">
                    <p>{{ user_list.0.name }}3</p>
                    <p>{{ user_list.0.summary }}</p>
                </div>
            </div>

        </div>
    </div>

这就实现了瀑布流,使用模板渲染:最初想法如下

       <div style="width: 900px;margin: 0 auto;">
            {%  for row in user_list %}
            <div style="width: 300px;float: left;">
                {% if forloop.counter%3 == 1 %}   {# 这里出错 #}
                <div class="item">
                    <img src="{{ row.src }}">
                    <p>{{ row.name }}</p>
                    <p>{{ row.summary }}</p>
                </div>
                {% endif %}
            </div>
            <div style="width: 300px;float: left;">
                {% if forloop.counter%3 == 2 %}   {# 这里出错 #}
                <div class="item">
                    <img src="{{ row.src }}">
                    <p>{{ row.name }}</p>
                    <p>{{ row.summary }}</p>
                </div>
                {% endif %}
            </div>
            <div style="width: 300px;float: left;">
                {% if forloop.counter%3 == 0 %}   {# 这里出错 #}
                <div class="item">
                    <img src="{{ row.src }}">
                    <p>{{ row.name }}</p>
                    <p>{{ row.summary }}</p>
                </div>
                {% endif %}
            </div>
            {% endfor %}
        </div>

取模操作%无法在模板中使用,因为使用到了if语句,自定义标签不能用在模板if语句中,所以只能考虑使用过滤器filter:

<div class="container">
            <div style="width: 300px;float: left">
            {%  for row in user_list %}
                {% if forloop.counter|mymod:'3,1' %}
                <div class="item">
                    <img src="{{ row.src }}">
                    <p>{{ row.name }}{{ forloop.counter }}</p>
                    <p>{{ row.summary }}</p>
                </div>
                {% endif %}
            {% endfor %}
            </div>
            <div style="width: 300px;float: left;">
            {%  for row in user_list %}
                {% if forloop.counter|mymod:'3,2' %}
                <div class="item">
                    <img src="{{ row.src }}">
                    <p>{{ row.name }}{{ forloop.counter }}</p>
                    <p>{{ row.summary }}</p>
                </div>
                {% endif %}
            {% endfor %}
            </div>
            <div style="width: 300px;float: left;">
            {%  for row in user_list %}
                {% if forloop.counter|mymod:'3,0' %}
                <div class="item">
                    <img src="{{ row.src }}">
                    <p>{{ row.name }}{{ forloop.counter }}</p>
                    <p>{{ row.summary }}</p>
                </div>
                {% endif %}
            {% endfor %}
            </div>
        </div>
# 过滤器
from django import template

register = template.Library()

@register.filter
def mymod(v1,v2):
    n1,n2 = v2.split(',')

    if v1%int(n1) == int(n2):
        return True
    return False

以上是模板渲染,使用了多次的循环,效率不是很好。

使用JS实现,使用Ajax发送一个请求,得到数据,然后在js中进行余数的判断和前端的生成。

二、组合搜索/组合筛选

简单的组合搜索如下图:

建立相应的model:

from django.db import models
# Create your models here.

class Level(models.Model):
    name = models.CharField(max_length=32)

    def __str__(self):
        return self.name

class Category(models.Model):
    name = models.CharField(max_length=32)
    def __str__(self):
        return self.name

class Video(models.Model):
    lv = models.ForeignKey(Level,on_delete=models.DO_NOTHING)
    cg = models.ForeignKey(Category,on_delete=models.DO_NOTHING)

    title = models.CharField(verbose_name="标题",max_length=64)
    summary = models.CharField(verbose_name="简介",max_length=128)
    img = models.ImageField(verbose_name="图片",upload_to="./static/images/video")
    href = models.CharField(verbose_name="视频地址",max_length=256)

    create_date = models.DateTimeField(auto_now_add=True)

创建路由项,这里查询的条件组合在路由项中,如下:

path('video-<int:cg_id>-<int:lv_id>.html',views.video,name='video_alais'),

cg_id代表种类的id,lv_id代表级别的id

对应的视图函数:

def video(req,*args,**kwargs):
    condition = {}
    for k,v in kwargs.items():
        if v != 0:
            condition[k] = v
    print(condition)
    category_list = models.Category.objects.all()
    level_list = models.Level.objects.all()

    result = models.Video.objects.filter(**condition)
    return  render(req,'video.html',{
        'category_list':category_list,
        'level_list':level_list,
        'result':result,
        'arg_dict':kwargs,
    })

前端模板文件video.html:

{% load tagandfilter %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .filter a {
            display: inline-block;
            margin: 5px;
            padding: 3px 5px;
        }
        .filter a.active{
            background-color: brown;
            color: white;
        }
    </style>
</head>
<body>
    <h1>筛选条件</h1>
    <div class="filter">
        <div>
            {% total_tag arg_dict "cg_id" %}:
            {% for item in category_list %}
                {% categroy_tag item arg_dict %}
            {% endfor %}
        </div>
        <div>
            {% total_tag arg_dict "lv_id" %}:
            {% for item in level_list %}
                {% level_tag item arg_dict %}
            {% endfor %}
        </div>
    </div>

    <h1>查询结果</h1>
    <div class="content">
        {% for item in result %}
        <div style="width:180px;height:200px;float: left">
            <img width="150px" height="200px" src="{{ item.img }}">
            <p>{{ item.title }}</p>
            <p>{{ item.summary }}</p>
            <p>{{ item.create_date }}</p>
        </div>
        {% endfor %}
    </div>
</body>
</html>

模板中使用了自定义标签:

@register.simple_tag
def categroy_tag(obj,arg_dict):
    '''
    生成种类的A标签
    :param obj:
    :param arg_dict:
    :return:
    '''

    url = reverse("video_alais",kwargs={'cg_id':obj.id,'lv_id':arg_dict.get('lv_id')})

    if obj.id == arg_dict.get('cg_id'):
        tag = "<a class='active' href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)
    else:
        tag = "<a  href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)

@register.simple_tag
def level_tag(obj,arg_dict):
    '''
    生成级别的A标签
    :param obj:
    :param arg_dict:
    :return:
    '''
    url = reverse("video_alais", kwargs={'lv_id': obj.id, 'cg_id': arg_dict.get('cg_id')})
    if obj.id == arg_dict.get('lv_id'):
        tag = "<a class='active' href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)
    else:
        tag = "<a  href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)

@register.simple_tag
def total_tag(arg_dict,key):
    if key == 'cg_id':
        url = reverse("video_alais", kwargs={'cg_id': 0, 'lv_id': arg_dict.get('lv_id')})
    elif key == 'lv_id':
        url = reverse("video_alais", kwargs={'lv_id': 0, 'cg_id': arg_dict.get('cg_id')})
    else:
        url = ""
    tag = "<a  href='%s'>全部:</a>" %(url)
    return mark_safe(tag)

增加一个关联表:Direction,与种类表形成多对多关系:

class Direction(models.Model):
    name = models.CharField(max_length=32)
    d_2_c = models.ManyToManyField("Category")

使分类根据方向动态变化:大体如下

因为多了一个方向的选择项,路由项修改如下:

path('video2-<int:dr_id>-<int:cg_id>-<int:lv_id>.html',views.video2,name='video_alais2'),

视图函数views.video2:

def video2(req,*args,**kwargs):
    condition = {}
    dr_id = kwargs.get('dr_id')
    cg_id = kwargs.get('cg_id')
    lv_id = kwargs.get("lv_id")
    # 可能的请求:
    # 0-0-0.html 方向、分类、级别都是全部
    # 1-0-0.html 方向选择了1,分类、级别是全部,此时分类应该根据方向列出有哪些分类
    # 1-2-0.HTML 方向选择了1,分类选择了2,级别全部;分类先要根据方向列出可能的分类,在根据分类选择video
    #            还有一种可能,方向选择了1,而1方向对应的分类没有2,此时应该处理成分类为全部,即0

    direction_list = models.Direction.objects. all()
    level_list = models.Level.objects.all()

    if dr_id == 0:
        # 未选择方向
        category_list = models.Category.objects.all()
        if cg_id == 0:
            pass   # 未选择分类 - 未选择方向
        else:
            # 选择了分类 - 未选择方向
            models.Video.objects.filter(cg_id = cg_id)
            condition['cg_id'] = cg_id
    else:
        # 选择了方向,将方向对应的分类项查询出来,对象的集合,是QuerySet
        category_list = models.Category.objects.filter(direction=dr_id)
        # 选取其中的id字段对象集合
        v = category_list.values_list('id')
        # print(v.query)  # 打印出查询的SQL语句
        cg_id_list = list(zip(*v))[0]  # id字段集合形成元组,即(1,2,3)的样子
        if cg_id == 0:
            # 未选择分类 - 选择了方向
            # 这种情况下,选择的条件就是选择全部分类id在cg_id_list元组中的所有video
            # 即在此方向下的所有分类都要查询出来
            condition['cg_id__in'] = cg_id_list
        else:
            # 选择了分类,并且分类在cg_id_list中
            if cg_id in cg_id_list:
                condition['cg_id'] = cg_id
            else:  # 选择了分类,并且分类不在cg_id_list中,这时就选择全部cg_id_list的全部
                condition['cg_id__in'] = cg_id_list
                kwargs['cg_id'] = 0

    if lv_id != 0:  # 级别是单独的
        condition['lv_id'] = lv_id

    result = models.Video.objects.filter(**condition)  # 根据条件最终查询的video结果集合

    return  render(req,'video2.html',{
        'direction_list':direction_list,
        'category_list':category_list,
        'level_list':level_list,
        'result':result,
        'arg_dict':kwargs,
    })

前端模板video2.html

{% load tagandfilter %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .filter a {
            display: inline-block;
            margin: 5px;
            padding: 3px 5px;
        }
        .filter a.active{
            background-color: brown;
            color: white;
        }
    </style>
</head>
<body>
    <h1>筛选条件</h1>
    <div class="filter">
        <div>
            {% total_tag_2 arg_dict "dr_id" %}
            {% for item in direction_list %}
               <!-- if kwargs.dr_id = item.id
                    加入样式
                else:
                    没有样式
                -->
                {% dr_tag item arg_dict %}
            {% endfor %}
        </div>
        <div>
            {% total_tag_2 arg_dict "cg_id" %}
            {% for item in category_list %}
            {% cg_tag item arg_dict %}
            {% endfor %}
        </div>
        <div>
            {% total_tag_2 arg_dict "lv_id" %}
            {% for item in level_list %}
                {% lv_tag item arg_dict %}
            {% endfor %}
        </div>
    </div>

    <h1>查询结果</h1>
    <div class="content">
        {% for item in result %}
        <div style="width:180px;height:200px;float: left">
            <img width="150px" height="200px" src="{{ item.img }}">
            <p>{{ item.title }}</p>
            <p>{{ item.summary }}</p>
            <p>{{ item.create_date }}</p>
        </div>
        {% endfor %}
    </div>
</body>
</html>

自定义的标签:

@register.simple_tag
def dr_tag(obj,arg_dict):
    '''
    生成A标签
    :param obj:
    :param arg_dict:
    :return:
    '''
    url = reverse('video_alais2',kwargs={'dr_id':obj.id,'cg_id':arg_dict.get('cg_id'),'lv_id':arg_dict.get('lv_id')})
    if obj.id == arg_dict.get('dr_id'):
        tag = "<a class='active' href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)
    else:
        tag = "<a  href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)

@register.simple_tag
def cg_tag(obj,arg_dict):
    '''
    生成A标签
    :param obj:
    :param arg_dict:
    :return:
    '''
    url = reverse('video_alais2',kwargs={'dr_id':arg_dict.get('dr_id'),'cg_id':obj.id,'lv_id':arg_dict.get('lv_id')})
    if obj.id == arg_dict.get('cg_id'):
        tag = "<a class='active' href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)
    else:
        tag = "<a  href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)

@register.simple_tag
def lv_tag(obj,arg_dict):
    '''
    生成A标签
    :param obj:
    :param arg_dict:
    :return:
    '''
    url = reverse('video_alais2',kwargs={'dr_id':arg_dict.get('dr_id'),'cg_id':arg_dict.get('cg_id'),'lv_id':obj.id})
    if obj.id == arg_dict.get('lv_id'):
        tag = "<a class='active' href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)
    else:
        tag = "<a  href='%s'>%s</a>" %(url,obj.name)
        return mark_safe(tag)

@register.simple_tag
def total_tag_2(arg_dict,key):
    if key == 'dr_id':
        url = reverse("video_alais2", kwargs={'dr_id':0,'cg_id': arg_dict.get('cg_id'), 'lv_id': arg_dict.get('lv_id')})
    elif key == 'cg_id':
        url = reverse("video_alais2", kwargs={'dr_id': arg_dict.get('dr_id'), 'cg_id': 0, 'lv_id': arg_dict.get('lv_id')})
    elif key == 'lv_id':
        url = reverse("video_alais2", kwargs={'dr_id':arg_dict.get('dr_id'),'lv_id': 0, 'cg_id': arg_dict.get('cg_id')})
    else:
        url = ""
    if arg_dict.get(key) == 0:
        tag = "<a  class='active' href='%s'>全部:</a>" %(url,)
    else:
        tag = "<a  href='%s'>全部:</a>" % (url,)
    return mark_safe(tag)

主要的环节是逻辑上根据方向、分类、级别的选择,动态显示各个项,然后在综合条件下选择出video。

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

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

相关文章

大数据框架之Hadoop:MapReduce(八)常见错误及解决方案

1、导包容易出错。尤其Text和CombineTextInputFormat。 2、Mapper中第一个输入的参数必须是LongWritable或者NullWritable&#xff0c;不可以是IntWritable. 报的错误是类型转换异常。 3、java.lang.Exception: java.io.IOException: Illegal partition for 13926435656 (4)&…

51单片机LCD1602的使用

文章目录前言一、LCD1602简单介绍二、LCD1602中各个引脚的作用四、LCD1602命令解析1.写命令2.写数据3.清屏指令4.光标归位指令5.进入模式设置指令6.显示开关控制指令7.设定显示屏或光标移动方向指令三、LCD1602代码编写四、代码测试总结前言 本篇文章将为大家讲解LCD1602的使用…

CPU扫盲-CPU如何执行指令以及流水线技术

在CPU扫盲-CPU与指令集中阐述了CPU与指令集之间的关系&#xff0c;并在CPU扫盲-自研指令集中以创造者的身份深入讲解了指令集&#xff0c;这篇文章则是针对CPU的专场&#xff0c;以x86架构下的CPU为例具体分析一下CPU如何执行指令。 计算机基本硬件由控制器、储存器、运算器、输…

基于java的五子棋游戏设计

技术&#xff1a;Java、JSP等摘要&#xff1a;随着互联网迅速的发展&#xff0c;网络游戏已经成为人们普遍生活中不可或缺的一部分&#xff0c;它不仅能使人娱乐&#xff0c;也能够开发人的智力&#xff0c;就像本文所主要讲的五子棋游戏一样能挖掘人们聪明的才干与脑袋的机灵程…

【大数据 AI 人工智能】数据科学家必学的 9 个核心机器学习算法

如今,机器学习正改变着我们的世界。借助机器学习(ML),谷歌在为我们推荐搜索结果,奈飞在为我们推荐观看影片,脸书在为我们推荐可能认识的朋友。 机器学习从未像在今天这样重要。但与此同时,机器学习这一领域也充斥着各种术语,晦涩难懂,各种机器学习的算法每年层出不穷…

思科2.7.6 Packet Tracer - Implement Basic Connectivity(作业)

Packet Tracer - 实施基本连接地址分配表目标第 1 部分&#xff1a;对 S1 和 S2 执行基本配置第 2 部分&#xff1a;配置 PC第 3 部分&#xff1a;配置交换机管理界面背景信息在这个练习中&#xff0c;您会首先执行基本的交换机 配置。然后您会通过在交换机和 PC 上配置 IP 编址…

【C++】string

【C修炼秘籍】string 目录 【C修炼秘籍】string 文章目录 前言 一、标准库里的string 二、string常用接口功能简介&#xff08;具体使用和底层转到模拟实现&#xff09; 1、string类的常见构造函数 2、string类对象的容量操作 3、string类对象的访问及遍历操作 4、 string类对象…

数影周报:LastPass数据泄露事件最新细节

本周看点&#xff1a;LastPass&#xff1a;关键运维员工遭定向攻击&#xff1b;Waymo今年第二轮裁掉137名员工&#xff1b;国家网信办发布《个人信息出境标准合同办法》&#xff1b;京麦商家“取消订单页面”升级&#xff1b;“智研汇”获千万级天使轮投资......数据安全那些事…

ubuntu-8-安装nfs服务共享目录

Ubuntu最新版本(Ubuntu22.04LTS)安装nfs服务器及使用教程 ubuntu16.04挂载_如何在Ubuntu 20.04上设置NFS挂载 Ubuntu 20.04 设置时区、配置NTP同步 timesyncd 代替 ntpd 服务器 10.0.2.11 客户端 10.0.2.121 NFS简介 (1)什么是NFS NFS就是Network File System的缩写&#xf…

W800系列||STM32最小版|CKLINK|待完善|学习(3-2):自制cklink调试工具测试(win11系统识别错误待解决)

续前文&#xff1a; W800系列|ST-LINK|STM32最小版|HEX文件|CKLINK|DebugServer|学习&#xff08;3-1&#xff09;&#xff1a;自制cklink调试工具_打酱油的工程师的博客-CSDN博客 硬件接线 CK-LINK W806 3V3 3V3 RST RST&#xff08;复位脚&#xff09; TCK CLK&…

MySQL日志管理

日志管理在数据库保存数据时&#xff0c;有时候不可避免会出现数据丢失或者被破坏&#xff0c;这种时候&#xff0c;我们必须保证数据的安全性和完整性&#xff0c;就需要使用日志来查看或者恢复数据了数据库中数据丢失或被破坏可能原因&#xff1a;误删除数据库数据库工作时&a…

openpnp - error - 回位精度差的问题

文章目录openpnp - error - 回位精度差的问题概述齿隙矫正方法不能用openpnp默认的, 要自己选合适的方法ENDopenpnp - error - 回位精度差的问题 概述 用openpnp向导进行完x/y齿隙校正后, 进行回位精度测试. 在设备上挑选2个点: 主基准点次基准点 都是固定位置(将带mark点的…

Go中sync 包的 Once 使用

文章目录背景One 简介示例注意源码解读背景 在系统初始化的时候&#xff0c;某些代码只想被执行一次&#xff0c;这时应该怎么做呢&#xff0c;没有学习 Once 前&#xff0c;大家可能想到 声明一个标识&#xff0c;表示是否初始化过&#xff0c;然后初始化这个标识加锁&#x…

Lazada(来赞达)箱包什么产品好卖?东南亚热销国家选品分析

东南亚市场&#xff1a;存在巨大的跨境电商出口机遇 和2021年前对比&#xff0c;2022年越南、马来西亚等东南亚国家普遍实现了贸易正增长&#xff0c;欧美国家则多仍处于负增长状态。 同时2022年欧美等发达经济体通胀压力迅速抬升&#xff0c;这直接影响到国家间货币汇率&…

微信小程序如何配置并使用less?

微信小程序如何配置并使用less&#xff1f;1、在VScode中下载Less插件2、在微信小程序中依次点击如下按钮3、选中刚在vscode中下载安装的插件文件4、在设置中选中编辑器设置5、找到less进行json配置6、在json文件中的less.compile添加如下配置7、如何使用1、在VScode中下载Less…

深圳大学计软《面向对象的程序设计》实验7 拷贝构造函数与复合类

A. Point&Circle(复合类与构造) 题目描述 类Point是我们写过的一个类&#xff0c;类Circle是一个新的类&#xff0c;Point作为其成员对象&#xff0c;请完成类Circle的成员函数的实现。 在主函数中生成一个圆和若干个点&#xff0c;判断这些点与圆的位置关系&#xff0c;…

最佳iOS设备管理器imazing 2.16.9官网Mac/Windows下载电脑版怎么下载安装

imazing 2.16.9官网Mac/Windows下载电脑版是款针对苹果设备所打造的管理工具。iMazing为用户提供多种设备管理功能&#xff0c;每一位用户都能以自己的形式管理苹果设备。iMazing与苹果设备连接后&#xff0c;用户就可以轻松传输文件&#xff0c;浏览保存信息等。 应用介绍 iM…

员工入职流程自动化的原因

人和人之间的第一印象非常重要&#xff0c;一段缘分能不能开始&#xff0c;就看第一印象够不够给力了。其实&#xff0c;公司和新员工之间也存在着这样的关系&#xff0c;但也有些许差别。公司对新员工的第一印象&#xff0c;更多是从第一次见面的时候就产生了&#xff0c;而新…

Flutter知识点(三)修改flutter工程名和包名

修改包名, 修改五个地方&#xff1a; debug/AndroidManifest.xml, main/AndroidManifest.xml, profile/AndroidManifest.xml,gradle.build的中application id,原生的android代码&#xff0c; 这一块建议用android工程的方式打开。不然无法使用refactor修改名字。 修改flutter工…

延迟队列实现订单超时自动取消

在上一篇 Java 实现订单未支付超时自动取消&#xff0c;使用Java自带的定时任务TimeTask实现订单超时取消&#xff0c;但是有小伙伴提出这种实现&#xff0c;会有以下几个问题&#xff1a; 线上服务挂了&#xff0c;导致服务下所有的定时任务失效。服务重启&#xff0c;定时任…