移除数组中的数字,不用额外空间, 实战 RxSwift 中的 Observable, subscribe, dispose, 吴军老师态度读后感 John 易筋 ARTS 打卡 Week 39
1. Algorithm: 每周至少做一个 LeetCode 的算法题
笔者的文章:
算法:移除数组中的数字,不用额外空间27. Remove Element
LeetCode 全集请参考:LeetCode Github 大全
# 题目
Given an array nums and a value val, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
Clarification:
Confused why the returned value is an integer but your answer is an array?
Note that the input array is passed in by reference, which means a modification to the input array will be known to the caller as well.
Internally you can think of this:
Example 1:
Example 2:
Constraints:
1. 逐位 copy 解法
2. 头尾想换 高效率解法
2. Review: 阅读并点评至少一篇英文技术文章
笔者的文章:
翻译:实战RxSwift中的Observable, subscribe, dispose
可观察的生命周期
在上图中,可观察到的发射了 9 个元素。当一个可观察对象发出一个元素时,它会在下一个事件中发出它。
Observable
发出三个轻击事件,然后结束。这称为completed
事件。
可观察对象发出error
包含错误的事件。如果一个可观察对象发出一个error
事件,则它也将终止并且不能再发出其他任何事件。
一个observable
发出next
包含元素的事件。
初始化环境
创建一个项目命名为 RXSwiftDemo,在命令行pod init
, 在podfile
中填写如下内容,并运行pod install
.
打开workspace
就可以进行实战。
创建 observable
just
恰当地命名,因为它所做的只是创建一个包含just
单个元素的可观察序列。
在操作者从元件的规则阵列创建一个可观察到的个体类型实例的from
。
您可以of
用来创建observable
的数组或创建单个类型的可观察的数组。
下面的示例可以辨别just
,of
和from
。
订阅观察值 subscribe
订阅RxSwift
可观察对象是非常相似的;您称观察为可观察的 subscribing。
因此addObserver()
,您可以使用代替subscribe()
。
与NotificationCenter
开发人员通常仅使用其.default
单例实例不同,Rx
中的每个可观察实例都不同。
更重要的是,observable
只有拥有订阅者才能发送事件。
遵守可观察变量的例子
的empty
操作者创建具有零个元素的空可观察序列。它只会发出一个.completed
事件。
在never
操作创建一个可观察到的不排放任何东西,从来没有终止
处置和终止 dispose
要明确取消订阅,请调用dispose()
它。取消订阅或取消订阅后,dispose
当前示例中的observable
将停止发出事件
单独管理每个订阅将很乏味,因此RxSwift
包含一个DisposeBag
类型。处置袋可容纳通常使用此.disposed(by: disposeBag)
方法添加的一次性用品,并dispose()
在处置袋即将被释放时将呼叫每个处置袋。
该create
运营商有一个名为一个参数subscribe
。它的工作是提供可观察的调用订阅的实现。
使用create
定制的可观察
建立可观察的工厂
deferred
延迟读取值直到订阅.
deferred
有一个需要记住的特征。每次有新观察者时,deferred
都会从其关闭中创建Observable
。这意味着订阅 2 次将创建 2 个可观察对象。它会影响性能,但不太可能发生
deferred
订阅长计算功能时会有所帮助(如果使用create
或,则会阻塞just
)
参考
https://medium.com/@duydtdev/observables-in-rxswift-f2f451df49b7
https://beeth0ven.github.io/RxSwift-Chinese-Documentation/content/rxswift_core/observable.html
https://github.com/ReactiveX/RxSwift
3. Tips: 学习至少一个技术技巧
笔者的文章:
讲师:邱岳
1. 什么是状态图
系统中的概念或对象随着一些事件的发生,改变了状态,通常这个状态比较多、比较复杂时,我们需要用状态图来表示他们的边界,以及触发状态转换的活动。
2. 动手画 -- 员工状态转换状态图
状态图如何画得专业:
加个白底的背景框;
注释要用 45°的折角;
状态相互转换用曲线。
3. 状态图的价值
任何需要表达状态变化的业务场景,都应该有一张状态图,它几乎是可以完全代替口头沟通的一种图例,百利而无有害。还可以帮助我们发现可能的状态或状态转换缺失。
4. 什么是概念模型
概念模型是为真实世界建模的工具,它描述问题域内不同概念,以及概念之间的关系。它以直观的方式向领域专家和开发人员解释系统应当如何组织、如何工作、以及如何与用户互动。
Kindle,阅读类软件的概念模型
5. 心智模型
6. 概念模型
在现实世界中,是一段描述
在程序世界中,是代码和数据结构
在用户眼里,是一堆样式、交互和界面
需要一个模型,帮助我们为现实世界中的描述建立结构化的模型,帮助我们了解如何构建和改进产品,澄清复杂性,指导系统结构和界面设计。还可以帮我们在不同的背景中建立共识,统一术语和出发点。
7. 概念模型设计过程
用领域语言和用户语言进行【描述】,名词是可能的【实体】,动词是可能的【关系】。
在不同的名字空间中,统一术语,删减不必要的【实体】。
定义每两者之间的关系,并明确【一对多】,【多对一】,【一对一】,【多对多】的原则。
找到不同实体的行为。
8. 动手画 -- 微信视频号 概念模型
9. 概念模型的价值
有一个【完整】的系统视角,看到系统内的概念以及关系。
帮助思考和澄清一些边界性的问题。
有一个明确的概念关系统一沟通,统一开发、业务和用户视角。
9.1 概念模型的风险和问题
画图一时爽,读图有可能比较困难。
要靠大量的沟通,很难独立读懂。
模型和当前用例/业务规则之间,可能存在差异(比如一个微信号关联几个视频号?)
9.2 一点小小的经验
概念模型图,很多时候,对自己的意义大于对外沟通,是一个结构化提问的过程。
通常做过开发,设计过表结构的人,更容易理解这个东西是啥,建议学。
可能是需要迭代更多的一种图。
To B 业务中通常更加需要。
规模到一定程度,可能就很难读懂了,建议有机拆解。
4. Share: 分享一篇有观点和思考的技术文章
笔者的文章:
说明
《态度》- 吴军 四十封启明家书 读后感。此书相当大的内容和得到的《硅谷来信一》、《硅谷来信二》、《硅谷来信三》专栏重复。闪光点在于以家书的形式,吴军跟两位女儿梦华、梦馨的书信对话。
1. 人生哲学
1.1 乐观的人生态度
乐观的人生态度比什么都重要,美国的父母对孩子的学习不是要求很高,因为长大以后有没有出息不知道,但是从小到大的 18 年的快乐是能够享受的。吴军的父母不在孩子的面前吵架,说明环境对人的影响相对重要。
吴军自认为还是一个充满快乐的人,主要在以下 4 个方面做得还算好。
不断地接收教育,与时俱进。
有理想并努力实现自己的愿望。
与人相处共事,尽可能互相尊重,相互包容。
看透人生。
1.2 幸福的来源
幸福的来源来自基因的传承。吴军曾经说过人生必须做的第一件事是恋爱、结婚、生子。
人生的一条河,人的影响力有河流的长度、深度、广度三个维度决定的。要有所传承。
1.3 成功是成功之母
如果有人跟你说 1+1 != 3 ,这是正确的废话,因为 1 + 1 != 4、5、6... 失败是成功之母是为了鼓励失败者不要放弃。但是真正有指导意义的是,成功是成功之母。如果一件事情能做到 100%,总结一下成功的方法,换个事情通常也能做得好。
1.4 好习惯成就一生
命运,命 Fate,运 Fortune 很重要。吴军接触了很多办公司成功,把它们推上市的创始人,他们几乎无一例外地承认,自己不过是运气好一点而已。
命运有什么决定呢?是基因。英国著名的女首相撒切尔夫人对这种基因辽很精辟的分析,她说:
注意你的想法,因为它能决定你的言辞和行动。
注意你的言辞和行动,因为它能主导你的行为。
注意你的行为,因为它能变成你的习惯。
注意你的习惯,因为它能塑造你的性格。
注意你的性格,因为它能决定你的命运。
看一个人在小时候挨了一巴掌的反应,就能知道 TA 的命运。第一种,一巴掌扇回去(遇到拳王就一命呜呼了);第二种,认命,捂着脸走开(阿 Q、祥林嫂那就认怂了);第三种,先冷静分析,也许是我们真该被扇,那就接受教训,也许对方真的就是个浑蛋,我们也许该叫警察或者他的家长、老板来管他,当然也可以有人日后找机会整治他,让他记住教训。
2 洞察世界
2.1 好运气背后是三倍的努力
孩子,如果你想获得 10 分的成绩,仅仅准备 10 分的努力是远远不够的,你可能要准备 30 分的努力。有时,我们看到某些人有一些运气,似乎偶然得到了他们想要的东西。其实,这些运气背后,可能是 30 分的努力。
英国教育家约翰·纽曼曾经这样描述一种理想的大学教育:
先生们,如果让我必须在那种由老师管理,修够学分就能毕业的大学和那种没有教授、考试,让年轻人在一起共同生活、互相学习三四年的大学(比如在过去的几十年里牛津大学就是这么做的)中选择一种,我将毫不犹豫地选择后者。
>为什么呢?我是这样想的,当许多聪明、求知欲强、富有同情心且目光敏锐的年轻人聚到一起,即使没有人教,他们也会相互学习。他们会互相交流,了解新的思想和看法,看到新鲜的事物,并且掌握独到的行为判断力。
3. 对待金钱
4. 人际关系
5. 有效学习
6. 做人做事
版权声明: 本文为 InfoQ 作者【John(易筋)】的原创文章。
原文链接:【http://xie.infoq.cn/article/0f79f83daf3af688b85ccf329】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论