Bezier曲线曲面--拟合技术

2024-06-22 11:20

本文主要是介绍Bezier曲线曲面--拟合技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Bezier曲线曲面–拟合应用

1.Bezier曲线

1.1.Bezier曲线的定义

给定一组控制点 P_0, P_1, …, P_n,其中 n 是曲线的阶数,Bezier曲线的参数方程可以表示为:
B ( t ) = ∑ i = 0 n P i b i , n ( t ) , t ∈ [ 0 , 1 ] B(t) = \sum_{i=0}^{n} P_i b_{i,n}(t), \quad t \in [0, 1] B(t)=i=0nPibi,n(t),t[0,1]

其中, b i , n ( t ) 是 B e r n s t e i n 基函数,定义为: 其中,b_{i,n}(t) 是Bernstein基函数,定义为: 其中,bi,n(t)Bernstein基函数,定义为:

b i , n ( t ) = C ( n , i ) t i ( 1 − t ) n − i = n ! i ! ( n − i ) ! t i ( 1 − t ) n − i b_{i,n}(t) = C(n, i) t^i (1-t)^{n-i} = \frac{n!}{i!(n-i)!} t^i (1-t)^{n-i} bi,n(t)=C(n,i)ti(1t)ni=i!(ni)!n!ti(1t)ni

这里,C(n, i) 是组合数,表示从 n 个不同元素中选择 i 个的组合数。

常见的Bezier曲线

  • 二次Bezier曲线:由三个控制点定义,参数方程为:

B ( t ) = ( 1 − t ) 2 P 0 + 2 t ( 1 − t ) P 1 + t 2 P 2 , t ∈ [ 0 , 1 ] B(t) = (1-t)^2 P_0 + 2t(1-t) P_1 + t^2 P_2, \quad t \in [0, 1] B(t)=(1t)2P0+2t(1t)P1+t2P2,t[0,1]

  • 三次Bezier曲线:由四个控制点定义,是最常用的形式,参数方程为:

B ( t ) = ( 1 − t ) 3 P 0 + 3 t ( 1 − t ) 2 P 1 + 3 t 2 ( 1 − t ) P 2 + t 3 P 3 , t ∈ [ 0 , 1 ] B(t) = (1-t)^3 P_0 + 3t(1-t)^2 P_1 + 3t^2(1-t) P_2 + t^3 P_3, \quad t \in [0, 1] B(t)=(1t)3P0+3t(1t)2P1+3t2(1t)P2+t3P3,t[0,1]

1.2.Bernstein基函数性质

定义:给定一个参数( t ),其中( 0 <= t <= 1 ),以及一个正整数( n ),Bernstein基函数定义为:
B i , n ( t ) = ( n i ) t i ( 1 − t ) n − i for i = 0 , 1 , 2 , . . . , n B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i} \quad \text{for} \quad i = 0, 1, 2, ..., n Bi,n(t)=(in)ti(1t)nifori=0,1,2,...,n
其中:
( n i ) 是组合数,表示从 n 个元素中选择 i 个的组合数。 \binom{n}{i}是组合数,表示从n个元素中选择i个的组合数。 (in)是组合数,表示从n个元素中选择i个的组合数。
性质:

1.非负性:对于所有的( t )和( i ):
B i , n ( t ) ≥ 0 ; B_{i,n}(t) \geq 0; Bi,n(t)0;
2.归一化:Bernstein基函数的和为1,即:
∑ i = 0 n B i , n ( t ) = 1 \sum_{i=0}^n B_{i,n}(t) = 1 i=0nBi,n(t)=1
这一性质使得Bernstein基函数在多项式插值和曲线设计中非常有用,因为它们可以保证在参数空间中的归一化。3.端点性质:Bernstein基函数在端点( t = 0 )和( t = 1 )具有特殊的性质。具体来说:
B 0 , n ( 0 ) = 1 和 B n , n ( 1 ) = 1 ,所有其他 B i , n ( 0 ) 和 B i , n ( 1 ) 均为 0 。 B_{0,n}(0) = 1和B_{n,n}(1) = 1,所有其他B_{i,n}(0)和B_{i,n}(1)均为0。 B0,n(0)=1Bn,n(1)=1,所有其他Bi,n(0)Bi,n(1)均为0
4.对称性:Bernstein基函数具有对称性,即:
B i , n ( t ) = B n − i , n ( 1 − t ) ; 这意味着它们在参数空间中是对称的。 B_{i,n}(t) = B_{n-i,n}(1-t);这意味着它们在参数空间中是对称的。 Bi,n(t)=Bni,n(1t);这意味着它们在参数空间中是对称的。
5.递归性质:Bernstein基函数可以通过德卡斯特里奥算法(De Casteljau’s algorithm)递归地求解,这是一种计算Bézier曲线上的点的高效方法。

