<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[steph_curry的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/steph_curry</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; steph_curry]]></copyright><item><title><![CDATA[操作系统学习第四天]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109381459</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109381459</guid><author>steph_curry</author><pubDate>Fri, 30 Oct 2020 17:52:13 +0800</pubDate><description><![CDATA[1.银行家算法。为了避免死锁，系统在进行资源分配之前，应先计算此次分配资源的安全性，若分配不会导致系统进入不安全状态，则分配，否则等待。

2.死锁检测。死锁恢复。

3.IPC:进程间通信。直接通信和间接通信（有一个中转站）。操作原语：send和receive。阻塞和非阻塞。

4。通信链路缓冲，队列的消息被附加到链路：0容量，有限和无限容量。

5.信号。软件中断通知时间处理。注册handlers；dispatchto handlers。

6.管道。% ls | more。ls把内容输出到管道的...]]></description><category></category></item><item><title><![CDATA[操作系统学习第三天]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109358199</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109358199</guid><author>steph_curry</author><pubDate>Thu, 29 Oct 2020 21:45:37 +0800</pubDate><description><![CDATA[1.原子操作。

2.critical section(临界区），互斥，死锁和饥饿。忙等待。lock.Acquire()和lock.Release()。

3.临界区特点。互斥，前进，等待时间有限。

4.基于硬件中断。进入临界区：禁用中断，离开临界区：开启中断。

5.给予软件的解决方法：使用两个共享数据项。

6.TestAndSet和Exchange操作是不可以被中断的。结合lock.Acquire()和lock.Release()可以实现多个进程对临界区的访问。可以从忙等待到无忙等待。

7.给..]]></description><category></category></item><item><title><![CDATA[操作系统学习第二天]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109327523</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109327523</guid><author>steph_curry</author><pubDate>Wed, 28 Oct 2020 18:58:06 +0800</pubDate><description><![CDATA[1.最近最久未使用算法(LRU)：是对最优页面置换算法的一个近似。可以用链表实现，链首页面是最近访问的；或者使用栈。

2.时钟页面置换算法：是对LRU的近似，对FIFO的一种改进。操作系统会定期对页面项中的访问位置0。因此若某页面访问位0，说明它比较久没被访问，可以被置换出去。

3.二次机会法。dirty bit，最近被写操作，置为1。同时使用脏位和使用位来指导置换。二次的含义是：如果两个位同时为1，那么它有两次机会让指针经过他，让他有更多的机会留在内存中。

4.最不常用算法。选择访问次数最少的那个.]]></description><category></category></item><item><title><![CDATA[操作系统学习第一天]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109310317</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109310317</guid><author>steph_curry</author><pubDate>Tue, 27 Oct 2020 21:43:41 +0800</pubDate><description><![CDATA[1.什么是操作系统？对用户是一个控制软件，对下来说是资源管理。层次是在硬件之上，应用程序之下。操作系统分为两部分，shell和kernel，其中windows，linux的界面属于shell。kernel在shell之下。

2.并发和并行的区别。前者是一段时间，后者是一个时间点。

3.共享。同时访问，互斥共享。

4.虚拟，多道程序设计。

5.异步。

6.如何学习操作系统。最好动手。最基本的要求是听课看书写作业。

7.操作系统的启动。POST(加电自检），寻找显卡和执行BIOS,BIOS把boot]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之特殊工具与技术]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109201877</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109201877</guid><author>steph_curry</author><pubDate>Wed, 21 Oct 2020 17:49:37 +0800</pubDate><description><![CDATA[第十九章特殊工具与技术

1.使用new时，本质上执行了三步操作。第一步是调用了operator new或operator new[]标准库函数分配内存。这部分可以自己定义。

2.malloc和free函数。注意和new与delete的区别。

3.dynamic_cast运算符。将基类指针或引用安全转换为派生类的指针引用。可以不包含虚函数。

4.typeid运算符。

5.使用RTTI:如何去判断连个对象相等（类型相同，成员取值相同）。解决方法：typeid先判断两个运算对象类型是否一致，然后再调..]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之用于大型程序的工具]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109188694</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109188694</guid><author>steph_curry</author><pubDate>Tue, 20 Oct 2020 21:42:50 +0800</pubDate><description><![CDATA[第十八章用于大型程序的工具

1. throw类似return，后面的语句不再执行。

2.如果一个异常没有被捕获，将终止当前程序。

3.析构函数不该抛出它不能处理的异常。

4.异常对象。抛出指针的对象必须存在，没有销毁。

5.匹配的catch语句是最靠前的第一个匹配的，它不一定是最优的。

6.catch语句中可以重新抛出异常对象，throw。

7.catch(...)可以捕获所有类型异常。

8.处理构造函数初始值异常的唯一方法是讲构造函数写成函数try语句块。

9.noexcept异常说明.]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之标准库特殊设施]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109179770</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109179770</guid><author>steph_curry</author><pubDate>Tue, 20 Oct 2020 19:39:31 +0800</pubDate><description><![CDATA[第十七章 标准库特殊设施

1.tuple可以看作一个快速而随意的数据结构。tuple的构造函数是explicit的，必须直接初始化。还可以make_tuple。

2.访问tuple的成员，get()，如果不知道tuple准确的类型细节，可以用tuple_size和tuple_element来辅助。

3.两个tuple只有具有相同数量成员才可以比较。

4.bitset使得位运算使用更加容易，可以处理超过最长整形类型大小的位集合。

5.regex_search只要找到一个匹配子串就会停止查找。

6.]]></description><category></category></item><item><title><![CDATA[2020-10-19]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109170237</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109170237</guid><author>steph_curry</author><pubDate>Tue, 20 Oct 2020 00:33:29 +0800</pubDate><description><![CDATA[第十六章 模板和泛型编程

1.和面向对象编程一样，泛型编程也可以处理编写程序时不知道类型的情况。前者可以处理运行前未知的情况，后者在编译时可知。

2.模板：template &lt;typename T&gt;，模板参数列表不可为空。类型参数T前面必须有calss或者typename.

3.模板参数列表里可以有非类型模板参数，它的实参必须是常量表达式。

4.模板程序应该尽量减少对实参类型的要求。

5.模板的头文件通常既包括声明也包括定义。模板直到实例化的时候才能生成代码。

6.在类外定义类模板的]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之面向对象程序设计]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109148946</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109148946</guid><author>steph_curry</author><pubDate>Sun, 18 Oct 2020 20:09:08 +0800</pubDate><description><![CDATA[1.三个基本概念：数据抽象，继承和动态绑定。

2.使用基类地引用或指针调用一个虚函数时将发生动态绑定。

3.基类通常定义一个虚析构函数，即使不执行任何操作。

4.基类希望它的派生类有权访问，但是禁止其他用户访问，protected成员。

5.C++新标准允许派生类显式地注明它使用某个成员函数覆盖了它继承的虚函数。override。

6.派生类到基类的隐式转换。

7.首先初始化基类的部分，然后按声明的顺序依次初始化派生类的成员。最好用基类的构造函数来初始化从基类继承来的成员。

8.基类的静态成员]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之重载运算与类型转换]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109146723</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109146723</guid><author>steph_curry</author><pubDate>Sun, 18 Oct 2020 18:01:39 +0800</pubDate><description><![CDATA[第14章重载运算与类型转换

1. 当一个重载的运算符时成员函数时，this绑定到左侧运算对象，成员运算符函数显式地参数量比运算对象地数量少一个。

2.我们把运算符定义为成员函数时，它地左侧运算对象必须是所属类地对象。

3.具有对称性的运算符，一般定义为普通的非成员函数。比如算术和关系运算符。

4.输入输出运算符必须是非成员函数。

5.类如果同时定义了算术运算符和相关的复合赋值运算符，则应用复合赋值来实现算数运算符。

6.赋值运算符必须是成员函数。

7.下标运算符必须是成员函数，同时需要定义常.]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之拷贝控制]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109141884</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109141884</guid><author>steph_curry</author><pubDate>Sun, 18 Oct 2020 11:44:25 +0800</pubDate><description><![CDATA[第十三章 拷贝控制

1. 拷贝构造函数第一个参数必须是自身类类型的引用。否则不会成功。

2.注意直接初始化和拷贝初始化的区别。

3.赋值运算符，以=为例：Foo&amp; operator=(const Foo&amp;);通常返回一个指向其左侧运算对象的引用。

4.拷贝构造和拷贝赋值区别：前者产生新对象，后者是在已有对象上赋值。

5.析构函数释放对象使用的资源，并销毁对象的非static数据成员。无返回值和参数。不可被重载。

6.需要析构函数的类也需要拷贝和赋值操作。合成析构函数不会delet]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之关联容器和动态内存]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109128613</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109128613</guid><author>steph_curry</author><pubDate>Sat, 17 Oct 2020 12:24:43 +0800</pubDate><description><![CDATA[第11章

1. 对map，关键字是const，不可改变。set里的关键字也是不可改变的。

2.map的insert操作：返回值是一个pair，first成员是一个迭代器，指向元素，second是插入成功与否。

3.erase参数可以是迭代器或者key。

4.对map使用下标，注意和数组使用下标的区别。

5.访问元素：find,count,lower_bound和upper_bound。可以组合lower_bound和upper_bound来获得一个范围。二者组合的功能和equal_range一样。]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之泛型算法]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109119371</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109119371</guid><author>steph_curry</author><pubDate>Fri, 16 Oct 2020 20:49:19 +0800</pubDate><description><![CDATA[第十章泛型算法

1.泛型算法可用于不同类型的元素和多种容器类型。

2.大多数算法定义在&lt;algorithm&gt;,标准库还在&lt;numeric&gt;中定义了一组。

3.迭代器算法不依赖容器，但以来元素类型的操作。

4.关键概念：算法永远不会执行容器的操作，它永远不会改变底层容器的大小。

5.只读算法：find, accumulate.迭代器一般用cbegin和cend. equal算法，假设第二个容器的元素至少和第一个一样多。

6.写容器的算法：向目的位置迭代器写入数据的算法假..]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之IO库和顺序容器]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109111040</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109111040</guid><author>steph_curry</author><pubDate>Fri, 16 Oct 2020 13:37:18 +0800</pubDate><description><![CDATA[第八章 IO库

1.IO类：ifstream和istringstream都继承自istream。普通流，文件流和string流。

2.IO对象不可拷贝或赋值。只能通过引用的方式来使用，且不能加const，因为读写会改变其状态。

3.刷新和写操作是两个过程，一般系统讲多个输出组合成单一的写操作。操作符endl,flush和ends可以实现刷新缓冲区，但各有不同。unitbuf和nonunitbuf了解。

4.当一个fstream对象被销毁时，close会被自动调用。

5. out模式打开文件会丢..]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之语句]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109083058</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109083058</guid><author>steph_curry</author><pubDate>Wed, 14 Oct 2020 21:42:28 +0800</pubDate><description><![CDATA[第四章表达式

1.强制类型转换。int i,j; double s = static_cast&lt;double&gt;(j)/i;可以避免编译器警告。const_cast才能改变表达式的常量属性，但是执行写操作结果未定义。尽量避免强制类型转换。

第五章语句

1. 跳转语句：break, continue, break.

2.throw，抛出异常。

3.try{} catch(){}; catch负责处理代码抛出的异常。
...]]></description><category></category></item><item><title><![CDATA[C++ primer阅读之变量与指针]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/109065296</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/109065296</guid><author>steph_curry</author><pubDate>Wed, 14 Oct 2020 10:17:03 +0800</pubDate><description><![CDATA[第二章 变量和基本类型

1. 显式访问全局变量，用操作符::

2. 引用和指针是复合类型。

3. 引用必须初始化；一旦引用被初始化为一个对象，就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象；引用必须在创建时被初始化。指针可以在任何时间被初始化。引用不是对象，所以不能定义引用的引用。

4. void*，任意类型的指针。只保存指向变量的地址，并不知道地址长度，因为不知道变量类型。因此也不能解引用。

5. 理解复合类型的声明。变量的定义包括一个基本数据类型和一组声明符，int *p = &]]></description><category></category></item><item><title><![CDATA[paper reading]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/104889566</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/104889566</guid><author>steph_curry</author><pubDate>Sun, 15 Mar 2020 23:39:19 +0800</pubDate><description><![CDATA[CVPR 2020

Implicit Functions in Feature Space for 3D Shape Reconstruction and Completion



The Virtual Tailor: Predicting Clothing in 3D as a Function of Human Pose, Shape and Garment Style

]]></description><category></category></item><item><title><![CDATA[coding小技巧记录]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/104096637</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/104096637</guid><author>steph_curry</author><pubDate>Tue, 28 Jan 2020 00:05:58 +0800</pubDate><description><![CDATA[# 创建空间正方体，返回坐标
coords = np.mgrid[:resX, :resY, :resZ]

#  快速对3D点云进行旋转平移操作
pts = torch.baddbmm(trans, rot, points)  # [B, 3, N]


]]></description><category></category></item><item><title><![CDATA[2020新年的碎碎念]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/104089327</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/104089327</guid><author>steph_curry</author><pubDate>Sun, 26 Jan 2020 22:39:00 +0800</pubDate><description><![CDATA[今天是2020年的大年初二。在全国肺炎的恐怖气息笼罩下，大家都被困在家里。昨天接到学校那边的通知，不准提前去学校，我看着之前取出来的大年初六的票非常无奈。在寒冷的南方，每天被冻得伸不开手，和实验室的远程连接也断了，让我没法进行之前的实验。这一切让我觉得自己像个废物。

 我知道自己现在在一个比较焦虑的阶段。ECCV大概率是赶不上了，还有40天， 我连baseline都还没搞定，又赶上现在这个...]]></description><category></category></item><item><title><![CDATA[Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Single Image]]></title><link>https://blog.youkuaiyun.com/steph_curry/article/details/99344662</link><guid>https://blog.youkuaiyun.com/steph_curry/article/details/99344662</guid><author>steph_curry</author><pubDate>Mon, 12 Aug 2019 22:05:14 +0800</pubDate><description><![CDATA[ECCV16



输入单张图， 先用2d pose estimator估计出2d keypoints， 再估计出SMPL的参数和， 从而得到mesh。

训练时，得到的mesh重投影回2d平面， 最小化投影关节点与对应的2d estimator估计的坐标之差。此外加了一些先验约束：




...]]></description><category></category></item></channel></rss>