【牛客】【刷题节】美团2024届秋招笔试第一场编程真题

news2024/11/17 17:26:49

1.小美的外卖订单【简单题】

题意理解:

        这道题是简单题,主要是一个逻辑实现和判断的问题。但是简单题一般喜欢加一点小障碍,所以读题的时候就要比较注意一些约束条件。就比如这道题:过了15/20个测试用例,出现error, 当时没明白到底哪里校验有问题,最后发现: 原价、折扣、满减都是正实数。所谓正实数:没有0!!!

        正实数:是实数(real numbers)中的一个重要概念,它们是大于0的所有实数。正实数包括正整数、正分数(即正小数)以及正无理数

        还涉及一些边边角角的考核: 小数点保留两位

解题思路:

        1.计算每道菜的折扣价 原价-折扣价,注意约束条件判断:原价>=折扣价>0

        2.统计所有菜原价sum1

        3.统计所有菜折扣价sum2

        4.判断原价是否满足满减     sum1>=满减>0,并返回满减后的价格给sum1

        5.返回最优惠min(sum1,sum2)

1.题目实现

import java.text.DecimalFormat;
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        double[][] prices = new double[n][2];
        for (int i = 0; i < n; i++) {
            prices[i][0] = in.nextDouble();
            prices[i][1] = in.nextDouble();
        }
        double x = in.nextDouble();
        double y = in.nextDouble();
        System.out.println(main.compute(prices, x, y));
    }

    public String compute(double[][] prices, double x, double y) {
        if (x==0||y==0||x < y|| y<0) return "error";
        double cost1 = 0.0;
        double cost2 = 0.0;
        for (int i = 0; i < prices.length; i++) {
            if(prices[i][0]==0||prices[i][0]==0) return "error";
            if (prices[i][0] >= prices[i][1]&&prices[i][1]>0) {
                cost1 += prices[i][0];
                cost2 += prices[i][1];
            } else {
                return "error";
            }
        }
        double minCost = cost2;
        //满减否
        if (cost1 >= x) { //满足满减条件
            minCost = Math.min(minCost, cost1 - y);
        }
        DecimalFormat df = new DecimalFormat("#.00");
        return df.format(minCost);
    }
}

2.复杂度分析

时间复杂度:O(n) 遍历菜的时间损耗

空间复杂度:O(n)  存储菜的空间损耗

2.小美的字符串匹配度【不难,但题看错了气死!】

题意理解

       这道题想复杂了,原因是题没读明白,所以读题真的太重要了!!!

        这题给定两个字符串,从头开始往后匹配

        对于字符串可以操作一次两个元素换位置,最多操作一次,可以不操作

        最终,我们能获得的最大匹配是多少?

解题思路

        实现:借鉴大佬思路

        遍历s和t,将对应位置上匹配到的元素剔除,删除后,上下元素坐标一致且值不同

        如:"abacd"和"aabdd“  操作完 ”bca“ 和”abd“

        bac和abd中,遍历s: bac ,若取到b,i=0;

        在t:abd中找可以匹配的b ,如j=1时,匹配

        此时有个需要额外注意的点:

                s[i]=b ==  t[j]==b  将t串,i|j位置互换,在i位置上获得一个匹配,+1

                额外的判断: s[j]==t[i]  交换后,对应的j位置是否能再次获得一个匹配呢?