6.凸包性质:Bernstein多项式定义的曲线或曲面始终位于其控制点的凸包内,这保证了曲线或曲面的整体形状。

7.连续性和可微性:Bernstein基函数及其导数在( t )的整个定义域内都是连续的,这保证了它们定义的曲线或曲面具有良好的光滑性。

1.3.Bezier曲线的性质

1.参数化性质
Bezier曲线是参数化的,这意味着它的形状由一系列控制点和一个参数(t)决定,其中(t)在0到1之间变化。曲线的形状不依赖于坐标系的选择。

2.凸包性质
Bezier曲线始终位于其控制点的凸包内。这意味着曲线不会超出由控制点形成的凸多边形之外。这个性质有助于确保曲线的形状在预期的范围内。

3.仿射不变性
Bezier曲线的形状在仿射变换下不变。这意味着如果对曲线的控制点进行仿射变换(如平移、旋转、缩放),则曲线的形状不变,只需将变换应用于控制点即可。

4.端点插值
Bezier曲线的起点和终点分别与第一个和最后一个控制点重合。这意味着曲线的起点和终点是固定的,它们分别位于第一个和最后一个控制点上。

5.切线性质
在Bezier曲线的起点和终点处,曲线的切线分别与第一个和最后一个控制点形成的线段一致。这可以通过计算曲线在这些点的导数来证明。可以进一步证明,起点,终点处r阶导数只与r+1个相邻控制点有关。

6.控制点的权重
Bezier曲线的形状受到控制点的位置影响,控制点离曲线越远,其对曲线形状的影响越小。这种影响是通过Bernstein多项式来实现的,它是Bezier曲线表达式的一部分。

7.连续性
如果控制点被适当地选择,Bezier曲线可以具有很高的连续性,如(C0)(点连续)、(C1)(切线连续)和(C^2)(曲率连续)等。这使得Bezier曲线非常适合用于平滑的曲线和曲面设计。

1.4.Bezier曲线的几何作图法

下面详细介绍如何使用几何作图法来绘制二次和三次Bezier曲线。

二次Bezier曲线

二次Bezier曲线由三个控制点 ( P_0 ), ( P_1 ), ( P_2 ) 构成。曲线的定义如下:
B ( t ) = ( 1 − t ) 2 P 0 + 2 t ( 1 − t ) P 1 + t 2 P 2 , 0 ≤ t ≤ 1 B(t) = (1-t)^2 P_0 + 2t(1-t) P_1 + t^2 P_2, \quad 0 \leq t \leq 1 B(t)=(1t)2P0+2t(1t)P1+t2P2,0t1
几何作图法的步骤:

1.连接 ( P_0 ) 和 ( P_1 ) 以及 ( P_1 ) 和 ( P_2 )。

2.在 ( P_0 ) 到 ( P_1 ) 的连线上,取一点 ( Q_0 ),使得 :
P 0 Q 0 = t ⋅ P 0 P 1 ; P_0 Q_0 = t \cdot P_0 P_1; P0Q0=tP0P1;
3.在 ( P_1 ) 到 ( P_2 ) 的连线上,取一点 ( Q_1 ),使得:
P 1 Q 1 = t ⋅ P 1 P 2 ; P_1 Q_1 = t \cdot P_1 P_2; P1Q1=tP1P2;
4.连接 ( Q_0 ) 和 ( Q_1 ),并在其上取一点 ( B(t) ),使得 :
Q 0 B ( t ) = t ⋅ Q 0 Q 1 ; Q_0 B(t) = t \cdot Q_0 Q_1; Q0B(t)=tQ0Q1;
5.当 ( t ) 从 ( 0 ) 变化到 ( 1 ) 时,( B(t) ) 的轨迹即为二次Bezier曲线。

