校园教务管理系统
学年论文(课程设计)
题目: 信息管理系统
校园教务管理系统
摘要:数据库技术是现代信息科学与技术的重要组成部分,是计算机数据处理与信息管理系统的核心,随着计算机技术的发展,数据库技术已经成为网络信息化的基础。本教务管理系统就是让教务人员从繁重的工作中解放出来,使他们在使用一个软件之后能极容易的对所有教务工作进行管理。
Key words:数据库;java;教务管理;图形化设计界面
目 录
1 功能需求.......................................1
1.1 课题介绍......................................1
1.2 工具与知识......................................1
1.3 功能任务......................................1
2 概要设计.....................................2
2.1 流程图....................................2
3 详细设计与实验.................................4
3.1 java文件定义及功能 ..............4
3.2主界面描述.....................4
3.2.1登陆界面.....................4
3.2.2学生端界面....................4
3.2.3 教师端界面......................10
3.2.4 管理员界面......................12
4 测试结果.............................24
4.1 登录界面测试...................................24
4.2学生界面测试................................25
4.3教师界面测试................................28
4.4 管理员界面测试................................30
5 总结........................................36
参考文献........................................37
附录.....................................38
1 功能需求
-
- 课题介绍
在现代,高科技的飞跃发展,人们工作习惯的改变和电脑的普及,怎样提高工作效率是人们首先考虑的问题,教务管理是一个非常繁琐与复杂的一项工作,对于学校而言,应该运用一些本地资源提高管理力度,提高工作效率。
教务管理系统是一个复杂的计算机网络信息系统,满足各类高校对现在和将来对信息资源采集,存储,处理,组织,管理和利用的需求,实现信息资源的集中管理和统一调度。为信息交流、教务管理提供一个便捷的电子化手段。
-
- 工具与知识
工具:MySQL数据库,IntelliJ IDEA 。
MySQL是一个关系型数据库管理系统,关联数据库将数据库保存在不同的表中,而不是把所有数据放在一个大仓库中,增加了速度和灵活性。MySQL所使用的SQL语言是访问数据库的最常用标准化语言。
IDEA,全称IntelliJ IDEA,是 Java 语言的集成开发环境, IDEA 在业界被公认为是最好的 java 开发工具之一,一旦用上了就会上瘾。尤其在智能代码助手、代码自动提示、重构、 J2EE 支持、 Ant、 JUnit、 CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。强大的整合能力。比如: Git、 Maven、 Spring 等 .IntelliJ IDEA 主要用于支持 Java、 Scala、 Groovy 等语言的开发工 具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 Web 应 用的开发。
知识:java语言,数据库管理,sql语言
1.3功能任务
主界面: 1)登录 2)注册
学生功能:1)查询并修改自己个人信息 2)查询本学期课表
3)选课、退课 4)选课结果
教师功能:1)查询、修改个人信息 2)查看选课情况
管理员功能:1)课程管理 2)教师管理
3)学生管理 4)密码重置
- 修改密码
2 概要设计
2.1 流程图
3 详细设计
3.1 java文件定义及功能
根据实际需要我设计了4个java文件,分别是Student.java,Teacher.java,Administrator.java,Login_up.java。
Student.java是学生类
功能:查询、修改个人信息,查看课表、选课、查看老师信息、查看选课结果。
Teacher.java是教师类
功能:查询、修改个人信息,查看选课结果。
Adminstrator.java管理员类
功能:对课程、老师、学生进行增删改,重置密码、修改密码。
Login_up.java是登录和注册功能。
3.2主界面描述
3.2.1登陆界面
学生个人信息储存在数据库student中,包括s_id、姓名等,教师信息存储在Teacher中,包括id、姓名等个人信息。
用户选择登录身份(学生、教师或管理员),用户名,密码,首先检查用户名在学生表(或教师表)中是否存在,不存在则提示,在进行数据库连接,若成功则密码正确,登录成功,否则密码错误。
流程如右图所示:
3.2.2学生端界面
在登录时,用静态变量JTname存储学生的ID。个人信息通过检索数据库表student得到(个人信息的修改也通过修改学生表完成)。
核心代码:stmt = con.createStatement();rs = stmt.executeQuery("select *from student where s_id=" + jTName.getText() + "");while (rs.next()) {jLabel1 = new JLabel(" \n学号: " + rs.getString("s_id"));jLabel2 = new JLabel(" \n姓名: " + rs.getString("s_name"));jLabel3 = new JLabel(" \n性别: " + rs.getString("s_gender"));jLabel4 = new JLabel(" \n年龄: " + rs.getString("s_age"));jLabel5 = new JLabel(" \n专业: " + rs.getString("s_specialty"));jLabel6 = new JLabel(" \n生源: " + rs.getString("s_source"));}
核心代码:(其他字段类似)
if (!j_id.getText().isEmpty()) {String str = "update student set s_id="+j_id.getText()+" where s_id="+jTName.getText()+"";System.out.println(str);try {stmt = con.createStatement();stmt.executeUpdate(str);} catch (SQLException ex) {throw new RuntimeException(ex);}}
课程表通过检索选cou_stu表,输出 满足(state=1&&sid=JTname)条件的信息,再拿此信息去遍历course表,输出所有返符合条件的信息。
核心代码:
Vector rowdata = new Vector();Vector titlename = new Vector();//{"学号","姓名","性别","年龄","专业"};titlename.add("课序号");titlename.add("课程名称");titlename.add("授课老师编号");titlename.add("上课时间");titlename.add("上课地点");titlename.add("周数");titlename.add("课程类型");titlename.add("学分");String sql_1="select distinct cid from cou_stu where state=0 && sid="+jTName.getText();System.out.println(sql_1);stmt=con.createStatement();rs=stmt.executeQuery(sql_1);while (rs.next()) {System.out.println(rs.getString("cid"));String s = "select *from course where c_id=" + rs.getString("cid");System.out.println(s);stmt1 = con.createStatement();ResultSet rs_1 = stmt1.executeQuery(s);while (rs_1.next()) {Vector hang = new Vector();hang.add(rs_1.getString("c_id"));hang.add(rs_1.getString("c_name"));hang.add(rs_1.getString("c_teacher"));hang.add(rs_1.getString("c_time"));hang.add(rs_1.getString("c_place"));hang.add(rs_1.getString("c_week"));hang.add(rs_1.getString("c_type"));hang.add(rs_1.getString("c_credit"));rowdata.add(hang);}}table1 = new JTable(rowdata,titlename);
选课窗口:通过遍历所有课程,以表格的形式展示再窗口上。学生在文本框里输入课序号,点击确认选课,选课成功后子在cou_stu表中添加了学生的学号、选课的状态以及课程的编号。
核心代码:(退课类似)
JFrame jf=new JFrame("课程库表");jf.setBounds(0,0,600,400);JTable jt1=new JTable();Vector titlename = new Vector();//{"学号","姓名","性别","年龄","专业"};titlename.add("课序号");titlename.add("课程名称");titlename.add("授课老师编号");titlename.add("上课时间");titlename.add("上课地点");titlename.add("周数");titlename.add("课程类型");titlename.add("学分");Vector rowdata=new Vector();stmt=con.createStatement();String sql="select * from course ";rs=stmt.executeQuery(sql);while (rs.next()) {Vector hang = new Vector();hang.add(rs.getString("c_id"));hang.add(rs.getString("c_name"));hang.add(rs.getInt("c_teacher"));hang.add(rs.getString("c_time"));hang.add(rs.getString("c_place"));hang.add(rs.getString("c_week"));hang.add(rs.getString("c_type"));hang.add(rs.getInt("c_credit"));rowdata.add(hang);}JTable jTable=new JTable(rowdata,titlename);//两个VectorjTable.setEnabled(false);//显示但不可点击JScrollPane Scroll=new JScrollPane(jTable);jf.add(jTable.getTableHeader(),BorderLayout.NORTH);jf.getContentPane().add(Scroll,BorderLayout.CENTER);JMenuBar jMenuBar=new JMenuBar();jMenuBar.setLayout(null);JLabel jLabel=new JLabel("输入课序号");jLabel.setBounds(0,0,30,20);JTextField jTextField=new JTextField();jTextField.setBounds(100,0,10,30);JButton jsure=new JButton("确认选课");jsure.setBounds(160,0,20,15);jMenuBar.add(jLabel);jMenuBar.add(jTextField);jMenuBar.add(jsure);
jsure.addActionListener(new ActionListener() {int flag;@Overridepublic void actionPerformed(ActionEvent e) {String sql = "insert into cou_stu (sid,cid) value (" + jTName.getText() + "," + jTextField.getText() + ")";System.out.println(sql);try {flag= stmt.executeUpdate(sql);} catch (SQLException ex) {JOptionPane.showConfirmDialog(null, "操作失败,下次注意!!!", "信息修改", JOptionPane.YES_NO_CANCEL_OPTION);throw new RuntimeException(ex);}if (flag != 0) {JOptionPane.showConfirmDialog(null, "操作成功,下次注意!!!", "信息修改", JOptionPane.YES_NO_CANCEL_OPTION);}}});
任课老师信息:通过遍历cou_stu表,将符合(sid=JTName)条件的cid输出,在course表中遍历,将得到的一些列教师号到Teacher表中对比以表格形式输出匹配的老师的信息
核心代码:
Vector rowdata=new Vector<>();Vector head=new Vector();head.add("课程");head.add("教师编号");head.add("姓名");head.add("性别");head.add("电话");head.add("学院");String sql="select distinct cid from cou_stu where sid="+jTName.getText();System.out.println(sql);stmt=con.createStatement();rs=stmt.executeQuery(sql);while (rs.next()){String sql1="select c_teacher,c_name from course where c_id="+rs.getString("cid");System.out.println(sql1);stmt1=con.createStatement();rs1=stmt1.executeQuery(sql1);while (rs1.next()){String sql2="select id,name,gender,tel,college from teacher where id="+rs1.getString("c_teacher");System.out.println(sql2);stmt2=con.createStatement();rs2=stmt2.executeQuery(sql2);while (rs2.next()) {Vector hang = new Vector();hang.add(rs1.getString("c_name"));hang.add(rs2.getString("id"));hang.add(rs2.getString("name"));hang.add(rs2.getString("gender"));hang.add(rs2.getString("tel"));hang.add(rs2.getString("college"));rowdata.add(hang);}}}
选课结果:(与任课老师模块查询方式类似,只是少了一步查询老师的信息。)
核心代码:
Vector rowdata=new Vector();Vector headtitle=new Vector();headtitle.add("课序号");headtitle.add("课程名");headtitle.add("授课老师编号");headtitle.add("授课时间");headtitle.add("授课地点");headtitle.add("周次");headtitle.add("课程类型");headtitle.add("学分");String sql="select distinct cid from cou_stu where state=1 && sid="+jTName.getText();System.out.println(sql);stmt=con.createStatement();rs=stmt.executeQuery(sql);while (rs.next()){String sql1="select * from course where c_id="+rs.getString("cid");System.out.println(sql1);stmt1=con.createStatement();rs1=stmt1.executeQuery(sql1);while(rs1.next()){Vector hang=new Vector();hang.add(rs1.getInt("c_id"));hang.add(rs1.getString("c_name"));hang.add(rs1.getString("c_teacher"));hang.add(rs1.getString("c_time"));hang.add(rs1.getString("c_place"));hang.add(rs1.getString("c_week"));hang.add(rs1.getString("c_type"));hang.add(rs1.getString("c_credit"));rowdata.add(hang);}}JTable jTable=new JTable(rowdata,headtitle);
3.2.3 教师端界面
个人信息查询与修改与学生相同,只是在Teacher表中查询。
核心代码:
String sql = "select *from teacher where id=" + jTName.getText();System.out.println(sql);stmt = con.createStatement();rs = stmt.executeQuery(sql);while (rs.next()) {jLabel1.setText("教师编号:" + rs.getString("id"));jLabel2.setText("姓名 :" + rs.getString("name"));jLabel3.setText("性别 :" + rs.getString("gender"));jLabel4.setText("电话 :" + rs.getString("tel"));jLabel5.setText("出生年月:" + rs.getString("birthday"));jLabel6.setText("学历 :" + rs.getString("degree"));jLabel7.setText("职称 :" + rs.getString("pTitle"));jLabel8.setText("入职年份:" + rs.getString("entrytime"));jLabel9.setText("学院 :" + rs.getString("college"));}jchange.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {jf.setVisible(false);change_per();jf.setVisible(true);}});jflash.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {try {jf.setVisible(false);perinfor();} catch (SQLException ex) {throw new RuntimeException(ex);}}});}
查看选课结果,一个老师可能有多个课程,所以先遍历course表,查询符合这个(c_id=JTName)的所有课程,每个课程开一个窗口,以表格的形式展示选择该课的学生信息(方法类似学生的教师查询)。
核心代码:
Vector title=new Vector();title.add("学号");title.add("姓名");title.add("性别");title.add("年龄");title.add("专业");title.add("生源");String sql="select c_id,c_name from course where c_teacher="+jTName.getText();System.out.println(sql);stmt=con.createStatement();rs=stmt.executeQuery(sql);while (rs.next()){String str=rs.getString("c_name");//每次开一个窗口JFrame jFrame=new JFrame(str);jFrame.setBounds(0,0,screenWidth,screenHeight);JMenuBar jMenuBar=new JMenuBar();JLabel jLabel=new JLabel("?");jMenuBar.add(jLabel);jFrame.setJMenuBar(jMenuBar);Vector rowdata=new Vector();String sql1="select distinct sid from cou_stu where cid="+rs.getString("c_id")+"&& state=1";System.out.println(sql1);stmt1=con.createStatement();rs1=stmt1.executeQuery(sql1);int count=0;while(rs1.next()){String sql2="select * from student where s_id="+rs1.getString("sid");System.out.println(sql2);stmt2=con.createStatement();rs2=stmt2.executeQuery(sql2);while (rs2.next()){count++;Vector hang=new Vector();hang.add(rs2.getString("s_id"));hang.add(rs2.getString("s_name"));hang.add(rs2.getString("s_gender"));hang.add(rs2.getString("s_age"));hang.add(rs2.getString("s_specialty"));hang.add(rs2.getString("s_source"));rowdata.add(hang);}}jLabel.setText("本次共计"+count+"名学生选择此课");JTable jTable=new JTable(rowdata,title);
4 测试结果
4.1登录界面测试
正常测试:
异常测试:
4.2 学生端界面测试
异常测试:
4.3 教师界面测试
正常情况:
异常情况:
4.4 管理员界面测试
异常测试:
5 总结
刚开始接触数据库,我并不理解,通过网上课程的学习,有了简单的理解,通过这个课设,我深入理解了数据库的应用和java的图形化界面设计,还偶然学会了函数式编程。在我所有的程序里,我用的最多的是数据库的查询、插入、删除、修改功能,然后也用了大量的捕获异常处理,总的来说能做出自己的系统,还教会了我一种自主学习的思想,在日后的学习中我会继续成长,开发出更具有价值的软件。
参考文献:
[1] CSDN博主「兔老大RabbitMQ」的原创文章原文链接:https://blog.csdn.net/hebtu666/article/details/115613082
[2] CSDN博主「放肆青春的博客」的原创文章原文链接:https://blog.csdn.net/qq_35038153/article/details/77113076?spm=1001.2014.3001.5506
[3] CSDN博主「随缘。。。。」的原创文章原文链接:https://blog.csdn.net/suiyuanxiangyu/article/details/108064964?spm=1001.2014.3001.5506
附录
相关文章:

校园教务管理系统
学年论文(课程设计) 题目: 信息管理系统 校园教务管理系统 摘要:数据库技术是现代信息科学与技术的重要组成部分,是计算机数据处理与信息管理系统的核心,随着计算机技术的发展,数据库技…...

【LeetCode热题100】【双指针】接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …...
软件工程-(可行性分析、需求分析)
目录 一.可行性研究 1.1定义 1.2项目背景 1.3三方面研究目标系统的可行性 1.3.1技术可行性分析 1.3.2 经济可行性分析 1.3.3 市场可行性分析 1.4. 数据流图 数据字典(DD) 1.5风险评估 1.6结论与建议 二、需求分析 引言 项目概述 利益相关者分析…...

HuggingFace学习笔记--BitFit高效微调
1--BitFit高效微调 BitFit,全称是 bias-term fine-tuning,其高效微调只去微调带有 bias 的参数,其余参数全部固定; 2--实例代码 from datasets import load_from_disk from transformers import AutoTokenizer, AutoModelForCaus…...

阅读笔记|A Survey of Large Language Models
阅读笔记 模型选择:是否一定要选择参数量巨大的模型?如果需要更好的泛化能力,用于处理非单一的任务,例如对话,则可用选更大的模型;而对于单一明确的任务,则不一定越大越好,参数小一…...

JSP 设置静态文件资源访问路径
这里 我们先在 WEB目录webapp 下创建一个包 叫 static 就用它来存静态资源 然后 我们扔一张图片进去 我们直接这样写 如下图 找到父级目录 然后寻找下面的 static 下的 img.png 运行代码 很明显 它没有找到 这边 我们直接找到 webapp目录下的 WEB-INF目录下的 web.xml 加入…...

【Pytorch】Visualization of Feature Maps(4)——Saliency Maps
学习参考来自 Saliency Maps的原理与简单实现(使用Pytorch实现)https://github.com/wmn7/ML_Practice/tree/master/2019_07_08/Saliency%20Maps Saliency Maps 原理 《Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps》&…...

java第三十课
电商项目(前台): 登录接口 注册接口后台: 注册审核:建一个线程类 注意程序中的一个问题。 这里是 5 条记录,2 条记录显示应该是 3 页,实际操作过程 有审核机制,出现了数据记录动态变…...
Scala--2
package scala02object Scala07_typeCast {def main(args: Array[String]): Unit {// TODO 隐式转换// 自动转换val b: Byte 10var i: Int b 10val l: Long b 10 100Lval fl: Float b 10 100L 10.5fval d: Double b 10 100L 10.5f 20.00println(d.getClass…...

【SQL SERVER】定时任务
oracle是定时JOB,sqlserver是创建作业,通过sqlserver代理实现 先看SQL SERVER代理得服务有没有开 选择计算机右键——>管理——>服务与应用程序——>服务——>SQL server 代理 然后把SQL server 代理(MSSQLSERVER)启…...

MyBatis-Plus学习笔记(无脑cv即可)
1.MyBatis-Plus 1.1特性 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 M…...
【VUE】watch 监听失效
如果你遇见了这个问题,那么尝试在 watch 函数中设置 { deep: true } 选项。这告诉 Vue 监听对象或数组内部的变化,就像下面这样: watch(()>chatStore.dataSources,(oldValue, newValue)>{// 监听执行逻辑 }, { deep: true })嗯&#x…...

python的异常处理批量执行网络设备的巡检命令
前言 在网络设备数量超过千台甚至上万台的大型企业网中,难免会遇到某些设备的管理IP地址不通,SSH连接失败的情况,设备数量越多,这种情况发生的概率越高。 这个时候如果你想用python批量配置所有的设备,就一定要注意这…...

react native 环境准备
一、必备安装 1、安装node 注意 Node 的版本应大于等于 16,安装完 Node 后建议设置 npm 镜像(淘宝源)以加速后面的过程(或使用科学上网工具)。 node下载地址:Download | Node.js设置淘宝源 npm config s…...

PGSQL(PostgreSQL)数据库安装教程
安装包下载 下载地址 下载后点击exe安装包 设置的data存储路径 设置密码 设置端口 安装完毕,配置PGSQL的ip远程连接,pg_hba.conf,postgresql.conf,需要更改这两个文件 pg_hba.conf 最后增加一行 host all all …...

识别和修复网站上损坏链接的最佳实践
如果您有一个网站,我们知道您花了很多时间在它上面,以使其成为最好的资源。如果你的链接不起作用,你的努力可能是徒劳的。您网站上的断开链接可能会以两种方式损害您的业务: 它们对企业来说是可怕的,因为当消费者点击…...

使用Navicat连接MySQL出现的一些错误
目录 一、错误一:防火墙未关闭 二、错误二:安全组问题 三、错误三:MySQL密码的加密方式 四、错误四:修改my.cnf配置文件 一、错误一:防火墙未关闭 #查看防火墙状态 firewall-cmd --state#关闭防…...

4G基站BBU、RRU、核心网设备
目录 前言 基站 核心网 信号传输 前言 移动运营商在建设4G基站的时候,除了建设一座铁塔之外,更重要的是建设搭载铁塔之上的移动通信设备,这篇博客主要介绍BBU,RRU以及机房的核心网等设备。 基站 一个基站有BBU,…...

iphone/安卓手机如何使用burp抓包
iphone 1. 电脑 ipconfig /all 获取电脑网卡ip: 192.168.31.10 2. 电脑burp上面打开设置,proxy,增加一条 192.168.31.10:8080 3. 4. 手机进入设置 -> Wi-Fi -> 找到HTTP代理选项,选择手动,192.168.31.10:8080 …...

springboot云HIS医院信息综合管理平台源码
满足基层医院机构各类业务需要的健康云HIS系统。该系统能帮助基层医院机构完成日常各类业务,提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生站和护士站等一系列常规功能,能与公卫、PACS等各类外部系统融合,实现多…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...