python基于图片内容识别的微信自动发送信息(对其中逻辑修改一些可以改为自动化回复)

1.内容基于python日常生活问题帮助

2.主要框架

import time
from datetime import datetime

import pyperclip
import win32api
import win32con
import os
import re

from Image_Content_Text_Recognition import ICTR
from screenshot import img

上面是逻辑部分主要框架

import time

import numpy as np
from PIL import ImageGrab, Image
import cv2

上面部分是截图部分的框架比较简单

截图使用的是这位开发者的链接内容

微信信息发送时借鉴的这位开发者的方法

3.开始内容

整个代码的发送逻辑都是用的微信自带的快捷键,使用快捷键配合

win32api进行模拟人为按键来完成查找和发送,整体逻辑较为简单

    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(70, 0, 0, 0)  # F
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(70, 0, win32con.KEYEVENTF_KEYUP, 0)

    # 复制需要查找的人,按回车,进入聊天输入框
    pyperclip.copy('嗨嗨嗨')  # 联系人昵称
    spam = pyperclip.paste()
    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V;
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    win32api.keybd_event(13, 0, 0, 0)  # 13→Enter
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)

这一部分就是模拟按键内容

可以看到全都是利用的快捷键

接下来就是最麻烦的部分截图内容了,这一部分没有涉及到逻辑但是要调试画面截图的像素格

import os
import time

import numpy as np
from PIL import ImageGrab, Image
import cv2

if __name__ == '__main__':
    img = ImageGrab.grab(bbox=(930, 240, 2000, 1000))  # bbox 定义左、上、右和下像素的4元组 px
    print(img.size[1], img.size[0])
    img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
    print(img)
    img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  # 看评论区有C友说颜色相反,于是加了这一条
    name = time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time()))+'.jpg'
    cv2.imwrite(name, img)
    # cv2.imwrite(name, img)
# img = Image.fromarray(img)
# img.save('screenshot1.jpg')
def img():
    img = ImageGrab.grab(bbox=(930, 240, 2000, 1000))  # 小屏状态比例 bbox 定义左、上、右和下像素的4元组 px
    # img = ImageGrab.grab(bbox=(420, 80, 2600, 1150))  全屏状态比例 # bbox 定义左、上、右和下像素的4元组 px
    print(img.size[1], img.size[0])
    img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
    print(img)
    img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  # 看评论区有C友说颜色相反,于是加了这一条
    name = time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time())) + '.jpg'
    cv2.imwrite(name, img)
    return name

上面就是截图部分整一块的代码这一块除了调试像素格方位以外没有其他操作

完成截图后我改写的方法会返回截图方法内部识别的数据内容

    strings = img()

    ictr = ICTR(strings)  # 获取生成图片的名称通过名称找到图片进行处理
    # ictr = ICTR("2024_10_12_22_02_18.jpg")  # 获取生成图片的名称通过名称找到图片进行处理
    print(ictr)
    list1 = []
    list2 = ['5:', '6:', '7:', '4:']
    for i in ictr:
        for j in list2:
            result = fuzzy_search(j, i)
            if len(result) == 1:  # 找到今天的数据时间
                list1.append(i)
    # print(ictr)
    # print(list1)

第一个逻辑内容来了与之相搭配的还有一段逻辑代码

def fuzzy_search(pattern, text):
    if len(re.findall('昨天', text, re.IGNORECASE)) == 0:
        return re.findall(pattern, text, re.IGNORECASE)  # 在文本中查找匹配模式的所有子串,不区分大小写
    else:
        return []

上面两段代码构成了一整个数据的初步筛查,剔除了日期不对的数据首先进行两次遍历循环查看是否有对应5,6,7,4这几个时间节点的数据,并在判断是提出含有昨天的数据日期(本人做的时候只考虑一天,如果要改的话把判断规则加一个and就行了),然后就把出去今天之内以外的数据都剔除了

    if len(list1) > 0:
        ictr = ictr[ictr.index(list1[0]):]  # 吧筛选后的今天数据顶替掉之前的数据
    print(list1)
    print(ictr)
    list1 = []
    list2 = ['二', '2', '一', '1', '三', '3']