三次Bezier曲线

三次Bezier曲线由四个控制点 ( P_0 ), ( P_1 ), ( P_2 ), ( P_3 ) 构成。曲线的定义如下:
B ( t ) = ( 1 − t ) 3 P 0 + 3 t ( 1 − t ) 2 P 1 + 3 t 2 ( 1 − t ) P 2 + t 3 P 3 , 0 ≤ t ≤ 1 ; B(t) = (1-t)^3 P_0 + 3t(1-t)^2 P_1 + 3t^2(1-t) P_2 + t^3 P_3, \quad 0 \leq t \leq 1; B(t)=(1t)3P0+3t(1t)2P1+3t2(1t)P2+t3P3,0t1;
几何作图法的步骤:

1.连接 ( P_0 ) 和 ( P_1 ), ( P_1 ) 和 ( P_2 ), 以及 ( P_2 ) 和 ( P_3 )。

2.在 ( P_0 ) 到 ( P_1 ) 的连线上,取一点 ( Q_0 ),使得 :
P 0 Q 0 = t ⋅ P 0 P 1 ; P_0 Q_0 = t \cdot P_0 P_1; P0Q0=tP0P1;
3.在 ( P_1 ) 到 ( P_2 ) 的连线上,取一点 ( Q_1 ),使得:
P 1 Q 1 = t ⋅ P 1 P 2 ; P_1 Q_1 = t \cdot P_1 P_2; P1Q1=tP1P2;
4.在 ( P_2 ) 到 ( P_3 ) 的连线上,取一点 ( Q_2 ),使得:
P 2 Q 2 = t ⋅ P 2 P 3 ; P_2 Q_2 = t \cdot P_2 P_3; P2Q2=tP2P3;
5.连接 ( Q_0 ) 和 ( Q_1 ),并在其上取一点 ( R_0 ),使得:
Q 0 R 0 = t ⋅ Q 0 Q 1 ; Q_0 R_0 = t \cdot Q_0 Q_1; Q0R0=tQ0Q1;
6.连接 ( Q_1 ) 和 ( Q_2 ),并在其上取一点 ( R_1 ),使得 :
Q 1 R 1 = t ⋅ Q 1 Q 2 ; Q_1 R_1 = t \cdot Q_1 Q_2; Q1R1=tQ1Q2;
7.连接 ( R_0 ) 和 ( R_1 ),并在其上取一点 ( B(t) ),使得:
R 0 B ( t ) = t ⋅ R 0 R 1 ; R_0 B(t) = t \cdot R_0 R_1; R0B(t)=tR0R1;
8.当 ( t ) 从 ( 0 ) 变化到 ( 1 ) 时,( B(t) ) 的轨迹即为三次Bezier曲线。

2.Bezier曲面

Bezier曲面是计算机图形学中用于描述和渲染复杂曲面的一种数学模型。它是由法国工程师皮埃尔·贝塞尔(Pierre Bézier)在20世纪60年代为汽车设计而开发的。Bezier曲面可以通过控制点来定义,这些控制点可以直观地调整曲面的形状。

基本概念

