关系逻辑

程序员的自我修养

梦想与她 提交于 2020-02-08 15:12:52
概述 提炼内容来自书籍<>,时长阅读回顾,勉励自己! 技术人需要具备"结构化思维" 结构化思维: 逻辑+套路 表达要有逻辑 想让表达内容有逻辑,需要学会四种组织思想的逻辑关系,实际上所有逻辑都在这四种顺序之内,只要我们的思想和表达在这四种逻辑顺序之内,就是有逻辑的: 演绎(因果)顺序:"大前提,小前提,结论"的演绎推理方式,比如经典三段论:"所有人都会死,苏格拉底是人,苏格拉底会死" 时间(步骤)顺序:"第一,第二,第三","首先,然后,再者"等 空间(结构)顺序:"前端,后端,数据","北京,上海,深圳",化整为零等 程度(重要性)顺序:"最重要,次重要,不重要" 做事要有套路 优秀工程师必备的三大思维 优秀工程师必备的一项技能 如何在工作中快速成长? (10个简单技巧) 关于技术规划,管理,架构的思考 程序员如何自我学习 从计算机知识到落地能力,你欠缺了什么 阿里资深技术专家的10年感悟 如何量化考核技术人的KPI 如何成为优秀的技术主管 如果我是一线技术主管 来源: https://www.cnblogs.com/houzheng/p/12283422.html

分布式初探——判断因果关系的向量时钟算法

萝らか妹 提交于 2020-02-08 12:38:11
今天的文章来聊聊 向量时钟 ,在前文介绍分布式系统一致性的时候,曾经介绍过,在弱一致性模型当中会有一个因果性的问题。向量时钟算法正是设计出来解决因果关系问题的。 我们来回顾一下因果问题,在实际日常的网页行为当中,部分行为存在因果关系。比方说知乎里面回答问题,显然得先有一个同学提出问题,然后才能有各路大V谢邀解答问题。但是由于是分布式系统,有可能问题和回答并不是存放在同一台机器,导致有可能它们 更新的顺序不一致 ,所以就有可能会出现用户在访问知乎的时候,发现自己关注的大V回答了某个问题,但是点进去问题却是空的。这种幽灵情况不是灵异事件,只是单纯的分布式系统设计没过关,没有考虑因果问题。 有的同学可以会说,这个不难啊,我们加入时间戳啊。时间戳的确可以解决一部分问题,但是并不能解决所有问题。有了时间戳之后,我们可以获得事件发生的时间,但是仍然不知道不同的数据之间的因果关系。由于分布式系统存在延迟,也不能简单地通过时间戳来做过滤或者筛选。不过,虽然单纯的时间戳不行,但已经非常接近了。 我们日常生活当中用事件发生的时间来反应事物发生的顺序,我们说的先后顺序,其实是以客观上的时间作为参考系参考得到的结果。问题来了,我们能不能找到或者构造出 其他的参考系 来反应事物发生的顺序呢? 当然是可以的,不然也没有这篇文章了,这就是大名鼎鼎的 逻辑时钟 算法。多说一句,逻辑时钟算法和许多其他分布式算法一样

美团商品平台化之路—关于架构原则的思考

