【办公类-53-04】20250209Python模仿制作2024学年第二学期校历
背景需求:
马上开学了,又要制作校历(删划节假日)。之前我都是用网络的图片,然后在PPT里修改。
存在问题:
网络校历是从周日开始的,但日常我们老师做教案,都是默认从周一到周五(周六周日)

所以这学期,我想用Python模仿网上图片,生成EXCEL的校历图片,同时将“周日”放到最后一列显示,确保“周一”在第一列。
1.0版本——与网络版一样(周日开始)
代码展示
'''
模仿制作2025年2月下学期的校历(只有日期)周日在前)
星火讯飞、阿夏
20250209
'''
import datetime
import openpyxl
from openpyxl.styles import Alignment, PatternFill
import timepath = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历'
# 起始日期前空几天
m=1# 创建一个新的Excel工作簿
workbook = openpyxl.Workbook()
sheet = workbook.active# 设置标题行
title_row = ["周次", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]
sheet.append(title_row)# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):date_list.append([]) # 添加一个空格行
current_day = start_datewhile current_day <= end_date:date_list.append([current_day])current_day += datetime.timedelta(days=1)print(date_list)# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):# 获取当前周的日期列表week_dates = date_list[i:i+7]# 在A列中添加周次sheet.cell(row=current_week + 1, column=1).value = f"{current_week}"sheet.cell(row=current_week + 1, column=1).alignment = Alignment(horizontal='center', vertical='center')# 在正确的单元格中添加日期for j in range(len(week_dates)):cell = sheet.cell(row=current_week + 1, column=j + 2)# 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”if week_dates[j]: # Check if the list is not emptyif week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"elif week_dates[j][0].day == 1:cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"else:cell.value = f"{week_dates[j][0].day}"cell.alignment = Alignment(horizontal='center', vertical='center')# 更新周数并移动到下一周current_week += 1# 保存工作簿
workbook.save(path + fr"\周日在前{title}.xlsx")
time.sleep(2)
在第一个日期(2025.2.17)前面添加1个空格


原始表就做好了(从周日开始。2.16是周日,空,不写)

