获得徽章 0
《手把手教你搭建系统》11月day8

一般来讲,处理 EE 问题常见的方法有下面这五种。
探索性推荐:在推荐用户可能喜欢的内容的同时,探索一些用户可能没有想到或者没有接触过的新内容。可以通过增加一些随机性和多样性等手段来实现探索性推荐,从而平衡探索和利用之间的关系。
引入领域知识:借鉴领域知识,为推荐系统提供更准确的信息,帮助系统更好地利用已有的信息,从而减少探索的需求。
利用深度学习等技术提高模型准确性和效率:深度学习技术可以帮助推荐系统更好地理解用户、内容和交互等特征,提高模型的准确性和效率。
整合多种算法:将不同算法的结果进行融合,从而得到更全面和准确的推荐结果。
动态调整推荐策略:根据用户反馈和平台目标不断修改推荐算法,动态调整推荐策略和探索率,从而达到更好地探索和利用平衡点。
总之,处理推荐系统中的 EE 问题需要综合考虑多种因素,并结合具体业务需求和算法模型,采取合适的探索策略,从而找到最好的平衡点,提高推荐的准确性和效率。
如果召回集已经产生了不好的效果,我们利用排序后的其他手段也可以解决。最主要的方式就是在这个阶段加入一些全新且多样化的内容,然后再穿插到最后的推荐列表中。
展开
评论
《基于人因的用户体验设计课》11月day7

注意力
注意力是人一定时间内知觉选择性集中的表现。注意力在心理学的概念分类有很多种,今天我们谈一下其中被讲的最多的两种概念:选择性注意力和持续性注意力。
选择性注意力
人是非常容易分心的动物,这也是大自然进化的原因。人天生就是“选择性注意”。即便人再专注于一个事情,潜意识里也会不断扫视周围情况,以寻找是否有自己感兴趣的信息。比如突然出现的声音、快速移动的物体、美食等信息,都会让你注意力分散。
选择性注意力在不同环境下敏感度不同。在完全漆黑的环境中,你可以站在高处看到 48 公里外的烛光。在一个非常安静的房间,你能听到 6 米外的手表滴答声。
对应到设计中,如果你的界面是个非常干净的界面,那么想吸引用户注意力的话,做的设计不必过于明显。但是对于一个信息密度非常高的页面,你要吸引用户的注意力,恐怕要付出高出 10 倍的努力。比如下图摩拜单车的例子,你可以先简单看一下。
在上面这个页面中,当你点击扫码开锁时,会被弹出的开锁帮助提示干扰,你就很容易忽略掉了下方的立即登录按钮,这就是个失败的注意力吸引案例。
展开
评论
《大厂设计进阶实战课》11月day6

认真努力并不是我们在职场中的差异化能力,想要获得快速成长主要依赖于 4 个职场认知:
认知 1:要成为“明星”而非“老黄牛”。认真努力是优异的品质,但不要仅限于自己的一亩三分地,要以开放的心态去观察和吸收他人的优点。
认知 2:培养上层思维,和主管有效沟通。站在主管的角度思考问题,站在团队的利益层面去思考机会点,与主管建立有效沟通。
认知 3:格局打开,走在前沿。不要沉溺在过往时代对设计师的要求里,应当与时俱进,走在行业前沿。发挥主观能动性,成为高潜力的人才。
认知 4::皮实抗打,乐观蛰伏。没有人的成长经历是一帆风顺的,成长的代价就是疼痛和肌肉撕裂,唯一不变的就是变化,负面条件往往也意味着更大的机会。
我们所有的过往,终将迎来能量爆发的一天。
展开
评论
《左耳听风》11月day5

