【力扣刷题笔记第三期】Python 数据结构与算法

先从简单的题型开始刷起,一起加油啊!!

点个关注和收藏呗,一起刷题鸭!!

第一批题目

1.设备编号

给定一个设备编号区间[start, end],包含418的编号都不能使用,如:418、148、718不能使用,108可用。请问有多少可用设备编号。

class Solution:
    def get_normal_device_number(self, start, end):
        count = 0
        for i in range(start, end+1):
            if ('4' in str(i) or '18' in str(i)):
                continue
            else:
                count += 1
        return count

if __name__ == "__main__":
    start, end = tuple(map(int, input().strip().split()))
    function = Solution()
    result = function.get_normal_device_number(start, end)
    print(result)

2.服务器集群网络延时

给定一个正整数数组表示某服务器集群内服务器的机位编号,请选择一台服务器作为主服务器,使得集群网络延迟最小,并返回该最小值。

  • 每台服务器有唯一的机位编号。
  • 两服务器之间的网络延迟,可以简单用所在机位编号之差的绝对值表示;服务器到自身的延迟为0。
  • 集群网络延迟是指主服务器与所有服务器的网络延迟之和。
class Solution:
    def cluster_latency(self, arr):
        res = 0
        mid = len(arr) // 2
        arr.sort()
        for num in arr:
            res += abs(num - arr[mid])
        return res

if __name__ == "__main__":
    num = input().strip()
    arr = list(map(int, input().strip().split()))
    function = Solution()
    results = function.cluster_latency(arr)
    print(results)

3.给定差值的组合

给定一个数组,每个元素的值是唯一的,找出其中两个元素相减等于给定差值 diff 的所有不同组合的个数。

输入三行:
第一行为一个整数,表示给定差值diff;范围[-50000, 50000]
第二行也为一个数字,表示数组的长度;范围[2, 102400]
第三行为该数组,由单个空格分割的一组数字组成;其中元素的值范围[-20, 102400]

用例保证第三行数字和空格组成的字符串长度不超过 649999

输出

1个整数,表示满足要求的不同组合的个数

样例

输入样例 1 

3
5
1 3 2 5 4

输出样例 1

2

提示样例 1

数组为[1 3 2 5 4], 差值 diff 为 3,其中 4 - 1 = 3,5 - 2 = 3,共 2 个组合满足条件,因此输出 2

class Solution:
    def proc(self, arr, diff):
        # 在此添加你的代码
        if diff == 0:
            return 0
        arr_set = set(arr)
        diff_set = set(ele + diff for ele in arr_set)
        cross_set = arr_set & diff_set
        return len(cross_set)
if __name__ == "__main__":
    diff = int(input().strip())
    count = int(input().strip())
    arr = list(map(int, input().strip().split(' ')))
    function = Solution()
    result = function.proc(arr, diff)
    print(result)

左右指针算法:

class Solution:
    def __init__(self):
        self.count, self.left, self.right = 0, 0, 0
    # 左右指针算法
    def proc(self, nums, d):
        # 差值为0,直接返回0
        if d == 0:
            return self.count
        # 升序排序
        nums.sort()
        while self.right < len(nums) and self.left < len(nums):
            # 当右值左值差大于diff时,左指针加一
            if nums[self.right] - nums[self.left] > d:
                self.left += 1
                continue
            # 当右值左值差等于diff时,左指针加一,右指针加一,结果加一
            elif nums[self.right] - nums[self.left] == d:
                self.left += 1
                self.right += 1
                self.count += 1
            # 当右值左值差小于diff时,右指针加一
            else:
                self.right += 1
        return self.count

集合交集算法:

class Solution:
    def __init__(self):
        self.count = 0
    def proc_set(self, nums, d):
        if d == 0:
            return self.count
        nums_set = set(nums)
        diff_set = set(i - d for i in nums_set)
        return len(nums_set & diff_set)

好厉害的算法啊!执行时间也很短

第七批题目

1.IP报文头解析

一个IP报文头及所包含的各信息的关系如图所示:

  • 图中从上到下、从左到右依次表示各信息在IP报文头中的顺序。
  • 各信息括号内的数字表示所占位数,如:标识(16),表示标识部分占16个bit位即2个字节长度。

