无法打开源文件 d3dx9tex.h

VS无法找到d3dx9tex.h文件

解决办法:
安卓DirectX 10 开发包 Microsoft DirectX SDK(June 2010)

包含目录和引用目录添加上
“C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include”

“C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86”

Windows条件变量

InitializeConditionVariable
SleepConditionVariableCS
SleepConditionVariableSRW
WakeAllConditionVariable
WakeConditionVariable // 唤醒睡眠中的条件变量

https://docs.microsoft.com/zh-cn/windows/win32/sync/condition-variables

使用方法
CRITICAL_SECTION CritSection;
CONDITION_VARIABLE ConditionVar;

void PerformOperationOnSharedData()
{
// 锁定临界区
EnterCriticalSection(&CritSection);

// Wait until the predicate is TRUE

while( TestPredicate() == FALSE )
{
// 该函数进入睡眠状态,并释放临界区,当被唤醒时,自动锁定临界区
SleepConditionVariableCS(&ConditionVar, &CritSection, INFINITE);
}

// The data can be changed safely because we own the critical
// section and the predicate is TRUE

ChangeSharedData();

// 释放临界区
LeaveCriticalSection(&CritSection);

// If necessary, signal the condition variable by calling
// WakeConditionVariable or WakeAllConditionVariable so other
// threads can wake
}

C/C++ 结构体定义中 位域定义 变量冒号数字

该种形式出现于结构体或共用体的定义中,是位域定义的标准形式。
其使用方式为

struct name
{
type var_name : n;
};

含义为,在结构体name汇总,成员变量var_name占用空间为n位。
n为正整数,其值必须小于type类型占用的位数。比如type如果是int,占4字节32位,那么n必须是1~31之间的整数。
对于位域类型的成员,在赋值时如果实际值超过n位所能表达的范围,那么超出部分将会被截掉,只保存低位值。如int var:4,本身只有4位的空间,如果赋值var = 20, 由于20的二进制值为10100,实际为五位,这时var实际被赋值的就是低四位,0100,即4。

由于C语言中的地址是针对字节计算的,所以位域类型的成员变量不支持取地址操作,即对于变量v, 如果存在位域成员变量var,那么&a.var是非法的,编译会出错。

费曼学习法

overview
概念

选择一个你需要学习的概念。先拿出一张白纸,把你要学习的这一个概念写在白纸的最上面,比如说数学中勾股定理。

教学

写下你对这个概念的解释,用最简单的语言,假设你正在教一个对这个概念和领域一无所知的人。教的时候,你就会发现,哪些地方你可以说得很清晰,还有哪些地方你自己都解释不明白。那么,解释不清楚的地方,要么就是你的知识还没有完全掌握,要么就是你转述的有问题,没有抓住这个概念的实质,这些就是你需要努力深入学习的部分,这一步更重要的是你可以发现哪些你还不能理解。

简化是检验我们知识的一个非常重要的手段,我们都知道白居易,白居易的诗歌题材广泛,形式多样,语言平易通俗,有“诗魔”和“诗王”之称。白居易作诗力求通俗易懂,明白晓畅。据说他每写一诗,必对家中老妪读之,老太太能理解的就抄录,不明白的就改写。

这种解释方法,爱因斯坦也尝试过用来解释相对论:“你坐在一个漂亮姑娘身边,坐了两小时,感觉上却是一会儿的工夫;而当你夏天紧挨着一个火炉时,哪怕只坐上一会儿,却仿佛已经是一个小时。

费曼有一个著名的“冰水实验”,这个实验是针对美国当时的“挑战者号”航天飞机失事的事故原因做的演示。“挑战者号”航天飞机在空中爆炸,7名宇航员遇难,震惊世界,当时的美国总统里根就召集了很多专家来调查,68岁的费曼就是其中一个。

经过调查,费曼将问题锁定在火箭助推器的 O 型密封圈上。这个密封圈是橡胶做的,有一定的膨胀性,在发射火箭的时候,这个环就保护火箭体的接口,起到密封的作用,防止高温气体接触到燃料舱。但是发射基地的温度又特别冷,在零度以下,密封圈一遇冷就收缩了,在燃料舱开始燃烧的时候,一冷一热,这个密封圈就失效了。

