【办公类-22-07】周计划系列(3-2)“信息窗+主题知识(优化)” (2024年调整版本)

news2025/2/24 2:43:36

作品展示:

背景需求

前文对“2023年2月”的一套信息窗主题知识的文件系列,进行第一次的提取。获得基础模板。

【办公类-22-07】周计划系列(3-1)“信息窗+主题知识(提取)” (2024年调整版本)-CSDN博客文章浏览阅读795次,点赞7次,收藏16次。【办公类-22-07】周计划系列(3-1)“信息窗+主题知识(提取)” (2024年调整版本)https://blog.csdn.net/reasonsummer/article/details/136281042

可以看到,生成的“信息窗+主题知识”并非正好凑满1页,因此需要在每个word里添加一些时事内容了。控制字数多少与版面样式(在一页内的2分栏左右)。

第5步:增添文字内容,确定板式,把文字内容重新导入EXCEL,然后批量制作WROD


(1)在19份word里补全文字,控制字数

(2)最终确保 信息窗撑满半页、主题说明撑满半页

6、将以上第一次生成19份word(正确样式)做为“源文件”放入“03修改补充版”的新建文件夹。

复制“04合成新信息窗主题知识”的19份word(修订过的)到“03修改补充版”

# https://blog.csdn.net/lau_jw/article/details/114383781

from openpyxl import load_workbook
from docx import Document
import glob


# 把 ”03去掉回车版“里面修改过的word文件 复制一份到 “03修改补充版”
#  

import os
import shutil
 

path = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识'
# 源文件夹路径
source_folder= path+r'\04合成新信息窗主题知识'
# 目标文件夹路径
target_folder = path+r'\03修改补充版'
 
# 遍历源文件夹中的所有文件
for file in os.listdir(source_folder):
    # 判断文件类型为 Word(后缀名为 .docx、.doc)
    if file.endswith('.docx') or file.endswith('.doc'):
        # 构建源文件的完整路径
        source_file = os.path.join(source_folder, file)
        
        # 将文件从源文件夹复制到目标文件夹
        target_file = os.path.join(target_folder, file)
        shutil.copy2(source_file, target_file)

7、把19份修改过的WORD,写入EXCEL写入(让内容逐步丰富,此时不要删除空格了。)

(1)信息窗内容(读取第3行开始到“中4班”之间的内容,包含回车)

(2)主题说明内容( 还是通过获取“主题名称”“主题说明”“主题目标”“家园共育”的段落数,进行提取。其中家园共育的最大索引是=2)

(3)因为内容、格式、空行都是调整过了,所以不需要对EXCEL的内容删除空行、空格、清除格式。

 (4)重点说明

这份原始模板里面的格式必须都改成文本,以免添加进去的文字出现内容缺失

代码展示:

# https://blog.csdn.net/lau_jw/article/details/114383781

from openpyxl import load_workbook
from docx import Document
import glob


# 把 ”03去掉回车版“里面修改过的word文件 复制一份到 “03修改补充版”
#  

import os
import shutil
 
print('-----复制修改过的文件“04合成新信息窗和主题知识”到03修改补充版,类似与再次放在“03去掉回车”-----')

path = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识'
# 源文件夹路径
source_folder= path+r'\04合成新信息窗主题知识'
# 目标文件夹路径
target_folder = path+r'\03修改补充版'
 
# 遍历源文件夹中的所有文件
for file in os.listdir(source_folder):
    # 判断文件类型为 Word(后缀名为 .docx、.doc)
    if file.endswith('.docx') or file.endswith('.doc'):
        # 构建源文件的完整路径
        source_file = os.path.join(source_folder, file)
        
        # 将文件从源文件夹复制到目标文件夹
        target_file = os.path.join(target_folder, file)
        shutil.copy2(source_file, target_file)

print('---读取新的信息窗和主题说明里面的灰色字体部分,但是不要清除空格---')

