<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dawuga的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dawuga</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dawuga]]></copyright><item><title><![CDATA[(SIGGRAPH 2025) DeFillet：CAD网格中圆角区域的检测与去除]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/150223181</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/150223181</guid><author>dawuga</author><pubDate>Tue, 12 Aug 2025 01:44:00 +0800</pubDate><description><![CDATA[CAD网格上圆角区域的检测与去除，发表于ACM Transactions on Graphics (SIGGRAPH 2025)]]></description><category></category></item><item><title><![CDATA[EPnP算法学习笔记]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/118293426</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/118293426</guid><author>dawuga</author><pubDate>Mon, 28 Jun 2021 20:49:20 +0800</pubDate><description><![CDATA[1.Overview
1.1 算法输入：
2D-3D关联点对，具体数据结构形式如下所示：
pair&lt;p2d,p3d&gt; pair&lt;p2d, p3d&gt;pair&lt;p2d,p3d&gt;
1.2 算法输出：
旋转矩阵R（3x3），平移向量T(3x1)，旋转矩阵R表示当前坐标系与目标坐标系之间的旋转，平移向量T表示当前坐标系与目标坐标系之间的平移。在下文中称当前坐标系为世界坐标系，称坐标系为相机坐标系。
2. 符号说明


n个3D点在世界坐标系中的坐标，其坐标形式为非齐次坐标
piw=]]></description><category></category></item><item><title><![CDATA[操作系统-连续分配管理方式]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104403067</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104403067</guid><author>dawuga</author><pubDate>Thu, 20 Feb 2020 00:28:19 +0800</pubDate><description><![CDATA[连续分配方式是指为一个用户程序分配一个连续的内存空间。
1、单一连续分配
内存在此方式下分为系统区和用户区，系统区仅在操作系统使用，通常在低地址部分；用户区是为用户提供的、出系统区之外的内存空间。这种方式无需进行内存保护。因为内存中永远只有一道程序，因此肯定不会越界和干酪其他程序。

优点：简单、无外部碎片，可以采用覆盖技术，不需要额外的技术支持。
缺点：只能用于单用户、单任务的操作系统中，有内部...]]></description><category></category></item><item><title><![CDATA[操作系统-覆盖与交换]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104401510</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104401510</guid><author>dawuga</author><pubDate>Wed, 19 Feb 2020 22:08:12 +0800</pubDate><description><![CDATA[覆盖与交换技术是在多道程序环境下用来扩充内存的两种方法。
1、覆盖
覆盖的基本思想：由于程序运行时并非任何时候都要访问程序及数据的各个部分（尤其是大程序），因此可把用户空间分成固定区和若干覆盖区。将经常活跃的部分放在固定区，其余部分按照调用关系分段。首先将这些即将访问的段放入覆盖区，其他段放在外存中，在需要调用前，系统再将其调入覆盖区，替换覆盖区中的原有的段。
覆盖技术的特点：打破了必须将一个进程...]]></description><category></category></item><item><title><![CDATA[操作系统-程序的装入和链接]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104400171</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104400171</guid><author>dawuga</author><pubDate>Wed, 19 Feb 2020 21:41:19 +0800</pubDate><description><![CDATA[创建进程首先要将程序和数据装入内存。将用户源程序变为可在内存中执行的程序，通常需要以下几个步骤：
1、编译
由编译程序将用户源代码编译成若干目标模块。
2、链接
由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起，形成一个完整的装入模块。
程序的链接方式有以下三种方式：

静态链接：在程序运行之前，先将各目标模块及他们所需的库函数链接成一个完整的可执行程序，以后不在拆开。
装入时动态链接...]]></description><category></category></item><item><title><![CDATA[操作系统-银行家算法]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104215674</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104215674</guid><author>dawuga</author><pubDate>Fri, 07 Feb 2020 22:16:30 +0800</pubDate><description><![CDATA[银行家算法是最著名的死锁避免算法，其思想是：把操作系统视为银行家，操作系统管理的资源相当于银行家管理的资金，进程向操作系统请求分配资源相当于用户向银行家贷款。
数据结构描述
（1）可利用资源向量 Available
含有m个元素的数组，其中每个元素一类可用的资源数目。比如Available[j] = k，表示系统中现有可用的j类资源有k个。
（2）最大需求矩阵Max
n*m矩阵，定义系统中n个进程...]]></description><category></category></item><item><title><![CDATA[操作系统-死锁]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104193952</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104193952</guid><author>dawuga</author><pubDate>Fri, 07 Feb 2020 00:28:43 +0800</pubDate><description><![CDATA[1、死锁的定义
在多道程序系统中，由于多个进程的并发执行，改善了系统资源的利用率，并提高了了系统的处理能力。然而，多进程的并发执行也带来了新的问题——死锁。所谓死锁，是指多个进程竞争资源而造成的一种僵局（互相等待），若无外力，这些进程都无法向前推进。具体例子可以参照哲学家进餐问题。
2、死锁产生的原因
（1）系统资源的竞争
通常系统中拥有的不可剥夺资源，其数量不足以满足多个进程运行的要求，使得进程...]]></description><category></category></item><item><title><![CDATA[操作系统-经典同步问题]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104179789</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104179789</guid><author>dawuga</author><pubDate>Wed, 05 Feb 2020 22:20:04 +0800</pubDate><description><![CDATA[1、生产者-消费者问题
1.1 问题描述
一组生产者进程和一组消费者进程共享一个初始为空、大小为n的缓冲区，只有缓冲区没满时，生产者才能把消息放进缓冲区，否则必须等待；只有缓冲区不空时，消费者才能从中取出消息，否则必须等待。由于缓冲区是临界资源，它只允许一个生产者放入消息，或一个消费者从中取出消息。
1.2 问题分析
（1）关系分析
生产者和消费者对缓冲区的访问是互斥关系，生产者和消费者又是一个相...]]></description><category></category></item><item><title><![CDATA[操作系统-信号量]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104172455</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104172455</guid><author>dawuga</author><pubDate>Tue, 04 Feb 2020 21:26:15 +0800</pubDate><description><![CDATA[信号量
信号量机制是一种功能较强的机制，可用于解决互斥和同步的问题，它只能被两个标准的原语wait(S)和signal(S)访问，也可以记为“P操作”和“V操作”。
原语：指完成某种功能且不被分割，不被中断执行的操作序列，通常可由硬件来实现。例如TestAndSet和Swap指令就是ongoing硬件实现的原子操作。原语功能的不被中断执行特性在单处理机上可由屏蔽中断方法来实现。
1、整型信息量
整...]]></description><category></category></item><item><title><![CDATA[操作系统-实现临界区互斥的基本办法]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104162784</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104162784</guid><author>dawuga</author><pubDate>Tue, 04 Feb 2020 17:17:08 +0800</pubDate><description><![CDATA[1、软件实现方法
算法一：单标志法（违背空闲让进）
设两个进程P0和P1，以及一个标志量（turn）。
turn的初始化
turn = 0;

规定turn = 0 时，允许P0访问临界区；turn = 1 时，允许P1访问临界区
P0进程
//p0进程        
while(turn != 0);//进入区                  
临界区代码段     //临界区
turn =...]]></description><category></category></item><item><title><![CDATA[操作系统-进程控制原语]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104145137</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104145137</guid><author>dawuga</author><pubDate>Sun, 02 Feb 2020 15:34:26 +0800</pubDate><description><![CDATA[为了实现进程控制，在操作系统内核中，有一组程序专门用于完成对进程的控制，这些原语至少需要包括创建新进程原语，阻塞进程原语，唤醒进程原语，终止进程原语，系统服务对用户开放，即用户可以通过相应的接口来使用它们。
1、进程创建原语
从PCB集合中申请一个空白的PCB，将调用者参数（如进程外部标识符，初始CPU状态，进程优先数，初始内存及申请资源清单）添入该PCB，设置记账数据。置新进程为“就绪”态。
2...]]></description><category></category></item><item><title><![CDATA[操作系统-什么是多线程？多线程与多任务有什么区别？]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104144785</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104144785</guid><author>dawuga</author><pubDate>Sun, 02 Feb 2020 14:49:19 +0800</pubDate><description><![CDATA[多线程是指：在一个程序中可以定义多个线程并同时运行它们，每个线程可以执行不同的任务。
多线程和多任务的区别：多任务是针对操作系统而言的，代表操作系统可以同时执行的程序个数；多线程是针对一个程序而言的，代表一个程序可以同时执行的线程的个数，每个线程完成不同的任务。

...]]></description><category></category></item><item><title><![CDATA[操作系统-为什么进程之间的通信必须借助操作系统内核功能？]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104144322</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104144322</guid><author>dawuga</author><pubDate>Sun, 02 Feb 2020 14:40:46 +0800</pubDate><description><![CDATA[原因
每个进程有自己独立地地址空间。在操作系统和硬件的地址保护机制下，进程无法访问其他进程的地址空间，所以必须借助于操作系统的系统调用函数实现进程之间的通信。
进程通信的主要方式
（1）共享内存区。通过系统调用创建共享内存区。多个进程可以（通过系统调用）连接同一个共享内存区，通过访问共享内存区实现进程之间的数据交换。使用共享内存区时需要利用信息量解决同步互斥问题。
（2）消息传递。通过发送/接收消...]]></description><category></category></item><item><title><![CDATA[操作系统-父进程创建子进程和主程序调用子程序有何不同？]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104143927</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104143927</guid><author>dawuga</author><pubDate>Sun, 02 Feb 2020 14:00:19 +0800</pubDate><description><![CDATA[父进程创建子进程后，父进程与子进程同时执行（并发）。
主程序调用子程序后，主程序暂停在调用点，子程序开始执行，直到子程序返回，主程序开始执行。
我们可以这么理解：父进程运行的程序，创建了子进程，此时父进程和进程并发执行，是两个进程；主程序调用子程序后，主程序暂停，子程序开始执行，它们还是一个进程。

...]]></description><category></category></item><item><title><![CDATA[操作系统-进程和程序之间的关系（一对一，一对多，多对一，多对多）]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104142212</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104142212</guid><author>dawuga</author><pubDate>Sun, 02 Feb 2020 11:23:03 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;进程和程序之间可以形成一对一，一对多，多对一，多对多的关系，分别举例说明在什么情况下会形成这样的关系？
进程的定义
从不同的角度进程可以有不同的定义，比较典型的定义有：
（1）进程是程序的一次执行过程。
（2）进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
（3）进程是具有独立功能的程序在一个...]]></description><category></category></item><item><title><![CDATA[操作系统-进程甘特图画法]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/104128044</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/104128044</guid><author>dawuga</author><pubDate>Sat, 01 Feb 2020 00:43:03 +0800</pubDate><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们在操作系统中常常会碰到CPU和输入输出等设备调度的题目，需要画出甘特图才能比较直观地看出每个进程不同进程之间的时序关系。这里分享一下甘特图的作图技巧，这种题目分两种，分别是可抢占优先权调度和不可抢占优先权调度。
可抢占优先权调度
这种情况非常简单，我们只需要从优先级最高的进程开始画，然后画优先级次高...]]></description><category></category></item><item><title><![CDATA[概率论有关定理总结（持续更新）]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/90712654</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/90712654</guid><author>dawuga</author><pubDate>Fri, 31 May 2019 11:03:20 +0800</pubDate><description><![CDATA[1、加法公式
前提：如果a, b事件互斥，即P(ab) = 0, 则
P(a+b)=P(a)+P(b)
    P(a + b) = P(a) + P(b)
P(a+b)=P(a)+P(b)
2、条件概率公式
前提:无前提，任意两个事件a，b
P(b∣a)=P(ab)P(a)
    P(b|a) = \frac{P(ab)}{P(a)} 
P(b∣a)=P(a)P(ab)​
3、乘法公式
前提：...]]></description><category></category></item><item><title><![CDATA[2019腾讯春招常规批笔试编程题反思]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/89067329</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/89067329</guid><author>dawuga</author><pubDate>Sun, 07 Apr 2019 11:50:07 +0800</pubDate><description><![CDATA[本周打了腾讯笔试，本来以为笔试的题目应该不难，以为有ACM基础手撕编程题应该很轻松，但是事实证明自己还是太菜了。
题目
暂时还做不了，但是有两张图片


显然一拿到手，肯定要暴力打表，找规律。然后一顿啪啪啪，就有下面这段打表代码，想着笔试数据都很水，腾讯提前批笔试的时候，最后一题O(n *n!)复杂度都能过，大力出奇迹啊，一交……通过50%。
#include&lt;bits/stdc++.h&g...]]></description><category></category></item><item><title><![CDATA[二分图知识点总结]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/83794570</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/83794570</guid><author>dawuga</author><pubDate>Tue, 06 Nov 2018 21:21:07 +0800</pubDate><description><![CDATA[二分图知识点
1.最小点覆盖


1.1 定义：最小点覆盖是一个点集，用最少的点和所有边关联


公式： 最小点覆盖数 = 最大匹配数


证明：下图非常关键

1.我们可以这么构造一组最小点覆盖的点集。 从二分图的右部的每个未匹配点出发，找一条满足未匹配边-匹配边-未匹配边-匹配边……-未匹配边-匹配边的交叉路，并标记路径上的点。完成之后，左部上标记的点和右部上未标记的点共同组成了一个最小点覆盖...]]></description><category></category></item><item><title><![CDATA[HDU1150（二分图最小点覆盖证明）]]></title><link>https://blog.youkuaiyun.com/dawuga/article/details/83650111</link><guid>https://blog.youkuaiyun.com/dawuga/article/details/83650111</guid><author>dawuga</author><pubDate>Fri, 02 Nov 2018 09:01:22 +0800</pubDate><description><![CDATA[题目链接：HDU1150
题目意思：
有A，B两种机器，A机器上有n种模具，B机器上有m种模具，有k个任务，每个任务可以在既可以在A机器上的x模具上生产，也可以在B机器上的y模具上生产。A，B机器都可以切换模具，开始的A，B都为0模具，问最少切换多少次模具。可以完成所有的任务。
题目思路：
如果我们把A机器的n个模具作为二分图的左部，B机器的m个模具作为二分图的右部，然后把每个任务当成一条连接左部...]]></description><category></category></item></channel></rss>