为什么链队存储结构要两个?要分两个结构体来定义

seosqwseo5个月前 (07-02)测评日记57

一、数据结构队列问题***为什么链队***要分两个结构体来定义

因为链队结构是一种运算受限的线性表,其限制是仅允许在表的一端进行插入,而在表的另一端进行删除。每个元素必然按照进入的次序离队,所以又把队列称为先进先出表。

链式队列存储结构也是通过由结点构成的单链表实现的。

在单链表中可以在表中的任何位置插入数据,不过在链队中,只能从末尾插入数据,从起始处删除。所以就需要一个结构来定义下一个节点的位置。

你可以将单链表理解为允许松散的队伍,它是允许插队的。

链队是有人管理的队伍,它有严格的要求,有一个管理者,不允许插队,管理者控制着队伍的进出。

一个结构体是管理者,一个结构体是队伍的起始和结束位置。

二、为什么冰箱会致癌

近,网上流传的“放冰箱会致癌食品黑名单”又火了。追根溯源,蝌蚪君发现文章的原始出处在这里。这已经是2012年的一篇老文章了,谣言就是这么有活力,经久不衰,时常被拿出来翻新再用。而另外一个版本的黑名单,则存在文不对题的问题,文章内容其实是不能放冰箱的食物以及储藏和冷冻食物的六大禁忌。

仔细阅读,会发现文中列出的“食品黑名单”包括香蕉、鲜荔枝、西红柿、黄瓜、叶子菜、巧克力、火腿、面包、鱼、中*、吃剩的月饼等,内容为食品若在冰箱中放置时间过长,易导致**变质乃至营养流失。如果仅从食品放入冰箱时间过长易**变质这一点,就将这些食品归类为“放冰箱会致癌的食品黑名单”,明显过于牵强。如果不放到冰箱里,很多食物腐烂的更快,那致癌的东西岂不太多。另外,文章提到的“有些食品吃多了可能致癌”指的究竟是哪些食品?科学依据又是什么?根本没有提及。

客观地说,任何食物在常温下放置一段时间后都会变质,即使在冰箱保存,也不宜时间过长。而“食品黑名单”中提到的不同种类食物,需要分开讨论。

1.水果蔬菜

放在冰箱里的新鲜水果蔬菜,“变质”分两种,一种是在冰箱低温环境中自身产生化学变化,另一种是“霉变”。

以香蕉为例,在低温条件下,香蕉中的超氧化物歧化酶(SOD)的活性会急剧降低,不能及时清除细胞内自由基。越积越多的自由基会改变细胞膜的通透性,破坏细胞结构。另一方面,低温还能提高果胶酯酶的活性,这种酶会分解不溶性的果胶,从而使香蕉组织变软。放在冰箱里的香蕉果皮还会变黑,这是因为果皮中的聚苯氧化酶(PPO)把香蕉皮中天然存在的酚类聚合为多酚,这种多酚是一种与**皮肤中黑色素类似的物质。此外,香蕉果皮的细胞膜破损之后,会释放出多巴胺,在氧化酶的作用下这种物质会与空气中的氧发生反应,生成棕色物质。这样一来,香蕉就变得又黑又软,不堪食用了。放在冰箱里的黄瓜表面也容易出现一些水渍斑,那也是由于低温影响了细胞膜作为“城墙”的功能,终引起细胞坏死。[1]

发生这些现象的原因,简而言之,都是“细胞的破损”,如果细胞破损后,没有细菌进驻,食用是相对安全的,只不过味道和口感会差一点。但由于细胞的破损,氨基酸、糖和无机盐等从细胞中流出来,给致病微生物、特别是真菌的生长提供了良好条件,一旦被霉菌侵占,问题就不同了。例如,腐烂蔬菜在细菌作用下,所含的硝酸盐会还原成亚硝酸盐,进入**后,可使血液失去携带氧气的功能,造**体缺氧,引起头痛、头晕、恶心、呕吐、心跳加快、抽筋等症状。

2.肉类

