最近好久没写博客,因为换工作原因,从传统企业转行到互联网行业,这次换工作成本很大!

  新公司,纯互联网广告公司,BI驱动,出来几日感觉成长空间很大,下面来些干货。

什么是程序、软件

  程序 = 数据结构 + 算法

  在Head First Python上有一段话,任何值得创建的程序必然会处理数据,有些时候,数据很简单也很直接,但有些情况下,所处理的数据不论从结构还是含义上都很复杂,这概念,都是在架构上也能适用,把微服务改造为数据部分和算法部分!

  软件 = 程序 + 文档

  这个其实比较纠结,通常好的程序可以使得文档变少,但文档和程序在同步上又是非常难的,怀疑下。

最“难”解的耦合

  高内聚、低耦合,贯穿整个软件工程,什么是最难解的耦合?其实是数据的耦合,微服务如果用同一个数据库,抱歉你的不是微服务,因为数据耦合在一起了,通常我们写程序的时候,都会应用SOLID原则、分层、分模块,设计架构的时候,会分布式,CQRS分离,都是围绕高内聚、低耦合;

  什么是最松的耦合?是消息,消息驱动,异步事件,明显在现在负责的高并发系统越发重要,也越热,这个时间点大家可曾开始学习Vert.x ?去了解一下吧。

什么是设计

  设计,就是把合适的东西,放到合适的地方,这句话看似简单,含义非凡,也是整个软件工程的本质所在,但难在如何定义合适?那需要你对计算机有所了解,对业务问题有所了解,对解空间和问题空间有所了解!所谓没有最好的技术,只有最合适的场景,学问非常之深;

  说下设计模式,完成通用功能,上帝类,贫血类,都可以完成,而设计模式又为何要比这些优秀呢?因为它是真的把实现的代码,划分开来,然后组织在一起,这种划分划分了什么?(在微服务设计里叫分区、在DDD里叫聚合根、Bound Context),划分后又该写些什么代码进去呢?设计模式给了你答案:在类似的业务场景中,把合适的代码,放在了合适的位置,这就是设计;

数据的分类

  数据的分类一般分为两类,一个是属于业务的数据,一个是属于程序的数据,尽量不要把这两种数据混起来用,这样会耦合;

  本人不会个人崇拜,但学到了东西,自然会有分辨能力的,对事!不对人!

最难解的耦合 — James的更多相关文章

  1. O2O难解餐饮行业趋势下行之困

    近几年,O2O这个名词越来越常见,我们不但能够在IT相关资讯栏目看到它的存在,甚至在一些综合新闻版面也能轻易看到. 诚然.线下商家结合线上引流这样的方法,能够带来不少订单,可是O2O是否就能够解决餐饮 ...

  2. O2O外卖玩众包 开放平台难解标准之痛

    开放平台难解标准之痛" title="O2O外卖玩众包 开放平台难解标准之痛">  有一种怪现象一直是国内互联网企业摆脱不了的附骨之疽--不管规模大小,总是削尖了脑 ...

  3. WPF杂难解 奇怪的DisconnectedItem

    简单场景: 列表绑定后台数据,点击列表项在view的cs中拿点击项的DataContext进一步处理.正常情况下应该是能拿到我绑定上去的数据,但是偶尔会点出来DisconnectedItem,重现几率 ...

  4. vijos1369:难解的问题

    描述 在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可能想不出 ...

  5. cojs1101. [Vijos1369] 难解的问题==codevs 2188 最长上升子序列

    [题目描述] 在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可 ...

  6. [Vijos P1369]难解的问题

    题目大意:给你一个序列,叫你求最长上升子序列长度,但必须包含第k项. 解题思路:我们把k左边的比a[k]大的数去掉,k右边的比k小的数去掉,就可以保证选到a[k]了(因为左边的数小于a[k],而a[k ...

  7. MATLAB学习笔记(七)——MATLAB解方程与函数极值

    (一)线性方程组求解 包含n个未知数,由n个方程构成的线性方程组为: 其矩阵表示形式为: 其中 一.直接求解法 1.左除法 x=A\b; 如果A是奇异的,或者接近奇异的.MATLAB会发出警告信息的. ...

  8. 【双模卡的相关知识】解SIM卡前需要知道的信息(SIM年分和厂商识别)

    <ignore_js_op> 二.SIM版本问题SIM卡的版本有两种说法,一是有些是制造厂制定的,二是电信公司的制定.下面以移动为例,目前我们手里的SIM有几种版本:v0.v1.v2.v3 ...

  9. KMP算法详解-彻底清楚了(转载+部分原创)

    引言 KMP算法指的是字符串模式匹配算法,问题是:在主串T中找到第一次出现完整子串P时的起始位置.该算法是三位大牛:D.E.Knuth.J.H.Morris和V.R.Pratt同时发现的,以其名字首字 ...

随机推荐

  1. Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

    一.在使用Asp.net WebAPI 或Asp.Net Core WebAPI 时 ,如果使用了Delete请求谓词,本地生产环境正常,线上发布环境报错. 服务器返回405,请求谓词无效. 二.问题 ...

  2. ViewPager Fragment 懒加载 可见 总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  3. 基于Cesium的demo赏析

    更新于2019.2.23 Cesium的强大不用多说,所以有很多政府.组织基于cesium做了一些应用,其中不乏有很多优秀的示例,我们大都可以从中获得对自己的项目有益的东西.另:有的网站需要FQ. 官 ...

  4. Spark2.3(四十):如何使用java通过yarn api调度spark app,并根据appId监控任务,关闭任务,获取任务日志

    背景: 调研过OOZIE和AZKABA,这种都是只是使用spark-submit.sh来提交任务,任务提交上去之后获取不到ApplicationId,更无法跟踪spark application的任务 ...

  5. python接口自动化测试(七)-unittest-批量用例管理

    我们日常项目中的接口测试案例肯定不止一个,当案例越来越多时我们如何管理这些批量案例?如何保证案例不重复?如果案例非常多(成百上千,甚至更多)时如何保证案例执行的效率?如何做(批量)测试数据的管理?如何 ...

  6. Mac Node.js 配置

    1.Node.js 简介 Node.js® 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,可方便地构建快速,可扩展的网络应用程序的平台.Node.js 使用事件驱动,非阻塞式 ...

  7. 【小工具】根据定义的白名单字段进行Bean的拷贝

    背景 Bean的拷贝一直有一些类可以使用,比如Apache的org.apache.commons.beanutils.BeanUtils或者Spring的org.springframework.bea ...

  8. (8) MySQL主从复制架构使用方法

    一. 单个数据库服务器的缺点 数据库服务器存在单点问题 数据库服务器资源无法满足增长的读写请求 高峰时数据库连接数经常超过上限 二. 如何解决单点问题 增加额外的数据库服务器,组建数据库集群 同一集群 ...

  9. vue环境下安装npm,启动npm 修改js,css样式

    vue环境下修改js,css样式 1.在所在的项目项目的resource 文件夹下面,shift + 鼠标右键--在此处打开命令行窗口: 2.在打开的窗口执行: 安装npm:npm install 启 ...

  10. SQLSERVER数据库调优

    1.锁表查询 --查看锁住的表 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName ...