家居强电电路模拟程序的两次迭代(包含最终版本)

目录:
一)前言
二)设计与分析
三)踩坑心得
四)改进建议
五)总结

(2)家居强电电路模拟程序-3:
【1】知识点:ArrayList的运用,物理知识的运用。
【2】题量:较大
【3】难度:较难
在家居强电电路模拟程序的迭代中引出较难的互斥开关
(3)家居强电电路模拟程序-4:
【1】知识点:对象类型转换,继承与多态,物理知识的运用。
【2】题量:多
【3】难度:困难
家居强电电路模拟程序的最终版本,需要模拟复杂的电路情况,题目很难,但值得思考

二.设计与分析
家居强电电路模拟程序-3:
(1)类的设计思路图

(2)设计具体思路:
1.字符串录入:先创建一个String类的数组,用于储存输入的所有字符串,直到输入的字符串为"end"为止。以这个String类数组中的字符串为基础,进行处理。
2.对象的创建:分别创建一条总Device类(原件)、Circuit类(串联电路),Mcircuit类(并联电路),HControl类(互斥开关)ArrayList。
3.各类对象的实例化:根据charAt(1)(字符串第二个字符)对步骤1中所实例化的字符串数组进行分类操作:
【1】charAt(1)为'T'且i<字符串的个数:截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Circuit类对象,创建一个Device类的ArrayList(该ArrayList是该Device类对象的一个属性)。并将该Circuit对象添加进Circuit类ArrayList中去。
(1)charAt(1)为'K':则该字符串用于添加一个Switch类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Switch类对象,并加入到Device类的ArrayList中去。
(2)charAt(1)为'F':则该字符串用于添加一个FControl类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个FControl类对象,并加入到Device类的ArrayList中去。
(3)charAt(1)为'L':则该字符串用于添加一个LControl类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个LControl类对象,并加入到Device类的ArrayList中去。
(4)charAt(1)为'B':则该字符串用于添加一个BLight类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个BLight类对象,并加入到Device类的ArrayList中去。
(5)charAt(1)为'R':则该字符串用于添加一个RLight类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个RLight类对象,并加入到Device类的ArrayList中去。
(6)charAt(1)为'D':则该字符串用于添加一个Fan类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Fan类对象,并加入到Device类的ArrayList中去。
(7)charAt(1)为'A':则该字符串用于添加一个AFan类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个AFan类对象,并加入到Device类的ArrayList中去。
(8)charAt(1)为'H':则该字符串用于添加一个HControl类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Hcontrol类对象,并加入到Device类的ArrayList中去。(在添加前要判断hcontrol的number值是否与HControl类的ArrayList里某个array的number相等,如果相等则是把这个array添加进Device类ArrayList中去,反之则是添加这个hcontrol对象,并将这个hcontrol添加到Hcontrol类ArrayList中去)
(9)charAt(1)为'S':则该字符串用于添加一个Scurtain类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Scurtain类对象,并加入到Device类的ArrayList中去。
(10)charAt(1)为'T':则该字符串用于添加一个Circuit类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个AFan类对象,并加入到Device类的ArrayList中去。(在添加前要判断circuit的number值是否与Circuit类的ArrayList里某个array的number相等,如果相等则是把这个array添加进Device类ArrayList中去,反之则是添加这个circuit对象,并将这个circuit添加到Circuit类ArrayList中去)
【3】charAt(1)为'M':根据特征字符确定,是哪个Circuit类的ArrayList的array加入到mcircuit的ArrayList中去,并以此Circuit类ArrayList创建并实例化一个MCircuit类对象。
【4】charAt(1)为'T'且i=字符串的个数:根据特征字符,确定是将哪个原件加入到总ArrayList中去。
4.电路状况的确定:根据charAt(0)(字符串第一个字符)和charAt(1)(字符串第二个字符)对步骤1中所实例化的字符串数组进行分类操作:(注:遍历时会有Array为Mcircuit类,需要对其Circuit类属性进行遍历,其中每个Circuit类Array也需要进行遍历)
【1】charAt(0)为'#'且charAt(1)为'K':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为Switch类且其num属性与改int类值相等,则改变一次该Switch类ArrayList的state属性(若此时为0,则改变为1.反之亦然,0为关闭,1为打开)。
【2】charAt(0)为'#'且charAt(1)为'F':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为DiscreteSpeedController类且其num属性与改int类值相等,根据该字符串的charAt(3)来判断该Array的initionSpeedLevel该有的变化(charAt(3)为'-'则减小一档。charAt(3)为'+',则加一档。特别注意此次包括0共四档,若已经为0档,则减一档还是0档。若已经为3档,则加一档仍未3档)。
【3】charAt(0)为'#'且charAt(1)为'L':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为FluorescentLamp类且其num属性与改int类值相等,则截取指定的第二个字符并转为double类,并将该Array的range属性设置为该double数据。
【4】charAt(0)为'#'且charAt(1)为'H':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为Hcontrol类且其num属性与改int类值相等,则改变一次该Hcontrol类ArrayList的state属性(若此时为0,则改变为1.反之亦然,0为关闭,1为打开)。
5.原件状态确定:根据每一个原件的状态,设计物理逻辑编写程序,确定每一个原件的运行成果。
6.原件集合:创建一个新的Device类ArrayList(此后叫新Device类ArrayList),对经过排序后的ArrayList进行遍历将所有的Array加入到新ArrayList中去(如果Array为Mcircuit类,则先对其所包含的Circuit类属性进行遍历,其Circuit类属性也需要遍历,将其所有的Array加入到新ArrayList中去)
7.原件排序:对Device类对象实现接口,用于排序:对Device类新ArrayList先根据每个原件的type属性再根据num属性进行从大到校排序。(每一个原件所对应的类都有一个type属性,按照Switch、DiscreteSpeedController、ContinuousSpeedController、IncandescentLamp、FluorescentLamp、Fan的顺序不断增大)
8.输出原件的运行情况:对经过排序后的新ArrayList进行遍历,对每一个Array的运行情况进行输出。