现给定一个十六进制格式的IP报文头数据,请解析输出其中的总长度、标志、目的IP地址:

  • 总长度、标志为十进制整数
  • 目的IP地址为点分十进制格式,如:192.168.20.184

输入样例 1 

45 00 10 3c 7c 48 20 03 80 06 00 00 c0 a8 01 02 c0 a8 14 b8

输出样例 1

4156,1,192.168.20.184

对照图示的各信息所在位置:
总长度 :0x103c,十进制值为 4156
标 志 :0x20的二进制为 00100000,其中的高 3 位为标志,二进制为 001,10进制值为 1
目的IP地址:0xc0a814b8,点分十进制为 192.168.20.184

(内心:简单题的题目怎么这么复杂?????看都看不懂)

前置知识:每个十六进制(0x)数字对应4位二进制数。

from typing import List
class Solution:
    def get_ip_info(self, datas: str) -> str:
        # 1.先按空格切割
        data_lst = datas.split()
        # 2.提取长度字段,16进制转为10进制,最终转为字符串
        length_str = str(int("0x" + "".join(data_lst[2:4]), 16))
        # 3.提取标志字段,16进制转10进制,再转2进制(注意zfill补齐前置0),再转10进制,最终转为字符串
        flag_str = str(int(bin(int("0x" + "".join(data_lst[6]), 16))[2:].zfill(8)[:3], 2))
        # 4.最后四位转为点分10进制,最终转为字符串
        ip_str = ".".join([str(int("0x" + x, 16)) for x in data_lst[-4:]])
        return length_str + "," + flag_str + "," + ip_str
if __name__ == "__main__":
    data = input().strip()
    function = Solution()
    results = function.get_ip_info(data)
    print(results)

length_str = str(int("0x" + "".join(data_lst[2:4]), 16)) ,将十六进制表示的一段数据转换为十进制表示的字符串。我们可以一步步地解读它:

1. `data_lst[2:4]`:这是一个列表切片操作,从列表 `data_lst` 中提取索引2和3的两个元素。这些元素应该是以字符串形式表示的十六进制数。

2. `"".join(data_lst[2:4])`:这个操作将步骤1中提取的元素连接成一个字符串。例如,如果 `data_lst[2]` 是 `'10'`,`data_lst[3]` 是 `'3c'`,那么结果将是 `'103c'`。

3. `"0x" + "".join(data_lst[2:4])`:在连接好的字符串前面加上 `'0x'`,使其成为一个合法的十六进制字符串表示。例如,如果结果是 `'103c'`,那么现在它变成 `'0x103c'`。

4. `int("0x" + "".join(data_lst[2:4]), 16)`:将这个十六进制字符串转换为一个十进制的整数。`int` 函数的第一个参数是要转换的字符串,第二个参数 `16` 表示输入是一个十六进制数。例如,`'0x103c'` 会被转换成十进制的 `4156`。

5. `str(int("0x" + "".join(data_lst[2:4]), 16))`:将上述得到的十进制整数转换为字符串。例如,`4156` 会被转换成 `'4156'`。

举例说明:

假设 `data_lst = ["45", "00", "10", "3c", "7c", "48", "20", "03", "80", "06", "00", "00", "c0", "a8", "01", "02", "c0", "a8", "14", "b8"]`,那么:

- `data_lst[2:4]` 提取的子列表是 `["10", "3c"]`。
- `"".join(data_lst[2:4])` 结果是 `'103c'`。
- `"0x" + "".join(data_lst[2:4])` 结果是 `'0x103c'`。
- `int("0x103c", 16)` 结果是 `4156`。
- `str(4156)` 结果是 `'4156'`。

flag_str = str(int(bin(int("0x" + "".join(data_lst[6]), 16))[2:].zfill(8)[:3], 2))  代码详细解读

进制转化:16→10→2→10

1.int("0x" + "".join(data_lst[6]), 16),16进制转化成十进制,int("0x20", 16) 结果是 32 

2.使用 bin 函数将十进制整数转换为二进制字符串,结果是"0b100000"

3.[2:] 去掉前缀 "0b"