Bezier曲面通常是通过将两个Bezier曲线组合而成的。一个二维的Bezier曲面可以通过以下方式定义:

  1. 控制点
    一组控制点(通常称为控制网格),这些点定义了曲面的形状。 对于一个 n × m 的 B e z i e r 曲面,有 ( n + 1 ) × ( m + 1 ) 个控制点。 一组控制点(通常称为控制网格),这些点定义了曲面的形状。\\ 对于一个n \times m的Bezier曲面,有(n+1) \times (m+1)个控制点。 一组控制点(通常称为控制网格),这些点定义了曲面的形状。对于一个n×mBezier曲面,有(n+1)×(m+1)个控制点。

  2. 基函数
    使用 B e r n s t e i n 多项式作为基函数,这些函数定义了每个控制点对曲面上特定点的影响。 使用Bernstein多项式作为基函数,这些函数定义了每个控制点对曲面上特定点的影响。 使用Bernstein多项式作为基函数,这些函数定义了每个控制点对曲面上特定点的影响。

  3. 参数化
    曲面通过两个参数 u 和 v 进行参数化,这两个参数在 0 到 1 之间变化。 曲面通过两个参数u和v进行参数化,这两个参数在0到1之间变化。 曲面通过两个参数uv进行参数化,这两个参数在01之间变化。

数学表示

一个二维的Bezier曲面可以通过以下公式表示:

S ( u , v ) = ∑ i = 0 n ∑ j = 0 m B i , n ( u ) B j , m ( v ) P i , j S(u, v) = \sum_{i=0}^n \sum_{j=0}^m B_{i, n}(u) B_{j, m}(v) P_{i, j} S(u,v)=i=0nj=0mBi,n(u)Bj,m(v)Pi,j

其中:

  • S ( u , v ) 是曲面上参数为 ( u , v ) 的点。 S(u, v) 是曲面上参数为(u, v)的点。 S(u,v)是曲面上参数为(u,v)的点。

  • B i , n ( u ) 和 B j , m ( v ) 是 B e r n s t e i n 基函数,定义为: B_{i, n}(u) 和 B_{j, m}(v) 是Bernstein基函数,定义为: Bi,n(u)Bj,m(v)Bernstein基函数,定义为:

    B i , n ( u ) = C ( n , i ) u i ( 1 − u ) n − i B_{i, n}(u) = C(n, i) u^i (1 - u)^{n-i} Bi,n(u)=C(n,i)ui(1u)ni
    B j , m ( v ) = C ( m , j ) v j ( 1 − v ) m − j B_{j, m}(v) = C(m, j) v^j (1 - v)^{m-j} Bj,m(v)=C(m,j)vj(1v)mj

  • P i , j 是控制点。 P_{i, j} 是控制点。 Pi,j是控制点。

  • C ( n , i ) 是组合数,定义为: C(n, i) 是组合数,定义为: C(n,i)是组合数,定义为:

    C ( n , i ) = n ! i ! ( n − i ) ! C(n, i) = \frac{n!}{i!(n-i)!} C(n,i)=i!(ni)!n!

展开示例

假定上述n为2,m为3,则S(u, v)展开式为:

计算Bernstein基函数

