当前位置: 首页 > news >正文

gpt-4o考场安排

        说明 :经过多次交互,前后花了几个小时,总算完成了基本功能。如果做到按不同层次分配考场,一键出打印结果就完美了。如果不想看中间“艰苦”的过程,请直接跳到“最后结果”及“食用方法”。中间过程还省略了一部分交互,gpt-4o一个线程限制了会话的次数(100),大概开了三个线程完成了任务。在此过程中自己可能提示词描述不够准确。以后在描述问题时还需要改进,后续添加交互,打包为exe

        在日常的教务活动中,考场安装很费时的事。学校平时考场安排,不像大型考试每考室人数固定,有时还会按不同层次的学生安排考场,要求比较多,排定后还需手工调整。

第一次给的提示语:

 电子表格”考场安排demo.xlsx“的字段为:班级、准考证号、学生姓名、考场、考号。其中考场、考号需要程序来安排的,请按以下要求给出python程序。1、总考场数为24个2、请平均分配每考场人数3、每个考场的座位号从1开始编号,依次为2, 3, 4,...。4、随机安排学生,注意是随机,但要保证在一个考场中相邻两条记录,它们班级字段的值不相等。5、将安排好的结果以“考场安排结果.xlsx"保存

经过了几次迭代:

 上面的程序执行了很长时间,即没有结果,也没有出错提示错误仍然存在如果每考场的学生班号随机一点就更好了

此时出现警告

 A value is trying to be set on a copy of a slice from a DataFrame

直接将警告提交给gpt

 当我重新运行以上程序时,虽然没有了警告提示,运行很长时间没有结果

这时给出了正确的结果

 import pandas as pdimport randomfrom openpyxl import Workbookimport numpy as np​​def load_data(filename):return pd.read_excel(filename)​​def save_data(df, filename):df.to_excel(filename, index=False)​​def assign_seats(df, total_halls):# 按班级分组并随机打乱每个班级内部的顺序grouped = df.groupby('班级')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]​# 创建调度器队列,初始化为每个班级的iteratoriterators = [iter(group.iterrows()) for group in groups]​arranged_data = []hall_number = 1seat_number = 1​total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_halls​while iterators:random.shuffle(iterators)for it in iterators[:]:  # 遍历每个迭代器try:_, student = next(it)student_data = student.to_dict()student_data["考场"] = hall_numberstudent_data["考号"] = seat_numberarranged_data.append(student_data)​seat_number += 1​if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1​if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)  # 当前iterator已遍历完全,移除它​return arranged_data​​def main():input_filename = "考场安排demo.xlsx"output_filename = "考场安排结果.xlsx"​total_halls = 24​df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)​save_data(arranged_df, output_filename)​​if __name__ == "__main__":main()

重新给了提示语:座位号改为01、02、03...,添加了时间戳。

 电子表格”考场安排demo.xlsx“的字段为:班级、准考证号、学生姓名、考场、考号。其中考场、考号需要程序来安排的,请按以下要求给出python程序。1、总考场数为24个2、请平均分配每考场人数3、每个考场的座位号从01开始编号,依次为02, 03, 04,...。4、随机安排学生,注意是随机,但要保证在一个考场中相邻两条记录,它们班级字段的值不相等。5、将安排好的结果以“考场安排结果+时间戳.xlsx"保存

很高兴听到程序已经很好地满足了你的要求。为了确保最终程序完善且清晰,我将提供最终版本的Python代码,该代码完整处理各项要求,并生成考场安排结果文件:

  1. 总考场数为24个。

  2. 平均分配每考场人数。

  3. 每个考场的座位号从01开始编号,依次为02, 03, 04,...。

  4. 随机安排学生,保证在一个考场中,相邻两条记录的班级字段的值不相等。

  5. 将安排好的结果以“考场安排结果+时间戳.xlsx”保存。

代码如下: 