1.题目实现

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        String s1 = in.nextLine();
        String s2 = in.nextLine();
        System.out.println(main.compute(s1, s2));
    }

    public int compute(String s1, String s2) {
        int pairs = 0;
        int len = s1.length(); //s1和s2等长
        StringBuilder sb1 = new StringBuilder(s1);
        StringBuilder sb2 = new StringBuilder(s2);
        //在s2中找s1的匹配
        for (int i = 0; i < len; i++) {
            if (sb1.charAt(i) == sb2.charAt(i)) {
                sb1.deleteCharAt(i);
                sb2.deleteCharAt(i);
                i--;//第i个被删除后,回溯到前一个
                len--;
                pairs++;
            }
        }
        len = sb1.length();
        int changePairs = 0;
        for (int i = 0; i < len; i++) {
            for (int j = i; j < len; j++) {
                if (sb1.charAt(i) == sb2.charAt(j) || sb1.charAt(i) == sb2.charAt(j)) {
                    changePairs = Math.max(1, changePairs);
                } 
                if (sb1.charAt(i) == sb2.charAt(j) && sb1.charAt(j) == sb2.charAt(i)) {
                    changePairs = 2;
                    break;//最多增加两个匹配,不会再多了,所以可以退出了
                }
            }
        }
        return pairs+changePairs;
    }
}

2.复杂度分析

时间复杂度:O(n^2) 双for时间损耗

空间复杂度:O(2n)  两字符串长度空间损耗

3.小美的树上染色【有难度,但是很大原因是题看错了】

题意理解:

        按照要求对节点染色,要求染色的节点最多。

        相邻为染色且和为平方数的两节点染色。

        这道题目是:一定要染红嘛?想复杂了,如果可以染色,一定要染。然后这道题变成了简单题。一定要仔细看题看题。

        看了大佬解题思路有个地方不明白,为什么要从后往前遍历边呢?

        反着测试用例过不去,不理解!有懂得大佬能给我讲讲嘛~

解题思路:

       1.遍历所有的边,判断两节点是否满足染色要求:相邻为染色且和为平方数的两节点染色。

        2.符合条件:两节点染色,sum+=2

 1.题目实现

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Main solution=new Main();
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int[][] node=new int[n][2];
        for(int i=0;i<n;i++){
            node[i][0]=in.nextInt();
            node[i][1]=0;
        }
        int[][] lines=new int[n-1][2];
        for(int i=0;i<n-1;i++){
            lines[i][0]=in.nextInt()-1;
            lines[i][1]=in.nextInt()-1;
        }
        System.out.println(solution.compute(n,node,lines));
    }

    /**
     * 计算染色节点
     * @param n 节点个数
     * @param node  0是权值,1是颜色;(0白色1红色)
     * @param lines 边关系
     * @return
     */
    public int compute(int n,int[][] node,int[][] lines){
        int result=0;
        for(int i=lines.length-1;i>=0;i--){
            //两个相邻白色节点
            if(node[lines[i][0]][1]==0&&node[lines[i][1]][1]==0){
                //是平方数
                float product=node[lines[i][0]][0]*node[lines[i][1]][0];
                if(Math.sqrt(product)-(int)Math.sqrt(product)==0){
                    node[lines[i][0]][1]=1;
                    node[lines[i][1]][1]=1;
                    result+=2;
                }
            }
        }
        return result;
    }
}

2.复杂度分析

时间复杂度:  O(n)遍历边

空间复杂度:O(n^2) 边、节点的存储

4.小美的排列询问【简单题】

题意理解

        遍历数组,查看给出的元素是否相邻即可

解题思路

        1.遍历数组,找到其中一个元素

        2.查看另一个元素是否在该元素的左|右

        3.若在Yes

        4.不在则下一个,遍历完都找不到,No

1.题目实现

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = in.nextInt();
        }
        int x = in.nextInt();
        int y = in.nextInt();
        System.out.println(main.compute(nums, x, y));
    }
    public String compute(int[] nums, int x, int y) {
        int a = Math.min(x, y);
        int b = Math.max(x, y);
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] == a && ((i + 1) < nums.length && nums[i + 1] == b || i - 1 >= 0 &&
                                 nums[i - 1] == b)) return "Yes";
            else if (nums[i] == a && !((i + 1) < nums.length && nums[i + 1] == b ||
                                       i - 1 >= 0 && nums[i - 1] == b)) return "No";
        }
        return "No";
    }
}

2.复杂度分析

时间复杂度:O(n) 遍历数组的时间损耗

空间复杂度:O(n) 数组存储的空间损耗