path = r"D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识"
workbook = load_workbook(path + r'\10 改周次过渡模板_信息窗主题知识.xlsx')
sheet = workbook.active


number = 0
number1 = 0
d=[]

for file in glob.glob(path + r'\04合成新信息窗主题知识\*.docx'):
    print(file)
    doc = Document(file)
    
    
    # 上面是提取信息窗灰色字体内容
    content_lst = []    
    for paragraph in doc.paragraphs[3:]:
        # 改过的模板里面,第0行周次,第1行亲爱的家长, 第2行你们好,从第3行开始选取
        content = paragraph.text
               
         # 判断单元格中的文字是否有空格
        if content == '中4班':
            # 改过的模板里面,碰到“中4”就不读取了            
            break        
           
        else:  
            q = '    ' + content  # 如果段落有文字,读取整段,并在前面加4个空格(2字符)
            content_lst.append(q)
              
    print(content_lst)

    content = '\n'.join(content_lst)
    number += 1
    # 写入AB列
    sheet.cell(row=number+1, column=1).value = number
    sheet.cell(row=number+1, column=2).value = content



    # 下面是提取主题知识4块内容
    

    #获取每个文档的行数  
    print("段落数:"+str(len(doc.paragraphs)))#段落数为13,每个回车隔离一段
    d=len(doc.paragraphs)

    for i in range(len(doc.paragraphs)):  
        if '主题说明:' in doc.paragraphs[i].text:
            h1=i            # 主题说明在第几行
            print('主题说明',h1)
            
    for i in range(len(doc.paragraphs)):          
        if '主题目标:'in doc.paragraphs[i].text:
            h2=i            # 主题说明在第几行
            print('主题目标',h2)
    for i in range(len(doc.paragraphs)):  
        if '家园共育:' in doc.paragraphs[i].text:
            h3=i            # 家园共育在第几行

        # # #家园共育结束值等于总行数
    h4=d

    z1=[]    # 主题名称:
    #  查找“主题名称”所在的行
    for i in range(len(doc.paragraphs)):  
        # print("第"+str(i)+"段的内容是:"+doc.paragraphs[i].text)
        if '主题名称:' in doc.paragraphs[i].text:
            a1=doc.paragraphs[i].text                    
            z1.append(a1[5:])
            # 在同一行上,从5开始提取后面的汉字
        # print(z1)
    content1 = '\n'.join(z1)      # 组合并加回车
    
    z2=[]    # 主题说明:        
    # 提取“主题说明”
    for paragraph2 in doc.paragraphs[h1+1:h2]:        #          主题说明h0固定是1行,所以从2开始提取,主题目标 是提取的行数h1-1, 索引取值,还是h1
        t22 = paragraph2.text    
        t2= '    ' + t22        
        z2.append(t2)
    print(z2)    
    content2 = '\n'.join(z2)      # 组合并加回车

    z3=[]    # 主题目标:        
    # 提取“主题目标”
    for paragraph3 in doc.paragraphs[h2+1:h3]:        #          主题说明h0固定是1行,所以从2开始提取,主题目标 是提取的行数h1-1, 索引取值,还是h1
        t3 = paragraph3.text               
        z3.append(t3)
    print(z3)    
    content3 = '\n'.join(z3)      # 组合并加回车

    z4=[]    # 家园共育:        
    # 提取“家园共育”
    for paragraph4 in doc.paragraphs[h3+1:-2]:        #          主题说明h0固定是1行,所以从2开始提取,主题目标 是提取的行数h1-1, 索引取值,还是h1
        t4 = paragraph4.text               
        z4.append(t4)
    print(z4)    
    content4 = '\n'.join(z4)      # 组合并加回车
 
    number1 += 1
    # sheet.append([number, content1,content2,content3,content4])  # number是序号,一共遍历提取了几分Word的内容,content是主题知识中间部分的内容
    # 写入第9=13列
    sheet.cell(row=number+1, column=9).value = number1
    sheet.cell(row=number+1, column=10).value = content1
    sheet.cell(row=number+1, column=11).value = content2
    sheet.cell(row=number+1, column=12).value = content3
    sheet.cell(row=number+1, column=13).value = content4
 