这一部分代码,剔除了当日数据可能为空的情况,并且设立了接下来主要的判断规则。

    for i in ictr:
        for j in list2:
            print(j + "   " + i)
            if j == i[0]:
                result = i
            # result = fuzzy_search(j, i)
            if len(result) != 0:  # 把汉字转换为数字方便处理
                # print(i)
                if i[0] == '二':
                    i = '2' + i[1:]
                if i[0] == '一':
                    i = '1' + i[1:]
                if i[0] == '三':
                    i = '3' + i[1:]
                list1.append(i)
    ictr = list(set(list1))

该部分还是使用遍历来处理上面设定的判断逻辑数据,我按照我的需求需要设定的逻辑数据并不多只有6个稍微遍历,处理一下就行了。

这一部分呢主要还是把对应规则的数据给找出来,只筛选开头第一个字符 if j == i[0]:在筛选完成后把所有筛选过后的数据开头全部改成数字方便判断筛选分类(筛选内容页可以放在这里面我写的时候给他拆开了)。

    # print(ictr)
    # print(" 发的受力钢筋阿斯利康都挂机立卡江苏理工就撒恐龙当家管理卡时间老顾客")
    computer_room = {  # 创建存储对象
        1: [],
        2: [],
        3: []
    }
    # print(ictr)
    for i in ictr:  # 设置优先级 2  3  1
        if i[0] == '1':
            computer_room[1].append(i[1:])
        if i[0] == '2':
            computer_room[2].append(i[1:])
        if i[0] == '3':
            computer_room[3].append(i[1:])

这一段呢主要是把数据的优先级规则设定一下,择优而选没有啥逻辑就是设计了一个对象而已,然后把数据遍历放入我们设定好的数据当中,这一段遍历可以和上面结合一下。

    # print(computer_room)
    weekday = now.weekday()
    days_of_week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    var = days_of_week[weekday]
    var2 = {  # 设置需要的规则数据组 也就是需要定的机房
        "星期一": [
            "4",
        ],
        "星期二": [],
        "星期三": [
            "6"
        ],
        "星期四": [
            "2", "4", "7",
        ],
        "星期五": [
            "2", "4", "7",
        ],
        "星期六": [
            "2", "4",
        ]
    }
    databuc = []
    sums1 = computer_room.get(2)  # 二机房
    sums2 = computer_room.get(3)  # 三机房
    sums3 = computer_room.get(1)  # 一机房
    data1 = '一机房'
    data2 = '二机房'
    data3 = '三机房'
    # print(computer_room)

    setdatas = var2.get(var)  # 找到
    # print(setdatas)
    # print(sums1)

到这一段代码基本上逻辑都结束了上面就是设计了关于每一个星期的锁定规则

    deldata = []
    deldata2 = []
    for j in setdatas:
        if len(fuzzy_search(j, str(sums1))) != 0:
            # print(j + "      s")
            databuc.append(j)
        else:
            data2 += j
    # print(len(databuc))
    # print(databuc)
    for j in databuc:
        # print(j + "    " + str(sums2))
        if len(fuzzy_search(j, str(sums2))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data3 += j
    databuc = deldata2
    deldata2 = []
    for j in databuc:
        if len(fuzzy_search(j, str(sums3))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data1 += j
            # databuc.remove(j)
    # print(data1 + "   " + data2 + "   " + data3)

这一段代码就是找出了所有没有被预定的机房然后生成字符串,这部分有一点点逻辑,其中的机房可能是被预定了的但是,其他机房有可能没有被预定所以我们需要保存一下那些没有预定成功的数据对下一个机房在此进行匹配预定,当前还有一个逻辑缺陷,就是如果全部被预定了呢那这一段代码就会出现问题,但是我实际使用是不太可能出现这个问题所以我并没有优化这个规则问题。

    data = ''
    databuc = deldata2
    deldata2 = []
    if len(data1[3:]) != 0:
        data += data1
    if len(data2[3:]) != 0:
        data += data2
    if len(data3[3:]) != 0:
        data += data3
    print(data)

    pyperclip.copy(data)  # 聊天的内容
    spam = pyperclip.paste()

    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V
    win32api.keybd_event(86, 0,   win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)

最后就是把处理好的字符穿发送就OK了,唯一有点逻辑的地方就是字符串拼接了还没啥难度。

def string_to_time(str_time):
    format_str = "%H:%M"
    time_obj = datetime.strptime(str_time, format_str)
    return time_obj.time()

这个就是代码的时间处理没难度csdn很多。

while True:
    # print(123123)
    now = datetime.now()

    # 提取星期几,0表示周一,6表示周日

    time_now = time.strftime("%H:%M:%S", time.localtime())  # 获取当前时间
    # print(time_now)
    sent_time = '06:30:00'  # 发送时间 数据结构采用时间 **:**:**

    # if sent_time != time_now:  # 当前时间等于发送时间则执行以下程序
    if sent_time <= time_now < '06:30:02':  # 当前时间等于发送时间则执行以下程序
        def open_app(app_dir):
            os.startfile(app_dir)


        # 打开微信
        if __name__ == "__main__":
            app_dir = r'D:\Program Files\Tencent\WeChat\WeChat.exe'  # 此处为微信的绝对路径
            open_app(app_dir)
            time.sleep(1)

            # 进入微信,模拟按键Ctrl+F
        achieve()

        exit()  # 退出程序

这一段是代码的运行主题主要就是定时发送,然后我考虑到使用while 运行起来电脑压力有点大就让他一秒动一次让后把判断的规则增加了几秒让其在一分钟内完成整个处理就OK了

4.完整代码

import os
import time

import numpy as np
from PIL import ImageGrab, Image
import cv2

if __name__ == '__main__':
    img = ImageGrab.grab(bbox=(930, 240, 2000, 1000))  # bbox 定义左、上、右和下像素的4元组 px
    print(img.size[1], img.size[0])
    img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
    print(img)
    img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  # 看评论区有C友说颜色相反,于是加了这一条
    name = time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time()))+'.jpg'
    cv2.imwrite(name, img)
    # cv2.imwrite(name, img)
