自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 UE4 源码阅读:从引擎启动到Receive Begin Play

UE4 源码阅读:从引擎启动到ReceiveBeginPlay

2022-09-25 23:48:05 1310

原创 Games104 引擎工具链笔记

Games104 引擎工具链笔记

2022-09-25 19:51:10 373

原创 Games104 gameplay系统笔记

Games104 GamePlay系统笔记

2022-09-25 19:49:56 410

原创 排序算法总结

简单排序算法1、冒泡排序2、插入排序3、选择排序4、归并排序高级排序算法1、散列技术:桶排序、基数排序、奇数排序2、优先级队列:堆排序、锦标赛排序3、快速排序(1)思想:如果将左侧元素都小于等于它,右侧元素都大于等于它的元素称为轴点,那么在已经排好序的正序序列中,所有的元素都是轴点。因此可将排序看成是将轴点逐个归位的过程,基于此设计的算法称作快速排序,如何快速确定轴点是快排的核心。(2)和归并排序的区别:归并排序核心在于如何将子任务的解进行合并,而快速排序的核心在于如何分。(3)如何寻

2021-03-06 17:17:23 192

原创 Games101笔记:几何(二):曲线

曲线1、贝塞尔曲线(1)目的:用一系列控制点定义曲线,如下图定义了起点为p0,终点为p3,且起始和结束切线为p0p1方向和p2p3方向,属于显式表示。(2)生成方法:de Casteljau算法,枚举所有的t,递归计算t对应的位置,计算得到的每个点都是给定点的线性组合:贝塞尔曲线的性质:第二条性质仅针对给定三个点。第三条性质:对于给定点做仿射变换,变换后得到的贝塞尔曲线,一定和对原贝塞尔曲线上每个点做仿射变换后,再次得到的贝塞尔曲线一致。第四条性质:凸包性质,指贝塞尔曲线一定在控制点

2021-02-17 23:04:30 389

原创 Games101笔记:几何(一):隐式和显式几何表示

纹理的另外作用:(1)模拟环境光纹理可以模拟环境光照(假设环境光线来自无限远处,只记录方向信息),用来执行渲染。用环境光表示纹理的实例,把环境光记录在球面上:将环境光记录在球面上会带来扭曲问题(对信息的不均匀描述),是由于球本身的形状导致的。解决方法:使用包围盒,将信息存储到立方体的表面上,得到六张图。(2)凹凸贴图,减少着色的计算量原因是纹理可以定义任意不同点的属性,而不单单是在Phong模型中定义kd值。使用凹凸贴图则是定义了不同点的高度,进而改变了法线,进而影响着色,而不会改变原本

2021-02-14 23:32:39 2164

原创 C#异步委托检测线程结束的方式

1、异步委托开启多线程通过BeginInvoke开启异步委托,BeginInvoke返回IAsyncResult类型的对象,可以通过这个对象获得线程状态,比如线程执行状态。TakesAWhileDelegate d1 = TakesAWhile; //声明委托IAsyncResult ar = d1.BeginInvoke(1,3000,null,null); //BeginInvoke:在一个独立的线程上执行引用方法,并且立即返回到原始线程,原始线程可以继续。2、隐式检测线程结束,并获取返回值

2021-02-03 20:14:30 1127

原创 Games101 着色笔记(二):插值,纹理的其他作用

三角形内插值:目的:在三角形内部获得平滑过渡插值的内容:纹理、颜色、法线(Phong)等等。怎么做插值:重心坐标重心坐标的定义:满足三个顶点的系数之和为1(作用是限制点在三角形所在的平面内),且均非负,三角形内任意一点的属性可表示为顶点属性的线性组合。顶点自身的重心坐标:三角形内任意一点的重心坐标:可通过面积比求出来,各顶点系数等于”对面“三角形面积/总面积三角形重心的坐标:系数各为1/3,将三角形均等分为三份利用重心坐标做插值的一个问题:在投影变换下,不能够保证重心坐标不变

2021-02-02 16:16:32 527

原创 C#反射