对于 B i , 2 ( u ) 和 B j , 3 ( v ) ,我们有: 对于 B_{i, 2}(u) 和 B_{j, 3}(v),我们有: 对于Bi,2(u)Bj,3(v),我们有:

  • 对于 i = 0 , 1 , 2 , B i , 2 ( u ) 的表达式为: 对于 i = 0, 1, 2,B_{i, 2}(u) 的表达式为: 对于i=0,1,2Bi,2(u)的表达式为:

    B 0 , 2 ( u ) = C ( 2 , 0 ) u 0 ( 1 − u ) 2 = ( 1 − u ) 2 B_{0, 2}(u) = C(2, 0) u^0 (1 - u)^2 = (1 - u)^2 B0,2(u)=C(2,0)u0(1u)2=(1u)2
    B 1 , 2 ( u ) = C ( 2 , 1 ) u 1 ( 1 − u ) 1 = 2 u ( 1 − u ) B_{1, 2}(u) = C(2, 1) u^1 (1 - u)^1 = 2u(1 - u) B1,2(u)=C(2,1)u1(1u)1=2u(1u)
    B 2 , 2 ( u ) = C ( 2 , 2 ) u 2 ( 1 − u ) 0 = u 2 B_{2, 2}(u) = C(2, 2) u^2 (1 - u)^0 = u^2 B2,2(u)=C(2,2)u2(1u)0=u2

  • 对于 j = 0 , 1 , 2 , 3 , B j , 3 ( v ) 的表达式为: 对于 j = 0, 1, 2, 3,B_{j, 3}(v) 的表达式为: 对于j=0,1,2,3Bj,3(v)的表达式为:

    B 0 , 3 ( v ) = C ( 3 , 0 ) v 0 ( 1 − v ) 3 = ( 1 − v ) 3 B_{0, 3}(v) = C(3, 0) v^0 (1 - v)^3 = (1 - v)^3 B0,3(v)=C(3,0)v0(1v)3=(1v)3
    B 1 , 3 ( v ) = C ( 3 , 1 ) v 1 ( 1 − v ) 2 = 3 v ( 1 − v ) 2 B_{1, 3}(v) = C(3, 1) v^1 (1 - v)^2 = 3v(1 - v)^2 B1,3(v)=C(3,1)v1(1v)2=3v(1v)2
    B 2 , 3 ( v ) = C ( 3 , 2 ) v 2 ( 1 − v ) 1 = 3 v 2 ( 1 − v ) B_{2, 3}(v) = C(3, 2) v^2 (1 - v)^1 = 3v^2(1 - v) B2,3(v)=C(3,2)v2(1v)1=3v2(1v)
    B 3 , 3 ( v ) = C ( 3 , 3 ) v 3 ( 1 − v ) 0 = v 3 B_{3, 3}(v) = C(3, 3) v^3 (1 - v)^0 = v^3 B3,3(v)=C(3,3)v3(1v)0=v3

展开公式

将Bernstein基函数代入原公式,展开并计算:

S ( u , v ) = ∑ i = 0 2 ∑ j = 0 3 B i , 2 ( u ) B j , 3 ( v ) P i , j S(u, v) = \sum_{i=0}^2 \sum_{j=0}^3 B_{i, 2}(u) B_{j, 3}(v) P_{i, j} S(u,v)=i=02j=03Bi,2(u)Bj,3(v)Pi,j

$$
= B_{0, 2}(u) B_{0, 3}(v) P_{0, 0} + B_{0, 2}(u) B_{1, 3}(v) P_{0, 1} + B_{0, 2}(u) B_{2, 3}(v) P_{0, 2} + B_{0, 2}(u) B_{3, 3}(v) P_{0, 3} \

  • B_{1, 2}(u) B_{0, 3}(v) P_{1, 0} + B_{1, 2}(u) B_{1, 3}(v) P_{1, 1} + B_{1, 2}(u) B_{2, 3}(v) P_{1, 2} + B_{1, 2}(u) B_{3, 3}(v) P_{1, 3} \
  • B_{2, 2}(u) B_{0, 3}(v) P_{2, 0} + B_{2, 2}(u) B_{1, 3}(v) P_{2, 1} + B_{2, 2}(u) B_{2, 3}(v) P_{2, 2} + B_{2, 2}(u) B_{3, 3}(v) P_{2, 3}
    $$

$$
= (1 - u)^2 (1 - v)^3 P_{0, 0} + (1 - u)^2 3v(1 - v)^2 P_{0, 1} + (1 - u)^2 3v^2(1 - v) P_{0, 2} + (1 - u)^2 v^3 P_{0, 3} \

  • 2u(1 - u) (1 - v)^3 P_{1, 0} + 2u(1 - u) 3v(1 - v)^2 P_{1, 1} + 2u(1 - u) 3v^2(1 - v) P_{1, 2} + 2u(1 - u) v^3 P_{1, 3} \
  • u^2 (1 - v)^3 P_{2, 0} + u^2 3v(1 - v)^2 P_{2, 1} + u^2 3v^2(1 - v) P_{2, 2} + u^2 v^3 P_{2, 3}
    $$

