- 博客(444)
- 资源 (11)
- 收藏
- 关注

原创 架构师资源汇总 从入门到精通 将近20年的工作经验毫无保留分享
说明笔者参加极客大学架构师训练营,把架构师的方方面面都做了详细笔记。此文为资源的汇总篇。(持续更新中…)讲师 - 现艺龙同程首席架构师 李智慧 (前Intel架构师,阿里巴巴架构师)主课程架构师职责 听课总结 – 第一课架构视图,设计文档 – 第二课编程的本质与未来 第三课 听课总结框架设计、设计原则、设计模式 第四课 听课总结框架开发 设计原则 设计模式 反应式编程框架 上课总结 第五课框架开发 模式与重构 JUnit、Spring、Hive核心源码解析 第6课 听课总结系统架构 高
2020-08-20 11:17:16
1474
8

原创 【易实战】SpringCloud Greenwich架构概览深度详解
说明在远古时代算盘可以解决算力问题,在20世纪初期电脑单机还是少数精英的特权,在21世纪互联网风起云涌超级单机服务器不仅贵也应对不了海啸般的流量,集群、分布式系统来解围,SpringCloud微服务作为解决方案的佼佼者出现了。Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spr...
2020-01-31 12:28:09
599

原创 服务器灾备解决方案--两地三中心(图文详解)
说明两地三中心:两地是指同城、异地三中心是指生产中心、同城容灾中心、异地容灾中心。备端在线两地三中心灾备方案网络设计如下:容灾系统 衡量指标衡量容灾系统的主要指标有RPO(Recovery Point Object) :灾难发生时允许丢失的数据量RTO(Recovery Time Objective) : 系统恢复的时间容灾半径: 生产系统和容灾系统之间的距离ROI(R...
2020-01-27 23:48:52
7684
2

原创 算法导论 高频算法题 数据结构与算法之美
说明业务开发工程师,你真的愿意做一辈子 CRUD Boy吗?基础架构研发工程师,写出达到开源水平的框架才是你的目标!对编程还有追求?不想被行业淘汰?那就不要只会写凑合能用的代码!之前花了1年时间学完《算法导论》,实际上里面有很多数学公式,微积分,概率,举证,和归纳法,学起来确实投入很多时间。知名论坛一亩三分地,推荐《Cracking the Coding Interview》太贵. L...
2019-02-20 10:31:38
617
原创 极客大学产品经理训练营:业务流程与产品文档 第11课总结
讲师:邱岳1. 原型图1.1 手绘图 + Scanner Pro1.2 线框图1.3 高保真产品图1.4 做原型图的目的坍缩:规划时梦到自己成了乔布斯,赶紧画个图让自己冷静冷静;具体:具体就是故事,讲故事的能力就是营造画面感的能力;沟通:多方都看得懂的抓手,文档描述的【索引】。思考:在原型图中发现很多在文档和规划是想不到的问题。2. 做原型图的步骤列出用例(有哪些功能?)基于用例规划界面(有哪些界面?)列出界面结构(界面路径?信息架构?)每个界面的元素和行为以及优先
2021-02-27 22:21:12
14
原创 实战RxSwift中的Observable, subscribe, dispose, filter
可观察的生命周期在上图中,可观察到的发射了9个元素。当一个可观察对象发出一个元素时,它会在下一个事件中发出它。Observable发出三个轻击事件,然后结束。这称为completed事件。可观察对象发出error包含错误的事件。如果一个可观察对象发出一个error事件,则它也将终止并且不能再发出其他任何事件。一个observable发出next包含元素的事件。初始化环境创建一个项目命名为RXSwiftDemo,在命令行pod init, 在podfile 中填写如下内容,并运行pod ins
2021-02-24 23:09:30
14
原创 极客大学产品经理训练营:业务架构与概念模型 第10课总结
讲师:邱岳1. 什么是状态图系统中的概念或对象随着一些事件的发生,改变了状态,通常这个状态比较多、比较复杂时,我们需要用状态图来表示他们的边界,以及触发状态转换的活动。2. 动手画 – 员工状态转换状态图状态图如何画得专业:注释要用45°的折角;状态相互转换用曲线。3. 状态图的价值任何需要表达状态变化的业务场景,都应该有一张状态图,它几乎是可以完全代替口头沟通的一种图例,百利而无有害。还可以帮助我们发现可能的状态或状态转换缺失。4. 什么是概念模型概念模型是为真实世界建模的工
2021-02-24 22:04:41
31
原创 极客大学产品经理训练营:产品文档和原型咋弄 - 流程图 第9课总结
讲师:邱岳1. 图的意义流程图、活动图、时序图、状态图,本次聚焦于过程和行为描述。提效、宏观、点睛。梳理思路用例:做什么? 流程图:怎么做?2. 流程图、活动图、时序图3. 动手画 – 钉钉直播流程图4. 动手画 – 新人报道活动图5. 动手画 – 极客时间Push活动图6. 动手画 – 钉钉直播时序图7. 动手画 – 极客时间 Push 时序图8. 活动图?时序图?状态图?活动图是单个活动之间的流动,时序图是责任分配。活动图的细节和表达力以及信息密度略逊
2021-02-20 22:46:28
40
原创 算法:移除数组中的数字,不用额外空间27. Remove Element
LeetCode全集请参考:LeetCode Github 大全题目27. Remove ElementGiven 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
2021-02-20 14:37:34
31
原创 翻译:最令人印象深刻的YouTube频道,可让您学习AI,机器学习和数据科学
说明数据科学是一个多学科领域,专注于数据分析和机器学习。例如,这项工作可以提供给Web应用程序,但是数据科学家的工作是分析和预测建模。该工作报告2020年的未来,同时看着日益战略和日益冗余岗位版显示全行业的相似之处。对下一个未来的需求不断增长的领导者包括数据分析师和数据科学家,人工智能和机器学习专家,机器人工程师和数字转换专家。这些是不断扩大的知识领域,在社会中发挥着巨大作用。在过去的几年中,我选择了YouTube上使用次数最多的最佳AI,机器学习和数据科学频道。您仍然可以使用这个疯狂的2020年
2021-02-17 22:45:57
16
原创 《态度》- 吴军 四十封启明家书 读后感
说明《态度》- 吴军 四十封启明家书 读后感。此书相当大的内容和得到的《硅谷来信一》、《硅谷来信二》、《硅谷来信三》专栏重复。闪光点在于以家书的形式,吴军跟两位女儿梦华、梦馨的书信对话。1. 人生哲学1.1 乐观的人生态度乐观的人生态度比什么都重要,美国的父母对孩子的学习不是要求很高,因为长大以后有没有出息不知道,但是从小到大的18年的快乐是能够享受的。吴军的父母不在孩子的面前吵架,说明环境对人的影响相对重要。吴军自认为还是一个充满快乐的人,主要在以下4个方面做得还算好。不断地接收教育,与时俱
2021-02-17 22:01:49
52
4
原创 极客大学产品经理训练营 产品文档和原型 作业4
作业【本周作业】写一个用例,挑一个:你自己的产品 / 你喜欢的产品 / 【拍东西】发起拍卖/ 【知识星球】加入星球/ 【极客时间】购买课程;1. 标题作者修改历史标题:【极客时间】购买课程作者历史时间易筋创建2021-01-092. 简要描述极客时间 App, 为用户提供购买课程功能。购买的主要渠道有极客时间 App内购买,微信购买,购买返现等。3. 利益相关者 / 涉众 / 参与人及其相关利益4. 事件流:进本流程 / 扩展流程 / 异常流程基础流程
2021-02-09 20:33:18
44
原创 《领域驱动设计精粹》DDD Domain-Driven Design Distilled -- Vaughn Vernon 读后感
说明关于设计是否必要或是否负担得起的问题根本都没有问到点上:设计是不可或缺的。除了优秀设计就是糟糕设计,根本不存在“不做设计”一说。 – Douglas Martin《领域驱动设计精粹》-- Vaughn Vernon 是《领域驱动设计》的浓缩版。讲述了软件工程如何避免造成大泥球的混乱状况。从战略设计、战术设计提供了限界上下文(边界)、子域、上下文映射;聚合、领域事件、事件风暴等思维和工具。大泥球经过DDD设计得到核心领域模型(以保单为例子)1. 限界上下文任何事情都要定义边界,因为资
2021-02-06 10:56:42
44
原创 算法:从有序数组中移除重复的数据26. Remove Duplicates from Sorted Array
题目26. Remove Duplicates from Sorted ArrayGiven a sorted array nums, remove the duplicates in-place such that each element appears only once and returns the new length.Do not allocate extra space for another array, you must do this by modifying the input
2021-02-05 14:53:25
18
原创 极客大学产品经理训练营 产品思维和产品意识 解决方案的设计与积累 作业3
作业1:基于你关注产品的利益相关者,想想他们的问题,自己设定一些前提,做个简单的排序。分析对象:京东作业2:简单说一下可能的解决方案。
2021-02-02 13:36:11
73
原创 Mac OS git多次需要输入用户名密码config解决
问题git 或者 CocoaPods拉取依赖的时候,多次需要输入用户名密码。Mac OS 版本 Catalina 10.15解决创建文件 ~/.ssh/config, 写入下面的配置,解决。Host * AddKeysToAgent yes UseKeychain yes参考https://stackoverflow.com/questions/7773181/git-keeps-prompting-me-for-a-password...
2021-01-31 23:25:24
30
原创 翻译:swift 5 iOS的UIStackView教程:堆栈视图简介
说明更新说明:Ehab Amer已针对Swift 5,iOS 12和Xcode 10更新了本教程。Jawwad Ahmad撰写了原文。您是否曾经需要在运行时期间从视图中添加视图或从视图中删除视图,并调整视图旁边的视图布局?也许您调整了一些约束或使用了第三方库来完成这项工作。也许不是在运行时运行,而是您想在情节提要中的其他视图之间添加一个新视图。在这些情况下,您需要更改几个约束。您可能会发现自己删除了该区域中的所有约束,然后又重新添加了它们。UIStackView简化了此类任务。您可以轻松地在堆栈视图
2021-01-31 23:12:55
49
2
原创 算法:合并两个有序链表21. Merge Two Sorted Lists
LeetCode全集请参考:LeetCode Github 大全题目21. Merge Two Sorted ListsMerge two sorted linked lists and return it as a sorted list. The list should be made by splicing together the nodes of the first two lists.Example 1:Input: l1 = [1,2,4], l2 = [1,3,4]Output
2021-01-31 11:05:56
35
2
原创 Swift 5用Template自动创建VIPER架构代码
说明创建VIPER架构,XCode手动创建比较麻烦,而且容易出错。很自然可以想到用自动化的方式创建,可以用Template进行创建。1. 如何安装克隆存储库 https://github.com/zafarivaev/VIPER-Template导航到Xcode Templates文件夹:~/Library/Developer/Xcode/Templates/。如果“Templates”文件夹不存在,请创建它将VIPER Module.xctemplate复制并粘贴到Templates文件夹中
2021-01-24 19:02:07
56
4
原创 翻译:您在Swift 5中的第一个UITest
1. 什么是自动UITest?当谈到测试时,我们通常会考虑单元测试。但是,在应用程序世界中还有另一种功能极其强大且有用的测试:UITests。这些测试的目的是验证您的UI行为是否符合预期:按钮处于正确的状态,字符串的样式正确,导航在我们进行编码时发生。测试的主体模拟了与UI交互的use r,从而导致应用程序随着时间的推移而发展,并允许我们断言某些条件,我们希望在应用程序执行过程中满足要求。2. 为什么要执行自动UITest?作为所有测试活动,编写适当的UITests需要时间。但是,这段时间将来将为
2021-01-24 18:03:10
30
原创 极客大学产品经理训练营 产品思维和产品意识 作业2
作业1 - 抽奖助手:假设你是一个抽奖小程序产品的负责人,列出产品的利益相关方;抽奖发起人:个人、组队成员、支付方、使用方、朋友圈朋友第三方:微信、支付平台、广告商、电商供应:个人、公司、组织环境:监管、税资本:战略投资、财务投资…作业2 - 其它你喜欢的平台:挑一个你喜欢的产品平台,列出利益的相关方;广告主、电商、组队成员。...
2021-01-23 22:19:50
94
原创 算法:匹配有效的括号20. Valid Parentheses
LeetCode全集请参考:LeetCode Github 大全题目20. Valid ParenthesesGiven a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.An input string is valid if:Open brackets must be closed by the same type of
2021-01-23 18:11:27
21
原创 极客大学产品经理训练营 认识产品经理 作业1
1. [如果公司要招一个人代替你] 给自己当前的岗位写一个理想的岗位模型(Job Model)智能硬件产品经理 (15-30k·12薪)职位描述:负责硬件产品功能定义、性能测试,出具安装调试使用说明书;负责软硬件结合产品的产品定义、市场调研、需求分析、竞品分析、产品功能设计和交互设计;进行硬件的成本核价分析,具备良好的供应商谈判能力,使产品更有竞争力;4、依据公司整体战略,负责规划产品线,制定产品开发计划,推动产品需求落地。5、收集用户意见,持续优化产品用户体验,制定产品改进迭代路线。定期对
2021-01-17 22:07:32
114
原创 RxSwift 5官方Demo调试和学习资源
中文学习资源https://beeth0ven.github.io/RxSwift-Chinese-Documentation/官网学习官网入门文档https://github.com/ReactiveX/RxSwift/blob/main/Documentation/GettingStarted.md推荐下载官网demohttps://github.com/ReactiveX/RxSwift.git如何调试Demo:Open Rx.xcworkspace.Build the RxEx
2021-01-17 18:03:18
53
2
原创 翻译:RxSwift的历史以及概念详细解析
说明RxSwift到底是什么?这是一个很好的定义:RxSwift是一个库,用于通过使用可观察的序列和功能样式运算符来组成基于异步和基于事件的代码,从而允许通过调度程序进行参数化执行。听起来复杂吗?不用担心。编写反应式程序,理解其背后的许多概念以及浏览许多常用的相关术语可能会令人感到恐惧-尤其是如果您尝试一次全部使用它,或者当您没有将其引入其中时。结构化的方式。我们还没有完全确定RxSwift是什么,是吗?让我们从一个简单的,易于理解的定义开始,并逐步发展成为更好,更具表现力的定义,当我们在本章
2021-01-17 17:53:24
46
原创 算法:最长公共前缀字符串14. Longest Common Prefix
LeetCode全集请参考:LeetCode Github 大全题目14. Longest Common PrefixWrite a function to find the longest common prefix string amongst an array of strings.If there is no common prefix, return an empty string “”.Example 1:Input: strs = ["flower","flow","flight"
2021-01-17 11:24:59
26
原创 算法:罗马数字转换为整数13. Roman to Integer
LeetCode全集请参考:LeetCode Github 大全算法13. Roman to IntegerRoman numerals are represented by seven different symbols: I, V, X, L, C, D and M.Symbol ValueI 1V 5X 10L 50C 100D
2021-01-10 22:37:10
26
原创 git pull问题解决error: cannot lock ref
问题在git pull的时候报错error: cannot lock ref解决方案运行如下命令解决git remote prune origin解析:这将删除文件夹中对远程分支的引用.git/refs/remotes/origin。因此,这不会影响您的本地分支机构,也不会更改任何远程对象,但会更新您对远程分支机构的本地引用。在某些情况下,这些引用可能包含Git无法正确处理的数据。参考https://stackoverflow.com/questions/6656619/git-and-na
2021-01-04 11:43:55
80
原创 翻译:swift 5通过使用泛型进行高级异步操作Operation
说明异步操作使您可以编写长时间运行的任务,而又可以在多个任务之间添加依赖关系。可以跟踪进度,并且通过使用可以使调度变得容易OperationQueue。通过添加泛型和Swift结果类型,我们可以从异步操作中获得更多收益。在开始操作并使用异步操作编写并发解决方案之后,现在该看看如何为我们的代码库提供更高级的解决方案。这完全基于我们在WeTransferCollect应用程序中使用的实现,其中我们使用了50多种不同的操作。创建结果驱动的异步操作通常情况下,某个运算会产生特定值。至少有一种捕获已发生的错误
2021-01-04 09:23:23
36
原创 时间管理的技巧 - 计划表格和截止日期
时间管理一直都是丢三落四的,而且形不成体系。最近学习了得到专栏,汤君健老师的《怎样成为时间管理的高手》。发现这个表格做计划确实很清晰和进度更进。截止日期确实利用了心理学,人承诺以后,会一直记在心里,有紧迫感。笔者优化为月度表格,在腾讯文档中记录。...
2021-01-03 22:11:36
135
原创 算法:回文数字9. Palindrome Number
LeetCode全集请参考:LeetCode Github 大全题目9. Palindrome NumberDetermine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.Follow up: Could you solve it without converting the integer to a string?Example
2021-01-03 21:58:43
23
原创 翻译:swift 5初始化 被忽略的Convenience便捷初始化、Required和继承
初始化初始化是准备使用的类,结构或枚举实例的过程。此过程涉及为该实例上的每个存储属性设置一个初始值,并执行新实例准备使用之前所需的任何其他设置或初始化。您可以通过定义初始值设定项来实现此初始化过程,初始值设定项类似于可以调用以创建特定类型新实例的特殊方法。与Objective-C初始值设定项不同,Swift初始值设定项不会返回值。它们的主要作用是确保首次使用类型之前,正确初始化类型的新实例。类类型的实例还可以实现一个deinitializer,它在释放该类的实例之前执行任何自定义清除。有关反初始化程序
2020-12-28 09:12:02
74
原创 单元测试的必要性 从bug修复 费用成本和时间成本综合考虑
单元测试与新飞机的质量⾸先不可避免要回答的⼀个问题是,“为何要做单元测试?”,我个⼈的回答是:“这是保证——你写的代码是你想要的结果——的最有效办法!”,当然如果你有更好的办法,请不吝赐教。没有完备的单元测试的代码所构成的⼀个系统,就像组装⼀架飞机,各个配件没有分别经过严格检验,只在最后组装好后,再通过试飞来检验飞机是否正常⼀样。尽管软件开发可以“开着飞机换引 擎”,但万⼀引发了线上事故,影响了绩效,减少了发量,这样的成本还是太⾼了。所以优秀的工程师总会想尽⼀切办法保证⾃⼰的出品没有质量问题,而单元测
2020-12-26 10:58:01
72
原创 翻译:where在Swift中的用法
说明Swift中强大的关键字where可以轻松过滤出值。它可以用于许多不同的变体中,本文中列出了其中的大多数变体。enum中的用法考虑具有以下枚举:enum Action { case createUser(age: Int) case createPost case logout}使用,where您可以轻松过滤特定年龄范围的案件:func printAction(action: Action) { switch action { case .crea
2020-12-26 10:31:15
47
原创 IntelliJ IDEA 查看类结构,查看类图,继承关系,查看package包关系
IntelliJ IDEA 查看类结构,查看类图,继承关系,查看package包关系在包上面右键 > Diagrams > Show Diagrams…(快捷键 Command + Option + Shift + u)选择 Java Class Diagrams即可笔者用Junit4的源码查看的类图结构如下。如果要查看包package结构,在层级更上面的package上右键,用上面的方法即可。如果选择了popup出来,就弹出了一个新弹框 (快捷键 Comma
2020-12-23 09:12:07
188
原创 翻译:Swift 5编写并发编程,并发解决方案和异步Operation
说明异步操作允许执行长时间运行的任务,而不必阻塞调用线程,直到执行完成为止。这是建立关注点分离的好方法,特别是与在操作之间创建依赖项结合使用时。如果您不熟悉操作,建议您先阅读博客文章 Swift中的Operations和OperationQueues入门。这篇文章可以帮助您入门并介绍基本知识。让我们开始研究异步操作,首先查看它们之间的区别及其同步的对立面。异步与同步操作看起来差别不大;实际上,它只是一个A,但实际差异要大得多。同步操作更容易设置和使用,但是只要异步操作不阻塞调用线程就无法运行。异步
2020-12-22 20:09:23
47
原创 翻译:Swift中的Operations和OperationQueues入门
说明Swift中的操作是一种强大的方法,可以在跟踪进度和依赖项的同时将职责划分为多个类。它们的正式名称为NSOperations,并与结合使用OperationQueue。确保首先阅读我在Swift中关于并发的文章 ,这样您就知道队列和调度的基础知识。操作与调度块有很多共同点,但还有更多好处。让我们开始吧!Swift中的Operation是什么?操作通常负责单个同步任务。这是一个抽象类,从未直接使用过。您可以使用系统定义的BlockOperation子类或通过创建自己的子类。您可以通过将操作添加到O
2020-12-22 09:06:22
38
原创 算法:最大值期望
题目描述小强得到了长度为n的序列,但他只对非常大的数字感兴趣,因此随机选择这个序列的一个连续子序列,并求这个序列的最大值,请告诉他这个最大值的期望是多少。样例 1:输入: [1, 2, 3]输出: 2.33说明:一共有六个子区间,分别是 [1], [2], [3], [1, 2], [2, 3], [1, 2, 3]分别的最大值是 1, 2, 3, 2, 3, 3每一个最大值出现的概率是1 / 6,所以最大值期望是 7 / 3,得到答案: 2.33样例 2:输入: [2, 3, 2
2020-12-21 21:22:55
93
原创 算法:翻转整数7. Reverse Integer
题目7. Reverse IntegerGiven a 32-bit signed integer, reverse digits of an integer.Note:Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, ass
2020-12-18 14:37:25
33
原创 算法:两个数的和等于指定值1. Two Sum
LeetCode全集请参考:LeetCode Github 大全题目1. Two SumGiven an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.You may assume that each input would have exactly one solution, and you may not use the
2020-12-18 14:33:48
38
价值过亿的架构师训练营课面试题和答案.pptx
2020-09-10
利用 Auto Scaling 实现 弹性高可用.pdf
2020-10-20
创建 Amazon Virtual Private Cloud(VPC).pdf
2020-10-20
Identity and Access Management(IAM)简介.pdf
2020-10-20
Amazon Neptune Workshop-Fundamental-V1.0.pdf
2020-10-31
Amazon Simple Storage Service(S3)简介.pdf
2020-10-20
Amazon EC2 服务简介.pdf
2020-10-20
架构师图谱-大作业二.png
2020-09-17
给初中生分享社会需要的人才.pptx
2020-09-16
ImageAlpha.zip
2020-05-03
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