关系逻辑

转载:微服务拆分

匿名 (未验证) 提交于 2019-12-02 23:59:01
这篇文章讲的太好了,生怕以后被删掉。转到我博文列表里把-。- 正文: 开发者在刚开始尝试实现自己的微服务架构时往往会产生一系列问题 : 微服务到底应该怎么划分? 一个典型的微服务到底应该有多微? 如果做了微服务设计,最后真的会有好处吗? 回答上面的问题需要首先了解微服务设计的逻辑,科学的架构设计应该通过一些输入并逐步推导出结果,架构师要避免凭空设计和“拍脑门”的做法。 解耦的单体应用和微服务系统在逻辑上是一样的。对于服务拆分的逻辑来说,先设计高内聚低耦合的领域模型,再实现相应的分布式系统是一种比较合适的方式。 服务的划分有一些基本的方法和原则,通过这些方法能让微服务划分更有操作性。最终在微服务落地实施时也能按图索骥,无论是对遗留系统改造还是全新系统的架构都能游刃有余。 微服务拆分的几个阶段 在开始划分微服务之前,架构师需要在大脑中有一个重要的认识:微服务只是手段,不是目的。 微服务架构是为了让系统变得更容易拓展、更富有弹性。在把单体应用变成靠谱的微服务架构之前,单体系统的各个模块应该是合理、清晰地。 也就是说,从逻辑上单体系统和微服务没有区别,某种理想情况下微服务只是把单体系统的各个模块分开部署了而已(最近流行的monorepo把多个服务的代码仓库以模块的形式组织到了一起,证明了这一点)。 大量的实践教训告诉我们,混沌的微服务架构,比解耦良好的单体应用会带来更多麻烦。

监督学习 分类模型 逻辑回归

匿名 (未验证) 提交于 2019-12-02 23:51:01
逻辑斯谛回归 - 线性回归的问题 一一 怎样判断肿瘤是否恶性? - 线性回归健壮性不够,一旦有噪声,立刻“投降” 逻辑斯蒂回归 ―― 分类问题 Sigmoid函数(压缩函数) - 我们将线性回归拟合出来的值用压缩函数进行压缩,压缩完成后   用0.5做一个概率的判定边界,就能把样本分成两类,即正样本 中z的正负决定了 g(z)的值最后是大于0.5还是小于0.5;   即z大于0时,g(z)大于0.5, z小于0时,g(z)小于0.5   也就使得分类边界两边分别对应g(z)>0.5和g(z)<0.5,因此根据g(z)与0.5的大小关系,   就可以实现分类 逻辑斯谛回归损失函数 -平方损失函数的问题 损失函数 这样,我们获得了一个凸函数。 梯度下降法求解

Jmeter组件作用域及执行顺序

匿名 (未验证) 提交于 2019-12-02 23:48:02
Ŀ¼ 配置元件---Config Element 用于初始化默认值和变量,以便后续采样器使用。配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同一个作用域的任何采样器前。 前置处理器---Pre Processors 前置处理器会在采样器发出请求之前做一些特殊操作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。 计时器---Timer 定时器会让作用域内的每一个采样器都在执行前等待一个固定时长,如果不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。如果为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。 取样器---sample 采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。 后置处理器---Post Processors 后置处理器会在采样器发出请求之后做一些特殊操作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行

逻辑回归

匿名 (未验证) 提交于 2019-12-02 23:34:01
多元线性回归(Ridge、Lasso、ElasticNet)是做回归预测的 逻辑回归(Logistic Regression) 是做分类任务的 Q:做回归预测损失函数是什么? A:平方均值损失函数MSE Q:做分类损失函数是什么? A:做分类损失函数是交叉熵! Q:什么是熵? A:熵是一种测量分子不稳定性的指标,分子运动越不稳定,熵就越大,来自热力学 熵是一种测量信息量的单位,信息熵,包含的信息越多,熵就越大,来自信息论,香农 熵是一种测量不确定性的单位,不确定性越大,概率越小,熵就越大! Q:熵和概率是什么一个关系? A:随着概率的减小,熵会增大 逻辑回归 Q:为什么本质是多元线性回归? A:1,公式,首先应用了多元线性回归的公式,其次才是把多元线性回归的结果,交给sigmoid函数去进行缩放 2,导函数,逻辑回归的损失函数推导的导函数,整个形式上和多元线性回归基本一致, 只是y_hat求解公式包含了一个sigmoid过程而已 Q:逻辑回归的损失函数是什么? A:交叉熵,做分类就用交叉熵,-y logP,因为逻辑回归是二分类,所以 loss func = (-y logP + -(1-y)*log(1-P)),也就是说我们期望这个损失最小然后找到最优解 事实上,我们就可以利用前面学过的梯度下降法来求解最优解了 Q:逻辑回归为什么阈值是0.5? A

