Web App Manifest

概念

Web App Manifest(应用程序清单) 是一个 JSON 格式的文件,用于提供 Web 应用的相关元数据(应用程序的名称、图标、颜色主题、屏幕方向等)。可以让网站安装到设备的主屏幕,不需要用户通过应用商店下载。

特点

沉浸式体验:通过定义详细的manifest,PWA可以在用户的设备上获得与原生应用相似的体验,包括添加到主屏、全屏运行、自定义启动画面等。
跨平台一致性:Web App Manifest标准确保了在不同平台和设备上的表现一致性,尽管某些特性可能因浏览器而异。
SEO和可发现性:manifest中的信息也对搜索引擎友好,有助于提高应用的可发现性和索引质量。
渐进式增强:即使在不完全支持PWA特性的浏览器中,manifest的存在也不会影响基础网页的功能,体现了渐进式增强的原则。

属性

nameshort_name:分别为应用程序的全名和短名,用于在启动屏、应用列表等位置显示。
description:简短描述你的应用程序,有助于搜索引擎优化和辅助技术。
start_url:用户首次打开PWA时加载的URL。
display:指定应用程序的显示模式,standalone意味着它看起来像一个独立的应用,没有浏览器UI。
background_color:应用程序加载时的背景颜色,影响加载过程中的视觉连续性。
theme_color:影响状态栏、地址栏的颜色(在某些平台上)。
icons:定义不同尺寸的应用图标,用于启动屏、应用列表等。确保包含至少一个192x192和一个512x512像素的图标,满足大多数设备和用途的需求。
orientation:可选属性,指定应用程序的首选屏幕方向,如portrait表示竖屏。

完整的清单

{
  "name": "My Web Application",
  "short_name": "My App",
  "icons": [
    {
      "src": "img/icon2.png",
      "sizes": "192x192",
      "type": "image/png"
    }
  ],
  "screenshots": [
    {
      "src": "img/image.png",
      "form_factor": "wide",
      "type": "image/png",
      "sizes": "2560x1516"
    },
    {
      "src": "img/image.png",
      "type": "image/png",
      "sizes": "2560x1516"
    }
  ],
  "start_url": "index.html",
  "display": "standalone",
  "background_color": "#5ad74f",
  "theme_color": "#fbc31f",
  "description": "A simple web application",
  "related_applications": [],
  "categories": ["tools", "productivity"]
}

显示

在浏览器Application选项中可以找到网络应用清单。我们定义的一些应用属性都可以看到
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

添加到主屏幕

运行页面时,地址栏会显示在这里插入图片描述这个按钮,点击弹出提示安装应用
在这里插入图片描述
选择安装你就可以在桌面上得到一个自己定义的一个应用程序
在这里插入图片描述

算法

描述

给定一个数组,找到两个总和为特定值的索引。

例如给定数组 [1, 2, 3, -2, 5, 7],给定总和 7,则返回索引 [1, 4]。

若有多组符合情况则输出索引对中小索引最小的一组。

方案一

暴力枚举法

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = scanner.nextInt();
        }
        int target = scanner.nextInt();

        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                if (nums[i] + nums[j] == target) {
                    System.out.println(i + " " + j);
                    return;
                }
            }
        }
    }
}
方案二

哈希数组

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n=scan.nextInt();
        int[]  arr=new int[n+1];
        int[]  hash=new int[205];//存放元素的位置
        for(int i=0;i<n;i++){
          arr[i]=scan.nextInt();
          hash[arr[i]+100]=i;//比如-20对应hash[80]
        }
        int k=scan.nextInt();
        for(int i=0;i<n;i++) {
            if(hash[k-arr[i]+100]!=0) {//相应的元素存在
                System.out.println(i+" "+hash[k-arr[i]+100]);
                return;
            }
        }
        scan.close();
    }
}

使用 for 循环依次读取 n 个整数,并将它们存储到 arr 数组中。

对于每个读取的整数 arr[i],将其加上 100 作为 hash 数组的索引,将 i(即该整数在 arr 数组中的位置)存储在 hash[arr[i] + 100] 中。这样做的目的是为了处理负数,因为数组的索引不能为负数,通过加上 100 可以将范围在 -100 到 100 之间的整数映射到 0 到 200 的索引范围。

使用 for 循环遍历 arr 数组中的每个元素。

对于每个元素 arr[i],计算 k - arr[i],这是与 arr[i] 相加等于 k 的另一个数。
将 k - arr[i] 加上 100 作为 hash 数组的索引,检查 hash[k - arr[i] + 100] 是否不为 0。如果不为 0,说明找到了满足条件的另一个数,并且 hash[k - arr[i] + 100] 存储了该数在 arr 数组中的位置。
输出这两个数在 arr 数组中的索引,并使用 return 语句结束程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值