workbook.save(path + r'\11 中4班下学期_信息窗主题知识.xlsx')
workbook.close()


# print('--打开XLSX-,把里面的空格删除,把1、替换成1.--')# 
# # 打开Excel文件
# workbook = load_workbook(path + r'\11 中4班下学期_信息窗主题知识.xlsx')
# # 获取第一个工作表
# worksheet = workbook.active

# # # 遍历每个单元格
# for row in worksheet.iter_rows():
    
#     for cell in row:        
#         if cell.value and isinstance(cell.value, str):            
#             # 清除单元格内文字的格式
#             cell.value = cell.value.strip()
            

# #         # 判断单元格中的文字是否有空格
# #         if ' ' in str(cell.value):
# #             # 替换空格为无空格
# #             cell.value = str(cell.value).replace(' ', '')

# #         if ' ' in str(cell.value):
# #             # 替换空格为无空格
# #             cell.value = str(cell.value).replace(' ', '')

# #         # 替换文本
# #         for s in range(1,10):
# #             if cell.value and isinstance(cell.value, str):
# #                 cell.value = cell.value.replace("{}、".format(s), "{}.".format(s))

# # 保存修改后的Excel文件
# workbook.save(path + r'\11 中4班下学期_信息窗主题知识.xlsx')

# # 关闭Excel文件
# workbook.close()

 (5)EXCEL还是使用

EXCEL看不出是否提取了所有的内容并格式正确。所以在生成一次19份WROD

8、再次生成19份WORD(板式都在A4半页)

# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
import xlwt
import xlrd
import os ,time
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time
import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT



# path=r'D:\\test\\02办公类\\90周计划4份\\06 信息窗+主题知识'+'\\'
path = r"D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识"
print(path)

file_path=path+r'\04合成新信息窗主题知识(修改补充版)'
print(file_path)

# 二、遍历excel,逐个生成word(小标签.docx是前面的模板)
try:
    os.mkdir(file_path)
except:
    pass



list = pd.read_excel(path+'\\11 中4班下学期_信息窗主题知识.xlsx')
# 信息窗
title = list["title"].str.rstrip()
name =list["name"]
content=list["content"]
classroom =list["classroom"].str.rstrip() # str.rstrip()都是文字格式
T1 =list["T1"].str.rstrip() # 没有str.rstrip()是数字格式
T2 =list["T2"].str.rstrip()# 没有str.rstrip()是数字格式
time=list["time"].str.rstrip() 

# 主题知识
titlename = list["titlename"].str.rstrip()
name1=list["name1"]
sm=list["sm"].str.rstrip()# 没有str.rstrip()是数字格式
mb=list["mb"].str.rstrip()# 没有str.rstrip()是数字格式
gy=list["gy"].str.rstrip()# 没有str.rstrip()是数字格式
classroom1 =list["classroom1"].str.rstrip() # str.rstrip()都是文字格式
# T1 =list["T1"].str.rstrip() # 没有str.rstrip()是数字格式
# T2 =list["T2"].str.rstrip()# 没有str.rstrip()是数字格式
time1=list["time1"].str.rstrip() 


# 遍历excel行,逐个生成
num = list.shape[0]
for i in range(num):
    context = {
       "title": title[i],
       "content": content[i],        
       "classroom": classroom[i],
       "name" :name[i],
       "T1": T1[i],
       "T2": T2[i],       
       "time": time[i], 

        "name1": name1[i],
        "titlename": titlename[i],
        "sm": sm[i],  
        "mb" :mb[i],
        "gy" :gy[i],      
        "classroom1": classroom1[i],       
        "time1": time1[i],          
       
    }
  
    tpl = DocxTemplate(path+'\\12 信息窗主题知识_竖版双.docx')
    # tpl = DocxTemplate(path+'\\12 信息窗主题知识_横版双.docx')
 
    tpl.render(context)
    # tpl.save(file_path+r"\\第{}周 {}班 信息窗({}).docx".format('%02d'%name[i],classroom[i],time[i]))
    tpl.save(file_path+r"\\第{}周 {}班 信息窗主题知识({}).docx".format('%02d'%name[i],classroom[i],time[i]))