4.zfill(8) 方法将二进制字符串填充到 8 位长度

5.[:3]  使用切片操作提取二进制字符串的高 3 位 对于 "00100000",结果是 "001"

6.使用 int 函数将二进制字符串 "001" 转换为十进制整数

ip_str = ".".join([str(int("0x" + x, 16)) for x in data_lst[-4:]]) 解读

  • 对于每个元素 x,首先使用 "0x" + x 将其转换为十六进制字符串,例如 "c0" 变为 "0xC0"
  • 使用 int("0x" + x, 16) 将十六进制字符串转换为十进制整数,例如 int("0xC0", 16) 结果是 192

注意A.join(B)   A 和 B 都是字符串类型

int(A,B)   A是字符串类型,返回的是整数类型

2.可漫游服务区

漫游(roaming)是一种移动电话业务,指移动终端离开自己注册登记的服务区,移动到另一服务区(地区或国家)后,移动通信系统仍可向其提供服务的功能。

用户可签约漫游限制服务,设定一些限制区域,在限制区域内将关闭漫游服务。

现给出漫游限制区域的前缀范围,以及一批服务区(每个服务区由一个数字字符串标识),请判断用户可以漫游的服务区,并以字典序降序输出;如果没有可以漫游的服务区,则输出字符串empty

输入

首行输入两个整数m n,取值范围均为 [1, 1000]。
随后 m 行是用户签约的漫游限制区域的前缀范围,每行格式为start end(含start和end),start和end是长度相同的数字字符串,长度范围为[1, 6],且 start <= end。
接下来 n 行是服务区列表,每行一个数字字符串表示一个服务区,长度范围为[6,15]。

输出

字典序降序排列的可漫游服务区列表,或字符串empty

输入样例 1 

2 4
755 769
398 399
3970001
756000000000002
600032
755100

输出样例 1

600032
3970001

提示样例 1

服务区 755100 和 756000000000002 的前缀在漫游限制 [755,769] 范围内,不能漫游。 3970001 和 600032,不在任何漫游限制范围内,因此可以漫游,按字典序降序先输出 600032。

方法一:

    prex_len = len(restricts[0][0])
    ranges = []
    for i in restricts:
        start = int(i[0])
        end = int(i[-1])
        for j in range(start, end+1):
            ranges.append(j)
    res = []
    for j in areas:
        if int(j[:prex_len]) not in ranges:
            res.append(j)
    res.sort(reverse=True)
    if not res:
        print("empty") 
    return res

方法二:

def get_roaming_area(self, restricts: List[List[str]], areas: List[str]) -> List[str]:
    un_limit = []
    # 备份
    for j in areas:
        un_limit.append(j)
    # 在范围内就删除
    for k in areas:
        for i, j in restricts:
            if int(i) <= int(k[0:len(i)]) <= int(j):
                un_limit.remove(k)

    # 输出结果
    if not un_limit:
        un_limit = ['empty']
    else:
        un_limit = sorted(un_limit, reverse=True)
    return un_limit

# 定义测试样例

restricts_num, areas_num = 2, 4

restricts = [["755", "769"], ["398", "399"]]

areas = ["3970001", "756000000000002", "600032", "755100"]

  1. for k in areas:

    • 这个循环遍历areas列表中的每一个元素,k代表areas中的一个区域。
  2. for i, j in restricts:

    • 这个内层循环遍历restricts列表中的每一个限制条件,ij分别代表每个限制条件中的两个值。
    • restricts是一个包含成对限制条件的列表,每对由两个字符串(ij)组成,表示一个范围。
  3. if int(i) <= int(k[0:len(i)]) <= int(j):

    • 这一行检查当前区域k是否在当前限制条件ij之间。
    • int(i)int(j)将限制条件ij转换为整数。
    • k[0:len(i)]提取区域k的前len(i)个字符并转换为整数。这是因为ij的长度可能不同,代码需要根据i的长度来提取并比较k的相应部分。
    • 如果提取的部分在ij之间(包括边界),条件为真。
  4. un_limit.remove(k)

    如果条件为真,从un_limit列表中移除区域k,表示该区域k符合当前的限制条件,不再属于不受限制的区域。

3.信号解码