5.小美的排列构造【这也是道简单题】

题意理解:

        首先明确:数组权值:对相邻两项求和,其中最大值和最小值的差值

        为了绕让权值尽可能的小

        就要使相临两数之间的和差不多的大。

        一个思路是:首先对数组进行排序。

        从数组末尾取数据,往数组前面的元素间插入,总是一个小值,一个大值的。

        但是测试没过,不知道哪里的问题。——错在了,奇数个元素时,漏了一个元素

解题思路:

        

1.题目实现

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        System.out.println(main.compute(n));
    }
    public String compute(int n){
        StringBuilder sb=new StringBuilder();
        for(int i=1;i<=n/2;i++){
            sb.append(i+" "+(n-i+1)+" ");
        }
        if(n%2!=0){
            sb.append((n+1)/2);
        }
        return sb.toString();
    }
}

2.复杂度分析

特别有意思的一点:【记录一下】

        用String result+""拼接字符串,超时了

        但是用StringBulider是可以的

时间复杂度:O(n/2)遍历一半数据的时间损耗

空间复杂度:O(n)存储数据的空间损耗

6.小美走公路【简单题】

题意理解:

        由于是环形公路,所有从x到y站无非两种方式:顺时针|逆时针

        可以统计全程sum,和x到y的顺时针长度len1,则逆时针sum-len1

解题思路:

        1.遍历所有的站点到下一站距离

        2.统计全程长度sum

        3.当遍历到x站点开始统计长度len1,到站点y结束

        4.返回min(sum-le1,len1)

1.题目实现

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Main main=new Main();
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        long[] a=new long[n];
        for(int i=0;i<n;i++){
            a[i]=in.nextLong();
        }
        long x=in.nextLong();
        long y=in.nextLong();
        System.out.println(main.compute(a,x,y));
    }
    public long compute(long[] a,long x,long y){
        long start=Math.min(x,y);
        long end=Math.max(x,y);
        long sum=0;//整圈
        long left=0;//从start->end
        for(int i=0;i<a.length;i++){
            if(i>=start-1&&i<end-1) left+=a[i];
            sum+=a[i];
        }
        return Math.min(left,sum-left);
    }
}

2.复杂度分析

时间复杂度分析:O(n) 遍历站点的时间损耗

空间复杂度分析:O(n) 站点存储的时间损耗

7.小美的好矩阵【感觉自己思路没错,但是测试用例没过】

 

题意理解:

        在n*m的矩阵中找到一个符合好矩阵的条件矩阵。有多少个?

解题思路:        

        row[i][j]:第i行,第j个位置,构造一个行,是否满足好矩阵一个行的条件:true|false

        思路是这样的,首先对每行的每个位置开始,构造一个行,判断其是否符合好矩阵的行。

        contains[i][j][k]:第i行,第j个位置,构造一个行,包含ABC的个数:k=0:A,k=1:B,k=3:C

        col[i][j]:第i列,第j个位置,构造一个列,是否满足好矩阵一个列的条件:true|false

        对每列的每个位置开始,构造一个列,判断其是否符合好矩阵的列。