……通过反复的循环操作,让本次信息窗+主题知识的板式、字数、符合标准——两篇在A4一页上,信息窗和主题说明分别在半页上,

到此,本学的信息窗+主题说明完成了!!!!

第9步:把“信息窗+主题知识”转为png格式(a4横板一页)

代码展示:

'''
作者:毛毛 
性质:转载
原网址 https://zhuanlan.zhihu.com/p/367985422

安装python,确保以下模块已经安装:win32com,fitz,re
在桌面新建文件夹,命名为:word2pdf2png
将需要转换的word(只能docx格式,可以多个)放入文件夹word2pdf2png
复制以下代码并运行。

本代码只生成png 文件夹内只有一级,子文件不生成

说明:
1、
2、把“03 新周计划生成(原版)”的内容复制到“04 新周计划(没有反思的打印)”
3、把“04 新周计划(没有反思的打印)”内容复制到“05 新周计划(没有反思的jpg上传)”
4、然后“05 新周计划(没有反思的jpg上传)”文件夹删除并生成第一张无反思的图片20份
5、空余时间。把““03 新周计划生成(原版)”文件夹的内容复制到“08 新周计划生成(手动修改-准)”文件夹,手动修改
(1)周计划第一页反思(限定在一页内)
(2)教案等
'''
#coding=utf-8
from win32com.client import Dispatch
import os
import re
import fitz
wdFormatPDF = 17 #转换的类型
zoom_x=2 #尺寸大小,越大图片越清晰 5超大,这里改成2
zoom_y=2 #尺寸大小,越大图片越清晰,长宽保持一致
rotation_angle=0#旋转的角度,0为不旋转


# print(----'把"04合成新信息窗主题知识"文件夹里的资料复制到"05jpg上传"'-----)

import os
import shutil

def copy_docx_files(source_dir, dest_dir):
    for filename in os.listdir(source_dir):
        source_path = os.path.join(source_dir, filename)
        dest_path = os.path.join(dest_dir, filename)
        
        if os.path.isfile(source_path) and filename.endswith(".docx"):
            shutil.copy(source_path, dest_path)
        
        if os.path.isdir(source_path):
            copy_docx_files(source_path, dest_dir)

# 指定源文件夹和目标文件夹
old_pat =r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\04合成新信息窗主题知识(修改补充版)'  # 要复制的文件所在目录
new_path = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\05jpg上传'  #新路径


# 调用复制函数
copy_docx_files(old_pat, new_path)


#print(----生成PDF和第一页图片-----)
def doc2pdf2png(input_file):

    for root, dirs, files in os.walk(input_file):
        for file in files:
            if re.search('\.(docx|doc)$', file):
                filename = os.path.abspath(root + "\\" + file)
                print('filename', filename)
                word = Dispatch('Word.Application')
                doc = word.Documents.Open(filename)
                doc.SaveAs(filename.replace(".docx", ".pdf"), FileFormat=wdFormatPDF)
                doc.Close()
        word.Quit()

    for root, dirs, files in os.walk(input_file):
        for file in files:
            if re.search('\.pdf$', file):
                filename = os.path.abspath(root + "\\" + file)
                print('filename', filename)
                # 打开PDF文件
                pdf = fitz.open(filename)
                # 逐页读取PDF
                for pg in range(0, pdf.pageCount):
                    page = pdf[pg]
                    # 设置缩放和旋转系数
                    trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
                    pm = page.getPixmap(matrix=trans, alpha=False)
                    # 开始写图像
                    pm.writePNG(filename.replace('.pdf', '') + str(pg+1) + ".png")
                pdf.close()