如何让自己的技能变现
还是那句话,本质上来说,程序员是个手艺人,有手艺的人就能做出别人做不出来的东西,而付费也是一件很自然的事了。那么,这个问题就变成如何让自己的“手艺”更为值钱的问题了。
第一,千里之行,积于跬步。任何一件成功的大事,都是通过一个一个的小成功达到的。所以,你得确保你有一个一个的小成功。
具体说来,首先,你得让自己身边的人有求于你,或是向别人推荐你。这就需要你能够掌握大多数人不能掌握的技能或技术,需要你更多地学习,并要有更多的别人没有的经验和经历。
一旦你身边的人开始有求于你,或是向别人推荐你,你就会被外部的人注意到,于是其他人就会付费来获取你的帮助。而一旦你的帮忙对别人来说有效果,那就会产生效益,无论是经济效益还是社会效益,都会为你开拓更大的空间。
你也会因为这样的正向反馈而鼓励自己去学习和钻研更多的东西,从而得到一个正向的循环。而且这个正向循环,一旦开始就停不下来了。
展开
评论
《卖桃者说》11月day4

任何产品都有核心功能,其宗旨就是能帮助到用户,解决用户某一方面的需求,如节省时间、解决问题、提升效率等。核心能力要做到极致,要多想如何通过技术实现差异化,让人家做不到,或通过一年半载才能追上。
很多用户评论 QQ 邮箱时说用 QQ 唯一的理由是传文件快、有群,那这就是我们的优势,我们要将这样的优势发挥到极致。比如离线传文件,以邮件方式体现就是一个中转站,即使是超大的文件也不困难,关键是要去做。虽然真正使用的用户并不一定多,但用户会说,我要传大文件,找了半天找不到可以传的地方,万般无奈之下用了很“烂”的 QQ 邮箱,居然行了,于是我们的口碑就来了。
谈到核心的能力,首先就要有技术突破点。我们不能做人家有我也有的东西,否则总是排在第二第三,虽然也有机会,但缺乏第一次出来时的惊喜,会失去用户的认同感。这时候,你第一要关注的就是你的产品的硬指标。在设计和开发的时候你就要考虑到外界会将它与竞争对手做比较。
要做大,你首先要考虑的就是如何让人家想到也追不上。这么多年在互联网数据中心上的积累我们不能浪费,比如高速上传和城域网中转站,接着可能又会发现新的问题,如果不是邮件,在 IM 上又该怎么实现。我们的目的是要让用户感到超快、飞快,让用户体验非常好,这些都需要大量技术和后台来配合。
产品的更新和升级需要产品经理来配合,但我们产品经理做研发出身的不多。而产品和服务是需要大量技术背景支持的,我们希望的产品经理是非常资深的,最好是由做过前端、后端开发的技术研发人员晋升而来。好的产品最好交到一个有技术能力、有经验的人员手上,这样会让大家更加放心。如果产品经理不合格,让很多兄弟陪着干,结果发现方向错误,这是非常浪费和挫伤团队士气的。
展开
评论
《卖桃者说》11月day3

如何控制技术债?
从我的经验看,控制技术债主要有以下 4 步:
让公司管理层意识到偿还技术债的重要性,从而愿意投入资源;
采用低成本的方式去预防;
识别技术债并找到可能的解决方案;
持续重构,解决高优先级技术债。
接下来,我们分别看看这 4 步具体如何实施吧。
1. 让公司管理层意识到偿还技术债的重要性,从而愿意投入资源
通常来说,开发人员能直观感受到技术债的坏处,大都愿意去偿还技术债,所以技术债累积的主要原因是,管理层不理解,或者说是没有认识到技术债累积给业务发展带来的巨大坏处。
这也就意味着,解决技术债的第一步就是,让管理层意识到偿还技术债的重要性,从而愿意投入资源去解决。在我看来,让管理层理解技术债比较直观、有效的方式,就是上面提到的与经济债务的类比。
另外一个办法是,将偿还技术债与业务发展联系起来。如果能够说明某一项技术债已经阻碍了公司重要业务的发展,说服管理层投入资源解决技术债就会比较容易。
2. 采用低成本的方式预防
所谓具体问题具体分析,我们在预防技术债时,也需要根据技术债的成因采取不同的措施。
对主动引入的技术债,要尽量让管理层和产品团队了解技术上的捷径将会带来的长期危害,从而在引入技术债时客观地权衡其带来的短期收益和长期损害,避免引入不必要的技术债。
在被动引入的技术债中,由于产品演化导致设计落伍的问题不是很好预防。而由开发团队的能力问题引入的技术债,我们可以使用加强计划和代码审查等方法实现低成本的预防。
其中,加强计划,可以帮助开发人员更合理地安排时间,从而有相对充裕的时间去学习并选择更优秀的功能实现方案。而代码审查的作用就更好理解了,它可以帮助我们在早期发现一些不必要引入的技术债,以更低的成本去解决它。
关于技术债的预防,我还有一个小贴士,就是在接口部分多下功夫。因为接口涉及实现方和多个调用方,所以接口部分累积的技术债,影响范围通常比较大。而与之相对应的模块内部实现,技术债的影响范围就比较小。所以,在涉及主动引入的技术债时,我们需要区别对待接口部分和实现部分。
3. 识别技术债并找到可能的解决方案
对不能预防的技术债,我们需要高效地把它们识别出来,并了解常见的解决办法。其中,对于主动引入的技术债,可以在引入的时候就添加任务到 Backlog。
展开
评论
《投资第一课》11月day2

