企业编码生成系统--Python基础项目(4)

news2025/1/20 22:48:18

1. 成品展示🚗🚀🛫

运行🚀🚀🚀:
	1.在PyCharm中运行《企业编码生成系统》即可进入如图1所示的系统主界面。
	2.在该界面中可以选择要使用功能对应的菜单进行不同的操作。
	3.在选择功能菜单时,只需要输入对应的数字即可。
作者注释🍕🍔🍟:
	1.博客只展示大部分(90%)核心代码及其使用说明
    2.本博客适用于python基础学者学习使用(内含各种用于解决实际生活中的问题的库)
    3.源码我会放在文章末尾的链接哦~~
关于博客,有不懂的同学,欢迎在评论区评论(接受一切质疑与批评),评论都会一一回复(作者考研狗,回复的比较慢,请见谅...

在这里插入图片描述

2. 编码🍕🍔🍟

2.1 新建虚拟环境💖💖

# 打开cmd
1. 安装virtualenv (windows操作系统)
	pip install virtualenv virtualenvwrapper-win

2. workon查看虚拟环境
	workon

3. mkvirtualenv创建新的虚拟环境
	mkvirtualenv pro_env

4. rmvirtualenv删除虚拟环境
	rmvirtualenv pro_env

5. 进入虚拟环境
	workon flask1env
    
6. 打开Pycharm专业版,创建项目并配置好虚拟环境pro_env

2.2 导包💖💖

二维码:
	pip install qrcode
	pip install Image
	pip install pyStrich

2.3 企业编码管理系统主菜单💖💖

# 企业编码管理系统主菜单
def mainmenu():
    # os.system("clear")
    print("""\033[1;35m
      ****************************************************************
                            企业编码生成系统
      ****************************************************************
          1.生成6位数字防伪编码 (213563型)
          2.生成9位系列产品数字防伪编码(879-335439型)
          3.生成25位混合产品序列号(B2R12-N7TE8-9IET2-FE35O-DW2K4型)
          4.生成含数据分析功能的防伪编码(5A61M0583D2)
          5.智能批量生成带数据分析功能的防伪码
          6.后续补加生成防伪码(5A61M0583D2)
          7.EAN-13条形码批量生成
          8.二维码批量输出          
          9.企业粉丝防伪码抽奖
          0.退出系统
      ================================================================
      说明:通过数字键选择菜单
      ================================================================
    \033[0m""")

2.4 生成注册码💖💖

# 实现屏幕输出和文件输出编码信息,参数num_choice设置输出的文件名称
def scode1(num_choice):
    # 调用inputbox函数对输入数据进行非空、输入合法性判断
    incount = inputbox("\033[1;32m  请输入您要生成验证码的数量:  \33[0m", 1, 0)
    while int(incount) == 0:  # 如果输入为字母或数字0,则要求重新输入
        incount = inputbox("\033[1;32m  请输入您要生成验证码的数量:  \33[0m", 1, 0)
    randstr.clear()  # 清空保存批量注册码信息的变量randstr
    for j in range(int(incount)):  # 根据输入的验证码数量循环批量生成注册码
        randfir = ''  # 设置存储单条注册码的变量为空
        for i in range(6):  # 循环生成单条注册码
            randfir += random.choice(number)  # 产生数字随机因子 
        randfir = randfir + "\n"  # 在单条注册码后面添加转义换行字符“\n”,使验证码单条列显示 
        randstr.append(randfir)  # 将单条注册码添加到保存批量验证码的变量randstr 
    # 调用函数wfile(),实现生成的防伪码屏幕输出和文件输出
    wfile(randstr,"scode" + str(num_choice) + ".txt", "", "已生成6位防伪码共计:","codepath")

2.5 9位系列产品数字防伪编码💖💖

def scode2(num_choice):
    ordstart = inputbox("\033[1;32m  请输入系列产品的数字起始号(3位):  \33[0m", 3, 3)
    while int(ordstart) == 0:  # 如果输入非法(符号、字母或者数字0都认为是非法输入),重新输入
        ordstart = inputbox("\033[1;32m  请输入系列产品的数字起始号(3位):  \33[0m", 3, 3)

    ordcount = inputbox("\033[1;32m  请输入产品系列的数量:", 1, 0)
    # 如果输入的产品系列数量小于1或者大于9999,,则要求重新输入
    while int(ordcount) < 1 or int(ordcount) > 9999:
        ordcount = inputbox("\033[1;32m  请输入产品系列的数量:", 1, 0)

    incount = inputbox("\033[1;32m  请输入要生成的每个系列产品的防伪码数量:\33[0m", 1, 0)
    while int(incount) == 0:  # 如果输入为字母或数字0,则要求重新输入
        incount = inputbox("\033[1;32m  请输入您要生成验证码的数量:\33[0m", 1, 0)

    randstr.clear()  # 清空保存批量注册码信息的变量randstr
    for i in range(int(ordcount)):  # 分类产品编号
        for j in range(int(incount)):  # 产品防伪码编号
            randfir = ''
            for k in range(6):  # 生成一个不包含类别的产品防伪码
                randfir = randfir + random.choice(number)  # 每次生成一个随机因子
            randstr.append(str(int(ordstart) + i) + randfir + "\n")  # 将生成的单条防伪码添加到防伪码列表
    # 调用函数wfile(),实现生成的防伪码屏幕输出和文件输出
    wfile(randstr, "scode" + str(num_choice) + ".txt", "", "已生成9位系列产品防伪码共计:","codepath")

2.6 25位混合产品序列号💖💖

def scode3(num_choice):
    # 输入要生成的防伪码数量
    incount = inputbox("\033[1;32m  请输入要生成的25位混合产品序列号数量:\33[0m", 1, 0)
    while int(incount) == 0: # 如果输入非法(符号、字母或者数字0都认为是非法输入),重新输入
        incount = inputbox("\033[1;32m  请输入要生成的25位混合产品序列号数量:\33[0m", 1, 0)
    randstr.clear()  # 清空保存批量注册码信息的变量randstr
    for j in range(int(incount)):  # 按输入数量生成防伪码
        strone = ''  # 保存生成的单条防伪码,不带横线“-”,循环时清空
        for i in range(25):
            strone = strone + random.choice(letter)  # 每次产生一个随机因子,也就是每次产生单条防伪码的一位
        # 将生成的防伪码每隔5位添加横线“-”
        strtwo = strone[:5] + "-" + strone[5:10] + "-" + strone[10:15] + "-" + strone[15:20] + "-" + strone[20:25] + "\n"
        randstr.append(strtwo)   # 添加防伪码到防伪码列表
    # 调用函数wfile(),实现生成的防伪码屏幕输出和文件输出
    wfile(randstr, "scode" + str(num_choice) + ".txt", "", "已生成25混合防伪序列码共计:","codepath")

2.7 含数据分析功能防伪编码💖💖

scode4()函数

# 生成含数据分析功能防伪编码函数,参数num_choice设置输出的文件名称
def scode4(num_choice):
    intype = inputbox("\033[1;32m  请输入数据分析编号(3位字母):\33[0m", 2, 3)
    # 验证输入是否是三个字母,所以要判断输入是否是字母和输入长度是否为3
    while not str.isalpha(intype) or len(intype) != 3:
        intype = inputbox("\033[1;32m  请输入数据分析编号(3位字母):\33[0m", 2, 3)
    incount = inputbox("\033[1;32m  请输入要生成的带数据分析功能的验证码数量:\33[0m", 1, 0)  #
    # 验证输入是否是大于零的整数,判断输入转换为整数值时是否大于零
    while int(incount) == 0:  # 如果转换为整数时为零,则要求重新输入
        incount = inputbox("\033[1;32m  请输入要生成的带数据分析功能的验证码数量:\33[0m", 1, 0)  #
    ffcode(incount,intype,"",num_choice)  # 调用 ffcode函数生成注册信息

ffcode()

# 生成含数据分析功能防伪编码函数,参数scount为要生成的防伪码数量,typestr为数据分析字符
# 参数ismessage在输出完成时是否显示提示信息,为“no”不显示,为其他值显示;参数num_choice设置输出的文件名称
def ffcode(scount, typestr,ismessage, num_choice):
    randstr.clear()  # 清空保存批量注册码信息的变量randstr
    # 按数量生成含数据分析功能注册码
    for j in range(int(scount)):
        strpro = typestr[0].upper()    # 取得三个字母中的第一个字母,并转为大写,区域分析码
        strtype = typestr[1].upper()   # 取得三个字母中的第二个字母,并转为大写,颜色分析码
        strclass = typestr[2].upper()  # 取得三个字母中的第三个字母,并转为大写,版本分析码
        randfir = random.sample(number, 3)  # 随机抽取防伪码中的三个位置,不分先后
        randsec = sorted(randfir)  # 对抽取的位置进行排序并存储给randsec变量,以便按顺序排列三个字母的位置
        letterone = ""  # 清空存储单条防伪码的变量letterone
        for i in range(9):  # 生成9位的数字防伪码
            letterone = letterone + random.choice(number)
        # 将三个字母按randsec变量中存储的位置值添加到数字防伪码中,并放到sim变量中
        sim = str(letterone[0:int(randsec[0])]) + strpro + str(
            letterone[int(randsec[0]):int(randsec[1])]) + strtype + str(
            letterone[int(randsec[1]):int(randsec[2])]) + strclass + str(letterone[int(randsec[2]):9]) + "\n"
        randstr.append(sim)   # 将组合生成的新防伪码添加到randstr变量
    # 调用wfile()函数,实现生成的防伪码屏幕输出和文件输出
    wfile(randstr, typestr + "scode" + str(num_choice) + ".txt", ismessage, "生成含数据分析防伪码共计:","codepath")

2.8 含数据分析功能防伪编码函数💖💖

# 生成含数据分析功能防伪编码函数,参数num_choice设置输出的文件名称
def scode5(num_choice):
    default_dir = r"mrsoft.mri"    # 设置默认打开的文件名称

    # 打开文件选择对话框,指定打开的文件名称为"mrsoft.mri" ,扩展名为“mri”,可以使用记事本打开和编辑
    file_path = tkinter.filedialog.askopenfilename(filetypes=[("Text file","*.mri")],title=u"请选择自动防伪码智能批处理文件:",
                                                   initialdir=(os.path.expanduser(default_dir)))
    codelist = openfile(file_path)   # 读取从文件选择对话框选中的文件
    print("前:",codelist)
    codelist = codelist.split("\n")  # 把读取的信息内容添加回车,以便列输出显示
    print("后:",codelist)
    for item in codelist:  # 按读取的信息循环生成防伪码
        codea = item.split(",")[0]  # 每一行信息中用 ","分割,","前面的信息存储防伪码标准信息
        codeb = item.split(",")[1]  # 每一行信息中用 ","分割,","后面的信息存储防伪码生成的数量
        ffcode(codeb, codea,"no" ,num_choice)  # 调用ffcode函数批量生成同一标识信息的防伪码

2.9 后续补加生成防伪码函数,防伪码格式为带数据分析功能注册码💖💖

#  后续补加生成防伪码函数,防伪码格式为带数据分析功能注册码
def scode6(num_choice):
    default_dir = r"c:\scode5.txt"    # 设置默认打开的文件名称
    # 按默认的文件名称打开文件选择对话框,用于打开已经存在的防伪码文件
    file_path = tkinter.filedialog.askopenfilename(title=u"请选择已经生成的防伪码文件",initialdir=(os.path.expanduser(default_dir)))
    codelist = openfile(file_path)      # 读取从文件选择对话框选中的文件
    codelist = codelist.split("\n")     # 把读取的信息内容添加回车,以便列输出显示
    codelist.remove("")                 # 删除列表中的空行
    strset = codelist[0]                # 读取一行数据,以便获取原验证码的字母标志信息
    remove_digits = strset.maketrans("", "", digits)  # 用maketrans方法创建删除数字的字符映射转换表
    res_letter = strset.translate(remove_digits)  # 根据字符映射转换表删除该条防伪码中的数字,获取字母标识信息
    nres_letter = list(res_letter)   # 把信息用列表变量nres_letter存储
    strpro = nres_letter[0]    # 从列表变量中取得第一个字母,即区域分析码
    strtype = nres_letter[1]   # 从列表变量中取得第二个字母,即色彩分析码
    strclass = nres_letter[2]   # 从列表变量中取得第三个字母,即版次分析码
    # 去除信息中的括号和引号
    nres_letter = strpro.replace(''''','').replace(''''', '') + strtype.replace(
        ''''','').replace(''''', '') + strclass.replace(''''','').replace(''''', '')
    print("sssssssssss",nres_letter)
    card = set(codelist)   # 将原有防伪码放到集合变量card中
    # 利用tkinter的messagebox提示用户之前生成的防伪码数量
    tkinter.messagebox.showinfo("提示", "之前的防伪码共计:" + str(len(card)))
    root.withdraw() # 关闭提示信息框
    incount = inputbox("请输入补充验证码生成的数量:", 1, 0)  # 让用户输入新补充生成的防伪码数量
    # 最大值按输入生成数量的2倍数量生成新防伪码,防止新生成防伪码与原有防伪码重复造成新生成的防伪码数量不够,
    for j in range(int(incount) * 2):
        randfir = random.sample(number, 3)   # 随机产生3位不重复的数字
        randsec = sorted(randfir)            # 对产生的数字排序
        addcount = len(card)                 # 记录集合中防伪码的总数量
        strone = ""                          # 清空存储单条防伪码的变量strone
        for i in range(9):                   # 生成9位的数字防伪码
            strone = strone + random.choice(number)
         # 将三个字母按randsec变量中存储的位置值添加到数字防伪码中,并放到sim变量中
        sim = str(strone[0:int(randsec[0])]) + strpro + str(
            strone[int(randsec[0]):int(randsec[1])]) + strtype + str(
            strone[int(randsec[1]):int(randsec[2])]) + strclass + str(strone[int(randsec[2]):9]) + "\n"
        card.add(sim)  # 添加新生成的防伪码到集合
        # 如果添加到集合,证明生成的防伪码与原有的防伪码没有产生重复
        if len(card) > addcount:
            randstr.append(sim)   # 添加新生成的防伪码到新防伪码列表
            addcount = len(card)  # 记录最添加新生成防伪码集合的防伪码数量
        if len(randstr) >= int(incount):   # 如果新防伪码列表中的防伪码数量达到输入的防伪码数量
            print(len(randstr))            # 输出已生成防伪码的数量
            break                          # 退出循环
    # 调用函数wfile()函数,实现生成的防伪码屏幕输出和文件输出
    wfile(randstr, nres_letter + "ncode" + str(choice) + ".txt", nres_letter, "生成后补防伪码共计:","codeadd")
    # tkinter.messagebox.showinfo("提示", "已生成补充防伪码共:" + str(len(randstr)))    # 提示
    # root.withdraw()

2.10 条形码EAN13批量生成函数💖💖

def scode7(num_choice):
    mainid = inputbox("\033[1;32m  请输入EN13的国家代码(3位) :  \33[0m", 3, 3)  # 输入3位国家代码
    compid = inputbox("\033[1;32m  请输入EAN13的企业代码(4位):  \33[0m", 3, 4)  # 输入4位企业代码
    incount = inputbox("\033[1;32m 请输入要生成的条形码数量:  \33[0m", 1, 0)   # 输入要生成的条形码数量
    while int(incount) == 0:   # 输入信息转为整数后等于0,重新输入
        incount = inputbox("\033[1;32m  请输入要生成的条形码数量:\33[0m", 1, 0)
    mkdir("barcode")  # 判断保存条形码的文件夹是否存在,不存在,则创建该文件夹
    for j in range(int(incount)):  # 批量生成条形码
        strone = ''  # 清空存储单条条形码的变量
        for i in range(5):  # 生成条形码的6位(除国家代码、企业代码和校验位之外的6位)数字
            strone = strone + str(random.choice(number))
        barcode = mainid +compid +strone   # 把国家代码、企业代码和新生成的随机码进行组合
        # 计算条形码的校验位
        evensum = int(barcode[1]) + int(barcode[3]) + int(barcode[5]) + int(barcode[7]) + int(barcode[9]) + int(barcode[11])  # 偶数位
        oddsum = int(barcode[0]) + int(barcode[2]) + int(barcode[4]) + int(barcode[6]) + int(barcode[8]) + int(barcode[10])
        checkbit = int((10 - (evensum * 3 + oddsum) % 10) % 10)
        barcode = barcode+str(checkbit)  # 组成完整的EAN13条形码的13位数字
        print(barcode)
        encoder = EAN13Encoder(barcode)  # 调用EAN13Encoder生成条形码
        encoder.save("barcode\\" + barcode + ".png")  # 保存条形码信息图片到文件

2.11 固定的12位二维码,读者可以根据实际需要修改成按输入位数进行生成的函数💖💖

# 本函数生成固定的12位二维码,读者可以根据实际需要修改成按输入位数进行生成的函数
def scode8(num_choice):
     # 输入要生成的二维码数量
     incount = inputbox("\033[1;32m     请输入要生成的12位数字二维码数量:\33[0m", 1, 0)
     while int(incount) == 0:  # 如果输入不是大于0的数字,重新输入
        incount = inputbox("\033[1;32m     请输入要生成的12位数字二维码数量:\33[0m", 1, 0)
     mkdir("qrcode")  # 判断保存二维码的文件夹是否存在,不存在,则创建该文件夹
     for j in range(int(incount)):  # 批量生成二维码
        strone = ''  # 清空存储单条二维码的变量
        for i in range(12):  # 生成单条二维码数字
            strone = strone + str(random.choice(number))
        encoder =qrcode.make(strone)  # 生成二维码
        encoder.save("qrcode\\" + strone + ".png")  # 保存二维码图片到文件

2.12 抽奖函数💖💖

# 抽奖函数
def scode9(num_choice):
   default_dir = r"lottery.ini"  # 设置默认打开文件为开发路径下的"lottery.ini"
   # 选择包含用户抽奖信息票号的文件,扩展名为“*.ini”
   file_path = tkinter.filedialog.askopenfilename(filetypes=[("Ini file","*.ini")],title=u"请选择包含抽奖号码的抽奖文件:",initialdir=(os.path.expanduser(default_dir)))
   codelist = openfile(file_path)  # 调用 openfile()函数读取刚打开的抽奖文件
   codelist = codelist.split("\n")   # 通过回行转义符把抽奖信息分割成抽奖数列
   incount = inputbox("\033[1;32m  请输入要生成的中奖数量:  \33[0m", 1, 0)  # 要求用户输入中(抽)奖数量
   while int(incount) == 0 or len(codelist)< int(incount):  # 如果输入中(抽)奖数量等于0或超过抽奖数组数量,重新输入
       incount = inputbox("\033[1;32m  请输入要生成的抽奖数量:  \33[0m", 1, 0)
   strone = random.sample(codelist, int(incount))  # 根据输入的中奖数量进行抽奖

   print("\033[1;35m  抽奖信息名单发布:  \33[0m")
   for i in range(int(incount)):  # 循环将抽奖数列的引号和中括号去掉
       wdata = str(strone[i].replace('[', '')).replace(']', '')  # 将抽奖数列的中括号去掉
       wdata = wdata.replace(''''','').replace(''''', '')  # 将抽奖数列的引号去掉
       print("\033[1;32m" + wdata + "\33[0m")  # 输出中奖信息

3. 操作步骤🀄🃏🎰:

3.1 生成6位数字防伪编码🌸🌸

	1.当用户在主程序界面中输入数字“1”菜单项时,将进入“生成6位数字防伪编码 (213563型)”的功能执行任务。
	2.此时要求输入生成防伪码的数量,可以根据需要输入生成防伪码的数量,如图所示。
	3.按下<Enter>键,开始批量生成防伪码,生成后系统将提示用户生成了多少个注册码和生成文件的位置信息等,如图3所示。
	4.单击“确定”按钮,关闭提示信息。在屏幕上可以看到生成的防伪码信息,如图4所示。
	5.生成的文件在程序所在目录下的“codepath”文件夹下,名称为“scode1.txt”,如下图所示。

在这里插入图片描述
在这里插入图片描述

3.2 生成9位系列产品数字防伪编码🌸🌸

	1.在主程序界面中输入数字“2”菜单项时,将进入“生成9位系列产品数字防伪编码”的功能执行。
    2.在产品系列其实编码输入中输入511,在系列产品数量中输入3,在每个系列生成数量中输入2,如图所示,按下<Enter>键,开始生成防伪码。
    3.生成后系统将提示用户生成防伪码信息。

在这里插入图片描述

在这里插入图片描述

3.3 生成25位混合产品序列号🌸🌸

	1. 在主程序界面中输入数字“3”菜单项时,将进入“生成25位混合产品序列码”的功能执行。
    2. 在输入要生成的数量中输入3,并且按下<Enter>键,将生成3个如图所示的25位防伪码。	    

在这里插入图片描述

3.4 生成含数据分析功能的防伪编码🌸🌸

	1.在主程序界面中输入数字“4”菜单项时,将进入“生成含数据分析功能的防伪编码”的功能执行。
    2.在输入要生成的带数据分析功能的验证码数量中输入2,并且按下<Enter>键;在输入数据分析编号(3位字母)中输入wjy,并按下<Enter>键,将生成2个如图9所示的25位防伪码。

在这里插入图片描述

3.5 智能批量生成带数据分析功能的防伪码🌸🌸

	1.当用户在功能选择界面中输入数字“5”时,进入智能批量生成带数据分析功能的防伪码功能选项,
    2.在弹出的对话框中,选择保存批量生成防伪码信息的文件(扩展名为.mri的文件,文件如图所示,其中前面的3位字母是数据分析码,后面的数值是防伪码的个数)
    3.单击“打开”按钮,将批量生成防伪码信息,并把不同类别的防伪码文件保存在不同的文件中。

在这里插入图片描述

在这里插入图片描述

3.6 后续补加生成防伪码🌸🌸

	1.在功能选择界面中输入数字“6”时,将进入补充防伪码生成功能选项。
    2.首先在打开的对话框中选择已经生成的防伪码的文件(需要使用前4步中生成的防伪码文件)。
    3.系统将自动分析已经生成的防伪码数量,并给出提示对话框,如图所示。
    4.接下来要求用户输入补充防伪码的数量,根据要求的防伪码数量循环生成新防伪码。
    5.完成后将提醒防伪码已经完成,并提示新生成的防伪码文件的保存位置。

在这里插入图片描述

3.7 EAN-13条形码批量生成🌸🌸

	1.在功能选择界面中输入数字“7”时,将进入EAN-13条形码批量生成功能选项。
    2.在请输入EN13的国家代码(3位)中输入571;在请输入EAN13的企业代码(4位)中输入5205;在请输入要生成的条形码数量中输入条形码的数量,这里输入3,并按下<Enter>键,将自动生成条形码,如图所示。
    3.生成后的文件保存在项目根目录下的barcode目录中。

在这里插入图片描述
在这里插入图片描述

3.8 二维码批量输出🌸🌸

	1.在功能选择界面中输入数字“8”时,将进入二维码批量输出功能选项。
    2.在请输入要生成的12位数字二维码数量中输入二维码的数量,这里输入3,并按下<Enter>键,将自动生成二维码。
    3.生成后的文件保存在项目根目录下的barcode目录中,效果如图所示。

在这里插入图片描述
在这里插入图片描述

3.9 企业粉丝防伪码抽奖🌸🌸

	1.在功能选择界面中输入数字“9”时,将进入企业粉丝防伪码抽奖功能选项。
    2.将弹出文件选择对话框,选择抽奖信息文件后,输入抽取中奖用户数量,并且按下<Enter>键,将显示抽取的中奖号码。

在这里插入图片描述

在这里插入图片描述

3.10 退出系统🌸🌸

	在功能选择界面中输入数字“0”,并且按下<Enter>键即可退出系统,如图所示。

在这里插入图片描述

4. 项目源码🌻🌼

1. 本博客只展示项目底层逻辑的核心代码(90%),完整的源码在下边,希望各位同学,在执行此代码时,先看看这边博客的讲解,有助于理解python的基础语法
2. 此篇博客后续会继续更新改进,添加细节处讲解
	(感兴趣的同学,还请先关注下,作者考研狗尽量及时更新哈)🎰🎰🎰
4. 关注我,一定能会python,学不会无所谓~~
5. 恳请大家在评论区点评(接受一切质疑,批评)🚀🚀

企业编码生成系统

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

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

相关文章

搭建electron-vue

electron-vue 准备工作修改package.jsonappveyor.yml.travis.yml.gitignore.eslintrc.js.eslintignore.babelrcsrc/renderer/main.jssrc/renderer/App.vuesrc/renderer/store/index.jssrc/renderer/store/modules/Counter.jssrc/renderer/store/modules/Counter.jssrc/renderer…

GT928 TP驱动跟读及虚拟按键上报解析

目前公司TP常用一套代码。MTK 平台使用.ko形式加载&#xff0c;所以跟读一下加深理解。 static struct i2c_driver tpd_i2c_driver {.driver {.of_match_table of_match_ptr(gt9xx_dt_match),},.probe tpd_i2c_probe,.remove tpd_i2c_remove,.detect tpd_i2c_detect,.dr…

万物皆数,算无止境 | 「雪浪算力开发者大赛」圆满收官

时在中春&#xff0c;阳和方起。 4月23日&#xff0c;「雪浪算力开发者大赛」 在雪浪小镇迎来完美收官。 本次大赛吸引了全球超过2422名开发者&#xff0c; 共有624支企业队伍&#xff0c; 288支高校队伍报名参赛&#xff0c; 累计提交作品9895份。 经过三个月激烈的角逐…

Linux shell编程 循环语句for continue break

for循环是编程语言中一种循环语句 示例1&#xff1a;循环读取user.txt中的用户名&#xff0c;创建用户。设置密码。 for i in $(cat /opt/user.txt) douseradd $iecho 123456 | passwd --stdin $i done 示例2&#xff1a;循环读取ipaddr文本文件中地址&#xff0c;执行ping命令…

基于空间矢量脉宽调制(SVPWM)的并网逆变器研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

day38—选择题

文章目录 1.在计算机网络中&#xff0c;TCP和UDP协议的相似之处是&#xff08;D&#xff09;2.下列哪项最恰当地描述了建立TCP连接时“第一次握手”所做的工作&#xff08;C&#xff09;3.关于以下 URL 的描述错误的是&#xff08;A&#xff09;4.不属于交换机攻击的是&#xf…

LangChain入门指南

LangChain入门 什么是LangChain如何使用 LangChain&#xff1f;LangChain的模型LangChain 的主要特点使用示例构建语言模型应用程序&#xff1a;LLMPrompt Templates: 管理LLMs的Prompts构建语言模型应用程序&#xff1a;Chat Model完整代码 什么是LangChain LangChain是一个强…

【C语言】leetcode每日一题

目录 前言题目描述题目分析代码描述 前言 时间过得真快&#xff0c;马上又要回家了&#xff0c;马上又要开始卷了。不是每朵鲜花都能代表爱情&#xff0c;但是玫瑰做到了&#xff1b;不是每棵树都能耐得住干渴&#xff0c;但是白杨做到了&#xff1b;不是每个人都在追求上进&a…

【算法思维】-- 动态规划(C++)

OJ须知&#xff1a; 一般而言&#xff0c;OJ在1s内能接受的算法时间复杂度&#xff1a;10e8 ~ 10e9之间&#xff08;中值5*10e8&#xff09;。在竞赛中&#xff0c;一般认为计算机1秒能执行 5*10e8 次计算。 时间复杂度取值范围o(log2n)大的离谱O(n)10e8O(nlog(n))10e6O(nsqrt(…

从CI/CD持续集成部署到DevOps研发运维一体化

今天整理下从传统的CI/CD到DevOps研发运维一体化的整个演进过程。类似于每日构建和冒烟测试&#xff0c;实际上在10多年前就已经在实践&#xff0c;比如当前用的笔记多的AntCruiseControl方式来实现自动化的编译构建和持续集成能力。 包括当前DevOps过程实践中的持续集成&…

基于Springboot的班级综合测评管理系统的设计与实现

摘要 随着互联网技术的高速发展&#xff0c;人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理&#xff0c;交易等&#xff0c;而且过程简单、快捷。同样的&#xff0c;在人们的工作生活中&#xff0c;也就需要…

Android内存泄漏问题排查分析及常见解决方案

什么是内存泄漏&#xff1a; 在Android开发过程中&#xff0c;当一个对象已经不需要再使用了&#xff0c;本该被回收时&#xff0c;而另个正在使用的对象持有它引用从而导致它不能被回收&#xff0c;这就导致本该被回收的对象不能被回收而停留在堆内存中&#xff0c;内存泄漏就…

你真的熟悉多线程的程序的编写?快来查漏补缺

目录 一、Thread 类的属性及常用的构造方法 1.1、 Thread 常见构造方法 1.2、Thread 类的常见属性 1.3、启动&#xff08;创建&#xff09;一个线程 1.4、中断一个线程 1.5、等待一个线程 1.6、休眠当前线程 1.7、当前线程让出的 CPU 资源 二、线程状态 一、Thread 类…

华为OD机试真题(Java),整数编码(100%通过+复盘思路)

一、题目描述 实现一个整数编码方法&#xff0c;使得待编码的数字越小&#xff0c;编码后所占用的字节数越小。 编码规则如下&#xff1a; 编码时7位一组&#xff0c;每个字节的低7位用于存储待编码数字的补码&#xff1b;字节的最高位表示后续是否还有字节&#xff0c;置1表…

2023联网公司时薪排行榜出炉,多多排榜首。微软、美团很强

今天分享一个对于选择公司非常有用的参考&#xff1a;“互联网时薪”。 我们在选择一个公司的时候&#xff0c;往往会比较关注总收入package (除了基本的月薪&#xff0c;加上其他的所有的收入&#xff0c;包括但不限于奖金、股票或股份的分红等等)。 然而&#xff0c;总收入…

算力网络安全

算力网络安全 1. 算力网络简介1.1 基本概念1.2 应用场景 2. 算力网络安全需求3. 算力网络安全架构3.1 算力网络参考架构3.2 资源层安全3.3 控制层和编排管理层安全3.4 服务层安全 4. 算力网络安全关键技术4.1 安全计算4.2 安全编排4.3 数据溯源4.4 可信内生4.5 操作审计4.6 安全…

【服务器】Linux搭建我的世界服务器 + 公网远程联机教程

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 前言 1. 安装JAVA 2. MCSManager安装 3.局域网访问MCSM 4.创建我的世界服务器 5.局域网联机测试 6.安装cpolar内网穿透 7. 配置公网访问地址 8.远程联机测试 9. 配置固定…

ICMP 协议详解

文章目录 1 概述2 ICMP 协议2.1 工作原理2.2 报文格式2.3 ICMP 类型 1 概述 #mermaid-svg-6yUB8ZNYSzjbbDDq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6yUB8ZNYSzjbbDDq .error-icon{fill:#552222;}#mermaid-s…

Qt 路径

Qt 路径 Qt中路径问题小结目录与路径的区别路径分隔符Qt 路径与 Windows 路径转换相对路径mkdir 和 mkpath判断目录是否存在修改路径setPath Qt中路径问题小结 原文链接&#xff1a;https://blog.csdn.net/Andy_93/article/details/52831175 在做Qt项目的时候&#xff0c;我们…

【重学c++primer】第二章 深入浅出:变量的类型

文章目录 【重学cprimer】第二章 变量以及变量的基本类型1、从初始化/赋值语句说起2、类型详解一些未定义部分字面值变量以及变量的类型隐式类型转换 3、复合类型&#xff1a;从指针到引用指针的操作void*指针的好处引用指针的引用 4、常量和常量表达式类型const和指针const的赋…