doc2pdf2png(new_path)

# 删除生成文件PDF  和 生成文件docx
for parent, dirnames, filenames in os.walk(new_path):
    for fn in filenames:
        if fn.lower().endswith('.pdf'):
            os.remove(os.path.join(parent, fn))
        if fn.lower().endswith('.docx'):# 删除原始文件docx 正则[pdf|docx]套不上,只能分成两条了
            os.remove(os.path.join(parent, fn))
           
# 删除png中,尾号是2-8的png(Word只要第一页,后面生成的第二页图片不要
for parent, dirnames, filenames in os.walk(new_path):
        for fn in filenames:
            for k in range(2,9):                # png文件名的尾数是2,3,4,5,6,7,8 不确定共有几页,可以把9这个数字写大一点)
                if fn.lower().endswith(f'{k}.png'):  # 删除尾号为2,3,4,5,6,7,8的png图片 f{k}='{}'.formart(k) 
                    os.remove(os.path.join(parent, fn))

图片结果展示

先出现word和PDF

在出现一张图片

第7步:把png切割成两类图片,便于上传“班级主页”

由于信息窗和主题知识在一页上,但是上传班级主页时,需要拆分开来,所以要用坐标把图片切割。

代码展示


# 参考网址:https://blog.csdn.net/weixin_42182534/article/details/125773141?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E6%88%AA%E5%8F%96%E5%9B%BE%E7%89%87%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-125773141.nonecase&spm=1018.2226.3001.4187

'''

功能:切割图片
'''

import os
import os.path

from PIL import Image


cood=[[30,85,842,1100],[830,85,1684,1100]]
# 左边距,上边距,右边距,下边距


# # # print('----------第2步:新建一个临时文件夹------------')
# # # # # 新建一个”装N份word和PDF“的文件夹

name=['06信息窗上传图片','07主题知识上传图片']
ys=['信息窗','主题知识']

for i in range(len(name)):

    imagePath1=r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\{}'.format(name[i])
    if not os.path.exists(imagePath1):  # 判断存放图片的文件夹是否存在
        os.makedirs(imagePath1)  # 若图片文件夹不存在就创建
    else:
        pass

    # 定义文件所在文件夹
    image_dir = r'D:\test\02办公类\91周计划4份_2024年中4班\06 信息窗+主题知识\05jpg上传'
    for parent, dir_name, file_names in os.walk(image_dir):  # 遍历每一张图片
        for filename in file_names:
            print(filename)
            # 第19周 中4班 信息窗主题知识(2024.6.24——2024.6.28)1.png   
            pic_name = os.path.join(parent, filename)
            image = Image.open(pic_name)
            _width, _height = image.size
            print(_width, _height)
            # 1684 1191

            a=cood[i][0]
            b=cood[i][1]
            c=cood[i][2]
            d=cood[i][3]        
                    
            # 定义裁剪范围(left, upper, right, lower)1024
            # # box = image.crop((0,0,123,123))
            box = image.crop((a,b,c,d))

            # 第19周 中4班 信息窗主题知识(2024.6.24——2024.6.28)1.png            
            box.save(imagePath1+r'\\{} {} {}.png'.format(filename[:8],ys[i],filename[17:-6]))
            # {第19周 中4班}+_+{'信息窗'}+_+{2024.6.24——2024.6.28}.png
                            
        print('Done!')   


利用坐标切割图片,并保存在指定文件夹里,控制图片名称

(1)信息窗:上传图片

(2)主题知识:上传图片

终于搞完了一套“周计划资料-信息窗主题说明”,耗费好久天,但是与去年相比,代码更周全,减少一些替换EXCEL的动作。更优化了代码。

在去年制作的基础上进一步优化