2015 年大牛市,市场火爆,很多人都在短期赚了大钱。我的一位从不炒股买基金的朋友,看到周围的人都赚钱了,也按捺不住冲了进来。
他按照理财经理的建议,买了 10 万元某创业板基金,很快涨了 20%,赚了 2 万。他觉得自己「做对了」,可能在投资上比较有天分,于是进一步投入了 20 万、50 万,赚了不少钱。最后,他把本来打算用作买房首付的钱也投了进来,他的原话是:「把装修的钱赚出来我就卖出。」
幸福的时光没有多久,市场很快转熊,他的这些在市场估值很高时买入的基金也被深深套牢了。后来的故事我想你也能猜到,别说装修的钱,他连首付款都赔了进去。
就像我的这位朋友一样,我们投资时收到的都是基于短期盈亏的反馈。这种反馈是基于结果的反馈,虽然重要但是不够全面。
学习投资之难,一个很重要的原因就在于缺乏有效且真实的反馈:在熊市底部加仓,大概率短期会亏钱,在牛市顶峰时买入,也很有可能赚到丰厚的「账面财富」。有趣之处就在于,正确的投资操作,从短期看,结果是随机的,而且很可能是失败的,甚至由于运气的原因,很长一段时间的结果都可能不太理想。这就像做练习题,同样的题目,答案每次都不一样,我们如果用这样的结果来给自己反馈并加以改进的话,就会陷入混乱。
展开
评论
《碳中和极简入门课》11月day1

开源:优化能源结构
所谓优化能源结构,就是要提高清洁能源在能源消费总量中的占比。那么,如何才能提高清洁能源的占比呢?第一,要大力开发清洁能源;第二,要大力推进电气化和新型电力系统的建设。
大力开发清洁能源
清洁能源包括风、光、水、核、氢,另外还有生物质能源等等。其中在我国开发最为充分的是水能,它的技术也最为成熟,而光能发展潜力最大,所以这里我们重点来了解水能和光能的开发。
2020 年我国的水力发电量达到 1.2 万亿千瓦时(度),占全部清洁能源发电的 60% 以上。然而水资源的开发受水源条件的限制,没有水的地方肯定搞不了。而且修建大坝,还会影响水体的连续性和水环境的自洁能力,因此水能的开发潜力有限。
光能资源是最公平的能源资源,与化石能源资源集中在少数国家和地区不同,虽然也存在地域差别,但是差别相对小。
光能开发和利用技术的进步很快。据国家能源局的统计,2021 年,我国的太阳能发电装机容量达到 3.0656 亿千瓦,居世界第一,全年发电 3259 亿千瓦时(度),占到全年总发电量的 3.8%,但这也只相当于我国可开采光能资源的 0.26%,所以光能的发展潜力巨大。
展开
评论
《左耳听风》10月day31