import pandas as pdimport randomfrom openpyxl import Workbookfrom datetime import datetimeimport numpy as np​def load_data(filename):return pd.read_excel(filename)​def save_data(df, filename):df.to_excel(filename, index=False)​def assign_seats(df, total_halls):# 按班级分组并随机打乱每个班级内部的顺序grouped = df.groupby('班级')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]# 创建调度器队列,初始化为每个班级的iteratoriterators = [iter(group.iterrows()) for group in groups]​arranged_data = []hall_number = 1seat_number = 1total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_hallswhile iterators:random.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考场"] = hall_numberstudent_data["考号"] = f"{seat_number:02d}"  # 格式化为两位字符arranged_data.append(student_data)seat_number += 1if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)return arranged_data​def main():input_filename = "考场安排demo.xlsx"total_halls = 24​df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考场安排结果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")​if __name__ == "__main__":main()

让gpt-4o进行了美化:

为了对导出的电子表格进行格式化美化,我们可以使用 pandasopenpyxl 模块来提升电子表格的可读性和视觉效果。这可能包括:

  1. 设置标题行的样式(如背景颜色、字体加粗等)。

  2. 自动调整列宽。

  3. 为整个表格设置边框。

  4. 设置单元格对齐方式。

以下是如何实现这些功能的代码示例: 

import pandas as pdimport openpyxlfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidefrom openpyxl.utils import get_column_letterfrom openpyxl.worksheet.worksheet import Worksheetimport randomfrom datetime import datetime​def load_data(filename):return pd.read_excel(filename)​def save_data(df, filename):df.to_excel(filename, index=False)format_excel(filename)​def assign_seats(df, total_halls):grouped = df.groupby('班级')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]iterators = [iter(group.iterrows()) for group in groups]​arranged_data = []hall_number = 1seat_number = 1total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_hallswhile iterators:random.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考场"] = hall_numberstudent_data["考号"] = f"{seat_number:02d}"arranged_data.append(student_data)seat_number += 1if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)return arranged_data​def format_excel(filename):wb = openpyxl.load_workbook(filename)ws = wb.active# 设置标题行的样式for cell in ws[1]:cell.font = Font(bold=True, color="FFFFFF")cell.fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")cell.alignment = Alignment(horizontal="center", vertical="center")# 自动调整列宽for col in ws.columns:max_length = 0column = col[0].column_letter  # 获取列的字母for cell in col:try:if len(str(cell.value)) > max_length:max_length = len(str(cell.value))except:passadjusted_width = (max_length + 2)ws.column_dimensions[column].width = adjusted_width# 设置单元格边框和对齐方式thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):for cell in row:cell.border = thin_bordercell.alignment = Alignment(horizontal="center", vertical="center")wb.save(filename)​def main():input_filename = "考场安排demo.xlsx"total_halls = 24​df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考场安排结果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")​if __name__ == "__main__":main()

美化步骤:

  1. 设置标题行样式

    • 使用 Font 来设定字体加粗和颜色。

    • 使用 PatternFill 来设定标题行的背景颜色。

    • 使用 Alignment 来设置标题单元格内容居中。

  2. 自动调整列宽

    • 遍历每一列,计算列中最长的单元格内容长度,并据此设置列宽,使得内容完整显示。

  3. 设置单元格边框和对齐方式

    • 使用 BorderSide 来为每个单元格加上细边框。

    • 对每个单元格设置居中对齐 Alignment

        这样设置后,生成的Excel文件在视觉上会更加整洁和美观,并且更符合传统表格的排版格式。可以在正式运行前用少量数据进行测试。