无线基站接收到手机上报的某种信息(例如11@2$3@14)后,需要先进行解码操作,再计算结果。假定每条信息中都至少包含特殊运算符 @ 和 $ 的一种,解码规则如下:

  1. x@y = 2*x+y+3
  2. x$y = 3*x+2*y+1
  • x、y 都是非负整数 ;
  • @ 的优先级高于 $ ;
  • 相同的特殊运算符,按从左到右的顺序计算。

11@2$3@14

= (2*11+2+3)$3@14

= 27$3@14

= 27$(2*3+14+3)

= 27$23

= 3*27+2*23+1

= 128

现给定一个字符串,代表一个手机上报的待解码信息,请按照解码规则进行解码和计算,并返回计算结果。

import re
class Solution:
    def get_calc_result(self, information: str) -> int:
        # 这一步把输入拆成数字和符号存入字符串,如11@2$3@14 -> ['11', '@', '2', '$', '3', '@', '14']
        ex = re.split(r"(\D)", information)  
        pos = 0 #用于保存符号的位置
        sign = '' #用于记录符号
        #核心逻辑:边计算,便删除ex表达式中元素,直到只剩一个值即为结果
        while len(ex)!=1:
            #如果还存在@则sign记录为@,pos记录为@在ex中的位置;否则记录$信息(实现@优先于$)
            (sign, pos) = ('@', ex.index('@')) if '@' in ex else ('$', ex.index('$'))
            ex[pos-1] = self.cal(sign, int(ex[pos-1]), int(ex[pos+1]))
            del ex[pos:pos+2]
        return ex[0]
    def cal(self, sign, x, y):
        if sign == '@': return 2*x+y+3
        else: return 3*x+2*y+1
if __name__ == "__main__":
    information = str(input().strip())
    function = Solution()
    results = function.get_calc_result(information)
    print(results)


1. `re.split(r"(\D)", information)`
- 使用正则表达式 `(\D)` 将 `information` 按非数字字符拆分成一个列表。括号 `()` 表示捕获分组,因而分隔符本身也会包含在结果列表中。例如,字符串 `11@2$3@14` 将被拆分成 `['11', '@', '2', '$', '3', '@', '14']`。

import re

string = "a1b2c3d4"
# 使用捕获组 (\D) 来分割字符串
result = re.split(r"(\D)", string)
print(result)


#输出
['', 'a', '1', 'b', '2', 'c', '3', 'd', '4', '']

import re

string = "a1b2c3d4"
# 使用正则表达式 \D 来分割字符串,\D 表示非数字字符
result = re.split(r"\D", string)
print(result)


#输出
['', '1', '2', '3', '4']


2. `pos = 0` 和 `sign = ''`
- 初始化变量 `pos` 和 `sign`,分别用于保存符号的位置和记录当前符号。

3. **`while len(ex) != 1:`**
- 这个循环会持续运行,直到 `ex` 列表中只剩下一个元素,即最终计算结果。

4. `(sign, pos) = ('@', ex.index('@')) if '@' in ex else ('$', ex.index('$'))`
- 这行代码检查 `ex` 列表中是否包含 `@` 符号。如果包含,则 `sign` 设为 `@`,`pos` 设为 `@` 在 `ex` 中的位置。如果不包含 `@`,则检查并设置 `$` 符号的信息。这样确保 `@` 的优先级高于 `$`。

A if condition else B
condition 是条件,如果条件为真,表达式返回 A;否则返回 B

如果条件为真,返回一个元组 ('@', ex.index('@'))

  • sign 被赋值为 '@'
  • pos 被赋值为 ex.index('@'),即 '@'ex 列表中的索引位置。

如果条件为假(即 ex 列表中不包含字符 '@'),返回一个元组 ('$', ex.index('$'))。这里:

  • sign 被赋值为 '$'
  • pos 被赋值为 ex.index('$'),即 '$'ex 列表中的索引位置。


5.ex[pos-1] = self.cal(sign, int(ex[pos-1]), int(ex[pos+1]))
- 调用 `cal` 方法,传入符号 `sign` 以及符号前后的数字,进行计算,并将计算结果赋值给符号前面的数字位置。

