精选分类
数据结构
计算机科学文章列表
计算机图形学
# 基本光栅图形的生成
# 直线的生成算法
画一条从 (x1,y1)(x_1, y_1)(x1,y1) 到 (x2,y2)(x_2, y_2)(x2,y2) 的直线。实质上是一个发现最佳逼近直线的像素序列,并填入色彩数据的过程。这一过程称为直线的光栅化。
# DDA 算法
DDA(Digital Differential Analyzer)算法是一种基本的直线生成算法。它的基本思想是:直线的起点坐标为 P1(x1,y1)P_1(x_1, y_1)P1(x1,y1),终点坐标为 P2(x2,y2)P_2(x_2, y_2)P2(x2,y2),xxx 和 yyy 的增量分别为
more...编译技术笔记
# 引论
# 什么是编译程序
# 编译程序
编译程序是翻译程序的一种,它将高级语言程序翻译成等价的目标程序。编译程序的输入是高级语言程序,输出是目标程序。编译程序的主要任务是将源程序翻译成目标程序,使得目标程序能够在计算机上正确运行。
# 解释程序
以源程序为输入,直接执行源程序,不生成目标程序。解释程序的主要任务是解释源程序,使得源程序能够在计算机上正确运行。
# 编译程序与解释程序的区别
根本区别:是否生成目标程序。
# 编译系统的组成
编译程序
运行系统
支持环境
运行库
# 编译过程与编译程序的组织结构
# 编译过程
自然语言的翻译
编译
识别出句子中的单词
词
more...NJU编译原理Lab01-Lexer
本实验为 NJU 编译原理实验 1
# 实验要求
通过标准错误输出( stderr , 如 System.err 等), 打印程序的所有运行结果。
对于包含词法错误的文件,需要打印所有错误信息,格式为: Error type A at Line [lineNo]:[errorMessage]
对于没有任何词法错误的文件,打印所有识别到的 Tokens 信息
# .g4 文件编写
按照 SysY 词法规则来编写即可,这里不再赘述。
# 代码实现
在 Main.java 中,我们需要实现 main 函数,读取文件,进行词法分析,并输出结果。
// 通过标准错误输
more...Games101 作业 05
# 作业要求
完善以下函数:
//Renderer.cppRender()// 这里你需要为每个像素生成一条对应的光线, // 然后调用函数 castRay () 来得到颜色, // 最后将颜色存储在帧缓冲区的相应像素中。//Triangle.hpprayTriangleIntersect()//v0, v1, v2 是三角形的三个顶点, //orig 是光线的起点,dir 是光线单位化
more...Games101 作业 04
# 作业要求
完善以下函数:
bezier// 该函数实现绘制 Bézier 曲线的功能。它使用一个控制点序列和一个 OpenCV::Mat 对象作为输入,没有返回值。它会使 t 在 0 到 1 的范围内进行迭代,并在每次迭代中使 t 增加一个微小值。对于每个需要计算的 t,将调用另一个函数 recursive_bezier,然后该函数将返回在 Bézier 曲线上 t 处的点。最后,将返回的点绘制在 OpenCV ::Mat 对象上。recursive_bezier// 该函数使用一个控制点序列和一个浮点数 t 作为输入,实现 de Casteljau
more...Games101 作业 03
# 作业要求
完善以下函数:
rasterize_triangle(const Triangle& t) // 在此处实现与作业 2 类似的插值算法,实现法向量、颜色、纹理颜色的插值。get_projection_matrix() // 将你自己在之前的实验中实现的投影矩阵填到此处,此时你可以运行./Rasterizer output.png normal 来观察法向量实现结果。phong_fragment_shader() // 实现 Blinn-Phong 模型计算 Fragment Color.texture_
more...Games101 作业 02
# 作业要求
完善以下函数:
rasterize_triangle(): 执行三角形栅格化算法static bool insideTriangle(): 测试点是否在三角形内。你可以修改此函数的定义,这意味着,你可以按照自己的方式更新返回类型或函数参数。# 作业实现
# 测试点是否在三角形内
把给出的点与三角形的三个顶点分别做叉乘,如果这三个叉乘的结果符号相同,那么这个点在三角形内。
static bool insideTriangle(const float x, const float y, const Vector3f *_v) { const Eigen::Vector
more...Games101 作业 01
# 作业要求
完善以下函数:
get_model_matrix(float rotation_angle): 逐个元素地构建模型变换矩阵并返回该矩阵。在此函数中,你只需要实现三维中绕 z 轴旋转的变换矩阵,而不用处理平移与缩放。get_projection_matrix(float eye_fov, float aspect_ratio, float zNear, float zFar): 使用给定的参数逐个元素地构建透视投影矩阵并返回该矩阵。在 main.cpp 中构造一个函数,该函数的作用是得到绕任意过原点的轴的旋转变换矩阵。Eigen::Matrix4f get_rotation(Vec
more...人工智能基础
# 人工智能主要学派
# 符号主义
又称为逻辑主义、心理学派或计算机学派是基于物理符号系统的人工智能学派(谓词逻辑)
# 连接主义
又称为仿生学派或生理学派,是基于神经网络与学习算法的人工智能学(神经网络)
# 行为主义
又称为进化主义或控制论学派,是基于控制论和 “动作 - 感知” 控制系统的人工智能学派(强化学习)
# 知识表示
# 概述
# 知识的概念
知识:经过加工的信息,是对信息的提炼和概括,它是高度概括的信息。
信息:是数据所表达的客观事实,数据是信息的载体,信息是用来消除不确定性从而使数据得以解读。
数据:数据是可以被记录和识别的一组有意义的符号,以适合于人工或自然方式进行通信
more...计算机网络
# 绪论
# 计算机网络定义
计算机网络是互连的、自治的计算机集合。
计算机网络向用户可以提供连通性和共享服务
# 互联网的组成
# 边缘部分
由各主机构成,用户直接进行信息处理和信息共享;低速连入核心网。
# 客户 / 服务器模式
客户:被用户调用后运行,在打算通信时主动向远地服务器发起通信,必须知道服务器的地址;不需要很特殊的硬件和很复杂的操作系统
服务器:一种专门用来提供某种服务的程序,可以同时处理多个客户的请求;系统启动后即自动调用并一直不断地运行着,被动地等待着来自各地的客户端的请求,不需要知道客户端的地址;一般需要强大的硬件和高级的操作系统
# 对等连接
对等连接:
more...数据库系统概论概念整理
# 关系
# 域
域是属性的取值范围,是属性的取值集合。
# 笛卡尔积
给定一组域 D1, D2, ..., Dn,它们的笛卡尔积是指所有可能的 n 元组的集合。D1×D2×...×Dn={(d1,d2,...,dn)∣d1∈D1,d2∈D2,...,dn∈Dn}D_1 \times D_2 \times ... \times D_n = \{(d_1, d_2, ..., d_n) | d_1 \in D_1, d_2 \in D_2, ..., d_n \in D_n\}D1×D2×...×Dn={(d1,d2,...,dn)∣d1∈D1,d2
more...计算机组成原理复习
# 计算机系统概论
# 计算机的性能指标
吞吐量:表征一台计算机在某一时间间隔内能够处理的信息量。
响应时间:表征从输入有效到系统产生响应之间的时间度量,例如微秒、纳秒。
利用率:表示在给定的时间间隔内,系统被实际使用的时间所占的比率,一般用百分比表示。
处理机字长:指处理机运算器中一次能够完成二进制数运算的位数。当前处理机的字长有 8 位、16 位、32 位、64 位。字长越长,表示计算的精度越高。
总线宽度:一般指 CPU 中运算器与存储器之间进行互连的内部总线二进制位数。
存储器容量:存储器中所有存储单元的总数目,通常用 KB、MB、GB、TB 来表示。
存储器带宽:存储器的速度
more...Django公有配置
摸了好久(
# BASE_DIR
用于绑定当前项目的绝对路径(动态计算出来的),所有文件夹都可以依赖此路径
# DEBUG
用于配置 Django 项目的启动模式,取值
True 表示开发环境中使用开发调试模式(用于开发中)
False 表示当前项目运行在生产环境中
# ALLOWED HOSTS
设置允许访问到本项目的 host 头值
[] 空列表,表示只有请求头中 host 为 127.0.0.1 、 localhost 能访问本项目 DEBUG = True 时有效
['*'] 表示任何请求头的 host 都能访问到当前项目
more...数据结构理论复习
# 绪论
# 数据结构的定义
数据是描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序处理的符号的集合。
数据元素是数据的基本单位(例如,A 班中的每个学生记录都是一个数据元素),也就是说数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理
数据项是具有独立含义的数据最小单位,也称为成员或域
数据对象是性质相同的有限个数据元素的集合,它是数据的一个子集。
数据结构是指所涉及的数据元素以及数据元素之间的关系,可以看作是相互之间存在着特定关系的数据元素的集合。
数据元素之间的逻辑关系 => 数据的逻辑结构
数据元素及其关系在计算机存储器中的存储方式 &
more...哈夫曼树叶子结点的路径长度与权值的乘积之和
# 题目描述
哈夫曼树,第一行输入一个数 n,表示叶结点的个数。需要用这些叶结点生成哈夫曼树,根据哈夫曼树的概念,这些结点有权值,即 weight,题目需要输出所有叶子结点的路径长度与权值的乘积之和。
# 输入
输入有多组数据。
每组第一行输入一个数 n,接着输入 n 个叶节点(叶节点权值不超过 100,2<=n<=1000)。
# 输出
输出权值。
# 样例输入
22 835 11 30# 样例输出
1062# 题解
#include<bits/stdc++.h>using namespace std;priority_queue<
more...二叉搜索树 Binary Search Tree
# 二叉搜索树 Binary Search Tree
# 定义
二叉搜索树(二叉排序树或二叉查找树):
或者是一棵空树;
或者是具有如下特性的二叉树
若它的左子树不空,则左子树上所有节点
的值均小于根节点的值;
若它的右子树不空,则右子树上所有节点
的值均大于等于根节点的值;
它的左、右子树也都分别是二叉搜索树。
# 主要操作
# 查找某个数值
若二叉搜索树为空,则查找不成功;否则:
若给定值等于根节点的关键字,则查找成功;
若给定值小于根节点的关键字,则继续在左子树上进行搜索;
若给定值大于根节点的关键字,则继续在右子树上进行搜索。
# 插入某个数值
插入操作在查找不成功时才进
more...拓扑排序 Topological Sort
# 拓扑排序 Topological Sort
# 拓扑序列 Topological Order
拓扑序列是一个有向无环图(Directed Acyclic Graph,简称 DAG)的所有顶点的线性序列。
设 G=(V,E) 是一个具有 n 个顶点的有向图,V 中顶点序列v1、v2、…、vnv_1、v_2、…、v_nv1、v2、…、vn 称为一个拓扑序列,当且仅当该顶点序列满足下列条件:若<vi,vj><v_i,v_j><vi,vj> 是图中的有向边或者从顶点viv_ivi 到顶点vjv_jvj 有一条路径,则在序列中顶点viv_i
more...最短路径 Shortest Path
# 最短路径 Shortest Path
加权有向图中每条路径都有值,其值是该路径上所有边的权值之和。最短路径 (Shortest Path)问题就是指求出两个给定顶点间权值最小的路径。
# 定义
两个顶点 s 和 t 之间的一条最短路径 是从 s 到 t 的一条有向简单路径,而且此路径 具有以下的性质:不存在另一条这样的路径且有更小的权值。
# 最短路径树(Shortest-path trees, 简称 SPT)
给定一个图和一个指定的顶点 s,则 s 的最短路径树是一个包含 s 以及由 s 可达的所有顶点的子图,它构成以 s 为根的一棵有向树,其中每条树路径都是图中的一条最短路径。最短路径
more...最小生成树 Minimum Spanning Tree
# 最小生成树 Minimum Spanning Tree
加权无向图的最小生成树(Minimum Spanning Tree,简称 MST)是一棵生成树,其权(所有边的权值之和)不会大于其它任何生成树的权。
一个带权连通图 G(假定每条边上的权值均大于零)可能有多棵生成树.
每棵生成树中所有边上的权值之和可能不同。
其中边上的权值之和最小的生成树称为图的最小生成树。
MST 算法有很多,但其中最知名的是 Prim 算法和 Kruskal 算法
# Prim 算法
# 基本思路
从任何一个顶点开始作一棵单顶点 MST,再为之增加 V-1 条边,每次增加的边都是将 MST 上的一个顶点和尚未
more...机器人王国里的路径长度
# 题目描述
在一个机器人王国里,围绕首都分 N 层构建卫星城市。以首都为圆心,以路相连分出两个卫星城在第一个层,然后每个卫星城又有路相连分出两个卫星城在下一层,但每条路的长度不同。第 N 层的卫星城不再分出新的卫星城。现在人类只探知到所有直接相连的城市间的路程,你能计算某个卫星城到达首都的路程吗?
# 输入
第一行为 N,表示机器人王国里有 N 层卫星城,N 最大为 10。从第二行开始,共2N+1−22^{N+1}-22N+1−2 行,每行分别是城市的代号到其分出的卫星城的代号和它们间的路程。 代号用若干个字母表示,直连路程最大为 100。最后一行是某卫星城的代号。
# 输出
根据最后一行的
more...The Power of Robert Capa's The Falling Soldier
Today, I would like to talk about one of the most famous and controversial war photographs ever taken: "The Falling Soldier" by Robert Capa.
Robert Capa, born Endre Friedmann in 1913, was a Hungarian-born American photojournalist known for his courage and his motto: "If your pictures
more...Why Students Should Be Encouraged To Lead A Healthy Lifestyle
According to the World Health Organization, more than 80% of the world’s adolescents are insufficiently physically active. This alarming statistic shows that many students neglect their health in pursuit of academic excellence or other goals. However, health is not something that can be sacrificed o
more...思政复习
道德的(相对独立性)既表现为道德的历史继承性,也表现为道德对社会发展具有能动的反作用。
(奉献社会)要求从业人员在工作岗位上兢兢业业地为社会和他人作贡献,是社会主义职业道德中最高层次的要求,体现了社会主义职业道德的最高目标指向。
加强道德修养,提升个人品德,应借鉴历史上思想家们所提出的学思并重、(省察克治、慎独自律、知行合一、积善成德)等各种积极有效的方法,并结合当今社会发展的需要身体力行,不断提高自己的道德素质和精神境界。
自觉把集体利益放在个人利益之上,在维护集体利益的前提下,实现个人的正当利益。这是已经具有较高社会主义道德觉悟的人能够达到的要求。
(国务院)有权根据宪法和法律
more...习近平复习
中国特色社会主义的战略布局是( 四个全面 )
我国社会主要矛盾的变化
没有改变我们对我国社会主义所处历史阶段的判断
我国仍处于并将长期处于社会主义初级阶段的基本国情没有变
我国是世界最大发展中国家的国际地位没有变
坚持把马克思主义基本原理同( 中国具体实际相结合、中华优秀传统文化 )相结合,用马克思主义观察时代、把握时代、引领时代,继续发展当代中国马克思主义、21 世纪马克思主义
社会主义政治发展的必然要求是坚持( 党的领导、人民当家作主、依法治国 )的有机统一
习近平新时代中国特色社会主义思想坚持以社会主义现代化建设进程中的实际问题、以我们正在做的事情为中心,着眼统揽( 伟大斗争
more...数据结构之线性表
这是一系列关于数据结构的笔记博客,为了练习自己的代码能力,咱将尽可能不使用 C++ 来实现这些数据结构
# 线性表的简单介绍
线性表是具有相同特性的数据元素的一个有限序列。
所有数据元素类型相同。
线性表是有限个数据元素构成的。
线性表中数据元素与位置相关,即每个数据元素有唯一的序号。
咱们的线性表需要如下的方法:
createList(a[]):由整数数组a中的全部元素建立线性表的相应存储结构。add(e):将元素e添加到线性表末尾。getLength():求线性表的长度。getElem(i):求线性表中序号为i的元素。setElem(i, e):设置线性表中序号i的元素值为e。ge
more...Sports Life Lesson
As Aristotle said, “Life needs sports.” Sport, in its various forms, is an integral part of human culture that transcends geographical, cultural, and linguistic boundaries. It is not only an avenue to maintain a better figure or a source of entertainment, but also a powerful means of character devel
more...Redis实战——黑马点评
就是黑马程序员的 Redis 教程里的黑马点评的项目,前面就不讲了,直接开始正题。
# 基于 Session 实现登录流程
分为三个步骤:
发送验证码
短信验证码登录、注册
校验登录状态
# 发送验证码
# 逻辑:
用户在提交手机号后,会校验手机号是否合法,如果不合法,则要求用户重新输入手机号
如果手机号合法,后台此时生成对应的验证码,同时将验证码进行保存,然后再通过短信的方式将验证码发送给用户
# 代码
@Overridepublic Result sendCode(String phone, HttpSession session) { // 校验
more...SpringDataRedis
# Redis 的 Java 客户端
Redis 的客户端可以在 Redis 官网找到,推荐的客户端包括:
Jedis:以 Redis 命令作为方法名称,学习成本低,简单实用。但是 Jedis 实例是线程不安全的,多线程环境下需要基于连接池来使用
Lettuce:Lettuce 是基于 Netty 实现的,支持同步、异步和响应式编程方式,并且是线程安全的。支持 Redis 的哨兵模式、集群模式和管道模式
Redisson:是在 Redis 基础上实现了分布式的可伸缩的 java 数据结构,例如 Map、Queue 等,而且支持跨进程的同步机制:Lock、Semaphore 等待,比较适合用来
more...习近平新时代中国特色社会主义思想概论
# 第一讲 马克思主义中国化新飞跃
# 一、习近平新时代中国特色社会主义思想如何创立的
# 时代背景:"两个大局" 同步交织
两个大局:中华民族伟大复兴的战略全局;世界百年未有之大变局。
世界百年未有之大变局加速演进,世界百年未有之大变局概括起来说就是 :
当前国际格局和国际体系正在发生深刻调整
全球治理体系正在发生深刻变革
国际力量对比正在发生近代以来最具革命性的变化
世界范围呈现出影响人类历史进程和趋向的
中华民族伟大复兴正处于关键时期
中华民族迎来了从站起来、富起来到强起来的伟大飞跃,实现中华民族伟大复兴进入了不可逆转的历史进程。
中华民族伟大复兴,是造成世界
more...Redis的快速入门
# Redis 命令行客户端
Redis 安装完成后就自带了命令行客户端: redis-cli ,使用方式如下:
redis-cli [options] [commonds]其中常见的 options 有:
-h 127.0.0.1 :指定要连接的 Redis 节点的 IP 地址,默认是 127.0.0.1
-p 6379 :指定要连接的 Redis 节点的端口,默认是 6379
-a 123456 :指定 Redis 的访问密码
其中的 commonds 就是 Redis 的操作命令,例如:
ping :与 Redis 服务端做心跳测试,服务端正常会返回 pong
不指定 comm
more...The Best Way For A Student To Make Friends
Friendship is an essential aspect of a student’s life that fosters personal growth and emotional well-being by providing support, encouragement, and companionship. However, making friends can be daunting for some students, especially when seeking meaningful connections. Fortunately, there are some e
more...离散数学复习
# 集合论
# 集合的基本概念
# 集合的定义
具有某种特定性质事物的全体,通常,用大写的英文字母A,B,C,……A, B, C,……A,B,C,…… 表示集合
# 集合的元素
组成一个集合的那些对象或单元称为这个集合的元素,通常,用小写的英文字母aaa,bbb,ccc,…,或者a1a_1a1,a2a_2a2,b1b_1b1,b2b_2b2… 表示集合中的元素
# 属于
设 A 是一个集合,a 是集合 A 中的元素,记以a∈Aa \in Aa∈A,读作aaa 属于AAA;若aaa 不是集合AAA 中的元素,则记以a∉Aa \notin Aa∈/A,读作aaa
more...Redis的数据类型
Redis 支持五种数据类型:
string
hash
list
set
zset
# String
string 是最基本的类型。string 二进制安全,即可以包含任何数据。
string 一个键最大能存储 512MB。
string 类型的数据结构存储方式有三种 int 、 raw 、 embstr :
# int
Redis 中规定假如存储的是整数型值,比如 set num 123 这样的类型,就会使用 int 的存储方式进行存储,在 redisObject 的 ptr属性 中就会保存该值。
# SDS
假如存储的字符串是一个字符串值并且长度大于 32 个字节就会使用 SD
more...VIM的学习
# Vim 的哲学
在编程时,您大部分时间都花在阅读 / 编辑上,而不是写作上。因此,Vim 是一个模态编辑器:它有不同的插入文本和操作文本的模式。Vim 是可编程的(使用 Vimscript 以及 Python 等其他语言),并且 Vim 的界面本身就是一种编程语言:击键(具有助记名称)是命令,并且这些命令是可组合的。Vim 避免使用鼠标,因为它太慢了;Vim 甚至避免使用箭头键,因为它需要太多的移动。
最终结果是一个可以匹配您思考速度的编辑器。
# 模态编辑
Vim 有多种运行模式
Normal 用于在文件中移动并进行编辑
Insert 用于插入文本,按 i 键
R
more...