1.题目实现

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Main main=new Main();
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        int m=in.nextInt();
        in.nextLine();
        char[][] map=new char[n][m];
        for(int i=0;i<n;i++){
            map[i]=in.nextLine().toCharArray();
        }
        System.out.println(main.compute(map,n,m));
    }

    public int compute(char[][] map,int n,int m) {
        boolean[][] row = new boolean[n][m];
        boolean[][] col = new boolean[n][m];
        boolean[][][] contains=new boolean[n][m][3];
        Deque<int[]> queue = new LinkedList<>();
        //初始化:行检测
        for (int i = 0; i < n; i++) {//行检测
            for (int j = 0; j < m; j++) {
                if (queue.size() == 3) {
                    queue.pollFirst();
                }
                if ("ABC".contains(Character.toString(map[i][j]))) {
                    if(!queue.isEmpty()){
                        int pre_i = queue.peekLast()[0], pre_j = queue.peekLast()[1];
                        if (map[pre_i][pre_j] == map[i][j]) {//与前一个重复,丢弃前面的
                            queue.clear();
                        }
                    }
                    queue.offerLast(new int[]{i, j});//加入最新元素
                    if (queue.size() == 3) {
                        row[i][j] = true;//当前及前两个构成一个结果
                        if(map[i][j]=='A'||map[i][j-1]=='A'||map[i][j-2]=='A') contains[i][j][0]=true;
                        if(map[i][j]=='B'||map[i][j-1]=='B'||map[i][j-2]=='B') contains[i][j][1]=true;
                        if(map[i][j]=='C'||map[i][j-1]=='C'||map[i][j-2]=='C') contains[i][j][2]=true;
                    }

                } else {
                    queue.clear();
                }
            }
            queue.clear();
        }
        queue.clear();
        //初始化:列检测
        for (int j = 0; j < m; j++) { //列检测
            for (int i = 0; i < n; i++) {
                if (queue.size() == 3) {
                    queue.pollFirst();
                }
                if ("ABC".contains(Character.toString(map[i][j]))) {
                    if(!queue.isEmpty()){
                        int pre_i = queue.peekLast()[0], pre_j = queue.peekLast()[1];
                        if (map[pre_i][pre_j] == map[i][j]) {//与前一个重复,丢弃前面的
                            queue.clear();
                        }
                    }
                    queue.offerLast(new int[]{i, j});//加入最新元素
                    if (queue.size() == 3) {
                        col[i][j] = true;//当前及前两个构成一个结果
                    }

                } else {
                    queue.clear();
                }
            }
            queue.clear();
        }
        //九宫格检查
        int result = 0;
        for (int i = 2; i < n; i++) {
            for (int j = 2; j < m; j++) {
                //矩阵里有没有ABC:查三行元素
                //containsC[i][j]||containsC[i-1][j]||containsC[i-2][j])
                //三行检测:倒着数三行
                //row[i][j]&&row[i-1][j]&&row[i-2][j]
                //三列检测:倒着数三行
                //col[i][j]&&col[i][j-1]&&col[i][j-2]
                if ((contains[i][j][0]||contains[i-1][j][0]||contains[i-2][j][0])&&//有A
                        (contains[i][j][1]||contains[i-1][j][1]||contains[i-2][j][1])&&//有B
                        (contains[i][j][2]||contains[i-1][j][2]||contains[i-2][j][2])&&//有C
                        row[i][j] && row[i - 1][j] && row[i - 2][j] &&
                                col[i][j] && col[i][j - 1] && col[i][j - 2]) {
                    result++;
                }

            }
        }
        return result;
    }
}

2.复杂度分析

时间复杂度:O(n*m)  双for的时间损耗

空间复杂度:O(n*m*3)   contains的空间损耗

这道题主要难在了判断和分析上,要做到准确且不漏

8.小美的蛋糕切割【简单题】

题意理解:

        切蛋糕,这里把蛋糕看成n*m个小格子组成的整体,不能把小格子切开,所以切蛋糕的位置就是(n+m),切开之后,美味度是每部分小格子权值和

解题思路:

        1.遍历横切n个位置,求每次的最小美味度差值

        2.遍历竖切m个位置,求每次的最小美味度差值

        3.返回最小美味度差值(此处差值求绝对值)