完整示例代码如下:

  1. 引入 openpyxl:添加 import openpyxl

  2. 设置适当的页边距、行高和打印设置

  3. 在代码最后保存并提示用户文件已生成

 import pandas as pdimport randomimport openpyxlfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidefrom openpyxl.utils import get_column_letterfrom openpyxl.worksheet.page import PageMarginsfrom datetime import datetime​def load_data(filename):return pd.read_excel(filename)​def save_data(df, filename):df.to_excel(filename, index=False)format_excel(filename)​def assign_seats(df, total_halls):grouped = df.groupby('班级')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]iterators = [iter(group.iterrows()) for group in groups]​arranged_data = []hall_number = 1seat_number = 1total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_hallswhile iterators:random.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考场"] = hall_numberstudent_data["考号"] = f"{seat_number:02d}"arranged_data.append(student_data)seat_number += 1if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)return arranged_data​def format_excel(filename):wb = openpyxl.load_workbook(filename)ws = wb.active# 设置标题行的样式for cell in ws[1]:cell.font = Font(bold=True, color="FFFFFF")cell.fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")cell.alignment = Alignment(horizontal="center", vertical="center")# 自动调整列宽for col in ws.columns:max_length = 0column = col[0].column_letterfor cell in col:try:if len(str(cell.value)) > max_length:max_length = len(str(cell.value))except:passadjusted_width = (max_length + 2)ws.column_dimensions[column].width = adjusted_width# 设置行高(适当调整以适应A4纸)for row in range(1, ws.max_row + 1):ws.row_dimensions[row].height = 18  # 行高设置为18像素# 设置单元格边框和对齐方式thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):for cell in row:cell.border = thin_bordercell.alignment = Alignment(horizontal="center", vertical="center")# 设置页边距ws.page_margins = PageMargins(left=0.5, right=0.5, top=0.5, bottom=0.5)# 设置打印区域(每张A4纸显示一个考场)total_halls = 24total_students = ws.max_row - 1  # 排除标题行students_per_hall = total_students // total_hallsextra_students = total_students % total_halls​for hall_number in range(1, total_halls + 1):min_row = 2 + (hall_number - 1) * (students_per_hall + (1 if hall_number <= extra_students else 0))max_row = min_row + students_per_hall + (1 if hall_number <= extra_students else 0) - 1​ws.print_area = f"A1:E{max_row}"​# 配置页面设置ws.page_setup.orientation = 'portrait'ws.page_setup.paperSize = ws.PAPERSIZE_A4ws.page_setup.fitToWidth = Truews.page_setup.fitToHeight = False​wb.save(filename)​def main():input_filename = "考场安排demo.xlsx"total_halls = 24​df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)arranged_df = pd.DataFrame(arranged_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考场安排结果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")​if __name__ == "__main__":main()

关键美化与打印设置说明:

  1. 自动调整列宽:根据单元格内容自动调整列宽,以适应打印输出。

  2. 设置标题行的样式:加粗并设置标题行字体颜色和背景颜色,使其与数据行区别开来。

  3. 设置行高:设置统一的行高(18像素)以适应A4纸打印要求。

  4. 设置单元格边框和对齐方式:所有单元格增加边框和居中对齐。

  5. 设置页边距:为页面设置合适的页边距(0.5英寸)。

  6. 设置打印区域:每个考场的安排显示在一张A4纸上。

        现在,运行程序将生成已格式化和打印优化的Excel文件,包含每个考场的安排,并输出为设置在A4纸上的页边距和打印区域。

运行后的结果:

a2504e4da93e4d679a23604cde58c378.png

        这里展示了两个考场,相邻的两个考生看上去来至于不同的班级。由于各班级人数不等,有的班级人数过多,最后一个考场有几个相同班的学生连在一起。

ad74ce27924c4aeab551c7b929c8d5ad.png

如何解决这个问题? 

请通过一个函数检查最后输出的结果,如果有相邻的考生来至于同一个班级,请参照前面的安排,适当的调整,全部安排,保证相邻的考生来至于不同的班级​要确保没有相邻的考生来自同一个班级,我们需要一个后处理函数来检查最终的座位安排,并在发现问题时进行调整。以下是一个改进方案,它在安排考位之后,通过检查并调整相邻考生的班级来防止同一班级的考生相邻:​“将相邻的学生和随后找到的另一个班级的学生交换位置”, 这个算法不完全正确。随后仍然可能是一个班级,应该是从前面已排的学生中寻找满足以下条件的记录进行调换:这个学生前后都与调整的学生班级不一样​现在给出的结果,没有连续几个来至同一个班级的考生了,但还是有相邻两个来至于同一个班,请调整后,重新调用检查函数,直到不再有相邻学生来至于一个班级​为了确保相邻的学生不来自同一个班级,我们可以用一个循环不断地检查并调整座位安排,直到没有相邻考生来自同一个班级为止。我们可以在`check_and_adjust_seating`函数中用一个布尔值标记调整是否完成,如果发现有相邻的学生来自同一个班级,则进行调整并再次检查。​### 改进内容:1. 修改了`check_and_adjust_seating`函数,确保在调整座位后再一次检查是否有相邻的考生来自同一个班级。如果有相邻的考生来自同一个班级,则继续调整,直到没有相邻的考生来自同一个班级。2. 用一个布尔值`adjusted`跟踪是否进行了调整,如果进行了调整则继续检查,否则结束循环。​这样可以确保最终输出的结果中没有相邻两个考生来自同一个班级。​调整后,应该反复从开始验证,最终确保最终输出的结果中没有相邻两个考生来自同一个班级,只给出调整函数