元数据和反射(1)元数据(metadata):程序及其类型的数据(2)反射:运行的程序查看其元数据的行为Type类作用:获得反射特点:抽象类,不能用来实例化对象程序中的每个类都有一个对应的Type对象,存储这个类的信息(有哪些属性成员等等)获取Type:System.Type t = v.GetType();Type类的常用属性:(1)Name:类名(2)Namespace:命名空间(3)Assembly:程序集类型Type类获取类的属性,只能获取public: System

2021-02-02 12:57:12 97

原创 Games101 着色笔记(一):模型和纹理

什么是着色:The process of applying a material to an object.对不同物体应用不同材质的过程,不同的材质与光线有不同的相互作用。着色是局部的! 阴影的产生与着色无关,着色不考虑其他物体的存在Phong着色模型(Blinn-Phong Reflectance Model):(1)几个概念:Specular highlights:高光部分,镜面反射Diffuse reflection:漫反射部分,光线均匀发散的部分Ambient lighting:间

2021-01-31 23:22:31 377

原创 Games101 光栅化笔记, 作业二

1、对屏幕的理解:(1)像素的二维数组 (2)分辨率:数组的规模 (3)典型的光栅成像设备2、像素的抽象理解:(1)内部颜色不会变化的小方块 (2)RGB三者的颜色混合3、对光栅化的理解:对像素进行着色4、屏幕空间(在闫老师课上的规定):(1)屏幕的左下角是原点(2)x和y坐标都取整数,下图中蓝色像素坐标为(2,1)(3)像素的索引范围是(0,0)-> (width-1,height-1)(4)(x,y)为像素坐标,则像素中心坐标为(x+0.5,y+0.5)(5)屏幕覆盖范围从(0

2021-01-30 15:42:37 1387 1

原创 LINQ做查询

以人物类的设定为例:public class people{ public string name; public int old; public int LifeExpectancy; public bool sex; //0代表男,1代表女 //籍贯 public string birthPlace = ""; //出生地 public string birthregion = ""; //出生地区 public CountryI

2021-01-29 11:21:02 84

原创 Games101 作业一 构建模型变换,和透视投影矩阵

实验目的:构建变换矩阵实验

2021-01-28 23:48:24 762 1

原创 C#委托

背景:在游戏中有一些需要经常使用的函数,比如生成Perfab,封装成接口: //生成Perfab接口函数, 参数为路径 + 父物体 + 位置 public Transform GenerateObjects(string path, GameObject Parent, Transform Destination){ Object perfab = Resources.Load(path, typeof(GameObject)); GameObject Perfa

2021-01-26 17:19:37 126

原创 实现一个简单的shell

知识总结一、异常和进程1、异常,中断的一种类型:故障: 错误引起,如缺页,除0陷阱:”故意的异常“,目的是使用系统调用终止:致命错误,如硬件损坏2、创建子进程 —— fork()函数:作用:创建子进程,返回两次,父进程返回创建子进程的pid,子进程返回03、僵尸进程:进程有三种状态:运行、停止、终止;进程终止时仍占用系统资源,终止但未被回收的子进程成为僵尸进程。子进程的回收交由父进程执行,接收子进程的退出状态,内核删除其信息;如果父进程先于子进程终止,则交由所有进程的祖先–init负责

2020-12-26 23:15:05 762

原创 Linux基础知识总结

1、ls显示隐藏文件: ls -a ,隐藏文件都是以.开头的回到home目录 : ls ~通配符:单独的通配符不能识别,必须结合其他字母(1)*,代表0个或多个任意字符;如只罗列后缀是.cpp的文件:(2)?,只代表单个字符,如罗列前缀有4个字母后缀为.h的文件:(3) [],两种用法1、如检索第一个字母是V或x,以.h为后缀结尾的文件:2、如检索第一个字母是a-x之间的,以.h为后缀结尾的文件:2、touch作用:用来创建文件3、find(1)模糊搜索:...

2020-11-28 22:19:13 98

原创 矩阵分块转置降低 cache miss分析 (Cache Lab PartB)

Lab中给出的cache规格为: s=5, E=1, b=5矩阵A和B在内存中连续存放。Lab要求分别对32 * 32 , 64 * 64, 61 * 67的矩阵做转置优化,用到的都是将矩阵分块分别转置的方法。相较于普通转置,为什么分块能够优化cache miss次数?分块是通过什么来实现优化的 — > 通过减少B一次访问的列数。最根本的原因在于: Cache不能够一次装满整个矩阵,以最小的矩阵32 * 32而言,是4个cache的大小。如果矩阵大小为正好能够装满cache的16 * 16或更

2020-10-13 16:43:12 2596 1

原创 CSAPP Cache 知识总结; Cache Lab Part A

学习这部分内容的目的在于:如果理解了计算机系统中数据是如何在不同层次间移动的过程,就可以 优化程序的局部性 ,使自己应用程序的数据存储在层次较高的地方,加速CPU访问。知识总结1、程序的局部性时间局部性:多次引用相同的内存位置空间局部性:引用之前临近的内存位置1、高速缓存结构高速缓存由S个组构成,每个组包含E个行,每行包含m=s+e+b有效位表示这个行中是否包含有效信息,标记位表示高速缓存结构可以用四元组(S,E,M,B)来表示,高速缓存大小C=SEBS:E:M:B:...

2020-10-10 13:02:11 2007

原创 基于贪心策略的,游戏战略地图着色算法设计 (Unity)

一共有九种颜色,初始化有11个国家,所以相邻国家势必有颜色冲突的可能性(因为随着游戏进程国家有消失或新增的可能,因此不能写死),为此需要设计一种着色算法,因为游戏中的国家数量不会特别多,所以性能不是考虑的首要因素,因此采取贪心策略,最终算法时间复杂度为O(n2)O(n^2)O(n2)。初始的游戏地图:将其抽象成无向图,存储国家间的邻近关系,如下:(国家序号从0到10:燕、晋、秦、周、郑、楚、吴、越、宋、鲁、齐)燕 - 齐(0-10) 燕 - 晋(0-1)晋 - 秦(1-2) 晋 - 齐(1-1

2020-10-01 22:14:57 1054

原创 CSAPP Link总结;HIT linkbomb实验记录

实验分成五个phase,每个phase需要将main和对应的phase文件链接,修改可执行文件。可执行文件框架:#include <stdio.h>#include "config.h" void (*phase)(); /*初始化为0*/int main( int argc, const char* argv[] ) { if ( phase ) (*phase)(); else prin

2020-09-17 21:33:22 6335 2

原创 数据库基本概念

一、数据库基本概念数据库(DB):可看成“表”的集合(结构化关系数据库)数据库管理系统(DBMS):管理数据库的软件,如Oracle,SQL Server数据库应用(DBAP)数据库管理员(DBA):数据库管理系统的使用者,数据库的创建者之间的关系:数据库应用面向普通用户,通过数据库管理系统使用数据库。二、数据库管理系统(DBMS)的三级层次、两层映像:(1)DBMS管理数据的三个层次:1、外部层次( E )/用户层次:指某一个用户能够看到并处理的数据2、概念层次( C )/逻辑层次:从

2020-09-11 23:53:17 301

原创 引用是否占用内存空间?

反汇编看一下:int main(){ int a = r; int & b = a;}生成可执行文件,反汇编得到:123: file format Mach-O 64-bit x86-64Disassembly of section __TEXT,__text:__text:100000fa0: 55 pushq %rbp100000fa1: 48 89 e5 movq %rsp, %rbp100000fa4: 31 c0 xorl %eax, %eax10000

2020-08-24 20:46:54 400

转载 C++初始化对象加括号不加括号的区别

C++创建对象加括号和不加括号的区别1、对于内置对象,比如int,在new的时候加括号会自动初始化,内存置0.2、如果是一个类或者是有构造函数的对象。①类名 对象名; ->默认调用 对象名() 这个构造函数,在栈中存在对象名,在堆中存在实际对象。②类名 对象名(一个以上参数); ->默认调用对应的构造函数,在栈中存在对象名,在堆中存在实际对象。③类名 对象名(); ->不调用任何构造函数,仅在栈内存在对象名,在堆内没有对应实际对象。...

2020-08-17 23:26:34 1147

原创 列表结构接口实现

//// main.cpp// List//// Created by 杨涛睿 on 2020/8/9.// Copyright © 2020 杨涛睿. All rights reserved.//#include <iostream>typedef int Rank;#define Posi(T) ListNode<T>*using namespace std;template<typename T>struct ListNode{

2020-08-13 23:31:34 182

原创 对多态的理解

1、虚函数:定义:前面有virtual关键字的成员函数就是虚函数2、什么是多态?一、将派生类的指针赋给基类指针,则可通过基类指针调用派生类的同名虚函数#include <iostream>using namespace std;class CBase{public: virtual void func(){ cout << "123"<<endl; }};class CDerived:public CBase{publ

2020-08-07 21:22:30 111

原创 为什么喜欢把常引用作为函数的参数?

如果采用对象做参数:生成参数需要调用复制构造函数,造成时间和空间上的开销;采用指针做参数:影响代码的阅读性。而采用引用做参数,需要避免值可能被修改的风险,因此使用常引用

2020-08-07 16:33:36 529

原创 Vector接口实现

//// Vector//// Created by 杨涛睿 on 2020/8/3.// Copyright © 2020 杨涛睿. All rights reserved.//#include <iostream>#include <stdio.h>#include <math.h>#include <string>#define DEFAULT_CAPACITY 3typedef int Rank;using names

2020-08-07 13:47:43 265

原创 树和二叉树

树的特点1、相对于列表和向量的区别:向量的优势在于静态操作,比如查找列表的优势在于动态操作,比如插入,删除树结构的由于在于可以兼顾静态和动态操作,可视作半线性结构,是无环连通图2、树结构的特点:1、与图论中的树不一样(1)数据结构中的树都要定义根结点(2)兄弟之间按照度数定义长幼次序,度数为结点拥有孩子的个数2、任何树结构所含的边数,等于所有结点的度数之和,也等于顶点总数-1,树的边数与顶点个数同阶,因此在衡量时间复杂度时,用顶点个数n作为参照3、无环连通性,因此根结点到任一结点存在唯

2020-08-02 23:21:18 292

原创 Mac用gcc编译cpp文件遇到Undefined symbols for architecture x86_64错误

在Xcode下运行没有问题,gcc手动编译时提示链接错误,可能是gcc默认的库函数产生冲突。解决办法:编译选项添加-lstdc++,使用标准C++库。gcc -lstdc++ tree.cpp

2020-08-01 12:51:13 693

原创 栈—表达式求值、进制转换

github地址:https://github.com/Tory123/Algorithm-test/blob/master/Stack.cpp//// main.cpp// Stack//// Created by 杨涛睿 on 2020/7/27.// Copyright © 2020 杨涛睿. All rights reserved.//#include <iostream>#include <stdio.h>#include <math.h

2020-08-01 03:06:24 175

原创 二分查找

二分查找(1)策略:每经过至多两次比较,或者命中,或者将问题规模缩减一半T(n)=O(1)+T(n/2)T(n)=O(1)+T(n/2)T(n)=O(1)+T(n/2)解得T(n)=O(logn)T(n)=O(logn)T(n)=O(logn)(2)实现:int binSearch(int value,int lo,int hi){ int mid; while(lo<hi){ mid = (lo+hi)>>1; if(value&

2020-07-26 15:45:51 123

原创 算法分析的方法

算法分析包含两个方面(1)正确性:不变性,单调性(2)复杂度:时间,空间,稳定性算法分析的方法:迭代式:级数求和递归式:递归跟踪 + 递推方程算法分析几个常用到的级数:1、算术级数(等差数列):T(n)=1+2+3+...+n=n(n+1)/2=O(n2)T(n) = 1+2+3+...+n = n(n+1)/2 =O(n^2)T(n)=1+2+3+...+n=n(n+1)/2=O(n2)2、幂方级数,结果比幂次高一阶:T2(n)=12+22+32+...+n2=n(n+1)(2n+1)

2020-07-21 23:48:58 2730

原创 哈工大计算机网络MOOC作业题解答

第六周题目1:假设主机A向主机B发送5个连续的报文段,主机B对每个报文段进行确认,其中第二个报文段丢失,其余报文段以及重传的第二个报文段均被主机B正确接收,主机A正确接收所有ACK报文段;报文段从1开始依次连续编号(即1、2、3……),主机A的超时时间足够长。请回答下列问题:1).如果分别采用GBN、SR和TCP协议,则对应这三个协议,主机A分别总共发了多少个报文段?主机B分别总共发送了多少个ACK?它们的序号是什么?(针对3个协议分别给出解答)2).如果对上述三个协议,超时时间比5RTT长得多,那

2020-07-08 19:52:59 16813 3

原创 MySQL查询进阶

Student表格:Dept(院系)学院号-学院名-院长:Course表格:Teacher表格,教师号-教师姓名-部门号-工资:SC表格,学号-课程号-分数,反应学生和课程的对应关系:1、求选修了001课程的学生的学号和姓名需要了解学生和课程的对应关系,因此需要查询SC表;但SC表无法返回姓名,因此1、在SC表返回选修了001课程学生的学号 2、在Student表中返回学生的姓名。Select `S#`,Sname From Student Where `S#` in (Select

2020-07-08 00:28:59 575

原创 P2P和CS架构

P2P架构(Peer to Peer)特点1、没有服务器2、任意端系统直接通信3、节点阶段性接入internet4、节点可能更换ip地址优缺点:优点:动态和随机性缺点:难以管理P2P和CS进行文件分发的比较: 当文件数增多时,P2P更具优势CS: 时间随N线性增长P2P架构:服务器至少发送一个副本到互联网,时间F/u_s,客户机下载时间不变时间趋势:BitTorrent协议: P2P架构torrent:交换同一个文件块的结点会形成一个组,称作torrent;每个torr

2020-07-07 21:34:25 3772

原创 数据库基本概念、ubuntu安装MySQL

安装MySQL参考了这篇博客Ubuntu18.04 安装MySQLMySQL创建数据库需要创建的student和course表:进入sql前要先进入root用户创建数据库,加分号代表结束语句:

2020-07-03 00:22:50 130

原创 计算机网络性能衡量

1、速率单位时间(s)内传输信息(bit)量单位:KB/s, MB/s, Gb/s K = 10^3 ,M = 10^6, G=10^9一般表示的是理想的传输速率2、带宽计算机网络中的带宽和通信等领域的带宽概念不一样,计算机网络中的带宽是指数字信道能达到的最大传输速率,带宽可以理解为主机/路由器对分组的发送速率。3、延迟/时延(1)结点处理延迟(2)排队延迟:设R为带宽,L为分组长度,a为分组到达速率,La/R越小延迟越小,超过1延迟无限大(3)传输延迟:路由器或主机发送一个分组,从第

2020-06-29 23:37:33 759

原创 IP协议

网络层概述1、网络层的核心功能:转发:将分组从路由器的输入端口转移到合适的输出端口路由:由路由算法(协议),检索转发表得到分组从源到目的经过的路径连接建立:并不是所有的网络在网络层都需要建立连接,网络层建立的连接和传输层建立的不同在于,网络层建立的连接是主机到主机的连接,需要明确经过的所有网络层设备,比如路由器;而传输层建立的是端到端的连接。2、网络层提供的服务:不同的网络在网络层为传输层提供不同的服务(服务模型),比如internet提供的是“尽力而为”,不提供包括拥塞控制在内的多余服务,若想

2020-06-29 15:26:50 415

原创 MIT6.824分布式系统lecture1笔记:Intro,MapReduce

什么是分布式系统?为什么要使用分布式系统?1、追求高性能,通过分布式系统进行并行计算2、使系统具有容错性,一台计算机计算错误,可以转移到另一台计算机3、一些问题本身具有分布式的特性,需要多台计算机互相协作,比如转账4、安全性考虑,将程序分几部分运行在不同的计算机上分布式系统复杂的原因?1、分布式系统由很多部分组成,各部分并发工作,交互复杂2、局部失败问题3、性能问题,性能不会随规模成比例提升分布式系统的几个部分1、存储系统2、系统交互:计算机网络3、计算系统:如Mapreduce

2020-06-28 15:52:36 256

原创 可靠传输协议

Q&AQ1:传输层的作用?网络层的作用?运输层:提供应用进程之间的逻辑通信机制,需要多路复用和多路分解。网络层:提供主机host之间的逻辑通信机制Q2:TCP/UDP的区别:相较于UDP,TCP提供了几种附加服务,是可靠的传输层服务(1)建立连接,建立前会经过三次握手(2)可靠数据传输(3)拥塞控制...

2020-06-23 01:02:58 1226

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除