家居强电电路模拟程序-4:
(1)类的设计思路图:

(2)程序设计具体思路:
1.字符串录入:先创建一个String类的数组,用于储存输入的所有字符串,直到输入的字符串为"end"为止。以这个String类数组中的字符串为基础,进行处理。
2.对象的创建:分别创建一条总Device类(原件)、Circuit类(串联电路),Mcircuit类(并联电路),HControl类(互斥开关)ArrayList。
3.各类对象的实例化:根据charAt(1)(字符串第二个字符)对步骤1中所实例化的字符串数组进行分类操作:
【1】charAt(1)为'T'且i<字符串的个数:截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Circuit类对象,创建一个Device类的ArrayList(该ArrayList是该Device类对象的一个属性)。并将该Circuit对象添加进Circuit类ArrayList中去。
(1)charAt(1)为'K':则该字符串用于添加一个Switch类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Switch类对象,并加入到Device类的ArrayList中去。
(2)charAt(1)为'F':则该字符串用于添加一个FControl类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个FControl类对象,并加入到Device类的ArrayList中去。
(3)charAt(1)为'L':则该字符串用于添加一个LControl类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个LControl类对象,并加入到Device类的ArrayList中去。
(4)charAt(1)为'B':则该字符串用于添加一个BLight类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个BLight类对象,并加入到Device类的ArrayList中去。
(5)charAt(1)为'R':则该字符串用于添加一个RLight类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个RLight类对象,并加入到Device类的ArrayList中去。
(6)charAt(1)为'D':则该字符串用于添加一个Fan类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Fan类对象,并加入到Device类的ArrayList中去。
(7)charAt(1)为'A':则该字符串用于添加一个AFan类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个AFan类对象,并加入到Device类的ArrayList中去
(8)charAt(1)为'H':则该字符串用于添加一个HControl类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Hcontrol类对象,并加入到Device类的ArrayList中去。(在添加前要判断hcontrol的number值是否与HControl类的ArrayList里某个array的number相等,如果相等则是把这个array添加进Device类ArrayList中去,反之则是添加这个hcontrol对象,并将这个hcontrol添加到Hcontrol类ArrayList中去)
(9)charAt(1)为'S':则该字符串用于添加一个Scurtain类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个Scurtain类对象,并加入到Device类的ArrayList中去。
(10)charAt(1)为'P':则该字符串用于添加一个Pdevice类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个AFan类对象,并加入到Device类的ArrayList中去(在添加前要先判断pdevice的引脚1是正向连接还是反向连接,如果是正向则pdevice的电阻是0,反之为无穷大)。
(11)charAt(1)为'T':则该字符串用于添加一个Circuit类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个AFan类对象,并加入到Device类的ArrayList中去。(在添加前要判断circuit的number值是否与Circuit类的ArrayList里某个array的number相等,如果相等则是把这个array添加进Device类ArrayList中去,反之则是添加这个circuit对象,并将这个circuit添加到Circuit类ArrayList中去)
(12)charAt(1)为'M':则该字符串用于添加一个AFan类对象并添加到Device类的ArrayList中,截取指定字符并进行类型转化,以此实例化int number,用以实例化一个AFan类对象,并加入到Device类的副ArrayList中去。(在添加前要判断circuit的number值是否与Circuit类的ArrayList里某个array的number相等,如果相等则是把这个array添加进Device类ArrayList中去,反之则是添加这个circuit对象,并将这个circuit添加到Circuit类ArrayList中去)
【3】charAt(1)为'M':根据特征字符确定,是哪个Circuit类的ArrayList的array加入到mcircuit的ArrayList中去,并以此Circuit类ArrayList创建并实例化一个MCircuit类对象。
【4】charAt(1)为'T'且i=字符串的个数:根据特征字符,确定是将哪个原件加入到总ArrayList中去。
4.电路状况的确定:根据charAt(0)(字符串第一个字符)和charAt(1)(字符串第二个字符)对步骤1中所实例化的字符串数组进行分类操作:(注:遍历时会有Array为Mcircuit类,需要对其Circuit类属性进行遍历,其中每个Circuit类Array也需要进行遍历)
【1】charAt(0)为'#'且charAt(1)为'K':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为Switch类且其num属性与改int类值相等,则改变一次该Switch类ArrayList的state属性(若此时为0,则改变为1.反之亦然,0为关闭,1为打开)。
【2】charAt(0)为'#'且charAt(1)为'F':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为DiscreteSpeedController类且其num属性与改int类值相等,根据该字符串的charAt(3)来判断该Array的initionSpeedLevel该有的变化(charAt(3)为'-'则减小一档。charAt(3)为'+',则加一档。特别注意此次包括0共四档,若已经为0档,则减一档还是0档。若已经为3档,则加一档仍未3档)。
【3】charAt(0)为'#'且charAt(1)为'L':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为FluorescentLamp类且其num属性与改int类值相等,则截取指定的第二个字符并转为double类,并将该Array的range属性设置为该double数据。
【4】charAt(0)为'#'且charAt(1)为'H':截取指定字符并转化为int形式,如若在对Device类的字符串的遍历(若有ArrayList的array是ArrayList的情况,对这个array进行遍历)中有Array为Hcontrol类且其num属性与改int类值相等,则改变一次该Hcontrol类ArrayList的state属性(若此时为0,则改变为1.反之亦然,0为关闭,1为打开)。
5.原件状态确定:根据每一个原件的状态,设计物理逻辑编写程序,确定每一个原件的运行成果。
6.原件集合:创建一个新的Device类ArrayList(此后叫新Device类ArrayList),对经过排序后的ArrayList进行遍历将所有的Array加入到新ArrayList中去(如果Array为Mcircuit类,则先对其所包含的Circuit类属性进行遍历,其Circuit类属性也需要遍历,将其所有的Array加入到新ArrayList中去)
7.原件排序:对Device类对象实现接口,用于排序:对Device类新ArrayList先根据每个原件的type属性再根据num属性进行从大到校排序。(每一个原件所对应的类都有一个type属性,按照Switch、DiscreteSpeedController、ContinuousSpeedController、IncandescentLamp、FluorescentLamp、Fan的顺序不断增大)
8.输出原件的运行情况:对经过排序后的新ArrayList进行遍历,对每一个Array的运行情况进行输出。