最后结果

        看上去已经没有相邻两个考生来自同一个班级,实际上gpt只是调整记录位置,考场号和座位号还是原来的值,让gpt从新分配考场号和座位号

 import pandas as pdimport randomimport openpyxlfrom openpyxl.styles import Font, Alignment, PatternFill, Border, Sidefrom openpyxl.worksheet.page import PageMarginsfrom datetime import datetime​​def load_data(filename):return pd.read_excel(filename)​​def save_data(df, filename):df.to_excel(filename, index=False)format_excel(filename, df)​​def assign_seats(df, total_halls):grouped = df.groupby('班级')groups = [group.sample(frac=1).reset_index(drop=True) for _, group in grouped]​# Sort groups by size (descending)groups.sort(key=lambda x: len(x), reverse=True)​iterators = [iter(group.iterrows()) for group in groups]arranged_data = []hall_number = 1seat_number = 1​total_students = len(df)students_per_hall = total_students // total_hallsextra_students = total_students % total_halls​while iterators:# Shuffle iterators to ensure randomnessrandom.shuffle(iterators)for it in iterators[:]:try:_, student = next(it)student_data = student.to_dict()student_data["考场"] = hall_numberstudent_data["考号"] = f"{seat_number:02d}"arranged_data.append(student_data)seat_number += 1​# Check if seat number exceeds the allowed number of students per hallif seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1# Reset hall number if it exceeds total hallsif hall_number > total_halls:hall_number = 1except StopIteration:iterators.remove(it)​return arranged_data​​def check_and_adjust_seating(arranged_data):def has_adjacent_same_class(data):# Check if there are any adjacent students from the same classfor i in range(len(data) - 1):if data[i]['班级'] == data[i + 1]['班级']:return ireturn -1​def find_valid_swap(index, data):# Find a valid swap by checking front part of the list before the indexcurrent_class = data[index]['班级']for j in range(len(data)):if j != index and data[j]['班级'] != current_class:# Ensure new surrounding are validif (j == 0 or data[j - 1]['班级'] != current_class) and (j == len(data) - 1 or data[j + 1]['班级'] != current_class):return jreturn -1​swap_operations = []while True:index = has_adjacent_same_class(arranged_data)if index == -1:break  # No adjacent students from the same classswap_index = find_valid_swap(index + 1, arranged_data)if swap_index == -1:raise ValueError("Cannot find a valid swap to adjust the seating arrangement.")# Record the swap operationswap_operations.append((index + 1, swap_index))# Swap the adjacent student with the valid studentarranged_data[index + 1], arranged_data[swap_index] = arranged_data[swap_index], arranged_data[index + 1]​# Additional check and swap if any, continue from the startwhile has_adjacent_same_class(arranged_data) != -1:index = has_adjacent_same_class(arranged_data)if index != -1:swap_index = find_valid_swap(index, arranged_data)if swap_index != -1:# Record the swap operationswap_operations.append((index, swap_index))arranged_data[index], arranged_data[swap_index] = arranged_data[swap_index], arranged_data[index]​return arranged_data, swap_operations​​def reassign_seats(arranged_data, total_halls):hall_number = 1seat_number = 1total_students = len(arranged_data)students_per_hall = total_students // total_hallsextra_students = total_students % total_halls​for i, student in enumerate(arranged_data):student['考场'] = hall_numberstudent['考号'] = f"{seat_number:02d}"seat_number += 1​if seat_number > students_per_hall + (1 if hall_number <= extra_students else 0):hall_number += 1seat_number = 1if hall_number > total_halls:hall_number = 1​return arranged_data​​def format_excel(filename, df):wb = openpyxl.load_workbook(filename)ws = wb.active​# 设置标题行的样式for cell in ws[1]:cell.font = Font(bold=True, color="FFFFFF")cell.fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")cell.alignment = Alignment(horizontal="center", vertical="center")​# 自动调整列宽for col in ws.columns:max_length = 0column = col[0].column_letterfor cell in col:try:if len(str(cell.value)) > max_length:max_length = len(str(cell.value))except:passadjusted_width = (max_length + 20)ws.column_dimensions[column].width = adjusted_width​# 设置行高(适当调整以适应A4纸)for row in range(1, ws.max_row + 1):ws.row_dimensions[row].height = 23  # 行高设置为23像素​# 设置单元格边框和对齐方式thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'),bottom=Side(style='thin'))for row in ws.iter_rows(min_row=2, max_row=ws.max_row, min_col=1, max_col=ws.max_column):for cell in row:cell.border = thin_bordercell.alignment = Alignment(horizontal="center", vertical="center")​# 设置页边距ws.page_margins = PageMargins(left=0.5, right=0.5, top=0.5, bottom=0.5)​hall_groups = df.groupby('考场')​# 设置重复打印标题行ws.print_title_rows = '1:1'ws.print_title_cols = None​# 逐个考场设置打印区域for hall_number, hall_df in hall_groups:min_row = hall_df.index[0] + 2  # 加2以跳过标题行和数据框索引偏移max_row = hall_df.index[-1] + 2  # 加2以跳过标题行和数据框索引偏移​# 初始化 print area, configuration of page settings for each hallws.print_area = f"A1:E{max_row}"​# 配置页面设置ws.page_setup.orientation = 'portrait'ws.page_setup.paperSize = ws.PAPERSIZE_A4ws.page_setup.fitToPage = Truews.page_setup.fitToWidth = 1ws.page_setup.fitToHeight = False  # 允许纵向页面数自动扩展​wb.save(filename)​​def main():input_filename = "11-15.xlsx"  # 修改为学生信息的电子表格名total_halls = 9  # 修改为考场数df = load_data(input_filename)arranged_students = assign_seats(df, total_halls)adjusted_students, swap_operations = check_and_adjust_seating(arranged_students)final_students = reassign_seats(adjusted_students, total_halls)arranged_df = pd.DataFrame(final_students)current_time = datetime.now().strftime("%Y%m%d_%H%M%S")output_filename = f"考场安排结果_{current_time}.xlsx"save_data(arranged_df, output_filename)print(f"已成功生成文件:{output_filename}")​​if __name__ == "__main__":main()

 ​最后在Microsoft Excel 中检测相邻单元格值是否相等

  1. 选择数据区域

    • 选择你想要检查的单元格区域。例如,假设你要检查从A2到A100的单元格。

  2. 打开条件格式

    • 在Excel的“开始”选项卡上,点击“条件格式”。

  3. 创建新的规则

    • 在“条件格式”下拉菜单中,选择“新建规则”。

  4. 使用公式来检测

    • 在“选择规则类型”窗口,选择“使用公式确定要设置格式的单元格”。

    • 在“为符合此公式的值设置格式”框中输入适当的公式。例如,如果你检查A列中的相邻单元格,可以使用公式:

       =A2=A1
    • 然后你可以设置条件匹配时应用的格式,如填充颜色或字体颜色等。

  5. 应用条件格式

    • 设置好格式后,点击“确定”。这个操作将会在指定区域内自动应用条件格式。如果两个相邻单元格的值相同,它们将会被醒目地突出显示。