数据类型与现实世界的类比
与现实世界类比一下,数据类型就好像螺帽一样,有多种接口方式:平口的、十字的、六角的等,而螺丝刀就像是函数,或是用来操作这些螺丝的算法或代码。我们发现,这些不同类型的螺帽(数据类型),需要我们为之适配一堆不同的螺丝刀。
而且它们还有不同的尺寸(尺寸就代表它是单字节的,还是多字节的,比如整型的 int、long,浮点数的 float 和 double),这样复杂度一下就提高了,最终导致电工(程序员)工作的时候需要带下图这样的一堆工具。
这就是类型为编程带来的问题。要解决这个问题,我们还是来看一下现实世界。
你应该见过下面图片中的这种经过优化的螺丝刀,上面手柄是一样的,拧螺丝的动作也是一样的,只是接口不一样。每次我看到这张图片的时候就在想,这密密麻麻的看着有 40 多种接口,不知道为什么人类世界要干出这么多的花样,你们这群人类究竟是要干什么啊。
展开
评论
《技术领导力实战笔记2022》10月day30

对管理者角色的二次理解
相信很多人在真正了解或者登上管理职位之前,对管理岗位都或多或少存在一些误解,正如一直流传着这样三种关于管理者的角色和岗位要求的说法。
管理者像是一个乐团的指挥家,每个成员会随着他的“指挥棒”而奏出和谐美妙的乐章。
管理者,特别是中大型团队的管理者,像是木偶剧里的木偶,好多人朝不同方向拉动绳子,让这个木偶按照自己的意愿做事。
管理者像是一个正在彩排中的导演,现场非常混乱,导演需要一直把控着台上的情况、进度,指导台上的演员不断调整,甚至还要投身其中进行示范。
展开
评论
《技术领导力实战笔记2022》10月day29

参与到一线产品技术讨论中
古代战争中,优秀的将领往往都是一马当先,身先士卒的。虽然在现代战争中这种方式已经不适用了,但是在一个技术产品的开发过程中,技术管理者拥有这一点特质,能大大提升自身的影响力。
很多时候,一个技术管理者通常也兼任了产品设计者,或者系统架构师的角色。一将无能,累死三军。同理,代码的 Bug 不可怕,但产品设计上的 Bug,或者系统架构上的 Bug,往往难以修复,有时候会导致系统重构,甚至致使整个产品失败。
如何更好地避免这种情况呢?这就需要技术管理者积极地参与到一线产品技术讨论中。
因为信息传递是会失真的,每个人的认知理解也是不同的,如果不能参与到一线产品技术讨论中,就很可能出现互相不认账的情况,我相信大部分团队都遇到过。所以参与到一线技术讨论,把讨论的结果记录下来存档。这样既保证了你和团队的认知是一致的,同时也确保了你的认知是连续的。很多时候如果技术管理者不参与一线讨论,就会出现信息长期偏差的情况,相当于是在放任错误的设计,最后会造成无法挽回的损失,大量的技术债也就是这么来的。
技术管理者参与一线讨论,是真正地把这个技术团队成败的责任扛下来,同时也更容易了解团队中每一个成员的真正能力,了解当前系统存在的风险,以便于更合理地规划优先级等。
从创建观测云产品开始,我就参与了大部分功能设计,整体架构设计,甚至参与了一个 I/O 模型的设计。这种参与感一方面会让我们软件更优秀,另一方面也会无形中激励团队的其他成员,让他们感受到 CEO 与他们在一起,大家是一起努力一起投入的,而不是一个单纯的指挥家。
真正投入百分之百的精力并愿意承担责任的人就是最值得信赖的人,希望你在团队中可以成为这样一个存在。
展开
评论
《卖桃者说》10月day28