1.题目实现

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Main main=new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[][] cake=new int[n][m];
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                cake[i][j]=in.nextInt();
            }
        }
        System.out.println(main.compute(cake,n,m));
    }

    public int compute(int[][] cake,int n,int m){
        long[] row=new long[n];
        long[] col=new long[m];
        long sum=0;
        long minResult=Integer.MAX_VALUE;
        //行计数+总和计数
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                row[i]+=cake[i][j];
            }
            sum+=row[i];
        }
        //列计数
        for(int j=0;j<m;j++){
            for(int i=0;i<n;i++){
                col[j]+=cake[i][j];
            }
        }
        //遍历横刀切
        long cake1=0,cake2=0;
        for(int i=0;i<=n-1;i++){
            cake1+=row[i];
            cake2=sum-cake1;
            minResult=Math.min(minResult,Math.abs(cake1-cake2));
        }
        //遍历横刀切
        cake1=0;cake2=0;
        for(int j=0;j<=m-1;j++){
            cake1+=col[j];
            cake2=sum-cake1;
            minResult=Math.min(minResult,Math.abs(cake1-cake2));
        }
        return (int)minResult;
    }
}

2.复杂度分析

时间复杂度:O(n^2) 双for循环损耗

空间复杂度:O(n^2)  cake数组空间损耗

9.小美的字符串变换【困难:图相关的没复习】

题意理解

        看大佬的做法,这是dfs,深度遍历,但是emmmm,图论没有好好复习哎。

        借鉴了下大佬思路,其实不难。就是递归遍历图,和遍历树是一样的。只是这里借助一个uesd存储访问状态。

解题思路

        将字符串n铺成一个矩阵

        该矩阵的权值:连通块数

        欲求最小的连通块数。

        1.遍历所有可能的矩阵组合,即n%i==0

        2.在每一个可能的矩阵组合中,统计联通图个数。

        3.统计连通图个数用count来维护,dfs(map, used, x, y, ++count);

           每找到一个连通图,count++(同一块,count相同)

        如:矩阵:aababbabb     used中的count: [1, 1, 2, 3, 4, 4, 5, 6, 6]

1.解题思路

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        String input = in.nextLine();
        
        Main main = new Main();
        System.out.println(main.compute(n, input));
    }
    
    public int compute(int n, String s) {
        int res = Integer.MAX_VALUE;
        for (int i = 1; i <= n; i++) {
            if (n % i == 0) { //摆阵

                char[][] map = new char[i][n / i];
                int[][] used = new int[i][n / i];
                //赋值
                int index = 0;
                for (int x = 0; x < i; x++) {
                    for (int y = 0; y < n / i; y++) {
                        map[x][y] = s.charAt(index++);
                    }
                }
                //dfs计算联通图树
                //赋值
                int count = 0;
                for (int x = 0; x < i; x++) {
                    for (int y = 0; y < n / i; y++) {
                        //寻找每一个
                        if (used[x][y] == 0) {
                            dfs(map, used, x, y, ++count);
                        }
                    }
                }
                res = Math.min(res, count);

            }
        }
        return res;
    }

    public void dfs(char[][] map, int[][] used, int i, int j, int count) {
        /**
         * i,j越界或该位置已被访问过
         */
        if (i < 0 || j < 0 || i > map.length - 1 || j > map[0].length - 1 ||
                used[i][j] != 0) return;
        used[i][j] = count;
        /**
         * 像四个位置尝试扩展
         */
        if (i > 0 && map[i][j] == map[i - 1][j]) {
            dfs(map, used, i - 1, j, count);
        }
        if (i < map.length - 1 && map[i][j] == map[i + 1][j]) {
            dfs(map, used, i + 1, j, count);
        }
        if (j > 0 && map[i][j] == map[i][j - 1]) {
            dfs(map, used, i, j - 1, count);
        }
        if (j < map[0].length - 1 && map[i][j] == map[i][j + 1]) {
            dfs(map, used, i, j + 1, count);
        }
    }
}

2.复杂度分析

时间复杂度:O(n^3)  矩阵构建的时间耗费(O(n^2))*dfs的时间耗费(dfs,查联通分量每个节点访问一次,总的是O(n))

空间复杂度:O(n^2) uesd及map的空间耗费

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

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

相关文章

蓝桥杯小白月赛3.23

题目描述&#xff1a; AC代码&#xff1a; #include <iostream> #include<cstring> #include<algorithm>using namespace std;const int N 2e510; string str[N]; //写上&会速度更快一些 bool cmp(const string &s1,const string &s2) {//例…