这就是 B e z i e r 曲面公式 S ( u , v ) 的展开形式,其中 P i , j 是控制点。 这个公式描述了一个由 16 个控制点定义的 2 ∗ 3 的 B e z i e r 曲面,其中 u 和 v 在 [ 0 , 1 ] 范围内变化。 这就是Bezier曲面公式 S(u, v) 的展开形式,其中 P_{i, j} 是控制点。\\ 这个公式描述了一个由16个控制点定义的2*3的Bezier曲面,其中 u 和 v 在 [0, 1] 范围内变化。 这就是Bezier曲面公式S(u,v)的展开形式,其中Pi,j是控制点。这个公式描述了一个由16个控制点定义的23Bezier曲面,其中uv[0,1]范围内变化。

这篇关于Bezier曲线曲面--拟合技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084150

相关文章

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及,智能家居行业正迎来新的发展机遇,众多厂商纷纷投身于 Matter 产品的研发与验证。然而,开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。  乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行业洞察力,推出了全面的 Matter 解决方案,包含基于乐鑫 SoC 的 Matter 硬件平台、基于开源 ESP-Matter SDK 的一

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山

(1995-2022年) 全国各省份-技术交易活跃度

技术交易活跃度是一个关键指标,用于衡量技术市场的交易频繁程度和活跃性。它不仅显示了市场参与者对技术交易的参与热情,而且交易的频率也体现了市场的活力。这一指标对于不同的利益相关者具有不同的意义: 对投资者而言,技术交易活跃度是把握市场趋势、评估交易策略和预测市场波动的重要工具。对企业来说,技术交易活跃度反映了其技术创新的活跃程度和市场竞争的激烈程度,有助于企业制定技术创新和市场竞争策略。对政策制定

AI与音乐:当技术与艺术发生冲突

AI在创造还是毁掉音乐? 在科技日新月异的今天,人工智能(AI)已经渗透到了我们生活的方方面面,音乐领域也不例外。然而,尽管AI为音乐创作带来了前所未有的便利,我却深感其正在毁掉音乐的本质。 首先,AI的介入使得音乐创作过程变得过于机械化。传统的音乐创作往往需要音乐家们经过长时间的思考、尝试和修改,最终才能创作出触动人心的作品。这一过程不仅体现了音乐家的才华和技艺,更蕴含了他们对生活的感悟和对

IPD推行成功的核心要素(十一)技术规划与平台规划促进公司战略成功

随着外部大环境的影响,各企业仅有良好的愿望是不够的。预测并顺应新兴市场和技术的变化,变危机为转机,不断推出强大的产品才是一个公司持续繁荣的根本保障。而高效的产品开发往往是基于某些关键技术,针对市场推出的一个或几个产品系列,这些产品系列通常共用一些产品平台,共用一种或者几种关键技术。当一家企业进入了平稳发展期,已经建立了较为完善的管理制度和产品开发流程,但是依然认为竞争对手是那样强大,那样不可战胜。

云原生容器技术入门:Docker、K8s技术的基本原理和用途

🐇明明跟你说过:个人主页 🏅个人专栏:《未来已来:云原生之旅》🏅 🔖行路有良友,便是天堂🔖 目录 一、容器技术概述 1、什么是容器技术 2、容器技术的历史与发展 3、容器技术与虚拟机的比较 4、容器技术在云原生中的作用 二、Docker基础 1、Docker简介 2、Docker架构 3、Docker与工作原理 三、Kubernetes(k8s)基础 1、

JavaScript Promise技术

你可能已经知道Promises现在已经是JavaScript标准的一部分了。Chrome 32 beta版本已经实现了基本的Promise API。如今,Promise的概念在web开发中已经不是什么新鲜玩意了。我们中的大多数人已经在一些流行的JS库例如Q、when、RSVP.js中使用过了Promises。即使是jQuery中也有一个和Promises很类似叫做Deferred的东西。但是Ja

Sharding(切片)技术(解决数据库分库一致性问题)

Sharding(切片) 不是一门新技术,而是一个相对简朴的软件理念,就是当我们的数据库单机无法承受高强度的i/o时,我们就考虑利用 sharding 来把这种读写压力分散到各个主机上去。 所以Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是Horizontal Partitioning 水平扩展(或横向扩展)的解决方案,其主要目的是为突破单节点数