不要纠结于表面原因。
在格罗斯看来,人们的每一个想法背后,都隐藏着一个更微妙、更隐秘的幻想,也就是那些真正驱动他们做某些事的动机,但人们通常并没有意识到这一点。所以,如果你想要说服某人做某件事,不要急着去推销你的想法,而是要去了解对方的真实动机。同时,如果你能抓住那些潜在的幻想,并把这些想法推销给喜欢它的人,那么,你可能就是下一个“说服大师”。
打个比方,有人想换工作,他可能会告诉朋友原因是“他想获得更好的成长”或“觉得现在的工作已经没有成长空间了”。这时,纠结在类似这样的表面原因上并没有什么用,因为这并不是促使他离开的真正原因。真正的动机通常更简单,比如他听说前同事离开后赚的钱比他更多,于是也想找份新工作让他赚更多的钱;或者是现在的工作让他睡眠不好,想换个环境让自己获得充足的休息;或者是正好有了一个机会,去追随他一直很敬佩的人,等等。
比如有一次我和一位离职员工沟通,除了他自己表示的“工作压力大,项目太多太杂没有挑战”之外,最终我发现,引发他离职的真实原因是上一次调薪幅度太低。为什么会这样,历史原因造成的。
因此,不要被表象迷惑,你需要去寻找现象背后真正的原因,才能说服和影响对方。
展开
3
《技术领导力实战笔记2022》10月day27

管理者的立场和观念
首先我们要从思想上改变对“解聘”的看法,不要觉得我们是在代表公司做一件不好的事情。我们做的实际上是一件三方共赢的事情,对公司 / 团队、对 leader 以及对被解雇的团队成员都是好事情。
去年我们团队中有三个被汰换的同学。在确定之前我非常坦诚地跟他们聊:“我觉得你的个人特质不适合在我们这样一个公司,离开公司去寻找适合你的环境对你是好事,越早越好。为什么呢?如果你坚持留在现在的公司,你会过得很痛苦,你要努力地去适应环境、去做你并不擅长的事情,来达到公司对你的要求”。
有一句话是“甲之蜜糖,乙之砒霜”,用在人才和公司的匹配上也是一样的。所以解聘的时候我们要有这种底气,不要觉得自己是来干坏事的。团队优化过程中有一个词叫心慈刀快。心慈这里就是指从长远来看对你最好的选择。刀快指的是一旦确定真的不合适了,就要快刀斩乱麻,长痛不如短痛,尽快了断。
一般来说,团队成员的被动离开无外乎三种原因:
公司发展太快,个人没有跟上脚步。
个人的价值观和团队不匹配。
公司发展太慢,而不得不暂时“壮士断臂”,先求生存。
面对前两种情况,也是作为管理者经常遇到的情况,我们必须站在团队的角度来考虑问题,及时汰换不合适的员工。具体如何进行,需要哪些管理动作呢?我们一步一步看。
展开
评论
《技术领导力实战笔记2022》40月day26

明确下来且日常持续传递的团队文化是什么呢?很简单,4 个词:简单、透明、公平、创新。为什么选这 4 点呢?我来一一说明。
简单
先说简单,这个世界很复杂,人和人相处也很复杂,但是工作是成年人的游戏,坐在一起工作就不要拐弯抹角,要把所有的问题都摆在台面上说,用简单的方法解决复杂的问题,让自己的工作变得简单才会有更多的精力去做其他的事情,才更有效率。
比如有人想要升职加薪,那就直接来和我谈,如果确实给团队做出了很多贡献,那他的诉求就达成了。如果没有达到要求呢,这时候我们作为管理者,就应该明确地告诉员工怎么成长能达到团队或者公司的预期。要知道直线是最短的距离,简单直接的沟通更有效。但前提是团队要有这种直言的文化,这是管理者应该去营造的氛围。
透明
透明的要求就是一切以事实和数据说话,这样才能摆到台面上去谈这些事情,不是靠你的臆测。工作情况要可查,负面的情况不要隐瞒,经验教训分享要留档。我们要给团队留下一些资产,所有故障、所有问题我们都不能隐瞒,都要仔细分析,可以直接批评,但对事不对人,不要相互猜测,怎么想的就怎么说。
透明是公平的先头兵,透明做得好,公平也就容易多了。
公平
公平就是严格要求,一视同仁,个人的付出和收益要匹配,这是我跟团队所有人传达的理念,我一定会保证你付出多少就收获多少,做到公平公正,奖惩严明。
想要保证公平,管理者需要多下功夫,因为一旦考虑不周就很容易丧失公平。比如很多创业公司都喜欢按照项目去派发奖励,这个项目奖金是一个毒药,会对公平的原则造成毁灭性的打击。你可以想一想为什么?
原因很简单,项目的级别、奖金是不一样的,参与程度和分配标准也是不一样的,而决定权全都掌握在 Leader 手中,虽然他有合理的安排理由,但是却很难做到公平。所以为了保证公平,大的经济性激励,只应该跟绩效挂钩。
创新
前面说的简单、透明、公平可以作为团队日常的规约,但一个团队想要持续散发活力,还离不开创新。创新说白了就是敢想敢干,想要在团队中形成这种文化,就需要管理者给予员工足够的活动空间,鼓励员工承担风险,敢于试错。在员工提出新想法、新方案的时候给予支持,在实施的过程中多关注,以此来控制风险等级和错误成本。
展开
2
《技术领导力实战笔记2022》10月day25