那么,怎么向全国人民解释呢?

费曼就在新闻发布会现场进行了一个非常经典的演示实验。他用镊子夹住橡胶圈泡在冰水里一会,拿出来之后,橡胶圈上都已经有了镊子的痕迹,过了几秒才恢复到原来的状态。这就完美地解释了,挑战者号发射当天温度很低,导致推进器的 O 型密封圈受冷之后不能立刻恢复原状,导致燃料从飞船的连接处泄露从而发生了爆炸。

回顾

把刚才给讲的时候卡壳的部分,重新学习,查各种资料,直到把那些搞不懂的地方全都可以流畅地写在纸上为止。这个过程和上一个复述的过程是可以循环的,只要遇到问题就停下来学习,然后再复述。

简化

当我们把所有的学习概念都弄清楚之后,用自己的话,把这个概念重新转述一遍, 这一步就是对已经学过的知识进行检验。检验自己到底有没有掌握知识,就是讲述、转述给别人听,只要别人能听懂你说的意思,那就说明你自己的学习成功了。

秘笈就这么简单,费曼学习法最重要的就是以输出来倒逼输入,我们习惯了被动的输入,大部分学生学习都是如此,老师讲什么就背什么,理解的东西太少,即使有很多考试,也其实还是考的输入。那么怎么算掌握了呢?就是自己能当老师,当一个普通的老师还是不能完全算掌握,那么费曼被成为老师的老师,就是强调我们要把任何高深的知识都能让一个小白能够听懂。

编程里面,一个比较好的编程实践就是测试驱动开发,什么是测试驱动开发呢?就是开发之前先写测试,这样可以避免开发将来用不到的功能,或者开发的东西不能用。举这个例子是不是非技术人员还是不懂,那么我就简化一下再举个例子,就是比如我们要设计一个产品,我们先设计产品说明书,然后再去开发产品。

其实,记笔记,思维导图都是这种学习方法的一部分,记笔记和脑图都是简化,只不过这种方法很多时候面对的是我们自己,如果不进行输出,那么我们很难检验自己是否真的掌握了。
gold

PowerShell CMD 环境变量

powershell下设置环境变量的操作

Powershell设置环境变量

  • 查看所有环境变量
    ls env:

  • 搜索环境变量
    ls env:NODE*

  • 查看单个环境变量
    $env:NODE_ENV

  • 添加/更新环境变量
    $env:NODE_ENV=development

  • 删除环境变量
    del evn:NODE_ENV

  • cmd设置环境变量

  • 查看所有环境变量
    set

  • 查看单个环境变量
    set NODE_ENV

  • 添加/更新环境变量
    set NODE_ENV=development

  • 删除环境变量
    set NODE_ENV=

Windows下查看CUDA版本信息

查看版本信息
nvcc –version

1
2
3
4
5
PS C:\Users\YW> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:04_Central_Daylight_Time_2018
Cuda compilation tools, release 10.0, V10.0.130

Windows Terminal 增加 anaconda3

1
2
3
4
5
6
7
8
9
10
11
12
{
"guid": "{C62CB018-CC21-4137-9410-287091CB2EE1}",
"hidden": false,
"name": "Anaconda3", # 环境名称
"closeOnExit": true,
"backgroundImage": "ms-appdata:///roaming/cat.jpg", # 背景图片
"backgroundImageStretchMode": "uniformToFill",
"backgroundImageOpacity": 0.3,
"startingDirectory": "%HOMEPATH%", # 用户目录
"icon": "C:\\Users\\**UserName**\\anaconda3\\Menu\\anaconda-navigator.ico", # 图标
"commandline": "powershell.exe -ExecutionPolicy ByPass -NoExit -Command \"C:\\Users\\**UserName**\\anaconda3\\shell\\condabin\\conda-hook.ps1; conda activate C:\\Users\\**UserName**\\anaconda3" # 命令行
}

ana