自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于BRDF公式理解的笔记

看视频的时候一直没理解反射方向的光亮度radiance为什么要做微分,看到很多弹幕也有类似的问题,但翻遍论坛没有找到想要的回答。在反复观看闫老师和清华胡事民在这部分的讲解后,有些个人的理解,在此记录下。问题按理说我们想知道入射光在某个方向上反射出去的radiance(光亮度),直接用表示即可,为什么要对做微分呢?微分后的物理意义是什么呢?为了解决上面这个问题,我们先看BRDF的分母。我们需要使用的是某个方向上入射进来的irradiance(辉度),所以需要对辉度irradiance做微分,得到的

2021-08-19 01:22:57 1012

原创 链接器踩坑

在工作中遇到一次,项目更新一个sdk的后,发现另一个没有改动的sdk提供的功能无法生效了。仔细排查后,发现是因为升级后的sdk包含了与另一个已有sdk同名的库(大概率内部一些接口也是一致的),猜测这里出了问题。遂对链接器的一些实现产生了好奇,做了一个简单的实验,这里记录一下。对链接器的一些疑问从经验看,CMakeLists文件只是简单的使用target_link_libraries之类的接口添加一个project需要链接的库,却没有任何地方指明了更进一步的链接细节,比如某个class A需要到具体.

2020-12-09 09:46:44 431

原创 入职作业总结(3.2)Rendering Pipeline

书上这么定义Rendering Pipeline: Given a geometric description of a 3D scene with a positioned and oriented virtual camera, the rendering pipeline refers to the entire sequence of steps necessary to gene...

2018-05-03 23:29:00 262

原创 入职作业总结(3.1)D3D11初始化

文中提到的书,如无特殊标注,都指经典的directx编程指南:《Introduction to 3D Game Programming with Directx 11》D3D初始化主要根据以下步骤: Create the ID3D11Device and ID3D11DeviceContext interfaces using the D3D11CreateDevice func...

2018-04-27 00:56:26 684

原创 D3D疑问记录

1.Supersampling 和 Multisampling之间有什么差别?在龙书《Introduction to 3D Game Programming with Directx 11》的4.1.7小节有这么一段话: Observe the key difference between supersampling and multisampling. With supersampl...

2018-04-26 22:42:05 451

原创 入职作业总结(3.0)Windows程序开发

看DirectX书的的时候,发现示例代码给出的部分与以往的主函数int main(int argc, char **argv)不同,以为只是给了个函数,主函数得自己写。查阅了资料后发现是孤陋寡闻,原来windows应用程序的入口函数定义本来就比较特别。第一个windows程序代码以及参考链接:Your First Windows Program,这里只是对学习该代码进行的记录笔记。...

2018-03-18 20:36:02 276

原创 入职作业总结(2)I/O复用