继续把表格美化一下,和网络底纹一样
'''
模仿制作2025年2月下学期的校历(只有日期)周日在前,美化
星火讯飞、阿夏
20250209
'''
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Font
import datetime
import time
from openpyxl.utils import get_column_letterpath = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历'
# 起始日期前空几天
m=1# 创建一个新的Excel工作簿
workbook = Workbook()
sheet = workbook.active# 设置标题行
# title_row = ["周次", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日",]
# title_row = ["周次", "一", "二", "三", "四", "五", "六","日",]
title_row = ["周次", "日", "一", "二", "三", "四", "五", "六"]
sheet.append(title_row)# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):date_list.append([]) # 添加一个空格行current_day = start_datewhile current_day <= end_date:date_list.append([current_day])current_day += datetime.timedelta(days=1)# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):# 获取当前周的日期列表week_dates = date_list[i:i+7]# 在A列中添加周次sheet.cell(row=current_week + 1, column=1).value = f"{current_week}"cell = sheet.cell(row=current_week + 1, column=1)cell.alignment = Alignment(horizontal='center', vertical='center')# 设置A列单元格边框样式为黑色实线thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_bordercell.font = Font(size=18)# 在正确的单元格中添加日期for j in range(len(week_dates)):cell = sheet.cell(row=current_week + 1, column=j + 2)# 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”if week_dates[j]: # Check if the list is not emptyif week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"elif week_dates[j][0].day == 1:cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"else:cell.value = f"{week_dates[j][0].day}"cell.alignment = Alignment(horizontal='center', vertical='center')# 根据月份设置单元格底纹颜色month = week_dates[j][0].monthif month == 2:cell.fill = PatternFill(start_color="FFFFCC", end_color="FFFFCC", fill_type="solid") # 浅黄色elif month == 3:cell.fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid") # 浅红色elif month == 4:cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid") # 浅绿色elif month == 5:cell.fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid") # 浅灰色elif month == 6:cell.fill = PatternFill(start_color="FFCC99", end_color="FFCC99", fill_type="solid") # 浅橘色# 设置单元格边框样式为黑色实线thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_border# 设置字体大小为18磅if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:cell.font = Font(size=13)cell.alignment = Alignment(horizontal='center', vertical='center')else:cell.font = Font(size=18)cell.alignment = Alignment(horizontal='center', vertical='center')# 更新周数并移动到下一周current_week += 1# 确保标题行的所有单元格也居中且有框线,并将第一行标题单元格底色设置为浅蓝色
for col in range(1, len(title_row) + 1):cell = sheet.cell(row=1, column=col)cell.alignment = Alignment(horizontal='center', vertical='center')thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_borderif col >= 1 and col <= 8: # Apply blue fill to A1-H1cell.fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid") # 浅蓝色cell.font = Font(size=18)# A列第二行开始,单元格的填充底色与B列单元格颜色相同
for row in range(2, sheet.max_row + 1):for col in range(1, 2): # Apply fill from B column to A-H columnsb_cell = sheet.cell(row=row, column=col + 1)a_cell = sheet.cell(row=row, column=col)a_cell.fill = b_cell.fill.copy() # Use copy() to avoid unhashable type error# 设置所有行的行高和列宽
for row in range(1, sheet.max_row + 1):sheet.row_dimensions[row].height = 30for col in range(1, sheet.max_column + 1):column_letter = get_column_letter(col)sheet.column_dimensions[column_letter].width = 10 # Set width to a reasonable value for better readability# 在第一行上方插入一个空行,然后合并A1-H1,写入“第二学期”20磅,居中
sheet.insert_rows(1)
sheet.merge_cells('A1:H1')
sheet.cell(row=1, column=1).value = "上海市中小学2024学年度第二学期校历(阿夏20250209)"
sheet.cell(row=1, column=1).alignment = Alignment(horizontal='center', vertical='center')
sheet.cell(row=1, column=1).font = Font(size=18)
sheet.cell(row=1, column=1).border = thin_border
sheet.cell(row=1, column=1).fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid") # 浅蓝色# 保存工作簿
workbook.save(path + fr"\周日在前美化{title}.xlsx")
time.sleep(2)

代码展示
'''
模仿制作2025年2月下学期的校历(只有日期)
星火讯飞、阿夏
20250209
'''
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Font
import datetime
import time
from openpyxl.utils import get_column_letterpath = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历'
# 起始日期前空几天
m=0# 创建一个新的Excel工作簿
workbook = Workbook()
sheet = workbook.active# 设置标题行
# title_row = ["周次", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日",]
title_row = ["周次", "一", "二", "三", "四", "五", "六","日",]
sheet.append(title_row)# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):date_list.append([]) # 添加一个空格行current_day = start_datewhile current_day <= end_date:date_list.append([current_day])current_day += datetime.timedelta(days=1)# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):# 获取当前周的日期列表week_dates = date_list[i:i+7]# 在A列中添加周次sheet.cell(row=current_week + 1, column=1).value = f"{current_week}"cell = sheet.cell(row=current_week + 1, column=1)cell.alignment = Alignment(horizontal='center', vertical='center')# 设置A列单元格边框样式为黑色实线thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_bordercell.font = Font(size=18)# 在正确的单元格中添加日期for j in range(len(week_dates)):cell = sheet.cell(row=current_week + 1, column=j + 2)# 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”if week_dates[j]: # Check if the list is not emptyif week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"elif week_dates[j][0].day == 1:cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"else:cell.value = f"{week_dates[j][0].day}"cell.alignment = Alignment(horizontal='center', vertical='center')# 根据月份设置单元格底纹颜色month = week_dates[j][0].monthif month == 2:cell.fill = PatternFill(start_color="FFFFCC", end_color="FFFFCC", fill_type="solid") # 浅黄色elif month == 3:cell.fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid") # 浅红色elif month == 4:cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid") # 浅绿色elif month == 5:cell.fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid") # 浅灰色elif month == 6:cell.fill = PatternFill(start_color="FFCC99", end_color="FFCC99", fill_type="solid") # 浅橘色# 设置单元格边框样式为黑色实线thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_border# 设置字体大小为18磅if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:cell.font = Font(size=13)cell.alignment = Alignment(horizontal='center', vertical='center')else:cell.font = Font(size=18)cell.alignment = Alignment(horizontal='center', vertical='center')# 更新周数并移动到下一周current_week += 1# 确保标题行的所有单元格也居中且有框线,并将第一行标题单元格底色设置为浅蓝色
for col in range(1, len(title_row) + 1):cell = sheet.cell(row=1, column=col)cell.alignment = Alignment(horizontal='center', vertical='center')thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_borderif col >= 1 and col <= 8: # Apply blue fill to A1-H1cell.fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid") # 浅蓝色cell.font = Font(size=18)# A列第二行开始,单元格的填充底色与B列单元格颜色相同
for row in range(2, sheet.max_row + 1):for col in range(1, 2): # Apply fill from B column to A-H columnsb_cell = sheet.cell(row=row, column=col + 1)a_cell = sheet.cell(row=row, column=col)a_cell.fill = b_cell.fill.copy() # Use copy() to avoid unhashable type error# 设置所有行的行高和列宽
for row in range(1, sheet.max_row + 1):sheet.row_dimensions[row].height = 30for col in range(1, sheet.max_column + 1):column_letter = get_column_letter(col)sheet.column_dimensions[column_letter].width = 10 # Set width to a reasonable value for better readability# 在第一行上方插入一个空行,然后合并A1-H1,写入“第二学期”20磅,居中
sheet.insert_rows(1)
sheet.merge_cells('A1:H1')
sheet.cell(row=1, column=1).value = "上海市中小学2024学年度第二学期校历(阿夏20250209)"
sheet.cell(row=1, column=1).alignment = Alignment(horizontal='center', vertical='center')
sheet.cell(row=1, column=1).font = Font(size=18)
sheet.cell(row=1, column=1).border = thin_border
sheet.cell(row=1, column=1).fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid") # 浅蓝色# 保存工作簿
workbook.save(path + fr"\{title}.xlsx")
time.sleep(2)