18ff496f866340fba7aad911d547df6f.png

程序已完全符合要求。

食用方法

确保你安装了所需库:

 pip install pandas openpyxl numpy

1、表结构

136b48d33f46485da1f237f794cd2e28.png

2、修改input_filename的值 ,此变量存储的是学生信息的电子表格名,扩展名为.xlsx

3、修改total_halls的值,此变量存储的是考场个数

4、如果要分类安排考场,可将各层次学生分别建立对应的电子表格文件。

运行程序后,将生成一个已经格式化美化好的Excel文件。

如果有好的建议欢迎交流!!!,食用过程中错误请评论区给出!!!

 

 

相关文章:

gpt-4o考场安排

说明 &#xff1a;经过多次交互&#xff0c;前后花了几个小时&#xff0c;总算完成了基本功能。如果做到按不同层次分配考场&#xff0c;一键出打印结果就完美了。如果不想看中间“艰苦”的过程&#xff0c;请直接跳到“最后结果”及“食用方法”。中间过程还省略了一部分交互&…...

【Unity AR开发插件】四、制作热更数据-AR图片识别场景

专栏 本专栏将介绍如何使用这个支持热更的AR开发插件&#xff0c;快速地开发AR应用。 链接&#xff1a; Unity开发AR系列 插件简介 通过热更技术实现动态地加载AR场景&#xff0c;简化了AR开发流程&#xff0c;让用户可更多地关注Unity场景内容的制作。 “EnvInstaller…”支…...