金色传说:SAP-PP-CO01/CO02生产订单释放时增强:检查并显示下层组件在不合格库存地库存

文章目录 需求场景一、实现的效果二、实现步骤1.创建自建表2.增强代码 三、重磅福利 需求场景 计划员释放订单时,如果下层组件在不合格库存中有库存时,应先确认不合格库存地库存是否可用,已避免重复生产和库存积压. 因此,提出此需求: 在生产订单下达(释放)时,要提示下层组件在…

七段码(蓝桥杯)

文章目录 七段码题目描述答案&#xff1a;80分析编程求解&#xff1a;有多种方法方法一&#xff1a;状态压缩枚举构图&#xff08;以二极管为顶点&#xff09;DFS判断连通代码方法二&#xff1a;bfs 七段码 题目描述 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了…

python和Vue开发的RBAC用户角色权限管理系统

后端框架&#xff1a;python的FastAPI作为后端服务和python-jose作为JWT认证 前端框架&#xff1a;Vue3构建页面和Vue Router作为路由管理&#xff0c;Pinia作为数据存储&#xff0c;Vite作为打包工具 可以实现菜单控制和路由控制&#xff0c;页面里面有按钮权限控制&#xf…

css预处理器scss的使用如何全局引入

目录 scss 基本功能 1、嵌套 2、变量 $ 3、mixin 和 include 4、extend 5、import scss 在项目中的使用 1、存放 scss 文件 2、引入 variables 和 mixins 2-1、局部引入 2-2、全局引入 3、入口文件中引入其他文件 项目中使用 css 预处理器&#xff0c;可以提高 cs…

输入与输出

输入(Scanner类) Scanner是java5的新特性&#xff0c;在java.util包里&#xff0c;可以完成用户输入。步骤&#xff1a; 导入java.util包&#xff1b;构造Scanner对象&#xff0c;参数为u标准输入流System.in&#xff1b;使用next()方法系列接收数据 nextBoolean()接收一个布…

P6学习:解析P6 WBS-工作分解结构的原则

前言 WBS&#xff0c;及Work Breakdown Structure&#xff0c;中文工作分解结构&#xff0c;是总结工作阶段的项目的层次结构分解。 WBS 就像项目的大纲——它将项目分解为特定的可交付成果或阶段。 然后将活动添加到这些层中以创建项目计划的时间表。 WBS 使用流程会有所不…

【SpringBoot整合系列】SpringBoot3.x整合Swagger

目录 产生背景官方解释&#xff1a;作用SpringBoot3整合Swagger注意事项swagger3 常用注解SpringBoot3.x整合Swagger1.创建工程(jdk:17,boot:3.2.4)2.引入pom依赖3.application.yml添加配置4.添加swagger3.0配置5.控制器层(Controller)6.模型层(Model)7.启动并测试【Get请求接口…

任务管理工具Trello体验如何?一文揭秘

Trello是一款高效的协作与工作管理应用&#xff0c;这里我们将详细介绍Trello的功能、特点、优劣势、价格、定价、发展历程、使用场景以及使用技巧等等。 一、Trello 是什么 Trello是一款高效的协作与工作管理应用&#xff0c;设计用于跟踪团队项目、凸显当前活动任务、指派责…

IHO S-100系列产品标准

1 什么是S-100? S-100《通用海道测量数据模型》是国际海道测量组织(IHO)推出的新一代海上空间地理信息国际标准,旨在克服传统S-57数字海道测量数据传输标准的局限。这一标准不仅兼容了更为丰富的数据类型,如影像与栅格数据、时变数据等,还摒弃了固定的编码格式要求,采用…

推荐5款测试数据生成工具!

一个成功、有效的测试策略由下面几个基本部分组成&#xff1a;完整的测试覆盖率、最小化的环境影响和健壮的测试数据。 其中测试数据尤其重要&#xff0c;其质量直接关系到测试的有效性。可以把测试数据看作是保持测试引擎运行的燃料——高质量的测试数据有助于确保测试执行的…