6. **`del ex[pos:pos+2]`**
- 删除符号和符号后面的数字,使得 `ex` 列表长度减少。举例来说,`['11', '@', '2', '$', '3', '@', '14']` 将变为 `['结果', '$', '3', '@', '14']`。

7. **`return ex[0]`**
- 当 `while` 循环结束时,`ex` 列表中只剩下一个元素,即最终计算结果,将其返回。


假设输入 `information = "11@2$3@14"`:

1. 初始分割为 `['11', '@', '2', '$', '3', '@', '14']`。
2. 首先处理 `@` 操作符:
- `11@2` 计算结果为 `2*11 + 2 + 3 = 27`,列表变为 `['27', '$', '3', '@', '14']`。
3. 继续处理 `@` 操作符:
- `3@14` 计算结果为 `2*3 + 14 + 3 = 23`,列表变为 `['27', '$', '23']`。
4. 最后处理 `$` 操作符:
- `27$23` 计算结果为 `3*27 + 2*23 + 1 = 154`,列表变为 `['154']`。
5. 返回 `154` 作为最终结果。
 

方法二:

 #$的优先级低,直接分割,先把@计算完后,再单独计算$
    lst_info = information.split("$")
    #判断list中每个元素,没有@则跳过,有@计算
    for i in range(len(lst_info)):
        #每个再按@拆
        if '@' in lst_info[i]:
            lst1 = lst_info[i].split("@")
            lst2 = [int(j) for j in lst1]
            #按栈的方式计算
            lst2.append(lst2[0])
            for j in range(1,len(lst2)-1):
                lst2.append(lst2.pop(-1)*2 +lst2[j]+3)
            #最后只保留算出来的结果
            lst_info[i] =lst2[-1]
    lst_fianl = [int(i) for i in lst_info]
    #计算$,原理和上面相同
    lst_fianl.append(lst_fianl[0])
    for j in range(1, len(lst_fianl) - 1):
        lst_fianl.append(lst_fianl.pop(-1) * 3 + lst_fianl[j]*2 + 1)
    return lst_fianl[-1]

4.比特翻转

工程师小A在对二进制码流 bits 进行验证,验证方法为:给定目标值 target(0 或 1),最多可以反转二进制码流 bits 中的一位,来获取最大连续 target的个数,请返回该个数。

解答要求时间限制:1000ms, 内存限制:256MB

输入

第一行为 target,取值仅为 0 或 1;
第二行为 bits 的长度 length,取值范围 [1, 10000];
第三行为 bits 数组的元素,只包含 0 或 1 。

输出

一个整数,表示最大连续 target 的个数

样例

输入样例 1 

1
9
0 1 1 0 1 0 1 0 0

输出样例 1

4

提示样例 1

0 1 1 0 1 0 1 0 0
目标值为1,表示需要获取最大连续1的个数。
第二个出现的0反转为1,得到0 1 1 1 1 0 1 0 0 ,获得 4 个连续的1;
其它反转获得连续1的个数最大为3,如 1 1 1 0 1 0 1 0 0 或 0 1 1 0 1 1 1 0 0 。

输入样例 2 

0
8
0 0 0 0 0 0 0 0

输出样例 2

8

提示样例 2

不需要反转即可获得最大连续0,个数为8

滑动窗口的解法:

def find_max_consecutive_bits(self, target: int, bits: List[int]) -> int:
    left, right = 0, 1
    res = 0
    while right <= len(bits):
        if bits[left:right].count(1 - target) <= 1:
            res = max(res, right - left)
            right += 1
        else:
            left += 1
    return res

if bits[left:right].count(1 - target) <= 1:

计算当前子数组 bits[left:right] 中不同于 target 的位数(即 1 - target 的位数)。如果不同于 target 的位数不超过 1,则当前子数组符合条件。

更新 res 为当前子数组的长度与之前最大长度中的较大者。

right 指针右移一位,扩展子数组范围。

def main():
    target, length, bits = int(input().strip()), int(input().strip()), [*map(int, input().strip().split())]
    count1 = count2 = max_length = 0  # count2计算前一段连续target的个数 + 1, count1计算当前连续target的个数
    for i in range(length):
        if bits[i] == target:
            count1 += 1
            continue
        max_length = max(max_length, count2 + count1)
        count2 = count1 + 1
        count1 = 0
    max_length = max(max_length, count2 + count1)
    print(max_length)