【办公类-22-01】周计划系列(1)-生成“信息窗”(提取旧docx内容,写入EXCLE模板,再次生成新docx)-CSDN博客文章浏览阅读232次。【办公类-22-01】周计划系列-信息窗的制作(提取旧docx内容,写入EXCLE模板,再次生成新docx)https://blog.csdn.net/reasonsummer/article/details/129843824【办公类-22-02】周计划系列(2)-生成“主题知识”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)_从docx-tpl怎么:导入docx模板-CSDN博客文章浏览阅读583次。【办公类-22-02】周计划系列(2)-生成“主题知识”(提取旧docx指定段落的内容,写入EXCLE模板,再次生成新docx)_从docx-tpl怎么:导入docx模板https://blog.csdn.net/reasonsummer/article/details/129902271 

内容很多啊,我感觉还需要进一步厘清思路,继续优化设计一些可以通用的“周计划系列替换代码”

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

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

相关文章

面试官问我Redis怎么测,我哪知道!

有些测试朋友来问我,redis要怎么测试?首先我们需要知道,redis是什么?它能做什么? redis是一个key-value类型的高速存储数据库。 redis常被用做:缓存、队列、发布订阅等。 所以,“redis要怎么测试…

理解计算着色器中glsl语言的内置变量

概要 本文通过示例的方式,着重解释以下几个内置变量: gl_WorkGroupSizegl_NumWorkGroupsgl_LocalInvocationIDgl_WorkGroupIDgl_GlobalInvocationID 基本概念 局部工作组与工作项 一个3x2x1的局部工作组示例如下,每个小篮格子表示一个工作项…

简单了解B树和B+树

目录 B树 B树 B树和B树的结构示意图 总结 B树和B树是两种非常重要的树状数据结构,它们广泛应用于数据库和文件系统的索引结构中。这两种数据结构能够帮助我们高效地管理、查询以及更新大量的数据。下面,我将简单介绍它们,以及他们之间的区别。 B树 B…

【leetcode】链表的中间节点

大家好,我是苏貝,本篇博客带大家刷题,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 点击查看题目 思路: slow和fast都初始化为head,之后slow每走1步,fast走2步…

枚举(蓝桥练习)(反倍数、特别数的和、找到最多的数、小蓝的漆房、小蓝和小桥的挑战)