# img = Image.fromarray(img)
# img.save('screenshot1.jpg')
def img():
    img = ImageGrab.grab(bbox=(930, 240, 2000, 1000))  # 小屏状态比例 bbox 定义左、上、右和下像素的4元组 px
    # img = ImageGrab.grab(bbox=(420, 80, 2600, 1150))  全屏状态比例 # bbox 定义左、上、右和下像素的4元组 px
    print(img.size[1], img.size[0])
    img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
    print(img)
    img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)  # 看评论区有C友说颜色相反,于是加了这一条
    name = time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time())) + '.jpg'
    cv2.imwrite(name, img)
    return name

截图主体

"""

实现定时自动发送消息

"""

import time
from datetime import datetime

import pyperclip
import win32api
import win32con
import os
import re

from Image_Content_Text_Recognition import ICTR
from screenshot import img


def fuzzy_search(pattern, text):
    if len(re.findall('昨天', text, re.IGNORECASE)) == 0:
        return re.findall(pattern, text, re.IGNORECASE)  # 在文本中查找匹配模式的所有子串,不区分大小写
    else:
        return []


def achieve():
    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(70, 0, 0, 0)  # F
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(70, 0, win32con.KEYEVENTF_KEYUP, 0)

    # 复制需要查找的人,按回车,进入聊天输入框
    pyperclip.copy('嘎嘎嘎')  # 联系人昵称
    spam = pyperclip.paste()
    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V;
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)
    win32api.keybd_event(13, 0, 0, 0)  # 13→Enter
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(2)  # 剔除可以不需要的暂停
    strings = img()

    ictr = ICTR(strings)  # 获取生成图片的名称通过名称找到图片进行处理
    # ictr = ICTR("2024_10_12_22_02_18.jpg")  # 获取生成图片的名称通过名称找到图片进行处理
    print(ictr)
    list1 = []
    list2 = ['5:', '6:', '7:', '4:']
    for i in ictr:
        for j in list2:
            result = fuzzy_search(j, i)
            if len(result) == 1:  # 找到今天的数据时间
                list1.append(i)
    # print(ictr)
    # print(list1)
    if len(list1) > 0:
        ictr = ictr[ictr.index(list1[0]):]  # 吧筛选后的今天数据顶替掉之前的数据
    print(list1)
    print(ictr)
    list1 = []
    list2 = ['二', '2', '一', '1', '三', '3']
    # print(ictr)
    for i in ictr:
        for j in list2:
            print(j + "   " + i)
            if j == i[0]:
                result = i
            # result = fuzzy_search(j, i)
            if len(result) != 0:  # 把汉字转换为数字方便处理
                # print(i)
                if i[0] == '二':
                    i = '2' + i[1:]
                if i[0] == '一':
                    i = '1' + i[1:]
                if i[0] == '三':
                    i = '3' + i[1:]
                list1.append(i)
    ictr = list(set(list1))
    # print(ictr)
    # print(" 发的受力钢筋阿斯利康都挂机立卡江苏理工就撒恐龙当家管理卡时间老顾客")
    computer_room = {  # 创建存储对象
        1: [],
        2: [],
        3: []
    }
    # print(ictr)
    for i in ictr:  # 设置优先级 2  3  1
        if i[0] == '1':
            computer_room[1].append(i[1:])
        if i[0] == '2':
            computer_room[2].append(i[1:])
        if i[0] == '3':
            computer_room[3].append(i[1:])
    # print(computer_room)
    weekday = now.weekday()
    days_of_week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
    var = days_of_week[weekday]
    var2 = {  # 设置需要的规则数据组 也就是需要定的机房
        "星期一": [
            "4",
        ],
        "星期二": [],
        "星期三": [
            "6"
        ],
        "星期四": [
            "2", "4", "7",
        ],
        "星期五": [
            "2", "4", "7",
        ],
        "星期六": [
            "2", "4",
        ]
    }
    databuc = []
    sums1 = computer_room.get(2)  # 二机房
    sums2 = computer_room.get(3)  # 三机房
    sums3 = computer_room.get(1)  # 一机房
    data1 = '一机房'
    data2 = '二机房'
    data3 = '三机房'
    # print(computer_room)

    setdatas = var2.get(var)  # 找到
    # print(setdatas)
    # print(sums1)
    deldata = []
    deldata2 = []
    for j in setdatas:
        if len(fuzzy_search(j, str(sums1))) != 0:
            # print(j + "      s")
            databuc.append(j)
        else:
            data2 += j
    # print(len(databuc))
    # print(databuc)
    for j in databuc:
        # print(j + "    " + str(sums2))
        if len(fuzzy_search(j, str(sums2))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data3 += j
    databuc = deldata2
    deldata2 = []
    for j in databuc:
        if len(fuzzy_search(j, str(sums3))) != 0:
            # print(j + "      s")
            deldata2.append(j)
        else:
            data1 += j
            # databuc.remove(j)
    # print(data1 + "   " + data2 + "   " + data3)
    data = ''
    databuc = deldata2
    deldata2 = []
    if len(data1[3:]) != 0:
        data += data1
    if len(data2[3:]) != 0:
        data += data2
    if len(data3[3:]) != 0:
        data += data3
    print(data)

    pyperclip.copy(data)  # 聊天的内容
    spam = pyperclip.paste()

    win32api.keybd_event(17, 0, 0, 0)  # Ctrl
    win32api.keybd_event(86, 0, 0, 0)  # 86→V
    win32api.keybd_event(86, 0,   win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)


# time.sleep(3)  剔除可以不需要的暂停


def string_to_time(str_time):
    format_str = "%H:%M"
    time_obj = datetime.strptime(str_time, format_str)
    return time_obj.time()


while True:
    # print(123123)
    now = datetime.now()

    # 提取星期几,0表示周一,6表示周日

    time_now = time.strftime("%H:%M:%S", time.localtime())  # 获取当前时间
    # print(time_now)
    sent_time = '06:30:00'  # 发送时间 数据结构采用时间 **:**:**

    # if sent_time != time_now:  # 当前时间等于发送时间则执行以下程序
    if sent_time <= time_now < '06:30:02':  # 当前时间等于发送时间则执行以下程序
        def open_app(app_dir):
            os.startfile(app_dir)


        # 打开微信
        if __name__ == "__main__":
            app_dir = r'D:\Program Files\Tencent\WeChat\WeChat.exe'  # 此处为微信的绝对路径
            open_app(app_dir)
            time.sleep(1)

            # 进入微信,模拟按键Ctrl+F
        achieve()

        exit()  # 退出程序

逻辑主体

import datetime
import time
import numpy as np
from PIL import ImageGrab, Image
import cv2

from paddleocr import PaddleOCR

# 实例化OCR模型
ocr = PaddleOCR()

# 识别图片中的文字  内容识别
def ICTR(name):
    result = ocr.ocr('E:\\Python\\pythonProject1\\'+name)
    # print('识别结果:',datetime.datetime.now())
    sstr = "D:\\图片\\文件\\" + time.strftime('%Y_%m_%d_%H_%M_%S', time.localtime(time.time())) + ".txt"
    print(sstr)
    strsc = []
    # sums = 0
    with open(sstr, 'w', encoding='utf-8') as file:
        # with open(sstr, 'w', encoding='utf-8') as file:
        for line in result:
            for word in line:
                text_line = word[-1]  # 提取出识别数据中的文字元组
                text = text_line[0]  # 从文字元组中提取文字内容
                # print("text:", text)
                file.write(text + '\n')  # 将文字内容写入文件中
                strsc.append(text)
                # print(text + '\n')
    return strsc

图片内容识别主体

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

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

相关文章

Axure重要元件二——内联框架

亲爱的小伙伴&#xff0c;在您浏览之前&#xff0c;烦请关注一下&#xff0c;在此深表感谢&#xff01; 课程主题&#xff1a;内联框架 课程内容&#xff1a;认识内联框架、基本嵌入 应用场景&#xff1a;表单、图片、文字嵌入式场景、交互应用 一、认识内联框架 内联框架的…

开源两个月,antflow后端项目全网获近100星

从六月初开源,转眼间AntFlow已经开源将近四个月了(前端比后端早了大约2个月,后端于8.18开源).(其实准备是重构以前开源版本.前年的时候我们已经将Vue2版的流程设计器开源了.后来由于疫情原因,没有再继续持续开发.)后来有一天再打开仓库的时候,发现虽然很久没有更新了,但是不断有…

如何在算家云搭建Video-Infinity(视频生成)

一、模型介绍 Video-Infinity是一个先进的视频生成模型&#xff0c;使用多个 GPU 快速生成长视频&#xff0c;无需额外训练。它能够基于用户提供的文本或图片提示&#xff0c;创造出高质量、多样化的视频内容。 二、模型搭建流程 1.大模型 Video-Infinity 一键使用 基础环境…

应用商店上新:MainConcept Transcoder和Live Streaming Software App

在Akamai云计算平台上运行工作负载的你也许还不知道&#xff0c;为了帮助用户更容易地找到并快速部署各类解决方案&#xff0c;Akamai提供了一个丰富的应用商店&#xff08;Marketplace&#xff09;&#xff0c;其中包含各类经过验证&#xff0c;可以在Akamai云计算平台上轻松部…

MoeCTF 2024 ---Misc方向WP

安全杂项 signin 题目描述&#xff1a; xdsec的小伙伴们和参赛者来上课&#xff0c;碰巧这一天签到系统坏了&#xff0c;作为老师的你&#xff0c;要帮他们 教师代签。 特殊提醒&#xff1a;luo同学今天好像在宿舍打游戏&#xff0c;不想来上课&#xff0c;这是严重的缺勤行为…

react18中如何监听localstorage的变化获取最新的本地缓存

有时候业务中会需要监听缓存的变化&#xff0c;实时更新页面的内容获取发送接口请求。这就要我们来监听对localstorage的修改&#xff0c;实时响应变化&#xff01;&#xff01;一下方法同样实用于vue项目。 同一个项目中不同页面的实现 实现效果 代码分析 修改localstoare的…

「漏洞复现」英飞达医学影像存档与通信系统 WebUserLogin.asmx 信息泄露漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

Redis中String类型常见的应用场景

目录 一. 缓存功能什么是缓存?Redis的工作原理热点数据的过期策略是什么? 二. 计数功能三. 会话(session)共享Session会话是用来解决什么问题的使用Redis集中管理Session 一. 缓存功能 什么是缓存? 缓存是一种用于存储数据的计算机硬件或软件组件. 缓存核心功能是加快数据…

Android上的AES加密

基础算法说明 https://www.youtube.com/watch?vlnKPoWZnNNM 虽然这个视频讲的非常详细&#xff0c;但是涉及到具体底层算法&#xff0c;大致流程 1. 将数据转成HEX或者byte array 2.将数据分层一块块等大小的数据 3.将数据和key 进行一次混合&#xff0c;加密之后的输出&…

AI让企业知识管理与设计产出更智序

AI与各行各业的融合程度正在不断加深。 从医疗健康到金融服务&#xff0c;从教育到制造业&#xff0c;从零售到物流&#xff0c;AI的应用正在推动这些行业的转型升级&#xff0c;提高效率&#xff0c;降低成本&#xff0c;创造新的增长点。一家专注于显示制造的企业就遇到了这…

SpringBoot技术的车辆管理系统集成

3系统分析 3.1可行性分析 通过对本车辆管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本车辆管理系统采用Spring Boot框架&#xff0c;JAVA作为开发语…

破局汽车基础软件发展丨昂辉科技亮相2024芜湖新能源汽车零部件和后市场生态博览会

10月14—17日&#xff0c;2024芜湖新能源汽车零部件和后市场生态博览会在芜湖市宜居国际博览中心盛大开幕。昂辉科技携新一代EasySAR车载基础软件工具链产品亮相核心零部件展区。 作为新能源汽车行业的一次盛会&#xff0c;本届博览会以“会议论坛展区展示”为特色&#xff0c…

开源限流组件分析(一):juju/ratelimit

文章目录 前言数据结构对外提供接口初始化令牌桶获取令牌 核心方法adjustavailableTokenscurrentTicktakeTakeAvailableWait系列 前言 这篇文章分析下go开源限流组件juju-ratelimit的使用方式和源码实现细节 源码地址&#xff1a;https://github.com/juju/ratelimit 版本&…

非常漂亮html公告弹窗代码

非常漂亮html公告弹窗代码 <style>.act-user-modal[data-v-627ce64e] {width: 900px;height: 570px;position: fixed;left: 50%;top: 50%;z-index: 9000;background: url(https://pic1.zhimg.com/80/v2-39b2a0ea3f338776b81d760e67d56027.png)no-repeat 50%;margin: -285…

[已解决] pycharm添加本地conda虚拟环境 + 配置解释器 - pycharm找不到conda可执行文件

目录 问题&#xff1a; 方法&#xff1a; 补充&#xff1a;创建conda虚拟环境 参考文档&#xff1a;pycharm找不到conda可执行文件怎么办&#xff1f;-CSDN 问题&#xff1a; 1.显示&#xff1a;未为项目配置 Python 解释器 2.想在pycharm中使用本地创建的虚拟环境 方法&a…

关于MyBatis-Plus 提供Wrappers.lambdaQuery()的方法

实例&#xff1a; private LambdaQueryWrapper<XXX> buildQueryWrapper(XXXBo bo) { Map<String, Object> params bo.getParams(); LambdaQueryWrapper<XXX> lqw Wrappers.lambdaQuery(); lqw.eq(bo.getOrgId() ! null, XXX::getOrgId, bo.getOrgId()); lq…

搭建Elasticsearch集群

一. 集群的结构 1.单点的问题 单点的Elasticsearch存在哪些可能出现的问题呢? 单台机器存储容量有限,无法实现高存储。容易出现单点故障,无法实现高可用。单服务的并发处理能力有限,无法实现高并发所以,为了应对这些问题,我们需要对Elasticsearch搭建集群。 2.数据分片…

芯课堂 | 使用 SWM341 系列 MCU 环境配置

SWM341系列MCU调试环境配置 SWM341 是华芯微特的其中一款 MCU&#xff0c;341 和 341内置 SDRAM 的 34S 系列&#xff0c;其内核相同。 芯片使用安谋科技“星辰”STAR-MC1 内核,基于 Arm-V8 指令集架构&#xff0c;下载烧录选 M33&#xff0c;对应的工具需要升级; 1、使用 KE…

【踩坑随笔】Tensorflow-GPU训练踩坑

一个无语的坑&#xff0c;4060单卡训练&#xff0c;8G内存本来就不够&#xff0c;还没开始训练就已经爆内存了&#xff0c;但是居然正常跑完了训练&#xff0c;然后一推理发现结果就是一坨。。。往回翻日志才发现原来中间有异常。 首先解决第一个问题&#xff1a;Could not lo…

阴盘奇门月将查法排法以及php的实现的部分代码

vvvvv绿泡泡: lsk9479 月将查法&#xff0c;是根据二十四节气来查询的&#xff0c;查法表如下&#xff1a; ‌雨水至春分‌&#xff1a;月将为亥‌春分至谷雨‌&#xff1a;月将为戌‌谷雨至小满‌&#xff1a;月将为酉‌小满至夏至‌&#xff1a;月将为申‌夏至至大暑‌&am…