if __name__ == "__main__":
    main()


啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,第一批和第七批的题目比起来还真的不是同一个难度啊

加油啊!!祝我好运

引用的代码就不一一注释原处了,作者介意的请联系我加上

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

了解Hive 工作原理:Hive 是如何工作的?

一、概念 1、Hive Apache Hive 是一个分布式的容错数据仓库系统&#xff0c;可实现大规模分析和便于使用 SQL 读取、写入和管理驻留在分布式存储中的PB级数据。 Hive是建立在Hadoop之上的数据仓库框架&#xff0c;它提供了一种类SQL的查询语言—HiveQL&#xff0c;使得熟悉S…

.NET调用阿里云人脸识别1:1简易流程保姆级教学

需要注意的是&#xff0c;以下内容仅限基础调用 人脸比对1:1 功能说明 该功能是两张照片对比&#xff0c;比对两张照片是不是同一个人&#xff0c;至于应用到什么场景&#xff0c;可以参考阿里云的官方文档&#xff0c;我这边以大学生项目来说的话&#xff0c;比如员工打卡&a…

strstr的使⽤和模拟实现

strstr&#xff08;function&#xff09; Returnsa pointer to the irst occurrence of str2 in str1, or a null pointer if str2 is not part of str1. &#xff08;函数返回字符串str2在字符串str1中第⼀次出现的位置&#xff09;。 The matchingprocess doesnot include t…

如何通过虚拟人动画制作打响文旅信息资源?

随着科技的发展&#xff0c;虚拟人动画制作成为文旅产业数字化转型的重要手段。虚拟人动画制作可以将文化资源转化为生动的动画形式&#xff0c;为文旅资源的宣传和推广注入新的活力。如阿布扎比文旅部推出的数字虚拟形象“哈利法”&#xff0c;通过虚拟人动画制作形式&#xf…

漂流瓶挂机项目,聊天脚本赚钱新玩法,号称单机30-50+ (教程+软件)

一、项目简介&#xff1a; 漂流瓶挂机项目主要是通过使用探遇漂流瓶、音麦漂流瓶等聊天软件&#xff0c;为用户提供一个聊天赚钱的平台。男性用户需要充值后才能发送消息&#xff0c;而女性用户则可以通过接收消息赚取分红。男性用户发送给女性用户的消息费用大约在.1-.2元之间…

大数据开发面试题【Spark篇】

115、Spark的任务执行流程 driver和executor&#xff0c;结构式一主多从模式&#xff0c; driver&#xff1a;spark的驱动节点&#xff0c;用于执行spark任务中的main方法&#xff0c;负责实际代码的执行工作&#xff1b;主要负责&#xff1a;将代码逻辑转换为任务、在executo…

618值得买的东西有哪些?买什么最划算?超全品类大清单总结

平日里让许多人心动不已的收藏加购好物&#xff0c;是否常常因为价格昂贵而让人望而却步&#xff1f;然而&#xff0c;618活动期间的到来&#xff0c;恰恰为我们提供了一个难得的购物盛宴&#xff01;相信在第一波活动中&#xff0c;许多消费者已经跃跃欲试&#xff0c;开始享受…

C++干货 --类和对象(二)

前言&#xff1a; 上文中&#xff0c;我们介绍了类这一重要知识点&#xff0c;包括为什么要有类、类的使用方法、封装、以及对象实例化。详情可以去看我的文章&#xff1a;写文章-CSDN创作中心C干货 --类和对象(一)-CSDN博客写文章-CSDN创作中心 这篇文章&#xff0c;我们简单…

短视频矩阵系统4年独立开发正规代发布接口源码搭建部署开发

1. 短视频矩阵源码技术开发要求及实现流程&#xff1a; 短视频矩阵源码开发要求具备视频录制、编辑、剪辑、分享等基本功能&#xff0c;支持实时滤镜、特效、音乐等个性化编辑&#xff0c;能够实现高效的视频渲染和处理。开发流程主要包括需求分析、技术选型、设计架构、编码实…

