实现一位加法器的设计,假设输入参数为A,B,则输出为A,B的和
标签: 加法器
上传时间: 2017-01-02
上传用户:baiom
第一章:摘要 1 第二章:市场分析 2 一、市场介绍 2 二、目标市场 2 三、顾客的购买准则 3 第三章,竞争性分析 3 一、竞争者 3 二、竞争策略或消除壁垒 4 1.竞争策略 4 第四章;产品与服务 4 一、产品品种规划 4 二、研究与开发 5 三、未来产品和服务规划 5 四、实施阶段 5 五、服务与支持 6 第五章 市场与销售 6 一、市场计划 6 二、销售策略 6 三、销售渠道与伙伴 6 四、定价策略 7 五、市场联络; 7 1、广告宣传 7 2、互联网促销 8 3、刊物、文章报导 8 4、直接邮寄 8 6、其它营销因素 8 六、社会认证 9 第六章 财务计划 9 一、资金需求与使用计划 9 第七章 风险控制 9 一、风险 9 1、技术风险。 9 2、市场风险 9 3、经营风险 10 4、盈利模式风险 10 二、对策 10 1、技术风险对策 10 2、市场风险及对策 11 3、经营风险及对策 11 4、盈利模式风险对策 11 第八章 附录 12 一、市场背景: 12 二、管理层人员简历 12 三、行业关系 12 四、竞争对手的文件资料: 12
上传时间: 2013-12-22
上传用户:ma1301115706
手机网络纸牌游戏,用户名:mr 密码:mrsoft。牌的大小按下列顺序排列:A、K、Q、J、10、9、8、7、6、5、4、3、2。 1.出牌 (1)每轮只允许出一张牌。 (2)第一局游戏由得到梅花2的一方首先出牌,并且必须出梅花2。 (3)必须先出与首家相同花色的牌,无相同花色时方可用其它花色代替。 (4)最大方得到该轮的所有分牌,并获得本轮先出牌的资格。 2.分值计算 红桃:红桃为分牌。
标签: 手机网络
上传时间: 2014-01-19
上传用户:笨小孩
找一个最小的自然数,使它等于不同的两组三个自然数的三次幂之和,即找最小的x,使得:x=a*a*a+b*b*b+c*c*c = d*d*d+e*e*e+f*f*f 其中,a,b,c,d,e,f都是自然数,a<=b<=c, d<=e<=f [a,b,c]!=[d,e,f] 进一步,是否还存在另外一个自然数满足上述条件,可能的话请输出其结果
标签:
上传时间: 2017-05-16
上传用户:vodssv
建立两个任务AB,A可以挂起B,同时也可以恢复B
标签:
上传时间: 2017-06-02
上传用户:han_zh
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10 ;利润高于10万元,低于20万元时,低于10万元的部分按10 提成,高于10万元的部分,可可提成7.5 ;20万到40万之间时,高于20万元的部分,可提成5 ;40万到60万之间时高于40万元的部分,可提成3 ;60万到100万之间时,高于60万元的部分,可提成1.5 ,高于100万元
标签: 利润
上传时间: 2014-01-16
上传用户:努力努力再努力
第1章 绪论 1 1.1 程序设计语言概述 1 1.1.1 机器语言 1 1.1.2 汇编语言 2 1.1.3 高级语言 2 1.1.4 C语言 3 1.2 C语言的优点和缺点 4 1.2.1 C语言的优点 4 1.2.2 C语言的缺点 6 1.3 算法概述 7 1.3.1 算法的基本特征 7 1.3.2 算法的复杂度 8 1.3.3 算法的准确性 10 1.3.4 算法的稳定性 14 第2章 复数运算 18 2.1 复数的四则运算 18 2.1.1 [算法1] 复数乘法 18 2.1.2 [算法2] 复数除法 20 2.1.3 【实例5】 复数的四则运算 22 2.2 复数的常用函数运算 23 2.2.1 [算法3] 复数的乘幂 23 2.2.2 [算法4] 复数的n次方根 25 2.2.3 [算法5] 复数指数 27 2.2.4 [算法6] 复数对数 29 2.2.5 [算法7] 复数正弦 30 2.2.6 [算法8] 复数余弦 32 2.2.7 【实例6】 复数的函数运算 34 第3章 多项式计算 37 3.1 多项式的表示方法 37 3.1.1 系数表示法 37 3.1.2 点表示法 38 3.1.3 [算法9] 系数表示转化为点表示 38 3.1.4 [算法10] 点表示转化为系数表示 42 3.1.5 【实例7】 系数表示法与点表示法的转化 46 3.2 多项式运算 47 3.2.1 [算法11] 复系数多项式相乘 47 3.2.2 [算法12] 实系数多项式相乘 50 3.2.3 [算法13] 复系数多项式相除 52 3.2.4 [算法14] 实系数多项式相除 54 3.2.5 【实例8】 复系数多项式的乘除法 56 3.2.6 【实例9】 实系数多项式的乘除法 57 3.3 多项式的求值 59 3.3.1 [算法15] 一元多项式求值 59 3.3.2 [算法16] 一元多项式多组求值 60 3.3.3 [算法17] 二元多项式求值 63 3.3.4 【实例10】 一元多项式求值 65 3.3.5 【实例11】 二元多项式求值 66 第4章 矩阵计算 68 4.1 矩阵相乘 68 4.1.1 [算法18] 实矩阵相乘 68 4.1.2 [算法19] 复矩阵相乘 70 4.1.3 【实例12】 实矩阵与复矩阵的乘法 72 4.2 矩阵的秩与行列式值 73 4.2.1 [算法20] 求矩阵的秩 73 4.2.2 [算法21] 求一般矩阵的行列式值 76 4.2.3 [算法22] 求对称正定矩阵的行列式值 80 4.2.4 【实例13】 求矩阵的秩和行列式值 82 4.3 矩阵求逆 84 4.3.1 [算法23] 求一般复矩阵的逆 84 4.3.2 [算法24] 求对称正定矩阵的逆 90 4.3.3 [算法25] 求托伯利兹矩阵逆的Trench方法 92 4.3.4 【实例14】 验证矩阵求逆算法 97 4.3.5 【实例15】 验证T矩阵求逆算法 99 4.4 矩阵分解与相似变换 102 4.4.1 [算法26] 实对称矩阵的LDL分解 102 4.4.2 [算法27] 对称正定实矩阵的Cholesky分解 104 4.4.3 [算法28] 一般实矩阵的全选主元LU分解 107 4.4.4 [算法29] 一般实矩阵的QR分解 112 4.4.5 [算法30] 对称实矩阵相似变换为对称三对角阵 116 4.4.6 [算法31] 一般实矩阵相似变换为上Hessen-Burg矩阵 121 4.4.7 【实例16】 对一般实矩阵进行QR分解 126 4.4.8 【实例17】 对称矩阵的相似变换 127 4.4.9 【实例18】 一般实矩阵相似变换 129 4.5 矩阵特征值的计算 130 4.5.1 [算法32] 求上Hessen-Burg矩阵全部特征值的QR方法 130 4.5.2 [算法33] 求对称三对角阵的全部特征值 137 4.5.3 [算法34] 求对称矩阵特征值的雅可比法 143 4.5.4 [算法35] 求对称矩阵特征值的雅可比过关法 147 4.5.5 【实例19】 求上Hessen-Burg矩阵特征值 151 4.5.6 【实例20】 分别用两种雅克比法求对称矩阵特征值 152 第5章 线性代数方程组的求解 154 5.1 高斯消去法 154 5.1.1 [算法36] 求解复系数方程组的全选主元高斯消去法 155 5.1.2 [算法37] 求解实系数方程组的全选主元高斯消去法 160 5.1.3 [算法38] 求解复系数方程组的全选主元高斯-约当消去法 163 5.1.4 [算法39] 求解实系数方程组的全选主元高斯-约当消去法 168 5.1.5 [算法40] 求解大型稀疏系数矩阵方程组的高斯-约当消去法 171 5.1.6 [算法41] 求解三对角线方程组的追赶法 174 5.1.7 [算法42] 求解带型方程组的方法 176 5.1.8 【实例21】 解线性实系数方程组 179 5.1.9 【实例22】 解线性复系数方程组 180 5.1.10 【实例23】 解三对角线方程组 182 5.2 矩阵分解法 184 5.2.1 [算法43] 求解对称方程组的LDL分解法 184 5.2.2 [算法44] 求解对称正定方程组的Cholesky分解法 186 5.2.3 [算法45] 求解线性最小二乘问题的QR分解法 188 5.2.4 【实例24】 求解对称正定方程组 191 5.2.5 【实例25】 求解线性最小二乘问题 192 5.3 迭代方法 193 5.3.1 [算法46] 病态方程组的求解 193 5.3.2 [算法47] 雅克比迭代法 197 5.3.3 [算法48] 高斯-塞德尔迭代法 200 5.3.4 [算法49] 超松弛方法 203 5.3.5 [算法50] 求解对称正定方程组的共轭梯度方法 205 5.3.6 [算法51] 求解托伯利兹方程组的列文逊方法 209 5.3.7 【实例26】 解病态方程组 214 5.3.8 【实例27】 用迭代法解方程组 215 5.3.9 【实例28】 求解托伯利兹方程组 217 第6章 非线性方程与方程组的求解 219 6.1 非线性方程求根的基本过程 219 6.1.1 确定非线性方程实根的初始近似值或根的所在区间 219 6.1.2 求非线性方程根的精确解 221 6.2 求非线性方程一个实根的方法 221 6.2.1 [算法52] 对分法 221 6.2.2 [算法53] 牛顿法 223 6.2.3 [算法54] 插值法 226 6.2.4 [算法55] 埃特金迭代法 229 6.2.5 【实例29】 用对分法求非线性方程组的实根 232 6.2.6 【实例30】 用牛顿法求非线性方程组的实根 233 6.2.7 【实例31】 用插值法求非线性方程组的实根 235 6.2.8 【实例32】 用埃特金迭代法求非线性方程组的实根 237 6.3 求实系数多项式方程全部根的方法 238 6.3.1 [算法56] QR方法 238 6.3.2 【实例33】 用QR方法求解多项式的全部根 240 6.4 求非线性方程组一组实根的方法 241 6.4.1 [算法57] 梯度法 241 6.4.2 [算法58] 拟牛顿法 244 6.4.3 【实例34】 用梯度法计算非线性方程组的一组实根 250 6.4.4 【实例35】 用拟牛顿法计算非线性方程组的一组实根 252 第7章 代数插值法 254 7.1 拉格朗日插值法 254 7.1.1 [算法59] 线性插值 255 7.1.2 [算法60] 二次抛物线插值 256 7.1.3 [算法61] 全区间插值 259 7.1.4 【实例36】 拉格朗日插值 262 7.2 埃尔米特插值 263 7.2.1 [算法62] 埃尔米特不等距插值 263 7.2.2 [算法63] 埃尔米特等距插值 267 7.2.3 【实例37】 埃尔米特插值法 270 7.3 埃特金逐步插值 271 7.3.1 [算法64] 埃特金不等距插值 272 7.3.2 [算法65] 埃特金等距插值 275 7.3.3 【实例38】 埃特金插值 278 7.4 光滑插值 279 7.4.1 [算法66] 光滑不等距插值 279 7.4.2 [算法67] 光滑等距插值 283 7.4.3 【实例39】 光滑插值 286 7.5 三次样条插值 287 7.5.1 [算法68] 第一类边界条件的三次样条函数插值 287 7.5.2 [算法69] 第二类边界条件的三次样条函数插值 292 7.5.3 [算法70] 第三类边界条件的三次样条函数插值 296 7.5.4 【实例40】 样条插值法 301 7.6 连分式插值 303 7.6.1 [算法71] 连分式插值 304 7.6.2 【实例41】 验证连分式插值的函数 308 第8章 数值积分法 309 8.1 变步长求积法 310 8.1.1 [算法72] 变步长梯形求积法 310 8.1.2 [算法73] 自适应梯形求积法 313 8.1.3 [算法74] 变步长辛卜生求积法 316 8.1.4 [算法75] 变步长辛卜生二重积分方法 318 8.1.5 [算法76] 龙贝格积分 322 8.1.6 【实例42】 变步长积分法进行一重积分 325 8.1.7 【实例43】 变步长辛卜生积分法进行二重积分 326 8.2 高斯求积法 328 8.2.1 [算法77] 勒让德-高斯求积法 328 8.2.2 [算法78] 切比雪夫求积法 331 8.2.3 [算法79] 拉盖尔-高斯求积法 334 8.2.4 [算法80] 埃尔米特-高斯求积法 336 8.2.5 [算法81] 自适应高斯求积方法 337 8.2.6 【实例44】 有限区间高斯求积法 342 8.2.7 【实例45】 半无限区间内高斯求积法 343 8.2.8 【实例46】 无限区间内高斯求积法 345 8.3 连分式法 346 8.3.1 [算法82] 计算一重积分的连分式方法 346 8.3.2 [算法83] 计算二重积分的连分式方法 350 8.3.3 【实例47】 连分式法进行一重积分 354 8.3.4 【实例48】 连分式法进行二重积分 355 8.4 蒙特卡洛法 356 8.4.1 [算法84] 蒙特卡洛法进行一重积分 356 8.4.2 [算法85] 蒙特卡洛法进行二重积分 358 8.4.3 【实例49】 一重积分的蒙特卡洛法 360 8.4.4 【实例50】 二重积分的蒙特卡洛法 361 第9章 常微分方程(组)初值问题的求解 363 9.1 欧拉方法 364 9.1.1 [算法86] 定步长欧拉方法 364 9.1.2 [算法87] 变步长欧拉方法 366 9.1.3 [算法88] 改进的欧拉方法 370 9.1.4 【实例51】 欧拉方法求常微分方程数值解 372 9.2 龙格-库塔方法 376 9.2.1 [算法89] 定步长龙格-库塔方法 376 9.2.2 [算法90] 变步长龙格-库塔方法 379 9.2.3 [算法91] 变步长基尔方法 383 9.2.4 【实例52】 龙格-库塔方法求常微分方程的初值问题 386 9.3 线性多步法 390 9.3.1 [算法92] 阿当姆斯预报校正法 390 9.3.2 [算法93] 哈明方法 394 9.3.3 [算法94] 全区间积分的双边法 399 9.3.4 【实例53】 线性多步法求常微分方程组初值问题 401 第10章 拟合与逼近 405 10.1 一元多项式拟合 405 10.1.1 [算法95] 最小二乘拟合 405 10.1.2 [算法96] 最佳一致逼近的里米兹方法 412 10.1.3 【实例54】 一元多项式拟合 417 10.2 矩形区域曲面拟合 419 10.2.1 [算法97] 矩形区域最小二乘曲面拟合 419 10.2.2 【实例55】 二元多项式拟合 428 第11章 特殊函数 430 11.1 连分式级数和指数积分 430 11.1.1 [算法98] 连分式级数求值 430 11.1.2 [算法99] 指数积分 433 11.1.3 【实例56】 连分式级数求值 436 11.1.4 【实例57】 指数积分求值 438 11.2 伽马函数 439 11.2.1 [算法100] 伽马函数 439 11.2.2 [算法101] 贝塔函数 441 11.2.3 [算法102] 阶乘 442 11.2.4 【实例58】 伽马函数和贝塔函数求值 443 11.2.5 【实例59】 阶乘求值 444 11.3 不完全伽马函数 445 11.3.1 [算法103] 不完全伽马函数 445 11.3.2 [算法104] 误差函数 448 11.3.3 [算法105] 卡方分布函数 450 11.3.4 【实例60】 不完全伽马函数求值 451 11.3.5 【实例61】 误差函数求值 452 11.3.6 【实例62】 卡方分布函数求值 453 11.4 不完全贝塔函数 454 11.4.1 [算法106] 不完全贝塔函数 454 11.4.2 [算法107] 学生分布函数 457 11.4.3 [算法108] 累积二项式分布函数 458 11.4.4 【实例63】 不完全贝塔函数求值 459 11.5 贝塞尔函数 461 11.5.1 [算法109] 第一类整数阶贝塞尔函数 461 11.5.2 [算法110] 第二类整数阶贝塞尔函数 466 11.5.3 [算法111] 变型第一类整数阶贝塞尔函数 469 11.5.4 [算法112] 变型第二类整数阶贝塞尔函数 473 11.5.5 【实例64】 贝塞尔函数求值 476 11.5.6 【实例65】 变型贝塞尔函数求值 477 11.6 Carlson椭圆积分 479 11.6.1 [算法113] 第一类椭圆积分 479 11.6.2 [算法114] 第一类椭圆积分的退化形式 481 11.6.3 [算法115] 第二类椭圆积分 483 11.6.4 [算法116] 第三类椭圆积分 486 11.6.5 【实例66】 第一类勒让德椭圆函数积分求值 490 11.6.6 【实例67】 第二类勒让德椭圆函数积分求值 492 第12章 极值问题 494 12.1 一维极值求解方法 494 12.1.1 [算法117] 确定极小值点所在的区间 494 12.1.2 [算法118] 一维黄金分割搜索 499 12.1.3 [算法119] 一维Brent方法 502 12.1.4 [算法120] 使用一阶导数的Brent方法 506 12.1.5 【实例68】 使用黄金分割搜索法求极值 511 12.1.6 【实例69】 使用Brent法求极值 513 12.1.7 【实例70】 使用带导数的Brent法求极值 515 12.2 多元函数求极值 517 12.2.1 [算法121] 不需要导数的一维搜索 517 12.2.2 [算法122] 需要导数的一维搜索 519 12.2.3 [算法123] Powell方法 522 12.2.4 [算法124] 共轭梯度法 525 12.2.5 [算法125] 准牛顿法 531 12.2.6 【实例71】 验证不使用导数的一维搜索 536 12.2.7 【实例72】 用Powell算法求极值 537 12.2.8 【实例73】 用共轭梯度法求极值 539 12.2.9 【实例74】 用准牛顿法求极值 540 12.3 单纯形法 542 12.3.1 [算法126] 求无约束条件下n维极值的单纯形法 542 12.3.2 [算法127] 求有约束条件下n维极值的单纯形法 548 12.3.3 [算法128] 解线性规划问题的单纯形法 556 12.3.4 【实例75】 用单纯形法求无约束条件下N维的极值 568 12.3.5 【实例76】 用单纯形法求有约束条件下N维的极值 569 12.3.6 【实例77】 求解线性规划问题 571 第13章 随机数产生与统计描述 574 13.1 均匀分布随机序列 574 13.1.1 [算法129] 产生0到1之间均匀分布的一个随机数 574 13.1.2 [算法130] 产生0到1之间均匀分布的随机数序列 576 13.1.3 [算法131] 产生任意区间内均匀分布的一个随机整数 577 13.1.4 [算法132] 产生任意区间内均匀分布的随机整数序列 578 13.1.5 【实例78】 产生0到1之间均匀分布的随机数序列 580 13.1.6 【实例79】 产生任意区间内均匀分布的随机整数序列 581 13.2 正态分布随机序列 582 13.2.1 [算法133] 产生任意均值与方差的正态分布的一个随机数 582 13.2.2 [算法134] 产生任意均值与方差的正态分布的随机数序列 585 13.2.3 【实例80】 产生任意均值与方差的正态分布的一个随机数 587 13.2.4 【实例81】 产生任意均值与方差的正态分布的随机数序列 588 13.3 统计描述 589 13.3.1 [算法135] 分布的矩 589 13.3.2 [算法136] 方差相同时的t分布检验 591 13.3.3 [算法137] 方差不同时的t分布检验 594 13.3.4 [算法138] 方差的F检验 596 13.3.5 [算法139] 卡方检验 599 13.3.6 【实例82】 计算随机样本的矩 601 13.3.7 【实例83】 t分布检验 602 13.3.8 【实例84】 F分布检验 605 13.3.9 【实例85】 检验卡方检验的算法 607 第14章 查找 609 14.1 基本查找 609 14.1.1 [算法140] 有序数组的二分查找 609 14.1.2 [算法141] 无序数组同时查找最大和最小的元素 611 14.1.3 [算法142] 无序数组查找第M小的元素 613 14.1.4 【实例86】 基本查找 615 14.2 结构体和磁盘文件的查找 617 14.2.1 [算法143] 无序结构体数组的顺序查找 617 14.2.2 [算法144] 磁盘文件中记录的顺序查找 618 14.2.3 【实例87】 结构体数组和文件中的查找 619 14.3 哈希查找 622 14.3.1 [算法145] 字符串哈希函数 622 14.3.2 [算法146] 哈希函数 626 14.3.3 [算法147] 向哈希表中插入元素 628 14.3.4 [算法148] 在哈希表中查找元素 629 14.3.5 [算法149] 在哈希表中删除元素 631 14.3.6 【实例88】 构造哈希表并进行查找 632 第15章 排序 636 15.1 插入排序 636 15.1.1 [算法150] 直接插入排序 636 15.1.2 [算法151] 希尔排序 637 15.1.3 【实例89】 插入排序 639 15.2 交换排序 641 15.2.1 [算法152] 气泡排序 641 15.2.2 [算法153] 快速排序 642 15.2.3 【实例90】 交换排序 644 15.3 选择排序 646 15.3.1 [算法154] 直接选择排序 646 15.3.2 [算法155] 堆排序 647 15.3.3 【实例91】 选择排序 650 15.4 线性时间排序 651 15.4.1 [算法156] 计数排序 651 15.4.2 [算法157] 基数排序 653 15.4.3 【实例92】 线性时间排序 656 15.5 归并排序 657 15.5.1 [算法158] 二路归并排序 658 15.5.2 【实例93】 二路归并排序 660 第16章 数学变换与滤波 662 16.1 快速傅里叶变换 662 16.1.1 [算法159] 复数据快速傅里叶变换 662 16.1.2 [算法160] 复数据快速傅里叶逆变换 666 16.1.3 [算法161] 实数据快速傅里叶变换 669 16.1.4 【实例94】 验证傅里叶变换的函数 671 16.2 其他常用变换 674 16.2.1 [算法162] 快速沃尔什变换 674 16.2.2 [算法163] 快速哈达玛变换 678 16.2.3 [算法164] 快速余弦变换 682 16.2.4 【实例95】 验证沃尔什变换和哈达玛的函数 684 16.2.5 【实例96】 验证离散余弦变换的函数 687 16.3 平滑和滤波 688 16.3.1 [算法165] 五点三次平滑 689 16.3.2 [算法166] α-β-γ滤波 690 16.3.3 【实例97】 验证五点三次平滑 692 16.3.4 【实例98】 验证α-β-γ滤波算法 693
标签: C 算法 附件 源代码
上传时间: 2015-06-29
上传用户:cbsdukaf
在实际应用中,利用遗传算法处理多目标优化问题,initPop=initializega(10,[0 9],'fitness'); [x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 0],'maxGenTerm',25,'normGeomSelect',[0.08],'arithXover',[2 0],'nonUnifMutation',[2 25 3]) MATLAB代码
标签: 代码
上传时间: 2015-12-24
上传用户:zzz123456bd
Redis 命令参考 1 Key(键) 1 1.1 DEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 DUMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.3 EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 EXPIRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.5 EXPIREAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 KEYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.7 MIGRATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.8 MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.9 OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.10 PERSIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.11 PEXPIRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.12 PEXPIREAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.13 PTTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.14 RANDOMKEY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.15 RENAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.16 RENAMENX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.17 RESTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.18 SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.19 TTL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.20 TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.21 SCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2 String(字符串) 29 2.1 APPEND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2 BITCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3 BITOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4 DECR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5 DECRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.6 GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.7 GETBIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.8 GETRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.9 GETSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.10 INCR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.11 INCRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.12 INCRBYFLOAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.13 MGET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.14 MSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.15 MSETNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 i 2.16 PSETEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.17 SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 2.18 SETBIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.19 SETEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.20 SETNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.21 SETRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.22 STRLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3 Hash(哈希表) 51 3.1 HDEL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2 HEXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3 HGET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.4 HGETALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.5 HINCRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.6 HINCRBYFLOAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.7 HKEYS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.8 HLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.9 HMGET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.10 HMSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.11 HSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.12 HSETNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.13 HVALS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.14 HSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4 List(列表) 61 4.1 BLPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.2 BRPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.3 BRPOPLPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.4 LINDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.5 LINSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.6 LLEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.7 LPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.8 LPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.9 LPUSHX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.10 LRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.11 LREM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.12 LSET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.13 LTRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.14 RPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.15 RPOPLPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.16 RPUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.17 RPUSHX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5 Set(集合) 79 5.1 SADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 5.2 SCARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.3 SDIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 5.4 SDIFFSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.5 SINTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 5.6 SINTERSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.7 SISMEMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.8 SMEMBERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.9 SMOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.10 SPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 ii 5.11 SRANDMEMBER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.12 SREM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.13 SUNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.14 SUNIONSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.15 SSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 6 SortedSet(有序集合) 89 6.1 ZADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 6.2 ZCARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 6.3 ZCOUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.4 ZINCRBY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 6.5 ZRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6.6 ZRANGEBYSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 6.7 ZRANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.8 ZREM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 6.9 ZREMRANGEBYRANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 6.10 ZREMRANGEBYSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.11 ZREVRANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6.12 ZREVRANGEBYSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.13 ZREVRANK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.14 ZSCORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 6.15 ZUNIONSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 6.16 ZINTERSTORE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.17 ZSCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 7 Pub/Sub(发布/订阅) 103 7.1 PSUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7.2 PUBLISH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.3 PUBSUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 7.4 PUNSUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.5 SUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 7.6 UNSUBSCRIBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8 Transaction(事务) 109 8.1 DISCARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 8.2 EXEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 8.3 MULTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8.4 UNWATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 8.5 WATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 9 Script(脚本) 113 9.1 EVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.2 EVALSHA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 9.3 SCRIPT EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 9.4 SCRIPT FLUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 9.5 SCRIPT KILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 9.6 SCRIPT LOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 10 Connection(连接) 123 10.1 AUTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 10.2 ECHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.3 PING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 10.4 QUIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 10.5 SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 iii 11 Server(服务器) 127 11.1 BGREWRITEAOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.2 BGSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 11.3 CLIENT GETNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 11.4 CLIENT KILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 11.5 CLIENT LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 11.6 CLIENT SETNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 11.7 CONFIG GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 11.8 CONFIG RESETSTAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 11.9 CONFIG REWRITE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 11.10 CONFIG SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 11.11 DBSIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 11.12 DEBUG OBJECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 11.13 DEBUG SEGFAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 11.14 FLUSHALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 11.15 FLUSHDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 11.16 INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 11.17 LASTSAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 11.18 MONITOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 11.19 PSYNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.20 SAVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.21 SHUTDOWN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 11.22 SLAVEOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 11.23 SLOWLOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 11.24 SYNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 11.25 TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 12 键空间通知(keyspace notification) 149 12.1 功能概览. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 12.2 事件的类型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 12.3 配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 12.4 命令产生的通知. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 12.5 过期通知的发送时间. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 13 事务(transaction) 153 13.1 用法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 13.2 事务中的错误. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 13.3 为什么Redis 不支持回滚(roll back) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 13.4 放弃事务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 13.5 使用check-and-set 操作实现乐观锁. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 13.6 了解WATCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 13.7 使用WATCH 实现ZPOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 13.8 Redis 脚本和事务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 14 发布与订阅(pub/sub) 159 14.1 信息的格式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 14.2 订阅模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 14.3 通过频道和模式接收同一条信息. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 14.4 订阅总数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 14.5 编程示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 14.6 客户端库实现提示. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 15 复制(Replication) 163 15.1 复制功能的运作原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 15.2 部分重同步. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 iv 15.3 配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 15.4 只读从服务器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 15.5 从服务器相关配置. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 15.6 主服务器只在有至少N 个从服务器的情况下,才执行写操作. . . . . . . . . . . . . . . . . . 165 16 通信协议(protocol) 167 16.1 网络层. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 16.2 请求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 16.3 新版统一请求协议. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 16.4 回复. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 16.5 状态回复. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 16.6 错误回复. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 16.7 整数回复. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 16.8 批量回复. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 16.9 多条批量回复. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 16.10 多条批量回复中的空元素. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 16.11 多命令和流水线. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 16.12 内联命令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 16.13 高性能Redis 协议分析器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 17 持久化(persistence) 173 17.1 Redis 持久化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 17.2 RDB 的优点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 17.3 RDB 的缺点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 17.4 AOF 的优点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 17.5 AOF 的缺点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 17.6 RDB 和AOF ,我应该用哪一个? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 17.7 RDB 快照. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 17.8 快照的运作方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 17.9 只进行追加操作的文件(append-only file,AOF) . . . . . . . . . . . . . . . . . . . . . . . . 175 17.10 AOF 重写. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 17.11 AOF 有多耐久? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 17.12 如果AOF 文件出错了,怎么办? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 17.13 AOF 的运作方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 17.14 怎么从RDB 持久化切换到AOF 持久化. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 17.15 RDB 和AOF 之间的相互作用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 17.16 备份Redis 数据. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 17.17 容灾备份. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 18 Sentinel 181 18.1 获取Sentinel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 18.2 启动Sentinel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 18.3 配置Sentinel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 18.4 主观下线和客观下线. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 18.5 每个Sentinel 都需要定期执行的任务. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 18.6 自动发现Sentinel 和从服务器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 18.7 Sentinel API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 18.8 故障转移. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 18.9 TILT 模式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 18.10 处理-BUSY 状态. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 18.11 Sentinel 的客户端实现. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 19 集群教程191 19.1 集群简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 19.2 Redis 集群数据共享. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 v 19.3 Redis 集群中的主从复制. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 19.4 Redis 集群的一致性保证(guarantee) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 19.5 创建并使用Redis 集群. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 19.6 创建集群. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 19.7 集群的客户端. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 19.8 使用redis-rb-cluster 编写一个示例应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 19.9 对集群进行重新分片. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 19.10 一个更有趣的示例应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 19.11 故障转移测试. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 19.12 添加新节点到集群. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 19.13 移除一个节点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 20 Redis 集群规范205 20.1 引言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 20.2 什么是Redis 集群? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 20.3 Redis 集群实现的功能子集. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 20.4 Redis 集群协议中的客户端和服务器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 20.5 键分布模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 20.6 集群节点属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 20.7 节点握手(已实现) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 20.8 MOVED 转向. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 20.9 集群在线重配置(live reconfiguration) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 20.10 ASK 转向. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 20.11 容错. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 20.12 发布/订阅(已实现,但仍然需要改善) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 20.13 附录A:CRC16 算法的ANSI 实现参考. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 21 关于217 22 通过捐款支持本文档219
上传时间: 2016-02-04
上传用户:1987
#include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; }
标签: 道理特分解法
上传时间: 2018-05-20
上传用户:Aa123456789