下一步就是查找不上班的日期
可以看到第10周五天,第10周周日5月27日与第11周的三天上班合并,第19周与第20周(只有1天)合并为6天,一共可以做19周的计划
2.0版本——实际需要的央视(周一开始,双休日、假日空白)
代码展示
'''
模仿制作2025年2月下学期的校历(标注节假日)
星火讯飞、阿夏
202502010
'''
from openpyxl import Workbook
from openpyxl.styles import PatternFill, Border, Side, Alignment, Font
import datetime
import time
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.page import PageMarginspath = r'C:\Users\jg2yXRZ\OneDrive\桌面\20250217校历'
title = '2024学年第二学期校历(阿夏20250209)'
# 起始日期前空几天
m=0# 创建一个新的Excel工作簿
workbook = Workbook()
sheet = workbook.active# 设置页边距(单位为英寸)# 设置页边距(单位为厘米)
left_margin_cm = 1.3
right_margin_cm = 1.3
top_margin_cm = 2
bottom_margin_cm = 2# 将厘米转换为英寸
left_margin_inch = left_margin_cm * 0.393701
right_margin_inch = right_margin_cm * 0.393701
top_margin_inch = top_margin_cm * 0.393701
bottom_margin_inch = bottom_margin_cm * 0.393701# 设置页边距(单位为英寸)
margins = PageMargins(left=left_margin_inch, right=right_margin_inch, top=top_margin_inch, bottom=bottom_margin_inch)# margins = PageMargins(left=3.322, right=3.322, top=5.08, bottom=5.08)
sheet.page_margins = margins# 设置标题行
# title_row = ["周次", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日",]
title_row = ["周次", "一", "二", "三", "四", "五", "六","日",]
sheet.append(title_row)# 设置日期范围
start_date = datetime.date(2025, 2, 17)
end_date = datetime.date(2025, 6, 30)# 生成日期列表并包含标题行和空格行
date_list = [title_row]
for i in range(m):date_list.append([]) # 添加一个空格行current_day = start_datewhile current_day <= end_date:date_list.append([current_day])current_day += datetime.timedelta(days=1)# 计算周数和将日期列表写入Excel
current_week = 1
for i in range(1, len(date_list), 7):# 获取当前周的日期列表week_dates = date_list[i:i+7]# 在A列中添加周次sheet.cell(row=current_week + 1, column=1).value = f"第{current_week}周"cell = sheet.cell(row=current_week + 1, column=1)cell.alignment = Alignment(horizontal='center', vertical='center')# 设置A列单元格边框样式为黑色实线thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_bordercell.font = Font(size=16)# 在正确的单元格中添加日期for j in range(len(week_dates)):cell = sheet.cell(row=current_week + 1, column=j + 2)# 检查日期是否为当月的第一天,如果是则显示“月/1”,否则显示“月/日”if week_dates[j]: # Check if the list is not emptyif week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:cell.value = f"{week_dates[j][0].year}/{week_dates[j][0].month}/{week_dates[j][0].day}"elif week_dates[j][0].day == 1:cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}"if week_dates[j][0].year == 2025 and week_dates[j][0].month == 5 and week_dates[j][0].day == 1:cell.value = f"{week_dates[j][0].month}/{week_dates[j][0].day}劳动" else:cell.value = f"{week_dates[j][0].day}"if week_dates[j][0].year == 2025 and week_dates[j][0].month == 4 and week_dates[j][0].day == 4:cell.value = f"{week_dates[j][0].day}清明"elif week_dates[j][0].year == 2025 and week_dates[j][0].month == 5 and week_dates[j][0].day == 31:cell.value = f"{week_dates[j][0].day}端午"cell.alignment = Alignment(horizontal='center', vertical='center')# 根据月份设置单元格底纹颜色month = week_dates[j][0].monthday = week_dates[j][0].dayif month == 2:cell.fill = PatternFill(start_color="FFFFCC", end_color="FFFFCC", fill_type="solid") # 浅黄色elif month == 3:cell.fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid") # 浅红色elif month == 4:if day !=4 : # 4月4日清明cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid") # 浅绿色elif month == 5: if not (day == 1 or day == 2 or day == 3 or day == 4 or day == 5): cell.fill = PatternFill(start_color="CCCCCC", end_color="CCCCCC", fill_type="solid") # 浅灰色elif month == 6:if not (day == 1 or day == 2 ): cell.fill = PatternFill(start_color="FFCC99", end_color="FFCC99", fill_type="solid") # 浅橘色# 设置单元格边框样式为黑色实线thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_border# 设置字体大小为18磅if week_dates[j][0].year == 2025 and week_dates[j][0].month == 2 and week_dates[j][0].day == 17:cell.font = Font(size=13)cell.alignment = Alignment(horizontal='center', vertical='center')else:cell.font = Font(size=16)cell.alignment = Alignment(horizontal='center', vertical='center')# 在G2-H2开始的列的单元格都填充为白色for row in range(2, sheet.max_row + 1):for col in range(7, 9): # Apply white fill to G2-H2 columnscell = sheet.cell(row=row, column=col)cell.fill = PatternFill(start_color="FFFFFF", end_color="FFFFFF", fill_type="solid") # White color# # 4月27日(周日)换班,4月浅绿色# if week_dates[j][0].year == 2025 and week_dates[j][0].month == 4 and week_dates[j][0].day == 27:# print("4月27日已找到")# # 重新填充一个特定单元格为浅绿色specific_cell = 'H11' sheet[specific_cell].fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid")# cell.fill = PatternFill(start_color="CCFFCC", end_color="CCFFCC", fill_type="solid") # 浅绿色# 更新周数并移动到下一周current_week += 1# 确保标题行的所有单元格也居中且有框线,并将第一行标题单元格底色设置为浅蓝色
for col in range(1, len(title_row) + 1):cell = sheet.cell(row=1, column=col)cell.alignment = Alignment(horizontal='center', vertical='center')thin_border = Border(left=Side(style='thin', color='000000'), right=Side(style='thin', color='000000'), top=Side(style='thin', color='000000'), bottom=Side(style='thin', color='000000'))cell.border = thin_borderif col >= 1 and col <= 8: # Apply blue fill to A1-H1cell.fill = PatternFill(start_color="ADD8E6", end_color="ADD8E6", fill_type="solid") # 浅蓝色cell.font = Font(size=16)# A列第二行开始,单元格的填充底色与B列单元格颜色相同
# for row in range(2, sheet.max_row + 1):
# for col in range(1, 2): # Apply fill from B column to A-H columns
# b_cell = sheet.cell(row=row, column=col + 1)
# a_cell = sheet.cell(row=row, column=col)
# a_cell.fill = b_cell.fill.copy() # Use copy() to avoid unhashable type error# 设置所有行的行高和列宽
for row in range(1, sheet.max_row + 2):sheet.row_dimensions[row].height = 30for col in range(1, sheet.max_column + 1):column_letter = get_column_letter(col)sheet.column_dimensions[column_letter].width = 11.5 # Set width to a reasonable value for better readability# 在第一行上方插入一个空行,然后合并A1-H1,写入“第二学期”20磅,居中
sheet.insert_rows(1)
sheet.merge_cells('A1:H1')
sheet.cell(row=1, column=1).value = "上海市中小学2024学年度第二学期校历(阿夏20250209)"
sheet.cell(row=1, column=1).alignment = Alignment(horizontal='center', vertical='center')
# 字号,加粗
sheet.cell(row=1, column=1).font = Font(size=18, bold=True)
# 框线
# sheet.cell(row=1, column=1).border = thin_border
# 填充白色
sheet.cell(row=1, column=1).fill = PatternFill(start_color="FFFFFF", end_color="FFFFFF", fill_type="solid") # 保存工作簿
workbook.save(path + fr"\{title}.xlsx")
time.sleep(2)# import pandas as pd
# from fpdf import FPDF# # 读取Excel文件
# excel_file = path + fr"\{title}.xlsx"
# df = pd.read_excel(excel_file)# # 创建PDF对象
# pdf = FPDF()
# pdf.add_page()
# pdf.set_font("Arial", size=12)# # 添加表格数据到PDF
# for i in range(len(df)):
# line = df.iloc[i].tolist()
# text = ' | '.join([str(x) for x in line])
# pdf.cell(200, 10, txt=text, ln=True)# # 保存PDF文件
# pdf_file = path + fr"\{title}.pdf"
# pdf.output(pdf_file)
# print(f"PDF file has been created: {pdf_file}")
在excel里另存为pdf(python 把excel转PDF有问题)

