从软件思想抽象出几条做事原则

从软件思想抽象出几条做事原则

从紧耦合到松耦合

解耦的目的是为了灵活的组装和匹配。我们希望通过解耦,实现各个模块的充分自治,受到外界环境的影响足够小。

所以我一般会把系统分成三层:

  1. 最上层是流程层,是我们和产品沟通的主要层次;
  2. 最下面是领域层,是研发需要专注建设的一层;
  3. 中间是编排层,实现了不同场景、不同能力对于底层能力的组合与编排;

www.zeeklog.com  - 从软件思想抽象出几条做事原则

所以松耦合是灵活编排的基础。

现实生活中解决问题道理类似,我们首先需要储备足够多不同特殊场景下的专业解决能力,也就是知识库;还需要识别不同要求下的方案目的,然后灵活组装解决问题,也就是我们的最佳实践。

架构是个从静态到动态的过程

我认为架构是处理元素+关系。如何针对不同场景灵活组合与编排这些元素和关系就是架构的过程。所以架构是个从“静态到动态”的过程。

很多人仅仅把架构看做是静态的事情,导致架构缺少演进能力。

www.zeeklog.com  - 从软件思想抽象出几条做事原则

在工作中,类似的问题同样存在。

比如在ppt汇报时,会发现有大量的静态内容,缺少动态内容,也就是说讲结果多,但缺少why和how的部分。以ppt来说,需要同时呈现静态和动态两部分:

  1. 动态部分:阶段、流程、活动、演进;
  2. 静态部分:组成、架构、结构;

动态部分是让整个ppt叙事有了活力,便于更好的将倾听者拉入语境里。

了解一个新事物逻辑是一样的,看到事物的第一眼,我们获得的是外形或结构,是静态的。如果我们想深入了解一个事物,就需要去了解组成之间的组成过程,也就是事物是经过如何演进到今天这个结构的。

再好的结果也不具备可复制性,只有掌握了这种科学的思考过程和方法,才可以不断复制好的结果,也就是方法论的必要性。

技术好,体现的是解决问题的能力

很多时候我们讨论什么是技术好,其实这个很难定义,算法好?架构好?中间件好?前端好?java基础好?技术好应该是个综合结果,也就是通过技术手段拿到结果、解决问题的能力。

而解决问题最重要的一点是,我们应该知道他是个什么问题?找到入手解决的点。解决一个问题的手段有很多,我们需要做归纳、抽象,形成自己的概念模型,形成最小的知识集,并建立索引,在需要的时候可以快速调出来。

这里体现的就是软件工程里面的抽象与泛化。其实我们做编程时候的接口声明就是解决这个问题的。声明一个接口,只有方法,没有实现。但他是个思维框架,究竟怎么实现,可能需要深入到具体场景下去探查了。

一个人最有价值的能力是模式和方法论,在他所实践的所有事情上做积累、抽象,形成知识库与匹配模式。

Read more

超快速,使用ChatGPT编写回归和分类算法

超快速,使用ChatGPT编写回归和分类算法

本文将使用一些 ChatGPT 提示,这些提示对于数据科学家在工作时非常重要。 微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩 以下是一些示例ChatGPT 提示的列表以及数据科学家的响应。 ChatGPT 提示 为决策树回归算法生成 python 代码。 下面是使用scikit-learn在 Python 中进行决策树回归的示例代码: import numpy as np import matplotlib.pyplot as plt from sklearn.tree import DecisionTreeRegressor # Generate random data rng = np.random.default_rng() x = 5 * rng.random(100) y = np.sin(x) + 0.

By Ne0inhk
力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

力扣每日一题:993.二叉树的堂兄弟节点 深度优先算法

993.二叉树的堂兄弟节点 难度:简单 题目: 在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。 如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。 我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。 只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。 示例: 示例 1: 输入:root = [1,2,3,4], x = 4, y = 3 输出:false

By Ne0inhk
1239.串联字符串的最大长度 关于字符串的回溯算法!

1239.串联字符串的最大长度 关于字符串的回溯算法!

题目: 给定一个字符串数组 arr,字符串 s 是将 arr 某一子序列字符串连接所得的字符串, 如果 s 中的每一个字符都只出现过一次,那么它就是一个可行解。 请返回所有可行解 s 中最长长度。 提示: 1 <= arr.length <= 16 1 <= arr[i].length <= 26 arr[i] 中只含有小写英文字母 示例: 示例 1: 输入:arr = ["un","iq","ue"] 输出:4 解释:所有可能的串联组合是

By Ne0inhk