参考文献:《Unix网络编程》一个输入操作通常包含两个阶段:等待数据准备好。从内核向进程复制数据。Unix下有5种可用的I/O模型:阻塞式I/O;非阻塞式I/O;I/O复用;信号驱动式I/O;异步I/O(POSIX的aio_系列函数);以下例子中,我们把recvfrom函数视为系统调用(以区分进程和内核)。不论它如何实现(在源自Berkeley的内核上是作为系...

2018-02-20 14:37:24 418

原创 入职作业总结(1)

收到网易的入职前作业,感觉都费劲(捂脸)。学习之余做点笔记吧。 这部分主要涉及服务器端的作业:用Python完成一个聊天窗口,以及若干附加的功能。在看python文档时候注意到了两个地址簇或者叫接口(因为直接影响了通讯协议):AF_INET和AF_UNIX。查阅到资料Socket通信中AF_INET 和 AF_UNIX域的区别,最关键的一点:AF_INET不仅可以用作本机的跨进程通信,同样的...

2018-02-08 19:46:18 1413

原创 C++内存管理

在阅读《STL源码剖析》的时候,突然发现一直以来认为的new只有用来在堆上构造对象的用途,但实际上在allocator分配内存的时候,也是利用new来实现的。换句话说,new/delete的本质是内存管理的一组操作。 在网上看到了侯捷先生的池內春秋—— Memory Pool 的設計哲學與無痛運用一文,让我对C++中内存管理有了较新的认识。C++ 平台提供的内存配置工具 配置 释放 归

2018-01-12 16:26:53 428

原创 allocator和容器实例构建过程

看到过几次,但一直对allocator的功能不甚了解。最近在看《Effective STL》的时候,看到里面提到了allocator以及示例代码,决定尝试去理解一下。allocator本质是:在每个新的对象实例被加入到容器中时,容器所作的准备工作。如果你以为新添加对象实例时,容器只需要在insert函数中确认一下空间并new一个对象,那就大错特错了。 以list为例,容器在新添加对象的时候,除了为

2018-01-08 21:40:48 301

原创 利用template和using构造别名

今天碰巧看到知乎一个问题:如何评价网易校招C++的笔试题?。发现自以为掌握了C++大部分实用基础语法的自己,还不知道template可以这么使用。通过查阅资料C++11 理解 (十五) 之 模板的别名, 模板的别名(1),发现自从C++11后,template配合using可以完全替代,甚至更好地完成typedef的工作。例如我可以这么定义某个类型的指针templatetypena

2018-01-05 22:43:48 4173

原创 Linux的进程互斥机制

前段时间去腾讯面试被问到了这个问题。以前编程时一直使用却没有细究过内核是使用什么系统调用来实现的,所以回来赶紧做个整理(发现种类远比预想的多)。先放结论:Linux内核同步方法列表如下:中断屏蔽、原子操作、自旋锁、读写自旋锁、顺序锁、信号量、读写信号量、BKL(大内核锁)

2017-09-23 22:05:33 1527

原创 MySql笔记(索引)

索引能优化数据库查询性能,但索引也有代价:添加索引后,每次写入数据行,都需要更改索引。因此会降低表的写入性能。其次,索引会占用磁盘空间,多个索引会占用更大的空间。挑选索引应符合以下原则:为用于搜索、排序或分组的列创建索引,尔对于用作输出显示的列(SELECT的结果)则不用。也就是说,最好是那些出现在WHERE子句,连接子句,或者出现在ORDER BY或GROUP BY子句中的列考虑数据列基

2017-09-05 22:17:27 278

原创 MySql笔记(存储过程)

存储过程是使用CALL语句来调用的独立操作,不能用在表达式里。存储函数常用在表达式里,会执行计算并返回一个值。

2017-09-04 21:53:03 237

原创 笔试题摘选(选择题部分)

做笔试的时候经常感觉很多基本知识大概都知道,但真做起题来总有些细节不甚了解导致无法确定,所以这里收录一些我容易犯错的题,相当于高中的错题集吧(捂脸)

2017-09-03 13:07:18 338

原创 Copy Elision

最近写程序的时候突然意识到了一个(也许大多数人早就意识到的)很常见的问题。我们知道复制一个对象(尤其是复杂的对象/实例)往往需要不小的计算开销(更别提复制一个数组的对象了)。但另一方面,复杂对象(群)的建立往往需要单独写一个函数来处理。那么如何从函数中输出这些对象?

2017-08-17 16:14:54 1331

原创 常用编程功能整理

有一些平时编程中经常遇到的,逻辑比较简单实际中也经常被需要的功能,在刚刚成为程序员阶段却因为不知道有什么合适的函数(一般是比较基本的,跟系统连接紧密的函数),成了阻碍进度的大山。所以想在平时做一些整理,等下次要用的时候可以很快回忆起来。按键跳出循环常用的设计一个菜单(即便是命令行下简单的菜单)然后根据指令跳出程序对任何初学者来说也都不难,但有时候,我们希望程序能循环的执行某项功能,只在我需要的时候跳

2017-08-03 10:06:40 628

原创 内存泄漏

内存泄漏一直是编程中不易察觉但可能会造成严重后果的大问题。在c/c++这种没有垃圾回收的语言系统中尤其明显。最近编程中遇到了一些相关的问题,网上没有查到满意的结果,特此整理收集。PS:关于堆内存和栈内存的区别这里就不赘述了,网上有很多,理解起来也很容易。

2017-08-02 10:22:39 200

原创 程序的编译、链接

《程序员的自我修养》学习笔记,详解C代码生成二进制码背后的原理

2017-07-18 15:27:50 201

原创 数据库学习笔记(事务)

事务通常具有ACID四种特性: - Atomic(原子性):所有语句是一个独立的逻辑单元,不可拆分。 - Consistent(一致性):数据库在事务执行前后必须是一致的(主要指各个表之间的关联性得以保证) - Isolated(独立性):事务之间不应互相影响。因此事务无论是并发还是顺序执行的结果应该一样。 - Durable(持久性):事务执行成功的影响将永久的记录在数据库里。

2017-06-22 16:50:48 278

原创 数据库学习笔记(SQL语句)

根据已有的表或查询结果来创建表: - CREATE TABLE ... LIKE会根据原有表创建一个新表。该语句会完整的复制原有表的结构以创建一个新的空表。如果想插入数据,还需要另外的插入语句(如INSERT INTO ... SELECT)但它不能只选原表的某几列或其他表中的列。 - CREATE TABLE ... SELECT可以根据一条SELECT语句的查询结构创建一个新表并把数据

2017-06-20 17:26:18 377

原创 数据库学习笔记(数据库管理)

数据库的全局属性只包含:默认字符集和排序规则;可以用ALTER来更改。 ALTER DATABASE [db_name] [CHARACTER SET charset] [COLLATE collation] 其中charset表示服务器支持的某个字符集名字,collation表示与该字符集兼容的某种排序规则。 存储引擎 描述 ARCHIVE

2017-06-20 15:12:18 386

原创 Markov Chain Monte Carlo(1)

蒙特卡罗马尔科夫链的基础介绍

2017-06-19 21:06:00 380

原创 Linux学习笔记(程序管理)

首先明确程序与进程的概念: 程序指存在磁盘中静态的可执行文件。它通过用户执行来触发,触发后加载到内存中成为一个进程。为了操作系统可以管理这个进程,因此进程还会被给予执行者权限、属性等参数,还包含进程所需要的脚本与数据等。 每个进程都有一个特定的PID,对进程的控制很多都是基于PID实现的。

2017-06-14 10:05:35 233

原创 数组指针和指针数组的区别

讨论指针数组和数组指针的区别,并从编译器角度理解这些声明定义

2017-06-09 15:41:19 264

原创 Linux学习笔记(文件系统)

Linux文件系统可以分解为3部分:superblock, inode, 还有data block。 其中data block就是常规用来存放数据文件内容的地方。EXT2文件系统支持的block大小有1K,2K, 4K三种。

2017-06-05 11:39:43 4115

转载 JAVA学习笔记(Eclipse常用功能)

转自:http://blog.csdn.net/chenleixing/article/details/44600587 挑选了一些我觉得比较常用又好用的先熟悉起来,一次记太多也记不住。

2017-05-15 11:03:00 197

原创 JAVA学习笔记(强制类型转换)

主要讨论的是非基本数据类型,即class类型之间的转换。我们知道,子类向父类的转换毫无疑问是可以顺利完成的(因为父类中的成员变量子类一定有)。但有时候为了使用多态性,需要将父类对象的句柄强制转换为子类的对象(强制造型),由于子类的成员可能在父类中没有,这时可能就会出现问题。

2017-05-15 10:45:44 342

原创 JAVA学习笔记(异常处理)

关于finally块的运行顺序,在学习阶段不是很明确。查询了一些资料后,大概可以得出以下结论:“finally块是在下级函数向上级调用的函数跳转前(无论是通过return还是throw exception的方式回到调用函数)执行”。

2017-05-12 09:20:36 311

原创 JAVA学习笔记(抽象类和接口)

只给出方法定义而不具体实现的方法被称为抽象方法。abstract 修饰符可以与类和方法一起使用。被修饰的类不能被实例化,被修饰的方法必须在包含此方法的类的子类中被实现。含有抽象方法的类一定是抽象类。Java 可以创建一种称作**接口(interface)**的类,在这个类中,所有的成员方法都是抽象的。

2017-05-11 14:52:27 191

原创 C++笔记:左值和右值

这两个概念看似简单,其实大部分人很多时候都没有细分他们的差别。最近看到primer书里讨论rvalue reference(右值的引用)时觉得自己应该再回去看看。而事实上左值和右值本身也确实很简单。

2017-05-09 14:47:38 313

原创 《算法》学习笔记(排序)

排序可分为基于比较的排序和优先队列两大类

2017-05-04 21:55:23 320

转载 网络学习笔记(网络字节序)

Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。Big-Endian就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。 UDP/TCP/IP协议规定:把接收到的第一个字节当作高位字节看待。

2017-04-27 16:17:19 228

原创 JAVA学习笔记(初级)三

static修饰符与final修饰符Java 程序运行时的内存结构分成:方法区、栈内存、堆内存、本地方法栈几种。

2017-04-26 11:36:08 267 1

原创 网络学习笔记(传输层)

关系模型的完整性是对关系的某种约束条件,这些条件实际上是现实世界的要求。关系模型有三类完整性约束:

2017-04-24 10:42:40 298

原创 网络学习笔记(网络层二)

路由选择协议路由协议可以分为内部网关协议(Interior Gateway Protocol)和外部网关协议(External Gateway Protocol)。内部网关协议: 路由信息协议RIP(Routing Information Protocol)不能再两个网络之间同时使用多条路由。RIP选择一条最少路由器的路由(即 跳数最少),哪怕还存在另一条低延时但路由器较多的路由。 R

2017-04-18 10:01:16 317

原创 网络学习笔记(网络层一)

网络层功能:将多个网络通过路由器互联成为一个互联网络。 网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。网络层不提供服务质量承诺。网际协议IP一般的,将网络互连起来要使用一些中间设备:物理层使用的中间设备叫做转发器(repeater)数据链路层使用的中间设备叫做网桥或桥接器网络层使用的中间设备叫做路由器(router)网络层以上使用的中间设备叫做网关

2017-04-17 10:48:02 318

原创 网络学习笔记(数据链路层2)

“名字指出我们所要寻找的资源,地址指出那个资源在何处,路由告诉我们如何到达该处。”严格来说,“以太网”指符合DIX Ethenet V2标准的局域网。但1983年IEEE在前者基础上制定的802.3以太网标准与其只有很小的差别,因此一般不严格区分它们。当初为了使数据链路层更好的适应多种局域网标准,IEEE 802委员会就把局域网的数据链路层拆成两个子层:逻辑链路控制LLC(Logical Link

2017-04-13 15:15:23 551

原创 网络学习笔记(数据链路层)

点对点协议PPP

2017-04-12 15:58:24 394

原创 Linux学习笔记(一)

摘自《鸟哥的Linux私房菜 基础学习篇(第三版)》磁盘分区表磁盘的第一个扇区主要记录了两个重要的信息: - 主引导分区(Master Boot Record, MBR):可以安装引导加载程序的地方,有446bytes; - 分区表(partition table):记录整块硬盘分区的状态,有64bytes;在分区表所在的64bytes容量中,总共分为四组记录区,每组记录区记录了该区段的起始

2017-04-12 09:50:16 232

空空如也

空空如也

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

TA关注的人

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