◇◆丶佛笑我妖孽 提交于 2020-02-07 02:19:35
从2015年初到2018年末,已经在美团点评做了4年商品系统。稍微总结一下。 2019/1/3 #业务快跑、平台慢跑# 1.业务快跑 2015年初开始做泛商品系统是为了做ktv预订探索,背后写了一套通用点的商品系统。记得第一版商品系统上线、我做得很高兴,但老板跑过来帮我复盘,“为什么这个项目延期这么久”。额,延期了两周! 我第一次那么吃惊,干得那么沉醉却得到这样的反馈,被泼一盆冷水很深刻。当时的背景是原点评要将ktv团购升级为ktv预订、做mvp,典型的业务快跑方法论。早两周交付就能早两周拿到在线的测试数据。 那我用了什么理念开发呢?把它当成孩子,给它我认为最好的东西。简洁、易组合的api,全栈式批处理,三套独立的商品领域对象,制作/线上表与服务分离,去ddd、最简洁的代码等等。从技术角度,去实现多了支撑ktv预订业务需要的系统能力,很纯粹的就是想写好。后边反思,做业务支撑要掌握trade off,做为业务方在业务初期要尽量让业务快跑,产品和系统应该都用迭代的思想去做事。 2.平台慢跑 业务快跑真的对吗?头两年在业务团队做商品系统,后两年在平台团队做商品系统。得出一个新认知:平台系统要尽可能的慢跑、冷启动。一味跟着业务快跑味道就不对了。 Platform Fist 投资平台基础设施还是投资新业务时机,这本质是看哪一种产生的ROI更有价值,它的判断跟行业市场、公司规模、战略、组织

数电(笔记)数制,逻辑运算

拈花ヽ惹草 提交于 2020-02-06 03:47:10
数字量和模拟量 模拟量: 其变化在时间或数值上是连续的 数字量: 其变化在时间和数量上都是离散的 数值大小是某一个最小数量单位的整数倍数 表示数字量的称为数字信号,表示模拟量的称为模拟信号 数字系统及其优越性; 稳定可靠,精度更高 信息的处理,存储等更方便 可编程逻辑器件具有智能 数字电子技术的发展 电子管、晶体管、集成电路(IC) 大/超规模集成电路(LSI/VLSIS) 数字信号的优点: 1)便于加密处理 2)便于存储、处理和交换 3)设备便于集成化,微型 4)便于综合数字网和综合业务数字网 5)占用信道频带较宽 数制和编码 数字系统的主要功能是处理信息 因此必须将信息表示成电路能够识别便于运算或存储的形式 信息主要有两类:数值信息和非数制信息 数值信息的表示方法–数制及其转换 非数值信息的表征–编码 数制:数制是一种计数的方法,在日常生活中及生产中广泛使用的计数体制是十进制。而在数字系统中讨论的是用电路实现逻辑关系的问题,因此采用的是二进制计数体制。但二进制计数不太方便,故常用八进制和十六进制进行辅助计数。 整数部分是基数除法,而小数部分是乘法:(要乘到为零为止) 但并非所有小数都可以乘到0,有的是乘不尽,有误差: 编码和码制 编码规则: 1)唯一性: 2)永久性: 3)无含义: 如BCD码 算术运算和逻辑运算 * 它们的本质区别一个是数字,一个是真假

数据结构与算法概念

扶醉桌前 提交于 2020-02-06 00:27:49
数据结构小白入门 数据结构指一组相互之间存在一种或多种特定关系的数据元素的集合, 当我们需要在计算机中存储这些数据时,还涉及到数据的,组织方式,在计算机中的存储方式,以及定义在该数据上的一组操作; 一组数据相互之间有某种关系 组织方式 存储方式 以及可对其进行的一组操作 理解: 我们学习的最终目的是要在计算机中存储 一组数据 ,但是不得不先考虑数据的 组织方式 ,在计算机中的 存储方式 ,以及可以对这些数据进行的 一组操作 ,当然了既然是一组数据必然表明了这写数据之间是存在想换的关联关系的;关系可能还会有多种; 例如: 一组数据:12345 组织方式:从小到大 存储方式:可使用线性存储结构 操作:要取出最大的一个 数据结构研究方向 问题: 机外处理 处理要求 建模: 逻辑结构 基本运算 实现: 存储结构 算法 基本术语 数据(Data): ​ 所有能被计算机处理的符号的集合 数据元素(DataElement): ​ 是数据集合中的一个 个体,即数据的基本单位 数据项(DataItem): ​ 数据元素常常可分为若干个数据项,数据项是数据具有意义的最小单位 组织数据的三个层次: 数据(表)->数据元素(行)->数据项(字段) 实际问题中的数据成为原始数据 逻辑结构(LogicalStructure) ​ 数据元素之间的结构关系,如从小到大/一对一/一对多 物理结构

