织梦dedecms绿色营销型发电机机电机械设备公司网站模板(带手机移动端)

模板介绍:
织梦最新内核开发的模板,该模板属于企业通用、发电机、机电、机械设备类企业都可使用,
这款模板使用范围极广,不仅仅局限于一类型的企业,你只需要把图片和产品内容;
换成你的,颜色都可以修改,改完让你耳目一新的感觉!
自带最新的手机移动端,同一个后台,数据即时同步,简单适用!
原创设计、手工书写DIV+CSS,
完美兼容IE7+、Firefox、Chrome、360浏览器等;主流浏览器;
页面简洁简单,容易管理,DEDE内核都可以使用;附带测试数据!

模板特点:
1.一款利于SEO的模板,手工CSS+DIV,图片ALT,H系列标签已合理运用。
2.同步手机站功能,手机站很强大。

使用程序:
织梦DEDECMS版本都可以使用。

模板页面:
index.htm 首页模板
head.htm
footer.htm
article_article.htm 文章内容这里不一一列出!

温馨提示:
按照正常的织梦安装步骤来安装还原就可以用了,从后台重新点击保存下系统基本参数。 系统>系统基本参数> 保存(确定)。

文件:n459.com/file/25127180-477760592

以下内容无关:

-------------------------------------------分割线---------------------------------------------

Redis 设计与实现 2:Redis 对象
在 Redis 中,有五大数据类型,都统一封装成了一个数据类型:redisObject。定义如下:

typedef struct redisObject {
unsigned type:4; // 类型
unsigned encoding:4; // 编码
unsigned lru:LRU_BITS; // 最近被访问的时间
int refcount; // 引用次数
void *ptr; // 指向具体底层数据的指针
} robj;
redisObject` 结构示意图如下:
redisObject 结构示意图

一、类型
typedef struct redisObject {
unsigned type:4; // 类型
} robj;
类型就是常见的五大对象类型。

新版本的常量命名是 OBJ 前缀,老版本是 REDIS 前缀(如 REDIS_STRING )

类型常量 对象名称
OBJ_STRING 字符串对象
OBJ_LIST 列表对象
OBJ_SET 集合对象
OBJ_ZSET 有序集合对象
OBJ_HASH 哈希对象
TYPE 命令可以输出指定 key 的值的对象类型。

redis > set str_key str_value
OK
redis > TYPE
string
对象名称 TYPE 命令输出
字符串对象 string
列表对象 list
集合对象 set
有序集合对象 zset
哈希对象 hash
二、编码
typedef struct redisObject {
unsigned encoding:4; // 编码
} robj;
五大类型中,每种类型可能存在着不同的编码。编码的存在主要是为了在节约内存和提高性能之间做平衡。

当数据量小的时候,会采用紧凑(性能偏低)的数据结构
当数据量达到一定阈值的时候,会从紧凑型的结构转成高效率的数据结构
由于篇幅有限,编码又比较复杂。所以编码就放到后面的文章写吧,嘿嘿嘿

三、最近被访问时间
typedef struct redisObject {
unsigned lru:LRU_BITS; // 最近被访问的时间
} robj;
当 Redis 的使用内存达到指定的阈值的时候,Redis 会对内存进行回收,回收有很多策略,其中就有 LRU 策略。

LRU 简单点来说就是,最近有修改或者访问的,就排在前面。等到要淘汰的时候,就淘汰排在后面的元素。淘汰的元素相对来说就是很久没有进行访问/修改了。

Redis 记录这个最近访问时间,就是为了 LRU 策略用的。
命令 OBJECT IDLETIME 可以查看 key 距离上次访问的时间。

由于篇幅有限,具体的淘汰策略就放到后面的文章吧,嘿嘿嘿。

四、引用次数
typedef struct redisObject {
int refcount; // 引用次数
} robj;
refcount 的作用主要是对象的引用计数和内存回收。refcount会随着对象的使用状态而变化:

在创建一个新对象时,引用计数的值会被初始化为1;
当对象被一个新程序使用时,它的引用计数值会被增一;
当对象不再被一个程序使用时,它的引用计数值会被减一;
当对象的引用计数值变为0时,对象所占用的内存会被释放。
命令 OBJECT REFCOUNT 可以查看指定 key 的引用计数值。

共享对象
那么对象什么时候才会被新程序使用呢?
为了节省内存,Redis 会在初始化的时候,创建好 0 ~ 9999 的对象,后续 0 ~ 9999 的整数值都会用这些共享对象,不会重新创建对象。

server.h

#define OBJ_SHARED_INTEGERS 10000
object.c

// …
if (value >= 0 && value < OBJ_SHARED_INTEGERS…)
// …
五、指针
typedef struct redisObject {
void *ptr; // 指向具体底层数据的指针
} robj;
指针通常来说就是指向底层数据的。
不过有个例外,当值是 string 类型,并且编码是 int 时,保存的就是这个整数值,而不是指针。

关于底层数据的结构,后面会说。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值