GRE作文满分经验谈

十年热恋 提交于 2019-12-02 22:19:23
本人经历个人感觉我的 写作 主要得益于以下三点: 1, 在美国留学两年期间,每学期都至少要上一门文科课,写了很多作文,因此比较明了英文写作的特点。 2, 自小喜欢阅读,中文作文就写得好。GRE作文个人感觉也是看思想的,不像托福拿个模板就能混29.每一道题写出来的东西都不一样,所以也更看重积淀。个人感觉自己文科底子好,触类旁通。 3, 考前复习写过issue和argue各五篇,确保自己不会超时,确保知道大概题型和操作界面。 大家好,今天真的特别荣幸这么些人听我瞎说。我这都是一家之言,大家姑妄听之。有问题咱们讨论 请各位先允许我唠叨两句闲话。因为既然出来正儿八经讲了,就要为自己说的东西负责人。我要先让大家明确我个人经历,然后说点注意事项。不好意思。 本人经历:在美国留学了两年,上了一些文科课,写了一些作文。大学打过两年辩论。比较喜欢读书。以上特殊或者不特殊经历都对我的写作有帮助。 本人成绩:写作5.0.写issue基本都有900字。Argue700字左右。 请注意:由于我主要是靠底子,写作没有怎么练习,不敢说对g的写作很有研究。因此我的方法并不因为这一次的高分而权威,希望各位斟酌。另外,每个人经历不同,适用于我的方法,在各位用来可能需要调整。最后就是,由于我并没有大范围练习过g的写作,我不清楚高频是什么,也没有模板,因此想要讨论高频和要模板的,抱歉,在下爱莫能助

优秀的代码应该如何分层

匿名 (未验证) 提交于 2019-12-02 21:52:03
说起应用分层,大部分人都会认为这个不是很简单嘛 就 Controller , Service , Mapper 三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中, Controller 做的逻辑比 Service 还多, Service 往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。 一个好的应用分层需要具备以下几点: 方便后续代码进行维护扩展; 分层的效果需要让整个团队都接受; 各个层职责边界清晰。 在阿里的编码规范中约束的分层如下: 开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行 网关安全控制、流量控制等。 终端显示层:各个端的模板渲染并执行显示的层。 Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。 Service 层:相对具体的业务逻辑服务层。 Manager 层:通用业务处理层,它有如下特征: 对第三方平台封装的层,预处理返回结果及转化异常信息; 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理; 与 DAO 层交互,对多个 DAO 的组合复用。 DAO 层:数据访问层,与底层 MySQL 、 Oracle 、

Spring事务用法示例与实现原理