保险业务管理系统的设计与实现(论文 + 源码)

保险业务管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89361419 保险业务管理系统的设计与实现 摘要 历经二十余年的高速发展&#xff0c;我国保险行业的市场竞争已经达到白热化的程度&#xff0c;在同一个城市往往有数十家主体参与保险业务的竞争。保…

vue koa post 请求代理失败问题总结

场景是在使用 koa 写接口时&#xff0c;客户端发送 post 请求&#xff0c;服务端会报下面这个错误&#xff0c;导致接口未能访问成功&#xff1a; 前端接口一直 Pending 状态&#xff0c; 解决方案&#xff1a;走的是本地 mock 数据&#xff0c;未访问服务端的接口 总结&#x…

Facebook:解锁社交媒体的无限可能性

在当今数字化时代&#xff0c;社交媒体已经成为人们生活中不可或缺的一部分。而在众多社交媒体平台中&#xff0c;Facebook无疑是最为知名和影响力最大的之一。从其创立至今&#xff0c;Facebook一直在不断地演变和发展&#xff0c;成为了连接世界的桥梁&#xff0c;也是社交媒…

以不变应万变:在复杂世界中保持初心,坚持原则

在这个日新月异、瞬息万变的世界里&#xff0c;人情世故也显得尤为复杂。我们常常会因为忙碌的生活、工作压力以及人际关系的纠葛而感到迷茫和疲惫。在面对这些复杂局面的同时&#xff0c;如何保持内心的平静&#xff0c;坚持自己的原则&#xff0c;并在变幻莫测的环境中持续成…

【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】

调试笔记-系列文章目录 调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件 文章目录 调试笔记-系列文章目录调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件 前言一、调试环境操作系统&#xff1a;Ubuntu 22.04.4 LTS编译环境调试目标 二、调…

一个专为程序员设计的精致 Java 博客系统

大家好&#xff0c;我是 Java陈序员。 今天&#xff0c;给大家介绍一个设计精致的博客系统&#xff0c;基于 Java 实现&#xff01; 关注微信公众号&#xff1a;【Java陈序员】&#xff0c;获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。 项目介绍 bolo-solo …

抄表:现代生活中的数据采集关键

1.界定与发源 抄表&#xff0c;简单的说&#xff0c;指从各种各样计量机器设备(如智能水表、电度表、天然气表等)载入做好记录使用量的全过程。这一概念自工业化时代至今就出现了&#xff0c;最初由人工进行&#xff0c;伴随着科技创新&#xff0c;如今已经演化出自动化和远程…

Netflix Conductor整合Apache Seata实现支持分布式事务的服务编排方案

一、背景 Netflix Conductor是Netflix开源的一个微服务编排引擎。它旨在简化和自动化微服务架构中复杂的业务流程和工作流处理。Conductor允许开发人员使用声明性的方式定义工作流&#xff0c;将多个服务和任务组合成一个完整的业务流程。它提供了一个用户友好的UI界面&#xf…

echarts- 热力图, k线图,雷达图

热力图 热力图可以看成是一种矩形的散点图。 热力图的矩形受itemStyle的影响。 通常配合visualmap组件来根据值的大小做颜色的变化。 热力图主要通过颜色去表现数值的大小&#xff0c;必须要配合 visualMap 组件使用。 visualMap:视觉映射组件 let options {tooltip: {},xAx…

车辆相关识别API优化您的车辆系统

车辆相关识别API是开发者们所需的重要工具&#xff0c;它们基于先进的计算机视觉和深度学习技术&#xff0c;提供了强大的车辆识别和分类能力。这些API能够从图像或视频中快速准确地识别和提取车辆的关键信息&#xff0c;如车辆型号、品牌、颜色等。对于开发者而言&#xff0c;…

python-docx 在word中指定位置插入图片或表格

docx库add_picture()方法不支持对图片位置的设置 1、新建一个1行3列的表格&#xff0c;在中间的一列中插入图片 from docx import Document from docx.shared import Pt from docx.oxml.shared import OxmlElement from docx.enum.text import WD_ALIGN_PARAGRAPHdef add_cen…