9.18r
  aLtyUkILiC9Y 2023年11月02日 31 0

Python request_id传递除中间件的方式还可以采用本地线程实现;

专业名词记忆得加强。描述符协议(get.set.delete魔术方法);

Not implemented。二元运算中可能会用到;

MySQL大数据的优化(分库分表,缓存,读写分离等)。

orm可能面临的一些弊端(映射。性能。独立性等方面不足。大数据量还是建议原生sql)

分库分表(目前能想到的就是一个历史数据,订单数据等)

设计表结构之前一定得规划好,要可扩展。要不后期可能面临很多问题;

基础的算法题还得加强。不能一味的依赖默认函数。这样可能会降低自己的逻辑思维能力;

主要还得加强一些专业名词术语。要学以致用。要锻炼下自己的表达能力。

任何语言。哪怕自己很熟。不用都会生疏。所以要经常拿起来看看。

mq大数据优化。

Redis作为缓存可能会出现的一些问题。rdb。aof。

设计模式(不小心把依赖倒置原则忘了。希望只是紧张倒置)。

单例。适配器。装饰器。工厂。抽象等。

专业名词得好好加强。要不然可能会出现get不到别人的意思的情况。

数据库的底层原理。也得经常复习。要不然可能很快就会忘记。

进程、线程&协程需要找时间复习一下底层

 ---

from typing import List


class CQueue:
    """两个栈实现一个队列"""
    def __init__(self):
        self.stackA = []
        self.stackB = []

    def append_tail(self, value: int) -> None:
        self.stackA.append(value)

    def pop_head(self) -> int:
        if not self.stackB:
            if not self.stackA:
                return -1
            else:
                for i in range(len(self.stackA)):
                    self.stackB.append(self.stackA.pop())
        return self.stackB.pop()


def is_palindrome(x: int) -> bool:
    """递归解决回文数"""
    def inner(s, flag=True) -> bool:
        s = str(s)
        if len(s) in (0, 1):
            return flag
        if s[0] == s[-1]:
            return inner(s[1:-1])
        else:
            flag = False
            return flag
    return inner(x)


def two_sum(nums: List[int], target: int) -> List[int]:
    """两数之和"""
    dic = {}
    for k, v in enumerate(nums):
        if target - v in dic:
            return [dic[target - v], k]
        dic[v] = k


def roman_int(s: str) -> int:
    """罗马数字转整型"""
    mapping = {
        "I": 1,
        "V": 5,
        "X": 10,
        "L": 50,
        "C": 100,
        "D": 500,
        "M": 1000
    }
    total = 0
    length = len(s)
    for i in range(length):
        if i < length - 1 and mapping[s[i]] < mapping[s[i+1]]:
            total -= mapping[s[i]]
        else:
            total += mapping[s[i]]
    return total


def plus_one(digits: List[int]) -> List[int]:
    """加一"""

    a = ""
    for i in digits:
        a += str(i)
    return list(map(int, str(int(a) + 1)))


def merge(nums1: List[int], m: int, nums2: List[int], n: int) -> None:
    """合并两个有序数组"""
    i, j = 0, 0
    while j < n:
        if i > m + j:
            nums1[i: i+n-j] = nums2[j:n]
            break
        if nums1[i] < nums2[j]:
            i += 1
        else:
            nums1[i], nums1[i+1:] = nums2[j], nums1[i: len(nums1) - 1]
            j += 1
            i += 1


def last_remaining1(n: int, m: int) -> int:
    """约瑟夫环正常解法"""
    index = 0
    lis = list(range(n))
    while len(lis) > 1:
        index = (index +m - 1) % len(lis)
        lis.pop(index)
    return lis.pop()


def last_remaining2(n: int, m: int) -> int:
    """约瑟夫环公式法"""
    res = 0
    for i in range(2, n+1):
        res = (res + m) % i
    return res


def pivot_index(nums: List[int]) -> int:
    """寻找数组中心下标"""
    nums_count = sum(nums)
    left = 0
    for index, value in enumerate(nums):
        if left + left + value == nums_count:
            return index
        else:
            left += value
    return -1


def longest_common_prefix(strs: List[str]) -> str:
    """寻找最长公共前缀"""
    n = 0
    for i in list(zip(*strs)):
        if len(set(i)) == i:
            n += 1
        else:
            break
    return strs[0][:n]


def str_index(haystack: str, needle: str) -> int:
    """找字符串的下标"""
    if needle in haystack:
        return haystack.index(needle)
    return -1


def reverse_str(s: List[str]) -> None:
    """翻转字符串:这么简单的面试题。。卡壳了"""
    left, right = 0, len(s) - 1
    while left < right:
        s[left], s[right] = s[right], s[left]
        left += 1
        right -= 1


def array_pair_sum(nums: List[int]) -> int:
    """数组拆分"""
    nums.sort()
    return sum(nums[::2])


def find_max_one(nums: List[int]) -> int:
    """找最大1的个数"""
    a, b = 0, 0
    for i in range(len(nums)):
        if nums[i] == 0:
            if a > b:
                b = a
            a = 0
        else:
            a += 1
    return max(a, b)


def reverse_words(s: str) -> str:
    """反转字符串中的单词: 写不下去了。用内置函数"""
    return " ".join([i[::-1] for i in s.split()])


def search_insert(nums: List[int], target: int) -> int:
    """搜索插入的位置: 二分查找的思路"""
    left, right = 0, len(nums) - 1
    while left < right:
        middle = (left + right) // 2
        if nums[middle] < target:
            left = middle + 1
        elif nums[middle] > target:
            right = middle - 1
        else:
            return middle
    if nums[left] < target:
        return left + 1
    else:
        return left


def move_zero(nums: List[int]) -> None:
    """移动0:不等于0的放最前边。补0"""
    slow = 0
    for k, v in enumerate(nums):
        if v != 0:
            nums[slow] = v
            slow += 1
    for i in range(slow, len(nums)):
        nums[i] = 0


def remove_item(nums: List[int], val: int) -> int:
    """移除指定元素"""
    m = 0
    for k, v in enumerate(nums):
        if v != val:
            nums[m] = v
            m += 1
    return m


def remove_dup(nums: List[int]) -> int:
    """移除重复项"""
    m = 0
    for i in range(len(nums)):
        if m < 1 or nums[i] != nums[m-1]:
            nums[m] = nums[i]
            m += 1
    return m

 

作者:前方、有光


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读