肉类由于本身含有丰富的蛋白质和脂肪,为细菌繁殖提供了良好条件。冷却猪肉上的**菌主要有假单胞菌属细菌、乳酸菌、肠杆菌科细菌、微球菌属细菌、葡萄球菌和酵母菌等。不同肉类的蛋白质与脂肪含量有所不同,情况不可一概而论,但目前市面上所卖的冷鲜肉都会根据肉的种类和特性人为添加不同的保鲜剂以延长肉类的食用期限,例如丁香和桂皮的浸提工艺及其他常见天然防腐剂,像茶多酚、壳聚糖、大蒜、Nisin、溶菌酶、蜂胶和迷迭香等。[2]

超市中出售的冷鲜肉

冷鲜肉被我们拿回家放到冰箱里后,就只能通过降低环境温度继续保鲜。如果希望近期食用而放在冷藏室,实验证明,5℃的整体保鲜效果比10℃或15℃都要好[3]:

如果是放在冷冻室,肉类能储藏的时间与本身所带的细菌数量、冰箱环境及冷冻温度都有关系。一般冰箱的冷冻室有-18°C的低温,这个温度下,上文提到的肠杆菌、单胞菌等细菌活动都会受到很大限制。所以,理想条件下,灭菌加低温,肉类可以保存很久。

需要注意的是,为了保持肉类食品原有的鲜度和味道,延长存放期,必须采取速冻。在速冻过程中,肉类食品内结成的冰晶很小,其组织细胞内液与细胞外液及细胞间的结晶体,不会流出来;否则肉类食品会结成大的冰晶,破坏食品的细胞膜,造成细胞破裂,组织养分、鲜度在解冻后随水流失,使肉变得松散、鲜味大减。肉类正确的冷冻方法是先将温度控制器的旋钮调到冷档,使压缩机不停地快速冷冻,大约经过30分钟后,再将温控器旋钮置于通常所需温度的档位上,这样就可以保证食品原有的鲜度和味道。

也许你冷冻的方法不对,肉会随着时间的加长而逐渐味道变差,但跟致癌是没有任何关系的。

3.巧克力

巧克力放入冰箱中保存并无问题,只不过从冰箱取出后要尽快食用。因为巧克力中的糖分容易被表面的水分所溶解,待水分蒸发后会留下糖晶,影响口味。刚从冰箱中取出的巧克力,由于低于室温,会导致空气中的水分在其表面凝结,从而加剧这种现象。

4.月饼

淀粉老化确有其事,但受诸多因素共同影响。冰箱的冷藏温度也许在淀粉变性老化适宜的2~10℃内,但月饼所含的大量脂类和乳化剂又可以抗老化。总之,月饼还是尽快食用为好。但不管怎样,淀粉老化是淀粉分子重新排列的过程,跟致癌没有关系。

5.中*

中*种类过多,储存方法请开*时遵医嘱,这里不过多赘述。

综上所述,“致癌食品黑名单”全文总结起来,也不过就是“变质的东西”不能吃这一再寻常不过的概念。蝌蚪君提醒大家,轻易带有“明确结论”的各种“榜单”是谣言的可能性非常大,在网上看到之后一定要提高警惕。

真正与致癌相关、不宜多吃的食物

1、腌制食品:如咸鱼产生的二甲基亚硝酸盐,在体内可转化为致癌物质二甲基亚硝酸胺;

2、烧烤食品:含蛋白质类的食品在加热过程中会产生一种3,4苯并芘的致癌物。人们如果经常食用苯并芘污染的食品,致癌物质会在体内积蓄,有诱发胃癌、肠癌的危险;

3、熏制食品:熏制食品中都含有一定量的苯并芘,苯并芘对多种动物具有致癌性;

4、油炸食品:淀粉类食品在超过120℃高温的烹调下容易产生丙烯酰胺,而动物试验结果显示丙烯酰胺是一种可能致癌物;

5、隔夜熟白菜、腌菜:会产生亚硝酸盐,在体内会转化成亚硝酸铵致癌物质;

6、霉变食物:如米、麦、豆、玉米等被霉菌污染后会产生致癌*素-黄曲霉菌等。霉变食物不是不宜多吃,是坚决不能吃。

(在此感谢北京食品学会对本文提供的帮助。如果您有食品健康方面的疑惑或者流言需要解答,请务必告诉蝌蚪君,蝌蚪君将第一时间邀请权威专家为您科学解惑。)

----------------------------------------

参考文献:

[1]果壳

[2]赵建生.冷却肉保鲜技术研究[D].西北农林科技大学,2010.