匿名 (未验证) 提交于 2019-12-02 20:41:15
关于 事务 ,简单来说,就是为了保证数据完整性而存在的一种工具,其主要有四大特性:原子性,一致性,隔离性和持久性。对于Spring事务,其最终还是在数据库层面实现的,而Spring只是以一种比较优雅的方式对其进行封装支持。本文首先会通过一个简单的示例来讲解Spring事务是如何使用的,然后会讲解Spring是如何解析xml中的标签,并对事务进行支持的。 1. 使用示例 public class User { private long id; private String name; private int age; // getter, setter... } 如下是模拟插入用户数据的业务代码: public interface UserService { void insert(User user); } @Service @Transactional public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; @Override public void insert(User user) { jdbcTemplate.update("insert into user (name, age) value (?, ?)", user

这样设计 Java 异常更优雅

╄→尐↘猪︶ㄣ 提交于 2019-12-02 20:13:47
转自:lrwinx.github.io/2016/04/28/如何优雅的设计java异常/ 导语 异常处理是程序开发中必不可少操作之一,但如何正确优雅的对异常进行处理确是一门学问,笔者根据自己的开发经验来谈一谈我是如何对异常进行处理的。 由于本文只作一些经验之谈,不涉及到基础知识部分,如果读者对异常的概念还很模糊,请先查看基础知识。 如何选择异常类型 异常的类别 正如我们所知道的,java中的异常的超类是java.lang.Throwable(后文省略为Throwable),它有两个比较重要的子类,java.lang.Exception(后文省略为Exception)和java.lang.Error(后文省略为Error),其中Error由JVM虚拟机进行管理,如我们所熟知的OutOfMemoryError异常等,所以我们本文不关注Error异常,那么我们细说一下Exception异常。 Exception异常有个比较重要的子类,叫做RuntimeException。我们将RuntimeException或其他继承自RuntimeException的子类称为非受检异常(unchecked Exception),其他继承自Exception异常的子类称为受检异常(checked Exception)。本文重点来关注一下受检异常和非受检异常这两种异常。 如何选择异常

B端产品需求文档怎么写?

家住魔仙堡 提交于 2019-12-02 18:47:07
B端,或者2B,一般指的是英文中的 to busniss,中文即面向企业的含义。 与B端相对应的,是C端,或者2C,同样指的是英文中的 to customer,即面向消费者的意思。 因此,人们平常所说的B端产品,就是指面向企业的产品,比如企业中用到的一整套内部办公软件,内部财务结算软件,办公erp平台,以及帮助企业实现数字化转型的云计算平台,大数据分析平台,AI人工智能平台,这些都属于面向企业的B端产品。 而与之相对的C端产品,就是指直接面向普罗大众的产品,直接面向消费者群体。其中,互联网app便是其中的产品之一,包括微信、QQ、外卖app、淘宝、抖音等都是直接面向消费者的C端互联网产品。 在产品研发的层面,B端产品经理和C端产品经理的工作职责也是不一样的。 相比起C端产品更加追求用户的新鲜感和体验感,B端产品更加注重为客户降低生产成本,提升生产效率。 因此,C端产品经理需要发动大脑去想如何满足用户的衣食住行需求,并非常重视满足用户的新鲜感;而B端产品经理则要更加贴合企业实际,将客户需求转换为产品功能,提升客户的生产和办公效率,降低生产成本。 一、产品需求文档是什么? 产品需求文档作为从需求到功能的具体实现指南,是所有开发、测试人员在产品开发过程中的必备文档。个人认为,不管是B端还是C端,产品需求文档都应该具有以下特点: 结构鲜明、逻辑完整、表达准确、通俗易懂。 结构鲜明

JMeter学习(三)元件的作用域与执行顺序

耗尽温柔 提交于 2019-12-02 18:38:18
1.元件的作用域 JMeter中共有 8 类可被执行的元件(测试计划与线程组不属于元件),这些元件中,取样器是典型的不与其它元件发生交互作用的元件,逻辑控制器只对其子节点的取样器有效,而其它元件(config elements 、timers 、post-processors、assertions、listeners、)需要与取样器(sampler)等元件交互。 配置元件(config elements )   元件会影响其作用范围内的所有元件。 前置处理程序(Per-processors)   元件在其作用范围内的每一个sampler元件之前执行。 定时器(timers )   元件对其作用范围内的每一个sampler 有效 后置处理程序(Post-processors)   元件在其作用范围内的每一个sampler元件之后执行。 断言(Assertions)   元件对其作用范围内的每一个sampler 元件执行后的结果执行校验。 监听器(Listeners)   元件收集其作用范围的每一个sampler元件的信息并呈现。 在jmeter中,元件的作用域是靠测试计划的的树型结构中元件的父子关系来确定的,作用域的原则是: 取样器(sampler)元件不和其它元件相互作用,因此不存在作用域的问题。 逻辑控制器(Logic Controller)元件只对其子节点中的取样器 和