三.踩坑心得
(1)踩坑:家居强电电路模拟程序-3:hcontrol输出开关开闭的情况。
解决方法:考虑并联电路某一电路断开的情况。
数据:

T1:[IN H1-1] [H1-2 D2-1] [D2-2 OUT]

T2:[IN H1-1] [H1-3 D1-1] [D1-2 OUT]

M1:[T1 T2]

T4:[IN K3-1] [K3-2 B2-1] [B2-2 OUT]

T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]

M2:[T4 T5]

T3:[VCC K2-1] [K2-2 M1-IN] [M1-OUT M2-IN] [M2-OUT GND]

K1

K2

end
改正后测试结果:
@K1:closed
@K2:closed
@K3:turned on
@B1:87
@B2:0
@D1:0
@D2:262
@H1:closed
(2)踩坑:家居强电电路模拟程序-3:最开始没有考虑hcontrol只连接两个引脚的情况。
解决方法:考虑档次为0不能再减小,档次为3不能再增大。
数据:

T3:[VCC B2-1] [B2-2 K1-1] [K1-2 S1-1] [S1-2 H1-1] [H1-2 GND]

K1

end
改正后测试结果:
@K1:closed
@B2:95
@H1:closed
@S1:80%
(3)踩坑:家居强电电路模拟程序-4未考虑短路的情况。
解决方法:考虑并联电路所有电路断开的情况。
数据:

T3:[VCC K2-1] [K2-2 GND]

K2

end
改正后测试结果:
short circuit error
(4)踩坑:家居强电电路模拟程序-4并联里有并联判断错误。
解决方法:考虑并联电路多电路的情况。
数据:

T1:[IN H1-1] [H1-2 D2-1] [D2-2 OUT]

T2:[IN H1-1] [H1-3 D1-1] [D1-2 OUT]

M1:[T1 T2]

T4:[IN K3-1] [K3-2 B2-1] [B2-2 OUT]

T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]

M2:[T4 T5]

T3:[VCC K2-1] [K2-2 M1-IN] [M1-OUT M2-IN] [M2-OUT GND]

K1

K2

end
改正后测试结果:
@K1:closed 220-220 exceeding current limit error
@K2:closed 220-220 exceeding current limit error
@K3:turned on 220-0
@B1:200 220-0 exceeding current limit error
@D1:0 0-0
@H1:closed 0-0-0
@P2:cutoff 0-0
四.改进建议
(1)改用hashmap()
(2)学习使用getClass()尝试减少代码量
(3)在电路情况的判定中可以改用“方法”,将对象引用进方法以减少工程量。
五.总结
(1)首先,这俩题是近期的主要任务,我们在期末考试之前比较好的锻炼题,可以说它们是我们本学期java语言学习的一次大考验,不仅考验了我们有关java方面的理论知识,还考验了我们的java编程的上手能力。
(2)其次,在前段时间里,我确实让我的学习状态相较于曾经有了很大的改善,不少东西现在都能独立完成甚至能够指导他人,自主学习能力也有了巨大的提高,但是我这段时间的学习并没有因此松懈,而是去努力赶上其他同学的步伐,欲求在编程能力和学习能力得到更大的提高。
(3)然后,在这几周中,我对于java编程的庞大的任务量有了清晰的认识,但同时也知道了,只要编程时的思路够清晰,对于java编程的原则足够遵守,大任务能分散成多个小任务,困难任务能分散成多个简单任务。
(4)此外,我仍然认为时间十分重要。在课程方面,虽然近期晚自习多了,但是我还是建议学校可以试着调整课程的安排,让学生们在学习过程中可以尽可能的线下交流、共同讨论、一起克服难题。在作业方面,我曾经希望老师可以明确作业的要求,测试点的要求希望可以更加清晰,但是我现在发现,程序需要自己去完善,自己去想有什么需要改进的地方,因为建议老师只要表明有几个测试点就行了,不用标明测试点的通过方法。在实验方面,我没有什么建议,比较满意。
(5)最后,我希望自己可以更加积极有效得去学习,做时间的优秀把握者,能够认真提高自己的学习能力的同时去接触新鲜事物以求完善自我。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