Spring AOP的实操 + 原理(动态代理)

1 什么是Spring AOP 要想知道Spring AOP那必然是是要先知道什么是AOP了: AOP&#xff0c;全称为 Aspect-Oriented Programming&#xff08;面向切面编程&#xff09;&#xff0c;是一种编程范式&#xff0c;用于提高代码的模块化&#xff0c;特别是横切关注点&#xff08;cros…...

16.线性回归代码实现

线性回归的实操与理解 介绍 线性回归是一种广泛应用的统计方法&#xff0c;用于建模一个或多个自变量&#xff08;特征&#xff09;与因变量&#xff08;目标&#xff09;之间的线性关系。在机器学习和数据科学中&#xff0c;线性回归是许多入门者的第一个模型&#xff0c;它…...

Java进阶学习笔记1——课程介绍

课程适合学习的人员&#xff1a; 1&#xff09;具备一定java基础的人员&#xff1b; 2&#xff09;想深刻体会Java编程思想&#xff0c;成为大牛的人员&#xff1b; 学完有什么收获&#xff1f; 1&#xff09;掌握完整的Java基础技术体系&#xff1b; 2&#xff09;极强的编…...

【全开源】沃德商协会管理系统源码(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的商协会系统&#xff0c;新一代数字化商协会运营管理系统&#xff0c;以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点&#xff0c;实施功能全场景覆盖&#xff0c;一站式解决商协会需求壁垒&#xff0c;有效快速建立…...

python毕设项目选题汇总(全)

各位计算机方面的毕业生们&#xff0c;是不是在头疼毕业论文写什么呢&#xff0c;我这给大家提供点思路&#xff1a; 网站系统类 《基于python的招聘数据爬虫设计与实现》 《基于python和Flask的图书管理系统》 《基于照片分享的旅游景点推荐系统》 《基于djangoxadmin的学生信…...

c#从数据库读取数据到datagridview

从已有的数据库读取数据显示到winform的datagridview控件&#xff0c;具体代码如下&#xff1a; //判断有无表 if (sqliteConn.State ConnectionState.Closed) sqliteConn.Open(); SQLiteCommand mDbCmd sqliteConn.CreateCommand(); m…...

训练YOLOv9-S(注意:官方还没有提供YOLOv9-S的网络,我这是根据网络博客进行的步骤,按照0.33、0.50比例调整网络大小,参数量15.60M,计算量67.7GFLOPs)

文章目录 1、自己动手制造一个YOLOv9-S网络结构1.1 改前改后的网络结构&#xff08;参数量、计算量&#xff09;对比1.2 一些发现&#xff0c;YOLOv9代码打印的参数量计算量和Github上提供的并不一致&#xff0c;甚至yolov9-c.yaml代码打印出来是Github的两倍1.3 开始创造YOLOv…...

视觉检测实战项目——九点标定

本文介绍九点标定方法 已知 9 个点的图像坐标和对应的机械坐标,直接计算转换矩阵,核心原理即最小二乘拟合 {𝑥′=𝑎𝑥+𝑏𝑦+𝑐𝑦′=𝑎′𝑥+𝑏′𝑦+𝑐′ [𝑥1𝑦11𝑥2𝑦21⋮⋮⋮𝑥9𝑦91][𝑎𝑎′𝑏𝑏′𝑐𝑐′]=[𝑥1′𝑦…...

android git提交代码命令以及常见命令的使用

安装Git Ubuntu&#xff1a; sudo apt-get install git-core创建代码仓库&#xff1a; 配置身份&#xff1a; git config --global user.name "Tony" git confit --global user.email "tonygmail.com"查看身份&#xff1a; git config --global user.…...

类图的六大关系

类图中的六大关系包括&#xff1a;继承关系、实现关系、关联关系、聚合关系、组合关系和依赖关系。 1. 继承关系 继承是一种类与类之间的关系&#xff0c;表示一种泛化和特化的关系。子类继承父类的特性和行为。 class Animal {void eat() {System.out.println("This an…...

家政项目day2 需求分析(模拟入职后熟悉业务流程)

目录 1 项目主体介绍1.1 项目背景1.2 运营模式1.3 项目业务流程 2 运营端需求2.1 服务类型管理2.2 服务项目&#xff08;服务&#xff09;管理2.3 区域管理2.4 区域服务管理2.5 相关数据库表的管理2.6 设计工程结构2.7 测试接口&#xff08;接口断点查看业务代码&#xff09; 3…...

面试总结之:socket线路切换

"socket线路切换"通常指的是在网络通信过程中,根据当前网络状态或策略来动态更换数据传输路径的技术。这种技术可以提高通信的可靠性和性能。 在实际应用中,线路切换可能涉及到多种技术,例如: 负载均衡:根据每条路径的当前负载情况,动态地选择一条较为空闲的路…...

002 递归评论 mongodb websocket消息推送

文章目录 商品评论CommentController.javaComment.javaCommentServiceImpl.javaCommentRepository.javaCommentService.javaWebSocketConfig.javaWebSocketProcess.javaapplication.yamlproductReview.htmlindex.htmlindex.jsindex.css 订单评论EvaluateMapper.xmlEvaluateMapp…...

高开高走的续作,可不止《庆余年2》

说起最近霸屏的影视剧&#xff0c;莫过于《庆余年2》。火爆全网的讨论度总归是没有辜负观众们五年的等待&#xff0c;在五月的影视市场独占鳌头已成定局。张若昀、陈道明、李沁等一众演员稳定发挥&#xff0c;剧情节奏随着故事发展渐入佳境&#xff0c;评分一路高涨。 对影视作…...

uniapp android使用uni.chooseLocation,app云打包后,定位地址列表一直在加载中

复现BUG 1、自己生成一个证书 参考生成证书流程 2、使用刚生成证书的SHA1 &#xff0c;重新创建一个高德key 高德开放平台地址 3、打包&#xff08;打包的包名要与高德申请key所填的包名一致&#xff09;...

详解http协议

什么是HTTP协议 定义 Http协议即超文本传送协议 (HTTP-Hypertext transfer protocol) 。 它定义了浏览器&#xff08;即万维网客户进程&#xff09;怎样向万维网服务器请求万维网文档&#xff0c;以及服务器怎样把文档传送给浏览器。从层次的角度看&#xff0c;HTTP是面向&am…...

台湾省军事演习路径规划:A*算法在复杂地形中的应用

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…...

OpenHarmony鸿蒙软总线使用mbedtls数据加密详解

OpenHarmony鸿蒙软总线子系统中使用了多种的加密技术,本篇介绍调用mbedtls的数据加密。 调用mbedtls加密的源码位于: foundation/communication/dsoftbus/adapter/common/mbedtls/softbus_adapter_crypto.c 这个源码单元,调用mbedTLS库实现了各种加密功能,包括AES-GCM加密…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

Unity UGUI Button事件流程

场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...