【requireJS源码学习03】细究requireJS的加载流程

风格不统一 提交于 2020-02-04 08:08:56
前言 这个星期折腾了一周,中间没有什么时间学习,周末又干了些其它事情,这个时候正好有时间,我们一起来继续学习requireJS吧 还是那句话,小钗觉得requireJS本身还是有点难度的,估计完全吸收这个月就过去了,等requireJS学习结束后,我们的学习流程可能就朝两个方向走 ① 单页应用框架/UI库整理 ② UML文档相关/重构思想相关(软性素质) 然后以上的估计估计会持续3、4个月时间,希望学习下来自己能有不一样的提高,成为一个合格的前端,于是我们继续今天的内容吧 requireJS中的队列 经过之前的学习,我们队requireJS的大概结构以及工作有了一定认识,但是,我们对于其中一些细节点事实上还是不太清晰的,比如里面的队列相关 requireJS中有几种队列,每种队列是干神马的,这些是我们需要挖掘的,而且也是真正理解requireJS实现原理的难点 首先,requireJS有两个队列: ① globalDefQueue / 全局 ② defQueue / newContext 闭包 这个队列事实上是一个数组,他们具体干了什么我们还不得而知,但是我下意识觉得他比较关键...... 我们这里来简单的理一理这两个队列 globalDefQueue 这个是全局性的队列,与之相关的第一个函数为takeGlobalQueue takeGlobalQueue /** *

Spring Cloud微服务Sentinel+Apollo限流、熔断实战

微笑、不失礼 提交于 2020-02-04 06:14:02
在Spring Cloud微服务体系中,由于限流熔断组件Hystrix开源版本不在维护,因此国内不少有类似需求的公司已经将眼光转向阿里开源的Sentinel框架。而以下要介绍的正是作者最近两个月的真实项目实践过程,这中间被不少网络Demo示例级别水文误导过,为了以正视听特将实践过程加以总结,希望能够帮到有类似需要的朋友! 一、Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素。在并发流量比较高的情况下,由于网络调用之间存在一定的超时时间,链路中的某个服务出现宕机都会大大增加整个调用链路的响应时间,而瞬间的流量洪峰则会导致这条链路上所有服务的可用线程资源被打满,从而造成整体服务的不可用,这也就是我们常说的“ 雪崩效应 ”。 而在微服务系统设计的过程中,为了应对这样的糟糕情况,最常用的手段就是进行” 流量控制 “以及对网络服务的调用实现“ 熔断降级 ”。所谓流量控制就是根据服务的承载能力指定一个策略,对一定时间窗口内的网络调用次数进行限制,例如1s内某个服务最多只能处理10个请求,那么1s内的第11+的请求会被被限制丢弃;而熔断降级的概念则是说在A服务→B服务调用过程中,按照一定的规则A服务发现调用B服务经常失败或响应时间过长,如果触发了A服务对B服务调用的熔断降级规则

.NET MVVM设计模式简介

天涯浪子 提交于 2020-02-04 01:02:09
MVVM模式能够帮你把你程序的业务与展现逻辑从用户界面干净地分离开。保持程序逻辑与界面分离能够帮助解决很多开发以及设计问题,能够使你的程序能更容易的测试,维护与升级。它也能很大程度的增加代码重用性,并让开发者与界面设计者更容易地相互合作。 使用MVVM模式,程序的UI和其背后的展现与业务逻辑将被分离至三个类中: 1-视图,封装UI与UI逻辑 2-模型视图,封装展示逻辑与状态 3-模型,封装程序的业务逻辑以及数据 MVVM模式是展示-模型模式的变种,它优化了一些WPF的核心特性,例如数据绑定,数据模版,命令以及行为。在MVVM模式中,视图通过数据绑定以及命令行与视图模型交互,并改变事件通知。视图模型查询观察并协调模型更新,转换,校验以及聚合数据,从而在视图显示。 下图展示了MVVM类以及它们之间的交互: 视图类 视图的责任便是定义用户在屏幕上能看到的一切的结构以及外观。理想的视图背后的代码只包含调用InitializeComponent方法的构造函数。视图通常扮演以下关键角色: 视图是可视化元素,例如窗口,页面,用户控件或者数据模版 视图定义了包含在视图里的控件以及可视化层以及样式 视图通过DataContext属性应用视图模型 绑定了控件以及数据的属性以及命令被视图模型暴露出来 视图可以定制化视图与视图模型间数据绑定行为 视图定义以及处理UI可视化行为例如动画

EJB到底是什么,真的那么神秘吗??

拥有回忆 提交于 2020-02-03 23:12:05
EJB到底是什么,真的那么神秘吗?? 分类: JAVA学习-基础篇 2010-08-02 21:26 37965人阅读 评论 (127) 收藏 举报 ejb 服务器 数据库服务器 网络 分布式计算 数据库 1. 我们不禁要问,什么是"服务集群"?什么是"企业级开发"? 既然说了EJB 是为了"服务集群"和"企业级开发",那么,总得说说什么是所谓的"服务 集群"和"企业级开发"吧! 这个问题其实挺关键的,因为J2EE 中并没有说明白,也没有具体的指标或者事例告诉 广大程序员什么时候用EJB 什么时候不用。于是大家都产生一些联想,认为EJB"分布式运 算"指得是"负载均衡"提高系统的运行效率。然而,估计很多人都搞错了,这个"服务群集" 和"分布式运算"并没有根本解决运行负载的问题,尤其是针对数据库的应用系统。 为什么? 我们先把EJB 打回原形给大家来慢慢分析。 2. 把EJB 掰开了揉碎了 我们把EJB 的概念好好的分析一下,看看能发现些什么蛛丝马迹。 3.1 EJB 概念的剖析 我们先看一下,EJB 的官方解释: 商务软件的核心部分是它的业务逻辑。业务逻辑抽象了整个商务过程的流程,并使用计 算机语言将他们实现。 …… J2EE 对于这个问题的处理方法是将业务逻辑从客户端软件中抽取出来,封装在一个组 件中。这个组件运行在一个独立的服务器上,客户端软件通过网络调用组件提供的服务以实

JDK动态代理

爷,独闯天下 提交于 2020-02-02 10:03:29
一、基本概念 1.什么是代理? 在阐述JDK动态代理之前,我们很有必要先来弄明白代理的概念。代理这个词本身并不是计算机专用术语,它是生活中一个常用的概念。这里引用维基百科上的一句话对代理进行定义: A proxy is an agent or substitute authorized to act for another person or a document which authorizes the agent so to act. 意思是说:代理指的是一个代理人(或替代品),它被授权代表另外一个人(或文档)。 从这个简明扼要的定义中,可以看出代理的一些特性:1.代理存在的意义就是代表另一个事物。2.代理至少需要完成(或实现)它所代表的事物的功能。 2.什么是JAVA静态代理? JAVA静态代理是指由程序员创建或工具生成的代理类,这个类在编译期就已经是确定了的,存在的。 典型的静态代理模式一般包含三类角色: 1.抽象角色:它的作用是定义一组行为规范。抽象角色一般呈现为接口(或抽象类),这些接口(或抽象类)中定义的方法就是待实现的。 2.真实角色:实现了抽象角色所定义的行为。真实角色就是个普通的类,它需要实现抽象角色定义的那些接口。 3.代理角色:代表真实角色的角色。根据上面代理的定义,我们可以知道代理角色需要至少完成(或实现)真实角色的功能。为了完成这一使命