作为刚刚涉足管理的“技术专才”,最需要解决的问题是如何分配自己的时间精力,管理时间和工作时间占比多少,要下多少力气在管理团队目标和回收结果上。10 人以下的小团队,我的建议是管理时间和专业时间的比例为 4:6。但在初期刚上任时,在管理上应花费更多时间,所以可能是 6:4,主要还得看不同阶段的时间侧重。
每个人其实都有自己的强项,有些人强于操作,有些人强于专业技术,有些人强于管理。但是作为管理者,要能意识到自身的问题,尽量去补足自身的短板,才能不断成长。
我们经常戏称工作为“搬砖”,其实有很多基础工作和“搬砖”无异。管理的日常工作,能做的无外乎就是标准流程、考核奖励、知人善用。这些都是管理上非常基本的技术投入。但是如果我们面对的是一个多元化的团队、复杂的任务、没有明确的目标结果、难以衡量产出的时候,这时候就需要用到管理的“艺术”了。
展开
评论
《人工智能基础课》10月day24

机器学习中的朴素贝叶斯分类算法,这一算法解决的是将连续取值的输入映射为离散取值的输出的分类问题。朴素贝叶斯分类器是一类生成模型,通过构造联合概率分布 P(X, Y) 实现分类。如果换一种思路,转而用判别模型解决分类问题的话,得到的算法就是“逻辑回归”。
虽然顶着“回归”的名号,但逻辑回归解决的却是实打实的分类问题。之所以取了这个名字,原因在于它来源于对线性回归算法的改进。通过引入单调可微函数 g(\cdot),线性回归模型就可以推广为 y = g ^ {-1} (\mathbf{w} ^ T \mathbf{x}),进而将线性回归模型的连续预测值与分类任务的离散标记联系起来。当 g(\cdot) 取成对数函数的形式时,线性回归就演变为了逻辑回归。
在最简单的二分类问题中,分类的标记可以抽象为 0 和 1,因而线性回归中的实值输出需要映射为二进制的结果。逻辑回归中,实现这一映射是对数几率函数,也叫 Sigmoid 函数
y = \dfrac{1}{1 + e ^ {-z}} = \dfrac{1}{1 + e ^ {- (\mathbf{w} ^ T \mathbf{x})}}
之所以选择对数几率函数,是因为它具备良好的特性。
展开
评论
《趣谈网络协议》10月day23

