博客园 - Milo Yip
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=19656
2016-08-28T14:05:13Z
Milo Yip
https://www.cnblogs.com/miloyip/
feed.cnblogs.com
https://www.cnblogs.com/miloyip/p/rapidjson_v1_1_0.html
RapidJSON v1.1.0 发布简介 - Milo Yip
时隔 15.6 个月,终于发布了一个新版本 v1.1.0。
新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能。本文尝试从使用者的角度,简单介绍一下这些功能和沿由。
2016-08-28T02:26:00Z
2016-08-28T02:26:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】时隔 15.6 个月,终于发布了一个新版本 v1.1.0。
新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能。本文尝试从使用者的角度,简单介绍一下这些功能和沿由。 <a href="https://www.cnblogs.com/miloyip/p/rapidjson_v1_1_0.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/p/4610111.html
RapidJSON 代码剖析(四):优化 Grisu - Milo Yip
我曾经在知乎的一个[答案](http://www.zhihu.com/question/22498967/answer/29472607)里谈及到 V8 引擎里实现了 Grisu 算法,我先引用该文的内容简单介绍 Grisu。然后,再谈及 RapidJSON 对它做了的几个底层优化。
2015-06-30T05:03:00Z
2015-06-30T05:03:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】我曾经在知乎的一个[答案](http://www.zhihu.com/question/22498967/answer/29472607)里谈及到 V8 引擎里实现了 Grisu 算法,我先引用该文的内容简单介绍 Grisu。然后,再谈及 RapidJSON 对它做了的几个底层优化。 <a href="https://www.cnblogs.com/miloyip/p/4610111.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/p/4549772.html
RapidJSON 代码剖析(三):Unicode 的编码与解码 - Milo Yip
RapidJSON 希望尽量支持各种常用 UTF 编码,用[四百多行代码][encodings.h]实现了 5 种 Unicode 编码器/解码器,另外加上 ASCII 编码。本文会简单介绍它的实现方式。
2015-06-03T09:34:00Z
2015-06-03T09:34:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】RapidJSON 希望尽量支持各种常用 UTF 编码,用[四百多行代码][encodings.h]实现了 5 种 Unicode 编码器/解码器,另外加上 ASCII 编码。本文会简单介绍它的实现方式。 <a href="https://www.cnblogs.com/miloyip/p/4549772.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/p/4517053.html
RapidJSON 代码剖析(二):使用 SSE4.2 优化字符串扫描 - Milo Yip
现在的 CPU 都提供了[单指令流多数据流][单指令流多数据流](single instruction multiple data, SIMD)指令集。最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面。
其中,SSE4.2 包含了一些专为字符串而设的指令。我们通过使用这些指令,可以大幅提升某些 JSON 解析的性能。
2015-05-20T06:27:00Z
2015-05-20T06:27:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】现在的 CPU 都提供了[单指令流多数据流][单指令流多数据流](single instruction multiple data, SIMD)指令集。最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面。
其中,SSE4.2 包含了一些专为字符串而设的指令。我们通过使用这些指令,可以大幅提升某些 JSON 解析的性能。 <a href="https://www.cnblogs.com/miloyip/p/4517053.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/p/4501153.html
RapidJSON 代码剖析(一):混合任意类型的堆栈 - Milo Yip
大家好,这个专栏会分析 RapidJSON 中一些有趣的 C++ 代码,希望对读者有所裨益。
2015-05-14T01:53:00Z
2015-05-14T01:53:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】大家好,这个专栏会分析 RapidJSON 中一些有趣的 C++ 代码,希望对读者有所裨益。 <a href="https://www.cnblogs.com/miloyip/p/4501153.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/p/GameEngineArchitectureIndex.html
《游戏引擎架构》中英词汇索引表 - Milo Yip
简介此词汇索引表源自《游戏引擎架构》的中英索引,支持搜寻及排序,以方便读者查阅。遇到游戏相关的术语也可利用本表查找其中英翻译。欢迎提供意见反馈。中英双语索引表英文中文页数2D angular acceleration二维角加速率5802D angular dynamics二维旋转动力学5802D angular speed二维角速率5802D angular velocity二维角速度5802D orientation二维定向5803D angular dynamics三维旋转动力学5833D angular momentum三维角动量5843D angular velocity三维角速度58
2014-02-23T09:26:00Z
2014-02-23T09:26:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】简介此词汇索引表源自《游戏引擎架构》的中英索引,支持搜寻及排序,以方便读者查阅。遇到游戏相关的术语也可利用本表查找其中英翻译。欢迎提供意见反馈。中英双语索引表英文中文页数2D angular acceleration二维角加速率5802D angular dynamics二维旋转动力学5802D angular speed二维角速率5802D angular velocity二维角速度5802D orientation二维定向5803D angular dynamics三维旋转动力学5833D angular momentum三维角动量5843D angular velocity三维角速度58 <a href="https://www.cnblogs.com/miloyip/p/GameEngineArchitectureIndex.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html
《游戏引擎架构》信息总汇 - Milo Yip
豆瓣当当亚马逊China-pub京东中国图书网淘宝PDF样章试读微盘下载微云下载中英词汇索引表本页内容基本信息作者:Jason Gregory (杰森.格雷戈瑞)译者:Milo Yip(叶劲峰)原书名:Game Engine Architecture出版社:电子工业出版社出版时间:2014-1-1开本:16页数:800字数:1093400ISBN:9787121222887内容简介《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎
2014-02-18T02:23:00Z
2014-02-18T02:23:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】豆瓣当当亚马逊China-pub京东中国图书网淘宝PDF样章试读微盘下载微云下载中英词汇索引表本页内容基本信息作者:Jason Gregory (杰森.格雷戈瑞)译者:Milo Yip(叶劲峰)原书名:Game Engine Architecture出版社:电子工业出版社出版时间:2014-1-1开本:16页数:800字数:1093400ISBN:9787121222887内容简介《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎 <a href="https://www.cnblogs.com/miloyip/p/GameEngineArchitecture.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2013/04/19/3029852.html
面试题:检测点是否在扇形之内 - Milo Yip
前几天,同事在报告中提及检测角色是否在扇形攻击范围的方法。我觉得该方法的性能不是太好,提出另一个颇为直接的方法。此问题在游戏中十分常见,只涉及简单的数学,却又可以看出实现者是否细心,所以我觉得可当作一道简单的面试题。问题在微博发表后得到不少回应,故撰文提供一些解答。问题定义:在二维中,检测点\mathbf{p}是否在扇形(circular sector)内,设扇形的顶点为\mathbf{c},半径为r,从\mathbf{\hat{u}}方向两边展开\theta角度。当中 \mathbf{p},\mathbf{c},\mathbf{\hat{u}} 以直角坐标(cartesian coordin
2013-04-19T02:22:00Z
2013-04-19T02:22:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】前几天,同事在报告中提及检测角色是否在扇形攻击范围的方法。我觉得该方法的性能不是太好,提出另一个颇为直接的方法。此问题在游戏中十分常见,只涉及简单的数学,却又可以看出实现者是否细心,所以我觉得可当作一道简单的面试题。问题在微博发表后得到不少回应,故撰文提供一些解答。问题定义:在二维中,检测点\mathbf{p}是否在扇形(circular sector)内,设扇形的顶点为\mathbf{c},半径为r,从\mathbf{\hat{u}}方向两边展开\theta角度。当中 \mathbf{p},\mathbf{c},\mathbf{\hat{u}} 以直角坐标(cartesian coordin <a href="https://www.cnblogs.com/miloyip/archive/2013/04/19/3029852.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2011/06/14/alice_madness_returns_hair.html
爱丽丝的发丝──《爱丽丝惊魂记:疯狂再临》制作点滴 - Milo Yip
今天(2011年6月14日)是《爱丽丝惊魂记:疯狂再临 (Alice: Madness Returns) Xbox360/PlayStation3/PC》(下简称《爱》)正式发售日,身为其开发程序员之一,特撰此文以作纪念。简介《爱》(图1a)是一款由上海独立游戏工作室麻辣马(Spicy Horse)...
2011-06-14T08:27:00Z
2011-06-14T08:27:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】今天(2011年6月14日)是《爱丽丝惊魂记:疯狂再临 (Alice: Madness Returns) Xbox360/PlayStation3/PC》(下简称《爱》)正式发售日,身为其开发程序员之一,特撰此文以作纪念。简介《爱》(图1a)是一款由上海独立游戏工作室麻辣马(Spicy Horse)... <a href="https://www.cnblogs.com/miloyip/archive/2011/06/14/alice_madness_returns_hair.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html
C++强大背后 - Milo Yip
在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP)...
2010-09-16T16:56:00Z
2010-09-16T16:56:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP)... <a href="https://www.cnblogs.com/miloyip/archive/2010/09/17/behind_cplusplus.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/09/03/idalloc_solution.html
手机分配短讯id的面试题目(分析解答篇) - Milo Yip
看过上回《厘清需求篇》,读者想到多少个解呢?本篇首先谈及一些基本分析,之后会按两种API设计(纯函数API和含状态的API),分别描述多个解。虽然面试时或许不能进行实际测试,但本文还是给出PC上的效能测试结果。最后分析比较各解之优劣作为总结。 问题分析原来的问题是要从一个无序ids数组里分配一个id。我们可以用数学方式去更清楚地说明这个问题。设m = 256 为所有id的个数,集合U = \lef...
2010-09-02T17:37:00Z
2010-09-02T17:37:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】看过上回《厘清需求篇》,读者想到多少个解呢?本篇首先谈及一些基本分析,之后会按两种API设计(纯函数API和含状态的API),分别描述多个解。虽然面试时或许不能进行实际测试,但本文还是给出PC上的效能测试结果。最后分析比较各解之优劣作为总结。 问题分析原来的问题是要从一个无序ids数组里分配一个id。我们可以用数学方式去更清楚地说明这个问题。设m = 256 为所有id的个数,集合U = \lef... <a href="https://www.cnblogs.com/miloyip/archive/2010/09/03/idalloc_solution.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/08/31/idalloc_clarify.html
手机分配短讯id的面试题目(厘清需求篇) - Milo Yip
前阵子,笔者在TopLanguage论坛里参与讨论了一个不错的面试题目,在此和大家分享,也当作个人的讨论总结。本文列出该问题,并模拟应试者向面试官的对话,以厘清问题需求。题目原文事缘Dbger发起的帖子中,liuxinyu举了一个面试题目,原文如下:有个老的手机短信程序,由于当时的手机CPU,内存都很烂。所以这个短信程序只能记住256条短信,多了就删了。 每个短信有个唯一的ID,在0到255之间。...
2010-08-30T17:42:00Z
2010-08-30T17:42:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】前阵子,笔者在TopLanguage论坛里参与讨论了一个不错的面试题目,在此和大家分享,也当作个人的讨论总结。本文列出该问题,并模拟应试者向面试官的对话,以厘清问题需求。题目原文事缘Dbger发起的帖子中,liuxinyu举了一个面试题目,原文如下:有个老的手机短信程序,由于当时的手机CPU,内存都很烂。所以这个短信程序只能记住256条短信,多了就删了。 每个短信有个唯一的ID,在0到255之间。... <a href="https://www.cnblogs.com/miloyip/archive/2010/08/31/idalloc_clarify.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html
C++/C#/F#/Java/JS/Lua/Python/Ruby渲染比试 - Milo Yip
前篇博文把一个C++全局光照渲染器移植至C#,比较C++和C#之性能。……本人陆续移植了C++代码至Java、JavaScript、Lua、Python和Ruby,赵姐夫亦尝试了F#。本文提供源代码、测试结果、简单分析、以及个人体会。
2010-07-06T16:20:00Z
2010-07-06T16:20:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】前篇博文把一个C++全局光照渲染器移植至C#,比较C++和C#之性能。……本人陆续移植了C++代码至Java、JavaScript、Lua、Python和Ruby,赵姐夫亦尝试了F#。本文提供源代码、测试结果、简单分析、以及个人体会。 <a href="https://www.cnblogs.com/miloyip/archive/2010/07/07/languages_brawl_GI.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/06/23/cpp_vs_cs_GI.html
C# vs C++ 全局照明渲染性能比试 - Milo Yip
最近有多篇讨论程序语言趋势的博文,其中谈及到C#的性能问题。本人之前未做过相关测试,自己的回覆流于理论猜测,所以花了点时间做个简单实验,比较C#和C++的性能。
2010-06-23T01:48:00Z
2010-06-23T01:48:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】最近有多篇讨论程序语言趋势的博文,其中谈及到C#的性能问题。本人之前未做过相关测试,自己的回覆流于理论猜测,所以花了点时间做个简单实验,比较C#和C++的性能。 <a href="https://www.cnblogs.com/miloyip/archive/2010/06/23/cpp_vs_cs_GI.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/06/14/Kinematics_ParticleSystem.html
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统 - Milo Yip
系列简介也许,三百年前的艾萨克·牛顿爵士(Sir Issac Newton, 1643-1727)并没幻想过,物理学广泛地应用在今天许多游戏、动画中。为什么在这些应用中要使用物理学?笔者认为,自我们出生以来,一直感受着物理世界的规律,意识到物体在这世界是如何"正常移动",例如射球时球为抛物线(自旋的球可能会做成弧线球) 、石子系在一根线的末端会以固定频率摆动等等。要让游戏或动画中的物体有真实感,其...
2010-06-14T08:19:00Z
2010-06-14T08:19:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】系列简介也许,三百年前的艾萨克·牛顿爵士(Sir Issac Newton, 1643-1727)并没幻想过,物理学广泛地应用在今天许多游戏、动画中。为什么在这些应用中要使用物理学?笔者认为,自我们出生以来,一直感受着物理世界的规律,意识到物体在这世界是如何"正常移动",例如射球时球为抛物线(自旋的球可能会做成弧线球) 、石子系在一根线的末端会以固定频率摆动等等。要让游戏或动画中的物体有真实感,其... <a href="https://www.cnblogs.com/miloyip/archive/2010/06/14/Kinematics_ParticleSystem.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/05/27/reply_discrete.html
回应CSDN肖舸《做程序,要“专注”和“客观”》,实验比较各离散采样算法 - Milo Yip
自从肖舸在其CSDN博客上说“拒绝回答博客园等网站网友的问题”,实质上不单是拒绝回答,而且还删去包括一些网友及本人对于纯粹技术探讨的评论。当然每位博主都有自由这么做,但个人认为这对于社区的交流发展有负面影响。为了探讨这个技术问题,本人唯有把回应发表于博客园内。本文会阐述之前的论点,评论肖舸的实现,并进行了兩个实验比较不同算法、实现的优劣之处。 之前的“交流&rd...
2010-05-27T15:57:00Z
2010-05-27T15:57:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】自从肖舸在其CSDN博客上说“拒绝回答博客园等网站网友的问题”,实质上不单是拒绝回答,而且还删去包括一些网友及本人对于纯粹技术探讨的评论。当然每位博主都有自由这么做,但个人认为这对于社区的交流发展有负面影响。为了探讨这个技术问题,本人唯有把回应发表于博客园内。本文会阐述之前的论点,评论肖舸的实现,并进行了兩个实验比较不同算法、实现的优劣之处。 之前的“交流&rd... <a href="https://www.cnblogs.com/miloyip/archive/2010/05/27/reply_discrete.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/05/12/binary_tree_traversal.html
《编程之美:分层遍历二叉树》的另外两个实现 - Milo Yip
之前重温本书写书评时,也尝试找寻更好的编程解法。今天把另一个问题的实现和大家分享。问题定义给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。下面是一个例子: 输出:节点的定义:书上的解法书上举出两个解法。第一个解法是用递归方式,搜寻并打印某一层的节点,再打印下一层的节点。这方法简单但时间效率不高(但不需要...
2010-05-11T16:10:00Z
2010-05-11T16:10:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】之前重温本书写书评时,也尝试找寻更好的编程解法。今天把另一个问题的实现和大家分享。问题定义给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一层将单独输出一行),每一层要求访问的顺序为从左到右,并将节点依次编号。下面是一个例子: 输出:节点的定义:书上的解法书上举出两个解法。第一个解法是用递归方式,搜寻并打印某一层的节点,再打印下一层的节点。这方法简单但时间效率不高(但不需要... <a href="https://www.cnblogs.com/miloyip/archive/2010/05/12/binary_tree_traversal.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/04/26/1720877.html
在博客里轻松使用LaTeX数学公式 - Milo Yip
笔者最近的博文有不少数学相关内容,发现利用一些网上服务、jQuery和CSS,可以更轻松地在博客里使用\LaTeX语法排版方程式。\LaTeX是基于\TeX的排版系统。而\TeX就是美国著明计算机教授高德纳(Donald E. Knuth),为了编写他的巨著《计算机程序设计艺术(The Art of Computer Programming)》而设计的系统,对于数学公式的排版支援十分强大。线上La...
2010-04-25T17:32:00Z
2010-04-25T17:32:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】笔者最近的博文有不少数学相关内容,发现利用一些网上服务、jQuery和CSS,可以更轻松地在博客里使用\LaTeX语法排版方程式。\LaTeX是基于\TeX的排版系统。而\TeX就是美国著明计算机教授高德纳(Donald E. Knuth),为了编写他的巨著《计算机程序设计艺术(The Art of Computer Programming)》而设计的系统,对于数学公式的排版支援十分强大。线上La... <a href="https://www.cnblogs.com/miloyip/archive/2010/04/26/1720877.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/04/21/1717109.html
用JavaScript玩转游戏编程(一)掉宝类型概率 - Milo Yip
问题定义游戏(和一些模拟程序)经常需要使用随机数,去应付不同的游戏(或商业)逻辑。本文分析一个常见问题:有N类物件,设第i类物件的出现概率为P(X=i),如何产生这样的随机变量X?例如对概率的要求是P(X=0)=0.12P(X=1)=0.4P(X=2)=0.4P(X=3)=0.07P(X=4)=0.01输入数组<0.12, 0.4, 0.4, 0.07, 0.01>输出符合以上概率的随...
2010-04-21T06:50:00Z
2010-04-21T06:50:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】问题定义游戏(和一些模拟程序)经常需要使用随机数,去应付不同的游戏(或商业)逻辑。本文分析一个常见问题:有N类物件,设第i类物件的出现概率为P(X=i),如何产生这样的随机变量X?例如对概率的要求是P(X=0)=0.12P(X=1)=0.4P(X=2)=0.4P(X=3)=0.07P(X=4)=0.01输入数组<0.12, 0.4, 0.4, 0.07, 0.01>输出符合以上概率的随... <a href="https://www.cnblogs.com/miloyip/archive/2010/04/21/1717109.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/miloyip/archive/2010/04/13/1711002.html
从头开始思考游戏的数据管理系统(二) - Milo Yip
上回谈及一些游戏数据管理的初部分析,但有些思绪还没有整理好,写得颇乱。今次就直接谈笔者在几个月前设计的Mil Universe Database(MUD),从中再阐述当中的一些想法。 基本的数据流程首先,一个项目中,引擎会使用的所有数据,都放进一个完整的数据库里。现时笔者的设计一个数据库会储存成一个.mud文件。 外部文件可以汇入数据库,也可以汇出。但汇出的数据会失去一些资讯(如稍后说的依存关系)...
2010-04-13T05:10:00Z
2010-04-13T05:10:00Z
Milo Yip
https://www.cnblogs.com/miloyip/
【摘要】上回谈及一些游戏数据管理的初部分析,但有些思绪还没有整理好,写得颇乱。今次就直接谈笔者在几个月前设计的Mil Universe Database(MUD),从中再阐述当中的一些想法。 基本的数据流程首先,一个项目中,引擎会使用的所有数据,都放进一个完整的数据库里。现时笔者的设计一个数据库会储存成一个.mud文件。 外部文件可以汇入数据库,也可以汇出。但汇出的数据会失去一些资讯(如稍后说的依存关系)... <a href="https://www.cnblogs.com/miloyip/archive/2010/04/13/1711002.html" target="_blank">阅读全文</a>