免费的数据可视化(PCA、t-SNE和UMAP)网页程序

这是一款免费的数据可视化(PCA、t-SNE和UMAP)网页程序,直接进行在线操作,无需下载。这是一款免费的数据可视化网页程序,直接进行在线操作,无需下载。 URL: https://data-visualization-webapp-by-shuaibingli.streamlit.app/ 总体页面【预处理+可视化(PCA、t-SNE和UMAP)+保…

养老院视频监控智能分析系统

养老院视频监控智能分析系统为养老院提供先进的视频监控智能分析技术手段,构建养老智慧监控和安全智能分析防范体系,用科技手段弥补传统方法和技术在监管中的缺陷,变被动“监督”为主动“监控”。致力于打造智慧养老院,打造人性化托养、智能化运营管理,为各大养老机构减少…

关于nchu题目集7~8的总结

关于nchu题目集7~8的总结 一、前言 总结两次题目集的题目的知识点、题量、难度等情况 二、内容[题目[1]](##第三次题目(简略版)) [代码[2]](##我的代码) [设计与分析[3]](##设计与分析) [踩坑心得[4]](##踩坑心得) [改进建议[5]](##改进建议)题目集8最后一题(简略版)1、控制…

springboot+vue前后端分离项目-vue项目搭建5

1.改造登录vue/src/views/LoginView.vue,登陆后存储user信息到sessionStorage,进入到login页面移除sessionStorage里的user 2.改造vue/src/components/Header.vue,从sessionStorage中获取user,每个人登陆后根据个人信息显示名称 3.增加vue/src/views/Person.vue,点击个人信…

生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)

前言:今天演示下生产环境keepalived的部署方式,安装模式有很多,比如说主备模型和双主模型,主备分:抢占模式 和 非抢占模式。这里我会一一展开说具体怎么配置 一、双节点均部署Nginx: 第一步:上传安装包到/usr/local/ 第二步:安装编译依赖(使用普通用户需要家sudo) yu…

无业游民写的最后一个.net有关项目框架

理想很丰满,现实往往很残酷。 一种按照ddd的方式,根据业务来把自己需要的模块一个一个写出来,再按照模块把需要的接口一个一个的写出来,堆砌一些中间件,以及解耦的command,handler等等 ,一个项目就这么成型了。上面的项目有一个非常清晰的特点,就是按需开发,不需要去可…

OOP第三次Blog

前言: (1) 第七次题集只有一道题目——家居强电电路模拟程序-3,这是第三次迭代,这次迭代主要的点有四个。 ​ 首先本次迭代添加了线路中存在多个串联起来的并联电路。不同于上次的单并联,本次更复杂。 ​ 然后本次还新迭代了一种控制器——互斥开关,互斥…

23201829OO第三次blog作业

OO第三次blog作业 前言 这次blog是本学期最后一次回顾总结,本次blog的范围是“家居强电电路模拟程序”的第三和第四次迭代,分别加入了互斥开关、窗帘的概念、多个串联起来的并联电路、串联电路中包含其他串联电路的情况和串联电路中包含串联电路的情况和二极管。因此这两次PT…

企业做账流程详解

都说会计月底很忙,那究竟都在忙什么呢,一起来看看吧

快速提取视频字幕!适用B站、AI字幕等等。好用

