`
足至迹留
  • 浏览: 498945 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论
文章列表
引用任何一个傻瓜都能写出计算机可以理解的代码。唯有写出人类容易理解的代码才是优秀的程序员。 一、什么是重构? 重构是在不改变软件可观察行为的前提下改善其内部结构。重构是一种经千锤百炼形成的有条不紊的程序整理方法,可以最大限度地减少整理过程中引入错误的几率。 本质上说,重构就是在代码写好之后改进它的设计。 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性的添加比较容易进行,然后再添加特性。 1. 重构的第一步 每当我们要进行重构的时候,第一个步骤永远相同:为即将修改的代码建立一组可靠的测试环境(如果没有的话)。好的测试是重构的根本。 2. ...
3.6 有序集合类型 3.6.1 介绍 有序集合类型(sorted set)的特点从它的名字中就可以猜到,它与上一节介绍的集合类型的区别就是“有序”二字。 在集合类型的基础上有序集合类型为集合中的每个元素都关联了一个分数(score),这使得我们不仅可以完成插入、删除和判断元素是否存在等集合类型支持的操作,还能够获得分数最高(或最低)的前N个元素、获得指定分数范围内的元素等与分数有关的操作。虽然集合中每个元素都是不同的,但是它们的分数却可以相同。有序集合类型在某些方面和列表类型有些相似。 (1)二者都是有序的。 (2)二者都可以获得某一范围的元素。 但是二者有着很大的区别,这使得它们的应用场 ...
3.5 集合类型 在集合中的每个元素都是不同的,且没有顺序。一个集合类型(set)键可以存储至多2^32-1个(相信这个数字对大家来说已经很熟悉了)字符串。集合类型和列表类型有相似之处,但很容易将它们区分开来,如表3-4所示。 集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型在Redis内部是使用值为空的散列表(hash table)实现的,所以这些操作的时间复杂度都是0(1)。最方便的是多个集合类型键之间还可以进行并集、交集和差集运算,稍后就会看到灵活运用这一特性带来的便利。 3.5.2 命令 1.增加/删除元素 SADD key member [memb ...
3.3 列表类型 3.3.1 介绍 列表类型(list)可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。列表类型内部是使用双向链表(double linked list)实现的,所以向列表两端添加元素的时间 ...
3.3 散列类型 3.3.1 介绍 Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型。一个散列类型键可以包含至多2^32-1个字段。 提示: 除了散列类型,Redis的其他数据类型同样不支持数据类型嵌套。比如集合类型的每个元素都只能是字符串,不能是另一个集合或散列表等。 散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。例如要存储ID为2的汽车对象,可以分别使用名为color、 ...
一、tomcat安装为windows服务 1.已经安装好的tomcat配置好JAVA_HOME, TOMCAT_HOME,classpath即可 2.在命令行执行,cd切换到tomcat的bin目录下,然后执行 ${TOMCAT_HOME}/bin>service install tomcat 成功的话会输出: Installing the service 'tomcat' ... Using CATALINA_HOME:    f:/apache-tomcat-6.0.16 Using CATALINA_BASE:    f:/apache-tomcat-6.0.16 Using ...
3.1 redis基本命令 1.获得符合规则的键名列表 keys pattern keys(redis命令都是)不区分大小写,pattern支持glob风格通配符格式(注意不是正则),具体规则如下表所示。 为了演示KEYS命令,首先我们得给Redis加点数据。使用SET命令(会在后面介绍)建立一个名为bar的键: redis>SET bar 1 OK 然后使用KEYS *就能获得Redis中所有的键了。 redis> KEYS * 1) "bar" 注意 (1)KEYS命令需要遍历Redis中的所有键,当键的数量较多时会影响性能,不建议在生产环境中使用。 (2)Re ...
1.简介 sed全称是Stream Editor,是非交互式的编辑器。它不会修改原文件,除非使用shell重定向来保存结果, 或者可以指定-i选项来在线修改文件,这样就会改变原文件,升级脚本通常用-i选项。默认情况下,所有的输出行都被打印到 ...
2.1 安装redis 安装Redis是开始Redis学习之旅的第一步。在安装Redis前需要了解Redis的版本规则以选择最适合自己的版本,Redis约定次版本号(即第一个小数点后的数字)为偶数的版本是稳定版 (如2.4版、2.6版),奇数版本是非稳定版(如2.5版、2.7版),推荐使用稳定版本进行开发和在生产环境使用。linux内核也是这种奇偶版本发布。 2.1.1 POSIX系统 Redis兼容大部分POSIX系统,包括Linux、OS X和BSD等,在这些系统中推荐直接下载Redis源代码编译安装以获得最新的稳定版本。Redis最新稳定版本的源代码可以从地址 http://downlo ...
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。大多数grep版本是NFA规则引擎,与java一样。 1. 语法 grep [options] pattern [fileName...] 或 grep [options] [-e pattern | -f fileName] [fileName...] 一般使用第一种写法。 支持的常用options如下: 1.1 控制匹配pattern -i, (全称: -- ...
1.1 简介 Redis是一个开源的高性能键值对数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,并借助许多高层级的接口使其可以胜任如缓存、队列系统等不同的角色。 1.2 特性 1.2.1 存储结构 有过脚本语言编程经验的读者对字典(或称映射、关联数组)数据结构一定很熟悉,如代码dict["key"]="value"中dict是一个字典结构变量,字符串"key"是键名,而"value"是键值,在字典中我们可以获取或设置键名对应的键值,也可以删除一个键。 Redis是Remote Dictionary S ...
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常 ...
AWR是oracle 10g下提供的一种性能收集和分析工具,可以看做10g以前statspack工具的一个升级版本,它能够提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统整个运行情况。 读懂AWR报告并不是 ...
变量绑定是OLTP系统中一个非常值得关注的技术点。良好的变量绑定会使OLTP系统数据库中的sql执行速度飞快,内存效率极高;不绑定变量可能会使OLTP数据库不堪重负,资源被sql解析严重消耗,系统显得滞重而缓慢。 6.1 什么是变 ...
如果要分析某条(不是整体性能,后面还会讲到awr报告,会再次说明)sql的性能问题,通常来讲,首先要去看sql的执行计划,看看sql的每一步执行计划是否存在问题。如果一条sql平时执行得都很好,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本上可以断定是执行计划出了问题。 看懂执行计划便成了sql优化(大多数情况下,sql优化指的是sql的性能问题定位)的先决条件。 在讨论sql执行计划之前,需要知道执行计划当中一个非常重要的概念:Cardinality(基数)。 5.1 Cardinality (基数) 在看执行计划的每一步操作时,当前操作的Cardinality值表示CBO预 ...
Global site tag (gtag.js) - Google Analytics