[3]邵伟,熊泽,唐明.冷鲜肉货架期生物学参数变化研究[J].肉品卫生,2005,07:23-24+44.

凡来源署名为“蝌蚪五线谱”的内容,版权归蝌蚪五线谱所有,任何媒体、网站或个人未经授权不得转载,否则追究相应法律责任。申请转载授权或合作请发送邮件至editor@kedo.gov。本网发布的署名文章仅代表作者观点,与本网站无关。如有侵权,文责自负。

作者:蝌蚪君

三、数据库为什么要分库分表

1基本思想之什么是分库分表?

从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上。

2基本思想之为什么要分库分表?

据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据*作,增

删改查的开销也会越来越大;另外,由于无法进行分布式式部署,而一台服务器的资源(CPU、磁盘、内存、IO等)是有限的,终数据库所能承载的数据量、

数据处理能力都将遭遇瓶颈。

3分库分表的实施策略。

分库分表有垂直切分和水平切分两种。

3.1

何谓垂直切分,即将表按照功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立定义数据库workDB、商品数据库payDB、用户数据

库userDB、日志数据库logDB等,分别用于存储项目数据定义表、商品定义表、用户数据表、日志数据表等。

3.2

何谓水平切分,当一个表中的数据量过大时,我们可以把该表的数据按照某种规则,例如userID散列,进行划分,然后存储到多个结构相同的表,和不同的库

上。例如,我们的userDB中的用户数据表中,每一个表的数据量都很大,就可以把userDB切分为结构相同的多个userDB:part0DB、

part1DB等,再将userDB上的用户数据表userTable,切分为很多userTable:userTable0、userTable1等,

然后将这些表按照一定的规则存储到多个userDB上。

3.3应该使用哪一种方式来实施数据库分库分表,这要看数据库中数据量的瓶颈所在,并综合项目的业务类型进行考虑。

如果数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单明了、容易实施的垂直切分必是**。

如果数据库中的表并不多,但单表的数据量很大、或数据热度很高,这种情况之下就应该选择水平切分,水平切分比垂直切分要复杂一些,它将原本逻辑上属于一体

的数据进行了物理分割,除了在分割时要对分割的粒度做好评估,考虑数据平均和负载平均,后期也将对项目人员及应用程序产生额外的数据管理负担。

在现实项目中,往往是这两种情况兼而有之,这就需要做出权衡,甚至既需要垂直切分,又需要水平切分。我们的游戏项目便综合使用了垂直与水平切分,我们首先对数据库进行垂直切分,然后,再针对一部分表,通常是用户数据表,进行水平切分。

4分库分表存在的问题。

4.1事务问题。

在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。

4.2跨库跨表的join问题。

在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联*作将受到限制,我们无法join位于不同分库的表,也无法join分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成。

4.3额外的数据管理负担和数据运算压力。

外的数据管理负担,显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算,例如,对于

一个记录用户成绩的用户数据表userTable,业务要求查出成绩好的100位,在进行分表之前,只需一个order

by语句就可以搞定,但是在进行分表之后,将需要n个order

by语句,分别查出每一个分表的前100名用户数据,然后再对这些数据进行合并计算,才能得出结果。

相关文章

SHARP夏普质量测评好不好

SHARP夏普质量测评好不好

很多小伙伴在关注SHARP夏普怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

海信电视65英寸图文测评

海信电视65英寸图文测评

很多小伙伴在关注海信电视65英寸怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

小米(MI)Redmi测评怎么样

小米(MI)Redmi测评怎么样

很多小伙伴在关注小米(MI)Redmi怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

闪迪(SanDisk)128GBTF(MicroSD)存储卡口碑好不好

闪迪(SanDisk)128GBTF(MicroSD)存储卡口碑好不好

很多小伙伴在关注闪迪(SanDisk)128GBTF(MicroSD)存储卡怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款...

阿尔法蛋超能蛋智能机器人中英学习启蒙早教机好不好用

阿尔法蛋超能蛋智能机器人中英学习启蒙早教机好不好用

很多小伙伴在关注阿尔法蛋超能蛋智能机器人中英学习启蒙早教机怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一...

酷狗KUGOUPB11质量好不好

酷狗KUGOUPB11质量好不好

很多小伙伴在关注酷狗KUGOUPB11怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...