目录 一、枚举算法介绍 二、解空间的类型 三、循环枚举解空间 四、例题 (一、反倍数) (二、特别数的和) (三、找到最多的数) (四、小蓝的漆房) (五、小蓝和小桥的…

【力扣hot100】刷题笔记Day17

前言 今天竟然不用开组会!天大的好消息,安心刷题了 46. 全排列 - 力扣(LeetCode) 回溯(排列) class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 回溯def backtrack():if len(…

一、前端开发

#视频链接:https://www.bilibili.com/video/BV1rT4y1v7uQ?p1&vd_source1717654b9cbbc6a773c2092070686a95 前端开发 前端开发1、快速开发网站2、浏览器能识别的标签2.1 编码(head)2.2 title(head)2.3 标题2.4 div和span练习题2.5 超链接…

如何做代币分析:以 USDT 币为例

作者:lesleyfootprint.network 编译:cicifootprint.network 数据源:USDT Token Dashboard (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关…

prometheus监控带安全认证的elasticsearch

1.下载elasticsearch_exporter wget 下载二进制包并解压、运行: wget https://github.com/prometheus-community/elasticsearch_exporter/releases/download/v1.3.0/elasticsearch_exporter-1.3.0.linux-amd64.tar.gz tar -xvf elasticsearch_exporter-1.3.0.lin…

imazing是啥 ?iMazing 3.0.0.3中文版会有哪些新功能?

imazing是啥 imazing是管理iOS设备的软件 iMazing 是一款用于管理iOS设备的软件。它支持在Windows和Mac电脑上对基于iOS系统的设备进行数据传输、备份和管理。用户可以通过这款软件传输和备份包括照片、音乐、铃声、视频、电子书及通讯录等多种信息。不仅限于iPhone、iPad或iP…

1、docker 基础命令

1、docker 运行镜像 docker run image tag 2、创建dockerfile&#xff08;构建容器的相关命令&#xff09; vim DockerFile 3、docker 构建容器镜像 docker build -t <image_name> . 4、docker 分层 5、查看镜像 docker images 6、docker 执行 docker run --name &…

言语理解与表达-郭熙-02

1、上节回顾 1.1 转折关系 1.2 因果关系 1.3 主题词 2、本课目录 3、必要条件关系 3.1 题目 4、对策类 4.1 题目 5、反面论证 提对策 题目 6、必要关系总结 7、程度词 题目 易错&#xff1a; 8、并列关系 题目 易错&#xff1a;

Java面试题之并发

并发 1.并发编程的优缺点&#xff1f;2.并发编程三要素&#xff1f;3.什么叫指令重排&#xff1f;4.如何避免指令重排&#xff1f;5.并发&#xff1f;并行&#xff1f;串行&#xff1f;6.线程和进程的概念和区别&#xff1f;7.什么是上下文切换&#xff1f;8.守护线程和用户线程…

lv20 QT对话框3

1 内置对话框 标准对话框样式 内置对话框基类 QColorDialog, QErrorMessage QFileDialog QFontDialog QInputDialog QMessageBox QProgressDialogQDialog Class帮助文档 示例&#xff1a;各按钮激发对话框实现基类提供的各效果 第一步&#xff1a;实现组件布局&…

dolphinscheduler集群部署教程

文章目录 前言一、架构规划二、配置集群免密登录1. 配置root用户集群免密登录1.1 hadoop101节点操作1.2 hadoop102节点操作1.3 hadoop103节点操作 2. 创建用户2.1 hadoop101节点操作2.2 hadoop102节点操作2.3 hadoop103节点操作 三、安装准备1. 安装条件2. 安装jdk3. 安装MySQL…

FreeRTOS 信号量

目录 一、信号量的概念 二、二值信号量 1、二值信号量的定义 2、二值信号量的作用 3、二值信号量的操作 4、二值信号量操作实验 5、二值信号量会导致优先级翻转问题 三、互斥信号量 1、互斥信号量的引入 2、注意&#xff1a;互斥信号量不能用于中断服务函数中&#xf…

kali linux通过aircrack-ng命令破解wifi密码

相关阅读&#xff1a;如何破解攻击WiFi 百度安全验证https://baijiahao.baidu.com/s?id1764248756021219497&wfrspider&forpc上面2篇文章写得都很不错 一、前期准备工作 1、将无线网卡挂载到Kali上 ​ 将无线网卡插到电脑上&#xff0c;如果弹出检测到新的USB设备&…

戏说c语言: 阶段性总结二

前言 师弟&#xff1a;“师兄&#xff0c;我终于和我喜欢的女生在一起了。感谢师兄呀。” 我&#xff1a;“恭喜啊&#xff0c;师弟&#xff01;” 师弟&#xff1a;“这要全靠这段学习c的缘分了啊&#xff0c;两个人没事交流c语言&#xff0c;一起去上课&#xff0c;共同成长…

vue3使用echarts绘制地图

vue3使用echarts绘制地图 安装echarts npm install echarts下载地图的json数据【我这里是把json数据单独粘出来然后新建了一个文件china.json】 下载中国及各个省份的地图数据引入 import chinaJson from ./china.json绘制地图 <template><div ref"myChart&q…

申请Sectigo证书

Sectigo&#xff08;前身为Comodo CA&#xff09;&#xff0c;是目前全球最优质的网络安全服务供应商之一。该证书颁发机构主要是为各个企业的网络数据安全传输提供解决方案以及用户数据安全。 其特点也非常鲜明&#xff0c;极具性价比&#xff0c;深受中小型企业的欢迎。其证…