很多人只会看看书 抄抄框架 对用合理的技术合理的成本实现没点逼数。知识面窄实践不考虑细节场景。合格的架构师真的很少 一堆无脑微服务的 杀鸡用牛刀的 对技术平滑迁移没概念没规划的 不知道怎么结合当前应用规模合理设计架构的 唉
架构师和程序员其实是两种不同的人,他们的思维方式有本质区别,虽然表面看上去他们都是懂软件技术会编写代码的
架构师很多是从程序员过来的,所以他们可以理解程序员思维,但是反过来就不一定了,程序员大多数不具备架构思维。
我们可以从一行代码开始,想象自己逐渐把镜头拉远,以便有更广阔的视野,可以看到全局。
代码==>函数==>算法==>逻辑==>模块==>框架==>功能==>应用==>产品==>服务==>业务==>企业==>行业==>产业链==>经济体==>人类社会==>星辰大海
每递进一个层次,涉及的规模都要扩大几个数量级
架构师主要工作在模块到应用之间,程序员主要工作在代码和模块之间,应用到产业链是企业家的工作范围,业务到经济体则是金融家资本家的领域,经济体之上是政治家的事情。
架构师首先要有更广阔的视野,能从代码看到经济体,然后再聚焦到模块和应用之间,对下规划代码函数到模块的设计,对上为产品服务提供支撑。
架构师需要的能力主要是设计能力,这里的设计不是指算法逻辑的设计,更不是代码语法函数参数的设计,要解决的问题不是算法精度或者运行性能,而是研发体系的效率,质量和成本。
再次强调,架构设计是用来解决研发体系的效率,质量和成本问题的。
架构师是通过对模块,框架的设计,参与制定研发体系流程,从而获得更高开发效率,更高交付质量和更低研发成本。
大部分人做不了架构师,不是因为他不够聪明勤奋,也不是因为他代码写得不够好不够多,而是因为他的思维方式思考的维度不对,没有建立架构思维,还停留在程序代码思维层次。
我们来看看架构设计师都在干什么?
图形程序员在干什么?
数据搬运程序员,干的是最脏最累的活。
uint32_t PAL_MagicSelectionDialog::transfer_data_co(Co_t::push_type &co_source) { char szDesc[512],*next; int i,j,k; BYTE bColor; auto rgMagicItem = dd->rgMagicItem; auto &g_iCurrentItem = dd->g_iCurrentItem; auto &g_iNumMagic = dd->g_iNumMagic; //must co_source(0); while (true) { dd->wReturn = 0xFFFF; //compute cond_draw_desc printf("data co___00
"); if (gpGlobals->lpObjectDesc) { printf("data co___001
"); dd->cond_draw_desc = true; dd->cond_draw_desc_element = true; } else { printf("data co___002
"); dd->cond_draw_desc = false; } printf("data co___0021
"); co_source(0); if (!dd->cond_draw_desc) { printf("data co___002
"); // Draw the cash amount. //PAL_CreateSingleLineBox(PAL_XY(0, 0), 5, FALSE); dd->curr_text_arg = { PAL_GetWord(CASH_LABEL), PAL_XY(10, 10), 0, FALSE, FALSE }; co_source(0); dd->curr_number_arg = { (int)gpGlobals->dwCash, 6, PAL_XY(49, 14), kNumColorYellow, kNumAlignRight }; co_source(0); // Draw the MP of the selected magic. //PAL_CreateSingleLineBox(PAL_XY(215, 0), 5, FALSE); dd->curr_rle_arg = { PAL_SpriteGetFrame(gpSpriteUI, SPRITENUM_SLASH), PAL_XY(260, 14) }; co_source(0); dd->curr_number_arg = { rgMagicItem[dd->g_iCurrentItem].wMP, 4, PAL_XY(230, 14), kNumColorYellow, kNumAlignRight }; co_source(0); dd->curr_number_arg = { dd->g_wPlayerMP, 4, PAL_XY(265, 14), kNumColorCyan, kNumAlignRight }; co_source(0); } else { printf("data co___003 _draw_desc %d
", dd->cond_draw_desc_element); //dd->cond_draw_desc = true; const char *d = PAL_GetObjectDesc(gpGlobals->lpObjectDesc, rgMagicItem[dd->g_iCurrentItem].wMagic); // Draw the magic description. if (d != NULL){ printf("data co text_draw_desc_element1
"); k = 3; strcpy(szDesc, d); d = szDesc; printf("data co text_draw_desc_element2
"); while (TRUE) { printf("data co text_draw_desc_element3
"); next =const_cast<char*>(strchr(d, '*')) ; if (next != NULL){ *next = ' '; next++; } printf("data co text_draw_desc_element4
"); dd->curr_text_arg = { d, PAL_XY(100, k), DESCTEXT_COLOR, TRUE, FALSE }; co_source(0); //PAL_DrawText(d, PAL_XY(100, k), DESCTEXT_COLOR, TRUE, FALSE); k += 16; if (next == NULL){ break; } d = next; } } dd->cond_draw_desc_element = false; // Draw the MP of the selected magic. co_source(0);// PAL_CreateSingleLineBox(PAL_XY(0, 0), 5, FALSE); printf("data draw rle 00000000000000000000000000000000000000001
"); dd->curr_rle_arg = { PAL_SpriteGetFrame(gpSpriteUI, SPRITENUM_SLASH), PAL_XY(45, 14) }; co_source(0); printf("data draw num 00000000000000000000000000000000000000000012 %d %d
", dd->g_iCurrentItem,rgMagicItem[dd->g_iCurrentItem].wMP); dd->curr_number_arg = { rgMagicItem[dd->g_iCurrentItem].wMP, 4, PAL_XY(15, 14), kNumColorYellow, kNumAlignRight }; co_source(0); printf("data draw num 00000000000000000000000000000000000000000013 dd->g_wPlayerMP=%d
", dd->g_wPlayerMP); dd->curr_number_arg = { dd->g_wPlayerMP, 4, PAL_XY(50, 14), kNumColorCyan, kNumAlignRight }; co_source(0); dd->cond_draw_desc = false; //old stop == new start } //dd->cond_draw_all_item_text------------------------------------------------------------------ i = g_iCurrentItem / 3 * 3 - 3 * 2; if (i < 0) i = 0; printf("data co___004 i= %d ,g_iNumMagic=%d
",i, g_iNumMagic); for (j = 0; j < 5; j++) { for (k = 0; k < 3; k++) { //--select menu item color----------------------------------------------- bColor = MENUITEM_COLOR; if (i >= g_iNumMagic){ // End of the list reached j = 5; break; } if (i == g_iCurrentItem){ if (rgMagicItem[i].fEnabled) { bColor = MENUITEM_COLOR_SELECTED; } else { bColor = MENUITEM_COLOR_SELECTED_INACTIVE; } } else if (!rgMagicItem[i].fEnabled) { bColor = MENUITEM_COLOR_INACTIVE; } //----select menu item color--------------------------------------------- // // Draw the text // printf("data co___0041
"); dd->curr_text_arg = { PAL_GetWord(rgMagicItem[i].wMagic),PAL_XY(35 + k * 87, 54 + j * 18), bColor, TRUE, FALSE }; co_source(0); //PAL_DrawText(PAL_GetWord(rgMagicItem[i].wMagic),PAL_XY(35 + k * 87, 54 + j * 18), bColor, TRUE, FALSE); // // Draw the cursor on the current selected item // if (i == g_iCurrentItem) { printf("data co___0042
"); dd->cond_draw_current_item = true; dd->curr_rle_arg = { PAL_SpriteGetFrame(gpSpriteUI, SPRITENUM_CURSOR), PAL_XY(60 + k * 87, 64 + j * 18) }; co_source(0); //PAL_RLEBlitToSurface(); } dd->cond_draw_current_item = false; i++; } } dd->cond_draw_all_item_text = false; //old stop == new start printf("data co___005
"); if (g_InputState.dwKeyPress & kKeySearch) { printf("data co___0051
"); if (rgMagicItem[g_iCurrentItem].fEnabled) { printf("data co___0052
"); dd->cond_draw_select_and_return = true; j = g_iCurrentItem % 3; k = (g_iCurrentItem < 3 * 2) ? (g_iCurrentItem / 3) : 2; j = 35 + j * 87; k = 54 + k * 18; dd->curr_text_arg = { PAL_GetWord(rgMagicItem[g_iCurrentItem].wMagic), PAL_XY(j, k), MENUITEM_COLOR_CONFIRMED, FALSE, TRUE }; co_source(0); //draw dd->wReturn = rgMagicItem[g_iCurrentItem].wMagic; //return rgMagicItem[g_iCurrentItem].wMagic; } } printf("data co___006
"); co_source(0);//return } }
每个人都是在实践中长大的,做领导的会慢慢地做更高级的架构,而专业程序员,就只能在所在专业做到细分极限了。
这部分代码是用我协程把sdlpal的代码 翻译了一下。
觉得有启发的话,可以点个赞。 毕竟看的人少。想要了解更多c++和 协程思想。可以关注一下我的专栏。
协程思想,将是次世代改变程序员命运的法宝。不学就是青春饭,学了,越老越吃香
感觉主要因为技能点并不是十分一致。
架构要脱离了太具体的细节看整体的结构和权衡,跟执行层的软件工程师有交叉的地方,但是视角,思维方式和关注点都完全不一样。
架构师对具体的技术细节不需要了解的太深,但是需要对整体有把握,需要对软件有比较深刻的宏观理解,对各种技术都有涉足,还要懂怎么跟人沟通,把具体的技术细节和宏观结构,策略都联系在一起。
毫无问题。
牛顿最大的成就不是物理学成就,而是数学成就,这是发明了微积分的牛人。
弄懂相对论跟量子力学,其实对普通人来说,最大的困难依然不是物理上的理解困难,而是数学能力。只要数学能力足够,理解相对论跟量子力学并没有那么大的困难。
牛顿,作为一个伟大的数学家,看这些并不会有困难,拿到物理学博士显然也没有问题。
--
可能唯一的问题就是:他最好能活得足够久不要英年早逝,毕竟现代的病毒比他当年要厉害多了。
这两个游戏都有自己的问题。但严重程度完全不一样。
赛博朋克最大的问题是人力不够,没有人手把愿景在限期内做出来,导致后期狂砍。但从已有的成品来看,CDPR是完全有人才有能力把东西做出来的,只不过没时间做。光影效果,已有的垂直城市设计,以及主线和很多支线任务的演出都有毫不输巫师3的气质,尤其是日本城浮空平台那关,无论是游戏流程还是画面还是音乐,都把类似银翼杀手2047的那种气氛和感受做到了极致。有人说CDPR的人才都跑了,或者CDPR傲娇了开始放水,这并不客观。2077确实是个半成品,主机优化的问题尤其严重,但你关注已经完成的部分,用高配置PC玩,其质量并未令人失望,依然是巫师3的水准。
2077就像是一个优等生忘了做背后的几题的考卷,开天窗导致不及格,但已经做了的题目还是正确率极高的。
谈到E3的demo,单从画面上讲你很难说它缩水了。只不过CDPR没告诉你想要E3画面,就得上3080+光线追踪。。。
我猜想没有光追的话,游戏在大多数情况下也是可以达到光追的效果的,只不过人工工作量会很大,有些地方需要离线烘培,而有些地方需要人工设置虚拟光源。CDPR可能发现项目后期工作量太大搂不住了,就上了光追这个大杀器。。。
至于无人深空,现在口碑很好,但我要不客气地讲,这个游戏到了今天依然是垃圾,只配卖$19.95,打折的时候卖2.95的那种。
Hello工作室自始自终都没有把初始愿景实现的技术能力。
你可以看无人深空进入大气层的技术实现。先是一段飞船进入大气层摩擦发红的特效,然后可以看见地形通过一种非常粗糙、视距很近的情况下刷新出来,并且刷出来的地貌和太空中看到的地貌完全不同。所以从头到尾,hello工作室都没有类似精英危险和星际公民的无缝行星登陆技术。
无人深空更新了十几次,并没有触动这个游戏除了机械刷就没有任何深度的本质。这是一个极其无聊的游戏。但它刷了两年的DLC,玩家也就给他点面子,没功劳有苦劳。它每次更新我都会进游戏看看,但玩不了半小时就会放弃。一是实在无聊,二是它美术设计和渲染水平有限,色彩及其刺眼。比如在母船机库里,到处都是亮瞎狗眼的点状光源,但这些光源不会照亮周围的任何东西,看的时间长了有种不带护目镜看焊接的流泪效果。你说更新了那么久,这么简单的问题都不解决,有什么用呢。游戏中随处可见低级设计的痕迹,比如说有很多行星上有一种可以卖钱的球,这种球没有任何贴图,只有亮瞎眼的纯白色材质,在HDR效果下极其刺眼,但它又不是个光源,放在地上不会照亮周围任何东西。这种打开Blender就存盘的建模初手垃圾素材居然也能放在游戏里,真是活久见。
所以无人深空就像是一个学渣冒充学霸,把期望提得无限高,却每题都答错结果接近0分,被骂,然后花了漫长的时间在那里订正,一题一题的改,最后终于接近30分了,然后获得了大家的赞赏,全然忘记了它改了那么久依然是不及格。
无人深空的贴图我就不贴了,首发的时候真是纯垃圾,基本上是2008年魔兽世界首发的那个水准。现在也依然是垃圾,开个HDR看着眼睛都疼。
这两个游戏都有自己的问题。但严重程度完全不一样。
赛博朋克最大的问题是人力不够,没有人手把愿景在限期内做出来,导致后期狂砍。但从已有的成品来看,CDPR是完全有人才有能力把东西做出来的,只不过没时间做。光影效果,已有的垂直城市设计,以及主线和很多支线任务的演出都有毫不输巫师3的气质,尤其是日本城浮空平台那关,无论是游戏流程还是画面还是音乐,都把类似银翼杀手2047的那种气氛和感受做到了极致。有人说CDPR的人才都跑了,或者CDPR傲娇了开始放水,这并不客观。2077确实是个半成品,主机优化的问题尤其严重,但你关注已经完成的部分,用高配置PC玩,其质量并未令人失望,依然是巫师3的水准。
2077就像是一个优等生忘了做背后的几题的考卷,开天窗导致不及格,但已经做了的题目还是正确率极高的。
谈到E3的demo,单从画面上讲你很难说它缩水了。只不过CDPR没告诉你想要E3画面,就得上3080+光线追踪。。。
我猜想没有光追的话,游戏在大多数情况下也是可以达到光追的效果的,只不过人工工作量会很大,有些地方需要离线烘培,而有些地方需要人工设置虚拟光源。CDPR可能发现项目后期工作量太大搂不住了,就上了光追这个大杀器。。。
至于无人深空,现在口碑很好,但我要不客气地讲,这个游戏到了今天依然是垃圾,只配卖$19.95,打折的时候卖2.95的那种。
Hello工作室自始自终都没有把初始愿景实现的技术能力。
你可以看无人深空进入大气层的技术实现。先是一段飞船进入大气层摩擦发红的特效,然后可以看见地形通过一种非常粗糙、视距很近的情况下刷新出来,并且刷出来的地貌和太空中看到的地貌完全不同。所以从头到尾,hello工作室都没有类似精英危险和星际公民的无缝行星登陆技术。
无人深空更新了十几次,并没有触动这个游戏除了机械刷就没有任何深度的本质。这是一个极其无聊的游戏。但它刷了两年的DLC,玩家也就给他点面子,没功劳有苦劳。它每次更新我都会进游戏看看,但玩不了半小时就会放弃。一是实在无聊,二是它美术设计和渲染水平有限,色彩及其刺眼。比如在母船机库里,到处都是亮瞎狗眼的点状光源,但这些光源不会照亮周围的任何东西,看的时间长了有种不带护目镜看焊接的流泪效果。你说更新了那么久,这么简单的问题都不解决,有什么用呢。游戏中随处可见低级设计的痕迹,比如说有很多行星上有一种可以卖钱的球,这种球没有任何贴图,只有亮瞎眼的纯白色材质,在HDR效果下极其刺眼,但它又不是个光源,放在地上不会照亮周围任何东西。这种打开Blender就存盘的建模初手垃圾素材居然也能放在游戏里,真是活久见。
所以无人深空就像是一个学渣冒充学霸,把期望提得无限高,却每题都答错结果接近0分,被骂,然后花了漫长的时间在那里订正,一题一题的改,最后终于接近30分了,然后获得了大家的赞赏,全然忘记了它改了那么久依然是不及格。
无人深空的贴图我就不贴了,首发的时候真是纯垃圾,基本上是2008年魔兽世界首发的那个水准。现在也依然是垃圾,开个HDR看着眼睛都疼。
我叫冈萨雷斯,是一个西班牙人,巴塞罗那工厂工人。
1936年,西班牙第二共和国成立的第5年,大选中人民阵线获得了胜利,可把我高兴坏了,他们说要保障工人权利实行社会主义,为此进行了一系列改革。但是军队似乎有自己的想法,政府也不信任军队,为此他们组建了无产阶级先锋队,我加入了,虽然我不知道为什么。几个月来我被派往阿拉贡山区,瓦伦西亚港口,安达卢西亚进行一次又一次的宣传。真是不知道乡下人怎么想的,他们似乎不欢迎我们。听说政府清洗了一个又一个的高级军官,但是内战还是在7月爆发了。我们的对手是一群叫长枪党的人,还有一些保皇派,他们疯了吗想把国王请回来?苦日子没过够吗?我在家乡投入投入了战斗。
我叫埃米利奥,是一个西班牙人,加利西亚的神父。
5年前一群疯子赶走了我们敬爱的国王,现在他们又开始不切实际的改革,什么国有化,什么无神论,这些该死的异教徒,以后要下地狱的。我不关心什么选举,那是城里人的事情,我只想国王能够回到这个国家,带来稳定。一天我的小儿子从军队回来,告诉我要打仗了,我不太相信。饶了我们吧,这世界已经够乱了!但是如果能把国王迎回来,一切都好说。7月的一天,战争开始了,儿子要返回部队了,他的长官也是保皇党,听说他们缺士兵,于是我和我儿子一起来到了前线。我只听我父亲说过他参加的第三次卡洛斯战争,这次轮到我为国王而战了!
我叫弗朗西斯,是一个西班牙人,梅利利亚的水兵。
愚蠢的城里人只知道一天到晚什么改革改革的,还削减我们的军饷。我们这些保家卫国的人凭什么被你们这些人左右,他们懂什么国家,还好军官们也这么想,所以政府指挥不动我们,哈哈!我只知道追随大名鼎鼎的弗朗哥将军,听说他加入了一个长枪党,里面都是些和我一样爱国的小伙子们,我也要为国家而战!虽然我是个水兵,但是听说将军需要更多步兵来和共和军扳手腕,海军马鹿也要上岸了!
我叫乔治,我不是一个西班牙人,我是一个英国人,一个记者。
我在英国接受了良好的教育,又在殖民地为陆军服役了几年,但是我早就厌恶了帝国的虚伪与剥削。我信仰起了马克思,也曾经到欧洲大陆支持过共产主义运动。但是我也反感俄国人,他们不自由,只知道控制自己的人民。他们不是真正的马克思主义。而西班牙人民的选择让我看到了不同的道路,于是我来到西班牙,想见证他们的革命。没想到才来了短短几个月,就爆发了内战,于是我加入到了国际纵队之中,为理想而战。
我叫威廉,我也不是西班牙人,我拒绝承认国家这个概念,是的,我是无政府主义者。
我叫何塞,我是葡萄牙人,里斯本港口工人。
我叫安东尼奥,我也是葡萄牙人,波尔图农民。
……
未完待续
人的睡眠偏好被称为“睡眠类型”或“时型”(chronotype),具体分为早睡早起的“清晨型’(morningness),晚睡晚起的“夜晚型”(eveningness)和不早不晚的中间型,中间型占的比例可能最多,而睡眠类型一般相信是先天性加上后天环境的影响。 一般以11点睡眠为中间型的分界,题主想比较的10pm – 6am的睡眠模式属于早晨型,而2am – 10am睡眠模式属于夜晚型。
我们大脑中的下丘脑维持着人体的总生物钟,称为视交叉上核(SCN)。而人体大部分细胞器官都维持各自的子生物钟(peripheral clock)。 SCN从瞳孔接收光信息,维持大概24小时的昼夜节律,SCN通过神经系统(自主神经,autonomic nerve),荷尔蒙系统(下丘脑-垂体,hypothalamo-pituitary)等的信号(例如乙酰胆碱、褪黑素、皮质醇等)跟其他细胞器官的子生物钟沟通和同步。总生物钟SCN主要通过光线作出反应,细胞器官的子生物钟主要通过饮食和身体运动调整。 饮食包括食物质量、食物的卡路里和进食时间等都在影响子生物钟,这些饮食和运动因素称为“授时因子”(zeitgebers)。授时因子会推迟或加快大脑总生物钟的时间,生物钟的时差称为“相位偏差”(phase-shift)。所以总生物钟接收光信号后,会影响身体细胞器官的功能,而细胞器官则对进食和运动作出反应,影响大脑的总生物钟。 所以我们晚间的光线,进食时间和运动时间等,都是影响我们生物钟的“睡眠类型”的环境因素。
习惯了晚睡晚起的人都会觉得自己是夜猫子,一定是夜晚型的,相反习惯了早睡早起的一般都觉得自己是早晨型的,但其实有更科学的方法分析诊断究竟个人属于哪一个睡眠类型的:问卷方法或DLMO测试方法。问卷方法顾名思义是通过回答问卷得出量表分数,两个公认比较准确的问卷量表是“慕尼黑时型问卷.” (MCTQ) 和清晨型-夜晚型量表(MEQ),两者都有一定的准确度,但公认最准确达到是“褪黑素昼夜节律时间”(DLMO),原理是人的内源褪黑素在准备入睡前会增加分泌,DLMO是通过晚上到早上收集尿液或唾液化验评估褪黑素在不同时点分泌的状况以作出最准确的判断。有研究比对了MCTQ和MEQ跟DLMO的差异,[1]发现偏差还挺大,所以就算较为科学认可的问卷都不能准确反映人体真正的睡眠类型,我们自己猜可能就更大偏差了,也许我们不应该过早给自己下定论,自己一定就是夜晚型一定需要晚睡。光线压抑褪黑素的分泌,推迟正常睡眠时间,造成人为的“晚间型”睡眠模式,对健康造成隐患。[2]
大量研究比较过夜晚型和早晨型人群的代谢性指标发现夜晚型的人出现各种代谢性疾病更多,2015年的对照组研究,[3] 韩国的研究人员把1620名年龄在47-59岁的人群样本归类为早晨型(29.6%),夜晚型(5.9%)和不早睡也不晚睡的中间型(64.5%)。研究发现只有夜晚型的人群跟更高的代谢性疾病有关,特别是男性,夜晚型的男性患上糖尿病的风险是298%,肌肉缺乏症的风险是389%,而女性出现代谢综合征的风险也高达222%。
研究也发现夜晚型人群更容易出现胰岛素抵抗。2013年日本的一项对照组研究,[4]比对了早晨型和夜晚型的糖尿病受试者,发现夜晚型的受试者,反映中期血糖水平的HbA1c和LDL水平更高,更难控制血糖水平。
夜晚型也跟精神健康有关联性,2019年美国约翰霍普金斯大学等多家大学学者发表的研究,[5] 分析了362家学校的2.9万高中生,发现夜晚型学生出现情绪问题,行为问题的风险更高,而精神健康分数也越低,尽管考虑了睡眠时长的因素,睡眠时间越晚,出现精神健康问题的风险就还是越高。
2019年的文献回顾,[6] 也发现夜晚型的成年人跟抑郁症,药物滥用,睡眠障碍和精神障碍有关联性。
哥伦比亚大学的横断研究,[7] 也发现夜晚型的女性跟心血管疾病有关联性,夜晚型女性的心血管风险增加241%。
那为什么夜晚型的人更容易出现各种代谢性疾病和精神健康问题? 因为晚睡很多时跟不健康的饮食和“错误”的进食时间有关。 [8] 研究发现夜晚型的人晚上摄入更多的卡路里,而晚上摄入卡路里增加肥胖风险。
哈佛大学和爱荷华大学的学者在2019年发表的对照组研究,[9] 跟踪了872名受试者一年时间,得出早晨型和夜晚型受试者的饮食跟健康关系的有趣的数据。研究发现夜晚型人群在晚间摄入最多卡路里比例的,相对同是晚间型的人但晚间摄入卡路里最少比例的,肥胖风险增加5倍!夜晚型人群晚间吃碳水化合物和蛋白质多的,肥胖风险分别增加4.5倍和3.7倍,但早晨型的人没有同样的风险。
题主也问到晚上10点睡到清晨4点是否健康,其实成人的最佳睡眠时长是7到9小时,已经有大量的流行病学研究发现过短和过长的睡眠时间跟疾病和死亡率有J型或U型关系。例如青岛大学发表的荟萃分析,[10] 包括了35个研究一共150万人的样本,当中有14万个死亡案例,发现睡眠时间时长在7小时,全因死亡率最低,过短和过长的睡眠可能跟健康问题有关,最佳全因死亡全因死亡率,建议大家7小时睡眠可能可以降低死亡风险。所以一天6小时睡眠并不是最理想的。
综合上述近年的研究,人的睡眠类型有早晨型的早睡早起型,夜晚型的晚睡晚起型,和正常作息的中间型,睡眠类型受先天因素和环境因素影响,晚间光线会推迟我们的生物钟,造成人为的夜晚型睡眠类型,而夜晚型睡眠模式增加糖尿病,心血管病和精神健康风险。这些风险起码部分跟饮食模式有关,如果晚睡晚起的人可以减少晚间摄入的卡路里,实行更健康的饮食模式,研究发现可以大幅降低肥胖和代谢性风险。
参考
[1] Kantermann, T., Sung, H., & Burgess, H. J. (2015). Comparing the Morningness-Eveningness Questionnaire and Munich ChronoType Questionnaire to the Dim Light Melatonin Onset. Journal of biological rhythms, 30(5), 449–453. https://doi.org/10.1177/0748730415597520
[2] Ashbrook, L. H., Krystal, A. D., Fu, Y. H., & Ptáček, L. J. (2020). Genetics of the human circadian clock and sleep homeostat. Neuropsychopharmacology : official publication of the American College of Neuropsychopharmacology, 45(1), 45–54. https://doi.org/10.1038/s41386-019-0476-7
[3] Yu, Ji & Yun, Chang-Ho & Ahn, Jae & Suh, Aly & Cho, Hyun & Lee, Seung & Yoo, Hye Jin & Seo, Ji A & Kim, Sin Gon & Choi, Kyung Mook & Baik, Sei Hyun & Choi, Dong & Shin, Chol & Kim, Na-Hyung. (2015). Evening Chronotype Is Associated With Metabolic Disorders and Body Composition in Middle-Aged Adults. The Journal of clinical endocrinology and metabolism. 100. jc20143754. 10.1210/jc.2014-3754.
[4] Iwasaki, M., Hirose, T., Mita, T., Sato, F., Ito, C., Yamamoto, R., Someya, Y., Yoshihara, T., Tamura, Y., Kanazawa, A., Kawamori, R., Fujitani, Y., & Watada, H. (2013). Morningness-eveningness questionnaire score correlates with glycated hemoglobin in middle-aged male workers with type 2 diabetes mellitus. Journal of diabetes investigation, 4(4), 376–381. https://doi.org/10.1111/jdi.12047
[5] Gariépy, G., Riehm, K. E., Whitehead, R. D., Doré, I., & Elgar, F. J. (2019). Teenage night owls or early birds? Chronotype and the mental health of adolescents. Journal of sleep research, 28(3), e12723. https://doi.org/10.1111/jsr.12723
[6] Kivelä, L., Papadopoulos, M. R., & Antypa, N. (2018). Chronotype and Psychiatric Disorders. Current sleep medicine reports, 4(2), 94–103. https://doi.org/10.1007/s40675-018-0113-8
[7] Makarem, N., Paul, J., Giardina, E. V., Liao, M., & Aggarwal, B. (2020). Evening chronotype is associated with poor cardiovascular health and adverse health behaviors in a diverse population of women. Chronobiology international, 37(5), 673–685. https://doi.org/10.1080/07420528.2020.1732403
[8] Mazri, F. H., Manaf, Z. A., Shahar, S., & Mat Ludin, A. F. (2019). The Association between Chronotype and Dietary Pattern among Adults: A Scoping Review. International journal of environmental research and public health, 17(1), 68. https://doi.org/10.3390/ijerph17010068
[9] Xiao, Q., Garaulet, M., & Scheer, F. (2019). Meal timing and obesity: interactions with macronutrient intake and chronotype. International journal of obesity (2005), 43(9), 1701–1711. https://doi.org/10.1038/s41366-018-0284-x
[10] Shen, Xiaoli & Wu, Yili & Zhang, Dongfeng. (2016). Nighttime sleep duration, 24-hour sleep duration and risk of all-cause mortality among adults: A meta-analysis of prospective cohort studies. Scientific Reports. 6. 21480. 10.1038/srep21480.
开源代码没啥可评价的。
但对RISC-V的生态有何影响还得再看,简单说把risc-v带入Android生态,就给risc-v的应用提供了不小的应用场景,但是还不清楚相关的工具链的成熟度。新闻上Android studio/NDK已经支持了RISC-v的交叉编译环境,但还不知道成熟度如何,这些实际上都会对选型有影响。Google对Android的性能调优做了很多工作,也有不少工具,这些东西何时开始支持risc-v也比较重要。
理论上RISC-v依赖Android生态,对Google是好事,但毕竟Google利用GMS还是控制了相当程度上的Android生态,当年号称不作恶的谷歌还是利用开源方案包装了一个半开放系统。依赖Android的任何厂商实际上都面临华为之前的问题。华为被迫选择了HMS之路,但其他中国厂商呢?
我觉得是时候由中国厂商联合比如欧洲或日韩厂商推出一个绕开GMS的,真正开放的andriod生态了。