不同浏览器效果
CAJ
谷歌浏览器
360极速浏览器
火狐浏览器
Adobe Acrobat DC

最终效果
发到学校群里

因为图片里面有彩色的底纹,必须用领导的彩色打印机。
所以我打印了二十份,粘在墙上。需要的人自己来拿

相关文章:
【办公类-53-04】20250209Python模仿制作2024学年第二学期校历
背景需求: 马上开学了,又要制作校历(删划节假日)。之前我都是用网络的图片,然后在PPT里修改。 存在问题: 网络校历是从周日开始的,但日常我们老师做教案,都是默认从周一到周五&…...
11vue3实战-----封装缓存工具
11vue3实战-----封装缓存工具 1.背景2.pinia的持久化思路3.以localStorage为例解决问题4.封装缓存工具 1.背景 在上一章节,实现登录功能时候,当账号密码正确,身份验证成功之后,把用户信息保存起来,是用的pinia。然而p…...
Unity 基础编程
在这个练习中将新建unity脚本,控制player的运动与转动,实现用代码检测碰撞与删除物体。 该练习将应用附件中的项目文件,该文件与Unity快速练习的文件是同一个项目文件。 一、构建Player运动脚本 该部分将构建一个在场景中由玩家控制游戏物…...
Spring Boot接入Deep Seek的API
1,首先进入deepseek的官网:DeepSeek | 深度求索,单击右上角的API开放平台。 2,单击API keys,创建一个API,创建完成务必复制!!不然关掉之后会看不看api key!!&…...
介绍下SpringBoot常用的依赖项
Spring Boot 是一个用于快速开发 Spring 应用程序的框架,它通过自动配置和依赖管理简化了开发过程。以下是一些 Spring Boot 项目中常用的依赖项: 1. Spring Boot Starter Web 作用: 用于构建 Web 应用程序,包括 RESTful 服务。依赖项: spr…...
解决 keep-alive 缓存组件中定时器干扰问题
当使用 keep-alive 缓存组件时,组件中的定时器可能会在组件被缓存后继续运行,从而干扰其他组件的逻辑。为了避免这种情况,可以通过以下方法解决: 1. 在组件的 deactivated 钩子中清理定时器 keep-alive 为缓存的组件提供了 acti…...
PostgreSQL插件-pg_stat_statements-安装和使用
文章目录 插件介绍插件安装1.修改配置文件postgresql.conf2.插件相关参数参数默认值参数说明特别注意pg_stat_statements.max参数设置太小日志会有警告 插件使用1.创建插件2.使用插件3.重置数据4.删除插件 可能会出现的问题1.没有编译安装插件2.没有配置shared_preload_librari…...
flutter安卓打包签名
flutter安卓打包签名 1.创建签名文件 keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-aliaskeytool 是一个用于管理密钥和证书的命令行工具,通常与 Java 开发工具包 (JDK) 一起使用。my-release-…...
从Word里面用VBA调用NVIDIA的免费DeepSeekR1
看上去能用而已。 选中的文字作为输入,运行对应的宏即可;会先MSGBOX提示一下,然后相关内容追加到word文档中。 需要自己注册生成好用的apikey Option ExplicitSub DeepSeek()Dim selectedText As StringDim apiKey As StringDim response A…...
JavaScript 中的防抖和节流,它们的区别是什么,以及如何实现?
在前端开发中,防抖(Debounce)和节流(Throttle)是两种常用的优化高频率事件处理的技术。 它们能够有效减少事件处理函数的执行次数,从而提升页面性能和用户体验。 下面将详细解释这两种技术的概念、区别、…...
【Kubernetes的SpringCloud最佳实践】Spring Cloud netflix 能否被K8s资源完全替代?
在部署Spring Cloud微服务到Kubernetes(K8s)时, Spring Cloud netflix 是否需要完全替代?或者可以部分替代,结合使用? 例如,服务发现和负载均衡可以交给K8s处理, 但某些功能如API网关…...
MATLAB中extract 函数用法
目录 语法 说明 示例 从地址中提取邮政编码 提取在数值位置处的字符 extract函数的功能是从字符串中提取子字符串。 语法 newStr extract(str,pat) newStr extract(str,pos) 说明 newStr extract(str,pat) 返回 str 中与 pat 指定的模式匹配的任何子字符串。 如果 s…...
DeepSeek-V3:开源多模态大模型的突破与未来
目录 引言 一、DeepSeek-V3 的概述 1.1 什么是 DeepSeek-V3? 1.2 DeepSeek-V3 的定位 二、DeepSeek-V3 的核心特性 2.1 多模态能力 2.2 开源与可扩展性 2.3 高性能与高效训练 2.4 多语言支持 2.5 安全与伦理 三、DeepSeek-V3 的技术架构 3.1 模型架构 3…...
C语言学习笔记:子函数的调用实现各个位的累加和
在C语言程序学习之初,我们都会学习如何打印 hello world,在学习时我们知道了int main()是主函数,程序从main函数开始执行,这是流程控制的一部分内容。在主函数中我们想要实现一些功能,比如求各个…...
docker安装ollama显示超时或失败
正常安装 1、拉取ollma镜像 docker pull ollama/ollama or docker pull docker.1panel.live/ollama/ollama2、运行ollma镜像 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama3、运行指定大模型:模型仓库参考网站: library (ollama.com…...
grafana面板配置opentsdb
新增面板: 这里add-panel: 如果不是想新增面板而是想新增一行条目,则点击convert to row: 在新增的面板这里可以看到选择数据源 Aggregator:聚合条件,区分下第一行和第二行的aggregator,第一个是对指标值的聚合&…...
iOS AES/CBC/CTR加解密以及AES-CMAC
感觉iOS自带的CryptoKit不好用,有个第三方库CryptoSwift还不错,好巧不巧,清理过Xcode缓存后死活下载不下来,当然也可以自己编译个Framework,但是偏偏不想用第三方库了,于是研究了一下,自带的Com…...
使用Jenkins实现鸿蒙HAR应用的自动化构建打包
使用Jenkins实现鸿蒙HAR应用的自动化构建打包 在软件开发领域,自动化构建是提高开发效率和确保代码质量的重要手段。特别是在鸿蒙(OpenHarmony)应用开发中,自动化构建更是不可或缺。本文将详细介绍如何使用Jenkins命令行工具实现…...
2025年02月10日Github流行趋势
项目名称:dify 项目地址url:https://github.com/langgenius/dify项目语言:TypeScript历史star数:64707今日star数:376项目维护者:takatost, crazywoola, laipz8200, iamjoel, JohnJyong项目简介:…...
Ansible简单介绍及用法
一、简介 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用、配置、编排task(持续交付、无宕机更新等)。主版本大概每2个月发布一次。 Ansible与Saltstack最大的区别是…...
渗透利器工具:Burp Suite 联动 XRAY 图形化工具.(主动扫描+被动扫描)
Burp Suite 联动 XRAY 图形化工具.(主动扫描被动扫描) Burp Suite 和 Xray 联合使用,能够将 Burp 的强大流量拦截与修改功能,与 Xray 的高效漏洞检测能力相结合,实现更全面、高效的网络安全测试,同时提升漏…...
HTML-day1(学习自用)
目录 一、HTML介绍 二、常用的标签 1、各级标题(h1-h6) 2、段落标签(p) 3、文本容器(span) 4、图片标签(img) 5、超链接标签(a) 6、表格(t…...
Vue07
一、Vuex 概述 目标:明确Vuex是什么,应用场景以及优势 1.是什么 Vuex 是一个 Vue 的 状态管理工具,状态就是数据。 大白话:Vuex 是一个插件,可以管理 Vue 通用的数据 (多组件共享的数据)。例如:购物车数…...
Godot开发框架探索#2
前言 距离上次发文又又又隔了很长一段时间。主要原因还是因为思绪在徘徊,最近纠结的点有以下几个:1.渴求一个稳定的Godot开发框架;2.要不要使用更轻量的开发框架,或者直接写引擎; 3.对自己想做的游戏品类拿不定主意。…...
deepseek实现私有知识库
前言 之前写了如何本地部署deepseek,已经可以私有化问答了,本地搭建deepseek实操(ollama搭建,docker管理,open-webui使用) 其中我觉得最厉害的还是这个模型蒸馏,使我们可以用很低的代价使用大模…...
2.10学习总结
Dijkstra算法求取最短路径 注:迪杰斯特拉算法并不能直接生成最短路径,但是算法将最短路径信息保存在dist数组和path数组中。 dist数组中保存的是起始点到数组下标对应顶点的路径长度(累加的结果)path数组中保存的是对应path数组…...
【探索未来科技】2025年国际学术会议前瞻
【探索未来科技】2025年国际学术会议前瞻 【探索未来科技】2025年国际学术会议前瞻 文章目录 【探索未来科技】2025年国际学术会议前瞻前言1. 第四届电子信息工程、大数据与计算机技术国际学术会议( EIBDCT 2025)代码示例:机器学习中的线性回…...
pytest.fixture
pytest.fixture 是 pytest 测试框架中的一个非常强大的功能,它允许你在测试函数运行前后执行一些设置或清理代码。以下是关于 pytest.fixture 的详细介绍: 一、定义与用途 pytest.fixture 是一个装饰器,用于标记一个函数为 fixture。Fixture 函数中的代码可以在测试函数运…...
大模型基本原理(四)——如何武装ChatGPT
传统的LLM存在几个短板:编造事实、计算不准确、数据过时等,为了应对这几个问题,可以借助一些外部工具或数据把AI武装起来。 实现这一思路的框架包括RAG、PAL、ReAct。 1、RAG(检索增强生成) LLM生成的内容会受到训练…...
开发完的小程序如何分包
好几次了,终于想起来写个笔记记一下 我最开始并不会给小程序分包,然后我就各种搜,发现讲的基本上都是开发之前的小程序分包,可是我都开发完要发布了,提示我说主包太大需要分包,所以我就不会了。。。 好了…...



