- 博客(43)
- 收藏
- 关注

原创 XJTLU 西浦ICS学习资料与心得体会分享(持续更新中)
由于本人目前是大三,所以目前课程只能更新到大三,能力有限哈哈~本人水平也不是很高,只是个底层半奖罢了,学习ics纯属于喜欢计算机,喜欢编程,喜欢玩游戏罢了我觉得无论是选专业还是如果你选好了专业也要再选择一个方向,这些选择都是以兴趣为主,兴趣是最好的老师,有兴趣你才有学习下去的动力,如果我遇到我感兴趣的问题或者平时遇到一些程序上的bug我一般都会熬夜把问题解决,这是我个人的习惯,这个时候的我是不会感到疲惫的,当然这不是说如果你遇到问题一定要立马解决,如果这个问题很大的话我也会分几次再解决。
2024-09-30 15:06:29
2027
原创 CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.6 集合,映射
HashSet、LinkedHashSet 和 TreeSet 都是Java中 Set 接口的实现,这意味着它们都不允许存储重复元素。HashSet:排序:它不保证迭代的顺序。内部结构:由哈希表支持。排序:维护一个贯穿所有条目的双向链表,这定义了迭代的顺序,通常是元素被插入到集合中的顺序(插入顺序)。内部结构:由哈希表支持,并通过一个链表贯穿。TreeSet:排序:保证元素将按照元素的自然顺序或在集合创建时提供的比较器进行升序排序。内部结构:由树(通常是红黑树)支持。
2025-03-31 20:39:38
781
原创 CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.5 列表,栈,队列和优先队列
下面的代码展示了如何使用 Collections.sort() 对列表进行排序,这个排序是升序排序(自然排序),如果想要获得降序排序(逆自然顺序),可以使用 Collections.sort() 方法和 Collections.reverseOrder() 方法对列表进行降序排序。Deque 接口定义了 addFirst(e)、removeFirst()、addLast(e)、removeLast()、getFirst() 和 getLast() 方法,即允许在队列的头部和尾部进行操作。
2025-03-31 05:13:31
312
原创 CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.4 泛型
泛型允许程序员定义类和方法时使用类型参数。这些类型参数可以在编译时被具体的类型替换,从而提供类型安全和代码重用。假设我们定义了一个泛型栈类 Stack<T>,其中 T 是一个类型参数。使用这个泛型类,我们可以创建不同类型元素的栈对象。1.创建一个用于存储字符串的栈。示例如下。2.创建一个用于存储数字的栈。示例如下。在这两个例子中,String 和 Integer 是具体的类型,它们替换了泛型类 Stack<\T> 中的类型参数 T。
2025-03-29 04:56:24
1103
原创 CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.3 抽象类和接口
我们回到我们上一章中举的GeometricObject类的例子中,在那个例子中我们声明了一个抽象类GeometricObject,当时我们在其的子类Cricle和Rectangle中分别有不同的getArea()和getPerimeter()方法,其实我们可以将这两个方法声明为抽象方法,这样我们就可以让Circle和Rectangle作为子类的时候必须实现这两个方法。如下图所示。我们为什么要这么做呢?
2025-03-28 03:18:10
906
原创 INT202 Complexity of Algroithms 算法的复杂度 Pt.4 Fundamental Techniques &Optimization Problems 基础技术和优化问题
逆序对的数量越多,表示排列与标准排列的差异越大,相似度越低。所以我们在每一步可以选择尽可能多的当前价值指数(单位重量的收益)最大的物品,该物品拿完后如果背包有剩余容量就继续选择价值指数次大的物品,依此类推,直到达到重量限制。优化问题是指存在多种可能解决方案的问题,每种解决方案都有一个特定的值(比如成本、收益等),我们的目标是找到一个具有最优(最大或最小)值的解决方案。为了给你提供推荐,网站希望将你的评分与其他人的评分进行比较,以查看它们有多相似,比较的方式是通过计算逆序对的数量来实现的。
2025-03-24 16:28:01
591
原创 INT202 Complexity of Algroithms 算法的复杂度 Pt.3 Sorting Algorithm & Divide and Conquer 排序算法和分治法
例如优先队列使用insertItem在优先队列的最后插入一个新的元素,但是这样就破坏了优先队列或者说是堆的排序,因此我们现在通过上浮(up-heap bubbling)来恢复堆的排序。在堆中,元素及其键(key)存储在一个几乎完全的二叉树(binary tree)中,除了可能的最后一层外,二叉树的每一层都尽可能地填满子节点。这些键决定了在从优先队列中选择元素进行移除时的优先级。将左右两个序列的第一个元素进行对比,小的就先放进合并的序列中,当一个序列清空就将另一个序列的全部元素添加进合并的序列中。
2025-03-23 04:21:15
1091
原创 INT202 Complexity of Algroithms 算法的复杂度 Pt.2 Search Algorithm 搜索算法
我们前面学习了二分查找,它通过元素在数组中的排名(rank)来访问数组 S 中的元素,又学习了有序的数据结构,因此我们可以将它们结合起来,就是下面我们要介绍的二叉搜索树。如果要删除的元素不在具有叶子子节点的节点中,我们可以用它的中序后继(或等效地,用它的中序前驱)替换要删除的元素,然后删除这个后继(或前驱)元素。(原本是4-节点)现在有5个子节点,那么这个节点就变成了一个5-节点,这违反了 (2,4) 树的节点大小属性(每个内部节点最多有4个子节点)。在每次递归调用中,执行的是固定数量的操作。
2025-03-21 21:11:39
1056
原创 CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.2 String类和类的设计
类抽象是指将类的实现细节与类的使用分离。这通常通过提供类的公共接口(API)来实现,而隐藏类的内部实现细节。通过抽象,类的创建者可以定义类的行为和功能,即提供类的描述和公共方法,这些方法定义了类可以执行的操作,而不必让使用者了解类的具体实现方式。这使得使用者可以专注于如何使用类,通过这些方法与类交互,而不需要知道类内部的具体实现。而不让用户知道类内部是如何实现的,这也就是封装(encapsulated),将数据字段设置为private,只开放一些公共接口(API)。
2025-03-12 03:01:53
314
原创 CPT208 Human-Centric Computing 人机交互 Pt.1
本课叫Human-Centric Computing(以人为中心的计算),而非传统的人机交互(HCI,Human-Computer Interaction),HCI 是一门研究人与计算机之间交互方式的学科,主要关注如何设计、评估和改进用户与计算机系统的交互体验。而本课的要求较低一些,是一种更广泛的跨学科领域,强调将人类的需求、能力和体验作为技术设计的核心。
2025-03-11 03:04:49
718
原创 Git和GitHub基础教学
写代码中一定会遇到代码存档和多人代码同步问题,Git正是解决这一问题的工具。该教程从游戏存档的角度教大家学习使用Git和GitHub。
2025-03-10 18:48:13
4781
5
原创 INT202 Complexity of Algroithms 算法的复杂度 Pt.1 前言
这门课程是之前INT102的进阶,它介绍算法分析的基础概念并且介绍算法的复杂度分析。因为算法和数据结构相辅相成,所以好的算法也需要依赖高效的数据结构。在当前讨论组,我们说的“好”是运行速度快的,这将在课程中进一步阐述。
2025-03-01 15:03:53
1112
原创 CPT204 Advanced Obejct-Oriented Programming 高级面向对象编程 Pt.1 Arrays and Classes 数组和类
这门功课如果你前面在刚接触Java的时候,或者学习其他语言的时候理解了面向对象编程的意思,那么学习这门功课你就会觉得很简单。当然如果你至今没有理解面向对象编程,这又是一次理解面向对象编程的好机会。无论你对面向对象编程的理解如何,这门功课都是一次对面向对象编程的练习和实践。希望在学习完这门功课后,你能在今后自己的代码中能够做到面向对象编程,面向对象编程并不是什么繁文缛节,而是能够帮助你更好地理解这个世界,更好地重构这个世界,写出更加简洁使人容易理解的代码出来。
2025-02-23 19:13:49
1153
原创 CPT205 计算机图形学 OpenGL 3D实践(CW2)
前面已经分享过了关于CPT205的CW1的2D作业,这次CW2要求的是3D作业,但是主题不限,不像上次规定了必须得是生日贺卡。这里将以这个大作业为例,讲解OpenGL的3D实践。首先虽然我们来到了3D作业,但我们能靠OpenGL做一个类似于我们现在所处的世界一样的作业吗?答案当然是不能。虽然现在的游戏或者说计算机图形学已经可以让我们能做出接近现实世界的虚拟世界,但是那需要非常细致的建模和设计。很明显不是作业要求的。我们使用的工具较为简单,我们需要考虑的主要是以下几个问题:1. 建模建成什么样的?
2025-02-14 03:24:02
1205
原创 CPT205 计算机图形学 OpenGL 2D实践(CW1)
本文章将以CPT205 计算机图形学的第一次大作业为例,进行OpenGL的2D实践。这次作业是要求学生制作一个2D的生日贺卡,从而检验学生对OpenGl的2D掌握程度。这里涉及的知识点主要是3-5章的内容(相关知识点参考链接CPT205计算机图形学Pt.1)。考察不仅需要学生能够展现出你对知识的掌握程度,即你要尽量尝试所学的所有东西,另一方面你要尝试做出好看的作品,毕竟这门功课是计算机图形学,图形学的发展正是为了给人们展现出他们想要表达的提供媒介。
2025-02-12 15:25:09
981
原创 Unity安装教学与相关问题
该文章主要向第一次接触Unity开发的开发者介绍了如何安装Unity和基础的准备工作。并且介绍了Unity的背景和Unity开发和插件、项目之间的区别。
2025-02-01 03:05:23
1404
原创 CAN201 Introduction to Networking(计算机网络)Pt.5 网络安全
网络安全涉及以下几个重要概念:1.Confidentiality(保密性):在通信过程中,只有发送方和预期的接收方能够理解消息的内容。为了实现保密性,发送方会对消息进行加密,而接收方则会对消息进行解密,从而确保只有授权的人能够理解消息内容。2.Authentication(身份验证):发送方和接收方希望确认彼此的身份,以确保通信的安全性。3.Message integrity(信息完整性):发送方和接收方希望确保消息在未经检测的情况下在传输过程中或之后没有被篡改。4.Access and avail
2025-01-06 22:46:37
1235
原创 CAN201 Introduction to Networking(计算机网络)Pt.4 链路层
数据链路层(数据链路层也就是链路层)负责将datagram(数据报)通过link(链路)从一个节点传输到另一个节点。数据链路层处理的是直接相连的两个节点之间的数据传输。链路是连接相邻节点的通信通道。它可以是有线的(如以太网电缆)或无线的(如Wi-Fi)。链路层的数据单元称为frame(帧),它包含了控制信息,如帧同步、地址字段、差错控制等。链路层在传输数据报之前,会将其封装在帧中,这一步叫Framing。
2025-01-04 22:20:30
1176
原创 CPT203 Software Engineering 软件工程 Pt.3 系统建模(中英双语)
建模对于简化复杂系统的重要性,它通过将复杂系统抽象成适当级别的细节来简化系统。软件开发失败主要是由以下因素导致的:1.需求理解不清晰。2.开发过程中经常晚期发现问题。3.复杂性导致性能问题。系统建模是开发系统的抽象模型的过程,每个模型呈现系统的不同视图或角度。系统建模现在通常指的是使用某种图形符号来表示系统,而这些符号几乎总是基于统一建模语言(UML)中的符号。系统建模有助于分析人员理解系统的功能,并且这些模型被用于与客户沟通。
2025-01-01 01:14:42
1251
1
原创 CPT203 Software Engineering 软件工程 Pt.6 软件管理(中英双语)
1.由于专业软件工程总是受到组织预算和时间表限制的影响,因此需要对项目进行管理。2.项目管理的目标是确保软件项目能够满足并克服这些限制,并交付高质量的软件。良好的管理并不能保证项目的成功,但糟糕的管理可能会导致项目交付延迟、成本增加,以及无法满足客户的期望。
2024-12-31 14:25:12
878
2
原创 CPT203 Software Engineering 软件工程 Pt.5 软件测试(中英双语)
测试是软件验证和确认(V & V)过程的一部分,其目的是检查正在开发的软件是否符合其规范,并提供了由支付软件费用的人所期望的功能。这些检查过程从需求提供时就开始,并贯穿开发过程的所有阶段。测试技术包括静态和动态两种:静态测试:主要是对静态系统表示的分析,以发现问题(例如,检查文档和代码分析)。动态测试:主要是对产品行为进行测试,通过执行测试数据来观察系统的运行行为。
2024-12-30 20:53:29
1152
3
原创 CPT203 Software Engineering 软件工程 Pt.4 软件设计(中英双语)
软件设计涵盖了一系列原则、概念和实践,旨在促使高质量系统或产品的开发。设计的目标是产生一个模型或表示,具备以下特征:坚固性(无错误)。实用性(有用或有价值)。愉悦性(愉快的体验)。软件设计是建模活动中的最后一个软件工程行为,为构建阶段(代码生成和测试)奠定了基础。它是一个将用户需求转化为适当形式的过程,以帮助程序员进行软件编码和实施。实际上,需求和设计是相互关联的。特别是,在设计过程中通常会澄清需求。
2024-12-29 22:50:06
1345
原创 CPT203 Software Engineering 软件工程 Pt.2 敏捷方法和需求工程(中英双语)
由于企业现在在全球快速变化的环境中运营,它们必须对新的机遇和市场、经济状况的变化以及竞争性产品和服务的出现做出反应。这对软件开发有重大影响,意味着软件开发需要更加灵活和快速响应变化。软件开发需要能够适应不断变化的需求和市场,以及迅速推出新功能和服务来满足市场的需求。因此,软件开发需要更加注重敏捷性、灵活性和创新性,以便与快速变化的商业环境保持同步。
2024-12-29 14:41:39
1275
原创 CPT203 Software Engineering 软件工程 Pt.1 概论和软件过程(中英双语)
软件工程对于政府、社会、国内和国际企业、机构的正常运转都是至关重要的。现在的世界离开软件就无法运转了。国家基础设施和公共服务都是基于计算机的系统控制的,大多数电子产品都包括计算机和控制软件,工业制造和分销已经完全计算机化了,金融系统也是这样。娱乐业,包括音乐产业、计算机游戏产业、电影和电视产业,也是一个软件密集型的产业。软件是抽象的、不可触摸的,它不受物质材料的限制,也不受物理定律或加工的制约:优点:一方面使软件工程得以简化,因为软件的潜能不受物理因素的限制;
2024-12-28 00:01:39
1287
1
原创 CAN201 Introduction to Networking(计算机网络)Pt.3 网络层
这章将主要理解网络层服务背后的原则,特别是关注data plane(数据平面)方面的内容。具体包括以下几个方面:网络层服务模型:即网络层提供的服务类型和模式,例如数据包转发、路由选择等。转发与路由:区分数据包转发和路由选择的概念,理解它们在网络层中的作用和区别。路由器的工作原理:理解路由器在网络中的功能和工作方式,包括数据包的处理、转发和路由决策等。广义转发:指的是网络层中数据包的转发和处理方式,这涉及到不同的转发策略和技术。并且这章会介绍网络层的实例化和实现。
2024-12-27 17:03:42
1358
原创 CAN201 Introduction to Networking(计算机网络)Pt.2 传输层
传输层的主要作用是在不同主机上运行的应用程序进程之间提供逻辑通信。传输层协议在端系统中的运行过程:在发送端,传输层协议将应用层的消息(也称为报文)分割成较小的数据段(也称为分组或报文段),然后将这些数据段传递到网络层。这个过程叫breaks app msg into segments, passes to network layer。在接收端,传输层协议将接收到的数据段重新组装成完整的消息,然后将这些消息传递到应用层。这个过程叫reassembles segments into messages, pa
2024-12-25 18:33:08
1449
原创 CAN201 Introduction to Networking(计算机网络)Pt.1 导论和应用层
因特网是一个世界范围内的计算机网络,它是一个互联了遍及全世界数十亿计算设备的网络。它为参与者提供了沟通和连接的手段。参与者可能是设备也可以是服务。这些设备包括传统的PC、服务器等,也包括如今的智能手机、平板、手表、汽车、温度调节装置等)。服务包括Web服务、电子邮件服务、域名解析服务等。应用层协议可以基于CS(客户端-服务器)架构或者P2P(对等)架构。它定义了交换信息的种类,包含request(请求)和response(响应)等。
2024-12-23 21:26:10
1007
2
原创 CPT205 Computer Graphics 计算机图形学 Pt.4(含OpenGL)
裁剪是指移除在裁剪窗口之外的对象或对象的部分,以确保只有位于裁剪窗口内的部分被渲染。Rasterization(光栅化)又称scan conversion(扫描转换)是将高级对象描述转换为帧缓冲区中像素的颜色,即将几何图形转换为屏幕上的像素点。图形系统(如OpenGL)会自动为我们执行裁剪和光栅化的过程,因此在使用OpenGL时,通常无需显式地调用特定的函数来执行裁剪和光栅化操作。光栅化的成本随着创建的片段(候选像素)数量近似线性增长,因为每个像素都需要进行数学和逻辑运算。
2024-12-19 16:50:31
1253
原创 CPT205 Computer Graphics 计算机图形学 Pt.3(含OpenGL)
通过生成透视投影,可以模拟出真实世界中物体的远近和大小关系并应用自然光照效果到可见表面上,可以使渲染的物体呈现出更加真实的外观,从而使渲染的场景呈现出逼真的透视效果。实现计算机图形学中的Photorealism(照片级逼真度)还需要准确地表示物体表面的材质属性,并且要对光照效果进行物理学描述(例如光线在物体表面的反射、透射和散射,表面纹理以及阴影)。
2024-11-29 18:06:21
1070
原创 INT201 Decision,Comuptation and Language / Theory of Computation 决策,计算和语言 / 计算理论 Pt.3
前面学习的Finite Automata和Pushdown Automata都有识别不了的语言如A={ambncmn,m≥0,n≥0}A = \{a^mb^nc^{mn},m≥0,n≥0\}A={ambncmn,m≥0,n≥0}。现在介绍一个能力更强的自动机——Turing Machine(图灵机)。它与有穷自动机相比,有无限大的容量的存储并且可以任意访问内部数据。图灵机可以模拟实际计算机的所有计算行为,但其也有不能解的问题,这些问题正是超出了计算理论的极限的问题。图灵机用一个无限长的带子作为无限存储,这条
2024-11-26 11:13:46
1105
原创 Quest串流Mac教程
Quest的串流一般通过官方的Quest Link进行,但是由于目前Oculus的大部分软件都只支持Windows和Android,因此网上很少有关于如何将Quest上的内容串流到Mac上的教程,该教程提供了一个可行的方案,希望能够帮助到在这一方面有需求的用户。
2024-11-21 20:11:06
2453
原创 INT201 Decision,Comuptation and Language / Theory of Computation 决策,计算和语言 / 计算理论 Pt.2 上下文无关文法
前面我们已经介绍了有穷自动机和正则表达式这两种不同但等价的描述语言的方式,我们也知道了它们的局限性,比如它们无法描述{0n1n∣n≥0}\{0^n1^n|n≥0\}{0n1n∣n≥0}。本文将介绍上下文无关文法(context-free grammar)以描述某些应用广泛的具有递归结果特征的语言。在自然语言中,有的时候名词短语可以出现在动词短语中,而动词短语也可能出现在名词短语种,因此在名词、动词、介词以及它们的短语之间的关系中存在着自然的递归,上下文无关文法有助于整理并理解这些关系,从而支持机器翻译和
2024-11-13 16:16:03
1017
原创 INT201 Decision,Comuptation and Language / Theory of Computation 决策,计算和语言 / 计算理论 Pt.1 正则语言
这门课程的名字是Decision,Comuptation and Language,但其实它的内容和Theory of Computation是高度一样的,所以如果你对课程有不理解的地方或者想学习更多,都可以通过《Introduction to the Theory of Compuation》这本书去学习。所以为什么要学习这门课呢?首先计算机的硬件和软件的背后都是对应到了数学,这门课程就是想揭开计算机背后的基础数学。这一门课程会试图解答什么是不能计算的,什么是能计算的,可以计算多快,需要使用多少存储,
2024-10-22 16:03:08
708
原创 CPT205 Computer Graphics 计算机图形学 Pt.2(含OpenGL)
其实这可能不是我们第一次遇到Parametic curves,我们曾经在JavaFX中使用过Cubic curve,那个函数可以指定起始点、终点和控制点从而画出我们想要的曲线路径。
2024-10-15 21:17:56
1338
原创 CPT205 Computer Graphics 计算机图形学 Pt.1(含OpenGL)
计算机图形学是关于电脑创建图片或图像的所有方面,包含三个部分:1.电脑屏幕上你看到的图像。2,电脑用于生成图像的代码。3.关于显示世界的数学模型,它有时可以被理解成虚拟世界。应用方向包括:1.Display of information(信息显示)。2.Design(设计)。3. Simulation/modelling and animation(方针、建模和动画)。4.User interfaces(用户界面)。5.Virtual reality(虚拟现实)。
2024-10-09 22:34:22
1322
原创 Anaconda全程详细教学
本文详细教学了Anaconda如何安装,包括下载、安装、环境配置、检测以及后续如何使用Anaconda的环境,其中的每一步教学都有图文作为讲解。并在本文最后回答了一些关于Anaconda的一些问题。
2024-10-05 23:01:00
1994
2
原创 如何在GPT的帮助下利用Python进行无监督学习?(以INT104的Report3为例)
本文主要教学了如何在GPT的帮助下用Python进行无监督学习,并且通过GPT学习基础的人工智能知识,该教程主要以INT104的Report3为例,在这篇文章的帮助下同学也可以更好地完成Report作业.
2024-10-04 19:30:03
963
原创 如何在GPT的帮助下利用Python进行监督学习?(以INT104的Report2为例)
本文主要教学了如何在GPT的帮助下用Python进行监督学习,并且通过GPT学习基础的人工智能知识,该教程主要以INT104的Report2为例,在这篇文章的帮助下同学也可以更好地完成Report作业.
2024-10-03 16:52:49
879
原创 如何在GPT的帮助下利用Python实现数据可视化?(以INT104的Report1为例)
本文主要教学了如何在GPT的帮助下用Python进行数据分析,并且通过GPT学习基础的人工智能知识,该教程主要以INT104的Report1为例,在这篇文章的帮助下同学也可以更好地完成Report作业.
2024-09-30 13:11:44
1092
原创 Python安装与环境配置全程详细教学(包含Windows版和Mac版)
对于初学者的Python该怎么安装,需要做哪些设置,如何使用Python等问题的教学。适用于Windows用户和Mac用户,并且在本教学中对所有步骤都有文字教学和配套图片步骤,并且里面每一步的影响,该教学的操作和一些教学的不同点都在文中进行了讨论。初学者需要学会Python的安装与环境配置以及安装好IDE后掌握IDE的使用就可以正式开始学习Python了
2024-09-21 15:19:50
154953
58
INT102 Algorithmic Foundations and Problem Solving 算法基础与问题解决
2024-09-13
CPT102 Data Structure and Algorithm 数据结构和算法 学习大纲
2024-09-12
MTH008 多元微积分 笔记(知识点+例题)
2024-08-23
MTH013 微积分 个人笔记(知识点+例题)
2024-08-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人