直接使用公网太不安全,所以接下来我们来看一种十分安全的 VPN,IPsec VPN。这是基于 IP 协议的安全隧道协议,为了保证在公网上面信息的安全,因而采取了一定的机制保证安全性。
机制一:私密性,防止信息泄露给未经授权的个人,通过加密把数据从明文变成无法读懂的密文,从而确保数据的私密性。
前面讲 HTTPS 的时候,说过加密可以分为对称加密和非对称加密。对称加密速度快一些。而 VPN 一旦建立,需要传输大量数据,因而我们采取对称加密。但是同样,对称加密还是存在加密密钥如何传输的问题,这里需要用到因特网密钥交换(IKE,Internet Key Exchange)协议。
机制二:完整性,数据没有被非法篡改,通过对数据进行 hash 运算,产生类似于指纹的数据摘要,以保证数据的完整性。
机制三:真实性,数据确实是由特定的对端发出,通过身份认证可以保证数据的真实性。
那如何保证对方就是真正的那个人呢?
第一种方法就是预共享密钥,也就是双方事先商量好一个暗号,比如“天王盖地虎,宝塔镇河妖”,对上了,就说明是对的。
另外一种方法就是用数字签名来验证。咋签名呢?当然是使用私钥进行签名,私钥只有我自己有,所以如果对方能用我的数字证书里面的公钥解开,就说明我是我。
展开
评论
《人工智能基础课》10月day22

从大量现象中提取反复出现的规律与模式。这一过程在人工智能中的实现就是机器学习。
从形式化角度定义,如果算法利用某些经验使自身在特定任务类上的性能得到改善,就可以说该算法实现了机器学习。而从方法论的角度看,机器学习是计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的学科。
机器学习可说是从数据中来,到数据中去。假设已有数据具有一定的统计特性,则不同的数据可以视为满足独立同分布的样本。机器学习要做的就是根据已有的训练数据推导出描述所有数据的模型,并根据得出的模型实现对未知的测试数据的最优预测。
在机器学习中,数据并非通常意义上的数量值,而是对于对象某些性质的描述。被描述的性质叫作属性,属性的取值称为属性值,不同的属性值有序排列得到的向量就是数据,也叫实例。
展开
1
《数据结构与算法之美》10月day21

在 Dijkstra 算法的实现思路中,我们用一个优先级队列,来记录已经遍历到的顶点以及这个顶点与起点的路径长度。顶点与起点路径长度越小,就越先被从优先级队列中取出来扩展,从图中举的例子可以看出,尽管我们找的是从 s 到 t 的路线,但是最先被搜索到的顶点依次是 1,2,3。通过肉眼来观察,这个搜索方向跟我们期望的路线方向(s 到 t 是从西向东)是反着的,路线搜索的方向明显“跑偏”了。
之所以会“跑偏”,那是因为我们是按照顶点与起点的路径长度的大小,来安排出队列顺序的。与起点越近的顶点,就会越早出队列。我们并没有考虑到这个顶点到终点的距离,所以,在地图中,尽管 1,2,3 三个顶点离起始顶点最近,但离终点却越来越远。
如果我们综合更多的因素,把这个顶点到终点可能还要走多远,也考虑进去,综合来判断哪个顶点该先出队列,那是不是就可以避免“跑偏”呢?
当我们遍历到某个顶点的时候,从起点走到这个顶点的路径长度是确定的,我们记作 g(i)(i 表示顶点编号)。但是,从这个顶点到终点的路径长度,我们是未知的。虽然确切的值无法提前知道,但是我们可以用其他估计值来代替。
展开
评论
《左耳听风》10月day20

分布式系统的发展
从 20 世纪 70 年代的模块化编程,80 年代的面向事件设计,90 年代的基于接口 / 构件设计,这个世界很自然地演化出了 SOA——基于服务的架构。SOA 架构是构造分布式计算应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。它采用开放标准与软件资源进行交互,并采用标准的表示方式。
开发、维护和使用 SOA 要遵循以下几条基本原则。
可重用,粒度合适,模块化,可组合,构件化以及有互操作性。
符合开放标准(通用的或行业的)。
服务的识别和分类,提供和发布,监控和跟踪。
但 IBM 搞出来的 SOA 非常重,所以对 SOA 的裁剪和优化从来没有停止过。比如,之前的 SOAP、WSDL 和 XML 这样的东西基本上已经被抛弃了,而改成了 RESTful 和 JSON 这样的方式。而 ESB(Enterprise Service Bus,企业服务总线)这样非常重要的东西也被简化成了 Pub/Sub 的消息服务……
不过,SOA 的思想一直延续着。所以,我们现在也不说 SOA 了,而是说分布式服务架构了。
展开
评论
下一页