快速提取视频字幕!适用B站、AI字幕等等。好用 以B站为例: 视频教程:快速提取视频字幕!适用B站、AI字幕!非常好用_哔哩哔哩_bilibili 无论是视频的字幕,还是AI字幕,都可以提取。比较简单。 首先好像需要确定 视频的字幕还是AI字幕。如果是视频字幕,下面F12之后,输入的是…

Ymodem协议说明

Ymodem流程介绍1.Ymodem帧格式 Ymodem两种帧格式: 1024数据格式帧:名称 帧头 包号 包号反码 信息块 校验简写 SOH PN XPN DATA CRC字节数 1 1 1 128 2128数据格式帧:名称 帧头 包号 包号反码 信息块 校验简写 STX PN XPN DATA CRC字节数 1 1 1 1024 21.1 帧头 帧头一个有两…

CentOS7.9部署Nginx

简介 本章节主要讲的是在Linux系统CentOS7.9上去完成Nginx Web服务安装部署 步骤 1.配置 Nginx 源 2.yum 安装 Nginx 3.启动 Nginx 4.浏览默认站点 实施 1.配置 Nginx 源// 执行如下命令 rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el…

CF132E Bits of merry old England

传送门构图好题。郑哥的题解 每一个输出的位置看作先分配变量(赋值或者用前面的),再输出。 给每个位置拆三个点 \(v_{i,1/2/3}\)。\(v_{i,1}\) 的流入表示这个位置的 "空变量" 数量(包括有值但是我们选择让它不重复使用的变量);\(v_{i,2}\) 有流入表示分配好了…

opp7~8题目集的反思与总结

opp7~8题目集的反思与总结 1、前言: 这两个题目集都是对于电路题目的迭代,都是对于电路题目的应用,对于电路的题目集,在上次的opp的题目集中就已经简述过了,没有看过的可以点击链接查看(opp第二次blog) 在这个里面就是之前的opp的题目集,讲述了大致的内容,这个是基础,…

CentOS7.9部署.NET Core 8.0

简介 本章节主要讲的是在Linux系统CentOS7.9上去完成.NET Core 8.0软件的安装,确定Linux的版本是x64还是arm64的,然后到.NET Core的官网下载8.0的SDK,并进行安装 步骤 1.查看系统版本 2.打开.NET Core 8.0下载网址 3.下载与Linux系统对应版本的.NET Core SDK 4.上传.NET Cor…

使用世界变换的逆转置矩阵对法线进行变换

最近在做法向量变换的时候,踩了两个坑,记录一下相关的知识点法向量变换细节记录 最近在做法向量变换的时候,踩了两个坑,记录一下相关的知识点 法向量做变换,最后一位是补0 我们知道,顶点在做变换的时候最后一位是 1.0,法线最后一位是补0.0 vec3 normCurrent = (getMatri…

JS逆向——动态页面逆向

JS逆向——动态页面逆向 一. 步骤关键点分析 逆向分析信息提取逻辑 模拟执行二. 实现 1. 关键点分析 找到实现kml导出的按键,发现是通过JS函数实现的,需要针对该函数进行JS代码逆向分析,找到实现的函数逻辑。 ​​ 2. 逆向分析信息提取逻辑 定位找到exportKML函数 ​​ 对该…

开源一款基于 Typecho 开发的导航主题

主题介绍 BeaconNav是基于typecho开发的一款导航主题,Beacon是灯塔的意思,希望使用者在知识的海洋里能够如同有灯塔指引一样目标明确,永远不会迷失方向。 演示站点:https://nav.ilaozhu.com主题特点响应式设计,适配手机、平板、电脑等设备; 支持自定义 LOGO、背景图片; …

一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator

前言 对于后端程序员来说,编写SQL代码是日常工作中不可或缺的一部分。然而,随着数据复杂性的增加,如何高效、准确地编写SQL查询成为了新的挑战。幸运的是,SQL Translator的出现为后端程序员提供了一个强大的工具,将自然语言查询转换为精确的SQL代码,极大地提高了工作效率…