苹果App Store上架工具介绍

文章目录 摘要引言正文1. Xcode2. [appuploder](https://www.applicationloader.net/)3. [克魔助手](https://keymob.com/) 4.[ipa guard](https://www.ipaguard.com/)总结参考资料 摘要 苹果App Store作为iOS应用程序的主要分发渠道&#xff0c;上架应用程序需要遵守规定和通…

2024消息预知在线客服系统

新增消息预知&#xff0c;消息撤回&#xff0c;消息已读未读&#xff0c; 修复需要刷新才能收到消息 修复客户来源地址 修复消息提示音 修复桌面推送提醒 要求服务器环境&#xff1a; 宝塔面板 &#xff0c;Nginx1.16-1.18&#xff0c;7.2.23<php<7.3&#xff08;因…

Python神器!WEB自动化测试集成工具 DrissionPage

案例 跟踪商品价格&#xff0c;降价自动推送消息到微信 咱买不起还等不起吗&#xff1f; from DrissionPage import * import re from time import sleep import csv import os import datetime#写入时间 p MixPage() p.get(http://xxxxxxx) #快快买网址 p.to_ifram…

Netty学习——源码篇7 Pipeline的事件传播机制1 备份

上篇&#xff1a;Netty学习——源码篇6 Pipeline设计原理 已经知道AbstractChannelHandlerContext中有Inbound和Outbound两个boolean变量&#xff0c;分别用于识别Context所对应的Handler的类型。 1、Inbound为true时&#xff0c;表示其对应的ChannelHandler是ChannelInboundHa…

【深入日志打印】log.error(“你好{}“, “世界“, e);只有一个占位符是否会打印后面多出的参数呢?(详细跟进源码讲解调试分析)

文章目录 【深入日志打印】log.error(“你好{}“, “世界“, e)&#xff1b;只有一个占位符是否会打印后面多出的参数呢&#xff1f;&#xff08;详细跟进源码讲解调试分析&#xff09;测试代码执行结果调试分析其他样例探讨 【深入日志打印】log.error(“你好{}“, “世界“, …

【电能管理】电力物联网仪表/多功能电表/无线计量/多回路计量/分项计量/终端感知设备/全电量参数测量/正反向有功无功测量

什么是物联网电表&#xff01;&#xff01;&#xff01; 安科瑞薛瑶瑶18701709087 物联网电表是智能电表的一种&#xff0c;可以用无线通信方式来操控&#xff0c;除了拥有电度表的有点以外&#xff0c;还可以把硬件和软件联合起来发挥更大的作用。 物联网电表主要用于计量低…

UOS、Linux下的redis的详细部署流程(适用于内网)

提示&#xff1a;适用于Linux以及UOS等内外网系统服务器部署。 文章目录 一.上传离线包二.部署基本环境三.解压并安装redis四.后台运行redis五.uos系统可能遇到的问题六.总结 一.上传离线包 1.自己去Redis官网下载适配自己部署系统的redis安装包。 2.通过文件传输工具&#xf…

微信平台会员卡应用源码系统 带完整的安装代码包以及搭建教程

在移动互联网时代&#xff0c;消费者对于便捷、个性化的服务需求日益增长。微信会员卡作为一种创新的营销方式&#xff0c;不仅能为消费者提供便捷的会员服务&#xff0c;还能帮助商家更好地管理会员信息&#xff0c;提升营销效果。然而&#xff0c;许多商家由于缺乏技术支持&a…

钡铼技术R40工业4G路由器为户外广告牌智能控制系统提供无线网络

钡铼技术R40工业4G路由器在户外广告牌智能控制系统中的应用&#xff0c;为广告行业带来了革命性的变革。作为一种先进的无线通信设备&#xff0c;R40工业4G路由器通过其稳定的信号传输和强大的网络连接能力&#xff0c;为户外广告牌的智能控制系统提供了可靠的无线网络支持&…